Mirror web as Vue SPA (apps/web-vue) - #37
Merged
Merged
Conversation
…uery, unhead Part of #40
… type filter, event modal
…ify-email, 2fa, oauth callback (#45)
…faq, partner, achievements, activities, privacy/refund/terms Ports apps/web marketing pages page-for-page: WDS home sections (hero, contact bento+ beams, clients, mission, stats), about hero/sections, generation gen sections (mobile expandable + desktop bento), faq grid, dark partner/achievements/activities pages with their components, and the 3 legal content.mdx copied to .md (LastUpdated line dropped, rendered via marked with slugified heading ids driving the LegalLayout TOC). Static data copied: faq, generations; achievements/activities/partners icons ported to lucide-vue components. Navbar/Footer stay shell-owned (App.vue); page <main> wrappers became divs; StructuredData JSON-LD already provided by App.vue head. Refs #43
44 45 47)
Mirror apps/web: /orders list (skeleton, empty, pagination, cancel), /orders/:id detail (cancel, payment-status states), /account/profile (form + avatar upload), /account/settings (2FA/password/verification links + session revoke). Local components only; shell owns Navbar/Footer.
…sactions, blog (T10, #49)
…hrome on auth/admin
…aTable+pagination)
xirothedev
marked this pull request as ready for review
September 1, 2026 06:44
Owner
Author
|
Review pass complete (Standards + Spec axes vs #39). Fixed: real 404, shop hero sections, auth/admin chrome, navbar variants, csrf dead export, public-route single-sourcing, lazy route chunks, shared date helpers, availableStock computed, calendar mock-data notice, admin table wrapper, hooks consolidated into lib/api/hooks. Build + vue-tsc green on merged branch. |
… og image from path Candidate 6 (time only): merge relative-time.ts + event-helpers distanceToNow into one relativeTime(date, now?) in lib/date; update both call sites. Candidate 7: createPageMetadata falls back to SEO_IMAGES[path] when no explicit image. Co-Authored-By: Claude Opus 4.3 <noreply@anthropic.com>
…ns and totals - use-pending-order: single owner of pendingOrderId/paymentUrl_* localStorage keys - use-cart: useCartActions (updateQuantity/removeItem/isUpdating, <1 clamp) + cartTotals absorbed duplicated handlers/footer math from cart.vue, floating-cart-button.vue, checkout.vue - tests: pending-order round-trip, cart-totals shipping math
…pure transport - src/lib/auth owns: currentUser query, both user cache keys + sync/invalidate, PUBLIC_ROUTES/isPublicRoute, expiry-redirect policy, admin guard decision - api-client: no route policy, no window.location; one registerAuthLostHandler callback, registered by src/lib/auth, fired on failed refresh - delete dead code: route meta.public annotation, requires2FA ref - tsconfig: exclude test files from vue-tsc (no @types/bun, no new deps) - bun test: 4 tests / 23 asserts incl. 401-queue-exhausted onAuthLost wiring
- delete useProductStock/useSuspenseProduct/useSuspenseOrders/useClearCart/useVerifyPayment (0 call sites or alias)
- orders.vue: inline mutation -> useUpdateOrderStatus (also invalidates adminKeys orders)
- users.vue: delete try/catch -> useDeleteAdminUser (toast + invalidation in hook)
- admin list hooks normalize to { rows, total } at the seam
- admin-data-table: v-model:page + rows + total?; next-disable rule extracted as
nextDisabledFor() with unit test; nextDisabled/pagination props retired
Owner
Author
|
Architecture review pass (7 candidates, apps/web-vue): 6 implemented, money-format unification skipped per decision (mirror-visible; needs both-apps branch).
|
…es surface (toast arms checked instanceof Error; status/data kept on the object)
…as per-site Intl currency, different strings than the rest of the UI)
Owner
Author
|
Mirror-callout bugs + money unification fixed symmetrically in apps/web and apps/web-vue (every commit holds parity):
|
…eck (was unenforced in CI)
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.
Implements #39 (spec). Closes tickets #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50.
Vue 3 + Vite SPA mirror of apps/web: all 42 routes, same API, cookie+CSRF auth, shadcn-vue UI port. Decisions and ticket graph: #39.