diff --git a/CHANGELOG.md b/CHANGELOG.md index 6891d045..1a1c85d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,26 @@ All notable changes to this project will be documented in this file. ## [Unreleased] -- Remote access: a new private relay lets you reach your instance from anywhere — no open ports and no third-party tunnel. Enable it in Settings → Remote Instances, and pairing links (QR or `openchamber connect-url`) can carry the relay as a fallback so a device off your network connects over an end-to-end-encrypted tunnel. -- Pairing: device pairing links are now single-use, expiring codes redeemed on connect instead of embedding a long-lived token in the QR. +- **Remote access:** a new private relay lets you reach your instance from anywhere — no open ports and no third-party tunnel, over an end-to-end-encrypted tunnel. It turns on by itself when you pair a device over it and turns off once no paired device uses it (thanks to @yulia-ivashko). +- **Mobile:** the native iOS and Android apps open for testing — join the [iOS public beta on TestFlight](https://testflight.apple.com/join/5ek6GU1E) or grab the Android APK from the [latest release](https://github.com/openchamber/openchamber/releases/latest). Connect by scanning a QR code from "Add a device" on your server; the app then moves between your local network and the private relay on its own — leaving home carries the open session onto the relay and coming back returns it to Wi-Fi, no re-pairing. Saved instances show a live Connected status with the active transport, iPad gets a split layout with a persistent sessions sidebar and a resizable Changes/Files sidebar, and the app checks for OpenChamber updates itself (Android shows a download toast). +- **Pairing:** a redesigned "Add a device" dialog asks where you'll use the device — Anywhere (relay with local network preferred at home), Home network only, or This computer only — then shows a large scannable QR code with a copyable link, and closes itself once the device connects. Links are single-use expiring codes redeemed on connect instead of embedding a long-lived token in the QR (thanks to @yulia-ivashko). +- Devices: the "Connect to this server" list now shows each paired device with a live status — Connected · Local network or Relay — and a platform badge (iOS, Android, macOS, Windows, Linux). Re-pairing or re-entering the password on the same device updates its existing entry instead of adding a duplicate. +- Devices: a paired phone or desktop names the connection after the server's hostname; the name typed when creating the link labels the device in the server's list. +- Desktop: saved servers keep every transport their pairing link carried — the app connects directly on your network and falls back to the relay away from it, including when opening a server in a new window and when restoring the connection after a restart. +- Desktop: the header dropdown (instance / usage / MCP) was restyled with cards — usage grouped per provider, hosts showing a colored status line with ping and the active host highlighted, and MCP servers in one card. Host statuses persist between openings instead of flashing "Unknown", and switching to an already-checked host is immediate. +- Desktop: the servers list in Settings shows live per-server reachability, and importing a pairing link is the primary way to add a server. +- Desktop: Windows builds can launch at login and minimize to the system tray (thanks to @achcyano). +- Projects: each project can now set its own default model (thanks to @makeittech). - Diff/Chat: added a Last turn mode to the Diff view, and latest-turn changed-file chips in chat now open that snapshot while older turn chips stay read-only. +- Chat: Mermaid diagrams now have zoom controls (thanks to @c-w-xiaohei). +- Chat: code blocks can show line numbers that stay aligned while streaming, and a new Wrap Code Block Lines setting (Settings → Chat) controls long-line wrapping. +- Chat: with Sticky User Header enabled, user messages no longer float over earlier messages in long conversations. - Chat: if sending a message times out or loses the connection after OpenCode accepted it, the app now keeps the sent message instead of rolling it back as failed. -- Mobile: the native app can now check for OpenChamber app updates; Android shows a persistent download toast when an update is available. - Mobile: selecting local files from the composer now attaches the picked files even if the composer switches between compact and expanded layouts while the file picker is open. - Browser: links clicked inside an embedded browser tab now keep the tab on the navigated page instead of remounting the frame. - Context Panel: raw message rows now keep token and time columns aligned without showing shortened message IDs. - UI: closing the right sidebar after resizing no longer leaves stale width constraints behind. +- Server: remote clients with non-ASCII project paths connect again (thanks to @FanFan4204). ## [1.14.1] - 2026-07-07 diff --git a/bun.lock b/bun.lock index 1e4d7467..543ea967 100644 --- a/bun.lock +++ b/bun.lock @@ -30,7 +30,7 @@ "@heroui/theme": "^2.4.23", "@lezer/highlight": "^1.2.3", "@octokit/rest": "^22.0.1", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", @@ -97,7 +97,7 @@ }, "packages/electron": { "name": "@openchamber/electron", - "version": "1.13.9", + "version": "1.14.1", "dependencies": { "@openchamber/web": "workspace:*", "electron-context-menu": "^4.1.2", @@ -133,7 +133,7 @@ }, "packages/ui": { "name": "@openchamber/ui", - "version": "1.13.9", + "version": "1.14.1", "dependencies": { "@aparajita/capacitor-secure-storage": "^8.0.0", "@base-ui/react": "^1.4.0", @@ -167,7 +167,7 @@ "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@lezer/highlight": "^1.2.3", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@pierre/diffs": "1.3.0-beta.6", "@replit/codemirror-vim": "^6.3.0", "@simplewebauthn/browser": "13.3.0", @@ -237,10 +237,10 @@ }, "packages/vscode": { "name": "openchamber", - "version": "1.13.9", + "version": "1.14.1", "dependencies": { "@openchamber/ui": "workspace:*", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "adm-zip": "^0.5.16", "jsonc-parser": "^3.3.1", "react": "^19.1.1", @@ -260,14 +260,14 @@ }, "packages/web": { "name": "@openchamber/web", - "version": "1.13.9", + "version": "1.14.1", "bin": { "openchamber": "./bin/cli.js", }, "dependencies": { "@clack/prompts": "^1.1.0", "@octokit/rest": "^22.0.1", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@simplewebauthn/server": "13.3.1", "adm-zip": "^0.5.16", "better-sqlite3": "^12.10.0", @@ -995,7 +995,7 @@ "@openchamber/web": ["@openchamber/web@workspace:packages/web"], - "@opencode-ai/sdk": ["@opencode-ai/sdk@1.17.12", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-N8kazWO0ZLCHWYFuZQt1UJM+bWxY6g1auSG6SvD1+K3+W+nw2qIhDAUGNCD0KVW3bY2LCwvfWvpG2ZbVGCHC0Q=="], + "@opencode-ai/sdk": ["@opencode-ai/sdk@1.17.18", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-c/C9PhY8PrbcxDY+JIYtOZsrmMD0KzoVvxq+RGUrZ6LQp57SuVBbT4lfwA2G8Se5RNC1N5JtYjiuaXeECnF2SQ=="], "@paralleldrive/cuid2": ["@paralleldrive/cuid2@2.3.1", "", { "dependencies": { "@noble/hashes": "^1.1.5" } }, "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw=="], diff --git a/package.json b/package.json index fd15a89d..eb63abf4 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "@heroui/theme": "^2.4.23", "@lezer/highlight": "^1.2.3", "@octokit/rest": "^22.0.1", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", diff --git a/packages/ui/package.json b/packages/ui/package.json index d5c8d7c0..f1158bb6 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -43,7 +43,7 @@ "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@lezer/highlight": "^1.2.3", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@pierre/diffs": "1.3.0-beta.6", "@replit/codemirror-vim": "^6.3.0", "@simplewebauthn/browser": "13.3.0", diff --git a/packages/vscode/CHANGELOG.md b/packages/vscode/CHANGELOG.md index 2eba0b48..e1647e69 100644 --- a/packages/vscode/CHANGELOG.md +++ b/packages/vscode/CHANGELOG.md @@ -1,5 +1,8 @@ ## [Unreleased] +- Chat: Mermaid diagrams now have zoom controls (thanks to @c-w-xiaohei). +- Chat: code blocks can show line numbers that stay aligned while streaming, and a new Wrap Code Block Lines setting controls long-line wrapping. +- Chat: with Sticky User Header enabled, user messages no longer float over earlier messages in long conversations. - Chat: if sending a message times out or loses the connection after OpenCode accepted it, the extension now keeps the sent message instead of rolling it back as failed. ## [1.14.1] - 2026-07-07 diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 51b24252..fb7f3d52 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -244,7 +244,7 @@ }, "dependencies": { "@openchamber/ui": "workspace:*", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "adm-zip": "^0.5.16", "jsonc-parser": "^3.3.1", "react": "^19.1.1", diff --git a/packages/web/package.json b/packages/web/package.json index 8eb277e2..6a72ca92 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@clack/prompts": "^1.1.0", "@octokit/rest": "^22.0.1", - "@opencode-ai/sdk": "1.17.12", + "@opencode-ai/sdk": "1.17.18", "@simplewebauthn/server": "13.3.1", "adm-zip": "^0.5.16", "better-sqlite3": "^12.10.0",