github-issue-tower-defence-management 1.111.1 → 1.111.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/bin/adapter/entry-points/console/ui-dist/assets/{index-CT3t4Yje.js → index-Bu5bQZyP.js} +19 -19
  4. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  5. package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js +6 -2
  6. package/bin/adapter/repositories/ConfigurableSilentSessionMessageComposer.js.map +1 -1
  7. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js +15 -2
  8. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js.map +1 -1
  9. package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js +3 -2
  10. package/bin/domain/usecases/DefaultSilentSessionMessageComposer.js.map +1 -1
  11. package/bin/domain/usecases/silentSessionReminderSentinel.js +12 -0
  12. package/bin/domain/usecases/silentSessionReminderSentinel.js.map +1 -0
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +59 -0
  15. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.ts +17 -0
  16. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +79 -0
  17. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +10 -5
  18. package/src/adapter/entry-points/console/ui-dist/assets/{index-CT3t4Yje.js → index-Bu5bQZyP.js} +19 -19
  19. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  20. package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.test.ts +4 -1
  21. package/src/adapter/repositories/ConfigurableSilentSessionMessageComposer.test.ts +19 -1
  22. package/src/adapter/repositories/ConfigurableSilentSessionMessageComposer.ts +8 -2
  23. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.test.ts +67 -0
  24. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts +17 -2
  25. package/src/domain/usecases/DefaultSilentSessionMessageComposer.test.ts +13 -0
  26. package/src/domain/usecases/DefaultSilentSessionMessageComposer.ts +3 -2
  27. package/src/domain/usecases/silentSessionReminderSentinel.ts +9 -0
  28. package/types/adapter/repositories/ConfigurableSilentSessionMessageComposer.d.ts.map +1 -1
  29. package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts.map +1 -1
  30. package/types/domain/usecases/DefaultSilentSessionMessageComposer.d.ts.map +1 -1
  31. package/types/domain/usecases/silentSessionReminderSentinel.d.ts +2 -0
  32. package/types/domain/usecases/silentSessionReminderSentinel.d.ts.map +1 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.111.3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.111.2...v1.111.3) (2026-06-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **console:** keep the workflow-blocker tab visible regardless of the localStorage done overlay ([#1040](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1040)) ([83213bc](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/83213bc075a02fbcd3cfca894c7e6cbbe503bff1)), closes [#1038](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1038)
7
+
8
+ ## [1.111.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.111.1...v1.111.2) (2026-06-28)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **schedule:** do not count monitor-injected reminders as owner replies ([#1036](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1036)) ([b1e667c](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/b1e667c4e8c6a798f86bff3765dfba03246bce1c)), closes [#1035](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1035)
14
+
1
15
  ## [1.111.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.111.0...v1.111.1) (2026-06-28)
2
16
 
3
17
 
package/README.md CHANGED
@@ -558,7 +558,7 @@ Each schedule cycle, when `silentNotificationEnabled` is true, also inspects eve
558
558
 
559
559
  Sessions are selected purely from the live process tree, independently of session naming or any GitHub issue linkage: every live tmux session is taken, the descendants of each session's pane processes are walked, and the first descendant that is an interactive Claude Code process (its command line contains `claude` and does not contain the owner-handover marker `Take ownership of`, and its environment exposes both `CLAUDE_CODE_SESSION_ID` and `CLAUDE_CONFIG_DIR`) is taken as that session's process. Both issue-url-named sessions and plain-named sessions (for example `workbench`) are selected equally. Because the walk is anchored on tmux panes, background owner-handover spawns, the preparation daemon, and monitor processes — none of which run inside an interactive tmux pane — are excluded; the owner-handover marker check is an additional guard. Each selected session's transcript is then resolved from its process environment as `<CLAUDE_CONFIG_DIR>/projects/<cwd-slug>/<CLAUDE_CODE_SESSION_ID>.jsonl` (the most recently modified match is used when several exist), so a session that has no issue URL resolves just as reliably as one that does.
560
560
 
561
- The main-session stalled section is sent when the session's main output has been idle for at least `mainSilentThresholdSeconds`, unless the session is currently waiting on the owner (in that case the silence is expected and the section is suppressed). Idle time is computed from the timestamp of the latest `assistant` entry in the session's resolved transcript rather than from the transcript file modification time, so a transcript that is only updated by tool results or owner replies still counts as silent. Whether a session is waiting on the owner is determined through an injectable port; the built-in default reports no session as waiting, so the suppression is only applied when a host provides an implementation. When `ownerCallMarker` is configured, a transcript-based implementation is used: it reads each session's resolved transcript and treats the session as waiting on the owner when the latest entry containing `ownerCallMarker` is newer (by full timestamp) than the latest genuine owner reply.
561
+ The main-session stalled section is sent when the session's main output has been idle for at least `mainSilentThresholdSeconds`, unless the session is currently waiting on the owner (in that case the silence is expected and the section is suppressed). Idle time is computed from the timestamp of the latest `assistant` entry in the session's resolved transcript rather than from the transcript file modification time, so a transcript that is only updated by tool results or owner replies still counts as silent. Whether a session is waiting on the owner is determined through an injectable port; the built-in default reports no session as waiting, so the suppression is only applied when a host provides an implementation. When `ownerCallMarker` is configured, a transcript-based implementation is used: it reads each session's resolved transcript and treats the session as waiting on the owner when the latest entry containing `ownerCallMarker` is newer (by full timestamp) than the latest genuine owner reply. A self-check reminder that the monitor injects into a session via `tmux send-keys` itself lands in that session's transcript as a `user` text entry; every injected reminder carries a fixed sentinel tag (`[TDPM_SILENT_SESSION_SELF_CHECK_REMINDER]`), and a `user` entry whose text contains that sentinel is not counted as a genuine owner reply. This prevents the monitor's own reminder from being mistaken for the owner answering, which would otherwise make a genuinely waiting session stop being suppressed and get re-notified.
562
562
 
563
563
  The sub-process section is sent, regardless of main output, when at least one sub-process of the session has been output-idle for `subAgentSilentThresholdSeconds` or has been running for `subAgentRunningThresholdSeconds`; the message lists each matched sub-process with its idle and running minutes. Sub-processes are discovered in one of two ways: when `subAgentTranscriptRootDirectory` is configured, each session's `subagents/agent-<id>.jsonl` transcripts are scanned, finished sub-agents (latest transcript entry `stop_reason` equal to `end_turn` or `stop_sequence`) are skipped, and idle time is taken from the transcript file modification time (following symlinks) while running time is taken from its first entry timestamp; otherwise sub-processes are discovered by matching `subAgentProcessMatchPattern` against process command lines.
564
564