╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2797 │ │2798 chooseAnsiArtForNavigation(session); │ │2799 │ │2800 - // on the TUI/SSH, the page sits above a one-row footer showing the url │ │2800 + // on the TUI/SSH, the page sits above a one-row footer showing its web │ │2801 + // url, when there's a web UI to point at │ │2802 var root = if (session.is_terminal) blk: { │ │2803 var box = try wgt.Box(Widget).init(allocator, .{ .border_style = null, .direction = .vert });│ │2804 errdefer box.deinit(allocator); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2809 try box.children.put(allocator, id, .{ .widget = .{ .background = background }, .rect = null, .min_size = null }); │ │2810 break :bg_blk id; │ │2811 }; │ │2811 - { │ │2812 + if (session.web_port != null) { │ │2813 var footer = try widget.Footer.init(allocator, session); │ │2814 errdefer footer.deinit(allocator); │ │2815 try box.children.put(allocator, footer.getFocus().id, .{ .widget = .{ .footer = footer }, .rect = null, .min_size = .{ .width = null, .height = 1 } });│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────╮ │src/ui/widget.zig│ ╰─────────────────╯ ╭───────────────────────────────────────────────────────────────╮ │1115 while (utf8.nextCodepoint()) |ch| { │ │1116 const rune_width = xitui.width.cellWidth(ch);│ │1117 if (i + rune_width > width) break; │ │1118 + // a terminal hyperlink to the page │ │1119 + (try grid.cell(i, 0)).link = text; │ │1120 try grid.setRune(i, 0, ch); │ │1121 i += rune_width; │ │1122 } │ ╰───────────────────────────────────────────────────────────────╯