v0.3.0-dev — SPA router completeness: missing routes, 404 page, rebuild #14
Labels
No labels
meeting-notes
meeting-sensitive
meeting-transcript
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coopcloud_code/home#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
SPA Router Completeness
Problem
The Dioxus SPA at
dev-app.projectmycelium.orgshows raw Dioxus router debug output when visiting URLs that exist on the SSR but not in the SPA router. Example:/docs/gatewaysshows "Failed to parse route" with all 23 attempted route matches.Root causes
1. No catch-all 404 route
The SPA router has no
#[route("/:..segments")]catch-all. When a URL doesn't match any route, Dioxus shows its internal debug output instead of a user-friendly 404 page.Fix: Add a catch-all
NotFoundroute at the end of theRouteenum (same pattern as the admin dashboard).2. Missing doc sub-routes
The SSR has these doc routes that the SPA doesn't:
/docs/docs/docs/getting-started/docs/mycelium_nodes/docs/compute/docs/gateways/docs/applications/docs/services/docs/credits/docs/slices/docs/certification/docs/apiFix: Add
/docs/:topicdynamic route or individual routes.3. Frontend image stale on VM
The frontend container on the dev VM needs a rebuild with latest code (all RPC→REST migrations, cart, auth, etc.).
Deliverables
/docs/:topicdynamic route)Test command
References
projectmycelium_marketplace_frontend/src/router.rsprojectmycelium_marketplace_backend/src/axum_app/routes.rsprojectmycelium_marketplace_admin/src/router.rs(hasNotFoundroute)projectmycelium_marketplace_deploy/Issue #14 — SPA Router Completeness
Changes
/docs/:topicdynamic route for all 10 SSR doc sub-routes (getting-started, compute, mycelium_nodes, gateways, applications, services, credits, slices, certification, api)/:..segmentsroute with user-friendly 404 page (icon, message, Go Home button)<a href>toLink { to: Route::DocsTopic }for proper SPA navigationDocsTopiccomponent with topic validation and breadcrumb navigationNotFoundcomponent matching admin dashboard patternFiles changed
src/router.rs— 2 new routessrc/pages/docs.rs— DocsTopic component + VALID_TOPICS constantsrc/pages/not_found.rs— new filesrc/pages/mod.rs— registered not_found modulesrc/components/layout/sidebar.rs— 10 links converted to SPA LinksTest results
cargo check --target wasm32-unknown-unknown— pass (warnings only, pre-existing)https://dev-app.projectmycelium.org/docs/gateways— HTTP 200, no router debug outputhttps://dev-app.projectmycelium.org/nonexistent— HTTP 200 (404 page rendered by Dioxus router)Remaining
-- mik-tf
Revised Assessment — SPA is NOT pixel-perfect
After thorough page-by-page comparison of SSR (dev.projectmycelium.org) vs SPA (dev-app.projectmycelium.org), the SPA has significant gaps beyond just the missing routes.
Page-by-Page Gap
pendingfield), otherwise goodBlocking Issues
/api/products(bare) returns HTML not JSON — route conflict in backendPlan to 100%
Phase 1 — Make it testable (data + critical fixes):
WalletBalance.pending(#[serde(default)])?page=0param)Phase 2 — Close feature gaps:
Phase 3 — Visual verification:
-- mik-tf
SPA parity progress update (2026-03-24)
Commits pushed to
development:1c97567feat: SPA pixel-parity — docs content, product filters, dashboard enhancements54a745bfix: use /products/search API path to avoid SSR route conflict5f4b535fix: add serde defaults to Product/Category structs for API compatibility2a8b9cafix: api_get_data fallback to raw parse when envelope missingWhat's working now:
Remaining for 100% parity:
Deploy repo fix:
a7694c1includes user_data/ fixtures in backend containerSigned-off-by: mik-tf
Final SPA parity verification (2026-03-24)
Automated test results: 25/25 pages PASS, 12/12 API endpoints PASS
All commits on
developmentbranch ofprojectmycelium_marketplace_frontend:1c97567feat: docs content, product filters, dashboard enhancements54a745bfix: /products/search API path5f4b535fix: serde defaults for Product/Category2a8b9cafix: api_get_data envelope fallback77f3902fix: category param mappingfbbe303fix: auth session restore racea3d6994fix: wallet transaction field mapping8e230e3fix: profile page uses session stateDeploy repo (
projectmycelium_marketplace_deploy):a7694c1fix: include user_data fixtures in backend containerPage-by-page status (authenticated):
Remaining for 100%:
Signed-off-by: mik-tf
SPA code complete — final status (2026-03-24)
Automated test: 25/25 pages PASS, 12/12 API endpoints PASS (all JSON)
All commits on
development:projectmycelium_marketplace_frontendprojectmycelium_marketplace_backendprojectmycelium_marketplace_deployWorking features:
Known backend limitation:
hero_browser MCP feedback: Filed as lhumina_code/home#86
Signed-off-by: mik-tf
Closing — all SPA routes complete with full content, data, and auth flow.
Release: v0.3.0-dev
Signed-off-by: mik-tf