OMP Switch v0.6.0
Linux support lands. The desktop app, a new terminal UI, and the credential vault now run on Linux alongside Windows — plus the maintenance automation that keeps the project honest (schema watch, install regression, submission tooling). Windows behavior is unchanged: every platform difference is keyed on process.platform and the DPAPI path is byte-identical.
Downloads
| Artifact | Platform | Notes |
|---|---|---|
| OMP-Switch-Setup-0.6.0.exe | Windows x64 | NSIS installer, per-user |
| OMP-Switch-0.6.0-win.zip | Windows x64 | Portable build |
| OMP-Switch-0.6.0-linux.AppImage | Linux x64 | Portable AppImage |
| OMP-Switch-0.6.0-linux.deb | Linux x64 (amd64) | Debian/Ubuntu package, /opt/OMP Switch |
| SHA256SUMS.txt | - | SHA256 verification for all four artifacts |
Linux desktop app
- No .NET/MSVC needed on Linux —
build:nativeis platform-keyed (scripts/build-native.mjs);pnpm devandpnpm buildjust work. - Linux console shim (
bin/omp-switch-cli+scripts/after-pack.mjs) replacesnative/cli-proxy;omp-switch-cli --json …works from a terminal. - Interactive OAuth login opens a terminal emulator (
$OMP_SWITCH_TERMINAL, xdg-terminal-exec, gnome-terminal, konsole, xfce4-terminal, xterm, alacritty, kitty, foot) instead of erroring. - Window chrome: solid surfaces on Linux (Mica stays Windows-only); the topbar no longer reserves Windows overlay-button space.
- CI:
verify-linux(typecheck/test/build + headless--jsonsmoke) andlinux-package(main-branch AppImage/deb + shim smoke) join the Windows verify job; releases attest Linux artifacts and merge SHA256SUMS across platforms.
Linux credential vault
- libsecret primary: each API key is a direct keyring entry (service
omp-switch, attributecredential=<id>), resolved for OMP bysecret-tool lookup …— no bridge binary, millisecond cold start against OMP's 10s budget. Command grammar frozen against real OMP 18.x on Linux. - age fallback when no Secret Service answers: X25519 keyfile identity (0600) + per-credential ciphertexts (0700), resolved by
age -d. Honestly weaker (identity sits beside the ciphertext — protects against casual copy, not a user-level attacker); only engages headless,OMP_SWITCH_SECRET_BACKENDforces a backend for testing. - Orphan/reference tracking extended to the Linux command forms (
collectReferencedCredentialIds);secret:deletestill refuses while a config references the credential. - Windows vault (
secrets.v1.json+ C# bridge) untouched.
Terminal UI (omp-switch-tui)
- New Ink/React workspace package: providers, roles (resolution chain + cycle detection), snapshots, diagnostics, and the two-step save (line diff → confirm) over
previewPatch/commitPatch— the same contracts the GUI uses. - Non-interactive
--help/list/validatesubcommands (pure JSON, TTY-guarded otherwise) for scripts and CI. pnpm build:tui→ single-filepackages/tui/dist/main.js.
Refactoring under the hood
@omp-switch/coreand@omp-switch/sharedare real pnpm workspace packages now (the path alias was declared in five configs); the shared package holds the pure diff/form/role/selection logic previously locked in renderer.tsxfiles.- Fixed: provider-scope path matching was Windows-only (backslash normalization); it now takes the platform separator, so scoped
disabledProvidersrules behave on POSIX. - The mock API's save delegates to the adapter's own
applyConfigPatch— demo and real saves can no longer drift.
Maintenance automation
- OMP schema watch (weekly): opens an issue when upstream OMP ships a major we cannot write; manual checklist in
docs/omp-schema-tracking.md. pnpm render:packagingis a cross-platform node script now;publish-winget.mjs/publish-choco.mjsstage submissions (pushes stay human-gated).- Windows install regression (nightly + tags): install previous release → silent upgrade → exercise the installed CLI → assert a clean silent uninstall.
Known limitations
- The Linux AppImage icon is an upscaled 256px placeholder — a proper 512px+ render is wanted.
- Real-keyring end-to-end verification (
libsecret-tools,ageinstalled) is pending on a desktop machine; unit and contract tests cover the command grammar. - winget/Chocolatey submissions remain pending upstream review (manifests render for 0.6.0 once released).