Skip to content

feat: release v0.9.0#89

Merged
liamwalder merged 58 commits intomainfrom
develop
Mar 24, 2026
Merged

feat: release v0.9.0#89
liamwalder merged 58 commits intomainfrom
develop

Conversation

@liamwalder
Copy link
Copy Markdown
Collaborator

Summary

Release v0.9.0 — rich text editor improvements, CMS rendering fixes, builder UX refinements, and cache/migration integrity fixes.

Changes

  • Add image alt text popover, horizontal rule, and image border/shadow controls to rich text editor
  • Add outline controls to border settings panel
  • Add reference field link resolution for dynamic pages
  • Fix CMS options not filtering sub-options for reference fields
  • Fix rich text link rendering on preview and generated pages
  • Fix canvas outline blinking and layer selection issues
  • Fix SEO og:image URL resolution against correct domain
  • Allow rich-text fields in SEO title and description
  • Use file manager for SEO social preview image selection
  • Protect preview routes with authentication
  • Fix clear-all cache endpoint to invalidate data cache tags
  • Sync migration files for cross-repo template compatibility
  • Preload element library for faster interactions
  • Refactor builder preview to avoid canvas re-renders
  • Bump version to 0.9.0

Test plan

  • Verify rich text editor: insert images, set alt text, add horizontal rules
  • Test CMS dynamic pages with reference field links
  • Confirm SEO social preview image picker works via file manager
  • Check preview route redirects to builder when unauthenticated
  • Publish a site and verify cache invalidation clears all pages
  • Import a template and verify migrations run correctly

Made with Cursor

lunenas and others added 30 commits March 19, 2026 15:08
- Remove !isEditMode guard from isButtonWithLink and shouldWrapWithLink
- Add w-fit class to edit mode className for buttons rendered as <a>
- Extract shared layerLinkContext to eliminate 3 duplicate constructions
- Merge button-link and <a>-layer-link blocks into single block
- Add resolveLinkAttrs utility to deduplicate href/target/rel/download
Click an image in the rich text editor to select it and auto-open
an alt text popover anchored to the image toolbar button.

Made-with: Cursor
Add outline width, color, and offset controls accessible via the +
dropdown in BorderControls. Includes Tailwind class generation,
parsing, and CMS color variable binding support.

Made-with: Cursor
Closes #69

CMS rich-text field content rendered all elements as <span> on the
canvas because renderNestedRichTextContent always forced spans. Now
the useSpanForParagraphs flag propagates correctly: rich text layers
(div) get proper block tags, while restrictive tags (p, h1-h6) keep
spans to avoid invalid nesting. Also fix layers tree collapsibility
for CMS-bound rich text layers.

Made-with: Cursor
og:image used relative URLs (/a/hash/slug.ext) which Next.js resolved against VERCEL_URL instead of the site's actual domain. Now makes og:image absolute using globalCanonicalUrl or NEXT_PUBLIC_SITE_URL.
- Keep scroll position when closing and re-opening the same tab,
- Prevent images re-loading when switching tabs or opening the sidebar,
- Scroll to top when switching to a different tab,
- Enrich page collection item data with dotted relationship keys so reference fields (e.g. Category>Name via Blog) render on canvas
- Restrict "Current page item" link option to pages sharing the same collection, preventing broken cross-collection links
The TipTap mark name (richTextLink) was not mapped to the
style key (link), so the Link sublayer never appeared in the
layers tree and its classes could not be edited on the canvas.

Made-with: Cursor
- Enrich page collection item data with dotted keys for canvas
- Restrict "Current page item" to pages sharing same collection
- Add "{FieldName} - Reference field" options for cross-collection links
- Resolve ref-page:* and ref-collection:* at render via item data
- Add richTextLink mark handling in renderTiptapToHtml (page-fetcher) with full LinkResolutionContext so page/field/ref-* links resolve
- Scan rich text Tiptap content for page links in PageRenderer so specific item slugs and ref-* target collections are pre-fetched
- Add hidePageContextOptions prop to suppress "Current page item" and reference field options when editing CMS item content directly
- Refactor PageRenderer link scanning into module-level pure utilities (collectTiptapPageLinks, collectLayerPageLinks, extractCollectionItemSlugs) replacing two separate tree traversals with a single shared pass
feat: add horizontal rule support to rich text editor
liamwalder and others added 25 commits March 24, 2026 07:36
refactor: use file manager for SEO social preview image
feat: improve in-builder preview UX
fix: render link tags consistently on canvas
refactor: improve builder UX and fix selection issues
fix: show Link sublayer in rich text layers tree
feat: add reference field link resolution for dynamic pages
feat: add rich text image/link popover improvements
fix: filter CMS reference sub-options by allowed field types
fix: render proper HTML tags for CMS-bound rich text on canvas
fix: persist color variable edits from hex input
- Fix clear-all cache endpoint to use clearAllCache service
- Sync migration files with cloud for template compatibility

Made-with: Cursor
@liamwalder liamwalder merged commit 4554561 into main Mar 24, 2026
2 checks passed
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.

3 participants