167 lines
7.0 KiB
Markdown
167 lines
7.0 KiB
Markdown
# 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
|