Skip to content

feat: auto-link titles, note animations, activity stats, revision timeline#219

Merged
github-actions[bot] merged 1 commit into
developfrom
feature/product-features-batch
Apr 23, 2026
Merged

feat: auto-link titles, note animations, activity stats, revision timeline#219
github-actions[bot] merged 1 commit into
developfrom
feature/product-features-batch

Conversation

@tomymaritano

Copy link
Copy Markdown
Collaborator

Summary

4 new features + 1 verified as already implemented.

Auto-Link Title on URL Paste

  • Paste URL → raw URL inserted immediately → background title fetch → replaces with [Title](url)
  • 3s timeout, 16KB HTML read limit, graceful fallback to raw URL

Note List Animations

  • CSS fade-slide-in with staggered delays (30ms/item, capped at 10)
  • Subtle: 150ms ease, no jank on long lists

Activity Stats (Sidebar)

  • GitHub-style heatmap showing 26 weeks of activity
  • Current streak counter, total notes
  • Collapsible sidebar section

Revision History Timeline

  • Vertical timeline replacing flat list
  • Word delta badges, detail pane with restore/copy actions
  • Keyboard accessible

Verified as already working

  • [[ wikilink autocompletion (packages/wikilinks already has full implementation)

Test plan

  • pnpm typecheck — 17/17 pass
  • pnpm test — 16/16 pass

🤖 Generated with Claude Code

…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>
@vercel

vercel Bot commented Apr 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
readide Error Error Apr 23, 2026 11:40pm

Request Review

@coderabbitai

coderabbitai Bot commented Apr 23, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@tomymaritano has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 46 minutes and 20 seconds before requesting another review.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: ed4230e2-23c0-4123-8142-c1d78fe7a5c0

📥 Commits

Reviewing files that changed from the base of the PR and between d58dbf8 and 2b33e2a.

📒 Files selected for processing (17)
  • apps/desktop/src/main/handlers/noteHandlers.ts
  • apps/desktop/src/main/index.ts
  • apps/desktop/src/preload/api/app.ts
  • apps/desktop/src/preload/api/index.ts
  • apps/desktop/src/preload/api/notes.ts
  • apps/desktop/src/preload/api/types.ts
  • apps/desktop/src/preload/index.ts
  • apps/desktop/src/renderer/components/MarkdownEditor.tsx
  • apps/desktop/src/renderer/components/NoteList.tsx
  • apps/desktop/src/renderer/components/editor/RevisionHistoryPanel/RevisionHistoryPanel.module.css
  • apps/desktop/src/renderer/components/editor/RevisionHistoryPanel/RevisionHistoryPanel.tsx
  • apps/desktop/src/renderer/components/sidebar/ActivityStats.module.css
  • apps/desktop/src/renderer/components/sidebar/ActivityStats.tsx
  • apps/desktop/src/renderer/components/sidebar/Sidebar.tsx
  • apps/desktop/src/renderer/components/sidebar/index.ts
  • apps/desktop/src/renderer/hooks/useNotes.ts
  • apps/desktop/src/renderer/styles/note-list.css
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/product-features-batch

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.

@github-actions github-actions Bot enabled auto-merge (squash) April 23, 2026 23:40
@github-actions github-actions Bot merged commit 4f17e78 into develop Apr 23, 2026
14 of 15 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment on lines +186 to +187
const result = await window.readied.git.checkout(notebookId, oid);
if (result.success) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

Comment on lines +584 to +586
const currentDoc = view.state.doc.toString();
const urlIndex = currentDoc.indexOf(plainText, from > 20 ? from - 20 : 0);
if (urlIndex === -1) return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant