Skip to content

sync: merge upstream coollabsio/jean (Opus 5, remote/mobile, jean-core crate) - #12

Open
figassis wants to merge 226 commits into
mainfrom
sync/upstream-2026-07
Open

sync: merge upstream coollabsio/jean (Opus 5, remote/mobile, jean-core crate)#12
figassis wants to merge 226 commits into
mainfrom
sync/upstream-2026-07

Conversation

@figassis

Copy link
Copy Markdown

Merges upstream/main (coollabsio/jean) into the fork. Fork was 70 ahead / 223 behind, last synced 2026-06-27.

What upstream brings

  • Claude Opus 5 support
  • Remote Jean connections (jean-server, SSH headless servers) + mobile UI
  • Backend extracted into a new jean-core crate (major refactor: chat/, projects/, jean_mcp_core, etc. moved out of src-tauri/); commands now route through a single dispatch_core_commanddispatch_command()
  • MCP worktree/project lifecycle tools, magic investigations, batch review→fix, VSCodium, Sentry integration, Grok hardening, many Windows/remote fixes

Conflict resolution (29 files)

  • Additive keep-both for fork (Linear/Outline integration, reference-picker) vs upstream (Sentry, remote): types.rs, dispatch.rs, commands.rs, preferences.ts, projects.ts, settings panes, etc.
  • codex.rs: re-applied the fork's codex_sandbox_disabled() guards onto upstream's new match mode sandbox structure.
  • jean_mcp_core.rs: kept fork's paginated list_linear_issues MCP description + upstream's new worktree tools.
  • lib.rs: took upstream's thin shell (monolith moved to jean-core); fork's Linear/Outline commands already route via dispatch_command, so no generate_handler! re-add needed. Added fork's global prefs (outline_api_key, outline_url, reference_picker_extra_prune_dirs, web_editor_url) to jean-core AppPreferences.
  • Fork command fns in jean-core de-#[tauri::command]'d (jean-core has no tauri dep; matches upstream's plain-fn + dispatch convention).
  • Dockerfile: copy the new jean-core crate into the build context; moved #![recursion_limit=512] onto the jean-core crate root (large MCP json! registry).

Verification

Review notes

  • src/components/projects/panes/GeneralPane.tsx: the Linear settings section markup was reconstructed (the line-merge dropped it) — please eyeball field labels against intent; wiring/types verified.
  • Recommend a live smoke test on restart: plan-mode AskUserQuestion/ExitPlanMode, Linear/Outline MCP tools, Codex in-container.

🤖 Generated with Claude Code

grallc and others added 30 commits April 25, 2026 20:02
Browser autocorrect was suggesting "got" for "gpt", forcing an extra keypress to dismiss.
- Move triggerCliUpdate into CliUpdatesIndicator component as a callback
- Build currentlyOutdated Set during first pass instead of recalculating
`merge_github_pr` hardcoded `gh pr merge --merge`, which fails with exit
code 1 on repositories that disable merge commits (squash-only repos like
Spottt/planexpo). The mergeability check only blocks CONFLICTING/BLOCKED,
so a clean PR passed the pre-check then failed at merge time — the symptom
behind the cockpit "Terminer (TO DEPLOY + merge)" leaving the ClickUp task
in TO DEPLOY while the merge errored out.

Resolve the allowed merge method from `gh repo view`
(squash > merge > rebase, defaulting to squash) and use it. Fixes both the
AI-pipeline finish action and the generic chat/MagicModal PR merge.
Expose the Jean server platform during web init and use it for Windows-specific onboarding, shell escaping, and editor/terminal options. Keep Web Access settings available in browser mode while hiding native file-manager actions outside the desktop app.
Embed frontend assets in the Rust server, add the jean-server entrypoint,
serve health/readiness routes, and document VPS/Lima deployment.
Reject wildcard headless binds when token auth is disabled via saved
preferences, not only when --no-token is passed.

Update headless docs for jean-server and remove the Lima VM config.
…r-mode

feat(headless): add single-binary server mode
Add a release workflow for Linux server binaries and GHCR Docker images.
Build the Docker image with Xvfb so jean-server can run headlessly.
Download platform-specific RTK release archives, verify checksums, extract the binary into app data, and use the managed binary for status checks.
…r-spellcheck

fix(chat): disable spellcheck on backend model picker search
…estigation

fix(claude): pass profile env to helper commands
…ton-bug

fix(rtk): install CLI from verified release asset
…-resize-the

chore: inspect available workflow guidance
…tigation

fix(mcp): support Windows local IPC
andrasbacsai and others added 27 commits July 23, 2026 11:11
Keep the project canvas base-branch worktree section visible even when it has zero sessions, so users can start the first session from main.
* feat(editor): add VSCodium as a supported code editor

Adds 'vscodium' alongside 'vscode' following the same pattern (binary
`codium` instead of `code`, macOS `open -a "VSCodium"` fallback, Windows
.cmd wrapper, and the `-g` goto-location file args used by VS Code forks).

* feat(open-in): support VSCodium file and worktree launching

---------

Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Preserve cached status and paths so background investigations start
after remote refetches or missed worktree events.
…oollabsio#562)

* feat(worktrees): create a worktree from any remote's default branch

Projects tracking more than one remote (an upstream repo plus a personal
fork) could only start a worktree from the local default branch, so
whichever remote that branch follows silently decided the start point.

The Actions tab now shows one action per remote that has the default
branch fetched, origin first, sharing a single optional branch name
field. Projects with a single matching remote keep the existing layout.

create_worktree accepts a remote-qualified base ("fork/main"): it fetches
that remote and uses <remote>/<branch> as the git start point instead of
silently falling back to the local branch. Worktrees keep storing the
short branch name, so branch diffs and ahead/behind counts are unchanged.

* feat(worktrees): show which remote a worktree was branched from

A worktree started from fork/main was indistinguishable from one started
from origin/main: only the short branch name was kept.

Store the picked remote on the worktree and surface it in the existing
base-branch badge (session header and project canvas), so "main" reads as
"fork/main" when the base came from a specific remote. Branch diffs and
ahead/behind counts keep using the short name, unchanged.

* fix(worktrees): compare against the remote a worktree was branched from

Git status hardcoded origin/<base branch>, so a worktree started from
fork/main counted every commit that remote is ahead of origin as its own
work: a brand new session showed +19431/-313 and 33 unpushed commits.

Carry the picked remote through status polling and the diff commands and
compare against <remote>/<base branch> instead, fetching that remote for
freshness. Worktrees without an explicit base remote keep the previous
origin-based behaviour.

* fix(worktrees): honor base remotes for pull and rebase

* fix(worktrees): honor remote bases in diffs

---------

Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
- add configurable orchestration prompts and MCP advisory worktrees
- add mobile automation actions and favorite base branches
- preserve MCP visibility and detached hosts across updates
- require real plan tools before rendering Plan cards and recover Grok plans
- base PR worktrees on their target branch and resolve stacked PRs
- sweep merged PR worktrees after quick actions
Restrict backend selection and sends to authenticated CLI backends.
# Conflicts:
#	.dockerignore
#	.github/workflows/preflight.yml
#	jean-core/src/auto_fix/scheduler.rs
#	jean-core/src/chat/codex.rs
#	jean-core/src/http_server/dispatch.rs
#	jean-core/src/jean_mcp_core.rs
#	jean-core/src/projects/commands.rs
#	jean-core/src/projects/linear_issues.rs
#	jean-core/src/projects/linear_pm.rs
#	jean-core/src/projects/outline.rs
#	jean-core/src/projects/types.rs
#	src-tauri/src/lib.rs
#	src/components/chat/MessageDiffModal.tsx
#	src/components/chat/StreamingMessage.tsx
#	src/components/chat/toolbar/DesktopToolbarControls.tsx
#	src/components/chat/toolbar/MobileSettingsMenu.tsx
#	src/components/magic/MagicModal.tsx
#	src/components/open-in/OpenInButton.tsx
#	src/components/open-in/OpenInModal.tsx
#	src/components/preferences/panes/GeneralPane.tsx
#	src/components/preferences/panes/IntegrationsPane.tsx
#	src/components/projects/WorktreeContextMenu.tsx
#	src/components/projects/WorktreeDropdownMenu.tsx
#	src/components/projects/panes/GeneralPane.tsx
#	src/lib/transport.test.ts
#	src/services/projects.ts
#	src/types/chat.test.ts
#	src/types/preferences.ts
#	src/types/projects.ts
@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 564 files, which is 464 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 14c7ef5d-2265-4287-af07-54708ed989f4

📥 Commits

Reviewing files that changed from the base of the PR and between 9612fc9 and a576417.

⛔ Files ignored due to path filters (2)
  • src-server/Cargo.lock is excluded by !**/*.lock
  • src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (564)
  • .github/workflows/preflight.yml
  • .github/workflows/release.yml
  • .github/workflows/server-release.yml
  • .gitignore
  • CONTRIBUTING.md
  • Dockerfile
  • Dockerfile.server
  • Dockerfile.server-runtime
  • README.md
  • docker/entrypoint.sh
  • docs/developer/architecture-guide.md
  • docs/developer/command-system.md
  • docs/developer/embedded-browser-grab.md
  • docs/developer/keyboard-shortcuts.md
  • docs/developer/model-catalog.md
  • docs/developer/notifications.md
  • docs/developer/releases.md
  • docs/developer/server-architecture.md
  • docs/developer/testing.md
  • docs/developer/troubleshooting.md
  • docs/headless-server.md
  • docs/superpowers/plans/2026-07-18-jean-ios-remote-client.md
  • docs/superpowers/plans/2026-07-18-remote-jean-connections.md
  • docs/superpowers/specs/2026-07-18-remote-jean-connections-design.md
  • eslint.config.js
  • index.html
  • jean-core/Cargo.toml
  • jean-core/src/auto_fix/mod.rs
  • jean-core/src/auto_fix/scheduler.rs
  • jean-core/src/auto_fix/types.rs
  • jean-core/src/background_tasks/commands.rs
  • jean-core/src/background_tasks/mod.rs
  • jean-core/src/browser/mod.rs
  • jean-core/src/chat/claude.rs
  • jean-core/src/chat/coalesce.rs
  • jean-core/src/chat/codex.rs
  • jean-core/src/chat/codex_server.rs
  • jean-core/src/chat/commandcode.rs
  • jean-core/src/chat/commands.rs
  • jean-core/src/chat/context_instructions.rs
  • jean-core/src/chat/cursor.rs
  • jean-core/src/chat/detached.rs
  • jean-core/src/chat/grok.rs
  • jean-core/src/chat/handoff.rs
  • jean-core/src/chat/jean_mcp.rs
  • jean-core/src/chat/kimi.rs
  • jean-core/src/chat/mod.rs
  • jean-core/src/chat/naming.rs
  • jean-core/src/chat/native_history.rs
  • jean-core/src/chat/opencode.rs
  • jean-core/src/chat/pi.rs
  • jean-core/src/chat/registry.rs
  • jean-core/src/chat/run_log.rs
  • jean-core/src/chat/storage.rs
  • jean-core/src/chat/tail.rs
  • jean-core/src/chat/types.rs
  • jean-core/src/chat/wakeup.rs
  • jean-core/src/claude_cli/commands.rs
  • jean-core/src/claude_cli/config.rs
  • jean-core/src/claude_cli/mcp.rs
  • jean-core/src/claude_cli/mod.rs
  • jean-core/src/cli_update/mod.rs
  • jean-core/src/coderabbit_cli/commands.rs
  • jean-core/src/coderabbit_cli/config.rs
  • jean-core/src/coderabbit_cli/mod.rs
  • jean-core/src/codex_cli/commands.rs
  • jean-core/src/codex_cli/config.rs
  • jean-core/src/codex_cli/mcp.rs
  • jean-core/src/codex_cli/mod.rs
  • jean-core/src/commandcode_cli/commands.rs
  • jean-core/src/commandcode_cli/config.rs
  • jean-core/src/commandcode_cli/mod.rs
  • jean-core/src/cursor_cli/commands.rs
  • jean-core/src/cursor_cli/config.rs
  • jean-core/src/cursor_cli/mcp.rs
  • jean-core/src/cursor_cli/mod.rs
  • jean-core/src/gh_cli/commands.rs
  • jean-core/src/gh_cli/config.rs
  • jean-core/src/gh_cli/mod.rs
  • jean-core/src/grok_cli/commands.rs
  • jean-core/src/grok_cli/config.rs
  • jean-core/src/grok_cli/mcp.rs
  • jean-core/src/grok_cli/mod.rs
  • jean-core/src/http_server/assets.rs
  • jean-core/src/http_server/auth.rs
  • jean-core/src/http_server/dispatch.rs
  • jean-core/src/http_server/mod.rs
  • jean-core/src/http_server/server.rs
  • jean-core/src/http_server/websocket.rs
  • jean-core/src/jean_mcp_config.rs
  • jean-core/src/jean_mcp_core.rs
  • jean-core/src/jean_mcp_socket.rs
  • jean-core/src/jean_mcp_stdio.rs
  • jean-core/src/kimi_cli/commands.rs
  • jean-core/src/kimi_cli/config.rs
  • jean-core/src/kimi_cli/mcp.rs
  • jean-core/src/kimi_cli/mod.rs
  • jean-core/src/lib.rs
  • jean-core/src/opencode_cli/commands.rs
  • jean-core/src/opencode_cli/config.rs
  • jean-core/src/opencode_cli/mcp.rs
  • jean-core/src/opencode_cli/mod.rs
  • jean-core/src/opencode_server/mod.rs
  • jean-core/src/opinionated/commands.rs
  • jean-core/src/opinionated/mod.rs
  • jean-core/src/pi_cli/commands.rs
  • jean-core/src/pi_cli/config.rs
  • jean-core/src/pi_cli/mod.rs
  • jean-core/src/platform/cli_detect.rs
  • jean-core/src/platform/mod.rs
  • jean-core/src/platform/process.rs
  • jean-core/src/platform/shell.rs
  • jean-core/src/platform/wsl.rs
  • jean-core/src/projects/commands.rs
  • jean-core/src/projects/git.rs
  • jean-core/src/projects/git_log.rs
  • jean-core/src/projects/git_status.rs
  • jean-core/src/projects/github_actions.rs
  • jean-core/src/projects/github_issues.rs
  • jean-core/src/projects/linear_issues.rs
  • jean-core/src/projects/linear_pm.rs
  • jean-core/src/projects/mod.rs
  • jean-core/src/projects/names.rs
  • jean-core/src/projects/outline.rs
  • jean-core/src/projects/pr_status.rs
  • jean-core/src/projects/release_notes.rs
  • jean-core/src/projects/saved_contexts.rs
  • jean-core/src/projects/sentry_issues.rs
  • jean-core/src/projects/storage.rs
  • jean-core/src/projects/types.rs
  • jean-core/src/runtime.rs
  • jean-core/src/server_update/mod.rs
  • jean-core/src/terminal/commands.rs
  • jean-core/src/terminal/mod.rs
  • jean-core/src/terminal/pty.rs
  • jean-core/src/terminal/registry.rs
  • jean-core/src/terminal/types.rs
  • jean-core/src/version.rs
  • package.json
  • scripts/appimage-webkit-fix.sh
  • scripts/appimage-webkit-fix.test.mjs
  • scripts/build-appimage.sh
  • scripts/bump-version.js
  • scripts/bump-version.test.mjs
  • scripts/docker-entrypoint.sh
  • scripts/install-jean-server.sh
  • scripts/install-jean-server.test.mjs
  • scripts/install-local-server.mjs
  • scripts/install-local-server.test.mjs
  • scripts/server-ci-assets.test.mjs
  • src-server/Cargo.toml
  • src-server/src/main.rs
  • src-tauri/Cargo.toml
  • src-tauri/src/browser/commands.rs
  • src-tauri/src/browser/react_grab.global.js
  • src-tauri/src/browser/types.rs
  • src-tauri/src/chat/grok.rs
  • src-tauri/src/desktop_commands.rs
  • src-tauri/src/grok_cli/commands.rs
  • src-tauri/src/http_server.rs
  • src-tauri/src/lib.rs
  • src-tauri/src/opinionated/commands.rs
  • src-tauri/src/platform/linux_webkit.rs
  • src-tauri/src/platform/mod.rs
  • src-tauri/src/platform/notifications.rs
  • src-tauri/src/platform/shell.rs
  • src-tauri/src/remote_install.rs
  • src-tauri/tauri.conf.json
  • src/App.css
  • src/App.remote-ui.test.tsx
  • src/App.tsx
  • src/App.web-connecting-overlay.test.ts
  • src/App.web-reload-regression.test.ts
  • src/App.web-stream-replay-regression.test.ts
  • src/App.window-close-loading.test.ts
  • src/components/browser/BrowserToolbar.test.tsx
  • src/components/browser/BrowserToolbar.tsx
  • src/components/chat/ApprovalModelSubmenu.test.tsx
  • src/components/chat/ApprovalModelSubmenu.tsx
  • src/components/chat/ChatInput.test.tsx
  • src/components/chat/ChatInput.tsx
  • src/components/chat/ChatToolbar.tsx
  • src/components/chat/ChatWindow.context-preview-regression.test.ts
  • src/components/chat/ChatWindow.running-snapshot-regression.test.ts
  • src/components/chat/ChatWindow.terminal-modal-regression.test.ts
  • src/components/chat/ChatWindow.tsx
  • src/components/chat/CompactMessageList.test.tsx
  • src/components/chat/CompactMessageList.tsx
  • src/components/chat/CompactStreamingTicker.test.tsx
  • src/components/chat/CompactStreamingTicker.tsx
  • src/components/chat/ContextPreview.tsx
  • src/components/chat/DevToolsDropdown.test.tsx
  • src/components/chat/DevToolsDropdown.tsx
  • src/components/chat/EditedFilesDisplay.test.tsx
  • src/components/chat/EditedFilesDisplay.tsx
  • src/components/chat/FileContentModal.tsx
  • src/components/chat/GitDiffModal.test.tsx
  • src/components/chat/GitDiffModal.tsx
  • src/components/chat/MessageDiffModal.test.tsx
  • src/components/chat/MessageDiffModal.tsx
  • src/components/chat/MessageItem.test.tsx
  • src/components/chat/MessageItem.tsx
  • src/components/chat/MessageSettingsBadges.test.tsx
  • src/components/chat/MessageSettingsBadges.tsx
  • src/components/chat/NativeCliSessionsModal.tsx
  • src/components/chat/NewSessionModeModal.test.tsx
  • src/components/chat/NewSessionModeModal.tsx
  • src/components/chat/QueuedPromptsPanel.test.tsx
  • src/components/chat/QueuedPromptsPanel.tsx
  • src/components/chat/ReviewMethodModal.test.tsx
  • src/components/chat/ReviewMethodModal.tsx
  • src/components/chat/ReviewResultsPanel.test.tsx
  • src/components/chat/ReviewResultsPanel.tsx
  • src/components/chat/SessionChatModal.removal-behavior.test.ts
  • src/components/chat/SessionChatModal.tsx
  • src/components/chat/SessionListRow.tsx
  • src/components/chat/StreamingMessage.spaces.test.tsx
  • src/components/chat/StreamingMessage.test.tsx
  • src/components/chat/StreamingMessage.tsx
  • src/components/chat/TerminalView.tsx
  • src/components/chat/ToolCallInline.test.tsx
  • src/components/chat/ToolCallInline.tsx
  • src/components/chat/approval-label-utils.ts
  • src/components/chat/fork-session-navigation.test.ts
  • src/components/chat/fork-session-navigation.ts
  • src/components/chat/hooks/completion-hydration.test.ts
  • src/components/chat/hooks/completion-hydration.ts
  • src/components/chat/hooks/useActiveTodosAndAgents.test.ts
  • src/components/chat/hooks/useActiveTodosAndAgents.ts
  • src/components/chat/hooks/useCanvasStoreState.ts
  • src/components/chat/hooks/useChatWindowEvents.test.ts
  • src/components/chat/hooks/useChatWindowEvents.ts
  • src/components/chat/hooks/useClearContextApproval.ts
  • src/components/chat/hooks/useDragAndDropImages.ts
  • src/components/chat/hooks/useElapsedTime.test.tsx
  • src/components/chat/hooks/useElapsedTime.ts
  • src/components/chat/hooks/useGitOperations.test.tsx
  • src/components/chat/hooks/useGitOperations.ts
  • src/components/chat/hooks/useInvestigateHandlers.test.tsx
  • 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.test.tsx
  • src/components/chat/hooks/useMessageSending.ts
  • src/components/chat/hooks/usePlanApproval.ts
  • src/components/chat/hooks/useQueuedPromptActions.test.ts
  • src/components/chat/hooks/useQueuedPromptActions.ts
  • src/components/chat/hooks/useSessionArchive.ts
  • src/components/chat/hooks/useStreamingEvents.test.tsx
  • src/components/chat/hooks/useStreamingEvents.ts
  • src/components/chat/hooks/useToolbarHandlers.ts
  • src/components/chat/hooks/useWorktreeApproval.ts
  • src/components/chat/message-settings-labels.ts
  • src/components/chat/message-thread-context-menu.test.tsx
  • src/components/chat/message-thread-context-menu.tsx
  • src/components/chat/native-resume-labels.test.ts
  • src/components/chat/session-card-utils.test.ts
  • src/components/chat/session-card-utils.tsx
  • src/components/chat/session-tab-order.test.ts
  • src/components/chat/session-tab-order.ts
  • 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/BackendModelPickerContent.tsx
  • src/components/chat/toolbar/DesktopBackendModelPicker.test.tsx
  • src/components/chat/toolbar/DesktopBackendModelPicker.tsx
  • src/components/chat/toolbar/DesktopToolbarControls.test.tsx
  • src/components/chat/toolbar/DesktopToolbarControls.tsx
  • src/components/chat/toolbar/DockBurgerButton.test.tsx
  • src/components/chat/toolbar/DockBurgerButton.tsx
  • src/components/chat/toolbar/MobileBackendModelPickerSheet.test.tsx
  • src/components/chat/toolbar/MobileBackendModelPickerSheet.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/SendCancelButton.test.tsx
  • src/components/chat/toolbar/SendCancelButton.tsx
  • src/components/chat/toolbar/toolbar-options.ts
  • src/components/chat/toolbar/toolbar-utils.test.ts
  • src/components/chat/toolbar/toolbar-utils.ts
  • src/components/chat/toolbar/types.ts
  • src/components/chat/toolbar/useToolbarDerivedState.test.tsx
  • src/components/chat/toolbar/useToolbarDerivedState.ts
  • src/components/chat/worktree-branch-badge.test.ts
  • src/components/chat/worktree-branch-badge.ts
  • src/components/command-palette/CommandPalette.test.tsx
  • src/components/command-palette/CommandPalette.tsx
  • src/components/dashboard/ProjectCanvasView.diff-request.test.ts
  • src/components/dashboard/ProjectCanvasView.tsx
  • src/components/dashboard/ProjectCanvasView.web-reload.test.ts
  • src/components/dashboard/canvas-diff-request.ts
  • src/components/dashboard/canvas-status-refresh.test.ts
  • src/components/dashboard/canvas-status-refresh.ts
  • src/components/dashboard/canvas-worktree-filters.test.ts
  • src/components/dashboard/canvas-worktree-filters.ts
  • src/components/github-dashboard/GitHubDashboardModal.test.tsx
  • src/components/github-dashboard/GitHubDashboardModal.tsx
  • src/components/icons/KimiIcon.test.tsx
  • src/components/icons/KimiIcon.tsx
  • src/components/layout/CliUpdateModal.tsx
  • src/components/layout/MainWindow.tsx
  • src/components/layout/MainWindowContent.mobile-swipe.test.tsx
  • src/components/layout/MainWindowContent.tsx
  • src/components/layout/MobileLeftSidebar.test.tsx
  • src/components/layout/MobileLeftSidebar.tsx
  • src/components/layout/QuitConfirmationDialog.tsx
  • src/components/layout/SetupIncompleteBanner.test.tsx
  • src/components/layout/SetupIncompleteBanner.tsx
  • src/components/layout/UpdateAvailableModal.tsx
  • src/components/layout/WindowResizeHandles.test.tsx
  • src/components/layout/WindowResizeHandles.tsx
  • src/components/magic/MagicModal.test.tsx
  • src/components/magic/MagicModal.tsx
  • src/components/magic/ReleaseNotesDialog.test.tsx
  • src/components/magic/ReleaseNotesDialog.tsx
  • src/components/magic/RemotePickerModal.test.tsx
  • src/components/magic/RemotePickerModal.tsx
  • src/components/magic/ResolveConflictsDialog.tsx
  • src/components/magic/ReviewCommentsDialog.test.tsx
  • src/components/magic/ReviewCommentsDialog.tsx
  • src/components/onboarding/CliSetupComponents.test.tsx
  • src/components/onboarding/CliSetupComponents.tsx
  • src/components/onboarding/JeanConfigWizard.test.tsx
  • src/components/onboarding/JeanConfigWizard.tsx
  • src/components/onboarding/JeanMcpIntroDialog.tsx
  • src/components/onboarding/OnboardingDialog.test.tsx
  • src/components/onboarding/OnboardingDialog.tsx
  • src/components/open-in/OpenInButton.tsx
  • src/components/open-in/OpenInModal.test.tsx
  • src/components/open-in/OpenInModal.tsx
  • src/components/open-in/ScriptsButton.test.tsx
  • src/components/open-in/ScriptsButton.tsx
  • src/components/preferences/CliLoginModal.tsx
  • src/components/preferences/CliReinstallModal.tsx
  • src/components/preferences/KeyRecorder.tsx
  • src/components/preferences/PreferencesDialog.test.tsx
  • src/components/preferences/PreferencesDialog.tsx
  • src/components/preferences/SettingsSection.test.tsx
  • src/components/preferences/SettingsSection.tsx
  • src/components/preferences/panes/AiLanguageField.test.tsx
  • src/components/preferences/panes/AiLanguageField.tsx
  • src/components/preferences/panes/AppearancePane.tsx
  • src/components/preferences/panes/GeneralPane.structure.test.ts
  • src/components/preferences/panes/GeneralPane.tsx
  • src/components/preferences/panes/IntegrationsPane.tsx
  • src/components/preferences/panes/JeanMcpSection.tsx
  • src/components/preferences/panes/KimiPane.test.tsx
  • src/components/preferences/panes/KimiPane.tsx
  • src/components/preferences/panes/MagicPromptsPane.test.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/panes/ProvidersPane.tsx
  • src/components/preferences/panes/UsagePane.test.tsx
  • src/components/preferences/panes/UsagePane.tsx
  • src/components/preferences/panes/WebAccessPane.test.tsx
  • src/components/preferences/panes/WebAccessPane.tsx
  • src/components/preferences/preferences-search.test.ts
  • src/components/preferences/preferences-search.ts
  • src/components/projects/AddProjectDialog.tsx
  • src/components/projects/CloneProjectModal.test.tsx
  • src/components/projects/CloneProjectModal.tsx
  • src/components/projects/FolderContextMenu.tsx
  • src/components/projects/ProjectActionsMenu.order.test.ts
  • src/components/projects/ProjectContextMenu.tsx
  • src/components/projects/ProjectSettingsDialog.structure.test.ts
  • src/components/projects/ProjectSettingsDialog.tsx
  • src/components/projects/ProjectTreeItem.test.tsx
  • src/components/projects/ProjectTreeItem.tsx
  • src/components/projects/ProjectsSidebar.tsx
  • src/components/projects/WorktreeContextMenu.tsx
  • src/components/projects/WorktreeDropdownMenu.test.tsx
  • src/components/projects/WorktreeDropdownMenu.tsx
  • src/components/projects/WorktreeItem.tsx
  • src/components/projects/panes/AutoFixPane.test.tsx
  • src/components/projects/panes/AutoFixPane.tsx
  • src/components/projects/panes/GeneralPane.tsx
  • src/components/projects/panes/IntegrationsPane.tsx
  • src/components/projects/panes/McpServersPane.tsx
  • src/components/projects/worktree-close-decision.test.ts
  • src/components/projects/worktree-close-decision.ts
  • src/components/remote/RemoteConnectionRecovery.tsx
  • src/components/remote/RemoteConnectionsDialog.test.tsx
  • src/components/remote/RemoteConnectionsDialog.tsx
  • src/components/shared/SentryAuthError.test.tsx
  • src/components/shared/SentryAuthError.tsx
  • src/components/shared/WorkflowRunsModal.tsx
  • src/components/shared/workflow-run-utils.test.ts
  • src/components/shared/workflow-run-utils.ts
  • src/components/titlebar/LinuxWindowControls.tsx
  • src/components/titlebar/TitleBar.tsx
  • src/components/titlebar/TitleBar.web-connection.test.ts
  • src/components/ui/backend-label.test.tsx
  • src/components/ui/backend-label.tsx
  • src/components/ui/floating-dock.tsx
  • src/components/ui/markdown.test.tsx
  • src/components/ui/markdown.tsx
  • src/components/unread/unread-utils.test.ts
  • src/components/unread/unread-utils.ts
  • src/components/web/WebAccessAuthScreen.test.tsx
  • src/components/web/WebAccessAuthScreen.tsx
  • src/components/worktree/BranchesTab.tsx
  • src/components/worktree/NewWorktreeItems.test.tsx
  • src/components/worktree/NewWorktreeItems.tsx
  • src/components/worktree/NewWorktreeModal.tsx
  • src/components/worktree/QuickActionsTab.test.tsx
  • src/components/worktree/QuickActionsTab.tsx
  • src/components/worktree/SentryIssueItem.test.tsx
  • src/components/worktree/SentryIssueItem.tsx
  • src/components/worktree/SentryIssuesTab.tsx
  • src/components/worktree/hooks/useNewWorktreeData.ts
  • src/components/worktree/hooks/useNewWorktreeHandlers.ts
  • src/components/worktree/hooks/useNewWorktreeKeyboard.ts
  • src/hooks/session_last_opened_sync.test.ts
  • src/hooks/use-command-context.source.test.ts
  • src/hooks/use-command-context.ts
  • src/hooks/use-font-settings.test.tsx
  • src/hooks/use-font-settings.ts
  • src/hooks/use-zoom.test.tsx
  • src/hooks/use-zoom.ts
  • src/hooks/useArchiveCleanup.test.tsx
  • src/hooks/useArchiveCleanup.ts
  • src/hooks/useBackgroundInvestigation.test.tsx
  • src/hooks/useBackgroundInvestigation.ts
  • src/hooks/useBrowserPane.test.tsx
  • src/hooks/useBrowserPane.ts
  • src/hooks/useCliVersionCheck.test.tsx
  • src/hooks/useCliVersionCheck.ts
  • src/hooks/useInstalledBackends.test.ts
  • src/hooks/useInstalledBackends.ts
  • src/hooks/useLinuxFileDrop.ts
  • src/hooks/useMagicPromptAutoDefaults.ts
  • src/hooks/useMainWindowEventListeners.test.tsx
  • src/hooks/useMainWindowEventListeners.ts
  • src/hooks/useNativeWindowCloseGuard.ts
  • src/hooks/usePrWorktreeSweep.test.ts
  • src/hooks/usePrWorktreeSweep.ts
  • src/hooks/useQueueProcessor.test.tsx
  • src/hooks/useQueueProcessor.ts
  • src/hooks/useServerUpdateCheck.test.tsx
  • src/hooks/useServerUpdateCheck.ts
  • src/hooks/useSessionStatePersistence.test.tsx
  • src/hooks/useSessionStatePersistence.ts
  • src/hooks/useSwipeBack.test.tsx
  • src/hooks/useSwipeBack.ts
  • src/hooks/useUIStatePersistence.test.tsx
  • src/hooks/useUIStatePersistence.ts
  • src/hooks/useVisibilityAwareTicker.test.tsx
  • src/hooks/useVisibilityAwareTicker.ts
  • src/lib/app-update.test.ts
  • src/lib/app-update.ts
  • src/lib/backend-auto-steer.test.ts
  • src/lib/backend-auto-steer.ts
  • src/lib/cli-auth.test.ts
  • src/lib/cli-auth.ts
  • src/lib/cli-update.test.ts
  • src/lib/cli-update.ts
  • src/lib/code-review-configs.test.ts
  • src/lib/code-review-configs.ts
  • src/lib/commands/commands.test.ts
  • src/lib/commands/project-commands.ts
  • src/lib/commands/window-commands.ts
  • src/lib/environment.test.ts
  • src/lib/environment.ts
  • src/lib/hydrate-running-snapshot.test.ts
  • src/lib/hydrate-running-snapshot.ts
  • src/lib/initial-data-cache.test.ts
  • src/lib/investigation-prompt.test.ts
  • src/lib/investigation-prompt.ts
  • src/lib/model-utils.test.ts
  • src/lib/model-utils.ts
  • src/lib/native-cli-session.test.ts
  • src/lib/native-cli-session.ts
  • src/lib/platform.test.ts
  • src/lib/platform.ts
  • src/lib/query-error.test.ts
  • src/lib/query-error.ts
  • src/lib/remark-fix-interrupted-lists.test.ts
  • src/lib/remark-fix-interrupted-lists.ts
  • src/lib/remote-connections.test.ts
  • src/lib/remote-connections.ts
  • src/lib/remote-editor.test.ts
  • src/lib/remote-editor.ts
  • src/lib/remote-version.test.ts
  • src/lib/remote-version.ts
  • src/lib/restore-navigation.test.ts
  • src/lib/restore-navigation.ts
  • src/lib/session-debug.test.ts
  • src/lib/session-debug.ts
  • src/lib/session-defaults.test.ts
  • src/lib/session-defaults.ts
  • src/lib/shell-escape.test.ts
  • src/lib/shell-escape.ts
  • src/lib/startup-onboarding.test.ts
  • src/lib/startup-onboarding.ts
  • src/lib/streaming-flush.test.ts
  • src/lib/streaming-flush.ts
  • src/lib/terminal-font-loading.test.ts
  • src/lib/terminal-font-loading.ts
  • src/lib/terminal-gesture.test.ts
  • src/lib/terminal-gesture.ts
  • src/lib/terminal-instances.ts
  • src/lib/toast-action-label.test.tsx
  • src/lib/toast-action-label.tsx
  • src/lib/transport.test.ts
  • src/lib/transport.ts
  • src/lib/web-reload-state.test.ts
  • src/lib/web-reload-state.ts
  • src/lib/window-close.test.ts
  • src/lib/window-close.ts
  • src/lib/worktree-list-cache.test.ts
  • src/lib/worktree-list-cache.ts
  • src/services/chat.test.ts
  • src/services/chat.ts
  • src/services/claude-cli.ts
  • src/services/coderabbit-cli.ts
  • src/services/codex-cli.test.ts
  • src/services/codex-cli.ts
  • src/services/commandcode-cli.ts
  • src/services/commit-jobs.test.ts
  • src/services/commit-jobs.ts
  • src/services/cursor-cli.ts
  • src/services/gh-cli.ts
  • src/services/git-status.ts
  • src/services/grok-cli.ts
  • src/services/kimi-cli.ts
  • src/services/mcp.ts
  • src/services/model-catalog.test.ts
  • src/services/model-catalog.ts
  • src/services/opencode-cli.test.ts
  • src/services/opencode-cli.ts
  • src/services/pi-cli.ts
  • src/services/preferences.test.ts
  • src/services/preferences.ts
  • src/services/projects.ts
  • src/services/sentry.test.ts
  • src/services/sentry.ts
  • src/services/skills.ts
  • src/services/ui-state.ts
  • src/store/chat-store.test.ts
  • src/store/chat-store.ts
  • src/store/projects-store.test.ts
  • src/store/projects-store.ts
  • src/store/ui-store.test.ts
  • src/store/ui-store.ts
  • src/types/browser.ts
  • src/types/chat.test.ts
  • src/types/chat.ts
  • src/types/git-diff.ts
  • src/types/grok-cli.ts
  • src/types/keybindings.test.ts
  • src/types/keybindings.ts
  • src/types/kimi-cli.ts
  • src/types/preferences-platform.test.ts
  • src/types/preferences.test.ts
  • src/types/preferences.ts
  • src/types/projects.ts
  • src/types/sentry.ts
  • src/types/ui-state.ts
  • vite.config.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

figassis and others added 2 commits July 31, 2026 18:58
The upstream merge replaced the fork's `!isNativeApp()` gate on the
"Open Editor" action with upstream's `canOpenInEditor()`/`canOpenNativeApps()`,
which require native-open capability (`nativeOpenAllowed`). In web access the
fork's browser editor is just a `/code` URL and needs no native capability, so
the button/menu items were hidden (and OpenInButton returned null entirely).

Treat the browser editor as available whenever running in a browser
(`!isNativeApp()`), independent of native-open capability, across OpenInButton,
OpenInModal, and the worktree context/dropdown menus.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Upstream now refuses --no-token with a 0.0.0.0 bind unless acknowledged, so the
container failed to start ("Refusing to disable token authentication while
binding to all interfaces"). The published port sits behind the host firewall /
tailscale, so pass --allow-unsafe-no-token in the entrypoint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

8 participants