Skip to content

feat: Added migration section leading to settings application #3799

Merged
doubleface merged 2 commits intomasterfrom
feat/migrationLink
Apr 13, 2026
Merged

feat: Added migration section leading to settings application #3799
doubleface merged 2 commits intomasterfrom
feat/migrationLink

Conversation

@doubleface
Copy link
Copy Markdown
Contributor

@doubleface doubleface commented Apr 13, 2026

behind settings.migration.enabled flag

image

Summary by CodeRabbit

  • New Features

    • Added a new "Migration" navigation item in the app header; visible when the related feature flag is enabled. Translations added for English, French, Russian, and Vietnamese.
  • Chores

    • Bumped cozy-ui dependency to ^138.5.0.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 13, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e259d824-72fc-4624-a360-1b34e267b6d7

📥 Commits

Reviewing files that changed from the base of the PR and between c4226a8 and 3ed5249.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (7)
  • package.json
  • src/locales/en.json
  • src/locales/fr.json
  • src/locales/ru.json
  • src/locales/vi.json
  • src/modules/navigation/ExternalNavItem.jsx
  • src/modules/navigation/Nav.jsx
✅ Files skipped from review due to trivial changes (5)
  • src/locales/en.json
  • package.json
  • src/locales/ru.json
  • src/locales/vi.json
  • src/locales/fr.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/modules/navigation/Nav.jsx
  • src/modules/navigation/ExternalNavItem.jsx

Walkthrough

Bumps cozy-ui in package.json from ^138.3.0 to ^138.5.0. Adds Nav.item_migration translations in English, French, Russian, and Vietnamese. Adds a new exported React component ExternalNavItem that computes an external href and handles navigation (uses webview intent for flagship app, window.location otherwise). Integrates ExternalNavItem into Nav.jsx behind the settings.migration.enabled feature flag, rendering a migration link to /migration with a CloudSyncIcon.

Possibly related PRs

  • feat: Sidebar relooking #3792: Modifies src/modules/navigation/Nav.jsx and changes nav icons/labels, sharing overlap with this PR's navigation changes.

Suggested reviewers

  • rezk2ll
  • lethemanh
  • JF-Cozy
  • zatteo
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: adding a migration section that links to the settings application, which aligns with the primary functionality introduced in the PR (new ExternalNavItem component, translation keys, and conditional rendering).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/migrationLink

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 and usage tips.

codescene-delta-analysis[bot]

This comment was marked as outdated.

@bundlemon
Copy link
Copy Markdown

bundlemon bot commented Apr 13, 2026

BundleMon

Files updated (4)
Status Path Size Limits
static/js/main.(hash).js
168.46KB (+304B +0.18%) -
public/static/js/public.(hash).js
141.86KB (+51B +0.04%) -
static/js/cozy.(hash).js
919.63KB (-159B -0.02%) -
public/static/js/cozy.(hash).js
782.03KB (-165B -0.02%) -
Unchanged files (17)
Status Path Size Limits
static/js/(chunkId).(hash).js
1.17MB -
public/static/js/(chunkId).(hash).js
1.1MB -
(hash).js
336.11KB -
public/(hash).js
336.11KB -
services/qualificationMigration.js
283.13KB -
services/dacc.js
262.86KB -
public/static/js/lib-react.(hash).js
43.88KB -
static/js/lib-react.(hash).js
43.88KB -
public/static/css/cozy.(hash).css
31.56KB -
static/css/cozy.(hash).css
31.56KB -
public/static/js/lib-router.(hash).js
21.86KB -
static/js/lib-router.(hash).js
21.86KB -
static/css/main.(hash).css
17.04KB -
public/static/css/public.(hash).css
6.76KB -
manifest.webapp
3.04KB -
index.html
704B -
assets/manifest.json
185B -

Total files change +35B 0%

Groups updated (1)
Status Path Size Limits
**/*.js
7.61MB (+251B 0%) -
Unchanged groups (2)
Status Path Size Limits
**/*.{png,svg,ico}
2.19MB -
**/*.css
120.14KB -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/modules/navigation/ExternalNavItem.jsx`:
- Around line 30-32: The clickState setter in ExternalNavItem.jsx is being
called with the href string (clickState[1](href)), which corrupts the nav
visibility boolean used as isVisible in BarSearchAutosuggest.jsx; change the
call to pass a boolean (e.g., true to open or false to close) instead of the
href so the nav visibility state remains a boolean. Locate the click handler in
ExternalNavItem.jsx that references clickState and replace clickState[1](href)
with a boolean-setting call (e.g., clickState[1](true) or clickState[1](false)
as appropriate), ensuring any downstream logic that relied on the href uses a
separate prop or callback if needed. Ensure BarSearchAutosuggest.jsx still reads
isVisible as a boolean and adjust any consumers if they expected the href value.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e64cbd3d-0979-41c4-8c26-8b766ff14dab

📥 Commits

Reviewing files that changed from the base of the PR and between fb82b03 and 10a76af.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (7)
  • package.json
  • src/locales/en.json
  • src/locales/fr.json
  • src/locales/ru.json
  • src/locales/vi.json
  • src/modules/navigation/ExternalNavItem.jsx
  • src/modules/navigation/Nav.jsx

codescene-delta-analysis[bot]

This comment was marked as outdated.

@rezk2ll
Copy link
Copy Markdown
Member

rezk2ll commented Apr 13, 2026

Code review

Found 1 issue:

  1. clickState[1](false) passes a boolean to a setter that expects string | undefined | null. The clickState tuple from NavContext is useState(null) and tracks the last-clicked route path for optimistic active-state rendering in NavLink. Every other consumer resets it with undefined (see FavoriteListItem, ExternalDriveListItem). Passing false is accidentally harmless today because NavLink only uses truthy checks, but it corrupts the semantic contract of the shared state and would break any future strict-equality check on lastClicked. The correct value is undefined.

e.preventDefault()
if (clickState) {
clickState[1](false)
}
if (isFlagshipApp()) {

🤖 Generated with Claude Code

If this code review was useful, please react with 👍. Otherwise, react with 👎.

doubleface added 2 commits April 13, 2026 15:18
behind settings.migration.enabled flag
to get new CloudSync icon for migration menu in sidebar
@doubleface doubleface enabled auto-merge (rebase) April 13, 2026 13:19
Copy link
Copy Markdown

@codescene-delta-analysis codescene-delta-analysis bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gates Passed
3 Quality Gates Passed

See analysis details in CodeScene

Quality Gate Profile: The Bare Minimum
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@doubleface doubleface merged commit c61cf43 into master Apr 13, 2026
6 checks passed
@doubleface doubleface deleted the feat/migrationLink branch April 13, 2026 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants