This website requires JavaScript.
f5d2a23a5f
Merge PR #26 : surface publish warnings in the editor
main
jknapp
2026-07-16 12:34:32 +00:00
c712a69c4a
test(topbar): cover publish() warnings wiring into PublishWarnings banner
feat/publish-warnings
shadowdao
2026-07-15 22:12:31 -07:00
d460e8ac33
topbar: surface publish warnings instead of discarding them
shadowdao
2026-07-15 21:52:11 -07:00
2b1569202a
Merge PR #25 : bounce + image crop/resize fix
jknapp
2026-07-14 23:07:58 +00:00
5c44dd545c
fix(site-builder): bounce stays visible + springier; image/video crop fills (cover) + resize shrinks footprint
fix-anim-image
shadowdao
2026-07-14 16:04:50 -07:00
2ac62c4e9e
Merge PR #24 : fix animation delay unit
jknapp
2026-07-14 19:36:51 +00:00
25dfcbb725
fix(site-builder): coerce bare-number animation delay to a valid CSS time (2 -> 2s)
fix-animation-delay
shadowdao
2026-07-14 12:34:51 -07:00
9bf78fd72d
Merge PR #23 : fix entrance-animation output
jknapp
2026-07-14 19:16:59 +00:00
2dcc2b4d21
fix(site-builder): entrance-animation reveal script survives Preview + well-formed void-tag attrs + no-JS fallback
fix-animation-output
shadowdao
2026-07-14 12:12:01 -07:00
4e0fc78a30
Merge PR #22 : enh pages productivity + cross-page clipboard
jknapp
2026-07-14 14:48:25 +00:00
85dfe181aa
fix(pages): duplicatePage must save outgoing active canvas before teardown (avoid dropping live edits)
enh-pages
shadowdao
2026-07-14 07:47:44 -07:00
a698f014b0
feat(site-builder): page duplicate/reorder/set-landing + fix cross-page node copy/paste
shadowdao
2026-07-14 07:36:00 -07:00
204ea5e078
Merge PR #21 : enh output/seo/tokens (frontend)
jknapp
2026-07-14 14:21:10 +00:00
0291ddce9a
feat(site-builder): per-page SEO meta + favicon + design-token CSS-var wiring + published-output a11y/perf
enh-output-seo
shadowdao
2026-07-14 07:14:56 -07:00
f7da654c11
Merge PR #20 : enh nav
jknapp
2026-07-14 13:58:11 +00:00
d6666f6f79
Merge PR #19 : enh containers
jknapp
2026-07-14 13:56:11 +00:00
4a426e3513
fix(containers): only flex-convert Container/Section when vertical-align set (avoid blockifying inline-block children)
enh-containers
shadowdao
2026-07-14 06:55:20 -07:00
6e628d68dd
Merge PR #18 : enh sections
jknapp
2026-07-14 13:54:52 +00:00
8f17b74e2b
Merge PR #17 : enh forms
jknapp
2026-07-14 13:49:57 +00:00
54572f648a
feat(builder): nav/menu link-to-page picker, page sync, download attr, box-model rollout
enh-nav
shadowdao
2026-07-14 06:47:59 -07:00
8bf525c600
feat(builder): surface hidden section/pricing/social props + box-model rollout
enh-sections
shadowdao
2026-07-14 06:47:58 -07:00
d07bc7789d
Merge PR #16 : enh code editor
jknapp
2026-07-14 13:47:46 +00:00
b03425ac39
Merge PR #15 : enh text+button
jknapp
2026-07-14 13:46:08 +00:00
9750a6c2bf
feat(builder): containers package -- vertical alignment + box-model/anim/vis rollout
shadowdao
2026-07-14 06:44:37 -07:00
5b19ae97af
feat(builder): FORMS package -- field editor, functional Subscribe/Search, box-model+anim rollout
enh-forms
shadowdao
2026-07-14 06:44:21 -07:00
88df4f2888
feat(builder): CodeMirror 6 code editor for HTML/CSS/JS with lazy loading
enh-code
shadowdao
2026-07-14 06:42:59 -07:00
e1b4ab735c
feat(builder): text+button package -- typography depth, button target/hover, box-model+anim/vis rollout
enh-text-button
shadowdao
2026-07-14 06:41:53 -07:00
ff1e8fc096
Merge PR #14 : enh media package
jknapp
2026-07-14 13:37:55 +00:00
0419291259
feat(builder): media package -- image crop/perf, video size+picker, gallery cols/lightbox, box-model+anim/vis rollout
enh-media
shadowdao
2026-07-14 06:30:50 -07:00
1d9460c173
Merge PR #13 : enhancement foundation
jknapp
2026-07-14 13:12:22 +00:00
8d69982a0b
chore(builder): install CodeMirror deps for the upcoming code-editor feature
enh-foundation
shadowdao
2026-07-14 06:07:25 -07:00
fb40e3ece4
feat(builder): add reusable StylePanel controls (foundation for enh batch)
shadowdao
2026-07-14 06:07:20 -07:00
9591fcb8a7
feat(builder): add shared style presets for size/aspect-ratio/shadow/typography rollout
shadowdao
2026-07-14 06:07:14 -07:00
f80811318b
Merge PR #12 : real-Editor integration test harness
jknapp
2026-07-14 00:12:49 +00:00
cb9fea6656
test(builder): real-@craftjs/core integration test harness (duplicate/paste, template load, AI apply-response)
integration-test-harness
shadowdao
2026-07-13 17:11:40 -07:00
b1afdcb585
Merge PR #11 : mobile fast-follows
jknapp
2026-07-13 16:19:53 +00:00
f00e4db3dc
test(builder): cover useVisualViewport; fix: disable Select-Parent at ROOT in desktop context menu
mobile-fast-follows
shadowdao
2026-07-13 09:19:00 -07:00
b9552faa30
Merge PR #10 : Mobile Phase B (touch editing)
jknapp
2026-07-13 15:43:29 +00:00
77f35c4e9e
fix(builder): duplicate inserts+selects after source; select-parent/styles-sheet/canvas-pad mobile fixes
mobile-phase-b
shadowdao
2026-07-13 08:41:33 -07:00
2c8425ffb0
feat(builder): mobile-B touch editing -- selection toolbar, tap-to-add, swipe-dismiss
shadowdao
2026-07-13 08:07:51 -07:00
2a071bc7ab
Merge PR #9 : Mobile Phase A
jknapp
2026-07-13 14:31:23 +00:00
2a8a26687b
fix(builder): mobile-A2 hardening -- 16px inputs, shared sheet/modal chrome, z-scale + portal
mobile-phase-a
shadowdao
2026-07-13 07:30:12 -07:00
979331b12d
feat(builder): mobile-responsive editor chrome (Phase A)
shadowdao
2026-07-13 06:54:15 -07:00
329a782052
Merge PR #8 : fix templates dropping nested content
jknapp
2026-07-13 13:28:39 +00:00
da558fd52d
fix(builder): render template header/footer nested content in zone preview + export
fix-zone-preview
shadowdao
2026-07-13 06:19:26 -07:00
8aeadefa88
Merge PR #7 : UI polish Phase 2
jknapp
2026-07-13 04:13:17 +00:00
2066059c35
fix(builder): phase-2 design tweaks (landing home icon, decouple layer-hover from guides, neutral zone separator)
ui-polish-phase2
shadowdao
2026-07-12 21:12:09 -07:00
473fe8d421
feat(builder): item 16 — context menu FA icon per action
shadowdao
2026-07-12 20:56:21 -07:00
5d6ae7946b
fix(builder): item 15 — default header nav no longer links nonexistent pages
shadowdao
2026-07-12 20:56:11 -07:00
1c85ab93eb
feat(builder): item 14 — Templates modal close button + category pill hover states
shadowdao
2026-07-12 20:56:05 -07:00
67228f24b4
feat(builder): item 11 — Pages panel hierarchy: neutral header/footer rows, outline Landing badge, icon+tooltip actions
shadowdao
2026-07-12 20:56:00 -07:00
613a44c4d4
feat(builder): items 10+12+13 — scope canvas guides, Show Guides toggle, Layers panel hover/icons, topbar unification
shadowdao
2026-07-12 20:55:52 -07:00
5685670895
Merge PR #6 : UI polish Phase 1
jknapp
2026-07-13 03:22:51 +00:00
72f85a97e5
fix(builder): phase-1 polish a11y follow-ups (dropzone keyboard, badge name, icon aria)
ui-polish-phase1
shadowdao
2026-07-12 20:22:11 -07:00
ab28ad8f2c
Merge assets-panel empty state into one dropzone
shadowdao
2026-07-12 20:15:15 -07:00
05e00c572d
Show component-indicator selection badge in the canvas
shadowdao
2026-07-12 20:15:08 -07:00
458069afb6
Show empty-canvas hint on a page with no components yet
shadowdao
2026-07-12 20:14:58 -07:00
b3e5009aec
Fix preset-grid orphan row for 5/6-item preset sets
shadowdao
2026-07-12 20:14:38 -07:00
eeb0660d83
Replace emoji-as-icons in editor chrome with Font Awesome
shadowdao
2026-07-12 20:14:29 -07:00
138e1a8273
Bump muted/dim text contrast and block label legibility
shadowdao
2026-07-12 20:14:10 -07:00
1b12b79a0d
Merge PR #5 : image placeholder + Gallery/safeImageUrl fix
jknapp
2026-07-13 02:54:24 +00:00
621bb21d52
fix(builder): safeImageUrl for FeaturesGrid/ContentSlider image sinks + tighten data:image allowlist
placeholder-and-gallery-fix
shadowdao
2026-07-12 19:53:02 -07:00
3f3c6fb851
security: add safeImageUrl, un-break M-5's over-blocking of image-context SVG data URIs
shadowdao
2026-07-12 19:45:58 -07:00
802938ec1a
fix(builder): Image block placeholder no longer overridden by explicit src=""
shadowdao
2026-07-12 19:45:28 -07:00
3e43aee6e9
Merge PR #4 : head code to published pages + adversarial-review Minors
jknapp
2026-07-13 01:37:13 +00:00
bf4a9f48eb
security: block data:image/svg+xml + sandbox HtmlBlock iframes
headcode-and-minors
shadowdao
2026-07-12 18:31:25 -07:00
86455413d0
fix: unique addPage ids + collision-free scopeId hashing
shadowdao
2026-07-12 18:31:12 -07:00
0cbc58f8d1
a11y/security: scope Navbar ids + hover styles, Gallery lightbox focus trap
shadowdao
2026-07-12 18:30:22 -07:00
92841e3f35
feat(builder): send + restore site head code in save/load
shadowdao
2026-07-12 18:22:38 -07:00
e892ee0e53
Merge PR #3 : site builder security & data-loss hardening + asset picker + audit backlog
jknapp
2026-07-13 01:13:27 +00:00
591a51dcc2
fix(builder): escape/allowlist all attribute-value sinks incl. numeric/enum props (XSS)
builder-hardening-2026-07
shadowdao
2026-07-12 18:03:44 -07:00
7ba91d9829
fix(builder): sanitize non-string style values + allowlist element tags (XSS)
shadowdao
2026-07-12 17:44:59 -07:00
e12fb89ada
Fix M-4: punctuation-only page name yields empty slug ('.html')
shadowdao
2026-07-12 17:33:33 -07:00
25507cb57a
Fix INT: ContentSlider Slides editor wrote wrong prop key (image vs imageSrc)
shadowdao
2026-07-12 17:32:47 -07:00
9d3bbc2c46
Fix I-2: dangling parent on shell/ColumnLayout-rooted AI-replace trees
shadowdao
2026-07-12 17:31:01 -07:00
25e674badd
Fix I-1: landing-page edits lost when activePageId goes dangling
shadowdao
2026-07-12 17:29:32 -07:00
e5f30a4a56
Fix C1/C2: XSS via unsanitized style keys and animation attrs
shadowdao
2026-07-12 17:27:22 -07:00
36c3b2f503
fix(builder): sanitize CSS-value sinks to prevent style/<style> breakout XSS
shadowdao
2026-07-12 15:56:25 -07:00
5acf172511
docs(builder): update CLAUDE.md for hardening branch (remove dead settings/zones, asset picker)
shadowdao
2026-07-12 15:39:16 -07:00
ebb8fe1027
refactor(builder): type the AI-response/patch boundary
shadowdao
2026-07-12 15:30:56 -07:00
b88b242b6a
refactor(builder): extract shared Modal component for the three editor modals
shadowdao
2026-07-12 15:22:05 -07:00
8f51b5144a
refactor(builder): extract shared ArrayItemFieldsEditor from SectionTypePanel/GenericPropsEditor
shadowdao
2026-07-12 15:15:34 -07:00
4733fe84b5
refactor(builder): extract useNodeProp hook, dedup StylePanel setProp boilerplate
shadowdao
2026-07-12 15:13:35 -07:00
3cd4ad0154
test(builder): cover Ctrl+C/V shortcut id-regeneration and guards
shadowdao
2026-07-12 15:08:46 -07:00
6421306849
feat(builder): implement Ctrl+C/V copy-paste shortcuts
shadowdao
2026-07-12 15:01:30 -07:00
e40d55b2f2
chore(builder): point dev proxy at current test server
shadowdao
2026-07-12 14:59:42 -07:00
1958b8e0b5
chore(builder): remove GuidedStyles classification cruft
shadowdao
2026-07-12 14:59:39 -07:00
99cc4c79f2
fix(builder): clickableProps must ignore keydown bubbled from nested controls
shadowdao
2026-07-12 14:58:13 -07:00
4b8dd8baee
ux: in-app confirm for asset/sitesmith delete + safe copy
shadowdao
2026-07-12 14:51:00 -07:00
46ebd253f3
a11y: keyboard-operable editor chrome + topbar aria-labels
shadowdao
2026-07-12 14:50:50 -07:00
a036843728
fix(builder): deterministic ids for NumberCounter + form-relay marker
shadowdao
2026-07-12 14:43:31 -07:00
177eda93d0
script nits: slider hover/visibility pause + silent autoplay + iframe amp guard
shadowdao
2026-07-12 14:35:27 -07:00
8029126ab7
deterministic + unique ids in 6 components (node-derived scope)
shadowdao
2026-07-12 14:35:12 -07:00
c2aac870e7
thread node id through toHtml for deterministic+unique export ids
shadowdao
2026-07-12 14:34:53 -07:00
9969adca72
a11y: exported semantics (forms/rating/nav/iframe/icons)
shadowdao
2026-07-12 14:19:01 -07:00
9b532e36e8
a11y: exported widget ARIA (slider/tabs/gallery)
shadowdao
2026-07-12 14:18:49 -07:00
c83db99ae4
fix(builder): update_props no longer wipes style on style: null
shadowdao
2026-07-12 14:05:59 -07:00
605a6ba9f3
refactor(builder): consolidate buildNodeTree onto shared flattener; delete dead serializeTreeForCraft
shadowdao
2026-07-12 14:05:37 -07:00
f3c175436a
fix(builder): guard PageContext.treeToState against unknown resolvedNames
shadowdao
2026-07-12 14:04:57 -07:00
b2b9278d3c
refactor(builder): extract shared tree-flattener into craft-tree.ts
shadowdao
2026-07-12 14:04:43 -07:00