chore(release): v0.5.5 — Smart Onboarding, About Menu, Bug Reports & Fixes#73
Conversation
|
Warning Review limit reached
More reviews will be available in 46 minutes and 53 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?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 credits. 🚦 How do rate 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 see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe PR bumps the app to v0.5.5, adds release notes, changes onboarding to detect existing users and route to versioned notes, updates startup note selection, and removes the Settings auto-update block while syncing displayed version values. Changesv0.5.5 Release and Smart Onboarding
Sequence Diagram(s)sequenceDiagram
participant run_onboarding
participant base_directory
participant app_resources
run_onboarding->>base_directory: check onboarding marker and scan qualifying .md files
alt existing user
run_onboarding->>base_directory: remove older New Features in v*.md files
run_onboarding->>app_resources: copy New Features in v{version}.md with _up_ fallback
else new user
run_onboarding->>base_directory: delete bundled New Features in v*.md files
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 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 |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src-tauri/src/commands/fs.rs (1)
452-476: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winNew Features note will reappear on every launch after the user deletes it.
The copy is gated only by
is_existing_user && !note_target_path.exists(), not byis_new_version. The note itself tells users "(If you have read this note, feel free to delete it)", but once deleted, the next launch re-satisfies!note_target_path.exists()and silently re-copies it from resources, resurrecting it on every startup until they upgrade again.Gate the copy on
is_new_version(already computed at Line 262) so it is provisioned once per upgrade.🐛 Proposed fix
- if is_existing_user && !note_target_path.exists() { + if is_existing_user && is_new_version && !note_target_path.exists() {🤖 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 `@src-tauri/src/commands/fs.rs` around lines 452 - 476, The note provisioning logic in the fs command re-copies “New Features” notes every launch after deletion because it only checks `is_existing_user && !note_target_path.exists()`. Update the conditional in the note-copy block to also require `is_new_version` (the flag already computed earlier in the same flow) so the bundled note is restored only once per upgrade. Keep the cleanup behavior intact, and make sure the change is applied in the same section that uses `note_target_path`, `note_filename`, and the resource_dir copy logic.
🤖 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 `@src-tauri/src/commands/fs.rs`:
- Around line 245-261: The existing-user detection in the fs command only checks
top-level markdown files via read_dir on base, so vaults with notes only in
subfolders can be misclassified as new installs. Update the logic around the
version_marker check in the relevant fs helper to use the same recursive note
discovery as get_notes, or otherwise recurse through nested folders when
counting notes, so any .md file anywhere in the vault counts as an existing
user.
In `@src/App.tsx`:
- Around line 112-131: The version marker is being saved too early in App.tsx,
which can prevent the “New Features in v{currentVersion}.md” note from ever
being opened when notes load later. In the logic around
lastSeenVersion/currentVersion, delay the
localStorage.setItem('papercache-last-seen-version', currentVersion) call until
after you have successfully found and selected the target note (or the welcome
note fallback), so the effect can re-run on later notes updates and still route
correctly.
---
Outside diff comments:
In `@src-tauri/src/commands/fs.rs`:
- Around line 452-476: The note provisioning logic in the fs command re-copies
“New Features” notes every launch after deletion because it only checks
`is_existing_user && !note_target_path.exists()`. Update the conditional in the
note-copy block to also require `is_new_version` (the flag already computed
earlier in the same flow) so the bundled note is restored only once per upgrade.
Keep the cleanup behavior intact, and make sure the change is applied in the
same section that uses `note_target_path`, `note_filename`, and the resource_dir
copy logic.
🪄 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: defaults
Review profile: CHILL
Plan: Pro
Run ID: 6f16a5da-ba72-4efd-9e95-ea9946147ce5
⛔ Files ignored due to path filters (1)
src-tauri/Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (10)
AUDIT_LOG.mdCHANGELOG.mdnotes/New Features in v0.5.5.mdpackage.jsonsrc-tauri/Cargo.tomlsrc-tauri/src/commands/fs.rssrc-tauri/tauri.conf.jsonsrc/App.tsxsrc/Settings.tsxsrc/setupTests.ts
…ection, note provisioning, and routing effect timing
Overview of Changes in v0.5.5
Added
Welcome.mdwithout copying or opening release note files. Existing users upgrading from previous versions automatically receiveNew Features in v0.5.5.mdand are taken directly to it upon opening the new version.notes/New Features in v0.5.5.md.Fixed
fs.rs) and TypeScript (useNoteStorage.ts,markdownPlugin.ts,GraphView.tsx) to guarantee forward slashes (/) across all platforms, preventing broken/filelinks and duplicate notes on Windows.@emnapiWASM fallback packages todevDependenciesto ensure deterministic cross-OS lockfile resolution duringnpm ci.Performance Reporting (Vite Build Output)
Bundle Size Output:
Note on Code Splitting / Dynamic Import Warning: Heavy dependencies like 3D Force Graph (
react-force-graph-3d+three.js) and physics (quadtree) are already dynamically imported vialazy(() => import('./GraphView')), successfully splitting them into separate chunks. The main chunk (index.js, 304 kB gzipped) contains React core and the CodeMirror editor engine, ensuring instant text editing responsiveness on launch without loading spinners.Verification & Pre-PR Checks
npm run lintpassed cleanly (0 errors)npx vitest runpassed (35/35 unit tests passed)npm run buildcompiled successfullySummary by CodeRabbit
New Features
Bug Fixes
Chores