feat: auto-link titles, note animations, activity stats, revision timeline#219
Conversation
…eline
Auto-Link Title on URL Paste:
- Paste URL → inserts raw URL immediately
- Background fetch of <title> via editor:fetchUrlTitle IPC (3s timeout)
- Replaces URL with [Page Title](url) on success, keeps raw URL on failure
- New editor API in preload + IPC handler in main process
Note List Animations:
- CSS fade-slide-in animation (150ms) with staggered 30ms delay per item
- Capped at 10 items to avoid jank on long lists
- Uses stable key={note.id} so animation only plays on list changes
Activity Stats (GitHub-style heatmap):
- notes:activityStats IPC handler queries last 52 weeks
- Compact heatmap in sidebar (collapsible, default collapsed)
- Shows total notes, current streak, color-coded intensity
- Uses design tokens for all colors
Revision History Timeline:
- Vertical timeline with dots, connecting lines, timestamps
- Word delta badges per commit (added/removed/edited)
- Detail pane with SHA, author, restore + copy actions
- Keyboard accessible, pure CSS transitions
Already implemented (verified): wikilink [[ autocompletion
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 46 minutes and 20 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (17)
✨ 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.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2b33e2a5be
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const result = await window.readied.git.checkout(notebookId, oid); | ||
| if (result.success) { |
There was a problem hiding this comment.
Require confirmation before destructive restore
Calling restore immediately triggers git.checkout for the notebook with no confirmation step, so a single misclick can revert the repository and discard local edits. This is especially risky because checkout in the main service is forced (force: true), which drops uncommitted work rather than prompting. Please add an explicit confirmation flow (or undo safeguard) before invoking restore.
Useful? React with 👍 / 👎.
| const currentDoc = view.state.doc.toString(); | ||
| const urlIndex = currentDoc.indexOf(plainText, from > 20 ? from - 20 : 0); | ||
| if (urlIndex === -1) return; |
There was a problem hiding this comment.
Target pasted URL by range instead of global search
After title fetch completes, the code finds the URL to replace by running indexOf over the whole document from an approximate offset. If the same URL already exists near that point (or is pasted multiple times before the async callback resolves), this can replace the wrong occurrence and mutate unrelated text. The replacement should be anchored to the inserted range (or a mapped position) rather than a document-wide string search.
Useful? React with 👍 / 👎.
Summary
4 new features + 1 verified as already implemented.
Auto-Link Title on URL Paste
[Title](url)Note List Animations
fade-slide-inwith staggered delays (30ms/item, capped at 10)Activity Stats (Sidebar)
Revision History Timeline
Verified as already working
[[wikilink autocompletion (packages/wikilinks already has full implementation)Test plan
pnpm typecheck— 17/17 passpnpm test— 16/16 pass🤖 Generated with Claude Code