PinZheng(release): promote dev to main#182
Merged
Merged
Conversation
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>
…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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…#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>
6 tasks
3c7a342 to
524591a
Compare
Promotes dev up to #190 (8b1d06c) to main — the last release-gate-green dev commit. Merge commit whose tree is identical to dev@#190 (parents: main, dev@#190), so merging lands that content wholesale via squash. Deliberately stops short of dev HEAD #191 (pricing family), whose Linux visual baselines are not yet minted (release-gate would fail); pricing rides the next promote once baselines exist. Repo bans merge commits, so land with --squash --admin. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
524591a to
4c28e66
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promote
dev→mainPromotes
devup to #190 (8b1d06c) tomain— the last release-gate-green dev commit. The PR branch is a merge commit whose tree is identical to dev@#190 (parents:main,dev@#190), so merging lands that content wholesale via squash. This sidesteps the recurring squash-promote historical divergence that makes a plainhead=devPR report CONFLICTING.Content delta (main → dev@#190)
139 files changed, +3424 / −497. Highlights:
installedFilesinstall-state field (cli(refactor): drop the redundant installedFiles install-state field #160); unify fragment writer/verifier dedup matchers (cli(fix): unify fragment writer/verifier dedup matchers #157); harden partial install recovery (cli(feat): harden partial install recovery #188)actions/checkout→v7,cross-env→v10 (repo(deps): bump actions/checkout to v7 and cross-env to v10 #183);upload-artifactv4→v7; mint Linux visual baselines for components-visual (test(chore): mint linux visual baselines for all 53 components #186)Excluded (next promote)
Merge note
Repo bans merge commits, so land with
--squash --admin. This lands dev's content but does not reconverge history (the promote divergence recurs every promote — expected).🤖 Generated with Claude Code