github-issue-tower-defence-management 2.1.2 → 2.3.0

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 (65) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +8 -0
  3. package/bin/adapter/entry-points/cli/fleetConfig.js +30 -12
  4. package/bin/adapter/entry-points/cli/fleetConfig.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/index.js +5 -0
  6. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  7. package/bin/adapter/entry-points/console/consoleDoneStore.js +0 -2
  8. package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
  9. package/bin/adapter/entry-points/console/consoleTabNames.js +0 -1
  10. package/bin/adapter/entry-points/console/consoleTabNames.js.map +1 -1
  11. package/bin/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  12. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  13. package/bin/domain/usecases/StartPreparationUseCase.js +13 -12
  14. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  15. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +0 -15
  16. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/adapter/entry-points/cli/fleetConfig.test.ts +96 -0
  19. package/src/adapter/entry-points/cli/fleetConfig.ts +51 -6
  20. package/src/adapter/entry-points/cli/index.test.ts +2 -0
  21. package/src/adapter/entry-points/cli/index.ts +16 -0
  22. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +15 -9
  23. package/src/adapter/entry-points/console/consoleDoneStore.ts +0 -2
  24. package/src/adapter/entry-points/console/consoleItemUrlLookup.test.ts +1 -1
  25. package/src/adapter/entry-points/console/consoleTabNames.ts +0 -1
  26. package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +7 -115
  27. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +0 -16
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.stories.tsx +1 -3
  29. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +0 -4
  30. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +0 -1
  31. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.stories.tsx +0 -10
  32. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.test.tsx +2 -28
  33. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.tsx +0 -10
  34. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleNavigation.test.ts +18 -14
  35. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOverlay.test.ts +2 -2
  36. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +1 -1
  37. package/src/adapter/entry-points/console/ui/src/features/console/logic/grouping.test.ts +7 -7
  38. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +10 -8
  39. package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +9 -11
  40. package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +1 -12
  41. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.test.tsx +0 -12
  42. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +0 -3
  43. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +10 -57
  44. package/src/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  45. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  46. package/src/adapter/entry-points/console/webServer.test.ts +2 -2
  47. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +0 -1
  48. package/src/domain/usecases/StartPreparationUseCase.test.ts +97 -0
  49. package/src/domain/usecases/StartPreparationUseCase.ts +13 -3
  50. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +2 -160
  51. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +0 -37
  52. package/types/adapter/entry-points/cli/fleetConfig.d.ts +6 -0
  53. package/types/adapter/entry-points/cli/fleetConfig.d.ts.map +1 -1
  54. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  55. package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
  56. package/types/adapter/entry-points/console/consoleTabNames.d.ts.map +1 -1
  57. package/types/domain/usecases/StartPreparationUseCase.d.ts +3 -1
  58. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
  59. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +1 -11
  60. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  61. package/bin/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
  62. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.stories.tsx +0 -80
  63. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.test.tsx +0 -39
  64. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.tsx +0 -42
  65. package/src/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
@@ -1,80 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import type { ConsoleColor, ConsoleFieldOption } from '../../logic/types';
3
- import { consoleStoryOptionsFixture } from '../../testing/fixtures';
4
- import { ConsoleStoryActions } from './ConsoleStoryActions';
5
-
6
- const manyStoryNames: string[] = [
7
- 'TDPM Console port',
8
- 'Publish product documentation site',
9
- 'Move to Okinawa',
10
- 'regular / workflow improvement',
11
- 'regular / regular payment invoice tax',
12
- 'regular / WORKFLOW BLOCKER',
13
- 'Console triage screen redesign',
14
- 'Console detail panel performance',
15
- 'Console keyboard shortcut support',
16
- 'Console story color source refactor',
17
- 'Console list pagination',
18
- 'Console tab badge accuracy',
19
- 'Console auto-advance on empty tab',
20
- 'Console e2e Playwright coverage',
21
- 'serveConsole per-project path support',
22
- 'serveConsole authentication token rotation',
23
- 'Project field mutation batching',
24
- 'Issue cache freshness monitoring',
25
- 'Preparation daemon restart resilience',
26
- 'Reactivation trigger field cleanup',
27
- 'Depended issue URL cross-project guard',
28
- 'Auto status check rejection reporting',
29
- 'Story prefix-match invariant validation',
30
- 'Duplicate story issue cleanup tooling',
31
- 'Quality gate criteria documentation',
32
- 'CI failure handling automation',
33
- 'Pull request handover review gate',
34
- 'Workspace worktree isolation',
35
- 'Local development investigation guide',
36
- 'Figma design export integration',
37
- 'Frontend web UI design policy audit',
38
- 'Backend API design policy audit',
39
- 'Email sender identity verification',
40
- 'Schedule management calendar sync',
41
- 'Resume update automation',
42
- ];
43
-
44
- const manyAssignableStoriesFixture: ConsoleFieldOption[] = manyStoryNames.map(
45
- (name, index) => {
46
- const colors: ConsoleColor[] = [
47
- 'GRAY',
48
- 'BLUE',
49
- 'GREEN',
50
- 'YELLOW',
51
- 'ORANGE',
52
- 'RED',
53
- 'PINK',
54
- 'PURPLE',
55
- ];
56
- return {
57
- id: `many-story-${index}`,
58
- name,
59
- color: colors[index % colors.length],
60
- };
61
- },
62
- );
63
-
64
- const meta: Meta<typeof ConsoleStoryActions> = {
65
- title: 'Console/ConsoleStoryActions',
66
- component: ConsoleStoryActions,
67
- args: { onSetStory: () => {} },
68
- };
69
-
70
- export default meta;
71
-
72
- type Story = StoryObj<typeof ConsoleStoryActions>;
73
-
74
- export const AssignableStories: Story = {
75
- args: { storyOptions: consoleStoryOptionsFixture },
76
- };
77
-
78
- export const ManyAssignableStories: Story = {
79
- args: { storyOptions: manyAssignableStoriesFixture },
80
- };
@@ -1,39 +0,0 @@
1
- import { fireEvent, render } from '@testing-library/react';
2
- import { ConsoleStoryActions } from './ConsoleStoryActions';
3
-
4
- const options = [
5
- { id: '1', name: 'TDPM Console port', color: 'BLUE' as const },
6
- {
7
- id: '2',
8
- name: "regular / NO STORY; DON'T WORK ON THIS",
9
- color: 'RED' as const,
10
- },
11
- { id: '3', name: 'Move to Okinawa', color: 'PURPLE' as const },
12
- ];
13
-
14
- describe('ConsoleStoryActions', () => {
15
- it('excludes no-story options', () => {
16
- const { getByText, queryByText } = render(
17
- <ConsoleStoryActions storyOptions={options} onSetStory={() => {}} />,
18
- );
19
- expect(getByText('TDPM Console port')).toBeInTheDocument();
20
- expect(getByText('Move to Okinawa')).toBeInTheDocument();
21
- expect(queryByText(/NO STORY/)).toBeNull();
22
- });
23
-
24
- it('reports the selected story option', () => {
25
- const onSetStory = jest.fn();
26
- const { getByText } = render(
27
- <ConsoleStoryActions storyOptions={options} onSetStory={onSetStory} />,
28
- );
29
- fireEvent.click(getByText('Move to Okinawa'));
30
- expect(onSetStory).toHaveBeenCalledWith(options[2]);
31
- });
32
-
33
- it('renders nothing when only no-story options exist', () => {
34
- const { container } = render(
35
- <ConsoleStoryActions storyOptions={[options[1]]} onSetStory={() => {}} />,
36
- );
37
- expect(container.firstChild).toBeNull();
38
- });
39
- });
@@ -1,42 +0,0 @@
1
- import { colorFromEnum } from '../../logic/colors';
2
- import type { ConsoleFieldOption } from '../../logic/types';
3
-
4
- export type ConsoleStoryButtonGroupProps = {
5
- storyOptions: ConsoleFieldOption[];
6
- onSetStory: (option: ConsoleFieldOption) => void;
7
- };
8
-
9
- const isNoStoryOption = (option: ConsoleFieldOption): boolean =>
10
- option.name.toLowerCase().includes('no story');
11
-
12
- export const ConsoleStoryActions = ({
13
- storyOptions,
14
- onSetStory,
15
- }: ConsoleStoryButtonGroupProps) => {
16
- const assignable = storyOptions.filter((option) => !isNoStoryOption(option));
17
- if (assignable.length === 0) {
18
- return null;
19
- }
20
- return (
21
- <div className="console-op-group console-op-group-stories">
22
- {assignable.map((option) => {
23
- const palette = colorFromEnum(option.color);
24
- return (
25
- <button
26
- key={option.id}
27
- type="button"
28
- className="console-op-button"
29
- style={{
30
- color: palette.fg,
31
- borderColor: palette.border,
32
- backgroundColor: palette.bg,
33
- }}
34
- onClick={() => onSetStory(option)}
35
- >
36
- {option.name}
37
- </button>
38
- );
39
- })}
40
- </div>
41
- );
42
- };