sync: merge upstream coollabsio/jean (Opus 5, remote/mobile, jean-core crate) - #12
sync: merge upstream coollabsio/jean (Opus 5, remote/mobile, jean-core crate)#12figassis wants to merge 226 commits into
Conversation
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
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
|
Important Review skippedToo many files! This PR contains 564 files, which is 464 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (564)
You can disable this status message by setting the 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. Comment |
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>
Merges
upstream/main(coollabsio/jean) into the fork. Fork was 70 ahead / 223 behind, last synced 2026-06-27.What upstream brings
jean-corecrate (major refactor:chat/,projects/,jean_mcp_core, etc. moved out ofsrc-tauri/); commands now route through a singledispatch_core_command→dispatch_command()Conflict resolution (29 files)
types.rs,dispatch.rs,commands.rs,preferences.ts,projects.ts, settings panes, etc.codex_sandbox_disabled()guards onto upstream's newmatch modesandbox structure.list_linear_issuesMCP description + upstream's new worktree tools.jean-core); fork's Linear/Outline commands already route viadispatch_command, so nogenerate_handler!re-add needed. Added fork's global prefs (outline_api_key,outline_url,reference_picker_extra_prune_dirs,web_editor_url) tojean-coreAppPreferences.jean-corede-#[tauri::command]'d (jean-core has no tauri dep; matches upstream's plain-fn + dispatch convention).jean-corecrate into the build context; moved#![recursion_limit=512]onto thejean-corecrate root (large MCPjson!registry).Verification
make docker-build→ jean:dev compiles clean.bun run typecheck+bun run lint→ clean.ENABLE_TOOL_SEARCH(claude.rs), codex sandbox guards (codex.rs).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.🤖 Generated with Claude Code