╭ changed ────────╮ │src/serve_ssh.zig│ ╰─────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │13 pub const SessionHandler = struct { │ │14 admin_repo_path: []const u8, │ │15 repo_root_path: []const u8, │ │16 + wui_port: u16, // port the web UI is served on, shown in the TUI footer's url │ │17 err: *std.Io.Writer, │ │18 │ │19 pub fn handleSession(self: *const SessionHandler, sess: *ssh.SessionCtx, request: ssh.Request) !void {│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │119 defer repo.deinit(io, allocator); │ │120 var ui_session = try ui.Session.init(&session_arena, &repo, .{}); │ │121 ui_session.is_terminal = true; │ │122 + ui_session.web_port = handler.wui_port; │ │123 // let page builders open on-disk repos (sibling "repos" dir of the admin repo) │ │124 ui_session.io = io; │ │125 ui_session.repos_dir = try std.fs.path.join(session_arena.allocator(), &.{ std.fs.path.dirname(handler.admin_repo_path) orelse ".", "repos" });│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯