╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │142 │ │143 var title: []const u8 = "(unavailable)"; │ │144 const path = try fork.forkPath(arena.allocator(), users_dir, &user_id, &fork_id); │ │145 - if (rp.Repo(.xit, .{}).open(io, gpa, .{ .path = path, .require_repo_root = true })) |opened| { │ │146 - var fork_repo = opened; │ │147 - defer fork_repo.deinit(io, gpa); │ │148 - if (evt.currentMoment(.{}, &fork_repo)) |fork_moment| { │ │149 - if (try evt.Patch.readById(evt.EventDB(.sha1), .sha1, fork_moment, arena, &fork_id)) |patch| title = patch.event.title; │ │150 - } else |_| {} │ │145 + if (rp.AnyRepo(.xit, .{}).open(io, gpa, .{ .path = path, .require_repo_root = true })) |opened| { │ │146 + var any_fork = opened; │ │147 + defer any_fork.deinit(io, gpa); │ │148 + switch (any_fork) { │ │149 + inline else => |*fork_repo| if (evt.currentMoment(fork_repo.self_repo_opts, fork_repo)) |fork_moment| { │ │150 + const kind = fork_repo.self_repo_opts.hash; │ │151 + if (try evt.Patch.readById(evt.EventDB(kind), kind, fork_moment, arena, &fork_id)) |patch| title = patch.event.title;│ │152 + } else |_| {}, │ │153 + } │ │154 } else |_| {} │ │155 try forks.append(arena.allocator(), .{ │ │156 .id = try arena.allocator().dupe(u8, &fork_id_hex), │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │233 try stack.children.put(allocator, list.getFocus().id, .{ .flow_box_scroll = list }); │ │234 } │ │235 │ │233 - // the header has no settings tab without a login, so keep the │ │234 - // stack's children 1:1 with the tabs by skipping the view too │ │236 + // the header has no new repo or settings tab without a login, so keep the │ │237 + // stack's children 1:1 with the tabs by skipping those views too │ │238 + if (session.data.user_id != null) { │ │239 + const route = ui.RoutablePage{ .user_new_repo = ui.RoutablePage.Array(evt.User.name_max_len).from(data.user.name) orelse return error.RouteTooLong };│ │240 + var new_repo_view = try ui.NewRepo.View.init(allocator, session, route); │ │241 + errdefer new_repo_view.deinit(allocator); │ │242 + try stack.children.put(allocator, new_repo_view.getFocus().id, .{ .new_repo = new_repo_view }); │ │243 + } │ │244 + │ │245 if (session.data.user_id != null) { │ │246 var settings_view = try Settings.View.init(allocator, session); │ │247 errdefer settings_view.deinit(allocator); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯