- sm-demo-app: Journal, sitemap and SEO config, nginx without sitemap
locations, env templates, DEPLOY.md SEO steps, seo-pages.csv,
TestSEOOutput, scripts/smoke-seo.sh, release smoke on the new format
- vue-demo-app: seo.noindexRoutes for the decks, page meta for auth and
signed-in pages, SeoSitemapLink in the footer, @nuxtjs/seo keys removed
- vue-summercmsio-app: changelog on seo.cms false, expectations for it
- sm-summercmsio-app: no change beyond the pin bumps
- 33-12-local-wiring.md: the scratch wiring for 33-13 and 33-14
- attach.VariantKey: a thumbnail's copy in another format next to it
- attach/webp (separate package, so only binaries that import it link
the encoder): Encode at quality 80 and Variant, which writes the WebP
copy of a thumbnail once and leaves no file on a failed encode
- github.com/gen2brain/webp v0.6.4, decided in
.planning/notes/2026-10-28-webp-gen2brain.md
- lagoon README and docs/database/attachments.md
github.com/gen2brain/webp pinned at v0.6.4 (approved 2026-11-04), with
how it runs (purego or the wasm2go-transpiled libwebp), the linking
consequence, the benchmark and where the code lives.
- Task 4 answers: chromedp v0.21.0 and gen2brain/webp v0.6.4 approved
- the tracer resolve answer for the layer fixtures
- deferred: a repeater cannot carry a trigger (local_hours)
- 33-04-SUMMARY.md: image and News sitemaps, IndexNow, HTML sitemap API,
management API and MCP tools in sm-sitemap-plugin
- deferred-items.md: taglist options cannot come from records
- WINDOWS.md: #29 fixed, #31 the News sources taglist deviation
- pl validation.yaml string line is Polish (Winter's pl file leaves it
in English); the header notes the deliberate divergence
- pl validate.yaml min and max use Winter's numeric wording, since those
keys only serve numeric and integer bounds
- min and max compare the characters of a string or a number's decimal
form and the element count of a slice or map on any field without
numeric or integer (Laravel's getSize), with the min.array and
max.array messages for lists
- blank values, booleans, dates and byte slices are not measured; a
malformed bound is an error on every non-numeric field
- reverse the 261104-f4x pin, prove it through the cabana settings save
sequence, and update the README, docs and the storePassword comment
- on a string or url field that is not numeric or integer, min and max
compare utf8.RuneCountInString (Laravel's mb_strlen) and answer with
the lagoon::validation min.string / max.string messages
- a min or max argument that is not a whole number is the
unrecognized-rule error, whatever the value
- rule strings without string or url keep their results (pinned by a
test); between is unchanged
- string requires a string value (pointers and named string types
included), url a URL matching Laravel's pattern (urlPattern, shared
with lagoon.ValidateRequest); both skip an empty or blank value
- lagoon::validate.string and .url in the en and pl catalogs, English
fallbacks for a nil translator
- settings saves whose model rules use nullable|string|max:255 or
nullable|url|max:500 no longer fail with an unrecognized-rule error
- planned contents of framework v0.6.1: the two 33-01 seams and the
gate script; the six Phase 32 fixes listed as already released in
v0.5.2
- newest plugin and layer tags with no unreleased commits; versions
read from git tag in 33-14
- release order and an empty executed-steps table
- scripts/check-phase33.sh with the stages self-test, go, plugins,
layers, consumers, docker, admin, docs, marker, additive and compat,
and --all; no argument prints the usage and exits 2
- engine taken from check-phase32.sh (go test -json and vitest
detectors, scratch sibling farm, apisurface additive comparison)
- marker diffs from v0.6.0 and adds sitemap, JSON-LD and the
application names; additive compares against the newest tag not
containing HEAD
- a missing repository fails with "missing <path>"; the self-test
plants an API removal, an interface method, a marker hit, a failing
go test and a missing repository
- pact.FormFieldType gains RequestOptions, called with the application's
database once per form schema request for each type the form uses
- the form schema route merges the answer into a copy of each field's
typeOptions; a fields.yaml key wins, the compiled schema never changes
- an error logs one warning naming the type and serves the fields.yaml
options only
- TestFieldTypeRequestOptions covers every screen, the precedence, the
call count, the error path, unchanged schemas, form extension fields
and the authenticated handler; a runnable example backs the docs
- the typeOptions description, the regenerated OpenAPI document and
schema.d.ts, the field types page and the pact and cabana READMEs
document it
- pact.ContentDescriptor gains Kind and Tools with the ContentKind and
ContentTool constants
- pact.ContentRecord gains PublishedAt, Parents, Authors and TopHeading;
pact.ContentLocale gains Images, Videos and Headings, with the value
types ContentRef, ContentPerson, ContentImage, ContentVideo and
ContentHeading; every field is optional
- TestContentDescriptorFields proves signpost hands them through and
that a type setting none of them describes as before
- the runnable content example, the pact and signpost READMEs and the
menu item types page document the fields
- CR-01, CR-02, CR-03, WR-01, WR-04 and WR-05 fixed, with commits, tags
and the live checks of release 195aa213c546
- WR-02, WR-03, WR-06 and IN-01 to IN-09 deferred, one todo each