github-issue-tower-defence-management 1.122.0 → 1.122.2

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 (29) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +4 -1
  3. package/bin/adapter/entry-points/console/consoleDoneStore.js +1 -0
  4. package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
  5. package/bin/adapter/entry-points/console/ui-dist/assets/{index-syKbd_lW.js → index-CC-RYye2.js} +24 -24
  6. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  7. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +14 -7
  8. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
  9. package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js +297 -137
  10. package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +22 -0
  13. package/src/adapter/entry-points/console/consoleDoneStore.test.ts +8 -0
  14. package/src/adapter/entry-points/console/consoleDoneStore.ts +1 -0
  15. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +10 -43
  16. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.ts +0 -17
  17. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +5 -6
  18. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +5 -10
  19. package/src/adapter/entry-points/console/ui-dist/assets/{index-syKbd_lW.js → index-CC-RYye2.js} +24 -24
  20. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  21. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +175 -7
  22. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +22 -8
  23. package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +294 -0
  24. package/src/adapter/repositories/issue/GraphqlProjectItemRepository.ts +400 -165
  25. package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
  26. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +3 -2
  27. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
  28. package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts +10 -0
  29. package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.122.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.122.1...v1.122.2) (2026-07-11)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **console:** filter processed items from the workflow-blocker view like other tabs ([#1152](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1152)) ([9745e66](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/9745e666526b41e4bd0c318caf7107e50d30d734))
7
+
8
+ ## [1.122.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.122.0...v1.122.1) (2026-07-07)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * publish two-phase time-precise incremental issue fetch ([#1150](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1150)) ([8fd254a](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/8fd254a4730046814922c60bd7a38c696403f18c))
14
+
1
15
  # [1.122.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.121.0...v1.122.0) (2026-07-07)
2
16
 
3
17
 
package/README.md CHANGED
@@ -647,11 +647,14 @@ The timestamp of the last slow sweep is stored in the `HandleScheduledEvent` Goo
647
647
 
648
648
  ### Issue cache contract
649
649
 
650
+ On each access the repository chooses between a full fetch (when the cache is absent or stale) and a two-phase, time-precise incremental fetch (when the cache is fresh). The incremental path separates a lightweight day-scan phase from a targeted detail-fetch phase, keeping per-cycle GitHub API usage proportional to the number of items updated since the last fetch rather than proportional to total project size.
651
+
650
652
  The issue repository keeps a single always-latest JSON file per project at `./tmp/cache/{projectName}/allIssues-{projectId}/latest.json` and refreshes it on access. Each refresh writes the file atomically (to a `.tmp` file then renamed) and records `lastFetchedAt`, `lastFullFetchAt`, the cached `project`, and the `issues` array in the same file.
651
653
 
652
654
  - When the cache file is missing or its `lastFullFetchAt` is at least one hour old, the repository fetches every project item, replaces the whole issue list, refreshes the cached `project`, and sets both `lastFullFetchAt` and `lastFetchedAt` to now (`cacheUsed` is `false`).
653
- - Otherwise the repository performs an incremental fetch: it queries only items changed on or after the day of the previous `lastFetchedAt` minus one day (the GitHub ProjectV2 `items(query: "updated:>=<YYYY-MM-DD>")` filter is day-granular) and upserts them into the cached list keyed by issue URL, reusing the cached `project` (`cacheUsed` is `true`).
655
+ - Otherwise the repository performs a two-phase, time-precise incremental fetch, reusing the cached `project` and setting `lastFetchedAt` to now while leaving `lastFullFetchAt` untouched (`cacheUsed` is `true`). Phase 1 (light day scan): it queries `items(query: "updated:>=<YYYY-MM-DD>")` for the UTC day of the previous `lastFetchedAt` with no previous-day overlap, requesting only each `ProjectV2Item` `id` and `updatedAt` plus the content `url` and `number` (no `fieldValues`), paginating all pages. Because the GitHub ProjectV2 `updated:` filter is day-granular, the results are then filtered client-side to only items whose `ProjectV2Item.updatedAt` is greater than or equal to a cutoff equal to the previous `lastFetchedAt` timestamp minus a small clock-skew buffer (5 minutes), giving time precision while absorbing realistic clock skew between the daemon host and GitHub; the same cutoff date drives the phase-1 query, so the UTC-midnight boundary is handled by construction. The re-included buffer window is idempotent because upserts are keyed by issue URL. Phase 2 (detail fetch): only when that filtered set is non-empty, it fetches the full item detail for those items by node id via `nodes(ids: [...])` in batches of up to 100, converts each to an issue, and upserts them into the cached list keyed by issue URL; when the filtered set is empty phase 2 is skipped entirely.
654
656
  - Within a single process the refresh runs at most once per project; every subsequent `getAllIssues` call for the same project returns the memoized result, so the many in-cycle reads do not each call GitHub.
657
+ - The two-phase incremental fetch (shipped in v1.123.0) is live on the default branch and available via `npm install npm-cli-github-issue-tower-defence-management@latest`.
655
658
  - `ConvertCheckboxToIssueInStoryIssueUseCase` always fetches the latest story-issue body directly via `getIssueByUrl`, ensuring story bodies are never stale when converting checkboxes to issues.
656
659
 
657
660
  ## Contributing
@@ -84,6 +84,7 @@ const recordDoneProjectItemId = (consoleDataOutputDir, pjcode, tab, projectItemI
84
84
  };
85
85
  exports.recordDoneProjectItemId = recordDoneProjectItemId;
86
86
  exports.CONSOLE_DONE_TAB_NAMES = [
87
+ 'workflow-blocker',
87
88
  'prs',
88
89
  'triage',
89
90
  'unread',
@@ -1 +1 @@
1
- {"version":3,"file":"consoleDoneStore.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consoleDoneStore.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"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"}