╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──────╮ │src/ui/Repo.zig│ ╰───────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ │379 .repo_commits => |*v| v.getSelectedIndex() == 0, │ │380 .repo_refs => |*v| v.getSelectedIndex() == 0, │ │381 .repo_issues => |*v| v.getSelectedIndex() == 0, │ │398 - .repo_comments => |*v| v.getSelectedIndex() == 0,│ │382 .home_settings => |*v| v.getSelectedIndex() == 0,│ │383 .home_auth => |*v| v.getSelectedIndex() == 0, │ │384 .quit => |*v| v.getSelectedIndex() == 0, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ removed ───────────────╮ │src/ui/Repo/Comments.zig│ ╰────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Header.zig│ ╰──────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │130 const current_link: []const u8 = switch (session.data.current_page) {│ │131 .repo_commits => commits_link, │ │132 .repo_refs => refs_link, │ │133 - .repo_issues, .repo_comments => issues_link, │ │133 + .repo_issues => issues_link, │ │134 .repo_settings => settings_link, │ │135 .repo_auth => auth_link, │ │136 else => files_link, │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Issues.zig│ ╰──────────────────────╯ ╭────────────────────────────────────────────────────╮ │13 const Focus = xitui.focus.Focus; │ │14 const inp = @import("../input.zig"); │ │15 const diff3 = @import("../../diff3.zig"); │ │16 -const Comments = @import("Comments.zig"); │ │16 +const Comment = @import("Comment.zig"); │ │17 │ │18 const wasm = builtin.target.cpu.arch == .wasm32;│ │19 │ ╰────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────╮ │36 author: ui.Author = .unknown, │ │37 // whether the issue has an unresolved merge conflict │ │38 conflicted: bool = false, │ │39 - comments: Comments.Window = .empty, │ │39 + comments: Comment.Window = .empty, │ │40 }; │ │41 │ │42 // one side of a conflicted field: its value and who set it│ ╰───────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────╮ │84 // the hex event id of the issue its status's window is rooted at ("" = the│ │85 // first window), mirrored into the url. │ │86 selected_id: []const u8, │ │87 +// the comment shown in the selected issue's detail pane. │ │88 +comment_id: []const u8, │ │89 // the selected issue's comment window (0 = the first window). │ │90 comments_start: usize, │ │91 +// the selected comment and its immediate replies. │ │92 +comment_page: ?Comment.Permalink = null, │ │93 open: Window, │ │94 closed: Window, │ │95 // the conflicted issues' listing; its count also gates the conflicts tab. │ ╰───────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │142 } │ │143 │ │144 // an empty listing, for the wasm / no-repo paths. │ │141 -pub fn emptyResult(aa: std.mem.Allocator, identity: []const u8, tag: []const u8, selected_id: []const u8, comments_start: usize, theirs_picks: []const u8, view: ui.RoutablePage.IssuesView) !Self { │ │145 +pub fn emptyResult(aa: std.mem.Allocator, identity: []const u8, tag: []const u8, selected_id: []const u8, comment_id: []const u8, comments_start: usize, theirs_picks: []const u8, view: ui.RoutablePage.IssuesView) !Self {│ │146 return .{ │ │147 .identity = try aa.dupe(u8, identity), │ │148 .tag = try aa.dupe(u8, tag), │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────╮ │149 .selected_id = try aa.dupe(u8, selected_id),│ │150 + .comment_id = try aa.dupe(u8, comment_id), │ │151 .comments_start = comments_start, │ │152 .open = .empty, │ │153 .closed = .empty, │ ╰─────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────╮ │182 identity: []const u8, │ │183 tag: []const u8, │ │184 selected_id: []const u8, │ │185 + comment_id: []const u8, │ │186 comments_start: usize, │ │187 theirs_picks: []const u8, │ │188 view: ui.RoutablePage.IssuesView,│ ╰──────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │189 ) !Self { │ │184 - const empty = try emptyResult(arena.allocator(), identity, tag, selected_id, comments_start, theirs_picks, view); │ │190 + const empty = try emptyResult(arena.allocator(), identity, tag, selected_id, comment_id, comments_start, theirs_picks, view);│ │191 │ │192 const aa = arena.allocator(); │ │193 const DB = evt.EventDB(repo_opts.hash); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯