╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │1044 try writeListWindow(&out.writer, u.search.slice(), u.start);│ │1045 break :blk out.written(); │ │1046 }, │ │1047 - .home_new_repo => "/new-repo", │ │1047 + .home_new_repo => "/repo/new", │ │1048 .home_auth => "/auth", │ │1049 .not_found => "/not-found", │ │1050 .user_repos => |u| blk: { │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1278 const params = listParams(&segments, &.{ .start, .search }) orelse return null; │ │1279 return withEncodedSearch(.{ .home_users = .{ .start = params.start() orelse return null } }, params.values.get(.search) orelse "");│ │1280 } │ │1281 - if (std.mem.eql(u8, first, "new-repo")) return if (segments.next() == null) .home_new_repo else null; │ │1281 if (std.mem.eql(u8, first, "auth")) return if (segments.next() == null) .home_auth else null; │ │1282 // "user/<name>[/repos[/search:<s>][/start:<n>]|/new-repo|/auth]" │ │1283 if (std.mem.eql(u8, first, "user")) { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1345 if (std.mem.eql(u8, first, "repo")) { │ │1346 const rest = segments.rest(); // "username/reponame[/...]" │ │1347 const owner = segments.next() orelse return null; │ │1348 + // "/repo/new" is the home page's new repo tab, not a repo │ │1349 + if (std.mem.eql(u8, owner, "new") and segments.peek() == null) return .home_new_repo;│ │1350 const repo_name = segments.next() orelse return null; │ │1351 // reject an empty username or reponame │ │1352 if (owner.len == 0 or repo_name.len == 0) return null; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──╮ │src/web.zig│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │140 if (method == .POST) { │ │141 switch (host) { │ │142 .server => |server| { │ │143 + // the home page's new repo form, which the "/new" suffix below would claim │ │144 + if (std.mem.eql(u8, path, "/repo/new")) return handleRepoNew(io, request, allocator, path, server.admin_repo_path, server.users_dir, server.session_store);│ │145 const PostRoute = enum { login, logout, ansi, @"new-repo", new, edit, remove, open, close, resolve, publish, merge, squash, attach, undo, clear }; │ │146 inline for (@typeInfo(PostRoute).@"enum".fields) |field| { │ │147 const suffix = "/" ++ field.name; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯