feat: migrate Tux-Dock to FTXUI TUI and CMake build flow #2

Merged
markmental merged 5 commits from dev into main 2026-02-25 18:53:16 +00:00
Owner

Summary

This PR merges dev into main and delivers the Tux-Dock TUI modernization effort.

  • Replaces the old numbered CLI loop with an FTXUI single-screen interface and modal workflows.
  • Migrates build tooling from direct g++ compile commands to CMake, with FTXUI fetched via FetchContent.
  • Updates container/image selection UX to picker-based navigation (arrow keys + Enter), reducing numeric-input friction.
  • Introduces high-level status messaging, deferred wait-state UX for slower actions, and improved interactive shell handoff behavior.
  • Adds an About screen entry with version and repository metadata.
  • Refreshes README to match current architecture (DockerManager + TuxDockApp) and current behavior.

Key Changes

TUI / UX

  • New FTXUI-driven app orchestration in main.cpp.
  • Single-screen action panel + status panel.
  • Modal types: input, confirm, select, message.
  • Cleaner interactive shell transitions (clear before/after handoff).
  • Container listings and selectors now show:
    • running/stopped state
    • forwarded ports
  • Added About Tux-Dock menu action.

Responsiveness

  • Added deferred status runner for long-ish operations so users see immediate wait feedback:
    • pull image
    • stop container
    • remove container
    • delete image

Build / CI

  • Added root CMakeLists.txt (C++17, FTXUI via FetchContent).
  • Updated compile.sh to CMake configure/build.
  • Updated Forgejo workflow build step to CMake pipeline.

Docs

  • Rewrote README.md to reflect:
    • FTXUI-based interface
    • CMake build flow
    • updated menu/actions
    • two-class design overview (DockerManager + TuxDockApp)
    • version/about metadata

Files Changed

  • .forgejo/workflows/build.yaml
  • .gitignore
  • CMakeLists.txt
  • README.md
  • compile.sh
  • main.cpp

Validation

  • Built successfully with:
    • cmake -S . -B build
    • cmake --build build -j
  • Verified core interaction flows in dev branch, including:
    • pull/run/start/stop/remove flows
    • shell attach transitions
    • updated status panel and about view behavior

Notes

  • This is a substantial UX and architecture update with intentional behavior changes in input/selection flow.
  • Existing Docker command capabilities are preserved, but now orchestrated through the TuxDockApp UI layer.
# Summary This PR merges `dev` into `main` and delivers the Tux-Dock TUI modernization effort. - Replaces the old numbered CLI loop with an FTXUI single-screen interface and modal workflows. - Migrates build tooling from direct `g++` compile commands to CMake, with FTXUI fetched via `FetchContent`. - Updates container/image selection UX to picker-based navigation (arrow keys + Enter), reducing numeric-input friction. - Introduces high-level status messaging, deferred wait-state UX for slower actions, and improved interactive shell handoff behavior. - Adds an About screen entry with version and repository metadata. - Refreshes README to match current architecture (`DockerManager` + `TuxDockApp`) and current behavior. # Key Changes TUI / UX - New FTXUI-driven app orchestration in `main.cpp`. - Single-screen action panel + status panel. - Modal types: input, confirm, select, message. - Cleaner interactive shell transitions (clear before/after handoff). - Container listings and selectors now show: - running/stopped state - forwarded ports - Added `About Tux-Dock` menu action. # Responsiveness - Added deferred status runner for long-ish operations so users see immediate wait feedback: - pull image - stop container - remove container - delete image # Build / CI - Added root `CMakeLists.txt` (C++17, FTXUI via FetchContent). - Updated `compile.sh` to CMake configure/build. - Updated Forgejo workflow build step to CMake pipeline. # Docs - Rewrote `README.md` to reflect: - FTXUI-based interface - CMake build flow - updated menu/actions - two-class design overview (`DockerManager` + `TuxDockApp`) - version/about metadata # Files Changed - `.forgejo/workflows/build.yaml` - `.gitignore` - `CMakeLists.txt` - `README.md` - `compile.sh` - `main.cpp` # Validation - Built successfully with: - `cmake -S . -B build` - `cmake --build build -j` - Verified core interaction flows in dev branch, including: - pull/run/start/stop/remove flows - shell attach transitions - updated status panel and about view behavior # Notes - This is a substantial UX and architecture update with intentional behavior changes in input/selection flow. - Existing Docker command capabilities are preserved, but now orchestrated through the `TuxDockApp` UI layer.
Add about screen
Some checks failed
Build & Upload tux-dock / build (push) Has been cancelled
00e5347d55
Install cmake in container for CI
Some checks failed
Build & Upload tux-dock / build (push) Failing after 12s
a85be46880
fix: preseed -y to automate CMake install with no prompts
All checks were successful
Build & Upload tux-dock / build (push) Successful in 1m11s
c818c5bfbe
README update
All checks were successful
Build & Upload tux-dock / build (push) Successful in 57s
ba7130db9f
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
markmental/tuxdock!2
No description provided.