╭ changed ───────────────╮ │src/ui/widget/thread.zig│ ╰────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │790 │ │791 const route = ui.RoutablePage.repoThreadEditRoute(kind, self.data.identity, entry.id) orelse return error.RouteTooLong; │ │792 - try addToolButton(allocator, row, "edit", "", try std.fmt.allocPrint(pa, "a:{s}", .{try route.toUrl(self.session.page_arena)}));│ │792 + try addToolButton(allocator, row, "edit", "", try pa.print("a:{s}", .{try route.toUrl(self.session.page_arena)})); │ │793 } │ │794 │ │795 const route = ui.RoutablePage.repoThreadRemoveRoute(kind, self.data.identity, entry.id, "") orelse return error.RouteTooLong; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │796 - try addToolButton(allocator, row, "✕", "", try std.fmt.allocPrint(pa, "a:{s}", .{try route.toUrl(self.session.page_arena)}));│ │796 + try addToolButton(allocator, row, "✕", "", try pa.print("a:{s}", .{try route.toUrl(self.session.page_arena)})); │ │797 } │ │798 } │ │799 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │869 errdefer description.deinit(allocator); │ │870 if (preview_end != null) { │ │871 const route = ui.RoutablePage.repoThreadDescriptionRoute(kind, self.data.identity, entry.id) orelse return error.RouteTooLong; │ │872 - description.body().kind = .{ .custom = try std.fmt.allocPrint(self.session.page_arena.allocator(), "a:{s}", .{try route.toUrl(self.session.page_arena)}) };│ │872 + description.body().kind = .{ .custom = try self.session.page_arena.allocator().print("a:{s}", .{try route.toUrl(self.session.page_arena)}) }; │ │873 } │ │874 try inner_box.children.put(allocator, description.getFocus().id, .{ .widget = .{ .markdown_frame = description }, .rect = null, .min_size = null }); │ │875 self.description_id = description.getFocus().id; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │1432 const header_index: usize = 0; │ │1433 const stack_index: usize = 1; │ │1434 // indices within the stack, 1:1 with the header tabs. │ │1435 - const status_count = @typeInfo(Status).@"enum".fields.len; │ │1435 + const status_count = @typeInfo(Status).@"enum".field_names.len; │ │1436 const labels_view_index: usize = status_count; │ │1437 // the new-thread form, or the edit, comment, or resolve form when the page was│ │1438 // loaded at one of their urls. │ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────╮ │1455 if (std.mem.eql(u8, name, "conflicts")) return conflict_view_index; │ │1456 if (std.mem.eql(u8, name, "drafts")) return drafts_view_index; │ │1457 if (std.mem.eql(u8, name, "description")) unreachable; │ │1458 - inline for (@typeInfo(Status).@"enum".fields, 0..) |field, index| { │ │1459 - if (std.mem.eql(u8, name, field.name)) return index; │ │1458 + inline for (@typeInfo(Status).@"enum".field_names, 0..) |status_name, index| {│ │1459 + if (std.mem.eql(u8, name, status_name)) return index; │ │1460 } │ │1461 unreachable; │ │1462 } │ ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │1473 // the status a status split lists; the conflicts split has none (its│ │1474 // threads carry their own). │ │1475 fn splitStatus(index: usize) Status { │ │1476 - return @enumFromInt(index); │ │1476 + return @fromBackingInt(@intCast(index)); │ │1477 } │ │1478 │ │1479 fn entryConflicted(entry: Entry) bool { │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │1482 │ │1483 fn entryStatus(entry: Entry) Status { │ │1484 if (comptime has_status) return Data.statusKind(entry.record.event);│ │1485 - return @enumFromInt(0); │ │1485 + return @fromBackingInt(@intCast(0)); │ │1486 } │ │1487 │ │1488 fn entryDraft(entry: Entry) bool { │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1518 fn listLink(page_arena: *std.heap.ArenaAllocator, identity: []const u8, status: Status, label: []const u8, id: []const u8, search: []const u8) ![]const u8 {│ │1519 var route = listRoute(identity, status, label, id) orelse return error.RouteTooLong; │ │1520 if (search.len != 0) route = route.withSearch(search) orelse return error.RouteTooLong; │ │1521 - return std.fmt.allocPrint(page_arena.allocator(), "a:{s}", .{try route.toUrl(page_arena)}); │ │1521 + return page_arena.allocator().print("a:{s}", .{try route.toUrl(page_arena)}); │ │1522 } │ │1523 │ │1524 fn rowLink(page_arena: *std.heap.ArenaAllocator, data: *const Self, id: []const u8) ![]const u8 { │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1532 ui.RoutablePage.repoThreadCommentsRoute(kind, data.identity, id, data.comments_start) │ │1533 else │ │1534 ui.RoutablePage.repoThreadCommentsRoute(kind, data.identity, id, 0)) orelse return error.RouteTooLong; │ │1535 - return std.fmt.allocPrint(page_arena.allocator(), "ai:{s}", .{try route.toUrl(page_arena)}); │ │1535 + return page_arena.allocator().print("ai:{s}", .{try route.toUrl(page_arena)}); │ │1536 } │ │1537 │ │1538 fn windowLink(page_arena: *std.heap.ArenaAllocator, data: *const Self, status_maybe: ?Status, drafts: bool, id: []const u8) ![]const u8 {│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1539 if (supports_conflicts and status_maybe == null and !drafts) { │ │1540 const route = conflictsRoute(data.identity, id) orelse return error.RouteTooLong; │ │1541 - return std.fmt.allocPrint(page_arena.allocator(), "a:{s}", .{try route.toUrl(page_arena)});│ │1541 + return page_arena.allocator().print("a:{s}", .{try route.toUrl(page_arena)}); │ │1542 } │ │1543 if (drafts and id.len == 0) { │ │1544 const route = draftsRoute(data.identity) orelse return error.RouteTooLong; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯