╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ───────────╮ │src/ui/Repo/Undo.zig│ ╰────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │432 } │ │433 if (data.next) |next| { │ │434 const route = ui.RoutablePage.repoUndoRoute(data.identity, next) orelse return error.RouteTooLong; │ │435 - try addText(allocator, &rows, "next →", try std.fmt.allocPrint(session.page_arena.allocator(), "a:{s}", .{try route.toUrl(session.page_arena)}), .hidden);│ │435 + try addText(allocator, &rows, "next →", try session.page_arena.allocator().print("a:{s}", .{try route.toUrl(session.page_arena)}), .hidden); │ │436 } │ │437 if (data.items.len == 0) try addText(allocator, &rows, "no undo history", null, .hidden); │ │438 rows.getFocus().child_id = rows.children.keys()[0]; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │467 var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .round_corners = true, .direction = .vert }); │ │468 errdefer box.deinit(allocator); │ │469 const route = ui.RoutablePage.repoUndoClearRoute(data.identity) orelse return error.RouteTooLong; │ │470 - box.getFocus().kind = .{ .custom = try std.fmt.allocPrint(session.page_arena.allocator(), "form:{s}", .{try route.toUrl(session.page_arena)}) };│ │470 + box.getFocus().kind = .{ .custom = try session.page_arena.allocator().print("form:{s}", .{try route.toUrl(session.page_arena)}) }; │ │471 │ │472 var prompt = try wgt.Text.init(allocator, "are you sure?"); │ │473 errdefer prompt.deinit(allocator); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │565 } else for (item.buttons) |detail_button| { │ │566 try addLabeled(allocator, details, detail_button.label, detail_button.text, detail_button.link); │ │567 } │ │568 - if (failure) |message| try addText(allocator, details, try std.fmt.allocPrint(self.session.page_arena.allocator(), "error: {s}", .{message}), null, .single);│ │568 + if (failure) |message| try addText(allocator, details, try self.session.page_arena.allocator().print("error: {s}", .{message}), null, .single); │ │569 self.shown_failure = failure; │ │570 details.getFocus().kind = if (enabled) .{ .custom = item.form } else .container; │ │571 details.getFocus().child_id = details.children.keys()[0]; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │583 if (self.data.items.len == 0) { │ │584 const failure = self.session.data.undo_failure orelse self.data.failure; │ │585 if (!std.meta.eql(self.shown_failure, failure)) { │ │586 - const message = if (failure) |name| try std.fmt.allocPrint(self.session.page_arena.allocator(), "error: {s}", .{name}) else "no undo history";│ │586 + const message = if (failure) |name| try self.session.page_arena.allocator().print("error: {s}", .{name}) else "no undo history"; │ │587 try rows.children.values()[0].widget.text_box.setContent(allocator, message); │ │588 self.shown_failure = failure; │ │589 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │212 const aa = item_arena.allocator(); │ │213 var items: std.ArrayList(ui.widget.FlowBox.Item) = .empty; │ │214 if (data.forks_start > 0) │ │215 - try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:/{s}/forks/start:{d}", .{ data.user.name, data.forks_start -| page_size }) });│ │215 + try items.append(aa, .{ .text = "← previous", .link = try aa.print("a:/{s}/forks/start:{d}", .{ data.user.name, data.forks_start -| page_size }) }); │ │216 for (data.forks) |fork_item| { │ │217 // the fork route names the forker │ │218 - const identity = try std.fmt.allocPrint(aa, "{s}:{s}", .{ data.user.name, fork_item.target.name }); │ │218 + const identity = try aa.print("{s}:{s}", .{ data.user.name, fork_item.target.name }); │ │219 const route = ui.RoutablePage.forkPatchRoute(identity, fork_item.id) orelse return error.RouteTooLong; │ │220 try items.append(aa, .{ │ │221 - .text = try std.fmt.allocPrint(aa, "{s} - {s}", .{ fork_item.target.name, fork_item.title }), │ │222 - .link = try std.fmt.allocPrint(aa, "a:{s}", .{try route.toUrl(session.page_arena)}), │ │221 + .text = try aa.print("{s} - {s}", .{ fork_item.target.name, fork_item.title }), │ │222 + .link = try aa.print("a:{s}", .{try route.toUrl(session.page_arena)}), │ │223 .bottom_label = if (fork_item.target.read_access == .private) "(private)" else "", │ │224 }); │ │225 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │226 if (data.forks_next_start) |next_start| │ │227 - try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:/{s}/forks/start:{d}", .{ data.user.name, next_start }) });│ │227 + try items.append(aa, .{ .text = "next →", .link = try aa.print("a:/{s}/forks/start:{d}", .{ data.user.name, next_start }) }); │ │228 try list.setItems(allocator, items.items); │ │229 try stack.children.put(allocator, list.getFocus().id, .{ .flow_box_scroll = list }); │ │230 } │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │397 if (data.repos_start > 0) { │ │398 var prev = route; │ │399 prev.user_repos.start = data.repos_start -| page_size; │ │400 - try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:{s}", .{try prev.toUrl(&arena)}) });│ │400 + try items.append(aa, .{ .text = "← previous", .link = try aa.print("a:{s}", .{try prev.toUrl(&arena)}) }); │ │401 } │ │402 for (data.repos) |repo| │ │403 // clicking a repo opens its page; the "a:" prefix makes the web │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │404 // renderer emit an <a href="/alice:foo"> anchor. │ │405 try items.append(aa, .{ │ │406 - .text = if (repo.event.description.len == 0) repo.event.name else try std.fmt.allocPrint(aa, "{s} - {s}", .{ repo.event.name, repo.event.description }),│ │407 - .link = try std.fmt.allocPrint(aa, "a:/{s}:{s}", .{ data.user.name, repo.event.name }), │ │406 + .text = if (repo.event.description.len == 0) repo.event.name else try aa.print("{s} - {s}", .{ repo.event.name, repo.event.description }), │ │407 + .link = try aa.print("a:/{s}:{s}", .{ data.user.name, repo.event.name }), │ │408 .bottom_label = if (repo.event.read_access == .private) "(private)" else "", │ │409 }); │ │410 if (data.repos_next_start) |next_start| { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │411 var next = route; │ │412 next.user_repos.start = next_start; │ │413 - try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:{s}", .{try next.toUrl(&arena)}) });│ │413 + try items.append(aa, .{ .text = "next →", .link = try aa.print("a:{s}", .{try next.toUrl(&arena)}) }); │ │414 } │ │415 try list.setItems(allocator, items.items); │ │416 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────╮ │src/ui/widget.zig│ ╰─────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────╮ │257 .fork => unreachable, │ │258 }; │ │259 const aa = session.page_arena.allocator(); │ │260 - const url = try std.fmt.allocPrint(aa, "ssh://localhost:{d}/{s}", .{ port, identity });│ │260 + const url = try aa.print("ssh://localhost:{d}/{s}", .{ port, identity }); │ │261 break :blk try CopyableText.init(allocator, session, &.{.{ │ │262 .text = url, │ │263 - .copyable_text = try std.fmt.allocPrint(aa, "git remote add origin {s}", .{url}), │ │263 + .copyable_text = try aa.print("git remote add origin {s}", .{url}), │ │264 .label = " git remote add origin ", │ │265 }}, 0); │ │266 } else null else null; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯