Merge development into master: shared Web UI runtime, bridge-driven UIs, and server-authoritative store flow #1

Merged
J.Schmidt92 merged 37 commits from development into master 2026-03-14 20:12:08 -05:00
Owner

Summary

This merges the current development branch into master.

The branch is a large systems update centered on replacing older static UI packages with a shared Web UI runtime, moving major client modules to bridge-driven single-page flows, and hardening store behavior by making category hydration and pricing server-authoritative.

What Changed

Shared Web UI framework and build pipeline

  • Added a shared Forge Web UI runtime and site loader for addon UIs.
  • Introduced source-based UI apps for org, bank, garage, and store.
  • Added tools/build-webui.mjs and npm-based UI packaging flow.
  • Replaced legacy _site artifacts with generated/minified bundles from src.
  • Fixed CSS packaging so nested UI source styles compile correctly before minification.

Organization system overhaul

  • Reworked the Org UI into a bridge-driven single-page app.
  • Added portal state/actions/getters and modular UI components.
  • Expanded org backend handling around members, treasury, and portal flows.
  • Added support for leave/disband and broader org portal interactions.

Bank and garage UI modernization

  • Refactored Bank UI to a bridge-driven SPA flow with shared runtime patterns.
  • Reworked Garage UI into the same source-driven architecture.
  • Added session/UI bridge services and normalized runtime wiring across modules.

Store system implementation and hardening

  • Added the in-game store system and Web UI shell.
  • Moved catalog hydration and pricing authority to the server.
  • Added server-side catalog and checkout validation services.
  • Removed dead client-side store catalog logic.
  • Added/normalized category support for:
    • attachments
    • backpacks
    • misc
  • Improved attachment classification and kept ACE utility items out of the attachment bucket.
  • Renamed the user-facing Items category to Misc.

Server/service refactors

  • Introduced/refined shared store/service patterns on the server side.
  • Updated bank, garage, locker, actor, and org stores to align with the newer flow.
  • Added terrain SVG export support through the extension path.
  • Improved Redis/config/documentation surfaces around the extension and services.

Repo/docs/tooling cleanup

  • Updated README/docs/templates/workflows across the repo.
  • Removed legacy UI artifacts and old packaging leftovers.
  • Added/updated workspace/build scripts and supporting docs.

Notable Behavior Changes

  • UI packages are now built from source instead of maintained as hand-edited _site bundles.
  • Store prices displayed in the client now come from server-generated catalog entries.
  • Store checkout totals are recomputed server-side and no longer trust client totals.
  • misc is now the canonical store category key, with compatibility handling for older items requests.

Validation

Verified in this branch:

  • npm run build:webui

Recommended pre-merge smoke tests:

  • Open Org, Bank, Garage, and Store UIs in-game.
  • Confirm Org portal styling/layout loads correctly.
  • Confirm Store category hydration works for attachments, backpacks, and misc.
  • Confirm checkout totals match displayed prices and cannot be altered client-side.
  • Confirm garage and bank flows still hydrate and submit through their bridges.

Notes

This is a broad merge with both feature work and architecture changes. The highest-risk areas are:

  • generated Web UI packaging
  • server/client bridge wiring
  • store checkout authority changes
  • org portal UI/runtime integration
## Summary This merges the current `development` branch into `master`. The branch is a large systems update centered on replacing older static UI packages with a shared Web UI runtime, moving major client modules to bridge-driven single-page flows, and hardening store behavior by making category hydration and pricing server-authoritative. ## What Changed ### Shared Web UI framework and build pipeline - Added a shared Forge Web UI runtime and site loader for addon UIs. - Introduced source-based UI apps for `org`, `bank`, `garage`, and `store`. - Added `tools/build-webui.mjs` and npm-based UI packaging flow. - Replaced legacy `_site` artifacts with generated/minified bundles from `src`. - Fixed CSS packaging so nested UI source styles compile correctly before minification. ### Organization system overhaul - Reworked the Org UI into a bridge-driven single-page app. - Added portal state/actions/getters and modular UI components. - Expanded org backend handling around members, treasury, and portal flows. - Added support for leave/disband and broader org portal interactions. ### Bank and garage UI modernization - Refactored Bank UI to a bridge-driven SPA flow with shared runtime patterns. - Reworked Garage UI into the same source-driven architecture. - Added session/UI bridge services and normalized runtime wiring across modules. ### Store system implementation and hardening - Added the in-game store system and Web UI shell. - Moved catalog hydration and pricing authority to the server. - Added server-side catalog and checkout validation services. - Removed dead client-side store catalog logic. - Added/normalized category support for: - attachments - backpacks - misc - Improved attachment classification and kept ACE utility items out of the attachment bucket. - Renamed the user-facing `Items` category to `Misc`. ### Server/service refactors - Introduced/refined shared store/service patterns on the server side. - Updated bank, garage, locker, actor, and org stores to align with the newer flow. - Added terrain SVG export support through the extension path. - Improved Redis/config/documentation surfaces around the extension and services. ### Repo/docs/tooling cleanup - Updated README/docs/templates/workflows across the repo. - Removed legacy UI artifacts and old packaging leftovers. - Added/updated workspace/build scripts and supporting docs. ## Notable Behavior Changes - UI packages are now built from source instead of maintained as hand-edited `_site` bundles. - Store prices displayed in the client now come from server-generated catalog entries. - Store checkout totals are recomputed server-side and no longer trust client totals. - `misc` is now the canonical store category key, with compatibility handling for older `items` requests. ## Validation Verified in this branch: - `npm run build:webui` Recommended pre-merge smoke tests: - Open Org, Bank, Garage, and Store UIs in-game. - Confirm Org portal styling/layout loads correctly. - Confirm Store category hydration works for `attachments`, `backpacks`, and `misc`. - Confirm checkout totals match displayed prices and cannot be altered client-side. - Confirm garage and bank flows still hydrate and submit through their bridges. ## Notes This is a broad merge with both feature work and architecture changes. The highest-risk areas are: - generated Web UI packaging - server/client bridge wiring - store checkout authority changes - org portal UI/runtime integration
J.Schmidt92 added 37 commits 2026-03-14 20:11:52 -05:00
Co-Authored-By: Warp <agent@warp.dev>
- Add desktop-style title bar shell and viewport locking for bank/org UIs
- Redesign notification HUD visuals and behavior (timers, persistence, exposed JS API)
- Register and play a new notification sound via `CfgSounds` on client events
- Introduce `OrgUIBridge` to centralize UI event/request/response handling
- Add leave and disband org requests with server handlers and client bridge events
- Enforce portal permissions for leaving/disbanding and protect owner/self from member removal
- Replace static HTML markup with app root and runtime asset loading
- Rebuild `script.js` as state-driven category/weapon/catalog views
- Add cart overlay scaffold, breadcrumbs, and window-style navigation UI
- Rework org and store UI state modules (rename/move store/getter files, add runtime and bridge wiring)
- Update store UI components and page structure (navbar/cart split, new StoreView flow)
- Apply broad markdown/YAML/HTML/CSS/JS formatting cleanup across docs, templates, and workflows
- route new `store::category::request` bridge events from UI to SQF and hydrate category items from game configs
- cache and format generated catalog entries (types, descriptions, prices, images) in the store bridge/class
- update storefront UI with category loading states, image media support, and next/previous catalog pagination
- Wire org portal credit-line requests/responses through SQF bridge and UI events
- Sync `creditLines` in org payloads and refresh portal state after org sync
- Add store payment sources (cash, bank, org funds, credit line) and expose selection in cart UI
- Scaffold server-side store addon initialization/config files
- Add checkout request/response bridge and workspace re-hydration in store UI
- Implement server-side checkout stores for charging bank/cash and granting locker/VA items
- Normalize catalog/cart payload categories and fix locker VA sync event naming
- Wire store checkout to grant purchased vehicles via virtual garage
- Add org fleet updates for org-funded vehicle purchases and sync to members
- Simplify client garage sync to always apply incoming category patches
- add common ForgeWebUI runtime, site loader, and SQF WebUI bridge base declarations
- migrate org and store web UIs to src-driven bundles and new bridge/bootstrap flow
- update addon configs/prep hooks and document the shared CT_WEBBROWSER framework
- replace placeholder garage interaction with real UI open flow
- add catalog/session/UI bridge services for hydrate, sync, store, and retrieve actions
- migrate garage web UI bundle to new app shell/runtime structure
- align org/store function naming with shared init and UI bridge patterns
- Replace separate bank/ATM pages with a unified `index.html` app bundle
- Split bank init into `initClass`, `initSessionService`, and `initUIBridge`
- Route UI events through `BankUIBridge` and refresh session payloads after sync
- Shift store catalog initialization from client addon to server addon
- Rebuild/minify bank, garage, org, and store WebUI site assets
- Update webui build tooling and npm metadata; ignore node_modules
J.Schmidt92 merged commit 7a8ca6b237 into master 2026-03-14 20:12:08 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: IDSolutions/forge#1
No description provided.