Skip to content

chore: sync upstream coollabsio/jean main (2026-06-01)#2

Merged
figassis merged 77 commits into
mainfrom
sync/upstream-2026-06-01
Jun 1, 2026
Merged

chore: sync upstream coollabsio/jean main (2026-06-01)#2
figassis merged 77 commits into
mainfrom
sync/upstream-2026-06-01

Conversation

@figassis

@figassis figassis commented Jun 1, 2026

Copy link
Copy Markdown

Summary

Syncs the fork with 75 new commits from upstream coollabsio/jean main since the last sync (PR #1 on 2026-05-15). Brings in v0.1.50 → v0.1.52 releases.

Upstream highlights

  • Jean MCP runtime — dedicated server, worktree/session context tools, self-invocation, enabled by default
  • macOS GPU optimization + runtime-configurable window vibrancy
  • Chat: Opus 4.8 1M default, ultracode effort + diff auto-refresh, yolo launch mode for native CLI sessions, terminal CLI session reconnect, multi-backend skills, configurable default new-session action
  • Magic: PR linking, batched review comments, release notes with PR issue refs, desktop Magic dropdown button
  • Codex: user input support + review batching
  • Composer 2.5 + mobile investigate guard
  • Terminal: user-configurable background color, middle-click closes session tabs
  • Fixes: GitHub dashboard auth handling, Claude permission denial persistence, OpenCode cancel cleanup, paste handling, stream scrolling, Cursor create-chat perf, false gh auth errors

Conflicts resolved

  • src-tauri/tauri.conf.json — took upstream (hardcoded windowEffects removed; now runtime-configurable via upstream's vibrancy preference)
  • src-tauri/src/lib.rs — kept fork's wider #[cfg(any(target_os = "macos", target_os = "ios"))] gate on RunEvent::Reopen
  • src/components/chat/FileMentionPopover.test.tsx — took upstream rename (FilesModule/ProjectsModuleFilesService/ProjectsService)

Follow-up fixes

  • Patched upstream lint regressions surfaced by fork CI: arrow-fn ResizeObserver mock in preferences.test.ts, replaced non-null assertion in OpinionatedPane.test.tsx with explicit if-throw.

Fork-only commits preserved

Dockerfile additions (rtk, typst, golangci-lint, kubectl/stern, helm3, codehealth, lefthook, CodeScene, dev-box toolchain, nvm, Bun, Stripe, Atlas, hadolint, Playwright, openvscode-server) and the macOS-only RunEvent::Reopen gate.

Test plan

  • bun install --frozen-lockfile
  • bun run typecheck
  • bun run lint
  • bun run format:check
  • bun run test:run (647 tests, all passing)
  • docker build -t jean:dev . (full multi-stage build incl. Rust compile + frontend build)
  • Manual smoke: launch container, verify Jean HTTP server (3456) and openvscode-server (3457) start
  • Manual smoke (macOS): verify window vibrancy toggle, RunEvent::Reopen still gated correctly

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added Jean MCP (Model Context Protocol) integration for enhanced AI tooling and automation.
    • Introduced customizable terminal backgrounds and window transparency (macOS).
    • Added support for linking GitHub PRs to worktrees.
    • New "Ultracode" effort level for enhanced processing.
    • Added batch review comments processing with multiple dispatch modes.
  • Improvements

    • Updated default Claude model to Opus 4.8 (1M).
    • Enhanced background investigation workflows with auto-setup.
    • Added session reconnection for native CLI terminals.
    • Improved keyboard shortcut organization and new session intent modes.
    • Extended multi-backend skill support (Codex, OpenCode, Cursor).
    • Better GitHub authentication error handling.

petrbela and others added 30 commits April 25, 2026 15:44
- Remove `backdrop-blur-sm` from all modals/dialogs (expensive GPU composite layer)
- Replace filter drop-shadow icon-glow animation with opacity-based variant
- Pause animations when window loses focus via `.window-blurred` CSS class
- Add `prefers-reduced-motion` media query support for all animations
- Add `window_vibrancy` preference + `set_window_vibrancy` Tauri command (macOS, default off)
Introduce a shared 1Hz TickStore that pauses when the window is blurred
or the document is hidden, eliminating background GPU churn from per-
component setInterval calls.

- Add TickStore singleton and useTickRef hook; subscribers mutate DOM
  via refs instead of triggering React re-renders
- Convert useElapsedTime hook → ElapsedTime component (direct DOM write)
- Replace useWakeupRemaining (setState) with WakeupCountdownText (ref)
- Remove backdrop-blur-sm from FloatingButtons and WsReconnectOverlay
- Fix macOS window opacity toggling: make window opaque when vibrancy is
  disabled so WindowServer stops blending the transparent backing layer
- Remove static windowEffects from tauri.conf.json; vibrancy is now
  controlled exclusively at runtime via set_window_vibrancy
…lStore

Remove useTickRef and the ref-mutation approach for live-ticking UI.
Convert ElapsedTime component and WakeupCountdownText to plain hooks
(useElapsedTime, useWakeupRemaining) that read from tickStore via
useSyncExternalStore — simpler, concurrent-mode safe, no DOM writes.

Update TickStore listener signature to () => void to match
useSyncExternalStore's subscribe/getSnapshot split.
Refine GitHub CLI error classification so repository eligibility failures
(no remotes, unknown hosts, non-GitHub remotes) are not reported as auth
issues. Update the dashboard to verify gh auth state before showing auth
errors, and add tests for the new classification behavior.
# Conflicts:
#	src-tauri/src/lib.rs
#	src-tauri/tauri.conf.json
#	src/services/preferences.test.ts
#	src/types/preferences.ts
Add GitHub dashboard modal tests for gh auth prompt handling and expand
GitHub service auth error classification coverage.
Add a Streamable HTTP MCP endpoint, preference controls, and config snippets for Jean's MCP server. Inject the server into Claude and Cursor sessions with recursion depth and rate-limit safeguards.
Move Jean MCP support into dedicated config, core, socket, and stdio modules so local CLI sessions can use Jean-owned MCP transport instead of the main HTTP server. Add background investigation dispatch support, persistent MCP server settings, and UI/test coverage for MCP server preferences.
Merge Jean MCP config into Claude sessions and allow both server-level and wildcard MCP tool patterns so non-interactive Claude runs can execute configured tools.
Use a stable Jean launcher command for generated MCP entries, harden local socket handling and auth responses, invalidate MCP config cache after installs, and update the MCP preferences UI for the revised server configuration flow.
Remove the separate HTTP MCP endpoint and route stdio/socket protocol
handling through shared core helpers. Add the dedicated Jean MCP preferences
section, keep Jean MCP disabled by default, and preserve explicit opt-in prefs.
andrasbacsai and others added 27 commits May 19, 2026 08:49
Add Cursor Composer 2.5 model options and sort newer Composer models first,
including fast variants. Disable mobile issue/PR investigate actions when no
matching context is loaded and surface errors for missing contexts.
Let Cursor create new chats implicitly through --print and only pass --resume
when an existing chat id is available. This removes an extra CLI process
startup from new session first messages while preserving resumed chats.
…k-close-session-tabs

Middle-click closes session tabs
Remove the default sidebar window effect from Tauri config and explicitly clear effects before making the window opaque so disabled vibrancy does not leave a compositor-blended visual effect view behind. Also pause additional animations while blurred.
feat(terminal): user-configurable terminal background color
Expose OpenCode and Cursor skills alongside existing skill sources.
Clear preserved plan approval state before execution turns so new tool
streams do not append to the prior planning timeline.

Also add a toolbar action to revert the last local commit and tighten
opinionated plugin status checks across detected Jean backends.
Add manual PR linking for worktrees through the Magic modal and backend command dispatch. Support batching review comment prompts with execution mode overrides, add Cmd+C commit shortcut handling in the diff modal, and cover the new magic command and modal flows with tests.
Remove the global TickStore and update elapsed-time / wakeup countdown hooks to manage their own intervals. This simplifies the timing logic and avoids the shared external store dependency.
Validate generated commit messages against stricter Conventional Commit rules, route native Codex request_user_input tool calls through interactive question cards, and send review comment prompts through sequential sessions.
Migrate prior Opus 4.7 defaults to Opus 4.8 1M across chat,
magic prompts, preferences, and model picker tests while preserving
explicit non-Opus selections.
Add one-click yolo starts for supported backends and carry the prepared terminal context into matching native CLI commands. Include tests for Claude and Codex yolo session startup.
Add reconnect actions for resumable terminal sessions and include PR
metadata when generating release notes and pull request bodies.
Move PR update generation out of project commands and preserve yolo
flags when resuming native CLI sessions.
Add ultracode as a selectable effort level, mapping it to xhigh for Codex while preserving the Claude effort value. Refresh git diff modal content when plan approval state changes, and cover the toolbar and diff modal behavior with tests.
Add regression coverage for saving and reloading the window vibrancy preference, and verify the appearance pane does not enable runtime vibrancy when persistence fails.
perf(macos): reduce GPU load with reduced blurring/animations, shared tick store and optional vibrancy
Conflicts resolved:
- src-tauri/tauri.conf.json: take upstream (windowEffects now runtime-configurable via b3b2d93)
- src-tauri/src/lib.rs: keep fork's wider macos+ios cfg gate on RunEvent::Reopen
- src/components/chat/FileMentionPopover.test.tsx: take upstream (FilesService/ProjectsService rename)
- preferences.test.ts: ResizeObserver mock uses arrow funcs to satisfy no-empty-function
- OpinionatedPane.test.tsx: replace non-null assertion with explicit if-throw
- Auto-format files via prettier
@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7e86df6f-8ace-4c1a-a6d4-a7c1b4f1a1c0

📥 Commits

Reviewing files that changed from the base of the PR and between 35d9b02 and 8c7380d.

⛔ Files ignored due to path filters (1)
  • src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (146)
  • .github/workflows/ci-build.yml
  • .github/workflows/release.yml
  • data/.maxio-keys.json
  • data/buckets/backups/.bucket.json
  • data/buckets/my-bucket/.bucket.json
  • docs/developer/keyboard-shortcuts.md
  • package.json
  • src-tauri/Cargo.toml
  • src-tauri/src/chat/claude.rs
  • src-tauri/src/chat/codex.rs
  • src-tauri/src/chat/codex_server.rs
  • src-tauri/src/chat/commands.rs
  • src-tauri/src/chat/cursor.rs
  • src-tauri/src/chat/jean_mcp.rs
  • src-tauri/src/chat/mod.rs
  • src-tauri/src/chat/opencode.rs
  • src-tauri/src/chat/registry.rs
  • src-tauri/src/chat/types.rs
  • src-tauri/src/cursor_cli/commands.rs
  • src-tauri/src/http_server/dispatch.rs
  • src-tauri/src/http_server/server.rs
  • src-tauri/src/jean_mcp_config.rs
  • src-tauri/src/jean_mcp_core.rs
  • src-tauri/src/jean_mcp_socket.rs
  • src-tauri/src/jean_mcp_stdio.rs
  • src-tauri/src/lib.rs
  • src-tauri/src/opinionated/commands.rs
  • src-tauri/src/projects/commands.rs
  • src-tauri/src/projects/github_issues.rs
  • src-tauri/src/projects/release_notes.rs
  • src-tauri/src/projects/types.rs
  • src-tauri/tauri.conf.json
  • src/App.css
  • src/App.tsx
  • src/components/chat/ChatInput.test.tsx
  • src/components/chat/ChatInput.tsx
  • src/components/chat/ChatToolbar.tsx
  • src/components/chat/ChatWindow.tsx
  • src/components/chat/FileContentModal.tsx
  • src/components/chat/FileDiffModal.tsx
  • src/components/chat/FileMentionBadge.tsx
  • src/components/chat/FileMentionPopover.test.tsx
  • src/components/chat/FileMentionPopover.tsx
  • src/components/chat/FloatingButtons.tsx
  • src/components/chat/GitDiffModal.test.tsx
  • src/components/chat/GitDiffModal.tsx
  • src/components/chat/ImageLightbox.tsx
  • src/components/chat/NativeCliSessionsModal.tsx
  • src/components/chat/NewSessionModeModal.test.tsx
  • src/components/chat/NewSessionModeModal.tsx
  • src/components/chat/SessionChatModal.tsx
  • src/components/chat/SessionListRow.tsx
  • src/components/chat/SkillBadge.tsx
  • src/components/chat/TerminalView.tsx
  • src/components/chat/TextFileLightbox.tsx
  • src/components/chat/TextFilePreview.tsx
  • src/components/chat/ToolCallsDisplay.test.tsx
  • src/components/chat/ToolCallsDisplay.tsx
  • src/components/chat/hooks/plan-approval-state.test.ts
  • src/components/chat/hooks/plan-approval-state.ts
  • src/components/chat/hooks/useChatWindowEvents.test.ts
  • src/components/chat/hooks/useChatWindowEvents.ts
  • src/components/chat/hooks/useClearContextApproval.ts
  • src/components/chat/hooks/useElapsedTime.ts
  • src/components/chat/hooks/useInvestigateHandlers.ts
  • src/components/chat/hooks/useMagicCommands.test.ts
  • src/components/chat/hooks/useMagicCommands.ts
  • src/components/chat/hooks/useMessageHandlers.ts
  • src/components/chat/hooks/useMessageSending.ts
  • src/components/chat/hooks/usePlanApproval.ts
  • src/components/chat/hooks/useScrollManagement.test.tsx
  • src/components/chat/hooks/useScrollManagement.ts
  • src/components/chat/hooks/useStreamingEvents.ts
  • src/components/chat/hooks/useToolbarHandlers.ts
  • src/components/chat/hooks/useWorktreeApproval.ts
  • src/components/chat/session-card-utils.tsx
  • src/components/chat/tool-call-utils.test.ts
  • src/components/chat/tool-call-utils.ts
  • src/components/chat/toolbar/BackendModelPickerContent.test.tsx
  • src/components/chat/toolbar/DesktopToolbarControls.test.tsx
  • src/components/chat/toolbar/DesktopToolbarControls.tsx
  • src/components/chat/toolbar/MobileSettingsMenu.test.tsx
  • src/components/chat/toolbar/MobileSettingsMenu.tsx
  • src/components/chat/toolbar/MobileToolbarMenu.test.tsx
  • src/components/chat/toolbar/MobileToolbarMenu.tsx
  • src/components/chat/toolbar/toolbar-options.ts
  • src/components/dashboard/ProjectCanvasView.tsx
  • src/components/github-dashboard/GitHubDashboardModal.test.tsx
  • src/components/github-dashboard/GitHubDashboardModal.tsx
  • src/components/layout/MainWindow.tsx
  • src/components/magic/MagicModal.test.tsx
  • src/components/magic/MagicModal.tsx
  • src/components/magic/ReleaseNotesDialog.tsx
  • src/components/magic/ReviewCommentsDialog.test.tsx
  • src/components/magic/ReviewCommentsDialog.tsx
  • src/components/magic/UpdatePrDialog.tsx
  • src/components/onboarding/JeanMcpIntroDialog.test.tsx
  • src/components/onboarding/JeanMcpIntroDialog.tsx
  • src/components/open-in/OpenInModal.tsx
  • src/components/preferences/CliLoginModal.tsx
  • src/components/preferences/panes/AppearancePane.tsx
  • src/components/preferences/panes/GeneralPane.tsx
  • src/components/preferences/panes/JeanMcpSection.tsx
  • src/components/preferences/panes/MagicPromptsPane.tsx
  • src/components/preferences/panes/McpServersPane.test.tsx
  • src/components/preferences/panes/McpServersPane.tsx
  • src/components/preferences/panes/OpinionatedPane.test.tsx
  • src/components/preferences/panes/OpinionatedPane.tsx
  • src/components/preferences/preferences-search.ts
  • src/components/shared/WorkflowRunsModal.tsx
  • src/components/titlebar/TitleBar.tsx
  • src/components/ui/floating-dock.tsx
  • src/components/ui/keybinding-hints.tsx
  • src/components/ui/sonner.tsx
  • src/hooks/use-command-context.ts
  • src/hooks/useAutoArchiveOnMerge.test.tsx
  • src/hooks/useAutoArchiveOnMerge.ts
  • src/hooks/useBackgroundInvestigation.ts
  • src/hooks/useMainWindowEventListeners.test.tsx
  • src/hooks/useMainWindowEventListeners.ts
  • src/hooks/useRestoreLastArchived.ts
  • src/hooks/useTerminalThemeSync.ts
  • src/lib/release-notes-prompt.ts
  • src/lib/session-debug.ts
  • src/lib/terminal-instances.ts
  • src/lib/terminal-theme.test.ts
  • src/lib/terminal-theme.ts
  • src/lib/transport.ts
  • src/services/chat.ts
  • src/services/gh-cli.ts
  • src/services/github.test.ts
  • src/services/github.ts
  • src/services/preferences.test.ts
  • src/services/preferences.ts
  • src/services/projects.ts
  • src/services/skills.test.ts
  • src/services/skills.ts
  • src/store/chat-store.test.ts
  • src/store/chat-store.ts
  • src/store/ui-store.ts
  • src/types/chat.test.ts
  • src/types/chat.ts
  • src/types/ghostty-web.d.ts
  • src/types/keybindings.ts
  • src/types/preferences.ts
  • src/types/projects.ts

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting


Walkthrough

Adds Jean MCP stdio/socket/core modules and config installer; expands Tauri dispatch and commands; updates projects/worktrees features; introduces background investigations; normalizes models/effort; significant UI, terminal theme, and keybinding changes; many tests added; CI workflow and versions updated.

Changes

Jean MCP and Platform Updates

Layer / File(s) Summary
Jean MCP core, socket, stdio, and config Introduces jean_mcp_core (tool registry/dispatcher), jean_mcp_socket (Unix socket server), jean_mcp_stdio (stdio proxy), and jean_mcp_config (install snippets), wired through lib and dispatch.
Projects and sessions commands Adds worktree change/diff, PR linking, session summaries/status, start_background_investigation, and queue draining; updates create_worktree auto-open.
Preferences, terminal theme, and UI Adds Jean MCP prefs, window vibrancy, terminal background and theme sync; updates onboarding with Jean MCP intro; numerous dialog/styling/keyboard changes.
Model/effort normalization Default Claude model to opus-4-8[1m]; adds EffortLevel ultracode and UI mappings; sorter updates for Cursor models.
Streaming/events and approval flows Refactors plan approval cleanup, permission denial handling, scroll/tail-follow behavior, and Codex ask-user flows.
CI/config and versioning Adds cross-OS CI build workflow; bumps package, Cargo, and Tauri versions; removes Windows windowEffects.

Sequence Diagram(s)

sequenceDiagram
  participant UI as UI (React)
  participant Dispatch as Tauri dispatch_command
  participant MCP as jean_mcp_core::call_tool
  participant Sock as jean_mcp_socket (Unix)
  UI->>Dispatch: get_jean_mcp_config_snippet / install_jean_mcp_config
  UI->>MCP: start_background_investigation (via dispatch)
  MCP-->>UI: BackgroundInvestigationResult
  MCP->>Sock: Emit status (socket start/stop)
  UI-->>UI: Open JeanMcpIntroDialog on readiness
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

@figassis figassis merged commit e010919 into main Jun 1, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

7 participants