mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-28 04:19:27 -07:00
Route stats background mode through isolated daemon and defer in-app startup to live daemon (#58)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
---
|
||||
id: TASK-306
|
||||
title: Separate background stats daemon from regular SubMiner app
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-04-27 00:56'
|
||||
updated_date: '2026-04-27 01:00'
|
||||
labels:
|
||||
- stats
|
||||
- runtime
|
||||
dependencies: []
|
||||
priority: high
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Background stats mode should run only the stats data/server pieces. It must not bring up tray UI or expose the regular mpv connection surface, and stopping should remain CLI-only.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 Launching stats background mode starts a separate stats daemon process rather than booting the regular SubMiner runtime.
|
||||
- [x] #2 Background stats mode does not create or keep a tray icon.
|
||||
- [x] #3 Background stats mode does not start mpv IPC/client surfaces that let mpv connect to the app.
|
||||
- [x] #4 Background stats mode remains stoppable through the stats stop command line path.
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
1. Add entry-runtime tests for public stats background/stop daemon detection.
|
||||
2. Implement early public stats daemon command detection and route it before regular app boot.
|
||||
3. Run targeted tests and update task status/criteria.
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Implemented early public stats daemon routing in main-entry runtime. Direct `--stats-background` and `--stats-stop` now resolve to daemon control before single-instance lock and before loading `main.js`, matching the existing internal launcher daemon flags. Installed missing Bun dependencies to run targeted tests.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Summary:
|
||||
- Added `resolveStatsDaemonCommandAction` and updated entry detection so public `--stats-background` / `--stats-stop` invocations route through the isolated stats daemon control path.
|
||||
- Reused that action resolution in `stats-daemon-entry` so public stop commands map to stop instead of the default start path.
|
||||
- Added regression coverage for public daemon detection/action resolution.
|
||||
|
||||
Verification:
|
||||
- `bun test src/main-entry-runtime.test.ts launcher/commands/command-modules.test.ts src/main/runtime/stats-cli-command.test.ts src/stats-daemon-control.test.ts`
|
||||
- `bun run typecheck`
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
id: TASK-307
|
||||
title: Defer in-app stats server to running background stats daemon
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-04-27 01:57'
|
||||
updated_date: '2026-04-27 02:02'
|
||||
labels:
|
||||
- stats
|
||||
- runtime
|
||||
dependencies: []
|
||||
priority: high
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
When normal SubMiner app startup has stats auto-start enabled, it should detect an already-running background stats daemon and avoid starting a second in-app stats server. Stats overlay/dashboard URL resolution should point at the background daemon.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 If a live background stats daemon state exists for another process, in-app stats auto-start does not start a local stats server.
|
||||
- [x] #2 Stats URL resolution returns the background daemon URL when the background daemon is live.
|
||||
- [x] #3 Stale or dead background daemon state is cleared and normal in-app stats startup still works.
|
||||
- [x] #4 Regression tests cover the deferral behavior.
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
<!-- SECTION:PLAN:BEGIN -->
|
||||
1. Add unit tests for stats server routing decisions around live/stale background daemon state.
|
||||
2. Implement a small routing helper used by main stats startup.
|
||||
3. Wire `ensureStatsServerStarted()` through the helper.
|
||||
4. Run targeted tests/typecheck/changelog lint and finalize the task.
|
||||
<!-- SECTION:PLAN:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
Extracted stats server URL routing into `src/main/runtime/stats-server-routing.ts` and wired `main.ts` through it. The helper returns the background daemon URL without calling local server startup when a live external daemon exists; dead/self-owned stale state is removed before falling back to local startup. Added the new test to `test:core:src`.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Summary:
|
||||
- Added a pure stats server routing helper that chooses between a live background daemon and local in-app stats server startup.
|
||||
- Updated main stats URL resolution to defer to another process's background daemon and only start the in-app server when no live daemon is available.
|
||||
- Added regression tests for live daemon deferral, dead daemon cleanup, self-owned stale state cleanup, and local server reuse.
|
||||
- Added the routing test to the core source test lane and added a changelog fragment.
|
||||
|
||||
Verification:
|
||||
- `bun test src/main/runtime/stats-server-routing.test.ts src/main-entry-runtime.test.ts src/main/runtime/stats-cli-command.test.ts src/stats-daemon-control.test.ts`
|
||||
- `bun run test:core:src`
|
||||
- `bun run typecheck`
|
||||
- `bun run changelog:lint`
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
Reference in New Issue
Block a user