Commit Graph
18 Commits
Author SHA1 Message Date
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 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 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 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
Bohdan Triapitsyn ce1622b1e2 refactor: replace 'sonner' toast import with local toast component (#177) 2026-01-19 02:50:40 +02:00
Ashik Ahmed 934df2b7e6 perf: stability and performance improvements with some minor UI issues resolved (#172)
* Stability and performance improvements. (#1)

## Changelog

### Performance Improvements

- **perf: make terminal creation cwd check async (#9)**  
  Replaced synchronous `fs.existsSync` with `fs.promises.access` in the terminal creation handler to prevent blocking the event loop.  
  Improves throughput under high load.

- **perf: optimize fuzzyMatchScore by avoiding redundant lowercasing (#8)**  
  Renamed `fuzzyMatchScore` to `fuzzyMatchScoreNormalized` and updated it to accept a pre-lowercased query, avoiding repeated string allocations.  
  Updated the call site in `searchFilesystemFiles`.  
  ~25% search performance improvement on large datasets.

- **perf: use async file read in update-install handler (#7)**  
  Replaced `fs.readFileSync` with `await fs.promises.readFile` to avoid blocking the event loop.  

  **Benchmark (10k ops):**
  - Sync: ~95ms (blocking)  
  - Async: ~1124ms (non-blocking)  

  Higher per-call overhead, but better server responsiveness.

- **perf(server): optimize mkdir endpoint with async fs (#6)**  
  Replaced `fs.mkdirSync` with `await fsPromises.mkdir` in `/api/fs/mkdir`.  
  Prevents event-loop blocking and improves concurrent performance.  

  **Result:** ~2× throughput improvement (100 concurrent requests).

- **perf: parallelize fs checks in validateProjectEntries (#4)**  
  Replaced serial `for...of` with `Promise.all + map`.  
  Reduced validation time for 500 projects from ~110ms to ~20ms (~5× speedup).

- **perf: cache getLoginShellPath result to avoid blocking event loop (#5)**  
  Cached `getLoginShellPath` result to avoid repeated `spawnSync` calls (~400ms each).  
  Subsequent calls reduced to <1ms.

---

### Server Fixes

- **fix(server): use async check for terminal restart endpoint (#3)**  
  Replaced `fs.existsSync` with `fs.promises.stat` in `/api/terminal/:sessionId/restart`.  
  Added directory validation for better robustness.

---

### UI & Accessibility

- **feat(ui): add aria-labels to git identities sidebar buttons (#1)**  
  - Added `aria-label="Create new profile"` to the create button  
  - Added `aria-label="Profile actions"` to the dropdown trigger  
  - Added `.Jules/palette.md` for UX/a11y learnings

---

### UI Performance (Bolt)

- ** Bolt: Optimize MessageList re-renders by preserving referential equality (#2)**
- ** Bolt: Optimize MessageList re-renders by preserving referential equality (#11)**
- ** Bolt: Optimize MessageList re-renders by preserving referential equality (#12)**

* stability and improvements (#17)

* feat: add corner radius setting and update snackbar actions

- Add `cornerRadius` to UI store and settings.
- Add Corner Radius slider to Visual Settings section.
- Apply corner radius to ChatInput component.
- Remove default close button from Snackbar (Sonner).
- Add "OK" action button to session deletion toasts.
- Ensure `cornerRadius` setting is visible in OpenChamberPage.

* fix(ui): add missing aria-label to radius slider and verify functionality

- Added `aria-label="Corner radius in pixels"` to the desktop version of the corner radius slider for accessibility.
- Verified functionality and accessibility compliance via script.

* fix(ui): restore input bar offset setting on desktop

- Restored the Input Bar Offset setting to be visible on desktop, not just mobile.
- Verified both Corner Radius and Input Bar Offset sliders are accessible.

* Fix mobile layout for chat input controls (#16)

* Fix mobile layout for chat input controls

- Reduced horizontal gaps in mobile model controls.
- Added max-width constraints to model, variant, and agent labels on mobile to prevent overflow and cramping.
- Optimized spacing for mobile view.

* feat(git): auto-select gitmoji for generated commit messages

When the "Generate commit message" feature is used and gitmoji is enabled, automatically prepend the appropriate gitmoji based on the commit subject keywords.

- Added `KEYWORD_MAP` to map commit types to gitmojis.
- Added `matchGitmojiFromSubject` helper.
- Updated `handleGenerateCommitMessage` to apply the gitmoji.

* feat(git): auto-select gitmoji for generated commit messages

- Added `KEYWORD_MAP` to map commit types to gitmojis.
- Added `matchGitmojiFromSubject` helper.
- Updated `handleGenerateCommitMessage` to apply the gitmoji.
- Fixed mobile layout for model controls.
2026-01-18 14:28:49 +02:00
Bohdan Triapitsyn 8879573def release v1.5.2 2026-01-17 22:44:09 +02:00
Bohdan Triapitsyn 033e370c55 feat(git): cache gitmojis locally with ttl 2026-01-17 11:17:12 +02:00
Taylor Beeston b02712bee1 add gitmoji support for commit messages (#165)
Add gitmoji toggle in Git settings to enable emoji support
Show Add gitmoji button in commit section when feature is enabled
Display gitmoji picker dialog with searchable emoji list
2026-01-17 11:09:21 +02:00
Bohdan Triapitsyn e0279e59b0 feat: implement default Git identity management and local identity check 2026-01-14 22:34:17 +02:00
Bohdan Triapitsyn 1319033df9 feat(git): enhance token authentication and credential handling 2026-01-14 02:54:48 +02:00
btriapitsyn fa83c1e645 feat(git): add token authentication and credential discovery
Add support for token-based git authentication in identity profiles.
Enable discovery and import of credentials from ~/.git-credentials file.
Introduce remote URL-based filtering for token identities in git view.
2026-01-14 02:47:26 +02:00
Bohdan Triapitsyn 8902662f74 feat: add rename branch functionality with UI integration 2026-01-08 01:13:51 +02:00
Bohdan Triapitsyn f2507d58cf feat: migrate to OpenCode SDK v2
Update all import statements to use @opencode-ai/sdk/v2
Modify Vite configurations to alias new SDK path
Update API client method signatures for SDK v2 compatibility
2026-01-03 13:39:59 +02:00
Bohdan Triapitsyn 2f2c127f13 feat(mobile): add keyboard avoidance for input area 2026-01-01 16:02:41 +02:00
Bohdan Triapitsyn 53c805ff09 fix: adjusted Git view layout 2025-12-19 11:55:35 +02:00
Bohdan Triapitsyn bbceccfb64 feat: redesigned Git tab layout with improved organization 2025-12-19 02:48:58 +02:00
Bohdan Triapitsyn 4b2edf7318 Initial public release 2025-12-07 19:32:53 +02:00