- lib/api.ts: detect browser vs server, use relative URL in browser
- /api/catalog/[...path]: proxy route to forward SSR requests to backend
- .env.local: NEXT_PUBLIC_API_URL preserved for SSR
- Closes FRONTEND-PROXY
- Storefront: use relative URLs in api.ts (fix ERR_ADDRESS_UNREACHABLE)
- Auth: show specific error for EMAIL_NOT_CONFIRMED
- TPV: add clock with date/time, modern SVG icons, panel toggle left
- Add missing selfpayMode/closePin state vars in admin POS page
- Add selfpayMode/closeSessionRequiresPin/closeSessionPin to PosTerminal interface
- Fix ClosedSession type in reporting/closures to match cash-close endpoint
- Add smtpReportEmail to admin StoreSettings interface
- monolith.sh: add TPV service (port 3002), reorder ports:
API 3000, ADMIN 3001, TPV 3002, FRONTEND 3003, STOREFRONT 3004
- Add apps/pos to install_dependencies in monolith.sh
- New /reporting/closures page listing closed POS sessions
- Shows financial summary, sales stats, payments breakdown per session
- Sessions filterable by store and last 7/30/90 days
- Navigation entry in Reporting layout
F-201: GET /pos/reports/cash-close/:id with financial summary, sales
by state, payments breakdown, items sold. Extended /pos/sessions/:id.
F-202: Cash close email sent on session close to smtpReportEmail
(best-effort). smtpReportEmail field added to admin SMTP settings.
F-203: Admin POS terminal config: selfpayMode, closeSessionRequiresPin,
closeSessionPin (4-6 digits) with dedicated settings section.