apps/web/package.json | 5 + apps/web/src/components/ChatMarkdown.tsx | 81 ++- apps/web/src/components/ComposerPromptEditorTiptap.tsx | 422 ++++++++++++-- apps/web/src/components/chat/ComposerCodeBlockLanguagePicker.tsx | 121 ++++ apps/web/src/components/chat/ComposerCodeBlockNodeView.tsx | 67 +++ apps/web/src/components/composerCodeBlockHighlight.test.ts | 152 +++++ apps/web/src/components/composerCodeBlockHighlight.ts | 231 ++++++++ apps/web/src/composer-block-shortcuts.test.ts | 126 ++++ apps/web/src/composer-code-block.test.ts | 391 +++++++++++++ apps/web/src/composer-code-block.ts | 254 ++++++++ apps/web/src/composer-code-languages.test.ts | 59 ++ apps/web/src/composer-code-languages.ts | 97 ++++ apps/web/src/composer-list-continuation.test.ts | 19 +- apps/web/src/composer-list-continuation.ts | 21 +- apps/web/src/composer-list-split.test.ts | 265 +++++++++ apps/web/src/composer-rich-text-doc.test.ts | 529 +++++++++++++++++ apps/web/src/composer-rich-text-doc.ts | 1002 +++++++++++++++++++++++++++++--- apps/web/src/index.css | 84 ++- docs/internals/composer-editors.md | 15 + docs/user/composer.md | 17 + pnpm-lock.yaml | 15 + 21 files changed, 3798 insertions(+), 175 deletions(-)