Files
orbithub/README.md
T
ksmithandClaude Sonnet 5 34c16cbfa8 Update README and in-app User Guide for VNC, Import/Export, and connect-time prompting
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>
2026-09-16 11:20:18 -06:00

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
![Profile list with folders](docs/images/screenshot-profiles.png)
Profiles organized into folders, with protocol, host, and tags shown at a glance. (Sample data shown; not real hosts.)
![Active SSH terminal session](docs/images/screenshot-ssh-session.png)
An interactive SSH terminal session in a tab, with the event log below.
![Active RDP session](docs/images/screenshot-rdp-session.png)
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).