fix(ci): wire Angular build + R2 deploy + verify gate into both workflows#5
Merged
Merged
Conversation
…lows Prevents regression where Worker deploys without the Angular bundle being uploaded to R2, causing /admin routes to fall back to the legacy vanilla SPA. - project-sites.yaml: add frontend/** path trigger; install + build:prod + dist-exists + hashed-bundle grep + deploy-r2 + zone purge + verify-deploy in both deploy-staging and deploy-production jobs. Production verify is a HARD GATE; staging tolerates CF Bot Fight 403 from GHA datacenter IPs. - container-deploy.yaml: same hardening; retains original best-effort smoke test as final step. - frontend/package.json: deploy:staging / deploy:production / verify:production npm scripts. - frontend/scripts/verify-deploy.mjs: probes / and /admin/dashboard for main-<hash>.js, polyfills-<hash>.js, styles-<hash>.css, <app-root> markers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Format-only changes on 7 pre-existing files. Required so the new Angular-build/R2-deploy/verify-deploy gates in project-sites.yaml actually run downstream of the format check. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Format-only changes on 66 pre-existing files in apps/project-sites/src. Lint warnings unchanged (0 errors). Required so the new Angular-build/R2-deploy/verify-deploy gates downstream of the format check actually run. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ngular admin shell - meta_tags.test.ts: drop 251 lines of assertions against deleted public/index.html. Marketing homepage now ships from R2 (marketing/index.html, uploaded by frontend/scripts/deploy-r2.mjs) as the Angular admin bundle. Head-tag structure is asserted live against the deploy via frontend/scripts/verify-deploy.mjs (CI hard gate). Keep top-bar + email-template brand-color tests — both still reference server-side artifacts that exist. - site_serving_full.test.ts: update SPA-fallback mock chain. serveSiteFromR2 now walks 5 R2 keys before falling back to index.html (primary, dir-index, .html extension, flat-name, then SPA catch-all). Test was still mocking 2 GETs; chain 4 nulls + indexHtml and assert toHaveBeenLastCalledWith. Unblocks the unit-tests gate on container-deploy.yaml + project-sites.yaml so the regression-prevention CI fires end-to-end. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wires a cohesive Angular motion system across the admin dashboard and homepage CTAs, and removes the welcome tour pop-up + supporting code. Motion system: - new animations/ directory: motion.ts (9 triggers — fadeRise, scaleFade, drawerSlide, toastSlide, dialogScaleFade, listStagger, contentFade, routeAnimations, buttonState), count-up.directive (psCountUp), reveal-on-scroll.directive (psReveal), ripple.directive (psRipple) - styles.scss: motion tokens (durations, easings), ps-reveal styles, ps-ripple-ink keyframes, view-transition CSS, reduced-motion guards - app.config.ts: provideAnimations() + withViewTransitions - shortcuts-overlay + toast: switched inline keyframes to motion triggers - command-palette: animation cleanup - dashboard: listStagger + psRipple on stat-cards (4×), psCountUp on Domains/Visitors/Submissions, psReveal + psRipple on bottom-grid links - homepage: psRipple on desktop nav, mobile menu, hero primary + secondary CTAs (with custom rgba(255,255,255,0.18) on the outline) Tour removal: - delete onboarding.component.ts + all E2E references in 5 specs - update fixtures.ts to drop tour-dismissal state - app.component.ts: remove tour invocation GPU-only transforms/opacity. Full prefers-reduced-motion support. SSR-safe (no document/window access at construction). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Why: returning visitors still see the removed onboarding overlay because the service worker (cache-first navigation) serves the old cached `/`. Bumping CACHE_NAME triggers the activate handler to delete v3. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…focus stripes Hero + CTA search dropdowns now render at z-[1011] above the z-[1001] nav so no buttons can overlap them. Wrappers bumped to z-[1010] to lift the input stacking context cleanly. Input focus outlines no longer paint 2px cyan stripes flanking the search icon and loading spinner: any input with `outline-none` now overrides the global `*:focus-visible` cyan ring with `outline:none \!important`. Service Worker cache bumped to v6 to invalidate the prior CSS bundle. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ProfessorManhattan
added a commit
that referenced
this pull request
Jun 9, 2026
…lows (#5) * fix(ci): wire Angular build + R2 deploy + verify gate into both workflows Prevents regression where Worker deploys without the Angular bundle being uploaded to R2, causing /admin routes to fall back to the legacy vanilla SPA. - project-sites.yaml: add frontend/** path trigger; install + build:prod + dist-exists + hashed-bundle grep + deploy-r2 + zone purge + verify-deploy in both deploy-staging and deploy-production jobs. Production verify is a HARD GATE; staging tolerates CF Bot Fight 403 from GHA datacenter IPs. - container-deploy.yaml: same hardening; retains original best-effort smoke test as final step. - frontend/package.json: deploy:staging / deploy:production / verify:production npm scripts. - frontend/scripts/verify-deploy.mjs: probes / and /admin/dashboard for main-<hash>.js, polyfills-<hash>.js, styles-<hash>.css, <app-root> markers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(shared): prettier --write src to unblock CI gates Format-only changes on 7 pre-existing files. Required so the new Angular-build/R2-deploy/verify-deploy gates in project-sites.yaml actually run downstream of the format check. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(worker): prettier --write src to unblock CI gates Format-only changes on 66 pre-existing files in apps/project-sites/src. Lint warnings unchanged (0 errors). Required so the new Angular-build/R2-deploy/verify-deploy gates downstream of the format check actually run. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(tests): remove legacy marketing HTML test artifacts replaced by Angular admin shell - meta_tags.test.ts: drop 251 lines of assertions against deleted public/index.html. Marketing homepage now ships from R2 (marketing/index.html, uploaded by frontend/scripts/deploy-r2.mjs) as the Angular admin bundle. Head-tag structure is asserted live against the deploy via frontend/scripts/verify-deploy.mjs (CI hard gate). Keep top-bar + email-template brand-color tests — both still reference server-side artifacts that exist. - site_serving_full.test.ts: update SPA-fallback mock chain. serveSiteFromR2 now walks 5 R2 keys before falling back to index.html (primary, dir-index, .html extension, flat-name, then SPA catch-all). Test was still mocking 2 GETs; chain 4 nulls + indexHtml and assert toHaveBeenLastCalledWith. Unblocks the unit-tests gate on container-deploy.yaml + project-sites.yaml so the regression-prevention CI fires end-to-end. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(frontend): centralized motion system + remove welcome tour Wires a cohesive Angular motion system across the admin dashboard and homepage CTAs, and removes the welcome tour pop-up + supporting code. Motion system: - new animations/ directory: motion.ts (9 triggers — fadeRise, scaleFade, drawerSlide, toastSlide, dialogScaleFade, listStagger, contentFade, routeAnimations, buttonState), count-up.directive (psCountUp), reveal-on-scroll.directive (psReveal), ripple.directive (psRipple) - styles.scss: motion tokens (durations, easings), ps-reveal styles, ps-ripple-ink keyframes, view-transition CSS, reduced-motion guards - app.config.ts: provideAnimations() + withViewTransitions - shortcuts-overlay + toast: switched inline keyframes to motion triggers - command-palette: animation cleanup - dashboard: listStagger + psRipple on stat-cards (4×), psCountUp on Domains/Visitors/Submissions, psReveal + psRipple on bottom-grid links - homepage: psRipple on desktop nav, mobile menu, hero primary + secondary CTAs (with custom rgba(255,255,255,0.18) on the outline) Tour removal: - delete onboarding.component.ts + all E2E references in 5 specs - update fixtures.ts to drop tour-dismissal state - app.component.ts: remove tour invocation GPU-only transforms/opacity. Full prefers-reduced-motion support. SSR-safe (no document/window access at construction). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(frontend): bump SW cache v3→v4 to evict stale welcome-tour overlay Why: returning visitors still see the removed onboarding overlay because the service worker (cache-first navigation) serves the old cached `/`. Bumping CACHE_NAME triggers the activate handler to delete v3. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(homepage): raise live-search z-index above nav and suppress cyan focus stripes Hero + CTA search dropdowns now render at z-[1011] above the z-[1001] nav so no buttons can overlap them. Wrappers bumped to z-[1010] to lift the input stacking context cleanly. Input focus outlines no longer paint 2px cyan stripes flanking the search icon and loading spinner: any input with `outline-none` now overrides the global `*:focus-visible` cyan ring with `outline:none \!important`. Service Worker cache bumped to v6 to invalidate the prior CSS bundle. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ProfessorManhattan
added a commit
that referenced
this pull request
Jun 9, 2026
…lace (#5-8) - #5 Multi-Agent Swarm Editor: 7 specialists (visual/copy/seo/a11y/motion/media/qa) co-edit via non-overlapping file-glob partitions; SSE channel pushes per-specialist progress; merge-conflict detector fires on path overlap. Routes: POST/GET /api/swarm/:siteId/{start,stream,runs,run/:runId}. Admin board: /admin/swarm/:siteId — 7-column live progress grid. - stackblitz-labs#6 Live Component-Stream Preview: reuses swarm SSE (?mode=progressive). <app-progressive-preview> subscribes to stream and swaps skeleton slots for real components via View Transitions API. 9 skeleton slots. - stackblitz-labs#7 Site DNA Taste Graph: D1 site_dna_feedback + BGE Vectorize embeddings. Routes: POST /api/site-dna/:siteId/feedback, GET /preferences, GET /history. Migration: 0505_site_dna.sql. - stackblitz-labs#8 Vertical Section Marketplace: D1 section_marketplace seeded with 5 industries × 6 slots = 30 starter entries. Routes: GET /api/section-marketplace, /sections, /sections/:id, POST /sections/:id/fork. Admin UI: /admin/marketplace with industry filter tabs + quality score chips. Migration: 0506_section_marketplace.sql. - 4 new feature flags (enabled=0, rollout=0, stage='experimental'): swarm_editor, live_stream_preview, site_dna_taste_graph, section_marketplace. - Worker tsc --noEmit exits 0 for all new files. - 4 Playwright E2E spec files (TDD-first, hermetic, parallel-safe). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ProfessorManhattan
added a commit
that referenced
this pull request
Jun 9, 2026
…labs#7+stackblitz-labs#8 — swarm editor + live stream + Site DNA + section marketplace
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.
Summary
Why
Prior workflows only deployed the Worker — they never built/uploaded the Angular bundle. This regression caused `/admin/*` routes to fall back to the legacy `marketing/index.html` after any Worker-only deploy.
Test plan
Generated with Claude Code