Releases: sitewright-cms/sitewright
Releases · sitewright-cms/sitewright
Release list
v0.9.0
What's Changed
- fix: seven defects from ten neutral clone agents on 0.8.0 by @sbuchweitz in #775
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- fix: stop the platform telling agents things that are not true by @sbuchweitz in #773
- chore(release): 0.8.0 by @sbuchweitz in #774
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- feat(css): a 3px underline offset as a site-wide default by @sbuchweitz in #771
- feat: agent-friction hardening from the ost-noack clone (0.7.0) by @sbuchweitz in #772
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- fix(ci): stop the recurring red builds — one shared gate, de-flake render-pool, refresh action pins by @sbuchweitz in #756
- feat(editor): the empty SPA state is a real card with a gradient/ripple CTA by @sbuchweitz in #757
- fix(api): make project slug renames atomic, and let projects holding agent grants be purged by @sbuchweitz in #758
- fix(api): entries always move with their dataset — close the last path that could orphan a row by @sbuchweitz in #759
- feat(tailwind): sw-border-beam — a rotating "lighthouse" border in the brand primary by @sbuchweitz in #760
- fix(api): move entry history with a dataset rename; add a read-only integrity report by @sbuchweitz in #761
- feat(tailwind): border beam defaults to the hero look — 8px, no track by @sbuchweitz in #762
- feat(api,editor): "Check database integrity" — a whole-database sweep with opt-in repairs by @sbuchweitz in #764
- fix(api,editor): open the agent-fleet lane, raise the flail ceiling, plug a timer leak by @sbuchweitz in #765
- fix(api): the raised agent rate limit needs a VERIFIED key, not the word "Bearer" by @sbuchweitz in #766
- feat(slider): smaller hero arrows, double-caret arrows everywhere, roomier captions, loop by default by @sbuchweitz in #767
- fix(slider): widen the gradient caption STRIP too, not just the .sw-caption pill by @sbuchweitz in #768
- fix(slider): centre the figcaption caption strip too — both caption shapes, one default by @sbuchweitz in #769
- fix: close the 21 clone-friction items found cloning business.na (0.6.0) by @sbuchweitz in #770
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- fix(api): survive concurrent import retry — double-send crash killed the server; remove Clone-with-AI modal by @sbuchweitz in #742
- fix(blocks): back-to-top dead in preview + scrollspy misses its own anchor target — platform-wide by @sbuchweitz in #743
- fix(blocks,schema,editor): flush anchor rest under shrink header, data-src embeds keep CSP+consent, guides mandate platform lazy, visible dark-mode toggles by @sbuchweitz in #744
- feat(blocks): back-to-top bottom-right (banner-aware) + modal auto-close waves ripple (delegated runtime) by @sbuchweitz in #745
- fix(blocks): scrollspy — a nav link to a /hidden element hijacked the active state (#faq never lit) by @sbuchweitz in #746
- feat(clone,editor): clone prefills production URL + richer project selector (favicon, live URL, sorted, wider) by @sbuchweitz in #747
- feat(shader-bg): AUTO theme-tracking color token for animated backgrounds + simplified picker by @sbuchweitz in #748
- feat(editor): admin-set WebGL platform background (behind the whole editor + login) by @sbuchweitz in #749
- fix(editor): restore Speed/Intensity/interactive/overlay knobs in the animated-background picker by @sbuchweitz in #750
- feat(editor): header shows the project favicon (scale 1.7), slug-free selector sized like the tabs by @sbuchweitz in #751
- feat(blocks,schema): smooth scroll default + all 15 dataset field types documented for agents by @sbuchweitz in #752
- fix(ci): remove unused
withinimport failing the lint gate by @sbuchweitz in #753 - fix(security): close the import-url SSRF, sanitize rich text in the editor, harden the login throttle by @sbuchweitz in #754
- chore(release): 0.5.0 by @sbuchweitz in #755
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
- feat(textures): platform texture library — Library picker, MCP search, preview+export CSS by @sbuchweitz in #741
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- feat(publish): flat _assets/ media layout in deployed sites (faster SFTP) by @sbuchweitz in #708
- perf(deploy): drop SSH tar path + capability probe; raise SFTP connect timeout by @sbuchweitz in #709
- feat(media): short 6-char asset IDs + flat single-folder /media layout (dual-support) by @sbuchweitz in #710
- feat(media): boot migration — convert existing assets to flat short-id scheme by @sbuchweitz in #711
- feat(db): upgrade-path guard — fail-fast (console + platform) on a too-old data version by @sbuchweitz in #712
- feat(editor): full dark mode + light/dark/auto switcher + light-mode contrast fixes by @sbuchweitz in #713
- perf(audit): representative Lighthouse scores + platform LCP/font wins by @sbuchweitz in #714
- fix(editor): dark-mode polish — lighter raised surfaces + page-audit contrast by @sbuchweitz in #715
- perf(build): minify platform JS/CSS bundles + gzip served sites by @sbuchweitz in #716
- fix(build): use terser + clean-css for runtime minify (esbuild was a devDep) by @sbuchweitz in #717
- perf(carousel): kill enhancement CLS by hiding the slider during Embla init by @sbuchweitz in #718
- perf(publish): ship interactive-component + effect runtimes PER PAGE (per-type chunks) by @sbuchweitz in #719
- fix(publish): rebase FLAT-scheme media urls + stop clean-css dropping @starting-style by @sbuchweitz in #720
- feat(slider): default single-item sliders to the hero look + hero-slider HEIGHT setting by @sbuchweitz in #721
- feat(slider): click-to-slide default on hero style + larger edge arrows by @sbuchweitz in #722
- feat(icons): replace Lucide with Phosphor (fill default, 6 weights, name:weight syntax, aliases, search) by @sbuchweitz in #723
- feat(icons): editor icon-library weight switcher + API previews (bundle −6.7MB); slider arrow polish by @sbuchweitz in #724
- fix(editor): larger, aligned icon-library weight-switcher buttons by @sbuchweitz in #725
- fix(clone-agent): fidelity-gate accuracy, capture stability, Phosphor icon weights, dataset dup guard, MCP robustness by @sbuchweitz in #726
- fix(api): OIDC error redirects return the reply (10 unhandled ERR_HTTP_HEADERS_SENT rejections → 0) by @sbuchweitz in #727
- feat(audit): PageSpeed-style concrete recommendations + heading-structure outline by @sbuchweitz in #728
- feat(seed): example projects as committed export bundles + fix un-importable projects (orphaned entries) by @sbuchweitz in #729
- feat(editor): richer WYSIWYG toolbars — colors, CI brand colors/fonts, sizes, alignment, indent, tables, links by @sbuchweitz in #730
- feat(editor): rich-text toolbar — insert image, reliable link edit-in-place + open-in-new-tab by @sbuchweitz in #731
- feat(editor): rich-text images — insert dialog (url/alt/width/height), inline resize, responsive default by @sbuchweitz in #732
- feat(editor): rich-text toolbar — active-state + toggle, double-click-edit image, dialog padding by @sbuchweitz in #733
- feat(media): copy file/image URLs + kind-aware file-type icons by @sbuchweitz in #734
- fix(ci): unblock the pipeline — patch HIGH audit advisories + fix the masked gates by @sbuchweitz in #735
- feat(media): File Manager polish — no h-scroll, empty-bin, embed-URL tooltips, 14px floor by @sbuchweitz in #736
- fix(ci): patch new HIGH advisory — find-my-way HTTP/2 DoS by @sbuchweitz in #737
- fix(ci): patch new HIGH audit advisories — postcss + @fastify/static v10 by @sbuchweitz in #738
- feat(editor): consolidate & restyle the System Library drawer + fix animated-bg overflow by @sbuchweitz in #739
- chore(release): v0.3.0 — example bundle refresh + version in System Settings + audit patch by @sbuchweitz in #740
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- feat(api): graceful shutdown — close the DB + force-exit failsafe by @sbuchweitz in #697
- docs: marketing rewrite of the README by @sbuchweitz in #698
- docs(architecture): scrub Astro + correct stale layout/adapters by @sbuchweitz in #699
- feat(forms): native in-browser validation on the Form component by @sbuchweitz in #700
- feat(forms): server-side required/format validation for submissions by @sbuchweitz in #701
- feat(editor): chrome polish — section headers, clickable form rows, grouped settings menu, clearer role labels by @sbuchweitz in #702
- feat(editor): settings reorg — AI config in tabbed project modal, preview split button + share-links modal, alphabetical translations by @sbuchweitz in #703
- feat(editor): System Settings — enlarge modal + group sections into tabs by @sbuchweitz in #704
- feat(shop,i18n): native cart-checkout validation + grouped example footer/cookie translations by @sbuchweitz in #705
- feat(editor): Page Audit tab in the page editor; remove the Speed & SEO sidebar by @sbuchweitz in #706
- chore(release): 0.2.0 — editor UX + authoring-polish pass by @sbuchweitz in #707
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- Phase 0: foundations (monorepo + @sitewright/schema) by @sbuchweitz in #1
- Phase 1: @sitewright/core (engine — tree, partials, bindings, validation) by @sbuchweitz in #2
- Phase 1b: Astro + Tailwind renderer, block library, sample site (visible win) by @sbuchweitz in #3
- Phase 2a: collection pages (per-entry static generation) by @sbuchweitz in #4
- Phase 2b: @sitewright/image-pipeline (sharp → AVIF/WebP/LQIP) by @sbuchweitz in #5
- Phase 2b-cont: image pipeline integration (
+ AVIF/WebP) by @sbuchweitz in #6 - Phase A: multi-tenant tenancy, auth, scoped projects API by @sbuchweitz in #7
- Phase B: tenant-scoped content API + file-format export/import by @sbuchweitz in #8
- Phase D: React editor SPA (the clickable CMS), served same-origin by the API by @sbuchweitz in #9
- Phase D2a: visual block editor with live SSR preview by @sbuchweitz in #10
- Phase D2b: dataset/CMS manager + block→dataset binding UI by @sbuchweitz in #11
- Phase D2c: media manager + image picker by @sbuchweitz in #12
- Phase C: static site publishing (single-container) by @sbuchweitz in #13
- Phase F: zip export + FTP/FTPS/SFTP deploy targets by @sbuchweitz in #14
- Phase F: rate limiting by @sbuchweitz in #15
- Phase F: pull-based release check + update banner by @sbuchweitz in #16
- Phase F: saved/encrypted deploy targets + SSRF allow-list by @sbuchweitz in #17
- Phase F: self-contained optimized exports + BuildRunner by @sbuchweitz in #18
- Phase F: isolated container build worker (opt-in) by @sbuchweitz in #19
- feat(blocks,core): Phase 1 — portable links + data-driven document skeleton by @sbuchweitz in #20
- test(api): integration harness + tenancy/publish/auth coverage by @sbuchweitz in #21
- test(api): media-pipeline + collection-routing integration coverage by @sbuchweitz in #22
- feat(schema,publish): Phase 2 — company corporate-identity + schema.org wiring by @sbuchweitz in #23
- feat(schema): deploy-target remoteDir control-char hardening + security/fidelity harness coverage by @sbuchweitz in #24
- fix(api): cascade project delete to content rows + preview/lifecycle harness coverage by @sbuchweitz in #25
- feat(schema,publish): Phase 2 — website settings (critical CSS + custom head/footer) + partials harness by @sbuchweitz in #26
- fix(api): on-disk cleanup on project delete + concurrent-publish harness by @sbuchweitz in #27
- feat: Phase 3 — reusable page templates (Outlet-based layouts) + rate-limit harness by @sbuchweitz in #28
- feat: Phase 3 — page-tree-driven auto-nav (Nav block) + binding-depth harness by @sbuchweitz in #29
- feat(blocks): integrated icon set — Lucide inline-SVG Icon block + adapter harness by @sbuchweitz in #30
- feat(api): Phase 5 — online AI generation (metered, agency-funded, quota-gated) by @sbuchweitz in #31
- feat: Tailwind utility layer (className on blocks + publish/preview compilation) by @sbuchweitz in #32
- feat(blocks): integrated brand/social icon set (simple-icons, CC0) by @sbuchweitz in #33
- feat(blocks): Html (raw embed) block — maps/forms/video/widgets by @sbuchweitz in #34
- feat(blocks): interactive Components + flagship Carousel (component-JS pipeline) by @sbuchweitz in #35
- feat(blocks): Lightbox gallery + Accordion components by @sbuchweitz in #36
- feat(editor): WYSIWYG live preview — allow-scripts sandbox + inlined component JS by @sbuchweitz in #37
- feat(editor): true WYSIWYG live preview via a CSP:sandbox preview document by @sbuchweitz in #38
- feat(blocks): Modal + CookieConsent components (completes the requested set) by @sbuchweitz in #39
- feat(blocks): Tabs component (rounds out the disclosure family) by @sbuchweitz in #40
- feat: Patterns library (fork-on-insert) + expose Components in the palette by @sbuchweitz in #41
- feat: multilingual publishing engine (per-locale output + fallback) by @sbuchweitz in #42
- feat(editor): locale switcher for multilingual page editing by @sbuchweitz in #43
- feat(api): project-scoped API keys + bearer auth (CLI/MCP foundation) by @sbuchweitz in #44
- feat(mcp): @sitewright/mcp stdio bridge for coding agents by @sbuchweitz in #45
- feat(preview): live auto-reload preview via SSE by @sbuchweitz in #46
- feat(api): OAuth 2.1 token-issuance core (PKCE, rotation) [C1] by @sbuchweitz in #47
- feat(api): OAuth 2.1 endpoints — authorize + consent + token [C2] by @sbuchweitz in #48
- feat(api): OAuth Dynamic Client Registration (RFC 7591) [C2b] by @sbuchweitz in #49
- feat(cli): sitewright login (OAuth loopback+PKCE) + mcp/whoami/logout [C3a] by @sbuchweitz in #50
- feat(editor): API-key management UI (project settings → access) [C3b] by @sbuchweitz in #51
- feat: token-lifecycle polish — server-side revoke filter + bridge auto-refresh by @sbuchweitz in #52
- feat: OAuth device authorization grant (RFC 8628) for headless CLI by @sbuchweitz in #53
- feat(publish): sitemap.xml + robots.txt + redirect rules on export [Phase 1] by @sbuchweitz in #54
- feat(admin): instance admin + instance settings (mail/hCaptcha/form modes) [Phase 2] by @sbuchweitz in #55
- feat(forms): web-forms-to-email engine — block, endpoint, Mode A, inbox, MCP [Phase 3a] by @sbuchweitz in #56
- feat(editor): forms authoring + submissions inbox UI [Phase 3b] by @sbuchweitz in #57
- feat(forms): hCaptcha verification + widget [Phase 4] by @sbuchweitz in #58
- feat(forms): Mode B contact.php + form-mode selection + forms hardening pass [Phase 5a] by @sbuchweitz in #59
- feat(forms): per-project SMTP (Mode B / userSmtp) [Phase 5b] by @sbuchweitz in #60
- feat(forms): Mode C — third-party endpoint [Phase 6] by @sbuchweitz in #61
- feat: stock images (Openverse/Unsplash/Pexels) via MCP + editor picker by @sbuchweitz in #62
- fix: keyless Openverse stock search (page_size must be <= 20) by @sbuchweitz in #63
- refactor: merge brand + company into unified Corporate Identity (format v2) by @sbuchweitz in #64
- feat: glassmorphic animated Settings editor (Corporate Identity + Website) by @sbuchweitz in #65
- feat: page draft/published status + Page Settings editor panel by @sbuchweitz in #66
- feat: content-route rate limits + hreflang multilingual SEO by @sbuchweitz in #67
- feat: built-in Starter snippet library (Phase 3 — global snippet scope) by @sbuchweitz in #68
- feat: template/partial variables ({{ company.* }} / {{ website.* }} / {{ page.* }}) by @sbuchweitz in #69
- feat: per-node client-editable regions with server-side enforcement by @sbuchweitz in #70
- feat: constrained client (member) restricted editor + client provisioning by @sbuchweitz in https://github.com/sitewrig...