Commit Graph
100 Commits
Author SHA1 Message Date
Bohdan Triapitsyn 1e797e99ca release v1.6.7 2026-02-10 13:36:16 +02:00
Bohdan Triapitsyn f76a3b35e7 feat(openchamber): hide voice settings in VSCode runtime 2026-02-10 13:28:19 +02:00
Bohdan Triapitsyn d663e3f82c style: simplify slider visuals by removing gradient 2026-02-10 13:19:36 +02:00
Bohdan Triapitsyn ab4ed8799d chore: update changelog with recent enhancements and fixes 2026-02-10 13:08:23 +02:00
Bohdan Triapitsyn d801ba0abe feat(useConfigStore): disable TTS buttons by default until user change this 2026-02-10 13:00:16 +02:00
Bohdan Triapitsyn 263a33ffb2 chore: simplify CodeMirror theme 2026-02-10 12:57:43 +02:00
Bohdan Triapitsyn 735aba7d0c refactor(ui): streamline header, settings layout 2026-02-10 02:36:02 +02:00
Bohdan Triapitsyn f91d048a2b fix(useConfigStore): align voiceModeEnabled with localStorage 2026-02-10 01:43:25 +02:00
Bohdan Triapitsyn 0a47bc058c fix: simplify message loading guards 2026-02-10 01:37:37 +02:00
Bohdan Triapitsyn b727f16b80 feat: upgrade codemirror to 6.39.13 and enhance host switching 2026-02-10 01:16:13 +02:00
Bohdan Triapitsyn 29eb71a7d5 feat: add confirm dialogs for delete/reset actions 2026-02-10 00:27:17 +02:00
Bohdan Triapitsyn 8c42edcf24 fix(server): enable cross-platform update flow and password escaping 2026-02-10 00:12:44 +02:00
Bohdan Triapitsyn d15acfc16a release v1.6.6 2026-02-09 14:08:06 +02:00
Bohdan Triapitsyn f6c00d2121 fix(SessionSidebar): center items when show branch subtitle 2026-02-09 13:37:21 +02:00
Bohdan Triapitsyn e1afb94740 feat: add fullscreen toggle for bottom terminal dock 2026-02-09 13:35:46 +02:00
Bohdan Triapitsyn e3f98e1ccc fix: add new session from GitHub PR in SessionSidebar is now back 2026-02-09 13:25:42 +02:00
Bohdan Triapitsyn 75c548f2d5 refactor(ui): improve path normalization in FilesView 2026-02-09 11:50:21 +02:00
Bohdan Triapitsyn 5b0a97d170 feat(ui): add desktop git sidebar + terminal dock and improve in-app PR workflow (#362)
* feat: add unified dropdown with services content in header

* feat: add right Git sidebar with resizable panel

* feat: implement responsive panel auto-toggle and terminal rehydration

- Auto-close the right sidebar when width is below a threshold and auto-open it when space permits
- Auto-close the bottom terminal when height is below a threshold and auto-open it when enough space
- Apply a dedicated rehydrated streaming configuration for terminal sessions to optimize reconnect behavior

* feat: enhance PR view with status caching and annotations

* feat(ui): enable chat dispatch in PullRequestSection

* feat(TerminalView): adjust layout

* feat: refine chat input layout and text selection menu

* fix(ui): show empty state in GitView when no changes

* feat(git): update PR actions styling and create PR button
2026-02-09 03:13:34 +02:00
Bohdan Triapitsyn 681918a089 feat: improve session status handling and SSE batching (#360)
* refactor: improve event stream session-id parsing and SSE batching

* feat: improve event streaming and server session polling
2026-02-09 02:49:54 +02:00
Bohdan Triapitsyn 148b55f66b feat: validate and persist openInAppId updates from settings 2026-02-08 15:11:20 +02:00
Bohdan Triapitsyn b4f4ee58e5 feat: infer remotes when none configured in GitView 2026-02-08 14:28:27 +02:00
Bohdan Triapitsyn 0a425cd882 feat: reorganize git view layout and add history/branch actions (#354)
* feat(ui): redesigned Git view layout

* feat: stabilize git views layout with min-h-0 and scroll

- Introduce min-h-0 and flex-1 on git layout containers
- Apply min-h-0 on PR checks dialog content and related areas
- Configure ScrollableOverlay to disable horizontal scroll and overscroll
2026-02-08 12:16:39 +02:00
Bohdan Triapitsyn 7d99aea6cc Enhance session sidebar with PR worktree support (#342)
* feat: refactored sessions sidebar to be workspaces centric

- Add createWorktreeOnly helper and status checks
- Add createWorktreeOnly to create a standalone worktree for the active project
- Show error toasts when no active project or not a Git repository
- Refresh session list and show success toast with created worktree details

* feat: show attention indicator and status marker in SessionSidebar

- Show unread attention indicator for sessions with pending updates
- Display status marker combining streaming and unread indicators in the session row
- Introduce attention diamond pulse animation and associated CSS for the new indicator

* fix(SessionSidebar): reserve header actions space when repo state is known

* chore(doc): add PR status colors to custom themes
2026-02-07 03:57:46 +02:00
Bohdan Triapitsyn aa85e31420 release v1.6.5 2026-02-06 16:30:18 +02:00
Bohdan Triapitsyn 6d84829761 feat(desktop): start API and Vite dev servers with proxies
- Start API server on port 3001 and Vite dev server on port 5173 in the desktop dev flow
- Proxy /auth, /health, and /api to the local API server for development
- Gracefully handle startup/shutdown and report failures clearly
2026-02-06 16:18:16 +02:00
Bohdan Triapitsyn de4bd4696d feat(theme): add Vitesse Dark and Light themes 2026-02-06 16:13:23 +02:00
Bohdan Triapitsyn b166d831ce refactor(ui): unify primary agent filtering for mentions and UI (#339) 2026-02-06 15:27:16 +02:00
Bohdan Triapitsyn 0503f51357 refactor: simplify worktree management by removing legacy API
- Remove legacy worktree API usage and related state
- Add Manage Branches button in the Git header for quick access
- Introduce worktree status utilities to derive root branch hints
2026-02-06 12:38:09 +02:00
Bohdan Triapitsyn fd08cc4e5d fix(desktop): terminate sidecar on main window close
- Terminate the sidecar when the macOS main window is closed
- Update opencode-ai/sdk to v1.1.53 across all packages
2026-02-06 02:50:08 +02:00
Bohdan Triapitsyn 234a91b444 feat: add OpenCode CLI path override and settings UI
- Add opencodeBinary field to settings and persistence flow
- Introduce OpenCode CLI settings panel with Browse and Save actions
2026-02-06 01:32:32 +02:00
Bohdan Triapitsyn 62b5ddd426 fix(opencode): improve binary resolution and HOME handling 2026-02-05 13:57:50 +02:00
Bohdan Triapitsyn 26ffcf4a7b fix: fetch and display changelog notes for updates 2026-02-05 03:43:37 +02:00
Bohdan Triapitsyn 904b6c11fe release v1.6.4 2026-02-05 03:16:24 +02:00
Bohdan Triapitsyn d5661f91b9 fix: brought back inline comment drafts in ChatInput 2026-02-05 03:14:26 +02:00
Bohdan Triapitsyn 6f96ae5973 feat(vascode): add quota/rate limit display in header 2026-02-05 02:31:39 +02:00
Bohdan Triapitsyn 83ffb1af34 refactor(desktop): make Tauri thin shell running web sidecar (#273)
## What / Why
This PR finishes the desktop refactor: the Tauri app is now a thin shell that launches the web server as a sidecar and loads the UI from `http://127.0.0.1:<port>`. All real backend logic lives in `packages/web/server/index.js`; desktop Rust keeps only native integrations (menu/dialog/notifications/updater/deep-link + window chrome).
This unblocks:
- consistent behavior across web/desktop/vscode (single backend)
- simpler desktop maintenance (no duplicated Rust backend)
- host switching between Local + remote instances in desktop
- reliable cold-start behavior on slow machines (VSCode + desktop)
## Key changes
- Desktop sidecar runtime
  - build pipeline to bundle web dist + `openchamber-server` sidecar (`packages/desktop/scripts/build-sidecar.mjs`)
  - robust local port selection (prefer saved/default, fallback to random; persisted in `~/.config/openchamber/settings.json`)
  - improved PATH handling so the sidecar can locate `opencode` CLI (incl `~/.opencode/bin`, overrides, common bins)
  - disable native right-click context menu in production builds (dev keeps it)
- Desktop instance switcher (Tauri-only)
  - header button + modal to add/edit/delete remote hosts, set default, probe status/ping, switch back to Local escape hatch
  - auth gate includes host switcher so you can recover when a remote host is broken/auth-required
  - host list stored desktop-locally (not tied to the currently selected remote server)
- Notifications
  - decision logic moved server-side; desktop notifications emitted via sidecar stdout and shown natively by Tauri
  - prevent double-notifications on desktop Local origin (UI ignores SSE notification when native path is active)
  - restore macOS notification sound
- Updates
  - Tauri updater used only when viewing Local instance in desktop shell (avoid “remote web update” triggering desktop restart)
- Settings persistence & UX polish
  - persist model favorites/recents via `/api/config/settings` (works for web + desktop; not origin-dependent)
  - persist per-project sidebar collapse state in `projects[].sidebarCollapsed` via `/api/config/settings` (with debounce on toggles)
  - macOS header sizing/traffic-lights offsets fixed (marketing macOS major injected from desktop; MultiRun header aligned)
  - VSCode cold-start: keep retrying provider/agent loads after connection to avoid empty UI on slow machines
  - misc lint/type fixes + bun.lock sync
- Desktop bootstrap / resiliency
  - show onboarding screen when OpenCode CLI is missing (desktop Local origin), with retry hook to restart OpenCode after install
## Testing notes
- Desktop (macOS): switch Local <-> remote, set default host, verify auth gate recovery, native notifications (with sound), updater gated to Local
- Web: favorites/recents + per-project collapsed state persist across reload/restart
- VSCode: slow startup no longer results in missing providers/agents/models
2026-02-05 01:59:49 +02:00
Bohdan Triapitsyn 388911b253 release v1.6.3 2026-02-02 19:04:59 +02:00
Bohdan Triapitsyn 24bb8d8f95 fix(web): use /global/health for readiness check 2026-02-02 19:01:27 +02:00
Bohdan Triapitsyn df1858b424 fix(ui): stop persisting settings dialog state 2026-02-02 00:18:12 +02:00
Bohdan Triapitsyn cd37b778c3 release v1.6.2 2026-02-01 22:47:21 +02:00
Bohdan Triapitsyn d846f039e6 chat: redesign chat input stop/send buttons
- stop button replaces send button in footer instead of overlay
- floating queue button above stop when input has content
- buttons same size, stop icon larger for emphasis
2026-02-01 22:43:46 +02:00
Bohdan Triapitsyn b441d27e99 feat(files-view): add per-root open file tabs store
- Add per-root tab state to track open files and current selection
- Derive open file nodes for the active root and trim root paths
2026-02-01 21:43:49 +02:00
Bohdan Triapitsyn 8e5f83c0a3 refactor(quota): unify reset time formatting across providers 2026-02-01 21:06:51 +02:00
Bohdan Triapitsyn 71d7a9d086 feat: render Settings in a windowed dialog
- Open Settings as a centered windowed dialog on desktop with a blurred backdrop
- Update SettingsView to support windowed mode and adjust Mac titlebar padding for windowed use
- Export SettingsWindow and switch MainLayout to use it instead of full-screen overlay
2026-02-01 21:06:51 +02:00
Bohdan Triapitsyn 630c41cd1a perf: optimize stacked diff view and Pierre diff rendering
- Compute default expanded count for stacked view to reduce DOM load
- Move diff processing to worker pool to improve UI responsiveness
- Add content cache key to avoid recomputing large diffs on render
2026-02-01 20:53:10 +02:00
Bohdan TriapitsynandNelson Pires 05e95410d7 feat(desktop/vscode): add quota providers API and UI integration (#266)
* feat(openchamber): persist usage auto-refresh settings

Enable a switch to toggle automatic usage refresh
Provide input to configure refresh interval in milliseconds
Persist changes to desktop settings and server API when changed

* feat: add UsageCard component

Add a new UsageCard component to display a usage window with title, optional subtitle, and a progress bar
Show current usage percentage and a reset time label for the window
Render a formatted window label and a compact subtitle for concise UI

* feat(usage): add UsagePage UI for quota usage

Add a dedicated UsagePage with provider-based usage details
Show last updated time and auto-refresh status
Handle empty, not configured, and error states with informative banners

* feat(usage): add UsageProgressBar component

Introduce a new UsageProgressBar component to visualize quota usage
Display a gradient fill that changes with critical, warn, or normal tones
Expose accessible progress attributes for screen readers

* feat(usage): add UsageSidebar component

Display quotas for all providers in a scrollable sidebar
Refresh quotas with a button and loading indicator
Colorize provider rows based on usage status and runtime context

* feat: add usage section to Settings

Add a new Usage item to the Settings sidebar for desktop and mobile
Render UsagePage when the Usage tab is selected in Settings
Wire up new UsageSidebar and UsagePage components under usage

* feat: add Usage section to sidebar

Add new Usage section in the sidebar for API quota monitoring.
Display a bar chart icon and description for the Usage item.
Monitor and display API quota usage across providers.

* feat(desktop): add usage auto-refresh settings

Enable automatic refresh for usage data with new settings
Store refresh interval in milliseconds for usage updates

* feat(persistence): support usageAutoRefresh and usageRefreshIntervalMs

Persist usageAutoRefresh in desktop settings
Persist usageRefreshIntervalMs in desktop settings
Validate types for new fields during sanitizeWebSettings

* feat(quota): export providers and utilities

Expose QUOTA_PROVIDERS and QUOTA_PROVIDER_MAP for consumers
Export QuotaProviderMeta type for user code
Make formatting and usage resolution utilities available from quota module

* feat(quota): define base quota provider interface

Define QuotaProvider interface with id, name, isConfigured, and fetchQuota
Expose ProviderResult type in fetchQuota contract

* feat: add quota providers index and map

Expose QUOTA_PROVIDERS with OpenAI, Google and z.ai
Provide QUOTA_PROVIDER_MAP for quick provider lookup by id

* feat: add quota utils for percent formatting and tone

Add clampPercent to sanitize and clamp numbers to 0-100
Add formatPercent to render '-' for null and 'x%' for values
Add resolveUsageTone to categorize percent as safe, warn, or critical

* feat: add useQuotaStore for quota data

Load usage settings from desktop, VSCode, or API at startup
Fetch quotas for all providers in parallel and update loading state
Expose lastUpdated timestamp and error state for UI feedback

* feat: export quota types from quota module

Expose quota-related types in UI type definitions
Allow downstream code to import QuotaProviderId and related types
Aggregate quota exports under the quota module in index

* feat: add quota types for usage providers

Add QuotaProviderId and UsageWindow shapes to model quota data
Add ProviderUsage, ProviderResult, and related usage mapping for providers

* feat: add quota provider endpoints API

List available quota providers via GET /api/quota/providers
Retrieve quota details for a specific provider with GET /api/quota/:providerId
Log errors and return 500 with error message on quota fetch failures

* feat: add quota providers discovery and formatting

Detect configured quota providers from auth and account files
Normalize auth entries to tokens or objects for API usage
Expose formatted reset times and remaining window metrics

* feat: persist usage settings in UsageSidebar and remove from defaults

Load usage settings on mount for the sidebar
Persist changes to auto-refresh and refresh interval to server
Remove usage settings state and effects from DefaultsSettings

* fix(usage): guard auto-select in UsagePage when results empty

Guard auto-select in UsagePage when results are empty
Prevent unexpected provider selection on initial render

* fix(quota): set error state during quota updates

Reset error to null when a new quota result is added
Set error to the error message on fetch failure or fallback
Keep error state alongside results in all update paths

* feat(desktop/vscode): add quota providers API and UI integration

* fix(quotaProviders): correct quota payload parsing

---------

Co-authored-by: Nelson Pires <nelsonpires.sn@gmail.com>
2026-02-01 19:37:18 +02:00
Bohdan Triapitsyn 3e145bdbd6 feat: added terminal tabs and resilient session storage (#265)
- Add per-directory tabbed terminal UI with separate buffers
- Persist and restore active tab per directory across sessions
- Fallback to in-memory storage when sessionStorage is unavailable
2026-02-01 19:28:05 +02:00
Bohdan Triapitsyn ddedc02687 feat: introduced a token-based theming system across the UI
* feat: added themes system

* feat: smart sidebar auto-hide for files/diff tabs + lower files sidebar threshold

* feat: added Checkbox component and update theming

- Add reusable Checkbox component for toggles across UI
- Replace several inputs with Checkbox in settings and commands panels
- Add DiffIcon and apply surface/border theming to key UI areas

* feat: Add convert-vscode-theme.cjs to convert VS Code themes to OpenChamber format

* refactor: remove unused permission logic from ChatInput

- Remove unused permission rules parsing logic from ChatInput
- Memoize renderTheme in DiffWorkerProvider to avoid unnecessary recalculations
- Remove forceOpaque helper in vscode theme adapter

* fix: guard VSCode theme loading in MarkdownRenderer

* feat: add custom user themes loading and reload

- Load user themes from ~/.config/openchamber/themes at runtime
- Expose /api/config/themes to fetch custom themes
- Allow theme reloading from Settings → Theme → Reload themes in the UI
2026-02-01 18:29:34 +02:00
Bohdan Triapitsyn fd0b78191e release v1.6.1 2026-01-30 15:40:25 +02:00
Bohdan Triapitsyn f752e2d644 fix(worktree): normalize paths and improve worktree deletion workflow 2026-01-30 15:40:01 +02:00
Bohdan Triapitsyn b74ac777f5 Add terminal quick keys option and desktop toggle (#249)
* feat: add terminal quick keys toggle in OpenChamber UI

* feat: enhance mobile input handling in Terminal for Android devices
2026-01-30 14:48:53 +02:00
Bohdan Triapitsyn 1442e44e16 fix: update sidebar sticky header background to match sidebar color 2026-01-30 14:32:43 +02:00
Bohdan Triapitsyn 344f369093 Refactor chat UI controls and overlays for mobile adjustments (#248)
* feat(mobile): refine status chip and control layouts

* fix(vscode): open file from apply_patch tool in editor
2026-01-30 13:23:50 +02:00
Bohdan Triapitsyn ab431a04a6 test: add workflow for building macOS DMG (arm64) with dynamic version input 2026-01-30 11:08:31 +02:00
Bohdan Triapitsyn a1ed55d3f5 test: add dynamic macOS version input for DMG build workflow 2026-01-30 10:35:57 +02:00
Bohdan Triapitsyn 22cc68f3e6 test: add GitHub Actions workflow for building macOS 15 DMG (arm64) 2026-01-30 03:06:00 +02:00
Bohdan Triapitsyn 2d305d18c6 feat(desktop): enable macOS version awareness for UI adjustments
- Fetch macOS major version from Rust to determine layout
- Adjust header padding and height for macOS versions
2026-01-30 02:46:43 +02:00
Bohdan Triapitsyn caa097b42b feat: improve SSE reconnection and visibility handling (#246)
- Keep SSE connection alive while tab is hidden to avoid disconnects
- Trigger a soft resync on visibility restore or window focus after stall
- Guard against multiple reconnects during visibility/window transitions
2026-01-30 01:33:54 +02:00
Bohdan Triapitsyn 520dd8c900 style: update section model selection headers to micro typography with uppercase and sticky behavior 2026-01-29 23:34:28 +02:00
Bohdan Triapitsyn c5158ff52c Chat input updates with Stop button and update dialog changelog UI (#241)
* feat: re-organizaed input footer UI in chat

Add StopIcon component and use it for aborting generation in chat controls
Introduce ProviderLogoOrFallback to show provider logo or fallback icon in model controls
Remove mobile-only abort button in StatusRow and simplify abort handling

* feat: improved render of changelog in UpdateDialog
2026-01-29 18:23:43 +02:00
Bohdan Triapitsyn 64e6c53719 release v1.6.0 2026-01-29 01:22:21 +02:00
Bohdan Triapitsyn adcc450e80 feat: add message stall detection and soft resync in event stream 2026-01-29 01:12:00 +02:00
Bohdan Triapitsyn bc28fa9ac8 refactor(chat): replace message sync with soft resync scheduling
Remove useMessageSync hook from App initialization
Introduce scheduleSoftResync to respect cooldowns before resyncs
Preserve hasMoreAbove handling and totalAvailableMessages for loading older messages
2026-01-29 01:12:00 +02:00
Bohdan Triapitsyn 9064e8e73f feat: add local branch checks to PR picker and integrate refresh
Enable optimistic local-branch checks for PR heads to disable non-existent branches
Show IntegrateCommitsSection only when upstream tracking is origin-based or applicable
2026-01-29 01:11:45 +02:00
Bohdan Triapitsyn a78ad90d78 chore: updated changelog 2026-01-28 16:14:40 +02:00
Bohdan Triapitsyn 5c8c02fd00 feat: sync clean target worktrees during integration 2026-01-28 14:41:25 +02:00
Bohdan Triapitsyn 3450939013 feat(vscode): add global SSE watcher for session activity
- Add sessionActivityWatcher module that listens to /global/event SSE independently of UI.
- Tracks session activity phases and sends openchamber:session-activity events to webview when UI is active.
2026-01-28 14:27:09 +02:00
Bohdan Triapitsyn 960cdab0fe fix(web): track session activity in global SSE watcher
- Update startGlobalEventWatcher to track session activity phases independently of UI, mirroring Tauri desktop behavior.
- The web server now maintains an always-up-to-date activity cache by listening to SSE events continuously, even when the UI is hidden.
2026-01-28 14:27:09 +02:00
Bohdan Triapitsyn f7d5df3dee fix: return empty result for plans dir when missing 2026-01-28 12:41:06 +02:00
Bohdan Triapitsyn 91e8b9e1f5 fix(ui): prevent memory leak in diff view with many modified files
- Add LRU eviction to diffCache (max 30 entries / 20MB)
- Single-file mode: render only selected diff, not all hidden ones
- Stacked mode: collapse files beyond first 10 by default
- Limit DiffWorkerProvider warmup to 10 files
- Reduce worker pool size (4 to 2) and AST cache (200 to 50)
2026-01-28 12:29:01 +02:00
Bohdan Triapitsyn 8c6eb3c44d release v1.5.9 2026-01-28 02:23:27 +02:00
Bohdan Triapitsyn 84e9391871 feat: add integrate commits to parental branch section and wired UI
Introduce IntegrateCommitsSection to plan and apply commits from source to target branch
Wire the integration panel into GitView so users can run integrate flow from the current worktree
2026-01-28 02:10:40 +02:00
Bohdan Triapitsyn 415b043326 feat: migrate to OpenCode SDK worktrees with per-project config
Add SDK-based worktree management that lists and starts SDK worktrees
Migrate per-project setup to ~/.config/openchamber/<projectId>.json
Deprecate .openchamber legacy paths and adapt UI to new config
2026-01-27 20:00:07 +02:00
Bohdan Triapitsyn d17b617453 feat: add markdown viewer toggle in PlanView
Enable switching between preview and edit modes for Markdown content
Persist viewer mode in localStorage and restore on load
Render PreviewToggleButton beside the path actions
2026-01-27 12:33:12 +02:00
Bohdan Triapitsyn 829e9f6216 fix(web): handle plans dir errors during listing 2026-01-27 12:17:04 +02:00
Bohdan Triapitsyn b861e4abf1 feat: introduce useEffectiveDirectory hook and adopt across views (#226)
Add a centralized useEffectiveDirectory hook to resolve the active directory
Use the hook across DiffView, FilesView, GitView, and TerminalView
Fix list styling by rendering ul/ol bullets outside
2026-01-27 11:57:56 +02:00
Bohdan Triapitsyn 8b515346bc ci: update PR workflow to bun-based checks 2026-01-27 11:54:05 +02:00
Bohdan Triapitsyn 6656816101 release v1.5.8 2026-01-26 20:05:57 +02:00
Bohdan Triapitsyn b705160c81 feat(vscode): Increase concurrency cap and check deadline to speed file scans for search (#223)
Add gitignore filtering and time budget in file search
Filter results using gitignore when enabled by passing relative paths
Abort searches after the allotted time using timeBudgetMs
2026-01-26 19:59:10 +02:00
Bohdan Triapitsyn 25525d5b1b feat: enhance ClawdHub integration with paging and retry
Add paging support when loading ClawdHub skills
Retry on API errors and throttle for ClawdHub requests
Load source content on source change and show loading indicators
2026-01-26 19:50:11 +02:00
Bohdan Triapitsyn eec170771c fix(ui): render UserTextPart with linkable mentions and wrap
Preserve whitespace and enable text wrapping in user text
Remove Markdown renderer usage for user text
2026-01-26 17:21:49 +02:00
Bohdan Triapitsyn a9952fd8da Refactor permission management across UI components and stores (#221)
* refactor: normalize permission rules and improve command draft handling

Add normalized rule set construction for permissions in Agents pages
Track initial command draft state to detect unsaved changes
Prefill draft fields when duplicating or selecting existing commands

* feat: add global session-level edit mode for agent permissions
2026-01-26 16:09:46 +02:00
Bohdan Triapitsyn 74511abfda Multi-account GitHub auth + UI polish (model logos, markdown, scroll behavior) (#219)
* feat: display provider logos for favorite/recent models

Show provider logo next to model name in favorites and recents
Render provider logos in ModelControls, ModelMultiSelect, and ModelSelector lists
Maintain zero-logo state for other sections to avoid clutter

* feat: render user message as markdown instead of plain text

Render agent mentions as markdown links in user text
Apply inside list style for chat content to fix list rendering
Rely on SimpleMarkdownRenderer for consistent rendering

* fix(openchamber): adjust layout and overscroll behavior

Enable overscroll-auto on overlay containers for smoother scrolling
Move page content to full-width wrapper and preserve section borders
Show AboutSettings inside its own bordered block when visible

* feat: integrate GitHub auth status store and UI

Introduce GitHubAuthStore to track connection status and polling
Show GitHub avatar in header when connected
Guard issue/pr dialogs behind GitHub auth status and show notices

* feat: add GitHub multi-account support

Add API and UI flow to activate a GitHub account
Show and switch between multiple GitHub accounts in header
Persist and normalize accounts list with current selection
2026-01-26 11:28:55 +02:00
Bohdan Triapitsyn efe9ad27b7 feat: add text truncation hook and marquee support (#217)
Introduce a hook to detect text truncation for dynamic UI updates
Replace static marquee spans with a reusable marquee component in files and labels
Enable copying of terminal selection on mouse up and touch end
2026-01-26 00:24:40 +02:00
Bohdan Triapitsyn f34027df10 Optimize chat rendering & add web session activity tracking (#214)
* feat: add chat virtualization and turn grouping infrastructure

Implement VirtualMessageList with virtualization and overscan for smooth scrolling
Refactor MessageList to render only visible messages and pass scroll refs
Introduce TurnGroupingContext and provider to stabilize per-turn rendering and reduce re-renders

* feat: add web server session activity endpoint for visibility restore

Add /api/session-activity endpoint to expose tracked session activity
Use web server activity first when restoring visibility, with fallback to global status
Update server SSE to set session phase on activity events

* feat(chat): split TurnGroupingContext into UI/Streaming contexts

Add separate UI state and streaming contexts to reduce re-renders.
Skip animations for items visible in collapsed view when expanding.
Track shown parts in collapsed mode to fade in progressively

* feat(ui): cache turn groups with expand state and guard web activity

Add isExpanded to the turn cache key to trigger updates correctly
Expose isGroupExpanded from UI state so groups reflect expand/collapse
Limit web server session activity fetch to web runtime only
2026-01-25 19:16:26 +02:00
Bohdan Triapitsyn 5950a31632 fix: Chrome diff scroll in All Files layout (#213)
Replace nested ScrollableOverlay with simple div in inline diff to fix vertical scroll blocking in Chrome. Add explicit h-full to stacked view flex container and disableHorizontal to main ScrollableOverlay for proper scroll behavior.
2026-01-25 18:52:58 +02:00
Bohdan Triapitsyn f77181a649 fix: gracefully handle missing directories in list operations 2026-01-25 17:21:36 +02:00
Bohdan Triapitsyn f4da45a8ad Add plan mode and plan view with per-session agent context (#210)
* feat: add plan/build mode switching and Plan view tab

Add PlanView view and integrate plan tab into main layout
Introduce plan_enter and plan_exit tools with icons and status strings
Persist per-session agent selections in context to reduce UI flicker during mode switches

* feat: enchanced plan discovery checks in header and plan view

* fix(ui): align PlanView and Header with sessionDirectory logic

Remove dependency on context store in header and compute sessionDirectory from session or currentDirectory
Compute display and repo paths using sessionDirectory for PlanView and update path resolution
Poll plan content every 3 seconds to reflect changes without heavy retries

* feat(ui): improve header tab switching and add copy buttons for plan

Switch header tab navigation to central UI store and auto-switch when plan is unavailable
Show checkmark icon after copying file contents or path with auto-hide timeout
Extend plan view path resolution to prefer session directory when present
2026-01-25 15:52:02 +02:00
Bohdan Triapitsyn 75f781f940 fix(chat): make sendMessage calls fire-and-forget with error handling 2026-01-24 21:11:50 +02:00
Bohdan Triapitsyn 1720a8d6fd feat: add iOS safe area support for PWA header
Introduce CSS variables for safe-area in iOS PWA environments
Apply header padding based on safe-area top to header-safe-area element
2026-01-24 18:37:03 +02:00
Bohdan Triapitsyn 3e809e79b1 release v1.5.7 2026-01-24 18:19:58 +02:00
Bohdan Triapitsyn 0e11ea3f83 feat: extend PR context to include check details
Add check details to PR context via includeCheckDetails flag
Open a checks dialog showing check run summaries and steps
Improve PR lookup for forked repos by matching head branch
2026-01-24 17:59:08 +02:00
Bohdan Triapitsyn b8f57484a5 fix(web): implement atomic write for shared storage
Add atomic write for the shared storage file to prevent race conditions.
Write to a temp file with restricted permissions and atomically rename.
Apply 600 permissions to the final storage file when possible
2026-01-24 15:06:29 +02:00
Bohdan Triapitsyn 4ff085d314 release v1.5.6 2026-01-24 02:34:52 +02:00
Bohdan Triapitsyn 87329ac71f chore: updated docs 2026-01-24 02:28:06 +02:00
Bohdan Triapitsyn ab8a613f9a fix(github): show an Open settings button in not-connected dialogs for quick access 2026-01-24 02:15:16 +02:00
Bohdan Triapitsyn f370ea5d8c feat: add GitHub PR list and context APIs
Add PRs list API with pagination
Provide PR context API with optional diff
Integrate PR picker in session UI
2026-01-24 01:57:35 +02:00
Bohdan Triapitsyn 57f00be773 feat: add GitHub issue picker and API endpoints
Add GitHubIssuePickerDialog UI for selecting issues
Enable new session from GitHub issue from session sidebar
Implement GitHub issues/list/get/comments APIs across desktop, web, and VS Code
2026-01-24 00:30:34 +02:00
Bohdan Triapitsyn da20c647e2 feat(git): improve PR panel (#207) 2026-01-23 19:54:28 +02:00
Bohdan Triapitsyn 463e9ec4e3 Add GitHub integration for PRs, issues and AI PR description (#205)
* feat: integrate GitHub OAuth device flow across runtimes

Add GitHub OAuth device flow endpoints across runtimes
Introduce GitHubSettings UI panel and sidebar entry
Persist GitHub auth state in per-runtime storage

* feat: add GitHub PR status and PR description generation

Show PR status for the current branch in the Git view
Generate a pull request description from the diff between base and head
Expose prStatus, prCreate, and prMerge APIs in web and desktop clients

* feat: add GitHub PR ready for review

Add API to mark pull requests as ready for review
Show a Ready button for draft PRs and reflect status in UI
Handle token expiration and GraphQL errors when marking ready
2026-01-23 16:08:58 +02:00