This PR is a broad maintenance and design-alignment pass on adilallo/Cleanup. It consolidates static assets under predictable paths, aligns marketing sections (especially FeatureGrid and home template cards) with Figma, replaces legacy window.confirm in the create flow with an accessible async pattern, adds API route test coverage, and documents local verification tooling (knip, static assets).
Changes
Static assets & lib/assetUtils.ts
Reorganized public/assets/ into marketing/, logos/, share/, shapes/, icons/, etc.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Overview
This PR is a broad maintenance and design-alignment pass on
adilallo/Cleanup. It consolidates static assets under predictable paths, aligns marketing sections (especially FeatureGrid and home template cards) with Figma, replaces legacywindow.confirmin the create flow with an accessible async pattern, adds API route test coverage, and documents local verification tooling (knip, static assets).Changes
Static assets &
lib/assetUtils.tspublic/assets/intomarketing/,logos/,share/,shapes/,icons/, etc.docs/guides/static-assets.mdcataloging asset paths and consumers.lib/assetUtils.ts(featurePanelPath,featurePanelLayout, partner logos, case study art, etc.).FeatureGrid (Figma 18633:49999 / 18632:10911 / 18847:22410)
lib/svgGrainFilter.ts).md+).FEATURE_PANEL_LAYOUT); tools dove orientation fixed viarotate-180 -scale-x-100on raw SVG asset.public/assets/marketing/feature-{support,exercises,guidance,tools}.svg.Home template cards (Figma 21764:16435 / 22083:855584)
--color-surface-inverse-brand-secondary→ yellow200).Create flow
CustomMethodCardFieldBlocksSummary, wizard blocks list, upload row, etc.).window.confirmwithuseAsyncConfirm/useDiscardCustomizeConfirmon customize-exit screens andFinalReviewChipEditModal.Components & i18n
LanguageSwitchercomponent + stories/tests.public/assets/share/.Testing & tooling
MarkdownProcessing.test.js.disabled,content.test.js.disabled).npm run knipconfig + docs inAGENTS.mdanddocs/testing-guide.md(local only; no Gitea Actions CI — no runners on Cloudron).Storybook
Other
useAsyncConfirmhook for reusable confirm dialogs.knip.jsonentries expanded.Screenshots
How to Test
Install & run
Verify locally
Home page
Create flow
window.confirm.Storybook (optional)
Components/Sections/FeatureGrid,Components/Cards/Mini,Components/Cards/Rule.Share modal — icons render from
public/assets/share/*.svg.