Internal
Public Access
Both docs still described VNC as unimplemented and required usernames up front for SSH/RDP -- neither has been true for a while. Brings them in line with the actual current feature set: VNC's encodings/clipboard/ cursor sync/display modes and honest Apple Screen Sharing auth status, blank-username connect-time prompting across all three protocols, profile Import/Export and mRemoteNG import, and the new prompt visibility behavior (issue #22). docs/USER_GUIDE.md also drives the in-app Help -> User Guide dialog and the PDF shipped with releases. Bump version to v2026.9.16.7. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
236 lines
7.2 KiB
Markdown
236 lines
7.2 KiB
Markdown
# OrbitHub
|
|
|
|
OrbitHub is a cross-platform native desktop app for managing and launching remote sessions from one place.
|
|
|
|
It is implemented in C++17 with Qt6 Widgets and built with CMake.
|
|
|
|
Supported target platforms:
|
|
- Windows
|
|
- Linux
|
|
- macOS
|
|
|
|
## Current Status
|
|
|
|
OrbitHub is in active development.
|
|
|
|
- Milestones completed: M0-M9
|
|
- Current milestone: Milestone 10 (v1.0 Stabilization)
|
|
- Latest published release: `v2026.9.16`; a `v2026.9.16.6` release is
|
|
drafted with several post-`.16` fixes and is pending a macOS installer
|
|
before publishing
|
|
- VNC (M6) is fully built out: Raw/CopyRect/Hextile/ZRLE/Tight encodings,
|
|
bidirectional clipboard sync, remote cursor shape sync, and both
|
|
scale-to-fit and actual-size display modes. Standard VNC Authentication
|
|
and no-auth servers (TigerVNC, x11vnc, TightVNC, etc.) work end to end.
|
|
macOS's built-in Screen Sharing uses two undocumented, reverse-engineered
|
|
authentication schemes that are implemented but not yet confirmed working
|
|
against a real macOS server — see
|
|
[docs/PROGRESS.md](docs/PROGRESS.md) for details.
|
|
|
|
Progress and milestone details:
|
|
- [docs/PROGRESS.md](docs/PROGRESS.md)
|
|
|
|
Latest published release (installers for Windows, Linux, and macOS):
|
|
- [v2026.9.16](https://git.darksingularity.org/DarkSingularity/orbithub/releases/tag/v2026.9.16)
|
|
|
|
User Guide:
|
|
- [docs/USER_GUIDE.md](docs/USER_GUIDE.md) (also available as a PDF attached to each release, and in-app via `Help -> User Guide`)
|
|
|
|
## Screenshots
|
|
|
|

|
|
|
|
Profiles organized into folders, with protocol, host, and tags shown at a glance. (Sample data shown; not real hosts.)
|
|
|
|

|
|
|
|
An interactive SSH terminal session in a tab, with the event log below.
|
|
|
|

|
|
|
|
An embedded RDP session in a tab.
|
|
|
|
## Implemented Features
|
|
|
|
### Profile Management
|
|
|
|
- SQLite-backed profile storage
|
|
- Create, edit, delete profiles
|
|
- Protocol-aware profile validation (SSH/RDP/VNC)
|
|
- Username is optional on any protocol's profile — if left blank, OrbitHub
|
|
asks for one inline at connect time instead of requiring it up front
|
|
- Profile search and sorting
|
|
- Tags support
|
|
- Folder/subfolder support
|
|
- `List` and `Folders` profile views
|
|
- Right-click profile tree actions:
|
|
- New Folder
|
|
- New Connection
|
|
- Drag-and-drop profile moves between folders with persistence
|
|
- Import/Export of the whole profile list as JSON, and one-way import from
|
|
mRemoteNG connection XML files (passwords are never imported)
|
|
|
|
### Session Experience
|
|
|
|
- Multi-tab session window
|
|
- Auto-connect on tab open
|
|
- Disconnect on tab close
|
|
- Session state indicators on tabs, colored distinctly per state
|
|
(connecting/connected/disconnected/failed)
|
|
- A tab awaiting a username/password prompt is clearly marked — its title
|
|
gets a "(Needs input)" suffix and its tab color changes — even when it
|
|
isn't the tab currently in view, and the inline prompt itself uses a
|
|
solid highlighted banner rather than blending into the rest of the tab
|
|
- Timestamped event log with filtering and export
|
|
|
|
### SSH
|
|
|
|
- Embedded interactive terminal (in-app typing)
|
|
- Theme support (`Dark`, `Light`, `Solarized Dark`)
|
|
- Password and private-key auth flows
|
|
- Known-hosts policy support
|
|
|
|
### RDP
|
|
|
|
- Embedded in-window RDP rendering surface (no external launcher)
|
|
- Keyboard/mouse input forwarding
|
|
- Resize handling and resolution renegotiation
|
|
- Domain-aware authentication support
|
|
- RDP security/performance profile options
|
|
|
|
### VNC
|
|
|
|
- Embedded in-window VNC rendering surface (no external launcher)
|
|
- Raw, CopyRect, Hextile, ZRLE, and Tight rectangle encodings
|
|
- Bidirectional clipboard sync
|
|
- Remote cursor shape sync
|
|
- Scale-to-fit and actual-size (scrollable) display modes, toggled
|
|
per-tab and remembered across sessions
|
|
- Standard VNC Authentication and no-auth servers (TigerVNC, x11vnc,
|
|
TightVNC, etc.)
|
|
- No dynamic remote-desktop resizing (VNC has no real equivalent of RDP's
|
|
MS-RDPEDISP)
|
|
- macOS Screen Sharing's two undocumented Apple auth schemes are
|
|
implemented but not yet confirmed working against a real macOS server —
|
|
see [docs/PROGRESS.md](docs/PROGRESS.md)
|
|
|
|
### App UX
|
|
|
|
- App icon and themed About dialog
|
|
- In-app User Guide (`Help -> User Guide`), matching
|
|
[docs/USER_GUIDE.md](docs/USER_GUIDE.md)
|
|
- `File` menu:
|
|
- New Profile
|
|
- New Folder
|
|
- Import Profiles...
|
|
- Export Profiles...
|
|
- Import from mRemoteNG...
|
|
- Quit
|
|
- `Help` menu:
|
|
- User Guide
|
|
- About OrbitHub
|
|
|
|
## Build and Run
|
|
|
|
Detailed platform instructions:
|
|
- [docs/BUILDING.md](docs/BUILDING.md)
|
|
|
|
Quick start (Linux/macOS with Ninja):
|
|
|
|
```bash
|
|
cmake -S . -B build -G Ninja
|
|
cmake --build build
|
|
./build/orbithub
|
|
```
|
|
|
|
## Packaging
|
|
|
|
Detailed packaging instructions for all platforms:
|
|
- [docs/BUILDING.md](docs/BUILDING.md)
|
|
|
|
Linux (`.deb`):
|
|
|
|
```bash
|
|
./packaging/linux/build-deb.sh
|
|
```
|
|
|
|
Linux (Flatpak):
|
|
|
|
```bash
|
|
./packaging/flatpak/build-flatpak.sh
|
|
```
|
|
|
|
Windows (Inno Setup installer):
|
|
|
|
```powershell
|
|
.\packaging\windows\build-installer.ps1
|
|
```
|
|
|
|
macOS (`.dmg`):
|
|
|
|
```bash
|
|
./packaging/macos/build-dmg.sh
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
Core dependencies:
|
|
- Qt 6 (Widgets, SQL)
|
|
- CMake 3.21+
|
|
- C++17 toolchain
|
|
- OpenSSL (RDP/VNC transport security and Apple VNC auth)
|
|
- zlib (VNC's ZRLE and Tight encodings)
|
|
- libjpeg-turbo (VNC's Tight encoding's JPEG sub-mode)
|
|
|
|
Protocol/runtime dependencies:
|
|
- SSH client (`ssh`) available on `PATH` for SSH sessions
|
|
|
|
Bundled/vendored third-party components:
|
|
- KodoTerm
|
|
- libvterm
|
|
- FreeRDP/WinPR
|
|
|
|
## Licensing
|
|
|
|
Project license:
|
|
- MIT (see [LICENSE](LICENSE))
|
|
|
|
License links:
|
|
- MIT License: <https://opensource.org/licenses/MIT>
|
|
- GNU LGPLv3: <https://www.gnu.org/licenses/lgpl-3.0.html>
|
|
- Apache License 2.0: <https://www.apache.org/licenses/LICENSE-2.0>
|
|
|
|
Important third-party license notes:
|
|
- Qt6 is dynamically linked in this project build setup.
|
|
- Qt6 is used under LGPLv3 terms in this project build setup.
|
|
- KodoTerm and libvterm are MIT-licensed.
|
|
- FreeRDP/WinPR is Apache-2.0 licensed.
|
|
|
|
Repository license files:
|
|
- Project: [LICENSE](LICENSE)
|
|
- KodoTerm: [third_party/KodoTerm/LICENSE](third_party/KodoTerm/LICENSE)
|
|
- FreeRDP: [third_party/FreeRDP/LICENSE](third_party/FreeRDP/LICENSE)
|
|
|
|
See in-app `Help -> About OrbitHub` for license links and third-party inventory.
|
|
|
|
## Repository Structure
|
|
|
|
- `src/` - application source code
|
|
- `docs/` - build guide, spec, and progress tracking
|
|
- `packaging/` - per-platform installer/package build scripts
|
|
- `tests/` - CTest unit/integration tests and fixtures
|
|
- `tools/` - standalone build-time tools (e.g. the User Guide PDF generator)
|
|
- `third_party/` - vendored third-party dependencies
|
|
- `build/` - local build output (generated)
|
|
- `dist/` - packaged installer/deb/flatpak/dmg output (generated)
|
|
|
|
## Notes
|
|
|
|
- Passwords are requested at connect time and are not stored in the profile database.
|
|
- A profile's username is optional for every protocol; if left blank,
|
|
OrbitHub asks for one inline the first time you connect that profile.
|
|
- VNC support covers standard VNC Authentication and no-auth servers (e.g. TigerVNC, x11vnc,
|
|
TightVNC). macOS's built-in Screen Sharing server uses two undocumented, reverse-engineered
|
|
authentication schemes that are implemented but not yet confirmed working against a real
|
|
macOS server (see docs/PROGRESS.md, Milestone 6).
|