From 44b79606440f7347ce74f07a0b6e06e976df1f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mai=20Th=E1=BB=A7y?= Date: Sat, 23 May 2026 15:37:59 +0700 Subject: [PATCH 01/35] chore: remove archive/ folder and stale .hoangsa/sessions/ - archive/index.html + archive/index 2.html: orphan backups, not referenced anywhere - .hoangsa/sessions/{chore,design,docs,feat,feature,fix,refactor}/: 223 files of old audit/spec history, no longer needed Co-Authored-By: Claude Opus 4.7 (1M context) --- .../chore/audit-full-codebase/AUDIT-REPORT.md | 141 ---- .../findings/architecture-quality.md | 104 --- .../findings/security-perf-deps.md | 120 ---- .../findings/tests-docs-dx.md | 122 ---- .../sessions/chore/full-audit/AUDIT-REPORT.md | 615 ----------------- .../chore/full-codebase-audit/AUDIT-REPORT.md | 79 --- .../chore/perf-and-security/CONTEXT.md | 59 -- .../chore/perf-and-security/DESIGN-SPEC.md | 167 ----- .../chore/perf-and-security/RESEARCH.md | 97 --- .../chore/perf-and-security/TEST-SPEC.md | 125 ---- .hoangsa/sessions/chore/quick-wins/CONTEXT.md | 36 - .../sessions/chore/quick-wins/DESIGN-SPEC.md | 102 --- .../sessions/chore/quick-wins/RESEARCH.md | 42 -- .../sessions/chore/quick-wins/TEST-SPEC.md | 70 -- .hoangsa/sessions/chore/quick-wins/plan.json | 78 --- .../chore/quick-wins/task-T-01.context.json | 46 -- .../chore/quick-wins/task-T-02.context.json | 25 - .../chore/quick-wins/task-T-03.context.json | 25 - .../chore/quick-wins/task-T-04.context.json | 17 - .../chore/refactor-audit-2/AUDIT-REPORT.md | 628 ------------------ .../findings/01-architecture.json | 153 ----- .../findings/02-code-smells.json | 152 ----- .../findings/03-security.json | 152 ----- .../findings/04-performance.json | 153 ----- .../findings/05-deps-summary.md | 38 -- .../refactor-audit-2/findings/05-deps.json | 62 -- .../refactor-audit-2/findings/06-tests.json | 102 --- .../refactor-audit-2/findings/07-docs.json | 102 --- .../refactor-audit-2/findings/08-dx.json | 122 ---- .../findings/09-simplify-summary.md | 48 -- .../findings/09-simplify.json | 167 ----- .../chore/refactor-audit/AUDIT-REPORT.md | 210 ------ .../brand-color-and-company-icon/CONTEXT.md | 49 -- .../DESIGN-SPEC.md | 98 --- .../brand-color-and-company-icon/RESEARCH.md | 50 -- .../brand-color-and-company-icon/TEST-SPEC.md | 78 --- .../brand-color-and-company-icon/plan.json | 46 -- .../brand-color-and-company-icon/state.json | 16 - .../task-T-01.context.json | 25 - .../task-T-02.context.json | 32 - .../color-theme-footer-branding/CONTEXT.md | 47 -- .../DESIGN-SPEC.md | 191 ------ .../color-theme-footer-branding/RESEARCH.md | 36 - .../color-theme-footer-branding/TEST-SPEC.md | 59 -- .../color-theme-footer-branding/plan.json | 89 --- .../color-theme-footer-branding/state.json | 16 - .../task-design-01.context.json | 25 - .../task-design-02.context.json | 25 - .../task-design-03.context.json | 25 - .../task-design-04.context.json | 25 - .../task-design-05.context.json | 25 - .../design/company-logo-square/CONTEXT.md | 37 -- .../design/company-logo-square/DESIGN-SPEC.md | 76 --- .../design/company-logo-square/RESEARCH.md | 31 - .../design/company-logo-square/TEST-SPEC.md | 54 -- .../design/company-logo-square/plan.json | 26 - .../design/company-logo-square/state.json | 16 - .../task-T-01.context.json | 25 - .../footer-linkedin-team-avatars/CONTEXT.md | 53 -- .../DESIGN-SPEC.md | 185 ------ .../footer-linkedin-team-avatars/RESEARCH.md | 169 ----- .../footer-linkedin-team-avatars/TEST-SPEC.md | 115 ---- .../footer-linkedin-team-avatars/state.json | 16 - .../docs/color-palette-sync/RESEARCH.md | 75 --- .../docs/footer-team-linkedin/RESEARCH.md | 169 ----- .../xem-truoc-ung-dung-images/RESEARCH.md | 143 ---- .../feat/circular-carousel/CONTEXT.md | 30 - .../feat/circular-carousel/DESIGN-SPEC.md | 176 ----- .../feat/circular-carousel/RESEARCH.md | 40 -- .../feat/circular-carousel/TEST-SPEC.md | 60 -- .../sessions/feat/circular-carousel/plan.json | 42 -- .../feat/circular-carousel/state.json | 16 - .../circular-carousel/task-T-01.context.json | 25 - .../circular-carousel/task-T-02.context.json | 25 - .../CONTEXT.md | 63 -- .../DESIGN-SPEC.md | 401 ----------- .../RESEARCH.md | 144 ---- .../TEST-SPEC.md | 230 ------- .../plan.json | 75 --- .../state.json | 16 - .../task-T-01.context.json | 32 - .../task-T-02.context.json | 25 - .../task-T-03.context.json | 25 - .../carousel-add-images/DESIGN-SPEC.md | 65 -- .../feature/carousel-add-images/TEST-SPEC.md | 30 - .../feature/carousel-add-images/plan.json | 25 - .../feature/carousel-add-images/state.json | 16 - .../task-T-01.context.json | 25 - .hoangsa/sessions/fix/a11y-deep/CONTEXT.md | 34 - .../sessions/fix/a11y-deep/DESIGN-SPEC.md | 152 ----- .hoangsa/sessions/fix/a11y-deep/RESEARCH.md | 65 -- .hoangsa/sessions/fix/a11y-deep/TEST-SPEC.md | 101 --- .hoangsa/sessions/fix/a11y-deep/plan.json | 125 ---- .../fix/a11y-deep/task-T-01.context.json | 25 - .../fix/a11y-deep/task-T-02.context.json | 25 - .../fix/a11y-deep/task-T-03.context.json | 25 - .../fix/a11y-deep/task-T-04.context.json | 25 - .../fix/a11y-deep/task-T-05.context.json | 39 -- .../fix/a11y-deep/task-T-06.context.json | 25 - .../fix/a11y-deep/task-T-07.context.json | 25 - .../sessions/fix/audit-quick-wins/CONTEXT.md | 28 - .../fix/audit-quick-wins/DESIGN-SPEC.md | 83 --- .../fix/audit-quick-wins/TEST-SPEC.md | 62 -- .../sessions/fix/audit-quick-wins/plan.json | 130 ---- .../sessions/fix/audit-quick-wins/state.json | 16 - .../fix/carousel-mobile-responsive/CONTEXT.md | 83 --- .../carousel-mobile-responsive/DESIGN-SPEC.md | 373 ----------- .../carousel-mobile-responsive/RESEARCH-v2.md | 175 ----- .../carousel-mobile-responsive/RESEARCH.md | 85 --- .../carousel-mobile-responsive/TEST-SPEC.md | 258 ------- .../fix/carousel-mobile-responsive/plan.json | 132 ---- .../fix/carousel-mobile-responsive/state.json | 16 - .../task-T-01.context.json | 25 - .../task-T-02.context.json | 25 - .../task-T-03.context.json | 32 - .../task-T-04.context.json | 25 - .../task-T-05.context.json | 25 - .../task-T-06.context.json | 25 - .../carousel-responsive-spacing/CONTEXT.md | 21 - .../DESIGN-SPEC.md | 79 --- .../carousel-responsive-spacing/TEST-SPEC.md | 32 - .../sessions/fix/carousel-size-bug/CONTEXT.md | 39 -- .../fix/carousel-size-bug/DESIGN-SPEC.md | 114 ---- .../fix/carousel-size-bug/RESEARCH.md | 143 ---- .../fix/carousel-size-bug/TEST-SPEC.md | 69 -- .../sessions/fix/carousel-size-bug/plan.json | 25 - .../sessions/fix/carousel-size-bug/state.json | 16 - .../carousel-size-bug/task-FIX-1.context.json | 25 - .../fix/carousel-visual-bugs/CONTEXT.md | 34 - .../fix/carousel-visual-bugs/DESIGN-SPEC.md | 143 ---- .../fix/carousel-visual-bugs/RESEARCH.md | 25 - .../fix/carousel-visual-bugs/TEST-SPEC.md | 48 -- .../fix/carousel-visual-bugs/plan.json | 28 - .../fix/carousel-visual-bugs/state.json | 16 - .../task-T-01.context.json | 39 -- .../fix/center-scale-regression/plan.json | 13 - .../fix/coverflow-5-visual-bugs/CONTEXT.md | 27 - .../coverflow-5-visual-bugs/DESIGN-SPEC.md | 168 ----- .../fix/coverflow-5-visual-bugs/TEST-SPEC.md | 47 -- .../fix/coverflow-5-visual-bugs/plan.json | 44 -- .../fix/coverflow-5-visual-bugs/state.json | 16 - .../task-T-01.context.json | 25 - .../task-T-02.context.json | 39 -- .../cta-buttons-center-horizontal/plan.json | 14 - .../fix/download-cta-center-scale/CONTEXT.md | 50 -- .../download-cta-center-scale/DESIGN-SPEC.md | 108 --- .../fix/download-cta-center-scale/RESEARCH.md | 48 -- .../download-cta-center-scale/TEST-SPEC.md | 94 --- .../fix/download-cta-center-scale/state.json | 16 - .../fix/footer-redesign-hierarchy/CONTEXT.md | 56 -- .../footer-redesign-hierarchy/DESIGN-SPEC.md | 147 ---- .../fix/footer-redesign-hierarchy/RESEARCH.md | 86 --- .../footer-redesign-hierarchy/TEST-SPEC.md | 96 --- .../fix/footer-redesign-hierarchy/plan.json | 58 -- .../fix/footer-redesign-hierarchy/state.json | 16 - .../task-T-01.context.json | 29 - .../task-T-02.context.json | 29 - .../task-T-03.context.json | 29 - .../sessions/fix/footer-spacing/CONTEXT.md | 40 -- .../fix/footer-spacing/DESIGN-SPEC.md | 80 --- .../sessions/fix/footer-spacing/TEST-SPEC.md | 47 -- .../sessions/fix/footer-spacing/plan.json | 57 -- .../sessions/fix/footer-spacing/state.json | 16 - .../fix/footer-spacing/task-T-01.context.json | 29 - .../fix/footer-spacing/task-T-02.context.json | 29 - .../fix/footer-spacing/task-T-03.context.json | 29 - .../sessions/fix/image-frame-crop/CONTEXT.md | 46 -- .../fix/image-frame-crop/DESIGN-SPEC.md | 192 ------ .../sessions/fix/image-frame-crop/RESEARCH.md | 61 -- .../fix/image-frame-crop/TEST-SPEC.md | 99 --- .../sessions/fix/image-frame-crop/plan.json | 43 -- .../sessions/fix/image-frame-crop/state.json | 25 - .../image-frame-crop/task-T-01.context.json | 25 - .../image-frame-crop/task-T-02.context.json | 25 - .../carousel-mobile-interpolation/CONTEXT.md | 55 -- .../DESIGN-SPEC.md | 124 ---- .../carousel-mobile-interpolation/RESEARCH.md | 43 -- .../TEST-SPEC.md | 76 --- .../carousel-mobile-interpolation/plan.json | 61 -- .../task-T-01.context.json | 25 - .../task-T-02.context.json | 25 - .../task-T-03.context.json | 25 - .../carousel-preview-images/CONTEXT.md | 71 -- .../carousel-preview-images/state.json | 16 - .../refactor/carousel-scroll-snap/CONTEXT.md | 51 -- .../carousel-scroll-snap/DESIGN-SPEC.md | 312 --------- .../refactor/carousel-scroll-snap/RESEARCH.md | 67 -- .../carousel-scroll-snap/TEST-SPEC.md | 95 --- .../refactor/carousel-scroll-snap/plan.json | 62 -- .../refactor/carousel-scroll-snap/state.json | 16 - .../task-T-01.context.json | 25 - .../task-T-02.context.json | 25 - .../task-T-03.context.json | 32 - .../refactor/full-3d-coverflow/CONTEXT.md | 39 -- .../refactor/full-3d-coverflow/DESIGN-SPEC.md | 224 ------- .../refactor/full-3d-coverflow/RESEARCH.md | 90 --- .../refactor/full-3d-coverflow/TEST-SPEC.md | 124 ---- .../refactor/full-3d-coverflow/plan.json | 61 -- .../refactor/full-3d-coverflow/state.json | 16 - .../full-3d-coverflow/task-T-01.context.json | 39 -- .../full-3d-coverflow/task-T-02.context.json | 25 - .../full-3d-coverflow/task-T-03.context.json | 25 - .../html-partials-and-dedupe/CONTEXT.md | 55 -- .../html-partials-and-dedupe/DESIGN-SPEC.md | 167 ----- .../html-partials-and-dedupe/RESEARCH.md | 119 ---- .../html-partials-and-dedupe/TEST-SPEC.md | 95 --- .../refactor/icon-sprite-adoption/CONTEXT.md | 70 -- .../icon-sprite-adoption/DESIGN-SPEC.md | 255 ------- .../refactor/icon-sprite-adoption/RESEARCH.md | 151 ----- .../icon-sprite-adoption/TEST-SPEC.md | 322 --------- .../refactor/icon-sprite-adoption/plan.json | 167 ----- .../refactor/icon-sprite-adoption/state.json | 18 - .../task-T-01.context.json | 25 - .../task-T-04.context.json | 46 -- .../task-T-05.context.json | 25 - .../task-T-06.context.json | 39 -- .../task-T-07.context.json | 25 - .../sessions/refactor/split-js-css/CONTEXT.md | 29 - .../refactor/split-js-css/DESIGN-SPEC.md | 120 ---- .../refactor/split-js-css/TEST-SPEC.md | 58 -- .../sessions/refactor/split-js-css/plan.json | 62 -- .../sessions/refactor/split-js-css/state.json | 16 - .../split-js-css/task-T-03.context.json | 25 - 223 files changed, 16888 deletions(-) delete mode 100644 .hoangsa/sessions/chore/audit-full-codebase/AUDIT-REPORT.md delete mode 100644 .hoangsa/sessions/chore/audit-full-codebase/findings/architecture-quality.md delete mode 100644 .hoangsa/sessions/chore/audit-full-codebase/findings/security-perf-deps.md delete mode 100644 .hoangsa/sessions/chore/audit-full-codebase/findings/tests-docs-dx.md delete mode 100644 .hoangsa/sessions/chore/full-audit/AUDIT-REPORT.md delete mode 100644 .hoangsa/sessions/chore/full-codebase-audit/AUDIT-REPORT.md delete mode 100644 .hoangsa/sessions/chore/perf-and-security/CONTEXT.md delete mode 100644 .hoangsa/sessions/chore/perf-and-security/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/chore/perf-and-security/RESEARCH.md delete mode 100644 .hoangsa/sessions/chore/perf-and-security/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/chore/quick-wins/CONTEXT.md delete mode 100644 .hoangsa/sessions/chore/quick-wins/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/chore/quick-wins/RESEARCH.md delete mode 100644 .hoangsa/sessions/chore/quick-wins/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/chore/quick-wins/plan.json delete mode 100644 .hoangsa/sessions/chore/quick-wins/task-T-01.context.json delete mode 100644 .hoangsa/sessions/chore/quick-wins/task-T-02.context.json delete mode 100644 .hoangsa/sessions/chore/quick-wins/task-T-03.context.json delete mode 100644 .hoangsa/sessions/chore/quick-wins/task-T-04.context.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/AUDIT-REPORT.md delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/01-architecture.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/02-code-smells.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/03-security.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/04-performance.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/05-deps-summary.md delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/05-deps.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/06-tests.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/07-docs.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/08-dx.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/09-simplify-summary.md delete mode 100644 .hoangsa/sessions/chore/refactor-audit-2/findings/09-simplify.json delete mode 100644 .hoangsa/sessions/chore/refactor-audit/AUDIT-REPORT.md delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/CONTEXT.md delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/RESEARCH.md delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/plan.json delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/state.json delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/task-T-01.context.json delete mode 100644 .hoangsa/sessions/design/brand-color-and-company-icon/task-T-02.context.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/CONTEXT.md delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/RESEARCH.md delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/plan.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/state.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/task-design-01.context.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/task-design-02.context.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/task-design-03.context.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/task-design-04.context.json delete mode 100644 .hoangsa/sessions/design/color-theme-footer-branding/task-design-05.context.json delete mode 100644 .hoangsa/sessions/design/company-logo-square/CONTEXT.md delete mode 100644 .hoangsa/sessions/design/company-logo-square/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/design/company-logo-square/RESEARCH.md delete mode 100644 .hoangsa/sessions/design/company-logo-square/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/design/company-logo-square/plan.json delete mode 100644 .hoangsa/sessions/design/company-logo-square/state.json delete mode 100644 .hoangsa/sessions/design/company-logo-square/task-T-01.context.json delete mode 100644 .hoangsa/sessions/design/footer-linkedin-team-avatars/CONTEXT.md delete mode 100644 .hoangsa/sessions/design/footer-linkedin-team-avatars/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/design/footer-linkedin-team-avatars/RESEARCH.md delete mode 100644 .hoangsa/sessions/design/footer-linkedin-team-avatars/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/design/footer-linkedin-team-avatars/state.json delete mode 100644 .hoangsa/sessions/docs/color-palette-sync/RESEARCH.md delete mode 100644 .hoangsa/sessions/docs/footer-team-linkedin/RESEARCH.md delete mode 100644 .hoangsa/sessions/docs/xem-truoc-ung-dung-images/RESEARCH.md delete mode 100644 .hoangsa/sessions/feat/circular-carousel/CONTEXT.md delete mode 100644 .hoangsa/sessions/feat/circular-carousel/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/feat/circular-carousel/RESEARCH.md delete mode 100644 .hoangsa/sessions/feat/circular-carousel/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/feat/circular-carousel/plan.json delete mode 100644 .hoangsa/sessions/feat/circular-carousel/state.json delete mode 100644 .hoangsa/sessions/feat/circular-carousel/task-T-01.context.json delete mode 100644 .hoangsa/sessions/feat/circular-carousel/task-T-02.context.json delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/CONTEXT.md delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/RESEARCH.md delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/plan.json delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/state.json delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/task-T-01.context.json delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/task-T-02.context.json delete mode 100644 .hoangsa/sessions/feat/responsive-carousel-scale-center/task-T-03.context.json delete mode 100644 .hoangsa/sessions/feature/carousel-add-images/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/feature/carousel-add-images/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/feature/carousel-add-images/plan.json delete mode 100644 .hoangsa/sessions/feature/carousel-add-images/state.json delete mode 100644 .hoangsa/sessions/feature/carousel-add-images/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/a11y-deep/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/a11y-deep/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/a11y-deep/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/a11y-deep/plan.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-02.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-03.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-04.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-05.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-06.context.json delete mode 100644 .hoangsa/sessions/fix/a11y-deep/task-T-07.context.json delete mode 100644 .hoangsa/sessions/fix/audit-quick-wins/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/audit-quick-wins/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/audit-quick-wins/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/audit-quick-wins/plan.json delete mode 100644 .hoangsa/sessions/fix/audit-quick-wins/state.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/RESEARCH-v2.md delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/plan.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/state.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-02.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-03.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-04.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-05.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-mobile-responsive/task-T-06.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-responsive-spacing/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/carousel-responsive-spacing/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-responsive-spacing/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/plan.json delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/state.json delete mode 100644 .hoangsa/sessions/fix/carousel-size-bug/task-FIX-1.context.json delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/plan.json delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/state.json delete mode 100644 .hoangsa/sessions/fix/carousel-visual-bugs/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/center-scale-regression/plan.json delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/plan.json delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/state.json delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/coverflow-5-visual-bugs/task-T-02.context.json delete mode 100644 .hoangsa/sessions/fix/cta-buttons-center-horizontal/plan.json delete mode 100644 .hoangsa/sessions/fix/download-cta-center-scale/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/download-cta-center-scale/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/download-cta-center-scale/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/download-cta-center-scale/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/download-cta-center-scale/state.json delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/plan.json delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/state.json delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/task-T-02.context.json delete mode 100644 .hoangsa/sessions/fix/footer-redesign-hierarchy/task-T-03.context.json delete mode 100644 .hoangsa/sessions/fix/footer-spacing/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/footer-spacing/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/footer-spacing/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/footer-spacing/plan.json delete mode 100644 .hoangsa/sessions/fix/footer-spacing/state.json delete mode 100644 .hoangsa/sessions/fix/footer-spacing/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/footer-spacing/task-T-02.context.json delete mode 100644 .hoangsa/sessions/fix/footer-spacing/task-T-03.context.json delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/CONTEXT.md delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/RESEARCH.md delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/plan.json delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/state.json delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/task-T-01.context.json delete mode 100644 .hoangsa/sessions/fix/image-frame-crop/task-T-02.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/RESEARCH.md delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/plan.json delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/task-T-01.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/task-T-02.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-mobile-interpolation/task-T-03.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-preview-images/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/carousel-preview-images/state.json delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/RESEARCH.md delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/plan.json delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/state.json delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/task-T-01.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/task-T-02.context.json delete mode 100644 .hoangsa/sessions/refactor/carousel-scroll-snap/task-T-03.context.json delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/RESEARCH.md delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/plan.json delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/state.json delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/task-T-01.context.json delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/task-T-02.context.json delete mode 100644 .hoangsa/sessions/refactor/full-3d-coverflow/task-T-03.context.json delete mode 100644 .hoangsa/sessions/refactor/html-partials-and-dedupe/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/html-partials-and-dedupe/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/html-partials-and-dedupe/RESEARCH.md delete mode 100644 .hoangsa/sessions/refactor/html-partials-and-dedupe/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/RESEARCH.md delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/plan.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/state.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/task-T-01.context.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/task-T-04.context.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/task-T-05.context.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/task-T-06.context.json delete mode 100644 .hoangsa/sessions/refactor/icon-sprite-adoption/task-T-07.context.json delete mode 100644 .hoangsa/sessions/refactor/split-js-css/CONTEXT.md delete mode 100644 .hoangsa/sessions/refactor/split-js-css/DESIGN-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/split-js-css/TEST-SPEC.md delete mode 100644 .hoangsa/sessions/refactor/split-js-css/plan.json delete mode 100644 .hoangsa/sessions/refactor/split-js-css/state.json delete mode 100644 .hoangsa/sessions/refactor/split-js-css/task-T-03.context.json diff --git a/.hoangsa/sessions/chore/audit-full-codebase/AUDIT-REPORT.md b/.hoangsa/sessions/chore/audit-full-codebase/AUDIT-REPORT.md deleted file mode 100644 index 3c2b946..0000000 --- a/.hoangsa/sessions/chore/audit-full-codebase/AUDIT-REPORT.md +++ /dev/null @@ -1,141 +0,0 @@ -# AUDIT REPORT — weekend-go-web - -**Date:** 2026-04-14 -**Scope:** Full audit (9 dimensions, deep mode) -**Codebase:** 4 HTML pages + 2 JS + 2 CSS + Tailwind config (~2,259 LOC excluding compiled CSS) -**Stack:** HTML5 + TailwindCSS 3.4.19 (CLI) + Vanilla JS — static landing page for "Cuối Tuần Đi Đâu" app - ---- - -## Executive summary - -| Severity | Count | -|----------|-------| -| 🔴 Critical | 0 | -| 🟠 High | 9 | -| 🟡 Medium | 17 | -| 🟢 Low | 12 | -| **Total** | **38** | - -**Health rating:** 🟡 Solid foundation, several structural debts. No critical security issues. Codebase is small and approachable but lacks abstractions appropriate for a 4-page multi-page site (heavy duplication). No tests, no CI, no deploy config committed. - -**Three biggest themes:** -1. **HTML duplication** — Same nav/footer/CTA/SVG markup copy-pasted across 4 pages. Drift already started. Time bomb for brand updates. -2. **Build/deploy gap** — README says "no build step" but Tailwind CLI is required. No CI verifies builds. No deploy config in repo. No way to confirm `assets/css/styles.css` is fresh. -3. **Accessibility blind spots** — Carousel autoplays without `prefers-reduced-motion`. Malformed `

...

` HTML on legal pages. Skip-link missing. - -**What's already good:** -- Zero critical vulnerabilities. `npm audit` clean. -- `` + WebP fallback used throughout (good perf foundation). -- Hero LCP preloaded with `fetchpriority="high"`. -- All `` have meaningful Vietnamese alt text. -- Decorative SVG icons consistently `aria-hidden="true"` (20+ occurrences). -- `` consistent across all 4 pages. -- OG/Twitter meta on all pages. -- Single `

` per page. -- `defer` on all JS scripts. -- Carousel pauses on `visibilitychange`. -- `.editorconfig` present. - ---- - -## Roadmap — 5 themes ordered by ROI - -### 🎯 Theme 1 — Quick wins (cleanup, ≤ 30 min each) -**Impact:** Removes obvious bugs + fixes invalid HTML. Total: ~1 hour. - -| ID | Action | Effort | Severity | -|----|--------|--------|----------| -| A11Y-001 / ARCH-002 | Fix `

...

` mismatched closers in `terms.html`, `privacy.html`, `community-standards.html` (6 occurrences total) | 5 min | HIGH | -| SEC-001 | Add `node_modules/`, `.env*`, `.hoangsa/`, `.claude/` to `.gitignore` | 1 min | HIGH | -| CQ-005 / SEC-003 | Delete inline `` inline. Duplicates a rule already in `src/input.css`. -- Impact: forces `'unsafe-inline'` in any future `style-src` CSP. -- Suggested fix: remove the inline block — rule already exists in `assets/css/styles.css` via `src/input.css`. -- Effort: 1 min. - -### SEC-004 — Plaintext mailto exposes `hello@cuoituandidau.vn` to scrapers [LOW / informational] -- Location: index.html:1290, privacy.html:188,218, terms.html:172,202, community-standards.html:162,185,215 -- Evidence: email appears as plain text in HTML. -- Impact: spam harvesting. Acceptable for a contact address; note only. -- Suggested fix: optional — use a contact form, Cloudflare email obfuscation, or split/encode the address in the rendered text while keeping `href="mailto:"`. -- Effort: n/a unless spam becomes a problem. - -### SEC-005 — Third-party hosts loaded at runtime [LOW / informational] -- Location: all four HTML files, `` in `` -- Evidence: only two external origins: `fonts.googleapis.com` (Google Fonts CSS) and `fonts.gstatic.com` (font files). No analytics, no trackers, no tag managers, no CDNs for JS. -- Impact: minimal. Both are well-known Google hosts; privacy policy should mention Google Fonts data collection (IP logging) for GDPR-style compliance. Consider self-hosting Inter if privacy is a concern (Germany has ruled runtime Google Fonts = GDPR violation). -- Suggested fix: either self-host Inter woff2 files (saves one preconnect + decouples from Google), or reference Google Fonts usage in privacy.html. -- Effort: 30 min to self-host. - -### PERF-001 — Raw PNG duplicates waste ~4.76 MB of repo storage [MEDIUM] -- Location: `assets/images/ai-review.png`, `plan-list.png`, `share-review.png`, `weekend-plan.png` -- Evidence: these `.png` files are not referenced anywhere in HTML; only their `.webp` variants are used (index.html:946,966,936,956). No `` fallback wrapper is used for these carousel images. -- Impact: bloated clone/deploy. At 836 KB–1.47 MB each they were originally intended as `` fallbacks but the `` tags reference `.webp` directly with no `` fallback. -- Suggested fix: either (a) delete the unused PNGs, or (b) wrap each carousel `` in `` for Safari <14 / legacy fallback. Given target audience (mobile-first Vietnam, modern browsers) option (a) is fine. -- Effort: 5 min (delete) or 15 min (wrap). - -### PERF-002 — og:image / twitter:image on legal pages point at 544 KB PNG [MEDIUM] -- Location: privacy.html:16,22; terms.html:16,22; community-standards.html:16,22 -- Evidence: `og:image` and `twitter:image` = `https://cuoituandidau.vn/assets/images/hero-banner-desktop.png` (544 KB). index.html correctly uses the `.webp` variant (30.9 KB). -- Impact: social crawlers (Facebook, LinkedIn, iMessage, Slack) fetch 544 KB per share of a legal page. Slow preview generation, wasted bandwidth. Note: some platforms historically don't accept webp for og:image; PNG is safer but a smaller, resized (1200×630) dedicated OG image would be ideal. -- Suggested fix: create a 1200×630 JPEG or PNG around 80–150 KB dedicated for OG (e.g. `og-cover.jpg`) and reference it from all pages including index.html. -- Effort: 30 min (design + export + swap meta). - -### PERF-003 — Google Fonts stylesheet is render-blocking [MEDIUM] -- Location: index.html:63-66; privacy.html:27-28; terms.html:27-28; community-standards.html:27-28 -- Evidence: `` is synchronous. Even with `display=swap`, the CSS request blocks render. Legal pages do a `` but don't use the `onload` swap trick, so the preload is redundant. -- Impact: one extra round-trip (~100–300 ms) to fonts.googleapis.com before first paint. Not catastrophic but measurable in FCP. -- Suggested fix: self-host Inter (preferred — also solves SEC-005 and eliminates two DNS lookups) or convert to the async pattern: `` with a `