ksmithandClaude Sonnet 5 3fab2f9de3 Wire up CTest and add unit test coverage for ProfileRepository
Adds a Qt6::Test-based unit test target (tests/test_profile_repository.cpp,
21 cases), gated behind an ORBITHUB_BUILD_TESTS option that no-ops
gracefully if Qt6::Test isn't available, so it can't break app-only
builds. Covers profile CRUD, validation rules, search/sort, tag
normalization, and folder handling, each against an isolated temporary
SQLite file (new ProfileRepository(databasePathOverride) constructor
overload added for exactly this).

Caught and fixed a real bug along the way: normalizedTags()'s result was
bound directly without the nonNullTrimmed() null-guard every other field
already uses, so creating a profile with no tags at all hit the `tags
NOT NULL` constraint and silently failed -- including via the Import
Profiles feature for any export where a profile has no tags key.

Partial progress on #1 (RdpSessionBackend/SshSessionBackend state-machine
coverage still open -- much larger lift, needs a testability pass on
those backends first).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 06:39:20 -06:00
2026-09-15 06:22:53 -06:00
2026-09-15 06:22:53 -06:00

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-M5, and M7-M9
  • Current milestone: Milestone 10 (v1.0 Stabilization)
  • Deferred milestone: Milestone 6 (VNC Fully Working)
  • Latest checkpoint tag: v2026.9.15
  • VNC implementation milestone (M6) is currently deferred

Progress and milestone details:

Latest release (installers for Windows, Linux, and macOS):

User Guide:

  • 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

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

Active SSH terminal session

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

Active RDP session

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)
  • 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

Session Experience

  • Multi-tab session window
  • Auto-connect on tab open
  • Disconnect on tab close
  • Session state indicators on tabs
  • 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

App UX

  • App icon and themed About dialog
  • File menu:
    • New Profile
    • New Folder
    • Quit
  • Help menu:
    • About OrbitHub

Build and Run

Detailed platform instructions:

Quick start (Linux/macOS with Ninja):

cmake -S . -B build -G Ninja
cmake --build build
./build/orbithub

Packaging

Detailed packaging instructions for all platforms:

Linux (.deb):

./packaging/linux/build-deb.sh

Linux (Flatpak):

./packaging/flatpak/build-flatpak.sh

Windows (Inno Setup installer):

.\packaging\windows\build-installer.ps1

macOS (.dmg):

./packaging/macos/build-dmg.sh

Dependencies

Core dependencies:

  • Qt 6 (Widgets, SQL)
  • CMake 3.21+
  • C++17 toolchain

Protocol/runtime dependencies:

  • SSH client (ssh) available on PATH for SSH sessions

Bundled/vendored third-party components:

  • KodoTerm
  • libvterm
  • FreeRDP/WinPR

Licensing

Project license:

License links:

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:

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
  • third_party/ - vendored third-party dependencies
  • build/ - local build output (generated)

Notes

  • Passwords are requested at connect time and are not stored in the profile database.
  • This repository currently prioritizes integrated SSH and RDP workflows while VNC implementation is pending.
S
Description
No description provided
Readme MIT
12 MiB
2026-09-15 06:29:51 -06:00
Languages
C++ 93.6%
CMake 3.4%
Shell 2.1%
Inno Setup 0.5%
PowerShell 0.4%