╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1056 else │ │1057 try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}/forks/" ++ start_seg ++ "{d}", .{ u.name.slice(), u.start }),│ │1058 .user_settings => |name| try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}/settings", .{name.slice()}), │ │1059 + .user_new_repo => |name| try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}/new-repo", .{name.slice()}), │ │1060 .user_auth => |name| try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}/auth", .{name.slice()}), │ │1061 .repo_files => |f| blk: { │ │1062 const prefix = try repoUrlPrefix(arena, f.name.slice()); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1232 try std.fmt.allocPrint(arena.allocator(), "{s}/events/{s}{s}", .{ prefix, @tagName(e.view), moment }); │ │1233 }, │ │1234 .repo_settings => |name| try std.fmt.allocPrint(arena.allocator(), "{s}/settings", .{try repoUrlPrefix(arena, name.slice())}), │ │1235 + .repo_new_repo => |name| try std.fmt.allocPrint(arena.allocator(), "{s}/new-repo", .{try repoUrlPrefix(arena, name.slice())}), │ │1236 .repo_auth => |name| try std.fmt.allocPrint(arena.allocator(), "{s}/auth", .{try repoUrlPrefix(arena, name.slice())}), │ │1237 .fork_patch => |f| try std.fmt.allocPrint(arena.allocator(), fork_segment ++ "{s}/" ++ patch_seg ++ "{s}", .{ f.name.slice(), f.id.slice() }),│ │1238 .fork_diff => |d| blk: { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1265 break :blk out.written(); │ │1266 }, │ │1267 .fork_settings => |f| try std.fmt.allocPrint(arena.allocator(), fork_segment ++ "{s}/" ++ patch_seg ++ "{s}/settings", .{ f.name.slice(), f.id.slice() }),│ │1268 + .fork_new_repo => |f| try std.fmt.allocPrint(arena.allocator(), fork_segment ++ "{s}/" ++ patch_seg ++ "{s}/new-repo", .{ f.name.slice(), f.id.slice() }),│ │1269 .fork_auth => |f| try std.fmt.allocPrint(arena.allocator(), fork_segment ++ "{s}/" ++ patch_seg ++ "{s}/auth", .{ f.name.slice(), f.id.slice() }), │ │1270 }; │ │1271 } │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1280 return withEncodedSearch(.{ .home_users = .{ .start = params.start() orelse return null } }, params.values.get(.search) orelse "");│ │1281 } │ │1282 if (std.mem.eql(u8, first, "settings")) return if (segments.next() == null) .home_settings else null; │ │1283 + if (std.mem.eql(u8, first, "new-repo")) return if (segments.next() == null) .home_new_repo else null; │ │1284 if (std.mem.eql(u8, first, "auth")) return if (segments.next() == null) .home_auth else null; │ │1271 - // "user/<name>[/repos[/search:<s>][/start:<n>]|/settings|/auth]" │ │1285 + // "user/<name>[/repos[/search:<s>][/start:<n>]|/settings|/new-repo|/auth]" │ │1286 if (std.mem.eql(u8, first, "user")) { │ │1287 const name = segments.next() orelse return null; │ │1288 if (name.len == 0) return null; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1294 } │ │1295 if (std.mem.eql(u8, sub, "forks")) return .{ .user_forks = .{ .name = parsed, .start = listStart(&segments) orelse return null } };│ │1296 if (std.mem.eql(u8, sub, "settings")) return if (segments.next() == null) .{ .user_settings = parsed } else null; │ │1297 + if (std.mem.eql(u8, sub, "new-repo")) return if (segments.next() == null) .{ .user_new_repo = parsed } else null; │ │1298 if (std.mem.eql(u8, sub, "auth")) return if (segments.next() == null) .{ .user_auth = parsed } else null; │ │1299 return null; // unknown sub-path │ │1300 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1341 return forkCommitsRoute(identity, id, oid, start, file_path); │ │1342 } │ │1343 if (std.mem.eql(u8, tab, "settings")) return if (segments.next() == null) forkSettingsRoute(identity, id) else null;│ │1344 + if (std.mem.eql(u8, tab, "new-repo")) return if (segments.next() == null) forkNewRepoRoute(identity, id) else null; │ │1345 if (std.mem.eql(u8, tab, "auth")) return if (segments.next() == null) forkAuthRoute(identity, id) else null; │ │1346 return null; │ │1347 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────╮ │1400 .repo_discussions => |*t| t.name.slice(), │ │1401 .repo_events => |*e| e.name.slice(), │ │1402 .repo_undo => |*u| u.name.slice(), │ │1387 - .repo_settings, .repo_auth => |*name| name.slice(), │ │1403 + .repo_settings, .repo_new_repo, .repo_auth => |*name| name.slice(),│ │1404 else => null, │ │1405 }; │ │1406 } │ ╰─────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────╮ │1412 .fork_files => |*f| &f.fork, │ │1413 .fork_commits => |*f| &f.fork,│ │1414 .fork_settings => |*f| f, │ │1415 + .fork_new_repo => |*f| f, │ │1416 .fork_auth => |*f| f, │ │1417 else => null, │ │1418 }; │ ╰────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1426 .user => switch (self) { │ │1427 .user_repos => |u| .{ .user_repos = .{ .name = u.name } }, │ │1428 .user_forks => |u| .{ .user_repos = .{ .name = u.name } }, │ │1412 - .user_settings, .user_auth => |name| .{ .user_repos = .{ .name = name } }, │ │1429 + .user_settings, .user_new_repo, .user_auth => |name| .{ .user_repos = .{ .name = name } },│ │1430 else => self, │ │1431 }, │ │1432 // every repo route stores the same identity, so it always fits │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1440 │ │1441 pub fn parent(self: RoutablePage) PageKind { │ │1442 return switch (self) { │ │1426 - .home_about, .home_users, .home_settings, .home_auth => .home, │ │1427 - .user_repos, .user_forks, .user_settings, .user_auth => .user, │ │1428 - .repo_files, .repo_commits, .repo_diff, .repo_refs, .repo_issues, .repo_patches, .repo_discussions, .repo_events, .repo_undo, .repo_settings, .repo_auth => .repo, │ │1429 - .fork_patch, .fork_diff, .fork_files, .fork_commits, .fork_settings, .fork_auth => .fork, │ │1443 + .home_about, .home_users, .home_settings, .home_new_repo, .home_auth => .home, │ │1444 + .user_repos, .user_forks, .user_settings, .user_new_repo, .user_auth => .user, │ │1445 + .repo_files, .repo_commits, .repo_diff, .repo_refs, .repo_issues, .repo_patches, .repo_discussions, .repo_events, .repo_undo, .repo_settings, .repo_new_repo, .repo_auth => .repo,│ │1446 + .fork_patch, .fork_diff, .fork_files, .fork_commits, .fork_settings, .fork_new_repo, .fork_auth => .fork, │ │1447 }; │ │1448 } │ │1449 │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯