Skip to content

Generated Screenshot Recapture Plan - 2026-05-22

Every package and theme screenshot must be regenerated from a real installed Capell app state, then checked against the current packages/*/docs/screenshots.json manifest entry. A screenshot is not accepted just because it exists or is nonblank.

Every manifest entry must pass these gates before the screenshot is approved:

  1. The output filename exactly matches the current manifest screenshotPath.
  2. The browser is on the intended resource/page/route/widget/modal, not the dashboard or a fallback page.
  3. Filament/admin CSS is loaded, with normal sidebar/header sizing and styled form/table controls.
  4. Required seeded data is present unless the manifest explicitly asks for an empty state.
  5. Create/edit form screenshots show the required fields, including package-injected fields.
  6. Layout Builder screenshots show the layout field, layout tab, content-first editor, block form tabs, or rendered layout area required by the manifest.
  7. Frontend screenshots show package-specific public output and no admin/editor metadata.
  8. Theme screenshots show the actual theme renderer sections: navigation, hero, features, proof, content listing, CTA, and footer where the theme declares those sections.
  9. Browser console errors, CSS/JS 404s, Livewire request failures, and redirects to dashboard/login fail the capture.

The live screenshot runner exists at ../capell-screenshot-runner. A dry run against this packages repo expanded the manifests to 466 light/dark capture entries:

Terminal window
CAPELL_PACKAGES_REPO=/Users/ben/Sites/packages/capell/capell-packages-4 npm run validate -- --repo /Users/ben/Sites/packages/capell/capell-packages-4

Result:

  • Captured: 0
  • Skipped: 466
  • Failed: 0

That dry run only proves the manifests can be expanded. It does not prove target correctness, CSS health, field visibility, seeded data, or frontend output quality.

The runner needs stricter validation before the next full capture:

  • Add defaults for current resource targets such as BlockResource, ArticleResource, current ThemeResource:index entries, and all renamed manifest IDs.
  • Fail if an admin capture lands on Dashboard when the manifest target is a resource/form/widget/modal.
  • Fail if a waitFor: form entry does not expose expected labels/fields from the manifest or source.
  • Fail if Filament sidebar SVG/icons render at raw unstyled dimensions.
  • Fail if frontend screenshots contain only the generic Demo placeholder when package-specific content is expected.
  • Fail if the output path differs from the manifest screenshotPath.
  • Record console errors, failed network requests, final URL, page title, and matched selectors for every screenshot.

Fail means a present screenshot is known wrong. Missing means the current manifest path is absent. Recapture means the file exists but the required seeded state is not evidenced. Review means the file exists and is plausible, but still needs browser assertions before approval.

PackageEntriesFailMissingRecaptureReviewNotes
access-gate1001000Full package capture missing.
address50032Styled admin shell exists, but seeded countries/addresses/site settings state must be proven.
agent-bridge50014Existing screens need target/state assertions; several look like the same prompt builder surface.
ai-orchestrator30003Optional integration states need consuming-package proof.
api40400Full API route capture missing.
block-library30300Current manifest entries missing; old block-library gallery screenshots are stale.
blog104510Article form is Dashboard; frontend outputs are Demo placeholders; widgets/block outputs missing.
campaign-studio60240Admin forms need seeded state; dashboard and frontend campaign block outputs missing.
content-sections50500Full package capture missing.
dashboard-reports30300Dashboard widgets/settings missing.
demo-kit30300Full package capture missing.
deployments20101Connection page exists; widget missing.
diagnostics60105Admin pages plausible; command palette missing and widget/page data needs browser proof.
document-lifecycle40400Full package capture missing.
email-studio00000Manifest intentionally has no visible entries.
events1101100Full package capture missing.
form-builder51004Frontend form output is Demo placeholder; admin screens need form/schema/submission assertions.
foundation-theme41102Frontend page is placeholder; header layout area missing; settings/assets need browser proof.
frontend-authoring50302Admin config images exist; public authoring-enabled desktop/mobile captures missing.
frontend-optimizer20200Full package capture missing.
ga4-reports30300Full package capture missing.
hero20200Full package capture missing.
html-cache70700Current manifest outputs missing; existing html-optimizer screenshots are stale.
insights51004Frontend tracker output is placeholder; widgets/settings need seeded data proof.
layout-builder1001000Current manifest outputs missing. Stale files do not show layout field/editor requirements.
login-audit60204Settings/logs plausible; user access summary/relation manager missing.
media-ai10100Optional/blocked screenshot missing.
media-library40004Admin pages exist but empty; seed media health/migration/curator field states.
migration-assistant60105Existing screens appear repetitive; relation/export/rollback states need proof.
navigation51004Frontend menu output is Demo placeholder; admin/page relation states need assertions.
newsletter1301300Full package capture missing.
notes40400Full package capture missing.
password-policy30300Full package capture missing.
public-actions80800Full package capture missing.
publishing-studio132209Live preview/preview banner are placeholders; responsibility screenshots missing.
search62004Frontend search output is placeholder; widgets/settings need seeded data proof.
seo-suite110605Many current outputs missing; existing pages need distinct target verification.
site-discovery50500Full package capture missing.
tags40004Admin screens exist; relation/page form state needs seeded tagged records.
theme-agency31101Frontend page is placeholder/arc output; admin list/preview need theme record proof.
theme-corporate31101Frontend page is placeholder/arc output; admin list/preview need theme record proof.
theme-saas31101Frontend page is placeholder/arc output; admin list/preview need theme record proof.
translation-manager50500Full package capture missing.
welcome-tour40400Full package capture missing.
wordpress-importer30300Full package capture missing.

The theme packages register section renderers in code, so the screenshot runner must verify those sections visually rather than only checking a theme row exists.

Required previews:

  • Settings screen with Foundation Theme fields visible.
  • Public page rendered through Foundation Theme with header, footer, tokens, and components.
  • Generated Tailwind asset output review with actual generated asset evidence.
  • Header Layout Builder area with a seeded header-area block.

Current issue:

  • The public page is a generic placeholder.
  • The header-area screenshot is missing.

Required previews:

  • Themes admin list showing an Agency theme record.
  • /theme-agency-demo rendered through Agency navigation, hero, features, proof, content listing, CTA, and footer.
  • Signed preview URL output for the Agency theme.

Current issue:

  • Frontend output is a placeholder/arc image, not the Agency renderer.
  • The current manifest theme-admin-list-showing-agency.png is missing; stale theme-preset-selection-showing-agency.png exists instead.

Required previews:

  • Themes admin list showing a Corporate theme record.
  • /theme-corporate-demo rendered through Corporate navigation, hero, features, proof, content listing, CTA, and footer.
  • Signed preview URL output for the Corporate theme.

Current issue:

  • Frontend output is a placeholder/arc image, not the Corporate renderer.
  • The current manifest theme-admin-list-showing-corporate.png is missing; stale theme-preset-selection-showing-corporate.png exists instead.

Required previews:

  • Themes admin list showing a SaaS theme record.
  • /theme-saas-demo rendered through SaaS navigation, hero, features, proof, content listing, CTA, and footer.
  • Signed preview URL output for the SaaS theme.

Current issue:

  • Frontend output is a placeholder/arc image, not the SaaS renderer.
  • The current manifest theme-admin-list-showing-saas.png is missing; stale theme-preset-selection-showing-saas.png exists instead.

These entries must be explicitly asserted in browser automation because the existing screenshots either show the wrong screen or do not prove the fields are present.

PackageEntryRequired proof
blogcreate-edit-article-formArticle create/edit form with site, layout_id, tags, publish controls, translations/content, settings, and media fields.
layout-buildercreate-edit-block-formBlock form with resolved configurator tabs for component, display, settings, translations, and assets.
layout-builderpage-layout-content-first-editorPage edit screen with Layout tab/content-first layout editor visible and seeded editable block assets.
layout-builderpage-hero-editorPage edit screen with hero-specific fields injected by the package.
content-sectionssections-createBlueprint selector visible and controlling available fields.
content-sectionssections-edit-with-assetsSection translations and at least one related block asset/relation manager visible.
campaign-studiocampaign-conversion-goals-formGoal type, attribution model, active state, and seeded campaign group options.
campaign-studiocta-block-formTitle, body, button/action, style, tracking, campaign group, and target URL/page fields.
campaign-studiopage campaign extensionCampaign group, landing page toggle, primary goal, UTM content, and UTM term in page sidebar fields.
form-buildercreate-edit-form-schema-screenForm schema builder fields, submission handling settings, and styled controls.
navigationpage-form-navigation-tabPage form navigation tab with seeded navigation metadata controls.
tagsarticle-or-page-form-using-tagsinputTags input rendered inside an article/page form with seeded tags.
  1. Fix runner correctness first: fail on target fallback, missing CSS, console errors, and missing manifest output path.
  2. Recapture layout-builder, blog, foundation-theme, and theme-* first because they underpin the most visible docs and prove layout/theme rendering.
  3. Recapture packages with all screenshots missing: access-gate, events, newsletter, public-actions, html-cache, site-discovery, translation-manager, welcome-tour, wordpress-importer, and related packages.
  4. Recapture packages with placeholder frontend output: blog, campaign-studio, form-builder, foundation-theme, insights, navigation, publishing-studio, search, and all theme-* packages.
  5. Remove stale screenshots after replacement so docs cannot accidentally reference outdated files.