Skip to content

OMP Switch v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Sep 19:21
· 3 commits to main since this release

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 Linuxbuild:native is platform-keyed (scripts/build-native.mjs); pnpm dev and pnpm build just work.
  • Linux console shim (bin/omp-switch-cli + scripts/after-pack.mjs) replaces native/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 --json smoke) and linux-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, attribute credential=<id>), resolved for OMP by secret-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_BACKEND forces a backend for testing.
  • Orphan/reference tracking extended to the Linux command forms (collectReferencedCredentialIds); secret:delete still 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 / validate subcommands (pure JSON, TTY-guarded otherwise) for scripts and CI.
  • pnpm build:tui → single-file packages/tui/dist/main.js.

Refactoring under the hood

  • @omp-switch/core and @omp-switch/shared are 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 .tsx files.
  • Fixed: provider-scope path matching was Windows-only (backslash normalization); it now takes the platform separator, so scoped disabledProviders rules 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:packaging is a cross-platform node script now; publish-winget.mjs/publish-choco.mjs stage 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, age installed) 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).