feat(lite): add ObsidianDragonLite build mode and gate full-node features

Add --lite build flow and ObsidianDragonLite target naming, hide full-node pages/features in lite mode, enforce pool-only mining in lite, and include chat port feasibility audit documentation.
This commit is contained in:
2026-05-06 03:42:05 -05:00
parent 975743f754
commit e95ad50e41
10 changed files with 255 additions and 92 deletions

View File

@@ -0,0 +1,63 @@
# Chat Port Feasibility Audit (2026-05-06)
Scope:
- Evaluate whether SilentDragonXLite chat can be ported to the current full-node ImGui wallet.
- If feasible, define a safe path with feature flagging.
## Source Audit (SilentDragonXLite)
Primary chat surfaces in the reference codebase:
- `external/SilentDragonXLite/src/chatmodel.h`
- `external/SilentDragonXLite/src/chatmodel.cpp`
- `external/SilentDragonXLite/src/Chat/Chat.h`
- `external/SilentDragonXLite/src/Chat/Chat.cpp`
- `external/SilentDragonXLite/src/controller.cpp` (transaction scan + memo decrypt/encrypt)
- `external/SilentDragonXLite/src/Model/ChatItem.*`
- `external/SilentDragonXLite/src/Model/ContactRequest*`
- `external/SilentDragonXLite/src/DataStore/ChatDataStore.*`
- `external/SilentDragonXLite/src/mainwindow.ui` and related Qt UI widgets.
Observed characteristics:
- Chat is tightly coupled to Qt widget/UI classes (`QListView`, `QStandardItemModel`, `.ui` forms).
- Message transport relies on memo payload parsing/decryption embedded directly in transaction refresh/controller flow.
- Contact requests, chat IDs, and message rendering are mixed with Qt view models and DataStore semantics.
- Crypto flow depends on shared secret derivation and memo header conventions implemented inline in controller/chat code.
## Current Wallet Architecture Gap
Current app (`src/`) is Dear ImGui + SDL3 with different state/render model:
- No existing chat domain model/service in ImGui code path.
- No Qt runtime/view-model infrastructure to reuse reference chat modules.
- Transaction refresh path is centralized in `NetworkRefreshService` and app refresh orchestration, not Qt controller callbacks.
## Feasibility Decision
Decision: **Not safe to directly port in this batch**.
Reason:
- A direct transplant would require substantial re-architecture, not incremental copy-over.
- High risk of regressions in transaction refresh correctness, memo handling, and wallet UX stability.
- Crypto/message parsing code requires dedicated security review before enabling in production.
## Estimated Effort (for a proper staged port)
1. Domain extraction (chat/contact/message models, storage interfaces): 3-5 days
2. Service integration with current refresh pipeline (`NetworkRefreshService` + app): 4-7 days
3. ImGui chat UI (list, composer, contact requests, actions): 4-6 days
4. Security hardening + memo/crypto validation tests: 3-5 days
5. End-to-end QA/regression/perf pass: 2-4 days
Total estimate: **16-27 engineer-days**.
## Risk Profile
- Security risk: high (memo crypto path and malformed payload handling).
- Stability risk: high (transaction refresh path is core-wallet critical).
- UX risk: medium (new asynchronous chat states and contact flows).
## Recommended Safe Plan
1. Add compile/runtime feature flag (`DRAGONX_ENABLE_CHAT`) default OFF.
2. Implement read-only parser + storage first (no send), fully test malformed memos.
3. Add send path behind same flag with strict size/format guards.
4. Ship disabled by default until security and regression acceptance criteria are met.