Commit Graph
96 Commits
Author SHA1 Message Date
Bohdan Triapitsyn f29e138556 fix(ci): move PR review off exhausted Z.ai quota 2026-07-30 00:05:52 +03:00
Bohdan Triapitsyn 3bb11f78c5 ci: add OpenCode provider smoke workflow 2026-07-29 23:49:19 +03:00
Bohdan Triapitsyn c0405d3fa4 fix(ci): bound automated PR review runtime 2026-07-29 19:15:47 +03:00
Bohdan Triapitsyn 72fa464910 feat: add Linux Electron release smoke builds
Adds an opt-in input to build Linux Electron artifacts in the smoke workflow
Builds and validates AppImage releases for x64 and arm64
Uploads Linux AppImage and update manifest artifacts
2026-07-28 12:41:50 +03:00
18b58bdb6b feat(desktop): Linux AppImage releases and desktop feature parity (#2398)
* feat(electron): add Linux AppImage releases

* ci: cache Linux OpenCode CLI artifacts

* fix(ci): await Linux release inventory check

* fix(electron): add frameless window controls on Linux desktop

Linux AppImages were created without native WM decorations and without
in-app controls, leaving users unable to close the window with a mouse.

Treat Linux like Windows: frameless BrowserWindow plus the existing
WindowsWindowControls header buttons and app-menu entry. macOS keeps
hidden title bar with traffic lights unchanged.

Shared usesFramelessElectronChrome() helper drives main window, mini
chat, header insets, and titlebar controls.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* Linux desktop feature parity: Open in, background start, tray, multi-window (#2392)

* feat(electron): Linux parity for Open in, background start, and tray

Enable Linux desktop feature parity with macOS/Windows: open projects in
the default file manager and discovered apps, XDG autostart with
--background launches, system tray (including minimize-to-tray), and
tray sync from the renderer.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(electron): allow packaged UI protocol navigations on Linux

Prevent openchamber-ui:// navigations from being handed to
shell.openExternal, which fails on Linux and blocked desktop UI flows.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(ui): surface Linux tray settings in settings search

Include isLinux in settings search runtime context so minimize-to-tray
is discoverable on Linux desktop, matching Windows search behavior.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(electron): stop Linux AppImage Waiting-for-OpenCode flicker

Sync updated boot-outcome init scripts to all BrowserWindows after
desktop_hosts_set, and prefer state.initScript on dom-ready so chooser
reloads inject local/ok instead of a stale not-configured outcome.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(desktop): restore Linux AppImage updater feed and error UX (#2396)

Treat missing latest-linux*.yml (404) as no update available instead of a
hard failure, and stop swallowing updater capability/download errors in the
desktop bridge so About/sidebar can show actionable messages.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* docs: credit Linux AppImage contributors in changelog

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

---------

Co-authored-by: jibanez-staticduo <staticduo@gmail.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2026-07-24 09:59:32 +03:00
Bohdan Triapitsyn f8b41076e6 chore: remove release repair workflows 2026-07-22 19:19:32 +03:00
Bohdan Triapitsyn 0b08641094 fix: finalize repaired releases 2026-07-22 19:14:36 +03:00
Bohdan Triapitsyn 2dcbbebf4e fix: build macOS x64 releases on Intel 2026-07-22 18:59:56 +03:00
Bohdan Triapitsyn 733bd37c37 feat: make AI review verdicts advisory
Removes the separate review check and relies on review labels/comments instead
Marks workflow/tooling failures with review:automation-failed
Updates review guidance to reflect the advisory verdict model
2026-07-22 10:33:25 +03:00
Bohdan Triapitsyn a62731bd6e feat: publish review check on reviewed HEAD
Adds a dedicated `review` check for the exact pull request HEAD
Keeps manual review commands reported separately from the default branch job
Documents the new review check behavior in contributing guidelines
2026-07-22 10:21:11 +03:00
Bohdan Triapitsyn c4ac55a7dd feat: enforce pull request readiness reviews 2026-07-21 23:50:04 +03:00
Bohdan Triapitsyn 5a80638fba release v1.16.1 2026-07-14 01:51:00 +03:00
502c96630e feat(desktop): Linux AppImage polish — window controls, updater UX, docs (#2144)
* feat(electron): add Linux AppImage releases

* ci: cache Linux OpenCode CLI artifacts

* fix(ci): await Linux release inventory check

* fix(electron): add frameless window controls on Linux desktop

Linux AppImages were created without native WM decorations and without
in-app controls, leaving users unable to close the window with a mouse.

Treat Linux like Windows: frameless BrowserWindow plus the existing
WindowsWindowControls header buttons and app-menu entry. macOS keeps
hidden title bar with traffic lights unchanged.

Shared usesFramelessElectronChrome() helper drives main window, mini
chat, header insets, and titlebar controls.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* feat(desktop): add configurable window controls position by OS

Add desktopWindowControlsPosition setting (auto/left/right) with OS-aware
defaults: Linux left, Windows right. Wire frameless chrome controls in
Header, TitlebarLeftControls, and MiniChatLayout, plus a Sessions settings
control for Windows and Linux desktop shells.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(desktop): address Linux AppImage release review findings

Propagate updater capability errors to the UI, treat missing
latest-linux.yml feeds as no-update, stop installed-apps IPC spam on
Linux, document FUSE/AppImage limits, add CHANGELOG entry, migrate
remaining btriapitsyn URLs, and run Electron Linux unit tests on PRs.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

---------

Co-authored-by: jibanez-staticduo <staticduo@gmail.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2026-07-13 08:59:31 +03:00
Bohdan Triapitsyn 44f44da212 ci: add friendly android release asset names 2026-07-07 20:38:05 +03:00
Bohdan Triapitsyn d447952344 ci: allow manual mobile release tag uploads 2026-07-07 20:26:20 +03:00
Bohdan Triapitsyn 7a508f1b14 ci: add mobile platform release toggles 2026-07-07 20:20:47 +03:00
Bohdan Triapitsyn d45cae485c feat: trigger mobile release from the main release workflow
Adds a reusable mobile release workflow call from the release pipeline
Passes version, build number, and release tag into Android artifact publishing
Tightens release workflow shell quoting and version handling
2026-07-07 13:00:11 +03:00
Bohdan Triapitsyn 00346fa6a1 ci: build ios release with macos 26 2026-07-07 12:37:42 +03:00
Bohdan Triapitsyn a92c4a335b ci: match ios extension signing blocks 2026-07-07 12:22:39 +03:00
Bohdan Triapitsyn ef9f8a01e2 ci: patch ios signing per target 2026-07-07 12:18:36 +03:00
Bohdan Triapitsyn 1434034dbf ci: install ios profiles by uuid 2026-07-07 12:13:27 +03:00
Bohdan Triapitsyn 4d13253cfe ci: use ios provisioning profile uuids 2026-07-07 12:07:19 +03:00
Bohdan Triapitsyn 8645802dc2 ci: force ios distribution signing 2026-07-07 12:02:10 +03:00
Bohdan Triapitsyn 29483997ea ci: match ios release signing blocks 2026-07-07 11:57:12 +03:00
Bohdan Triapitsyn ab3ce3354f ci: fix ios release signing patch 2026-07-07 11:51:25 +03:00
Bohdan Triapitsyn 1db8f5cc80 ci: use app store signing for mobile ios 2026-07-07 11:46:46 +03:00
Bohdan Triapitsyn e9ab5618c3 ci: add mobile release workflows 2026-07-07 11:39:17 +03:00
Bohdan Triapitsyn de1b85ac56 feat(voice): first-class voice input and local TTS across web, desktop, and mobile (#2018)
Complete rebuild of voice input on a server-authoritative streaming
architecture, replacing the legacy Web Speech / whole-blob / WASM engines
and the dead voice-agent layer (~4k lines removed).

Speech-to-text (dictation):
- Client streams 16 kHz mono PCM16 chunks over /api/dictation/ws with
  seq/ack ordering; buffered audio is retained and replayed on reconnect
- Server transcribes and streams live partial transcripts back;
  segments auto-commit every ~15s with silence suppression and adaptive
  finalization timeouts
- Local provider (default, zero config): sherpa-onnx models in a forked
  worker process — auto-download with progress, staged extraction with
  verification, corrupt-model auto-recovery, idle shutdown after 5 min
- Model catalog with settings picker (accuracy/speed ratings, sizes,
  download/delete): Parakeet TDT v2 (English) and v3 (25 European
  languages, auto-detected), Whisper base and tiny (multilingual, light)
- OpenAI-compatible provider for any Whisper endpoint
- Composer overlay with live transcript, volume meter, timer, and
  cancel / insert / insert-and-send actions; failed transcriptions keep
  their audio for retry or accepting the partial text as-is
- Configurable keyboard shortcut (default mod+alt+v) toggles dictation;
  Enter confirms and Escape cancels while recording
- Overlay is pixel-aligned with the composer (measured footer height,
  matching paddings/typography/gaps) — no layout shift when toggling

Text-to-speech:
- Local Kokoro provider (English, 11 voices) synthesized in the same
  worker via /api/dictation/tts/speak, managed by the shared model
  pipeline; sentence-pipelined playback keeps time-to-first-audio at
  ~1 sentence regardless of message length, and stop cancels in-flight
  synthesis
- Sanitizer keeps inline-code content (strips backticks only), reads
  interword slashes aloud, and removes only absolute file paths

Settings:
- Voice page unified: a single read-aloud toggle owns all playback
  options (the confusing "Enable Voice Mode" is gone); a new "Enable
  voice input" toggle (default on, persisted to settings.json) hides
  the composer mic entirely when disabled

Mobile and transport:
- iOS/Android microphone permissions added (dictation was previously
  impossible on mobile)
- Fixed Android WebSocket upgrades: the Capacitor WebView origin
  (https://localhost) was missing from the packaged-client allowlist,
  403-ing every WS connection — root cause of the old mobile SSE lock,
  which is now removed for all transports

Security and conventions:
- All HTTP routes sit behind the global /api auth gate; the WS upgrade
  explicitly validates the UI session and origin, with oc_url_token
  narrowly allowlisted and covered by tests; the dictation socket mints
  a fresh URL token before connecting
- Routes register before the generic OpenCode proxy; the client goes
  through runtimeFetch/getRuntimeUrlResolver, and runtime switches
  reset the dictation socket
- VS Code deliberately reports dictation as unavailable (no server
  process in that runtime)

CI: workflow Node bumped 20 -> 22 to match the repo engines and fix
better-sqlite3 installs broken by node-gyp@latest on Node 20.

New dependency: sherpa-onnx-node (prebuilt N-API; macOS/Linux x64+arm64,
Windows x64 — Windows-on-ARM falls back to the OpenAI-compatible provider)
2026-07-04 02:48:07 +03:00
Bohdan Triapitsyn 01e0905e8b fix(ci): run OpenCode CLI version step in bash
The release workflow reads the pinned @opencode-ai/sdk version with bash command-substitution syntax before caching the bundled OpenCode CLI artifact. On Windows jobs GitHub Actions defaults run steps to PowerShell, which treated VERSION= as a command and failed before the cache/build steps ran.

Set shell: bash on the release workflow version-discovery steps so macOS and Windows use the same syntax. The smoke workflow already used bash for the Windows version step, which is why the smoke artifact could pass while the production Windows release job failed.
2026-07-02 19:23:42 +03:00
Bohdan Triapitsyn 33ecd628bd feat(desktop): bundle pinned OpenCode CLI
Bundle the official OpenCode CLI into Electron desktop builds instead of relying on whichever opencode executable happens to be first on PATH. Pin @opencode-ai/sdk to an exact version and use that version as the source of truth for the downloaded CLI artifact.

Add an Electron prepare script that maps the current platform/arch to the official OpenCode release artifact, downloads it from GitHub releases, caches the archive under packages/electron/.cache, stages the binary under resources/opencode-cli, verifies opencode --version, and skips work when the staged binary already matches.

Prefer explicit OpenCode binary overrides first, then the bundled Electron CLI, then PATH/system installs. Keep rejecting the Windows OpenCode desktop app executable as a CLI candidate and add resolver tests for bundled priority, explicit override priority, resourcesPath lookup, and desktop-app rejection.

Suppress OpenCode CLI update prompts when the active CLI source is bundled. The server now reports upgrade-status as unavailable for bundled CLI while still returning the current OpenCode version for About, and rejects direct upgrade attempts with a 409 instead of trying to mutate the bundled binary.

Update desktop release, smoke, and manual macOS DMG workflows to prepare and verify the bundled CLI before packaging, verify the packaged app contains the expected CLI, cache downloads by OS/arch/OpenCode version, and align the Windows smoke runner with production windows-2022.

Document desktop bundling behavior, ignore generated CLI/cache files, add oc-dev helpers, and keep Web/VS Code behavior dependent on installed OpenCode CLI rather than desktop bundled resources.
2026-07-02 17:43:33 +03:00
Tom Rochette 4e0dded547 ci: add merge-conflict label automation workflow (#1942)
Adds label-merge-conflict workflow using eps1lon/actions-label-merge-conflict
to label PRs with merge-conflict:true when they have conflicts. Triggers on
push to main, pull_request_target (opened/synchronize/reopened), and manual
dispatch. Uses the bot app token for label writes and is scoped to the
openchamber/openchamber repo.
2026-07-01 04:42:59 +03:00
Bohdan Triapitsyn efdfbf3ce2 fix: improve PR review UX guidance
Adds behavioral contract checks for user-facing changes
Discourages raw schema-driven UI defaults in reviews
Applies guidance to automated review workflow prompts
2026-06-23 23:16:06 +03:00
Nicolas Charpentier 43f677d56d ci: skip stale workflow on forks (#1663) 2026-06-23 14:32:31 +03:00
Bohdan Triapitsyn 7290c4aa51 ci: pin Windows release runner to 2022 2026-06-15 15:51:37 +03:00
Nicolas Charpentier 20db4cbb27 chore: pin GitHub Actions to SHAs (#1625) 2026-06-13 00:44:12 +03:00
Bohdan Triapitsyn 72d814110a ci: fix bot help command responses 2026-06-11 01:51:04 +03:00
Bohdan Triapitsyn c7a43bb8ec ci: add openchamber bot mention commands 2026-06-10 14:01:10 +03:00
Bohdan Triapitsyn 0153f8787d ci: prevent review bot probe comments 2026-06-10 11:56:53 +03:00
Bohdan Triapitsyn ba786f3b89 ci: fix manual review reaction cleanup 2026-06-10 11:46:26 +03:00
Bohdan Triapitsyn 3dad22433b ci: clarify repeat PR review chronology 2026-06-10 11:40:43 +03:00
Bohdan Triapitsyn 92b9a9f88d ci: harden manual PR review workflow 2026-06-10 11:33:05 +03:00
Bohdan Triapitsyn b494dba8ed ci: use app token for remaining automation 2026-06-10 02:20:05 +03:00
Bohdan Triapitsyn 161d11021c ci: use app token for automation comments 2026-06-09 19:27:54 +03:00
Tom Rochette d4ef1fd8c0 Setup stale issue/pr cleanup workflow (#1546) 2026-06-06 10:58:06 +03:00
Bohdan Triapitsyn a5628b20df release v1.12.2 2026-06-05 15:32:13 +03:00
Tom Rochette ebc2168ceb Create and push branches in reproduce-issue and update reproduction labels (#1541) 2026-06-05 09:57:14 +03:00
Bohdan Triapitsyn 5d7b5c89f2 ci: add automated opencode PR review workflow
Adds safe PR review automation for pull requests and /oc-review comments
Supports fork PR review without checking out or executing untrusted code
Defines a dedicated read-only PR review agent
2026-06-04 03:50:05 +03:00
Tom Rochette 6fd46ded3a Fix concurrency in reproduce-issue (#1514) 2026-06-03 12:30:22 +03:00
Tom Rochette f5581585c8 Bun install in reproduce-issue (#1512)
* Bun install in reproduce-issue

* Update .github/workflows/reproduce-issue.yml
2026-06-03 12:29:38 +03:00
Bohdan Triapitsyn c7bc026b4b refactor: remove legacy Tauri desktop support
Electron updater now uses Electron release metadata only
Removed legacy Tauri package and migration workflow
Replaced Tauri shim usage with the desktop bridge
2026-06-03 02:42:00 +03:00