╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─────────────────╮ │src/ui/Repo/Attachment.zig│ ╰──────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │65 tb.getFocus().kind = .{ .custom = try std.fmt.allocPrint(pa, "{s}{s}", .{ ui.raw_link_prefix, try url(session.page_arena, identity, &entry.id) }) };│ │66 try row.children.put(allocator, tb.getFocus().id, .{ .widget = .{ .text_box = tb }, .rect = null, .min_size = null }); │ │67 │ │68 - if (session.data.is_local or session.data.user_id != null) { │ │68 + if (session.data.host_kind == .local or session.data.user_id != null) { │ │69 row.getFocus().kind = .{ .custom = try std.fmt.allocPrint(pa, "form:{s}/attachment:{s}/remove", .{ parent_url, &entry.id }) }; │ │70 var remove = try wgt.TextBox.init(allocator, "✕", .{ .border_style = .single, .rounded_corners = true, .wrap_kind = .none }); │ │71 errdefer remove.deinit(allocator); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────────────╮ │src/ui/Repo/Comment.zig│ ╰───────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │192 try bar.children.put(allocator, parent.getFocus().id, .{ .widget = .{ .text_box = parent }, .rect = null, .min_size = .{ .width = @max(parent_text.len, " replying to ".len) + 2, .height = null } });│ │193 } │ │194 │ │195 - if (!entry.comment.removed and (session.data.is_local or session.data.user_id != null)) { │ │195 + if (!entry.comment.removed and (session.data.host_kind == .local or session.data.user_id != null)) { │ │196 var remove = try linkBox(allocator, session, "✕", removeRoute(thread_kind, identity, &entry.comment.event.thread_id, &entry.id) orelse return error.RouteTooLong); │ │197 errdefer remove.deinit(allocator); │ │198 try bar.children.put(allocator, remove.getFocus().id, .{ .widget = .{ .text_box = remove }, .rect = null, .min_size = .{ .width = 3, .height = null } }); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────────────╮ │src/ui/Repo/Commits.zig│ ╰───────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │754 var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .horiz });│ │755 errdefer box.deinit(allocator); │ │756 │ │757 - if (!session.data.is_local) { │ │757 + if (session.data.host_kind == .server) { │ │758 if (try ui.widget.CopyableText.initClone(allocator, session, location)) |value| { │ │759 var clone_url = value; │ │760 errdefer clone_url.deinit(allocator); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Events.zig│ ╰──────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │784 const local_oid = try repo.readRef(io, evt.events_ref); │ │785 const remote_oid = try repo.readRef(io, remote_ref); │ │786 if (local_oid == null and remote_oid == null) { │ │787 - try evt.consume(.repo, repo_kind, repo_opts, io, allocator, repo, evt.events_ref, &.{}); │ │787 + try evt.consume(.local, .repo, repo_kind, repo_opts, io, allocator, repo, evt.events_ref, &.{});│ │788 return null; │ │789 } │ │790 if (remote_oid != null) try evt.mergeEvents(repo_kind, repo_opts, io, allocator, repo, remote_ref); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │791 - try evt.consume(.repo, repo_kind, repo_opts, io, allocator, repo, evt.events_ref, &.{}); │ │791 + try evt.consume(.local, .repo, repo_kind, repo_opts, io, allocator, repo, evt.events_ref, &.{}); │ │792 │ │793 const push_refspec = try std.fmt.allocPrint(allocator, "refs/heads/{s}:refs/heads/{s}", .{ evt.events_ref.name, evt.events_ref.name });│ │794 defer allocator.free(push_refspec); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Repo/Files.zig│ ╰─────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │855 var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .horiz });│ │856 errdefer box.deinit(allocator); │ │857 │ │858 - if (!session.data.is_local) { │ │858 + if (session.data.host_kind == .server) { │ │859 if (try ui.widget.CopyableText.initClone(allocator, session, location)) |value| { │ │860 var clone_url = value; │ │861 errdefer clone_url.deinit(allocator); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Header.zig│ ╰──────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │76 try ui.widget.addBackButton(allocator, &title_box, session); │ │77 │ │78 // the user's name (local mode has no user pages to link to) │ │79 - if (!session.data.is_local) { │ │79 + if (session.data.host_kind == .server) { │ │80 var text_buf: [evt.User.name_max_len + 1]u8 = undefined; │ │81 const text = try std.fmt.bufPrint(&text_buf, "{s}/", .{data.owner_name}); │ │82 const link = try std.fmt.allocPrint(aa, "a:/user/{s}", .{data.owner_name});│ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 94 } │ │ 95 │ │ 96 // local routes carry no identity, so their urls come out elided │ │ 97 - const identity = if (session.data.is_local) "" else try std.fmt.allocPrint(aa, "{s}/{s}", .{ data.owner_name, data.name }); │ │ 97 + const identity = if (session.data.host_kind == .local) "" else try std.fmt.allocPrint(aa, "{s}/{s}", .{ data.owner_name, data.name });│ │ 98 │ │ 99 // title links to the repo's files root (the bare route, so it resolves │ │100 // to the default branch). │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │293 // auth tab (login / logout). AuthTab defaults to the global ai:/auth │ │294 // link; repoint its instance at this repo's auth route so it stays on│ │295 // this page. local mode has no accounts, so it has no auth tab. │ │296 - if (!session.data.is_local) { │ │296 + if (session.data.host_kind == .server) { │ │297 var auth_tab = try AuthTab.View.init(allocator, session); │ │298 errdefer auth_tab.deinit(allocator); │ │299 auth_tab.text_box.getFocus().kind = .{ .custom = auth_link }; │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────────────╮ │src/ui/Repo/Patches.zig│ ╰───────────────────────╯ ╭──────────────────────────────────────────────────────────╮ │166 !entry.conflicted and │ │167 entry.record.event.revision != null and │ │168 entry.record.event.status.kind() == .open and│ │169 - !session.data.is_local and │ │169 + session.data.host_kind == .server and │ │170 session.data.user_id != null; │ │171 } │ │172 │ ╰──────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯