This website requires JavaScript.
71e675489c
fix(builder): Footer commits in-progress edits on deselect, not just blur (D7)
shadowdao
2026-07-12 13:46:52 -07:00
fdd088b4bf
fix(builder): VideoBlock parses more YouTube/Vimeo URL shapes (D4)
shadowdao
2026-07-12 13:46:48 -07:00
cdcc3969bc
fix(builder): ColumnLayout.toHtml derives column widths from split (D2b)
shadowdao
2026-07-12 13:46:44 -07:00
2887cc9bdf
fix(builder): Testimonials single-layout static-parity export (D2a)
shadowdao
2026-07-12 13:46:38 -07:00
a0cdbd1d82
refactor(builder): remove dead FeaturesGrid mediaType field (D1c)
shadowdao
2026-07-12 13:46:33 -07:00
f0728a9070
fix(builder): emit ContactForm successMessage as a data attribute (D1b)
shadowdao
2026-07-12 13:46:29 -07:00
36ce256760
fix(builder): emit Container cssId/cssClass with live panel controls (D1a)
shadowdao
2026-07-12 13:46:23 -07:00
cf56f2a388
refactor(builder): remove dead per-page headCode field (D9)
shadowdao
2026-07-12 13:30:17 -07:00
e1d381dc8a
fix(builder): Preview includes site headCode and is \$-safe (D8)
shadowdao
2026-07-12 13:29:02 -07:00
d4ee09e54c
fix(builder): make switchPage/deletePage state updaters pure (D6)
shadowdao
2026-07-12 13:28:27 -07:00
7973ee9ba8
fix(builder): await TemplateModal's load sequence before closing (D5)
shadowdao
2026-07-12 13:26:46 -07:00
2ee66ebae9
fix(builder): dedupe page slugs on add/rename/replaceAll (D3)
shadowdao
2026-07-12 13:25:41 -07:00
a7c00119e6
refactor(builder): remove dead HeaderZone/FooterZone components
shadowdao
2026-07-12 13:17:03 -07:00
232dc3c980
refactor(builder): remove orphaned ui/ settings controls
shadowdao
2026-07-12 13:16:57 -07:00
65a10a1ef9
refactor(builder): remove dead component settings UI
shadowdao
2026-07-12 13:16:53 -07:00
4674a99ec9
feat(builder): unify StylePanel image fields on AssetPicker
shadowdao
2026-07-12 13:00:10 -07:00
c50b385661
feat(builder): reusable AssetPicker (full/compact, media-typed)
shadowdao
2026-07-12 12:49:34 -07:00
296c10d019
feat(builder): shared asset upload/list util
shadowdao
2026-07-12 12:43:59 -07:00
b46b6915a5
fix(builder): validate AI response before deserializing into craft state
shadowdao
2026-07-12 12:37:25 -07:00
4b36ce0d6a
fix(builder): route live header/footer edits correctly on save
shadowdao
2026-07-12 12:28:38 -07:00
1a88baa95d
fix(builder): deep-clone node data on id regeneration to avoid shared props
shadowdao
2026-07-12 12:25:22 -07:00
97123c4c58
fix(builder): regenerate node ids on duplicate/paste to prevent state corruption
shadowdao
2026-07-12 12:18:44 -07:00
4c001e1af4
fix(builder): preserve data-URI semicolons in css value sanitizer
shadowdao
2026-07-12 12:15:23 -07:00
fb4e9f87be
fix(builder): sanitize style-string emission
shadowdao
2026-07-12 12:06:16 -07:00
7179287087
fix(builder): sanitize HtmlBlock/Countdown/Gallery JS contexts
shadowdao
2026-07-12 12:06:07 -07:00
48d0441be3
fix(builder): neutralize javascript:/breakout URLs in export
shadowdao
2026-07-12 12:05:57 -07:00
fad1882117
refactor(builder): use shared escaper everywhere, drop 26 local copies
shadowdao
2026-07-12 11:49:10 -07:00
cce984508f
feat(builder): add shared escape/safeUrl util
shadowdao
2026-07-12 11:41:11 -07:00
94140990c2
Add implementation plan: site builder hardening + asset picker
shadowdao
2026-07-12 11:36:27 -07:00
02e99f7623
Add design spec: site builder security & data-loss hardening
shadowdao
2026-07-12 11:27:57 -07:00
aaa305cc3e
Add design spec: unified image/asset picker for site builder
shadowdao
2026-07-12 11:14:00 -07:00
97cb439508
site-builder: fix Menu guided panel (empty Colors) + surface layout/nav colors
shadowdao
2026-07-10 13:10:46 -07:00
d20b77e66d
site-builder: dedicated Features editor in guided panel (per-card icon/image+upload/button, robust to template items missing keys)
shadowdao
2026-07-07 17:19:37 -07:00
5a26e4ef43
site-builder: FeaturesGrid renders image when 'image' set + expose image/button keys so the guided array editor edits them
shadowdao
2026-07-07 14:16:14 -07:00
1cfb51f181
site-builder: surface Spotify/Twitch + contact-form recipient in the Styles (guided) panel
shadowdao
2026-07-07 14:06:24 -07:00
814ad29b91
Merge branch 'site-builder-feedback-batch'
shadowdao
2026-07-07 13:50:12 -07:00
b9c5d3dd1c
site-builder: relay wiring on FormContainer (template forms) + shared helper
shadowdao
2026-07-07 13:35:18 -07:00
6b9c258d26
Merge pull request 'ContactForm relay wiring (recipient, thank-you, honeypot, marker)' (#2 ) from contact-form-relay into main
jknapp
2026-07-07 19:35:27 +00:00
4877a63a3b
site-builder: pin non-relay byte-identity on the realistic (non-empty fields) case [PR #2 review]
contact-form-relay
shadowdao
2026-07-07 12:22:28 -07:00
cf5d30382a
site-builder: ContactForm non-relay output byte-identical (honeypot whitespace fix) + test guard
shadowdao
2026-07-07 08:30:36 -07:00
66117d375e
site-builder: ContactForm relay wiring (recipient, thank-you, honeypot, marker)
shadowdao
2026-07-07 08:24:56 -07:00
53c40f856f
site-builder: feedback batch (social, features, header menu, spacer)
shadowdao
2026-07-06 17:53:22 -07:00
d0925d9e2d
site-builder: dynamic CTAs, section anchors, edit-with-Sitesmith
shadowdao
2026-05-25 12:43:28 -07:00
7b747f775f
site-builder: lock landing page to index.html regardless of name
shadowdao
2026-05-25 12:14:26 -07:00
330032eea3
sitesmith: publish home page to index.html, not home.html
shadowdao
2026-05-24 17:50:08 -07:00
5e60415311
sitesmith: strip diagnostic shim + state-dump now that the fix is verified
shadowdao
2026-05-24 17:32:38 -07:00
87dd4340f7
sitesmith: pre-create section-inner/bg-section-inner/form-inner linkedNodes
shadowdao
2026-05-24 17:22:40 -07:00
a1ec51afc3
sitesmith: filter known-benign invariants from diagnostic shim
shadowdao
2026-05-24 16:37:08 -07:00
43627bddb0
sitesmith: alias tiny-invariant to a diagnostic shim
shadowdao
2026-05-24 16:32:50 -07:00
849f432330
sitesmith: narrow CANVAS_TYPES to just Container
shadowdao
2026-05-24 16:27:38 -07:00
6428f93cec
sitesmith: route ColumnLayout children through linkedNodes (Invariant fix)
shadowdao
2026-05-24 16:17:25 -07:00
906695379b
sitesmith: null-safe esc() in Navbar/Menu/Logo + clear chat button
shadowdao
2026-05-24 16:03:02 -07:00
069ea1235a
sitesmith: null-safe esc() across all toHtml + WorkingIndicator
shadowdao
2026-05-24 15:54:48 -07:00
ac0347ae5f
sitesmith: fix blank canvas on Replace site
shadowdao
2026-05-24 15:35:05 -07:00
5c5066c20b
Merge pull request 'Sitesmith: AI site builder addon (frontend)' (#1 ) from sitesmith-ai-builder into main
jknapp
2026-05-24 17:11:03 +00:00
0f943bacc7
sitesmith: playwright e2e suite (locked/cap/bonus/build+patch)
shadowdao
2026-05-23 14:27:34 -07:00
2ca1ff0cf9
sitesmith: layers panel prefers props.aiName when present
shadowdao
2026-05-23 14:25:43 -07:00
e651becdbe
sitesmith: chat modal (messages, input, banner, scope confirm)
shadowdao
2026-05-23 14:25:28 -07:00
b4d71340e1
sitesmith: upgrade banner + scope-replace confirmation dialog
shadowdao
2026-05-23 14:24:20 -07:00
bf55ee85b9
sitesmith: topbar button with locked/capped states
shadowdao
2026-05-23 14:23:51 -07:00
cf3457aa15
sitesmith: apply-ai-response utility (replace + patch + ask) + PageContext helpers
shadowdao
2026-05-23 14:20:51 -07:00
f6243d3ffe
sitesmith: useSitesmith hook (entitlement, history, send)
shadowdao
2026-05-23 14:16:20 -07:00
8d094a9c67
sitesmith: typescript types for messages, responses, patch ops
shadowdao
2026-05-23 14:15:15 -07:00
14a957f57c
sitesmith: canvas summary serializer with unit tests
shadowdao
2026-05-23 14:14:38 -07:00
bd15a33984
sitesmith: harden HtmlBlock with DOMPurify + add Vitest setup
shadowdao
2026-05-23 14:13:42 -07:00
606c9b78c8
fix(image-radius): split out 3x-scale IMAGE_RADIUS_PRESETS for the image picker
archive/grapesjs
shadowdao
2026-04-26 21:31:58 -07:00
8eeaecd857
fix(radius): bump shared RADIUS_PRESETS so S/M/L are visible on real elements
shadowdao
2026-04-26 21:22:57 -07:00
c2bacb41bf
feat(image): bump radius presets so S/M/L are actually visible on real images
shadowdao
2026-04-26 21:05:25 -07:00
1558626b84
fix(delete): redirect Delete to owning component when target is empty linked node
shadowdao
2026-04-26 20:42:17 -07:00
4acbeefaed
fix(container): align block children when Content Alignment is set
shadowdao
2026-04-26 20:24:28 -07:00
91a6b6f34b
Add Craft.js site builder (v2) - complete rebuild from GrapesJS
shadowdao
2026-04-05 18:31:16 -07:00
b511a6684d
Add templates, tests, and miscellaneous project files
shadowdao
2026-03-01 14:15:58 -08:00
03f573b451
Replace Google Docs viewer with download card for non-PDF file embeds
shadowdao
2026-03-01 14:13:02 -08:00
a71b58c2c7
Initial commit: Site Builder with PHP API backend
shadowdao
2026-02-28 19:25:42 +00:00