TUI Support#112
Open
zAbuQasem wants to merge 6 commits into
Open
Conversation
A Bubble Tea TUI to manage and launch iximiuz Labs playgrounds: - Catalog / Playgrounds / Persisted tabs with a live filter and k9s-style framing, theme picker (live preview + skin.yaml overrides), info and shortcuts popups. - Playground actions: ssh, start/stop toggle, restart, persist, extend lifetime, destroy — with confirmation dialogs. - Sign-in flow: auth popup, browser login, and a "Signed in as <user>" confirmation. - Launch by default via the LABCTL_TUI env var; otherwise available as the `labctl tui` subcommand.
- Expose: `w` shares a web terminal (private/public), `E` exposes HTTP port(s) (accepts a comma-separated list), `x` opens a combined Export dialog. Exposed URLs are copied to the clipboard. - Exports tab: a 4th tab aggregating every exposed shell/port across active labs; enter copies the URL, o opens it, ctrl+d unexposes. - Info popup lists a playground's currently exposed endpoints. - Ctrl+D now deletes (destroy on playgrounds, unexpose on exports) and no longer quits; x moved from destroy to Export. - Responsive layout: header degrades (drops logo, then menu) instead of overflowing, table columns shrink to fit, breathing-room rows collapse on short terminals, and a "terminal too small" message renders below the 60x14 floor.
- merge the persisted tab into playgrounds with a * marker and require double confirmation before destroying persistent labs - drop the ID column (now in the Info popup), add a REGION column, show AGE as elapsed/total, and make STATUS state-only - pick a region when spawning a lab (defaults to the account preference, applied via the preferences API) and show the region in the header - render all popups as overlays on top of the live view - consolidate exposing: w shares a web terminal, x exposes ports - allow SSH only on running labs, with a clear per-state message - replace the t restart key with the s start/stop toggle
- F starts a local background port-forward on the selected running lab; ctrl+f stops a lab's forwards (with confirmation). Forwards show in a dedicated PF column as local<->remote and are dropped when the lab is stopped, restarted, or destroyed - reject forwarding a local port that's already in use - persist the theme choice to ~/.labctl.config and per-lab regions plus live forwards to ~/.labctl.rc; restore running labs' forwards on reopen - show TTL (remaining lifetime, counting down) instead of elapsed age
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Features