Skip to content

Add checklists to notes, matching bullet list layout - #609

Open
fredrivett wants to merge 7 commits into
mainfrom
fredrivett/checklists-notes-implement
Open

fredrivett wants to merge 7 commits into
mainfrom
fredrivett/checklists-notes-implement

Conversation

@fredrivett

@fredrivett fredrivett commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

What & why

Notes now support checklists (- [ ] / - [x] markdown) in the editor, typed as [ ] or - [ ] , with the checkbox drawn in the bullet's gutter so switching a list between bullets and checkboxes keeps the same indent, text start and row heights. Cards, the detail loading placeholder and article cards render checklist items as an inert box matching the editor's (a native input was clickable and invalid inside the card's <button>), and the card height estimate sizes them like bullet lists. Nested lists of any kind now keep the list's rhythm: a nested item sits the same gap below its parent as siblings do (the editor previously added ~3.5px above every nested list).

Checklist

  • User-facing change → added/updated a PostHog event (and a funnel/insight for a new flow), or N/A — N/A: a formatting option within the existing note flow, not a key action
  • User-facing or service change → docs updated (README features/roadmap/services, .env.example, in-app help, CONTRIBUTING.md, onboarding checklist), or N/A — README Done list
  • New error paths report via captureServerException / the error boundary, or N/A — N/A
  • New behavior is covered by tests, or N/A
  • If this fixes a recurring defect, considered a guardrail via the learn skill, or N/A — N/A

Notes

  • @tiptap/extension-list is now a direct dependency — it was already installed at the same version via StarterKit.
  • Tests: markdown round-trip (incl. nested, title-first), card/inert-box rendering, card-aspect parity with bullet lists, and browser stories that measure checklist-vs-bullet alignment, nested-list item gaps across editor + card, and typing - [ ] to start a checklist.
  • Checked items aren't struck through — the decoration would bleed into nested (possibly unchecked) items. Possible follow-up.

🤖 Generated with Claude Code


Summary by cubic

Notes now support checklists (- [ ] / - [x] in markdown). The checkbox is drawn in the bullet's gutter, so switching a list between bullets and checkboxes keeps the same indent, text start, and row heights. Typing [ ] at the start of a bullet item starts a checklist.

Rendered markdown — note cards, the detail loading placeholder, and article cards — draws checklist items as inert boxes styled like the editor's checkbox; a native input was clickable and invalid inside the card's <button>. Each box announces its checked state to screen readers via hidden text, since a checkbox role would be interactive inside the button. Card height estimates now strip the checkbox marker so checklists size exactly like bullet lists, * bullets included. Nested lists of any kind also keep the list's rhythm now: a nested item sits the same gap below its parent as siblings do (previously ~3.5px more).

Notes

  • Checked items are not struck through; the decoration would bleed into nested (possibly unchecked) items. Possible follow-up.
  • @tiptap/extension-list is now a direct dependency, previously pulled in at the same version via StarterKit.

Written for commit 89582ee. Summary will update on new commits.

Review in cubic

fredrivett and others added 5 commits October 5, 2026 21:32
Task lists (`- [ ]` / `- [x]` in markdown) via TipTap's TaskList/TaskItem,
nestable like other lists. Typing `[ ] ` at the start of a bullet item turns it
into a checklist item, so `- [ ] ` works as in markdown — otherwise the brackets
stayed as text and the note reopened as a checklist.

Checklists are styled to match bullet lists exactly: the checkbox is drawn out
of flow in the bullet's gutter, so indent, text start and row heights are
unchanged when switching between the two. The shared styles also cover the
inert box rendered markdown will draw.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Rendered markdown draws checklist items as an inert box styled like the
editor's checkbox, instead of a clickable native input — which was also
invalid inside the card's <button>. Applies to the note card, the note detail
loading placeholder and the article card.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The card aspect estimate now strips a checklist's `[ ]`/`[x]` marker, since
its checkbox sits in the bullet's gutter rather than taking text width.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A nested list sat a few px further from its parent than siblings do: the
paragraph the editor wraps item text in kept its bottom margin above it.
Neither the nested list nor that paragraph adds a gap now, so nested items
follow the same item spacing — in the editor and on cards alike. A browser
story measures every item gap across bullet, numbered and checklist nesting.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
abode Ignored Ignored Preview Oct 5, 2026 8:53pm UTC

Request Review

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 17 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread app/src/components/note/task-checkbox.tsx Outdated
Comment thread app/src/components/article/article-card.tsx
Comment thread app/src/lib/items/card-aspect.ts Outdated
Comment thread app/src/components/note/note-editor.stories.tsx Outdated
fredrivett and others added 2 commits October 5, 2026 21:53
The inert box was aria-hidden, leaving screen readers no way to tell checked
items from unchecked. It now carries visually hidden "Checked:"/"Unchecked:"
text (a checkbox role would be interactive, invalid inside the card button).
Covers the article card too, and the list-rhythm story skips that text when
measuring lines.

Also adds a story typing `[ ] ` into a new item of an existing bullet list,
and words the `- [ ] ` story's comment to match what it covers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The emphasis strip removed a `*` bullet's marker before the block-marker strip
ran, so `* [ ] item` kept its `[ ]` in the measured width. Strip block markers
first.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

1 participant