╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──────────────────╮ │src/ui/Repo/Discussions.zig│ ╰───────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │241 const labels_link = try ui.inPageTabLink(session, labels_route, page_selected and selected_index == View.viewIndex(.labels));│ │242 const label = if (data.label.len == 0) labels_tab_label else blk: { │ │243 const decoded = std.Uri.percentDecodeInPlace(try aa.dupe(u8, data.label)); │ │244 - break :blk try std.fmt.allocPrint(aa, labels_tab_label ++ " ({s})", .{decoded}); │ │244 + break :blk try aa.print(labels_tab_label ++ " ({s})", .{decoded}); │ │245 }; │ │246 try header.addTab(allocator, label, labels_link, View.viewIndex(.labels)); │ │247 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Events.zig│ ╰──────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │203 if (!std.mem.eql(u8, selected, &std.fmt.bytesToHex(id, .lower))) continue; │ │204 awaiting_selected = false; │ │205 } │ │206 - const window_events = &events[@intFromEnum(view)]; │ │206 + const window_events = &events[@backingInt(view)]; │ │207 if (window_events.items.len == page_size) { │ │208 if (event_window.next == null) event_window.next = .{ .id = try formatId(aa, &id), .kind = kind };│ │209 continue; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │213 } │ │214 // the window start can name an event this batch no longer holds │ │215 if (awaiting_selected) return; │ │216 - result.active.events = events[@intFromEnum(ui.RoutablePage.EventsView.active)].items; │ │217 - result.removed.events = events[@intFromEnum(ui.RoutablePage.EventsView.removed)].items; │ │216 + result.active.events = events[@backingInt(ui.RoutablePage.EventsView.active)].items; │ │217 + result.removed.events = events[@backingInt(ui.RoutablePage.EventsView.removed)].items; │ │218 } │ │219 │ │220 pub fn empty(aa: std.mem.Allocator, identity: []const u8, view: ui.RoutablePage.EventsView, local: bool, failure: ?[]const u8) !Self {│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │383 errdefer content_box.deinit(allocator); │ │384 try content_stack.children.put(allocator, content_box.getFocus().id, .{ .box = content_box }); │ │385 } │ │386 - content_stack.getFocus().child_id = content_stack.children.keys()[@intFromEnum(data.view)]; │ │386 + content_stack.getFocus().child_id = content_stack.children.keys()[@backingInt(data.view)]; │ │387 try outer.children.put(allocator, content_stack.getFocus().id, .{ .widget = .{ .stack = content_stack }, .rect = null, .min_size = null });│ │388 outer.getFocus().child_id = outer.children.keys()[content_index]; │ │389 return .{ .box = outer, .data = data, .session = session, .detailed_index = .{ null, null } }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │398 const event_window = data.window(view); │ │399 for (event_window.events) |event| { │ │400 const route = ui.RoutablePage.repoEventsRoute(data.identity, view, event.kind, event.id, data.moment) orelse return error.RouteTooLong;│ │401 - const link = try std.fmt.allocPrint(session.page_arena.allocator(), "ai:{s}", .{try route.toUrl(session.page_arena)}); │ │401 + const link = try session.page_arena.allocator().print("ai:{s}", .{try route.toUrl(session.page_arena)}); │ │402 try addRow(allocator, &list_box, @tagName(event.kind), link); │ │403 } │ │404 if (event_window.next) |next| { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │405 const route = ui.RoutablePage.repoEventsRoute(data.identity, view, next.kind, next.id, data.moment) orelse return error.RouteTooLong;│ │406 - const link = try std.fmt.allocPrint(session.page_arena.allocator(), "a:{s}", .{try route.toUrl(session.page_arena)}); │ │406 + const link = try session.page_arena.allocator().print("a:{s}", .{try route.toUrl(session.page_arena)}); │ │407 try addRow(allocator, &list_box, "next →", link); │ │408 } │ │409 if (list_box.children.count() > 0) list_box.getFocus().child_id = list_box.children.keys()[0]; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │445 fn selectedView(self: *View) ui.RoutablePage.EventsView { │ │446 const stack = self.contentStack(); │ │447 const id = stack.getFocus().child_id orelse return .active; │ │448 - return @enumFromInt(stack.children.getIndex(id) orelse 0); │ │448 + return @fromBackingInt(@intCast(stack.children.getIndex(id) orelse 0));│ │449 } │ │450 │ │451 fn eventWindow(self: *View) *const Window { │ ╰────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │454 │ │455 fn content(self: *View) *wgt.Box(ui.Widget) { │ │456 const stack = self.contentStack(); │ │457 - return &stack.children.values()[@intFromEnum(self.selectedView())].box;│ │457 + return &stack.children.values()[@backingInt(self.selectedView())].box; │ │458 } │ │459 │ │460 fn listScroll(self: *View) *wgt.Scroll(ui.Widget) { │ ╰────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────╮ │510 │ │511 fn refreshDetail(self: *View, allocator: std.mem.Allocator) !void { │ │512 const index = self.selectedEventIndex() orelse return; │ │513 - const detailed_index = &self.detailed_index[@intFromEnum(self.selectedView())];│ │513 + const detailed_index = &self.detailed_index[@backingInt(self.selectedView())]; │ │514 if (detailed_index.*) |old| if (old == index) return; │ │515 const box = self.detailBox(); │ │516 for (box.children.values()) |*child| child.widget.deinit(allocator); │ ╰────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │522 var link = try wgt.TextBox.init(allocator, "view event", .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │523 errdefer link.deinit(allocator); │ │524 link.getFocus().mode = .all; │ │525 - link.getFocus().kind = .{ .custom = try std.fmt.allocPrint(self.session.page_arena.allocator(), "a:{s}", .{url}) }; │ │525 + link.getFocus().kind = .{ .custom = try self.session.page_arena.allocator().print("a:{s}", .{url}) }; │ │526 try box.children.put(allocator, link.getFocus().id, .{ .widget = .{ .text_box = link }, .rect = null, .min_size = null }); │ │527 } │ │528 { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯