release v1.5.2

This commit is contained in:
Bohdan Triapitsyn
2026-01-17 22:44:09 +02:00
parent bb9c181b72
commit 8879573def
12 changed files with 54 additions and 33 deletions
+13
View File
@@ -4,11 +4,24 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
## [1.5.2] - 2026-01-17
- Sessions: added branch picker dialog to start new worktree sessions from local branches (thanks to @nilskroe).
- Sessions: added project header worktree button, active-session loader, and right-click context menu in the sessions sidebar (thanks to @nilskroe).
- Sessions: improved worktree delete dialog with linked session details, dirty-change warnings, and optional remote branch removal.
- Git: added gitmoji picker in commit message composer with cached emoji list (thanks to @TaylorBeeston).
- Chat: optimized message loading for opening sessions.
- UI: added one-click diagnostics copy in the About dialog.
- VSCode: tuned layout breakpoint and server readiness timeout for steadier startup.
- Reliability: improved OpenCode process cleanup to reduce orphaned servers.
## [1.5.1] - 2026-01-16
- Desktop: fixed orphaned OpenCode processes not being cleaned up on restart or exit.
- Opencode: fixed issue with reloading configuration was killing the app
## [1.5.0] - 2026-01-16
- UI: added a new Files tab to browse workspace files directly from the interface.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "openchamber-monorepo",
"version": "1.5.1",
"version": "1.5.2",
"description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes",
"private": true,
"type": "module",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@openchamber/desktop",
"version": "1.5.1",
"version": "1.5.2",
"private": true,
"type": "module",
"desktopPrerequisites": [
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "openchamber-desktop"
version = "1.5.1"
version = "1.5.2"
edition = "2021"
publish = false
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
"productName": "OpenChamber",
"version": "1.5.1",
"version": "1.5.2",
"identifier": "ai.opencode.openchamber",
"build": {
"beforeDevCommand": "bun run dev",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@openchamber/ui",
"version": "1.5.1",
"version": "1.5.2",
"private": true,
"type": "module",
"main": "src/main.tsx",
@@ -5,7 +5,7 @@ import { ModelSelector } from '@/components/sections/agents/ModelSelector';
import { AgentSelector } from '@/components/sections/commands/AgentSelector';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { updateDesktopSettings } from '@/lib/persistence';
import { isDesktopRuntime, getDesktopSettings } from '@/lib/desktop';
import { getDesktopSettings, isDesktopRuntime, isVSCodeRuntime } from '@/lib/desktop';
import { useConfigStore } from '@/stores/useConfigStore';
import { getRegisteredRuntimeAPIs } from '@/contexts/runtimeAPIRegistry';
import { getModifierLabel } from '@/lib/utils';
@@ -58,6 +58,8 @@ export const DefaultsSettings: React.FC = () => {
return getDisplayModel(defaultModel, providers);
}, [defaultModel, providers]);
const isVSCode = React.useMemo(() => isVSCodeRuntime(), []);
// Load current settings
React.useEffect(() => {
const loadSettings = async () => {
@@ -312,24 +314,26 @@ export const DefaultsSettings: React.FC = () => {
</div>
)}
<div className="pt-2">
<label className="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
className="h-3.5 w-3.5 accent-primary"
checked={settingsAutoCreateWorktree}
onChange={handleAutoWorktreeChange}
/>
<span className="typography-ui-label text-foreground">
Always create worktree for new sessions
</span>
</label>
<p className="typography-meta text-muted-foreground pl-5.5 mt-1">
{settingsAutoCreateWorktree
? `New session (Worktree): ${getModifierLabel()} + N • New session (Standard): Shift + ${getModifierLabel()} + N`
: `New session (Standard): ${getModifierLabel()} + N • New session (Worktree): Shift + ${getModifierLabel()} + N`}
</p>
</div>
{!isVSCode && (
<div className="pt-2">
<label className="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
className="h-3.5 w-3.5 accent-primary"
checked={settingsAutoCreateWorktree}
onChange={handleAutoWorktreeChange}
/>
<span className="typography-ui-label text-foreground">
Always create worktree for new sessions
</span>
</label>
<p className="typography-meta text-muted-foreground pl-5.5 mt-1">
{settingsAutoCreateWorktree
? `New session (Worktree): ${getModifierLabel()} + N • New session (Standard): Shift + ${getModifierLabel()} + N`
: `New session (Standard): ${getModifierLabel()} + N • New session (Worktree): Shift + ${getModifierLabel()} + N`}
</p>
</div>
)}
</div>
);
};
@@ -104,6 +104,7 @@ const writeGitmojiCache = (gitmojis: GitmojiEntry[]) => {
};
localStorage.setItem(GITMOJI_CACHE_KEY, JSON.stringify(payload));
} catch {
return;
}
};
+7
View File
@@ -1,3 +1,10 @@
## [1.5.2] - 2026-01-17
- Chat: optimized message loading for opening sessions.
- Layout: tuned responsive breakpoint and server readiness timeout for steadier startup.
- Reliability: improved OpenCode process cleanup to reduce orphaned servers.
## [1.5.1] - 2026-01-16
- No notable changes
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "openchamber",
"displayName": "OpenChamber",
"description": "AI coding assistant powered by OpenCode",
"version": "1.5.1",
"version": "1.5.2",
"publisher": "fedaykindev",
"private": true,
"repository": {
+3 -7
View File
@@ -85,7 +85,7 @@ function getCandidateBaseUrls(serverUrl: string): string[] {
}
}
async function waitForReady(serverUrl: string, timeoutMs = 15000, workingDirectory = ''): Promise<ReadyResult> {
async function waitForReady(serverUrl: string, timeoutMs = 15000): Promise<ReadyResult> {
const start = Date.now();
const candidates = getCandidateBaseUrls(serverUrl);
let attempts = 0;
@@ -120,10 +120,6 @@ async function waitForReady(serverUrl: string, timeoutMs = 15000, workingDirecto
return { ok: false, elapsedMs: Date.now() - start, attempts };
}
function inferApiPrefixFromUrl(): string {
return '';
}
export function createOpenCodeManager(_context: vscode.ExtensionContext): OpenCodeManager {
// Discard unused parameter - reserved for future use (state persistence, subscriptions)
void _context;
@@ -248,7 +244,7 @@ export function createOpenCodeManager(_context: vscode.ExtensionContext): OpenCo
if (server && server.url) {
// Validate readiness for the current workspace context.
const ready = await waitForReady(server.url, 10000, workingDirectory);
const ready = await waitForReady(server.url, 10000);
lastReadyElapsedMs = ready.elapsedMs;
lastReadyAttempts = ready.attempts;
if (ready.ok) {
@@ -382,7 +378,7 @@ export function createOpenCodeManager(_context: vscode.ExtensionContext): OpenCo
}
async function setWorkingDirectory(newPath: string): Promise<{ success: boolean; restarted: boolean; path: string }> {
const target = typeof newPath === 'string' && newPath.trim().length > 0 ? newPath.trim() : workspaceDirectory();
void newPath;
const workspacePath = workspaceDirectory();
const nextDirectory = workspacePath;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@openchamber/web",
"version": "1.5.1",
"version": "1.5.2",
"private": false,
"type": "module",
"main": "./server/index.js",