25 Commits

Author SHA1 Message Date
ff7ff0c4e5 Implement org credit line debt and bank repayment flow (#2)
## Summary

This finishes the org credit line workflow so it behaves like reserved treasury-backed credit instead of a simple member allowance.

## What changed

- reserve org funds immediately when a credit line is assigned
- track credit lines with:
  - approved amount
  - available amount
  - outstanding principal
  - interest rate
  - amount due
- consume reserved credit during store checkout without charging org funds a second time
- add credit line repayment through the bank app
- sync richer credit line state into org and bank payloads/UI
- keep legacy `amount` compatibility mapped to available credit for older consumers

## User-facing behavior

- assigning a credit line now reduces available org funds immediately
- spending on `credit_line` reduces available credit and creates debt with interest
- the bank app now shows outstanding credit debt and allows repayment from personal bank funds
- the org treasury view now shows reserved credit and outstanding due totals

## Validation

- `cargo fmt`
- `npm run build:webui`
- `cargo test -p forge-services --quiet`
- `cargo test -p forge-server --quiet`

## Follow-up checks

- validate in-game that assigning a credit line reduces org funds immediately
- validate store checkout with `credit_line` updates available credit and debt correctly
- validate bank repayment decreases player bank balance, increases org funds, and reduces amount due

Co-authored-by: Jacob Schmidt <innovativestudios@outlook.com>
Reviewed-on: #2
2026-04-02 16:50:38 -05:00
Jacob Schmidt
68218304ab Move store catalog service server-side and rebuild WebUI bundles
- 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
2026-03-14 20:06:27 -05:00
Jacob Schmidt
bdc1e36e63 Implement interactive garage UI with service-based client bridge
- 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
2026-03-14 03:06:18 -05:00
Jacob Schmidt
7a214d835d Enable vehicle checkout grants and garage/org sync updates
- 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
2026-03-12 22:20:21 -05:00
Jacob Schmidt
6dda184d54 Wire store checkout flow across client and server
- 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
2026-03-12 21:44:19 -05:00
Jacob Schmidt
9771e375b6 Add org credit lines and multi-source store checkout state
- 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
2026-03-12 06:36:24 -05:00
Jacob Schmidt
d178e39164 Refactor client UI stores and normalize docs formatting
- 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
2026-03-10 19:13:30 -05:00
Jacob Schmidt
9cd7278746 Add org leave/disband bridge flow across client and server
- 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
2026-03-09 23:06:26 -05:00
Jacob Schmidt
57267b79b6 feat: Rework org data and UI 2026-03-08 10:17:32 -05:00
Jacob Schmidt
e0e6121a5c Refactor org app structure and portal interactions 2026-03-07 19:54:17 -06:00
Jacob Schmidt
a373943eca Improve Redis fail-fast behavior and resilient store initialization 2026-03-06 21:45:17 -06:00
Jacob Schmidt
6c8490f299 feat: Implement bank system, actor interaction UI, and notification system with corresponding backend logic and update gitignore. 2026-02-17 21:18:17 -06:00
Jacob Schmidt
2dbcb98817 feat: Add Windows-only terrain SVG export functionality via FFI with configurable rendering options. 2026-02-16 20:26:40 -06:00
Jacob Schmidt
4d7e3520eb feat: Introduce terrain SVG export functionality via FFI to a Windows DLL, providing an Arma 3 exportSVG command. 2026-02-16 19:42:03 -06:00
Jacob Schmidt
082f0c6f8f feat: Implement terrain SVG export functionality via FFI and integrate it into the Arma server extension's command groups. 2026-02-16 19:19:47 -06:00
Jacob Schmidt
096418cc78 chore: refactor store and class initialization across addons
Co-Authored-By: Warp <agent@warp.dev>
2026-02-13 19:09:58 -06:00
Jacob Schmidt
56f0f1c971 feat: introduce core client and server-side systems for locker, virtual arsenal, and garage management. 2026-02-05 18:26:55 -06:00
Jacob Schmidt
d94cc9d8d5 feat: Implement client-side locker system with UI event handling, ACE Arsenal integration, and inventory management. 2026-02-04 22:46:24 -06:00
Jacob Schmidt
827d1eb698 feat: Introduce initial class and store definitions for actor, bank, garage, locker, organization, and virtual armory/garage systems. 2026-01-31 19:30:34 -06:00
Jacob Schmidt
27c0ade320 feat: Implement client-side actor system for player state management and UI interactions, alongside server-side locker initialization. 2026-01-31 16:06:14 -06:00
Jacob Schmidt
aef7f9ae48 feat: Implement core game systems for actor, garage, organization, bank, locker, and notifications with client-side UI and server-side data stores. 2026-01-30 20:19:29 -06:00
Jacob Schmidt
9c09976ef2 feat: Initialize core client and server systems for actor, bank, garage, locker, and notifications, including UI components and data models. 2026-01-28 20:07:24 -06:00
Jacob Schmidt
61a9741dc0 Refactor Store system to use BaseStore and update Actor/Org initialization 2026-01-10 15:42:33 -06:00
Jacob Schmidt
ebfe77a340 feat: implement complete Forge framework with Rust/Redis backend and Arma 3 integration
Implemented features:
- High-performance Rust extension with Redis persistence
- Actor/player management with loadout, position, and state tracking
- Banking system with deposit, withdraw, and transfer operations
- Physical and virtual garage/locker systems for vehicle and equipment storage
- Organization management with member tracking and permissions
- Client-side UI with React-like state management
- Server-side event-driven architecture with CBA Events
- Security: Self-transfer prevention at multiple layers
- Logging system with per-module log files
- ICOM module for inter-server communication

Co-Authored-By: Warp <agent@warp.dev>
2026-01-04 12:52:15 -06:00
Jacob Schmidt
7ce6c0bcad Initial commit 2025-11-26 18:33:09 -06:00