Skip to content

feat: add source-owned RichText across frameworks - #159

Merged
DominusKelvin merged 2 commits into
mainfrom
feat/rich-text
Sep 10, 2026
Merged

DominusKelvin merged 2 commits into
mainfrom
feat/rich-text

Conversation

@DominusKelvin

Copy link
Copy Markdown
Member

Summary

  • Add application-owned RichText for Vue, React and Svelte, installed with npx klean-ui add rich-text.
  • Provide a compact formatting toolbar, HTML or Markdown strings, Write/Source modes, links, image URLs and an application-owned async upload callback.
  • Preserve unsupported content in Source instead of silently dropping it. Keep unchanged Markdown bytes, defer external updates during composition, retain selection through insertion controls, cancel stale uploads, and isolate undo history between records.
  • Back the field with native form semantics: labels, named submission, required/length validation, reset, disabled/read-only state and accessible keyboard controls.
  • Keep styling in ordinary classes and named data slots, with framework-native toolbar customization and no application storage or backend policy hidden inside the component.
  • Fix Vue useFormDraft tracking for in-place and nested form edits, proven by the conference proposal’s reload/restore workflow.
  • Fix CLI dependency verification to accept newer compatible ranges saved by npm while rejecting incompatible or unverifiable ranges.

Documentation and adoption

The canonical RichText page is in the matching docs.sailscasts.com PR, with interactive examples, all three framework APIs, installation/source tabs, HTML/Markdown guidance, uploads, drafts, customization, accessibility and related components.

Slipway migration is tracked separately in sailscastshq/slipway#566. This PR does not migrate production Slipway or Sailsconf screens.

Validation

  • Rstest component/content/security/installer/draft regressions.
  • Production library and all Storybook renderer builds; canonical Tailwind and registry lineage checks.
  • Actual packed CLI install/check/diff/update in clean Vue, React and Svelte application fixtures.
  • Browser interaction checks at 375px and 1440px across React/Svelte plus the Vue docs previews: forms, labels, formatting, links, image insertion, source preservation, Undo, read-only/disabled states and overflow.
  • Axe scans in light and dark mode across all three frameworks.
  • Real conference proposal draft save/reload/explicit restore/clear workflow.
  • Canonical docs production build and mobile/desktop browser verification.

Existing development-tool audit findings remain unchanged; no unrelated automatic dependency upgrades were made.

Closes #158

@DominusKelvin

Copy link
Copy Markdown
Member Author

Canonical documentation: sailscastshq/docs.sailscasts.com#278. Final local verification: 601 tests passed; packed Vue/React/Svelte install/check/diff/update passed; all renderer builds, canonical Tailwind and lineage checks passed; mobile/desktop interaction checks plus light/dark axe scans passed; Vue draft save/reload/restore/clear passed.

@DominusKelvin
DominusKelvin merged commit 03c209d into main Sep 10, 2026
1 check passed
@DominusKelvin
DominusKelvin deleted the feat/rich-text branch September 10, 2026 22:07
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.

feat: add source-owned RichText for application authoring

1 participant