╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─────────╮ │src/test/event.zig│ ╰──────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1202 const repo_cursor = try event_id_to_repo.getCursor(hash.hashInt(repo_opts.hash, &repo_event_id)) orelse return error.NotFound; │ │1203 const repo_map = try Repo.DB.HashMap(.read_only).init(repo_cursor); │ │1204 const repo_event = try evt.read(evt.Repo.Record, Repo.DB, repo_opts.hash, &arena, repo_map); │ │1205 - try std.testing.expect(repo_event.deleted); │ │1205 + try std.testing.expect(repo_event.removed); │ │1206 │ │1207 // get the repos created by the user │ │1208 const user_id_to_repo_id_set_cursor = try haxy_moment.getCursor(hash.hashInt(repo_opts.hash, "user-id->repo-id-set")) orelse return error.NotFound;│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1229 const repo_cursor = try event_id_to_repo.getCursor(hash.hashInt(repo_opts.hash, &repo_event_id)) orelse return error.NotFound; │ │1230 const repo_map = try Repo.DB.HashMap(.read_only).init(repo_cursor); │ │1231 const repo_event = try evt.read(evt.Repo.Record, Repo.DB, repo_opts.hash, &arena, repo_map); │ │1232 - try std.testing.expect(!repo_event.deleted); │ │1232 + try std.testing.expect(!repo_event.removed); │ │1233 │ │1234 const user_id_to_repo_id_set_cursor = try haxy_moment.getCursor(hash.hashInt(repo_opts.hash, "user-id->repo-id-set")) orelse return error.NotFound;│ │1235 const user_id_to_repo_id_set = try Repo.DB.HashMap(.read_only).init(user_id_to_repo_id_set_cursor); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1263 const user_cursor = try event_id_to_user.getCursor(hash.hashInt(repo_opts.hash, &user_event_id)) orelse return error.NotFound; │ │1264 const user_map = try Repo.DB.HashMap(.read_only).init(user_cursor); │ │1265 const user_event = try evt.read(evt.User.Record, Repo.DB, repo_opts.hash, &arena, user_map); │ │1266 - try std.testing.expect(user_event.deleted); │ │1266 + try std.testing.expect(user_event.removed); │ │1267 │ │1268 - // deleting the user tombstones their active repos too │ │1268 + // removing the user removes their active repos too │ │1269 const event_id_to_repo_cursor = try haxy_moment.getCursor(hash.hashInt(repo_opts.hash, "event-id->repo")) orelse return error.NotFound;│ │1270 const event_id_to_repo = try Repo.DB.HashMap(.read_only).init(event_id_to_repo_cursor); │ │1271 const repo_cursor = try event_id_to_repo.getCursor(hash.hashInt(repo_opts.hash, &repo_event_id)) orelse return error.NotFound; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1272 const repo_map = try Repo.DB.HashMap(.read_only).init(repo_cursor); │ │1273 const repo_event = try evt.read(evt.Repo.Record, Repo.DB, repo_opts.hash, &arena, repo_map);│ │1274 - try std.testing.expect(repo_event.deleted); │ │1274 + try std.testing.expect(repo_event.removed); │ │1275 } │ │1276 } │ │1277 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1353 try std.testing.expectEqual(1, try uset.count()); │ │1354 } │ │1355 │ │1356 - // deleting repo1 retains its place in the canonical order │ │1356 + // removing repo1 retains its place in the canonical order │ │1357 try evt.consume(.xit, repo_opts, io, allocator, &repo, evt.events_ref, &[_]evt.EventWithId{ │ │1358 .{ .id = std.fmt.bytesToHex(repo_ids[1], .lower), .author = author, .timestamp = 200, .event = .{ .repo = null } },│ │1359 }); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/test/ui.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │175 var arena = std.heap.ArenaAllocator.init(allocator); │ │176 defer arena.deinit(); │ │177 const status = try Events.Header.local(.git, .{}, arena.allocator(), &local, io, null); │ │178 - try std.testing.expectEqualStrings("nothing to sync", status.status); │ │178 + try std.testing.expectEqualStrings("nothing to sync", status.sync_status orelse return error.TestExpectedEqual);│ │179 } │ │180 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──╮ │src/try.zig│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │590 // merge. the 4th-newest issue conflicts on title and tags; the │ │591 // 3rd-newest on its description with every hunk auto-resolving │ │592 // (each side reworks a different paragraph); the 2nd-newest on │ │593 - // its description with a deletion conflict (ours removes a │ │593 + // its description with a removal conflict (ours removes a │ │594 // paragraph theirs rewords) and an insertion conflict (each side│ │595 // appends a different closing paragraph). │ │596 { │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │116 pub const RefKind = enum { branch, tag }; │ │117 │ │118 pub const IssuesView = enum { open, closed, tags, new, edit, description, new_comment, edit_comment, conflicts, resolve };│ │119 + │ │120 + pub const EventsView = enum { active, removed }; │ │121 │ │122 pub const RefOrOid = enum { │ │123 branch, │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────╮ │291 │ │292 pub const RepoEventsRoute = struct { │ │293 name: Array(repo_identity_max_len), │ │294 + view: EventsView = .active, │ │295 kind: ?evt.EventKind = null, │ │296 selected: Array(evt.event_id_size * 2) = .{},│ │297 }; │ ╰──────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │350 } │ │351 │ │352 // build the events list or a window rooted at one event. │ │350 - pub fn repoEventsRoute(identity: []const u8, kind: ?evt.EventKind, selected: []const u8) ?RoutablePage { │ │353 + pub fn repoEventsRoute(identity: []const u8, view: EventsView, kind: ?evt.EventKind, selected: []const u8) ?RoutablePage {│ │354 if ((kind == null) != (selected.len == 0)) return null; │ │355 return .{ .repo_events = .{ │ │356 .name = Array(repo_identity_max_len).from(identity) orelse return null, │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯