╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────╮ │2358 color: bool = true, // false when NO_COLOR is set, which also hides the art │ │2359 // the terminal's reported default background, which the art blends toward │ │2360 terminal_background: ?Grid.Color.Rgb = null, │ │2361 - // port the web UI is served on, for the TUI/SSH footer's "http://localhost:<port>..."│ │2362 - // url. null on the web itself (no footer there). │ │2363 - web_port: ?u16 = null, │ │2361 + // the web UI's url, for the TUI/SSH footer. null on the web itself (no │ │2362 + // footer there). │ │2363 + web_url: ?[]const u8 = null, │ │2364 // the authorized_keys line of the key an ssh session connected with │ │2365 ssh_key: ?[]const u8 = null, │ │2366 // a host operation requested by a widget │ ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │2583 // the selected ANSI art. the server serializes one image for WASM so │ │2584 // the browser does not need the whole build-generated collection. │ │2585 ansi_art: []const u8 = "", │ │2586 - // the bound git-service ports. absent in local mode, where remote urls │ │2587 - // are not shown. │ │2588 - git_http_port: ?u16 = null, │ │2589 - git_ssh_port: ?u16 = null, │ │2586 + // where git clones and pushes go. absent in local mode, where remote │ │2587 + // urls are not shown. │ │2588 + git_http_url: ?[]const u8 = null, │ │2589 + git_ssh_url: ?[]const u8 = null, │ │2590 git_ssh_prefix: []const u8 = "", │ │2591 // whether this session views a local repo or the server. unlike `local`│ │2592 // (the host-side filesystem source) this travels in the snapshot, so │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │3026 pub fn terminalWebUrl(allocator: std.mem.Allocator, session: *const Session, path: []const u8) ![]const u8 {│ │3027 // an absolute url is already complete │ │3028 if (!std.mem.startsWith(u8, path, "/")) return path; │ │3029 - return if (session.web_port) |port| │ │3030 - try allocator.print("http://localhost:{d}{s}", .{ port, path }) │ │3029 + return if (session.web_url) |web_url| │ │3030 + try allocator.print("{s}{s}", .{ web_url, path }) │ │3031 else │ │3032 path; │ │3033 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │3342 try box.children.put(allocator, id, .{ .widget = .{ .background = background }, .rect = null, .min_size = null }); │ │3343 break :bg_blk id; │ │3344 }; │ │3345 - if (session.web_port != null) { │ │3345 + if (session.web_url != null) { │ │3346 var footer = try widget.Footer.init(allocator, session); │ │3347 errdefer footer.deinit(allocator); │ │3348 try box.children.put(allocator, footer.getFocus().id, .{ .widget = .{ .footer = footer }, .rect = null, .min_size = .{ .width = null, .height = 1 } });│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯