Files
orbithub/docs/PROGRESS.md

7.0 KiB

OrbitHub Progress

Milestone 0 - Restart in C++/Qt Widgets

Status: Completed

Delivered:

  • Fresh C++17/Qt6 Widgets scaffold with CMake
  • ProfilesWindow (QMainWindow) with search, profile list, and New/Edit/Delete controls
  • Double-click in Profiles opens a SessionWindow
  • SessionWindow (QMainWindow) with QTabWidget
  • Placeholder tab content showing OrbitHub Native Surface
  • main.cpp wiring for application startup
  • Cross-platform build command guide in docs/BUILDING.md

Git:

  • Tag: v0-m0-done

Milestone 1 - Storage and CRUD

Status: Completed

Delivered:

  • SQLite integration via Qt SQL (QSQLITE)
  • Persistent profile database bootstrap (profiles table)
  • Profiles CRUD (New / Edit / Delete) in ProfilesWindow
  • Search-backed profile listing from storage
  • Double-click connect opens SessionWindow tab with selected profile name

Git:

  • Tag: v0-m1-done

Milestone 2 - Profile Details and Connect Lifecycle

Status: Completed

Delivered:

  • SQLite schema migration for profile details (host, port, username, protocol, auth_mode)
  • New ProfileDialog form for New/Edit profile workflows
  • Profiles list now shows endpoint metadata and supports search by name or host
  • Connect now loads complete profile details into SessionWindow
  • Session tab lifecycle status updates (Connecting, Connected, Failed) via non-blocking timer flow

Git:

  • Tag: v0-m2-done

Milestone 3 - Real SSH Backend and Session Controls

Status: Completed

Delivered:

  • Backend architecture introduced (SessionBackend + protocol-specific implementations)
  • Worker-thread backend execution for connection lifecycle operations
  • Real SSH process backend (ssh) with connect/disconnect/reconnect
  • Unsupported protocol backend with explicit not-implemented messaging (RDP/VNC)
  • Session tab controls: Connect, Disconnect, Reconnect, Copy Error
  • Connect-time credential flow (password prompt / private-key path selection)
  • Session event log pane with timestamps and user-friendly error mapping
  • SQLite profile schema migration for private_key_path and known_hosts_policy

Git:

  • Tag: v0-m3-done

Milestone 4 - Interactive SSH Session UX

Status: Completed

Delivered:

  • Embedded interactive SSH terminal using KodoTerm + vendored libvterm
  • Native in-terminal typing for SSH sessions (no separate input box)
  • ANSI/color rendering with selectable terminal themes (Dark, Light, Solarized Dark)
  • Cross-platform SSH auth path improvements (ssh-askpass handling and host-key policy wiring)
  • Session UX simplification: auto-connect on tab open, disconnect on tab close
  • Tab-state indicators via tab color and state suffix (Connecting, Connected, Disconnected, Failed)
  • Right-click tab menu for Disconnect, Reconnect, Theme, and Clear
  • Collapsible events panel retained as primary diagnostics surface; inline detail/status banners removed
  • Terminal behavior polish: better fixed-width font selection, cursor visibility, backspace handling, and terminal-size negotiation stability

Git:

  • Tag: v0-m4-done

Milestone 5 - RDP Fully Working

Status: Completed

Delivered:

  • Added RdpSessionBackend and wired protocol selection so RDP no longer routes to unsupported backend
  • Pivoted RDP design to embedded-only integration (no external RDP process launches)
  • Implemented embedded FreeRDP client thread with connect/disconnect lifecycle and event-loop handling
  • Added in-window RdpDisplayWidget rendering surface with frame updates from FreeRDP GDI
  • Wired direct keyboard/mouse input from the embedded RDP surface to the backend
  • Added RDP connect-time password prompt flow and settings wiring (host/port/user/password, desktop size)
  • Added explicit profile Domain support for RDP auth (with DOMAIN\username fallback parsing)
  • Updated session tab/context-menu behavior so terminal-only actions are hidden on RDP tabs
  • Implemented dynamic in-session RDP resolution renegotiation from viewport resize events
  • Enabled minimal FreeRDP client-channel build (drdynvc + disp) and channel loading for runtime resize support
  • Added RDP profile-level security mode and performance profile options, wired into FreeRDP connection settings
  • Hardened RDP lifecycle handling for disconnect/reconnect/abort flows to avoid false failure states on user-initiated stops
  • Expanded RDP error/disconnect diagnostics with richer FreeRDP code mapping and raw disconnect detail events
  • Pulled FreeRDP source for integration planning and API review

Git:

  • Tag: v0-m5-done

Milestone 6 - VNC Fully Working

Status: Deferred (temporarily postponed)

Planned Scope:

  • Replace current unsupported VNC path with complete VNC implementation
  • Deliver usable in-app VNC session behavior aligned to SSH/RDP UX
  • Implement VNC connect/disconnect/reconnect lifecycle handling
  • Extend profile/session connect options needed by VNC
  • Standardize event log and error mapping behavior with SSH/RDP

Milestone 7 - Cross-Platform Protocol Hardening

Status: Planned

Planned Scope:

  • Validate SSH/RDP/VNC workflows on Windows, Linux, and macOS
  • Fix platform-specific runtime/process/auth issues
  • Add repeatable protocol validation checklist/scripts

Milestone 8 - Profile and Session UX Completion

Status: Completed

Delivered:

  • Added profile tags field to storage + schema migration and profile editor UX
  • Added profile folder_path field + nested folder/subfolder profile view mode
  • Added profile tree context actions (New Folder, New Connection) and drag-to-folder profile moves with persistence
  • Added Help -> About OrbitHub dialog with third-party library inventory and MIT/Apache-2.0 license links
  • Extended profile search to include tags/folder path and added profile sort controls (Name, Protocol, Host)
  • Persisted profile list UX preferences (search text, view mode, protocol/tag filters, sort order) across app restarts
  • Added protocol-aware profile validation/normalization for SSH/RDP/VNC (repository + dialog)
  • Improved profile form protocol UX hints and SSH private-key path validation
  • Added session events filtering and tab-context actions (Show/Hide Events, Copy Events, Clear Events)
  • Added session diagnostics QoL: severity quick-filter (All/Warnings/Errors) and Export Events action
  • Persisted session UI defaults (terminal theme, events panel visibility) for new tabs/windows
  • Added profile quick filters (Protocol, Tag) with persistence to speed profile browsing

Validation:

  • Local build verification passed (cmake --build build)
  • No automated tests are currently configured in CTest

Git:

  • Tag: Pending user approval (v0-m8-done)

Milestone 9 - Packaging and Distribution

Status: Planned

Planned Scope:

  • Build distributable artifacts for Windows/Linux/macOS
  • Document runtime dependencies and install prerequisites
  • Add reproducible release packaging steps/scripts

Milestone 10 - v1.0 Stabilization

Status: Planned

Planned Scope:

  • Run final regression and acceptance testing across all protocols
  • Resolve release-blocking defects
  • Finalize docs and publish v1.0 release notes/checklist