diff --git a/CHANGELOG.md b/CHANGELOG.md index 792599d7..4b0ec837 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.2.9] - 2025-12-20 + +- Session auto‑cleanup feature with configurable retention for each app version including VSCode extension +- Ability to update web package from mobile/PWA view in setting +- A lot of different optimization for a long sessions + + ## [1.2.8] - 2025-12-19 - Introduced update mechanism for web version that doesn't need any cli interaction diff --git a/package.json b/package.json index 515a7d46..2e2274c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openchamber-monorepo", - "version": "1.2.8", + "version": "1.2.9", "description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes", "private": true, "type": "module", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index cf8c65f5..bbc900a0 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@openchamber/desktop", - "version": "1.2.8", + "version": "1.2.9", "private": true, "type": "module", "desktopPrerequisites": [ diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml index 61daf709..c241961b 100644 --- a/packages/desktop/src-tauri/Cargo.toml +++ b/packages/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "openchamber-desktop" -version = "1.2.8" +version = "1.2.9" edition = "2021" publish = false diff --git a/packages/desktop/src-tauri/tauri.conf.json b/packages/desktop/src-tauri/tauri.conf.json index b045902e..9cea4993 100644 --- a/packages/desktop/src-tauri/tauri.conf.json +++ b/packages/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/schema.json", "productName": "OpenChamber", - "version": "1.2.8", + "version": "1.2.9", "identifier": "ai.opencode.openchamber", "build": { "beforeDevCommand": "pnpm dev", diff --git a/packages/ui/package.json b/packages/ui/package.json index 516610de..cc842f00 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@openchamber/ui", - "version": "1.2.8", + "version": "1.2.9", "private": true, "type": "module", "main": "src/main.tsx", diff --git a/packages/ui/src/components/sections/settings/SessionRetentionSettings.tsx b/packages/ui/src/components/sections/settings/SessionRetentionSettings.tsx index 884f8a18..317ce865 100644 --- a/packages/ui/src/components/sections/settings/SessionRetentionSettings.tsx +++ b/packages/ui/src/components/sections/settings/SessionRetentionSettings.tsx @@ -24,7 +24,7 @@ export const SessionRetentionSettings: React.FC = () => { setMobileDraftDays(String(autoDeleteAfterDays)); }, [autoDeleteAfterDays]); - const { candidates, isRunning, runCleanup, keepRecentCount } = useSessionAutoCleanup({ autoRun: false }); + const { candidates, isRunning, runCleanup } = useSessionAutoCleanup({ autoRun: false }); const pendingCount = candidates.length; const handleRunCleanup = React.useCallback(async () => { diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 5340dc90..87bf228d 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -2,7 +2,7 @@ "name": "openchamber", "displayName": "OpenChamber", "description": "AI coding assistant powered by OpenCode", - "version": "1.2.8", + "version": "1.2.9", "publisher": "fedaykindev", "private": true, "repository": { diff --git a/packages/vscode/webview/api/index.ts b/packages/vscode/webview/api/index.ts index 3fb0e7b7..a5628647 100644 --- a/packages/vscode/webview/api/index.ts +++ b/packages/vscode/webview/api/index.ts @@ -1,4 +1,4 @@ -import type { RuntimeAPIs, TerminalAPI, GitAPI, NotificationsAPI } from '@openchamber/ui/lib/api/types'; +import type { RuntimeAPIs, TerminalAPI, GitAPI, NotificationsAPI, GitIdentityProfile } from '../../../ui/src/lib/api/types'; import { createVSCodeFilesAPI } from './files'; import { createVSCodeSettingsAPI } from './settings'; import { createVSCodePermissionsAPI } from './permissions'; @@ -40,8 +40,8 @@ const createStubGitAPI = (): GitAPI => ({ getCurrentGitIdentity: async () => null, setGitIdentity: async () => ({ success: false, profile: { id: '', name: '', userName: '', userEmail: '' } }), getGitIdentities: async () => [], - createGitIdentity: async (p) => p, - updateGitIdentity: async (_, p) => p, + createGitIdentity: async (profile: GitIdentityProfile) => profile, + updateGitIdentity: async (_id: string, profile: GitIdentityProfile) => profile, deleteGitIdentity: async () => {}, }); diff --git a/packages/vscode/webview/api/settings.ts b/packages/vscode/webview/api/settings.ts index 63c4b39d..470450f0 100644 --- a/packages/vscode/webview/api/settings.ts +++ b/packages/vscode/webview/api/settings.ts @@ -1,4 +1,4 @@ -import type { SettingsAPI, SettingsLoadResult, SettingsPayload } from '@openchamber/ui/lib/api/types'; +import type { SettingsAPI, SettingsLoadResult, SettingsPayload } from '../../../ui/src/lib/api/types'; // Use same endpoints as web - fetch interceptor handles URL rewriting const SETTINGS_ENDPOINT = '/api/config/settings'; diff --git a/packages/vscode/webview/main.tsx b/packages/vscode/webview/main.tsx index 13426ba1..ec2e4e6f 100644 --- a/packages/vscode/webview/main.tsx +++ b/packages/vscode/webview/main.tsx @@ -1,12 +1,12 @@ import { createVSCodeAPIs } from './api'; import { onThemeChange, sendBridgeMessage } from './api/bridge'; -import type { RuntimeAPIs } from '@openchamber/ui/lib/api/types'; +import type { RuntimeAPIs } from '../../ui/src/lib/api/types'; import { buildVSCodeThemeFromPalette, readVSCodeThemePalette, type VSCodeThemeKind, type VSCodeThemePayload, -} from '@openchamber/ui/lib/theme/vscode/adapter'; +} from '../../ui/src/lib/theme/vscode/adapter'; type ConnectionStatus = 'connecting' | 'connected' | 'error' | 'disconnected'; @@ -22,6 +22,7 @@ declare global { __OPENCHAMBER_VSCODE_THEME__?: VSCodeThemePayload['theme']; __OPENCHAMBER_VSCODE_SHIKI_THEMES__?: { light?: Record; dark?: Record } | null; __OPENCHAMBER_CONNECTION__?: { status: ConnectionStatus; error?: string }; + __OPENCHAMBER_HOME__?: string; } } @@ -298,4 +299,4 @@ window.fetch = async (input: RequestInfo | URL, init?: RequestInit) => { return originalFetch(input as RequestInfo, init); }; -import('@openchamber/ui/main'); +import('../../ui/src/main'); diff --git a/packages/vscode/webview/stores/chatStore.ts b/packages/vscode/webview/stores/chatStore.ts index 9a00d0cd..0a94e1c9 100644 --- a/packages/vscode/webview/stores/chatStore.ts +++ b/packages/vscode/webview/stores/chatStore.ts @@ -296,15 +296,23 @@ export const useChatStore = create((set, get) => ({ try { // Add user message optimistically + const messageId = `temp-${Date.now()}`; + const partId = `part-${messageId}`; + const userPart: Part = { + id: partId, + sessionID: currentSessionId, + messageID: messageId, + type: 'text', + text: content, + } as Part; const userMessage: MessageRecord = { info: { - id: `temp-${Date.now()}`, - sessionId: currentSessionId, + id: messageId, + sessionID: currentSessionId, role: 'user', - parts: [{ type: 'text', text: content }], time: { created: Date.now() }, } as Message, - parts: [{ type: 'text', text: content }], + parts: [userPart], }; const currentMessages = messages.get(currentSessionId) || []; diff --git a/packages/web/package.json b/packages/web/package.json index 5cc275c9..94e00bb7 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@openchamber/web", - "version": "1.2.8", + "version": "1.2.9", "private": false, "type": "module", "main": "./server/index.js",