╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │212 const aa = item_arena.allocator(); │ │213 var items: std.ArrayList(ui.widget.FlowBox.Item) = .empty; │ │214 if (data.forks_start > 0) │ │215 - try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:/user/{s}/forks/start:{d}", .{ data.user.name, data.forks_start -| page_size }) });│ │215 + try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:/{s}/forks/start:{d}", .{ data.user.name, data.forks_start -| page_size }) }); │ │216 for (data.forks) |fork_item| { │ │217 // the fork route names the forker │ │218 - const identity = try std.fmt.allocPrint(aa, "{s}/{s}", .{ data.user.name, fork_item.target.name }); │ │218 + const identity = try std.fmt.allocPrint(aa, "{s}:{s}", .{ data.user.name, fork_item.target.name }); │ │219 const route = ui.RoutablePage.forkPatchRoute(identity, fork_item.id) orelse return error.RouteTooLong; │ │220 try items.append(aa, .{ │ │221 .text = try std.fmt.allocPrint(aa, "{s} - {s}", .{ fork_item.target.name, fork_item.title }), │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │224 }); │ │225 } │ │226 if (data.forks_next_start) |next_start| │ │227 - try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:/user/{s}/forks/start:{d}", .{ data.user.name, next_start }) });│ │227 + try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:/{s}/forks/start:{d}", .{ data.user.name, next_start }) }); │ │228 try list.setItems(allocator, items.items); │ │229 try stack.children.put(allocator, list.getFocus().id, .{ .flow_box_scroll = list }); │ │230 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │401 } │ │402 for (data.repos) |repo| │ │403 // clicking a repo opens its page; the "a:" prefix makes the web │ │404 - // renderer emit an <a href="/repo/alice/foo"> anchor. │ │404 + // renderer emit an <a href="/alice:foo"> anchor. │ │405 try items.append(aa, .{ │ │406 .text = if (repo.event.description.len == 0) repo.event.name else try std.fmt.allocPrint(aa, "{s} - {s}", .{ repo.event.name, repo.event.description }),│ │407 - .link = try std.fmt.allocPrint(aa, "a:/repo/{s}/{s}", .{ data.user.name, repo.event.name }), │ │407 + .link = try std.fmt.allocPrint(aa, "a:/{s}:{s}", .{ data.user.name, repo.event.name }), │ │408 .bottom_label = if (repo.event.read_access == .private) "(private)" else "", │ │409 }); │ │410 if (data.repos_next_start) |next_start| { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯