Replace the two-engine setup (MDXEditor for editing + react-markdown for
display) with a single Crepe-based component used for both. Editing is inline
WYSIWYG with full GFM that actually works — task lists, tables, and code
blocks via type-to-create / the slash menu — and read-only mode renders the
exact same way, so write and read can no longer drift (the root cause of the
heading/list/table/checkbox bugs).
- markdown-editor.tsx: Crepe wrapper supporting edit + readOnly, themed to the
glass card via --crepe-* variable overrides (scoped to .milkdown so they win
over frame-dark's own definitions).
- text-particle-view.tsx: render the message card with the read-only editor;
drop the react-markdown component map.
- Remove now-unused deps: @mdxeditor/editor, react-markdown, remark-gfm,
rehype-highlight, highlight.js.
The compose immersive mode (short, centered plain text) is unchanged.
https://claude.ai/code/session_019DU6V5z6Nr4Vu7b1fBDnq4
Editor: add tablePlugin so markdown tables round-trip and render. Task
lists (`- [ ]`), strikethrough, code (inline + fenced), headings, lists,
quotes, and links already work via listsPlugin/core/markdownShortcut. CSS:
suppress the disc bullet on task-list items (they draw their own checkbox)
and style tables.
Display: render task-list checkboxes (no stray bullet), GFM tables, and
strikethrough so the read view matches what the editor produces.
https://claude.ai/code/session_019DU6V5z6Nr4Vu7b1fBDnq4
- Restore heading/list typography in the editor: MDXEditor relies on the
browser's default styles for <h1>/<ul> sizing, which Tailwind's Preflight
resets. Markdown shortcuts fired but the block looked unchanged. Style the
editor content explicitly, mirroring the rendered display.
- Keep pasted/typed URLs as plain text (linkPlugin disableAutoLink) so they
don't become `[url](url)`, which duplicated both the URL and its preview
card. Also dedupe extractUrls defensively so a repeated URL yields one card.
https://claude.ai/code/session_019DU6V5z6Nr4Vu7b1fBDnq4
Desktop: replace the Write/Preview tab toggle in the compose card with
MDXEditor, an inline WYSIWYG that renders markdown as you type (Obsidian/
Notion feel) and round-trips plain markdown, matching how particle content
is stored. Immersive mode is unchanged — short, plain notes still get the
centered large-type textarea, and ⌘+M still drops into the rich editor.
Shortcut handling moves to the capture phase so ⌘+Enter / Esc win over the
editor's own key handling.
Mobile: render markdown on the display side via react-native-marked's
useMarkdown hook (no FlatList, so it nests cleanly in the existing
ScrollView). Mirrors desktop's immersive-vs-card logic: short plain notes
stay centered; anything with markdown renders formatted instead of showing
raw syntax. Composer stays plain text.
https://claude.ai/code/session_019DU6V5z6Nr4Vu7b1fBDnq4
* feat(orion): add endpoint for link metadata
* refactor: cleanup comments
* wip: plumbing for building a web app
* setup deployment materials for web app
* fix(web): favicon
* stage 1: project init
* stage 2: skeleton with navigation
* step 2.5: streams list
* step 4: stream playback experience
* step 5-6: compose experience
* fix: broken record
* transcode media particles to mp4
* build: reproducible go generate
* build: rename skaffold module for particle processor worker
* infra: increase particle processor worker resources
Was dealing with OOM errors
* tweaks to mobile
* log transcode work
* view on desktop placeholder
* tweak padding
* cap video resolution to save on memory
* infra: bump memory limits as insurance
* ux improvements
* update bundle id for mobile
* config for mobile