Skip to content

TUI Support#112

Open
zAbuQasem wants to merge 6 commits into
iximiuz:mainfrom
zAbuQasem:main
Open

TUI Support#112
zAbuQasem wants to merge 6 commits into
iximiuz:mainfrom
zAbuQasem:main

Conversation

@zAbuQasem

Copy link
Copy Markdown

Features

  • Unified playground list — the separate "persisted" tab is merged into the main list; persistent labs are marked with a *.
  • Safer deletes — destroying a persistent lab requires a second confirmation.
  • Region support — choose a region when spawning a lab (defaults to your account's preferred region), with the current region shown in the header.
  • Reworked columns — REGION column added, AGE shows elapsed/total, STATUS is state-only, and ID moved to the Info popup.
  • Overlay popups — dialogs render on top of the live view instead of replacing it.
  • Clearer expose actions — w shares a web terminal, x exposes ports.
  • Smarter SSH — only allowed on running labs, with a clear per-state message (e.g. Can't SSH into a STOPPING lab).
  • Simplified keys — s start/stop toggle replaces the redundant t restart key.

zAbuQasem and others added 6 commits June 15, 2026 14:43
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant