Repository navigation
The report rendering moves into its own package, @focusring/wcagify-reporter, so other apps can show WCAGify reports without WCAGify's editor, admin and share routes, or Nuxt Content.
Breaking changes
- Nuxt Studio is removed. Its editor and the
/_studio,/__nuxt_studio/*and/sw.jsroutes are gone. Edit reports as markdown incontent/reports/<slug>/(or withwcagify-new-report), commit and redeploy. Projects that still want Studio can installnuxt-studioand add it to their ownmodules. @focusring/wcagify/print.cssis now@focusring/wcagify-reporter/print.css. Apps that extend the WCAGify layer get it automatically; only projects that imported the file directly need to change the path.@focusring/wcagify/locales/enand/nlhold only the app's keys. ThereportandcodeBlockmessages are in@focusring/wcagify-reporter/locales/*. Nuxt apps are unaffected because@nuxtjs/i18nmerges both layers' locale files; code that imported the locale objects directly must merge the two.- The Nitro auto-import
rewriteUploadUrls(value, reportSlug, token)is removed. Import it from@focusring/wcagify(or@focusring/wcagify-reporter). The new signature isrewriteUploadUrls(value, from, to)with URL prefixes;rewriteUploadUrls(issues, '/api/uploads/<slug>/', '/api/share/<token>/uploads/')reproduces the old behaviour. - Report components, prose overrides and report composables moved to
@focusring/wcagify-reporter(Report*.vue,ResultsIndicator,ProseImg,ProsePre,ProseHNested,useWcagData,useConformanceResult,useReportDownload). Auto-imports and component names are unchanged; deep imports of@focusring/wcagify/app/...must point at@focusring/wcagify-reporter/app/.... - Report component props are typed with
ReportDocument/IssueDocumentinstead of Nuxt Content's generated item types. Nuxt Content items still fit; hand-built objects needtitle,pathand a minimarkbody. ProseImg,ProsePreandProseHNestedare global components, registered from the report layer'sapp/components/prose/. A project's ownProseImgstill wins.- Dependencies moved.
@nuxt/fonts,reka-ui,@vueuse/core,@nuxtjs/mdcandminimarknow come in through@focusring/wcagify-reporter. Projects that import any of them directly must list them in their ownpackage.json.
New
@focusring/wcagify-reporter: a framework-free API (schemas, WCAG data, scoring, documents, teaser) and a render-only Nuxt layer (@focusring/wcagify-reporter/layer) with the report components, prose overrides, report translations, Nuxt UI app config,report.cssandprint.css. No pages, no server routes, no Nuxt Content.@focusring/wcagifydepends on it at the exact same version, extends its layer and re-exports its root API, so existing projects need no changes.- New root exports:
reportDocumentSchema,issueDocumentSchema,minimarkSchema,reportTeaser,teaserSchema,rewriteUploadUrls,allScEntries,levelIncludes, and the typesReportDocument,IssueDocument,Minimark,MinimarkNode,Teaser,TeaserReport. - Report bodies render through
ReportMarkdown(minimark +MDCRenderer) without registering@nuxtjs/mdc, so no/api/_mdc/highlightroute is added.
Improvements
- Smaller pages: the report schemas and zod are no longer shipped to the browser; the report page loads about 75 KB less JavaScript (about 20 KB gzipped).
- CI guard: an e2e suite builds an app that extends only the report layer and fails if a release adds a server route, Nuxt Content or server-only dependencies to it, loads Tailwind's base styles twice, or ships zod to the client.
Security (0.6.8)
0.6.8, released just before this, stopped serving Nuxt Content's collection dumps (/__nuxt_content/<collection>/sql_dump.txt and /query) to visitors when WCAGIFY_ADMIN_SECRET is set. Upgrade if you run an admin-locked instance on an older version.
Install both packages at the same version: @focusring/wcagify 0.7.0 needs @focusring/wcagify-reporter 0.7.0.
Commits
🚨 Breaking Changes
- wcagify: Remove nuxt studio - by @timdamen and Claude Opus 5.5 (15363)
- wcagify-reporter: Move the report layer into its own package - by @timdamen and Claude Opus 5.5 (91255)
🚀 Features
- wcagify: Add report documents, teaser and upload rewrite to core - by @timdamen and Claude Opus 5.5 (92135)