feat: toggle syntax, UI fixes, demos, screenshots & CI#22
Merged
Conversation
…ed content
Replace HTML comment syntax (`<!-- cept:block -->`) for toggles with a cleaner
Markdown-native syntax:
> Toggle summary
Indented content inside the toggle
The preprocessor distinguishes toggles from blockquotes by checking whether
the continuation lines are indented (toggle) or prefixed with `>` (blockquote).
Two consecutive blank lines end a toggle.
Includes:
- Preprocessor that converts toggle syntax to cept:block comments before remark
- Enhanced list item conversion for nested toggle support
- Updated serializer to output the new syntax
- 14 new test cases covering all documented scenarios
- Documentation page with syntax reference and all test cases
https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Contributor
Preview DeploymentThe web app for this PR has been deployed: Use this to verify the app works correctly, especially for dependency updates. |
The changelog output from release-it can contain backticks, which break the JavaScript template literal interpolation in the GitHub Actions script. Pass all step outputs through environment variables instead. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Contributor
Release Version Check
This version will be released automatically when this PR is merged to Changelog preview0.2.0 (2026-03-07)Features
Bug Fixes
Documentation
CI/CD
|
- `> text` is now always a toggle (even without indented continuation) - Only `> text` followed immediately by another `> ` line is a blockquote - Toggle content is preprocessed recursively, enabling toggle-in-toggle - Added `> ` input rule to Toggle extension (priority 110, above blockquote) so typing `> ` in the editor creates a toggle like Notion - Added toggle demo section to features page with nested toggle examples - Updated docs and test cases for new behavior https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Add ProseMirror plugin to handle click events on toggle summaries, toggling the open/close state via transaction (native <details> click behavior is suppressed in contenteditable) - Add markdown serialization via tiptap-markdown storage, outputting `> summary` + 2-space-indented content instead of raw HTML - Add toggleToggleOpen command for programmatic toggle control https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Prevent spurious text underlines from browser writing suggestions by setting text-decoration-line: none on text elements and disabling writingsuggestions/autocorrect attributes - Enhance link styling with visible underline color, thickness, and hover transition so links clearly stand out from text - Replace braille dots drag handle (\2807) with a proper 2x3 dot grid using radial-gradient for a Notion-like grip handle appearance https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Rewrite demo features page with actual working examples of ALL implemented features: toggles (with nesting), callouts, links, code blocks, tables, task lists, blockquotes, math, formatting - Use proper HTML syntax for callouts and toggles in demo content (required because tiptap-markdown loads content, not CeptMarkdownParser) - Add link demo to welcome page - Add keyboard shortcuts table to getting started page - Add space management section with toggle examples - Fix reset all data to also recreate demo space (not leave empty) https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Replace "View source" text link with GitHub logo icon in docs banner - Add Toggle Syntax docs page with comprehensive examples - Add Markdown Extensions docs page explaining standard vs Cept syntax - Add Icons Reference docs page for all custom icons in the app - Add source paths for new docs pages - Update guides and reference index pages https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Add feature-screenshots.spec.ts with tests for every feature: landing page, editor, sidebar, toggles, callouts, code blocks, tables, task lists, blockquotes, text formatting, drag handle, slash command menu, inline toolbar, command palette, settings, docs space, and getting started page - Add update-screenshots.yml CI workflow that captures screenshots and commits them back to the branch (following nsheaps/private-pages pattern) - Screenshots saved to docs/screenshots/features/ for documentation https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
…paths - Allow screenshot CI workflow to run on draft PRs - Add docs/content/guides/markdown-extensions.md source file - Fix docs-icons source path to match existing icon-reference.md https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Set working-directory to e2e/ so playwright can find its config. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Use navigateToPage helper with timeout-based detection instead of getByText which can fail in CI when demo pages aren't loaded yet. Tests now skip gracefully instead of failing. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
… errors - screenshot-utils: use .first() for selectors matching multiple elements - screenshot-utils: waitFor attached state before taking element screenshots - callout test: add try/catch for DOM detachment during re-renders https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Screenshot commits now use the GitHub App automation bot instead of github-actions[bot], and CI is no longer skipped for these commits. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
d89a324 to
64d5323
Compare
actions/checkout with a ref creates a detached HEAD, so `git push origin <branch>` fails because no local branch exists. Use `HEAD:refs/heads/<branch>` refspec to push correctly. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Create a local branch from detached HEAD and pull --rebase before pushing to handle cases where the branch advanced after checkout. https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
- Add per-space save/load functions in StorageContext (saveSpaceState,
loadSpaceState, readSpacePageContent, writeSpacePageContent, etc.)
- Save current space state before switching or creating a new space
- Load space state from per-space workspace files on switch
- Show all spaces from manifest in settings (not just hardcoded default)
- Register demo space in manifest on first init
- Use space-aware page content helpers throughout App.tsx
Also embed screenshots in documentation pages:
- Add {{base}} placeholder system for asset URLs in docs content
- resolveDocsContent() resolves placeholders at read time using
document.baseURI for correct paths in dev and preview deploys
- Symlink docs/screenshots into packages/web/public/ for Vite builds
- Add screenshots to Features and Introduction docs pages
https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
Skip all expensive steps (install, playwright, commit) when the last commit is itself a screenshot update, breaking the infinite loop of screenshot commit → synchronize event → screenshot run → commit → ... https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj
This was referenced Mar 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Comprehensive set of fixes and improvements to toggles, editor UI, demo content, documentation, spaces, and CI:
Space Persistence (Bug Fix)
workspace-state.jsonandpages/directory under.cept/spaces/{id}/Toggle Fixes
>creates a toggle, not a blockquote — Input rule with priority 110 (higher than blockquote's 100)> summary/ indented content viaaddStorage()markdown configEditor UI Fixes
text-decoration-line: noneand disabled browser writing suggestionsDemo Content
<div data-type="callout">syntaxhandleClearAllDataresets spaces manifest, recreates demo spaceDocumentation with Screenshots
{{base}}placeholder system — Asset URLs in docs content use{{base}}placeholders resolved at read time viaresolveDocsContent()usingdocument.baseURIpackages/web/public/screenshotssymlinks todocs/screenshotsso Vite includes them in buildsScreenshots & CI
Test Plan
https://claude.ai/code/session_012XssQPvVcyAQwMJbQHyMkj