Commit Graph

56 Commits

Author SHA1 Message Date
root
4763a9a9d1 feat(devops): admin-only info, public version, dep checks, role hardening
Backend:
- /api/devops/info now requires admin role (was: any authenticated user).
  Exposes env keys, dep checks, and socket counts — admin-only by design.
- New /api/devops/version (public, no auth) returns build SHA/branch/image
  for ops/CI rollback verification.
- Dep checks: live ping for Cosmos (trading_users) and platform-service.
- Service version read dynamically via readServiceVersion(import.meta.url)
  — no more hardcoded '0.1.0'.
- extra: socketIoConnections + tradingApiUrl for runtime debugging.
- saveCurrentUserProfile no longer accepts client-supplied role —
  prevents drift with platform JWT (which is authoritative).

Web:
- DevOps tab is now admin-only (gated behind isAdmin like Bot Config and
  Admin Panel). Both the section list and content render are guarded.
- Service version baked into bundle via Vite `define` (__WEB_SERVICE_VERSION__)
  read from web/package.json — no more hardcoded VERSION constant.
- Bumps @bytelyst/devops dep to ^0.1.2.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 05:52:48 +00:00
root
74400fda70 feat: migrate web to Gitea registry, add /api/devops/info, fix role drift
Backend:
- Fix role drift: /api/me/profile now returns JWT role authoritatively (was reading
  drifting role from trading_users). PATCH strips client-supplied role.
- Add /api/devops/info endpoint backed by @bytelyst/devops/server.
- Dockerfile: bake BYTELYST_COMMIT_SHA / BYTELYST_BUILT_AT / etc. as build args.

Web:
- Migrate from vendor/ + .pnpmfile.cjs to Gitea npm registry (consistency with backend).
- Replace file: refs in web/package.json with semver ranges resolved from Gitea.
- Drop vendor/bytelyst/* tree and .pnpmfile.cjs.
- Add DevOpsTab in Settings using @bytelyst/devops/ui (tabbed: Build/Runtime/Config/Deps/Raw).
- Vite alias: restrict @bytelyst/* catch-all to single-segment names so subpath
  imports (@bytelyst/devops/ui) resolve via package exports map.
- Bake BYTELYST_* metadata into the bundle as VITE_BYTELYST_* env.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 04:57:09 +00:00
root
15d9eeef12 fix(docker): use shared docker-prep.sh, add UI components, remove pnpmfile
Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 01:50:55 +00:00
94ce743bd0 refactor(ui): replace one-off visual language with shared Badge components
- Replace .stat-chip with Badge in PresetMarketplace, BacktestTab, MembershipTab
- Replace .saved-setup-id-chip with Badge in SimpleView
- Replace .screener-sector-chip with Badge in ScreenerView
- Replace .health-pill with Badge in TradeProfileManager
- Remove CSS definitions for one-off classes from index.css
- All components now use shared Badge from product adapter
- Verify: audit:ui (0 findings), audit:ui:strict (0 findings), typecheck, build
2026-05-09 12:56:52 -07:00
ff17c635e3 refactor(ui): standardize history ledger surfaces 2026-05-09 02:22:10 -07:00
d4846b73cc refactor(ui): unify operational alert banners 2026-05-09 02:15:33 -07:00
3951767ab1 refactor(ui): standardize operations table badges 2026-05-09 02:11:52 -07:00
1300de98a9 refactor(ui): align wizard and overview controls 2026-05-09 01:55:28 -07:00
f3540c6b4b refactor(ui): normalize admin db sync controls 2026-05-09 01:52:15 -07:00
fd64fecbce refactor(ui): refine positions table controls 2026-05-09 01:50:23 -07:00
bfd7d3bfec refactor(ui): align history filters controls 2026-05-09 01:48:16 -07:00
57b8be698d refactor(ui): refine admin console controls 2026-05-09 01:16:06 -07:00
944ae498d2 refactor(ui): polish bot config settings 2026-05-09 01:12:56 -07:00
4f152b4b45 fix(ui): improve watchlist entry feedback 2026-05-09 01:02:10 -07:00
3375dfcfce fix(ui): polish portfolio operations tables 2026-05-08 21:33:59 -07:00
1994821acf Polish trading UI and add launch roadmap 2026-05-08 20:58:00 -07:00
root
5453bb4922 refactor(ui): close residual theme audit debt 2026-05-07 06:21:32 +00:00
root
5fc123e41d refactor(ui): tokenize strategy fleet surfaces 2026-05-07 06:18:16 +00:00
root
cd2f38df7b refactor(ui): tokenize config control surfaces 2026-05-07 06:04:27 +00:00
root
b14d333b4d refactor(ui): tokenize marketplace and history accents 2026-05-07 05:42:25 +00:00
root
8d84c3bf0d refactor(ui): tokenize backtest and screener status colors 2026-05-07 05:40:44 +00:00
root
a230679f41 refactor(ui): tokenize overview status surfaces 2026-05-07 05:17:03 +00:00
root
eef63cbb8f chore(web): tighten event handler types 2026-05-07 05:04:30 +00:00
root
7375ad66f8 refactor(ui): tokenize operational surfaces 2026-05-07 04:06:21 +00:00
8f707e0490 refactor(ui): tokenize settings status colors 2026-05-06 20:32:44 -07:00
7f5f12509a feat(ui): migrate settings and entries controls 2026-05-06 18:10:22 -07:00
1ee57d5aeb refactor(ui): migrate strategy dashboard actions 2026-05-06 14:08:02 -07:00
d5a8f36b35 refactor(ui): migrate positions workflow controls 2026-05-06 14:04:24 -07:00
root
ac17525124 fix(portfolio): refresh plan metadata from runtime events 2026-05-06 20:04:32 +00:00
root
9b6cbc1e67 fix(plans): harden holding selection and deep links 2026-05-06 18:38:00 +00:00
root
36bd21b7cd feat(portfolio): drill into saved trade plans 2026-05-06 18:31:29 +00:00
root
ddf55d8f26 feat(portfolio): link holdings into trade plans 2026-05-06 18:25:35 +00:00
root
a1a63cc945 feat(simple): add long-term hold mode 2026-05-06 17:37:04 +00:00
root
92747b76a7 fix(simple): support concurrent symbol setups 2026-05-06 07:56:03 +00:00
root
257b10fc81 fix(web): guard malformed operational events 2026-05-06 07:18:47 +00:00
b8864ea276 refactor(web): normalize reconciliation audit theme surfaces 2026-05-05 22:06:05 -07:00
root
76d326c793 refactor(web): normalize secondary ux surfaces 2026-05-06 03:27:52 +00:00
root
0db2693a20 fix(portfolio): satisfy manual position null-safety 2026-05-05 23:33:05 +00:00
root
0f74d7b292 fix(portfolio): tighten bootstrap and manual position handling 2026-05-05 23:31:33 +00:00
root
39456473cb feat(settings): add per-user fmp api key 2026-05-05 23:08:31 +00:00
root
db29a3f6b9 fix(web): guard admin config from non-admin users 2026-05-05 21:38:56 +00:00
70db4c9a04 fix(B9): surface builder strategies in strategies tab 2026-05-04 17:21:18 -07:00
root
e2008f70b9 fix: web + mobile pre-beta audit — real APIs, socket routing, empty states
Web:
- runtime.ts: use import.meta.env (process.env is undefined in Vite browser bundle)
- tradingApiUrl local fallback: drop /api suffix (API libs already append /api/*)
- useWebSocket: deriveSocketParams() — correctly splits origin + socket path for
  Caddy handle_path /invttrdg/* proxy (io(origin, {path}), not io(url-with-path))
- App.tsx: pass socket prop to AdminTab; pass connected prop to SignalsTab
- AdminTab: remove duplicate useWebSocket; accept socket as prop
- SignalsTab: connection-aware empty state message
- backtest/flags: default to disabled when VITE_BACKTEST_ENABLED unset
- EntryForm: NaN guard before live trade execution
- MarketplaceTab: null-safety on symbols.rules access
- Tests: pass socket prop to AdminTab; update empty state assertion

Mobile:
- TradingDataProvider: same deriveSocketParams fix — EXPO_PUBLIC_SOCKET_PATH
  overrides auto-derived path from tradingApiUrl
- strategies: replace mock data with real GET /api/profiles + PATCH active toggle
- chat: wire to real POST /api/chat; remove hardcoded mock reply
- marketplace: fetch GET /api/marketplace-presets; USE STRATEGY calls POST /api/profiles
- settings: sign-out confirmation dialog; execution mode read-only hint;
  version from expo-constants instead of hardcoded v2.3
- positions/history: empty state UI when no data
- CustomTabBar: always show tab labels (not only when focused)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 04:50:51 +00:00
5bba149a7b refactor: share feature flag contract across backend and web 2026-04-04 18:10:34 -07:00
d99cb94d19 feat: standardize request ids across operator flows 2026-04-04 18:07:43 -07:00
f73f855eb0 fix: align web verification with platform session contracts 2026-04-04 18:00:30 -07:00
6c39b9b185 refactor: move web auth onto platform session helpers 2026-04-04 17:07:42 -07:00
541c617717 refactor: move history tab behind backend apis 2026-04-04 16:52:06 -07:00
b433686776 refactor: move web trading data behind backend apis 2026-04-04 16:49:18 -07:00
ebaabaed47 feat: move manual entries behind backend api 2026-04-04 16:09:21 -07:00