chore: bump version to v2.4.0 - #4401
Conversation
|
Warning Review limit reached
Next review available in: 36 seconds Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe PR prepares the repository for v2.4.0, synchronizes release metadata, updates client navigation and responsive layouts, batches agent update prompts, normalizes search and sort controls, and changes capability catalog branch resolution. ChangesRelease and interface updates
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related issues
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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 |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@e2e/core-flows.e2e.ts`:
- Around line 10781-10816: Run the required client validation for the responsive
shell test covering NoodleView, including pnpm check and pnpm smoke:ui, and
complete the pending manual browser verification before merge.
- Around line 10807-10808: Add an assertion in the desktop restoration test near
the existing checks for desktopAccountSwitcher and mobileBottomNav to verify
mobileHeader is hidden as well, ensuring simultaneous desktop and mobile headers
fail the test.
In `@packages/client/src/components/noodle/NoodleShell.tsx`:
- Line 238: Align the responsive container breakpoint with the intended 1024px
desktop/mobile transition by adding a 1024px container to the relevant Noodle
layout wrapper. Update the rules at NoodleShell.tsx lines 238, 384, and 527-535
and NoodleBrowserChrome.tsx line 24 to use that container consistently for
NoodleShell and BrowserChrome visibility, preserving their existing desktop and
mobile behavior.
In `@win/installer/install.bat`:
- Around line 14-16: Update the installer metadata near RELEASE_TAG and
RELEASE_COMMIT to reference an existing repository tag, or create the intended
v2.4.0 tag, and pin RELEASE_COMMIT to the corresponding commit SHA so the
default installation resolves a valid commit without relying on
MARINARA_RELEASE_COMMIT.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 6f1ac195-c726-4603-9a1b-7b31a436e4ae
📒 Files selected for processing (30)
CHANGELOG.mdREADME.mdTRADEMARKS.mdandroid/app/build.gradledocs/connections/organizing-connections.mde2e/core-flows.e2e.tspackage.jsonpackages/client/package.jsonpackages/client/public/manifest.jsonpackages/client/src/components/agents/AgentCatalogView.tsxpackages/client/src/components/chat/HomeCreditsModal.tsxpackages/client/src/components/layout/ChatRowPeek.tsxpackages/client/src/components/layout/ChatSidebar.tsxpackages/client/src/components/layout/TopBar.tsxpackages/client/src/components/modals/WhatsNewModal.tsxpackages/client/src/components/noodle/NoodleBrowserChrome.tsxpackages/client/src/components/noodle/NoodleHome.tsxpackages/client/src/components/noodle/NoodleShell.tsxpackages/client/src/components/noodle/NoodlerHome.tsxpackages/client/src/components/panels/ConnectionsPanel.tsxpackages/client/src/components/panels/PresetsPanel.tsxpackages/client/src/localization/locales/en.jsonpackages/client/src/styles/globals.csspackages/server/package.jsonpackages/server/src/services/capability-packages/package-manager.service.tspackages/shared/package.jsonpackages/shared/src/constants/defaults.tsscripts/regressions/capability-package-lifecycle.regression.tswin/installer/install.batwin/installer/installer.nsi
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@e2e/core-flows.e2e.ts`:
- Around line 11750-11752: Update the bounding-box polling assertion for
mobileChatSidebar so a null boundingBox result cannot satisfy the closed-sidebar
position check; replace the 0 fallback with a non-passing value such as
Number.POSITIVE_INFINITY while preserving the existing x-position threshold.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 2d6ca07c-5cab-4a83-9fa2-20ee9b806b6e
📒 Files selected for processing (1)
e2e/core-flows.e2e.ts
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/client/src/components/agents/AgentUpdatePrompter.tsx (1)
20-92: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winRe-check pending updates when the prompt flow ends.
pendingUpdateswraps a TanStack query, sopendingUpdates.refetch()is available. Call it infinallyafteractiveUpdate.current = nullso updates that arrive during the dialog/install/decline flow are evaluated with fresh data instead of staying unprompted until another dependency changes.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/client/src/components/agents/AgentUpdatePrompter.tsx` around lines 20 - 92, The prompt flow in the effect must refresh pending updates when it finishes. In the existing finally block around activeUpdate.current, set it to null and then call pendingUpdates.refetch() so updates arriving during the dialog, installation, or dismissal flow are re-evaluated with fresh query data; include the refetch function’s dependency as required by the effect.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@packages/client/src/components/agents/AgentUpdatePrompter.tsx`:
- Around line 20-92: The prompt flow in the effect must refresh pending updates
when it finishes. In the existing finally block around activeUpdate.current, set
it to null and then call pendingUpdates.refetch() so updates arriving during the
dialog, installation, or dismissal flow are re-evaluated with fresh query data;
include the refetch function’s dependency as required by the effect.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: ce0982b8-8bd1-4041-9673-b70d658c726a
📒 Files selected for processing (3)
e2e/core-flows.e2e.tspackages/client/src/components/agents/AgentUpdatePrompter.tsxpackages/client/src/localization/locales/en.json
|
@coderabbitai review |
✅ Action performedReview finished.
|
Why
Marinara Engine has accumulated enough substantial work since v2.3.5 to warrant a minor release. This publishes that work as v2.4.0 and keeps the application, installers, release notes, Home surfaces, and final UI polish on one release identity.
Closes #4400
Closes #4404
Translation follow-up: #4402
Changes
Unreleasedchangelog entries to2.4.0while preserving the historical2.3.5sectionAPP_VERSION, PWA manifest, Windows installer, and Android metadataversionCodefrom 40 to 416.5remwidth so Lorebooks matches the other tabsrelease/*Engine builds through the Marinara-Agents staging catalog so v2.4.0 candidates receive compatible package manifests and artifactsImpact
The Home version label and What's New notice now identify v2.4.0, and release and installer metadata consistently target tag
v2.4.0. World Maps follows the standard Agent navigation path instead of adding dedicated app-chrome shortcuts. Sidebar controls now use consistent accent and geometry tokens rather than one-off styling. Noodle remains usable when desktop sidebars squeeze the center pane or the desktop window is narrowed, without duplicating its compact interface. Download Agents now presents its detail actions with one consistent button vocabulary. Release branches also follow the Agent staging channel, allowing v2.4.0 release candidates to install the matching Agent packages without weakening runtime compatibility checks. When several installed Agents have updates, users now receive one consolidated, dismissible update decision instead of a cascade of pop-ups.The translated Connections guides still quote the old ellipsis-bearing label; #4402 tracks the required
docs-i18nmirror update.Root causes
--muted-foregroundtheme token rather than the configurable chat-chrome accent token.mari-chrome-sort-field, but its canonical width existed only as a Chats-tab utility class, allowing longer Lorebooks options to expand the native selectstagingbranch, sorelease/v2.4.0read the stable catalog and rejected Long-Term Memory at its former<2.4.0ceilingValidation evidence
pnpm version:check— passedpnpm credits:check— passed after the required generated credits refreshpnpm localization:check— passed as part of the final repository checkpnpm --filter @marinara-engine/server exec tsx ../../scripts/regressions/capability-package-lifecycle.regression.ts— passedpnpm check— passed after the release-channel correctionpnpm smoke:ui— 168 passed and 92 skipped; exposed six stale v2.4.0 label/announcement assertions or timing assumptionspnpm exec playwright test e2e/core-flows.e2e.ts --grep "What's New opens once|Professor Mari chat fills|Conversation media searches match|mobile topbar remains reachable"— 6 passed, 2 skipped after repairing all six smoke failurespnpm exec playwright test e2e/core-flows.e2e.ts --project=desktop-chromium --grep 'Noodle uses its mobile shell when the desktop center pane is narrow'— passed with the desktop-restoration header assertionpnpm exec playwright test e2e/core-flows.e2e.ts --project=mobile-chromium --grep 'mobile topbar remains reachable while sidebars switch'— passed after the CodeRabbit bounding-box correctionpnpm exec playwright test e2e/core-flows.e2e.ts --project=desktop-chromium --grep 'World Maps stays in Agents and Chat Settings'— passedpnpm exec playwright test e2e/core-flows.e2e.ts --project=desktop-chromium --grep 'empty chat hover previews inherit the configured accent|resource panel sort fields share the canonical width'— 2 passedpnpm exec playwright test e2e/core-flows.e2e.ts --project=desktop-chromium --grep 'Noodle uses its mobile shell when the desktop center pane is narrow'— passedpnpm exec playwright test e2e/core-flows.e2e.ts --grep 'downloadable agent catalog is usable on desktop and mobile'— 2 passedpnpm localization:check— passed after the consolidated update-dialog copy was addedpnpm exec playwright test e2e/core-flows.e2e.ts --grep "Agent updates share one dismissible prompt"— 2 passed across desktop and mobilepnpm check— passed after the [Issue]: Consolidate or disable agent update pop-ups on refresh #4404 implementationManual verification
pnpm smoke:uiv2.4.01024pxrelease/v2.4.0checkout can refresh Download Agents and install Long-Term Memory from the staging catalogSummary by CodeRabbit