github-issue-tower-defence-management 1.91.0 → 1.91.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 (116) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +5 -4
  3. package/bin/adapter/entry-points/cli/index.js +1 -1
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/consoleListsWriter.js +1 -0
  6. package/bin/adapter/entry-points/handlers/consoleListsWriter.js.map +1 -1
  7. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +3 -0
  8. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/adapter/entry-points/cli/index.test.ts +6 -1
  11. package/src/adapter/entry-points/cli/index.ts +1 -1
  12. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMarkdownView.stories.tsx → content/ConsoleMarkdownContent.stories.tsx} +6 -6
  13. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMarkdownView.test.tsx → content/ConsoleMarkdownContent.test.tsx} +6 -6
  14. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMarkdownView.tsx → content/ConsoleMarkdownContent.tsx} +2 -2
  15. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMermaidDiagram.stories.tsx → content/ConsoleMermaidDiagram.stories.tsx} +1 -1
  16. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMermaidDiagram.test.tsx → content/ConsoleMermaidDiagram.test.tsx} +2 -2
  17. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleMermaidDiagram.tsx → content/ConsoleMermaidDiagram.tsx} +1 -1
  18. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleChangedFileList.stories.tsx → detail/ConsoleChangedFileList.stories.tsx} +1 -1
  19. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleChangedFileList.test.tsx → detail/ConsoleChangedFileList.test.tsx} +1 -1
  20. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleChangedFileList.tsx → detail/ConsoleChangedFileList.tsx} +2 -2
  21. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommentList.stories.tsx → detail/ConsoleCommentList.stories.tsx} +1 -1
  22. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommentList.test.tsx → detail/ConsoleCommentList.test.tsx} +1 -1
  23. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommentList.tsx → detail/ConsoleCommentList.tsx} +4 -4
  24. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommitList.stories.tsx → detail/ConsoleCommitList.stories.tsx} +1 -1
  25. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommitList.test.tsx → detail/ConsoleCommitList.test.tsx} +1 -1
  26. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCommitList.tsx → detail/ConsoleCommitList.tsx} +2 -2
  27. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemDetail.stories.tsx → detail/ConsoleItemDetail.stories.tsx} +1 -1
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemDetail.test.tsx → detail/ConsoleItemDetail.test.tsx} +2 -2
  29. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemDetail.tsx → detail/ConsoleItemDetail.tsx} +11 -8
  30. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemIcon.test.tsx → detail/ConsoleItemIcon.test.tsx} +1 -1
  31. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemIcon.tsx → detail/ConsoleItemIcon.tsx} +1 -1
  32. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePullRequestSection.stories.tsx → detail/ConsolePullRequestDetail.stories.tsx} +6 -6
  33. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePullRequestSection.test.tsx → detail/ConsolePullRequestDetail.test.tsx} +5 -5
  34. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePullRequestSection.tsx → detail/ConsolePullRequestDetail.tsx} +5 -5
  35. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleProjectHeader.stories.tsx → layout/ConsoleProjectSummary.stories.tsx} +5 -5
  36. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleProjectHeader.test.tsx → layout/ConsoleProjectSummary.test.tsx} +4 -4
  37. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleProjectHeader.tsx → layout/ConsoleProjectSummary.tsx} +3 -1
  38. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleTabBar.stories.tsx → layout/ConsoleTabList.stories.tsx} +7 -7
  39. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleTabBar.test.tsx → layout/ConsoleTabList.test.tsx} +7 -7
  40. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleTabBar.tsx → layout/ConsoleTabList.tsx} +2 -2
  41. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListView.stories.tsx → list/ConsoleItemList.stories.tsx} +7 -7
  42. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListView.test.tsx → list/ConsoleItemList.test.tsx} +9 -9
  43. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListView.tsx → list/ConsoleItemList.tsx} +13 -7
  44. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListItemRow.stories.tsx → list/ConsoleItemSummary.stories.tsx} +6 -6
  45. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListItemRow.test.tsx → list/ConsoleItemSummary.test.tsx} +7 -7
  46. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleListItemRow.tsx → list/ConsoleItemSummary.tsx} +3 -3
  47. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStoryGroupHeader.stories.tsx → list/ConsoleStorySummary.stories.tsx} +5 -5
  48. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStoryGroupHeader.test.tsx → list/ConsoleStorySummary.test.tsx} +4 -4
  49. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStoryGroupHeader.tsx → list/ConsoleStorySummary.tsx} +3 -3
  50. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleCloseActions.stories.tsx +14 -0
  51. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCloseButtonGroup.test.tsx → operations/ConsoleCloseActions.test.tsx} +4 -6
  52. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleCloseButtonGroup.tsx → operations/ConsoleCloseActions.tsx} +2 -2
  53. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.stories.tsx +20 -0
  54. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleNextActionDateGroup.test.tsx → operations/ConsoleNextActionDateActions.test.tsx} +5 -5
  55. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleNextActionDateGroup.tsx → operations/ConsoleNextActionDateActions.tsx} +2 -2
  56. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleOperationBar.stories.tsx → operations/ConsoleOperationMenu.stories.tsx} +7 -7
  57. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleOperationBar.test.tsx → operations/ConsoleOperationMenu.test.tsx} +8 -8
  58. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleOperationBar.tsx → operations/ConsoleOperationMenu.tsx} +16 -13
  59. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsolePullRequestReviewActions.stories.tsx +14 -0
  60. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePullRequestReviewGroup.test.tsx → operations/ConsolePullRequestReviewActions.test.tsx} +4 -4
  61. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePullRequestReviewGroup.tsx → operations/ConsolePullRequestReviewActions.tsx} +2 -2
  62. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStatusActions.stories.tsx +17 -0
  63. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStatusButtonGroup.test.tsx → operations/ConsoleStatusActions.test.tsx} +6 -6
  64. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStatusButtonGroup.tsx → operations/ConsoleStatusActions.tsx} +7 -4
  65. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.stories.tsx +17 -0
  66. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStoryButtonGroup.test.tsx → operations/ConsoleStoryActions.test.tsx} +5 -11
  67. package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleStoryButtonGroup.tsx → operations/ConsoleStoryActions.tsx} +3 -3
  68. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.ts +1 -1
  69. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleItemDetailData.test.ts +1 -1
  70. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleItemDetailData.ts +2 -2
  71. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.test.ts +2 -2
  72. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.ts +3 -3
  73. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOverlay.test.ts +1 -1
  74. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOverlay.ts +2 -2
  75. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.ts +2 -2
  76. package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.ts +1 -1
  77. package/src/adapter/entry-points/console/ui/src/features/console/{grouping.ts → logic/grouping.ts} +2 -2
  78. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +146 -0
  79. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.ts +48 -0
  80. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.test.tsx +4 -4
  81. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +6 -6
  82. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +55 -1
  83. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +12 -20
  84. package/src/adapter/entry-points/console/ui/src/features/console/{fixtures.ts → testing/fixtures.ts} +1 -1
  85. package/src/adapter/entry-points/console/ui-dist/assets/{index-BvuSQN9s.js → index-Druih-WG.js} +20 -20
  86. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  87. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +27 -2
  88. package/src/adapter/entry-points/handlers/consoleListsWriter.ts +1 -0
  89. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +26 -0
  90. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +17 -1
  91. package/types/adapter/entry-points/handlers/consoleListsWriter.d.ts.map +1 -1
  92. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +2 -1
  93. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  94. package/src/adapter/entry-points/console/ui/src/features/console/components/ConsoleCloseButtonGroup.stories.tsx +0 -14
  95. package/src/adapter/entry-points/console/ui/src/features/console/components/ConsoleNextActionDateGroup.stories.tsx +0 -20
  96. package/src/adapter/entry-points/console/ui/src/features/console/components/ConsolePullRequestReviewGroup.stories.tsx +0 -14
  97. package/src/adapter/entry-points/console/ui/src/features/console/components/ConsoleStatusButtonGroup.stories.tsx +0 -17
  98. package/src/adapter/entry-points/console/ui/src/features/console/components/ConsoleStoryButtonGroup.stories.tsx +0 -17
  99. package/src/adapter/entry-points/console/ui/src/features/console/overlay.test.ts +0 -124
  100. package/src/adapter/entry-points/console/ui/src/features/console/overlay.ts +0 -101
  101. /package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsoleItemIcon.stories.tsx → detail/ConsoleItemIcon.stories.tsx} +0 -0
  102. /package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePanel.stories.tsx → layout/ConsolePanel.stories.tsx} +0 -0
  103. /package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePanel.test.tsx → layout/ConsolePanel.test.tsx} +0 -0
  104. /package/src/adapter/entry-points/console/ui/src/features/console/components/{ConsolePanel.tsx → layout/ConsolePanel.tsx} +0 -0
  105. /package/src/adapter/entry-points/console/ui/src/features/console/{colors.test.ts → logic/colors.test.ts} +0 -0
  106. /package/src/adapter/entry-points/console/ui/src/features/console/{colors.ts → logic/colors.ts} +0 -0
  107. /package/src/adapter/entry-points/console/ui/src/features/console/{fileStatus.test.ts → logic/fileStatus.test.ts} +0 -0
  108. /package/src/adapter/entry-points/console/ui/src/features/console/{fileStatus.ts → logic/fileStatus.ts} +0 -0
  109. /package/src/adapter/entry-points/console/ui/src/features/console/{grouping.test.ts → logic/grouping.test.ts} +0 -0
  110. /package/src/adapter/entry-points/console/ui/src/features/console/{itemIcons.test.ts → logic/itemIcons.test.ts} +0 -0
  111. /package/src/adapter/entry-points/console/ui/src/features/console/{itemIcons.ts → logic/itemIcons.ts} +0 -0
  112. /package/src/adapter/entry-points/console/ui/src/features/console/{operations.test.ts → logic/operations.test.ts} +0 -0
  113. /package/src/adapter/entry-points/console/ui/src/features/console/{operations.ts → logic/operations.ts} +0 -0
  114. /package/src/adapter/entry-points/console/ui/src/features/console/{relativeTime.test.ts → logic/relativeTime.test.ts} +0 -0
  115. /package/src/adapter/entry-points/console/ui/src/features/console/{relativeTime.ts → logic/relativeTime.ts} +0 -0
  116. /package/src/adapter/entry-points/console/ui/src/features/console/{types.ts → logic/types.ts} +0 -0
@@ -28,7 +28,23 @@ const listPayload = (tab: string) => ({
28
28
  createdAt: '2026-06-17T00:00:00.000Z',
29
29
  },
30
30
  ]
31
- : [],
31
+ : tab === 'unread'
32
+ ? [
33
+ {
34
+ number: 866,
35
+ title: 'Notify finished issue preparation',
36
+ url: 'https://github.com/o/r/issues/866',
37
+ repo: 'o/r',
38
+ nameWithOwner: 'o/r',
39
+ projectItemId: 'PVTI_2',
40
+ itemId: 'PVTI_2',
41
+ isPr: false,
42
+ story: 'TDPM Console port',
43
+ labels: [],
44
+ createdAt: '2026-06-18T00:00:00.000Z',
45
+ },
46
+ ]
47
+ : [],
32
48
  });
33
49
 
34
50
  const installFetch = (): void => {
@@ -71,4 +87,42 @@ describe('ConsolePage', () => {
71
87
  expect(await findByText('← Back to list')).toBeInTheDocument();
72
88
  expect(getByText('Approve')).toBeInTheDocument();
73
89
  });
90
+
91
+ it('keeps a tab driven to zero at zero and does not revive its badge after switching tabs', async () => {
92
+ const { getByText, queryByText, findByText } = render(<ConsolePage />);
93
+ await waitFor(() => {
94
+ expect(getByText('Add serveConsole subcommand')).toBeInTheDocument();
95
+ });
96
+ expect(
97
+ getByText('Awaiting Quality Check')
98
+ .closest('button')
99
+ ?.querySelector('.console-tab-badge')?.textContent,
100
+ ).toBe('1');
101
+
102
+ fireEvent.click(getByText('Add serveConsole subcommand'));
103
+ expect(await findByText('← Back to list')).toBeInTheDocument();
104
+ fireEvent.click(getByText('Approve'));
105
+
106
+ await waitFor(() => {
107
+ expect(
108
+ getByText('Awaiting Quality Check')
109
+ .closest('button')
110
+ ?.querySelector('.console-tab-badge')?.textContent,
111
+ ).toBe('0');
112
+ });
113
+
114
+ fireEvent.click(getByText('Unread'));
115
+ await waitFor(() => {
116
+ expect(
117
+ getByText('Notify finished issue preparation'),
118
+ ).toBeInTheDocument();
119
+ });
120
+
121
+ const prsTabButton = queryByText('Awaiting Quality Check')?.closest(
122
+ 'button',
123
+ );
124
+ const prsBadge =
125
+ prsTabButton?.querySelector('.console-tab-badge')?.textContent ?? '0';
126
+ expect(prsBadge).toBe('0');
127
+ });
74
128
  });
@@ -1,25 +1,24 @@
1
1
  import { useMemo, useState } from 'react';
2
- import { ConsoleListView } from '../components/ConsoleListView';
3
- import { ConsoleProjectHeader } from '../components/ConsoleProjectHeader';
4
- import { ConsoleTabBar } from '../components/ConsoleTabBar';
5
- import { buildConsoleListRows, resolveItemStory } from '../grouping';
2
+ import { ConsoleProjectSummary } from '../components/layout/ConsoleProjectSummary';
3
+ import { ConsoleTabList } from '../components/layout/ConsoleTabList';
4
+ import { ConsoleItemList } from '../components/list/ConsoleItemList';
6
5
  import { useConsoleCaches } from '../hooks/useConsoleCaches';
7
6
  import { useConsoleOperations } from '../hooks/useConsoleOperations';
8
7
  import { useConsoleOverlay } from '../hooks/useConsoleOverlay';
9
8
  import { useConsolePjcode } from '../hooks/useConsolePjcode';
10
9
  import { useConsoleTabData } from '../hooks/useConsoleTabData';
10
+ import { buildConsoleListRows, resolveItemStory } from '../logic/grouping';
11
11
  import {
12
12
  countPendingItems,
13
13
  filterPendingItems,
14
14
  overlayKeyForItem,
15
- parseGeneratedAtMs,
16
- } from '../overlay';
15
+ } from '../logic/overlay';
17
16
  import type {
18
17
  ConsoleListItem,
19
18
  ConsoleOverlayStatus,
20
19
  ConsoleTabName,
21
- } from '../types';
22
- import { CONSOLE_TABS } from '../types';
20
+ } from '../logic/types';
21
+ import { CONSOLE_TABS } from '../logic/types';
23
22
  import { ConsoleItemDetailContainer } from './ConsoleItemDetailContainer';
24
23
 
25
24
  const emptyCounts = (): Record<ConsoleTabName, number> => {
@@ -57,8 +56,6 @@ export const ConsolePage = () => {
57
56
  result[tab.name] = countPendingItems(
58
57
  snapshot.items,
59
58
  overlayState.overlay,
60
- parseGeneratedAtMs(snapshot.generatedAt),
61
- tab.name,
62
59
  );
63
60
  }
64
61
  return result;
@@ -69,13 +66,8 @@ export const ConsolePage = () => {
69
66
  if (activeSnapshot === null) {
70
67
  return [];
71
68
  }
72
- return filterPendingItems(
73
- activeSnapshot.items,
74
- overlayState.overlay,
75
- parseGeneratedAtMs(activeSnapshot.generatedAt),
76
- activeTab,
77
- );
78
- }, [activeSnapshot, overlayState.overlay, activeTab]);
69
+ return filterPendingItems(activeSnapshot.items, overlayState.overlay);
70
+ }, [activeSnapshot, overlayState.overlay]);
79
71
 
80
72
  const rows = useMemo(
81
73
  () => buildConsoleListRows(pendingItems, overlayState.overlay),
@@ -106,14 +98,14 @@ export const ConsolePage = () => {
106
98
 
107
99
  return (
108
100
  <main className="console-app">
109
- <ConsoleProjectHeader pjcode={pjcode} />
110
- <ConsoleTabBar
101
+ <ConsoleProjectSummary pjcode={pjcode} />
102
+ <ConsoleTabList
111
103
  activeTab={activeTab}
112
104
  counts={counts}
113
105
  onSelectTab={selectTab}
114
106
  />
115
107
  {selectedItem === null ? (
116
- <ConsoleListView
108
+ <ConsoleItemList
117
109
  rows={rows}
118
110
  storyColors={storyColors}
119
111
  activeItemId={null}
@@ -7,7 +7,7 @@ import type {
7
7
  ConsoleListItem,
8
8
  ConsoleRelatedPullRequest,
9
9
  ConsoleStoryColorSource,
10
- } from './types';
10
+ } from '../logic/types';
11
11
 
12
12
  export const consoleStatusOptionsFixture: ConsoleFieldOption[] = [
13
13
  { id: 'f75ad846', name: 'Unread', color: 'ORANGE' },