Skip to content

release(feat): publish CLI 1.6.0 and the English-only site - #554

Merged
Ducksss merged 233 commits into
mainfrom
dev
Sep 8, 2026
Merged

release(feat): publish CLI 1.6.0 and the English-only site#554
Ducksss merged 233 commits into
mainfrom
dev

Conversation

@Ducksss

@Ducksss Ducksss commented Sep 3, 2026

Copy link
Copy Markdown
Owner

This PR promotes the reviewed integration branch to production. It includes safer CLI updates, new Payload components, and an English-only public site that removes the ongoing translation maintenance burden.

Release scope

Integration and validation

This promotion includes the reviewed feature integrations, CLI 1.6.0 preparation (#568), source-history sitemap dates (#565), readiness test fixes (#566), installer recovery/source versioning/security fixes (#570, incorporating #569), and Newsletter Callout (#564).

  • Final dev commit: 08fc9c67767e454d2c9ada6fe89a1a0597d625e3.
  • Final tree: 4be36c0241a8500f797237f0fef2ce83cc6044d2. A fresh trial merge with main is conflict-free and produces exactly this tree.
  • Final promotion gate passed: release verification, quick checks, Node 20, one bare Payload smoke, all four website smoke shards, and aggregate pr-gate. CodeQL, closing-keyword validation, and both Vercel deployments passed on this head.
  • Independent audit verification passed 86 focused tests and packed-artifact installation. All 253 published v1.5.0 source hashes were preserved; 77 existing components received version bumps.
  • Newsletter fixes include portable typography, reviewed Linux component/landing baselines, dynamic catalog-count assertions, source hashes, and real packed CLI install/reinstall coverage. Its final combined release gate passed.
  • The owner authorized the existing admin merge permission after technical checks pass. Branch protection settings remain unchanged.

Completed issues

Closes #23
Closes #116
Closes #124
Closes #125
Closes #134
Closes #455
Closes #524
Closes #525
Closes #526

For #455, the implemented decisions are: (D1) Pages-based query blocks, with Post Hero and Author Card as explicit file-only exceptions and Lexical deferred; (D2) a distinct collectionQuery slug that preserves the starter Archive block; (D3) per-manifest Posts/Categories prerequisites enforced by preflight and doctor; and (D4) Posts-only queries in the first version, with manual selection and the website-starter target. Documentation, deterministic previews, and visual baselines cover the shipped contract.

#15 is closed after successful raw public-registry installs of all 82 production items. The earlier standalone proposals #123/#126/#132/#133 are not claimed as implemented; #455 consolidates their design. Unrelated issues remain open.

Completed release

Only #567 remains separate: its new Crowdin action pin needs explicit admission to the repository Actions allowlist. Automatic synchronization stays paused. Branch protections were not changed; the owner authorized the existing admin merge permission after technical checks passed.

Ducksss and others added 30 commits June 19, 2026 14:46
Adds a `blog` collection (defineCollections + author/date frontmatter) alongside
the existing docs collection, a flat `/blog/[slug]` post route and `/blog` index
card grid styled to the shadcn + emerald brand, RootProvider/SiteHeader layout,
and Blog nav links. Seeds two real posts bylined Ducksss: a friendly "Hello"
welcome and an "Anatomy of an install" deep-dive.

zod is promoted to a direct devDependency (4.4.3, the version fumadocs-core
already resolves) so the blog frontmatter schema can extend pageSchema. The blog
is independent of the docs llms.txt/geo contract.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary:
- Bump TypeScript from 5.7.3 to 5.9.3 and refresh pnpm lock.
- Bump registry verification failure artifact uploads to v7.

Rationale:
- Keep Dependabot maintenance updates on dev with a small scoped diff.
- Next is already at 16.2.6 on dev, so no package diff was needed.

Tests:
- pnpm install --frozen-lockfile
- pnpm build
- E2E_PORT=3100 pnpm test:release (fails locally: e2e route sweep
  timeout and Darwin homepage snapshot delta; lint, source build,
  typecheck, registry check, and integration tests passed before e2e)
- E2E_PORT=3100 pnpm exec cross-env NODE_OPTIONS="--no-deprecation
  --import=tsx/esm" playwright test --config=playwright.config.ts
  tests/e2e/frontend.e2e.spec.ts -g "landing page keeps its desktop
  and mobile visual contract" (fails locally: same Darwin snapshot delta)
Import the tailark "faqs" category as Payload Components, adapted to the
site's light/emerald token system. Ships 6 distinct structural variants —
faq-accordion, faq-split, faq-card, faq-icons, faq-grouped, faq-grid —
each with source config + Component, manifest, registry entry, docs page,
and demo twin. Shared family code: faqFields.ts and faqIcons.ts (icon-name
select → lucide map, mirroring the Content family's contentIcons pattern).

Activates the previously-empty `faq` catalog category, registers the FAQ
docs sidebar family, and bumps the page-block count 38 → 44 (copy + guard).
Adds `accordion` to the public shadcn dependency allowlist so the accordion
variants pass the registry import-derivation test.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Summary:
- Replace public alpha labels with neutral open-source and MIT copy.
- Rename the internal alpha component template to component-template.
- Refresh homepage screenshots for the visible copy changes.

Rationale:
- The site, CLI, docs, and package metadata should not present the
  project as alpha.
- The template rename prevents future component docs from reintroducing
  alpha language.

Tests:
- rg -n -i "\\balpha\\b|alpha-" --glob '!node_modules/**' --glob '!public/r/**' --glob '!.next/**' --glob '!test-results/**'
- git diff --check
- pnpm lint
- pnpm exec tsc --noEmit
- pnpm run test:int
- pnpm run test:e2e
- pnpm test:registry
- pnpm build
Summary:
- Merge the alpha messaging cleanup on top of latest dev.
- Resolve homepage snapshot conflicts against the current FAQ catalog state.
- Remove newly introduced FAQ alpha status fields from component metadata.

Rationale:
- Dev should not expose public alpha labels in copy, CLI output, docs,
  metadata, or internal templates.
- Regenerated snapshots reflect the merged landing page rather than either
  side of the binary conflict.

Tests:
- pnpm test:release
Make the @payload-components registry submission-ready for the official shadcn
registry directory — all 44 items, including the FAQ family merged from dev.

- Replace the <your-domain> placeholder with https://www.payload-components.xyz
  across every item's docs URL; point registry.json homepage at the live site.
- Add a registry:validate gate (ajv + vendored shadcn draft-07 schemas) folded
  into test:registry, since shadcn@4.7.0 has no validate command.
- Document the @payload-components namespace install path in the install/registry
  docs and README.
- Stage the shadcn-ui/ui directory entry + submission steps in AGENTS.md.

Verified locally: registry reproducible + schema-valid (44 items), lint, tsc,
test:int (68 passed). Landed via admin merge (dev's review gate is
unsatisfiable for the sole owner; the Registry Verification workflow
startup-fails repo-wide and Vercel was rate-limited).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary:
- Rework the README around open-source SaaS-style positioning.
- Add the existing social card, contributor links, and community framing.
- Split consumer install guidance from local repository setup.

Rationale:
- The README is the front door for contributors and early adopters.
- Keeping the content MIT-first and community-first avoids stale commercial
  framing while making the install contract easier to scan.

Tests:
- pnpm lint
- git diff --check -- README.md
- curl -fsSI https://www.payload-components.xyz/opengraph-image
- rg stale commercial framing scan
Summary:
- Update FAQ registry, manifest, and installed Payload labels to use the
  proper acronym capitalization.
- Add the new FAQ slugs to CLI help and correct the blog component count.
- Clip page-level horizontal overflow and refresh the stale Linux landing
  desktop screenshot baseline.
- Document why TypeScript remains pinned to 5.x until the tsconfck peer
  range supports TypeScript 6.

Rationale:
- The PR was fast-forwardable but blocked by release-gate visual and
  overflow failures plus review metadata drift.
- Keeping TypeScript 5.x avoids shipping an unmet peer dependency from
  vite-tsconfig-paths through tsconfck.

Tests:
- pnpm test:release
Summary:
- Replace the stale Linux mobile landing screenshot baseline with the
  release-gate actual image from PR #152.

Rationale:
- The Linux mobile baseline was still taller than the current rendered
  landing page, matching the same stale-baseline issue fixed for desktop.
- The actual image was stable across CI retries.

Tests:
- pnpm test:release
- verified CI artifact actual image was stable across retries
…ift (#153)

* repo(chore): close CI visual-regression gap and clear review bloat/drift

Repo review follow-ups (no behavior change to the shipped site or CLI):

- CI visual gap: the components-visual suite silently skipped on every CI
  run (only darwin baselines existed; CI is linux). Add a visual-baselines
  workflow_dispatch that mints per-platform baselines in the CI renderer and
  opens a PR, plus a coverage guard that fails loudly once a platform is
  minted but a component lacks a baseline (instead of silently skipping).
- Drop 3 dead pnpm.overrides (dompurify, drizzle-orm, uuid): Payload-runtime
  residue with no package in the lockfile.
- Remove the unreachable layout='stack' branch in ComponentFamilyHeader.
- Derive the not-found 'Known components' list from componentEntries.
- Guard componentFamilies.posts.countLabel (the one unguarded catalog count).
- Hoist the duplicated baseManifest into a dependency-free manifest-factory
  module (the two copies had drifted; import-light so it can't defeat the
  manifest spec's mock).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci(fix): restore actions/upload-artifact@v4 (v7 doesn't exist)

PR #146 bumped upload-artifact v4→v7, but that major doesn't exist. An
unresolvable action reference makes the workflow fail at startup
(startup_failure, 0s), which has blocked every dev push and PR gate since
that merge. Restore the known-good v4.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Revert "ci(fix): restore actions/upload-artifact@v4 (v7 doesn't exist)"

This reverts commit d1392ea.

* test(ci): refresh stale linux landing baseline (desktop)

The linux landing baselines went stale during the day the CI gate was down
(broken allowlist): the family-teaser landing change shrank the page, the
darwin baseline was refreshed but linux never was. This restores the desktop
linux baseline from the gate's own actual render; mobile follows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ci): refresh stale linux landing baseline (mobile)

Companion to the desktop refresh: restores the mobile linux landing baseline
from the gate's own actual render (390x14444, matching the current darwin
baseline). Both linux landing baselines now reflect the family-teaser landing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
The renderBlocks/pagesLayout patcher deduped on exact full lines while the
verifier checked loose substrings, so the two could disagree. A consumer whose
anchor region was reformatted (Prettier reflow, hand-edit, double quotes, no
trailing comma) could slip past the writer's exact-line dedup — appending a
duplicate object key / import — while the verifier still reported it present,
so 'add' wrote a broken RenderBlocks.tsx and 'doctor' called it healthy.

Give apply (dedup) and verify one shared structural matcher per fragment
(tolerant of quote style, trailing semicolons, indentation, spacing) so they
can't disagree. Adds a regression test that pre-seeds a reformatted
registration and asserts apply doesn't duplicate it and verify reads it present.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…160)

installedFiles was recorded in .payload-components/state.json but never read
for any decision — add/doctor re-derive install validity from the manifest, so
the stored copy was just a duplicate of manifest.files that could only drift.
Remove it from the state entry type, the three record functions, the v1->v2
migration, normalizeState, and the install assertions/specs.

Backward-compatible: normalizeState no longer reads the field, so existing v2
state files that still carry it load fine (the dead field is ignored on read).
No state version bump.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
)

Ports tailark's MIT comparator category as comparator-table, comparator-grid, and comparator-stack — new comparator page-family, page-block count 44 to 47.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…count (#172)

* registry(fix): use canonical www URL for comparator install commands

The Comparator family (#158) shipped its three registry-item docs with the
literal https://<your-domain>/r/comparator-*.json placeholder, and its three
MDX manual-install snippets used the bare apex https://payload-components.xyz
(no www). Every other one of the 44 published items uses the canonical
https://www.payload-components.xyz that #150/#155 standardized on; the
placeholder is a copy-pasteable-but-broken install command and the bare apex
is inconsistent.

Replace both with https://www.payload-components.xyz in the three comparator
entries of payload-components/registry.json and the three comparator docs
pages. Source-only change; public/r/*.json is gitignored and rebuilt from this
source by registry:build.

Found during the dev->main promote review (PR #162).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* a11y(comparator): label state icons + table headers, refresh blog count

- Add role="img" + aria-label ("Included"/"Not included") to the Check/Minus
  state icons in all three Comparator blocks so screen readers announce the
  yes/no meaning of each matrix cell (previously icon-only).
- Add scope="col" to the ComparatorTable plan header cells.
- Bump the (non-test-pinned) blog copy "About 44" -> "About 47" page blocks to
  match the count now installable after the Comparator family.

Attribute-only on the block source (no className change), so the demo-twin
class-mirror guard is unaffected and the visual baselines are unchanged; the
blog count is prose, not a pinned assertion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…163)

Code-review remediation (P1 hardening + P2 trims + a11y gate):

- a11y: add tests/e2e/a11y.e2e.spec.ts (axe-core WCAG 2.1 A/AA over
  /, /docs, /components; serious+critical). Fixes it surfaced: darken
  --muted-foreground 50%->46% (was 4.41:1, sub-AA), text-brand-600 on
  light-emerald catalog pills, raise reduced-opacity small labels to full
  opacity, logo placeholders /55->/70, tabIndex on scrollable code blocks.
- cli: atomic state writes (temp+rename) + corrupt-state fallback in
  loadState; fix latent shared-defaultState mutation (createDefaultState
  factory). Add fragment-patching failure-mode tests.
- ci: unify GitHub Action versions across workflows; main-only push gate;
  add fast-fail quick-checks (lint+tsc) job.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…159)

* components(feat): add testimonials family (6 tailark-derived blocks)

Imports the distinct testimonial layouts from tailark/blocks (MIT),
re-implemented as wired Payload blocks in this repo's idiom (Media
avatars, editable fields, light tokens): testimonials-quote, -spotlight,
-grid, -rating, -bento, -wall. Full contract each — source, manifest,
registry entry, demo twin, docs — plus catalog, count (38->44),
family-teaser, and enumeration wiring.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ci): raise e2e dev-server heap to clear route-loop OOM

The frontend route-loop (frontend.e2e:159) visits every component doc
page against `next dev`; at 50 routes the dev server hit its memory
threshold and restarted mid-test (ERR_CONNECTION_RESET on the last
routes), failing the linux release gate even through retries:2. Bump
--max-old-space-size to 8192 for the dev server so it doesn't restart
while compiling all routes in one pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(chore): mint darwin landing baseline for testimonials teaser

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ci): mint linux landing baseline for testimonials teaser

Rendered on the ubuntu gate via the visual-baselines workflow so the
landing visual test compares (not fails) on the linux release gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ci): raise e2e dev-server heap to 12GB for the 53-route loop

8192MB held at 50 routes but the dev server still hit its memory
threshold and restarted at 53 (faq+comparator+testimonials), resetting
mid-route-loop. Give real headroom on the 16GB CI runner.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Serves /google44d8f9f26e2e2367.html for the new GSC property,
alongside the existing googleda94848bf7de62aa.html and BingSiteAuth.xml.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…#181)

* catalog(chore): reorder /components to showcase best components first

Lead the catalog with the most-wanted, most visually striking blocks.
Categories now rank landing-page essentials first: Hero, Features,
Comparator (pricing), Call to action, then social proof (Integration,
Logo cloud, Testimonials), then FAQ, then the deep Content set,
trailing Team and Embed. Within each category the showpiece variant
(per familyRepresentatives) leads.

Applied consistently across the wall + sidebar (componentEntries,
componentCategories) and the docs nav (FAMILIES); the landing teaser
inherits componentCategories order automatically. Pure data reorder of
all 53 page blocks — no schema/logic change. Fixes the prior
wall/sidebar disagreement, surfaces Comparator (was last) and
Testimonials, and de-emphasizes the single-purpose Embed (was 3rd).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(chore): mint Linux visual baselines (frontend)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Applies the genuinely-new increments from the four Dependabot PRs (#167-#170)
directly on dev, the integration branch, since merging them into main would be
reverted by the next dev->main promote.

- actions/checkout v6 -> v7 across all workflows (lockstep, allowlist admits v7)
- cross-env ^7.0.3 -> ^10.1.0 (minimal lockfile delta: +@epic-web/invariant)

setup-node@v6 and pnpm/action-setup@v6 (#168, #169) were already on dev, so
those PRs are redundant. Also points Dependabot at dev (target-branch) so future
bumps land on the integration branch instead of main.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Resolves all six open Dependabot security alerts (undici < 7.28.0):
- CVE-2026-6734, CVE-2026-9697 (high)
- CVE-2026-9679, CVE-2026-9678 (medium)
- CVE-2026-11525, CVE-2026-6733 (low)

undici is an optional transitive of the jsdom/test chain; the parent range
already admits 7.28.0, so a plain re-resolve picks it up (no override needed).
The sibling bumps are all within that same optional cluster.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Lands @highoncomputers' #173 onto dev. Resolves #138.

Co-authored-by: highoncomputers <highoncomputers@users.noreply.github.com>
Print stage-specific recovery guidance when `payload-components add` fails
mid-install, a "retrying partial install" notice when re-running a partial
entry, and owned/patched file detail in `payload-components doctor`. Docs in
both READMEs cover fix-and-retry without deleting patched host files.

Rebuilds the intent of #94 on the current install-state model: owned files
come from `manifest.files` and patched files from the existing patchedFiles
var / `entry.patchedFiles` (the `installedFiles` field #94 relied on was
removed from the state model).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Clarify that `payload-components init` delegates to `shadcn init` to create the `components.json` baseline, and that `payload-components add` expects that baseline and does not run init automatically as a side effect.

Lands the docs fix from #165 with authorship preserved for @tysoul574-spec.

Closes #104

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…190)

* frontend(feat): redesign logo as terminal prompt + block-cursor mark

Replace the bare > glyph with a geometric prompt chevron + block cursor,
drawn as a real SVG so the header, favicon, and OG image share one mark.
Retires the Payload-CMS-style favicon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(chore): mint Linux visual baselines (frontend.e2e) (#189)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Fills the previously-empty Pricing catalog family with five field-driven
Payload blocks, retokenized from tailark/blocks (MIT) onto the light
monochrome + emerald system: pricing-cards (showpiece), pricing-cards-muted,
pricing-cards-cta, pricing-split, and pricing-enterprise (editable Media
logo wall). Shared pricingFields/planFields keep the family from drifting.

Wires the full add-a-family contract against current dev (58 page blocks):
5 block sources + shared fields, 5 manifests, 5 registry.json items
(registryDeps matched to imports), 5 class-mirrored demo twins + demo
content, catalog entries inserted at the curated rank (after Comparator),
FAMILIES docs-nav entry, count pins (53->58) across site.ts/about/tests,
cli + smoke lists, and 5 docs pages with tailark MIT attribution.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…#193)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…split highlight (#194)

Three polish fixes from the pricing-family code review. All visually neutral,
so the just-minted (#193) Linux baselines stay valid.

- PricingEnterprise: validate the logo `href` so non-http(s) values (e.g. a
  `javascript:` payload) are rejected. Inlined rather than reusing
  shared/safeUrls — the embed/form validators there would wrongly reject
  arbitrary customer URLs.
- Mark the decorative feature-list `<Check>` icons aria-hidden across all five
  variants so screen readers don't announce them.
- PricingSplit: derive the highlighted (right) plan from the `featured` flag
  instead of hard-coding plans[1], so marking either plan featured works.
  Mirrored in the PricingSplitDemo twin.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Add stable edge cache headers for crawl metadata and tighten sitemap coverage.
* docs: refresh ROADMAP.md to match current catalog count and remove stale references (#128)

Updates the stale '38 installable page blocks' count to '53 page blocks
across 11 families, with 8 post components in development'. Removes the
'waitlist funnel' reference from the Not Planned section since the waitlist
was removed. Adds a note about analytics collection.

Closes #128

* docs(roadmap): fix stale counts and broken analytics link

- 53 -> 58 installable page blocks (registry.json ships 58; matches site copy)
- 11 -> 12 families (pricing family already shipped via #191)
- drop link to non-existent content/docs/analytics.mdx
- restore "waitlist funnel" to Not Planned (still a documented non-goal)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: highoncomputers <highoncomputers@users.noreply.github.com>
Co-authored-by: Chai Pin Zheng <chaipinzheng@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@Ducksss

Ducksss commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

[codex] Release-readiness update:

  • The direct dev -> main promotion is now mergeable; the earlier topology conflict is no longer present.
  • Security, localized-preview analytics/consent, CLI documentation, and regression-test fixes are ready in fix(release): clear promotion review findings #555. Its complete release gate, Node 20 check, all four fresh-consumer shards, aggregate pr-gate, both Vercel deployments, and resolved CodeRabbit review are green.
  • The Crowdin action is now admitted by the repository Actions allowlist, and the workflow reaches the upload/download step. It cannot complete because CROWDIN_PROJECT_ID and CROWDIN_PERSONAL_TOKEN are not configured.
  • fix(release): clear promotion review findings #555 cannot merge to dev yet because the active ruleset requires one approving review, code-owner review, and last-push approval, while the repository currently has only the PR author as a collaborator.

No protection rule or review requirement has been bypassed.

Co-authored-by: Ducksss <58126222+Ducksss@users.noreply.github.com>
Co-authored-by: tin-computer[bot] <277149838+tin-computer[bot]@users.noreply.github.com>
@Ducksss
Ducksss marked this pull request as draft September 5, 2026 07:52
@Ducksss Ducksss changed the title release: promote dev to main — lifecycle, localization, and editorial roadmap release: promote dev to main — hardening, English-only site, and new components Sep 6, 2026
* fix(release): clear promotion review findings

Summary:
- upgrade fast-uri beyond the four high-severity advisories
- suppress analytics and consent chrome on localized preview routes
- align scaffold documentation with managed-file lifecycle behavior
- add localized preview regression coverage

Rationale:
- keep the dev-to-main promotion secure and prevent duplicate analytics
- make the documented overwrite contract match actual CLI behavior

Tests:
- pnpm test:release
- pnpm audit --prod --audit-level high

Co-authored-by: Codex <codex@openai.com>

* docs(cli): clarify scaffold reruns

Summary:
- explain that reruns may create missing canonical managed files
- preserve the distinction between owned and unowned project files

Rationale:
- make the scaffold contract match syncBaseBundle behavior

Tests:
- pnpm exec prettier --check content/docs/cli.mdx
- pnpm source:build
- pnpm exec tsc --noEmit
- git diff --check

Co-authored-by: Codex <codex@openai.com>

* fix(cli): reconcile same-version updates and migrate legacy localization helpers

* fix(i18n): centralize catalog copy and validate Crowdin exports before publication

* fix(i18n): support native JSON imports and require complete reviewed catalogs

* fix(i18n): preserve translations when Crowdin exports empty JSON values

* fix(ci): keep Crowdin exports writable by the validation runner

* docs: clarify generator steps and the localization migration boundary

* feat(i18n): add Japanese and Korean catalog drafts without a paid provider

* fix(i18n): use natural Korean wording for text metrics

* feat: add editorial browsing, contact form, and install documentation

* test(chore): mint Linux visual baselines (components-visual) (#559)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* test: add macOS baselines for new component previews

* Update article discovery copy and support landing baseline generation

* test(chore): mint Linux visual baselines (frontend) (#560)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* test: refresh landing baselines for the expanded catalog

* fix(i18n): publish English only and park translation maintenance

* test(i18n): accept relative redirect locations

* test(i18n): refresh English-only desktop baseline

* test(chore): mint Linux visual baselines (frontend) (#561)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(collection-query): render post dates consistently across timezones

* fix(localization): migrate shared policy owners in one recoverable batch

* test(chore): mint Linux visual baselines (frontend) (#562)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: address critical review of installs, forms, dates, and markdown contracts

* test: refresh combined English-only landing baseline on macOS

* chore(deps): upgrade Fumadocs core, UI, and MDX

---------

Co-authored-by: Codex <codex@openai.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@Ducksss Ducksss changed the title release: promote dev to main — hardening, English-only site, and new components release: promote dev to main for CLI 1.6.0 and the English-only site Sep 7, 2026
tin-computer Bot and others added 2 commits September 8, 2026 00:14
Co-authored-by: Ducksss <58126222+Ducksss@users.noreply.github.com>
Co-authored-by: tin-computer[bot] <277149838+tin-computer[bot]@users.noreply.github.com>
Co-authored-by: Ducksss <58126222+Ducksss@users.noreply.github.com>
Co-authored-by: tin-computer[bot] <277149838+tin-computer[bot]@users.noreply.github.com>
* chore(deps): upgrade Fumadocs core, UI, and MDX

* fix: harden installer recovery and streamline repository checks
* feat: add newsletter callout component

* components(fix): use portable newsletter heading tracking

Use Tailwind's built-in tracking-tight utility in the distributed
newsletter component and matching preview.

The previous tracking-title token exists only in the docs site and is
not installed into consumer projects.

Tests: focused component contract suite in progress; diff check passed.

* tests(test): add newsletter Linux visual baseline

Add the newsletter preview baseline generated by the existing Linux
visual-baselines workflow in production server mode.

This completes the component coverage contract for the new registry item.

Tests: visual-baselines workflow 34142576330 passed; image inspected.
Focused integration suite: 22 passed. TypeScript and formatting passed.

* tests(fix): derive catalog link count in browser checks

Read the catalog component count in the blog navigation assertion so
adding the newsletter component preserves the intended link check.

Tests: formatting passed; CI reproduced the stale 81-component lookup.

* tests(test): refresh landing baselines for newsletter catalog

Record the updated component count and Newsletter footer category in
the desktop and mobile landing references.

Tests: frontend visual-baselines workflow 34143676122 passed in Linux
production mode. Desktop failure diff confirms catalog/footer changes.

* tests(test): verify packaged newsletter installs and baseline

Include Newsletter Callout in the actual packed CLI install/reinstall
checks, and record its initial canonical file hash.

This covers the new component in the 1.6.0 release artifact and keeps
its install baseline ready for the strengthened registry contract.

Tests: pnpm test:pack passed on trial integration with the registry
hardening changes; 14 focused baseline/article/catalog tests passed.
Formatting and diff checks passed.

---------

Co-authored-by: Chai Pin Zheng <chaipinzheng@gmail.com>
@Ducksss Ducksss changed the title release: promote dev to main for CLI 1.6.0 and the English-only site release(feat): publish CLI 1.6.0 and the English-only site Sep 8, 2026
@Ducksss
Ducksss merged commit b6a3fbc into main Sep 8, 2026
19 checks passed
@Ducksss
Ducksss deleted the dev branch September 8, 2026 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants