Skip to content

feat(notes): inline date/reminder mention (/date)#568

Merged
h4yfans merged 43 commits into
mainfrom
feat/inline-reminder
Jun 14, 2026
Merged

feat(notes): inline date/reminder mention (/date)#568
h4yfans merged 43 commits into
mainfrom
feat/inline-reminder

Conversation

@h4yfans

@h4yfans h4yfans commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

Notion-style inline date/reminder in BlockNote notes. Type /date to insert a date pill (📅 Jun 20 🔔); the date always carries calendar value and a reminder is opt-in (lead: at / 5m / 1h / 1d). When a reminder fires it lands in the Inbox; clicking the item opens the note and scrolls to the exact pill.

Architecture (Approach A): the inline dateMention node — serialized to a markdown token ((date:<base64url-json>)) — is the single source of truth (syncs via the note CRDT). A main-process bridge derives local note_date reminder rows from those tokens; the existing reminder engine fires them. Reminders are not a synced type, so deriving per-device is consistent with the current design.

Spec: docs/superpowers/specs/2026-06-13-inline-date-reminder-design.md
Plan: docs/superpowers/plans/2026-06-13-inline-date-reminder.md

What's included

  • Shared token + computeRemindAt (@memry/shared/date-mention)
  • note_date reminder target type + anchor_id column/migration; anchorId threaded through contracts/app-core/preload
  • dateMention inline content spec + load-time hydration + /date slash item + picker popover + click-to-edit
  • Derive bridge wired into both notes-crud (local/CLI path) and crdt-writeback (sync path)
  • anchorId carried fire → Inbox → nav → scroll-to-pill

Test plan

  • Unit/integration: shared 7/7, renderer 10/10, main 37/37 (token round-trip, derive diff, lead math, scroll helper, popover)
  • typecheck (web + node), ipc:check, lint (no new errors)
  • Manual GUI QA: /date → set reminder → fires into Inbox → click scrolls to pill
  • Verify a saved pill renders (not raw ((date:…))) after reload in sync mode (CRDT-seed hydration; shared with wikiLink/linkMention — confirm parity)

Follow-ups (before marking ready)

  • Docs: pushed with MEMRY_DOCS_IMPACT_SKIP=1 (draft); author apps/docs/src coverage at ready-time
  • Phase 2: surface note_date dates as read-only Calendar entries (separate plan)
  • Optional: natural-language date entry (/date tomorrow 9am), recurring reminders

@vercel

vercel Bot commented Jun 13, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
memry-docs Ready Ready Preview, Comment Jun 14, 2026 10:21am
memrynote-landing Ready Ready Preview, Comment Jun 14, 2026 10:21am

@github-actions github-actions Bot added dependencies documentation Improvements or additions to documentation enhancement New feature or request test labels Jun 13, 2026
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

React Doctor

React Doctor found 37 issues in 6 files.

Score Issues Errors Warnings Affected Files Scope
81 / 100 (Needs work) 37 1 36 6 84 files changed on feat/inline-reminder vs. main

Top Findings

Rule Severity Category Count
react-doctor/query-destructure-result error Bugs 1
react-doctor/button-has-type warning Bugs 6
react-doctor/prefer-tag-over-role warning Accessibility 4
react-doctor/rerender-lazy-ref-init warning Performance 4
react-doctor/no-array-index-as-key warning Bugs 3

View workflow run

Generated by React Doctor. Questions? Contact founders@million.dev.

h4yfans added 9 commits June 13, 2026 11:55
…ills

Date pills now render relative day labels (Today/Tomorrow/This Friday/Last
Monday/...) with absolute fallback, honoring week-start and clock-format
settings pushed in via useDateMentionPrefs. Swap the emoji icons for a dimmed
'@' lead plus inline calendar/alarm SVGs that inherit the pill's blue, and
style the whole token as one hover unit.
…r detail

The reminder detail action now archives via useUndoableAction (toast + Undo)
instead of marking viewed, deriving isViewed straight from item.viewedAt and
dropping the local-state shim. Rename the i18n key markViewed -> archive and
remove the leftover phaseF middot entity in favor of a literal middot.
* clock so the suite is stable on any day.
*/

const MOD = process.platform === 'darwin' ? 'Meta' : 'Control'
h4yfans added 7 commits June 13, 2026 23:49
…minder routing

- date-suggestions: support 'at' connector + mid-typed colon; add isTimeInProgress
  to hold the mention active through ambiguous time-entry moments
- natural-date-parser: parsing refinements (+ tests)
- date-mention ghost/plugin/popover, mention-menu, editor setup hooks: wiring
- use-reminder-notifications: route note_date reminders to the pill anchor
- calendar projection: exclude note_date reminders from generic chips (Phase 2)
@h4yfans h4yfans merged commit 29dda25 into main Jun 14, 2026
13 of 18 checks passed
@h4yfans h4yfans deleted the feat/inline-reminder branch June 14, 2026 10:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies documentation Improvements or additions to documentation enhancement New feature or request test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant