github-issue-tower-defence-management 2.7.0 → 2.8.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 (52) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/bin/adapter/entry-points/cli/index.js +3 -1
  3. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  4. package/bin/adapter/entry-points/console/consoleAirplaneSnapshotApi.js +347 -0
  5. package/bin/adapter/entry-points/console/consoleAirplaneSnapshotApi.js.map +1 -0
  6. package/bin/adapter/entry-points/console/ui-dist/assets/index-DkMqSpkk.js +88 -0
  7. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  8. package/bin/adapter/entry-points/console/webServer.js +28 -0
  9. package/bin/adapter/entry-points/console/webServer.js.map +1 -1
  10. package/jest.config.js +1 -0
  11. package/package.json +1 -1
  12. package/src/adapter/entry-points/cli/index.ts +4 -1
  13. package/src/adapter/entry-points/console/consoleAirplaneSnapshotApi.test.ts +658 -0
  14. package/src/adapter/entry-points/console/consoleAirplaneSnapshotApi.ts +482 -0
  15. package/src/adapter/entry-points/console/ui/jest-globals.cjs +26 -0
  16. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.test.tsx +10 -0
  17. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.tsx +23 -16
  18. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.stories.tsx +56 -0
  19. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.test.tsx +111 -0
  20. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.tsx +92 -0
  21. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +15 -0
  22. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +19 -0
  23. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.tsx +30 -1
  24. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleErrorToast.stories.tsx +10 -0
  25. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.test.tsx +1 -3
  26. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.tsx +8 -7
  27. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useAirplaneMode.test.ts +304 -0
  28. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useAirplaneMode.ts +167 -0
  29. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.test.ts +15 -0
  30. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.ts +6 -1
  31. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.test.ts +77 -0
  32. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.ts +48 -3
  33. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleFeaturesConfig.test.ts +51 -0
  34. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleFeaturesConfig.ts +39 -0
  35. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.test.ts +215 -0
  36. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.ts +20 -1
  37. package/src/adapter/entry-points/console/ui/src/features/console/lib/airplaneSnapshot.test.ts +361 -0
  38. package/src/adapter/entry-points/console/ui/src/features/console/lib/airplaneSnapshot.ts +401 -0
  39. package/src/adapter/entry-points/console/ui/src/features/console/lib/resourceCache.ts +4 -0
  40. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +209 -0
  41. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +27 -2
  42. package/src/adapter/entry-points/console/ui-dist/assets/index-DkMqSpkk.js +88 -0
  43. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  44. package/src/adapter/entry-points/console/webServer.test.ts +189 -0
  45. package/src/adapter/entry-points/console/webServer.ts +38 -0
  46. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  47. package/types/adapter/entry-points/console/consoleAirplaneSnapshotApi.d.ts +90 -0
  48. package/types/adapter/entry-points/console/consoleAirplaneSnapshotApi.d.ts.map +1 -0
  49. package/types/adapter/entry-points/console/webServer.d.ts +1 -0
  50. package/types/adapter/entry-points/console/webServer.d.ts.map +1 -1
  51. package/bin/adapter/entry-points/console/ui-dist/assets/index-CaxYBHiT.js +0 -86
  52. package/src/adapter/entry-points/console/ui-dist/assets/index-CaxYBHiT.js +0 -86
@@ -7,9 +7,11 @@ import {
7
7
  ConsoleErrorToast,
8
8
  ConsoleUndoToast,
9
9
  } from '../components/operations/ConsoleUndoToast';
10
+ import { useAirplaneMode } from '../hooks/useAirplaneMode';
10
11
  import { useConsoleActionQueue } from '../hooks/useConsoleActionQueue';
11
12
  import { useConsoleCaches } from '../hooks/useConsoleCaches';
12
13
  import { useConsoleDetailPrefetch } from '../hooks/useConsoleDetailPrefetch';
14
+ import { useConsoleFeaturesConfig } from '../hooks/useConsoleFeaturesConfig';
13
15
  import { useConsoleNavigation } from '../hooks/useConsoleNavigation';
14
16
  import { useConsoleOperations } from '../hooks/useConsoleOperations';
15
17
  import { useConsoleOverlay } from '../hooks/useConsoleOverlay';
@@ -72,7 +74,14 @@ const OVERLAY_NAMESPACE_FALLBACK = 'console';
72
74
 
73
75
  export const ConsolePage = () => {
74
76
  const pjcode = useConsolePjcode();
75
- const { snapshots, isLoading, error } = useConsoleTabData(pjcode);
77
+ const featuresConfig = useConsoleFeaturesConfig();
78
+ const airplaneMode = useAirplaneMode();
79
+ const airplaneSnapshot =
80
+ airplaneMode.status === 'on' ? airplaneMode.snapshot : null;
81
+ const { snapshots, isLoading, error } = useConsoleTabData(
82
+ pjcode,
83
+ airplaneSnapshot,
84
+ );
76
85
  const {
77
86
  timerMode,
78
87
  projectMinutes,
@@ -131,7 +140,7 @@ export const ConsolePage = () => {
131
140
  [selectedItemKey],
132
141
  );
133
142
 
134
- const caches = useConsoleCaches();
143
+ const caches = useConsoleCaches(airplaneSnapshot);
135
144
  const operations = useConsoleOperations(
136
145
  pjcode,
137
146
  activeTab,
@@ -271,6 +280,13 @@ export const ConsolePage = () => {
271
280
 
272
281
  const handleQueueAction = useCallback(
273
282
  (input: ConsoleQueueActionInput): void => {
283
+ if (airplaneMode.status === 'on') {
284
+ actionQueue.showError(
285
+ 'Airplane mode',
286
+ 'This action requires a network connection. Turn off airplane mode and try again.',
287
+ );
288
+ return;
289
+ }
274
290
  const actedKey = overlayKeyForItem(input.item);
275
291
  actionQueue.enqueue({
276
292
  message: formatActionToast(input.kind, input.item, activeTab),
@@ -301,6 +317,7 @@ export const ConsolePage = () => {
301
317
  actionQueue,
302
318
  activeTab,
303
319
  advanceToNext,
320
+ airplaneMode.status,
304
321
  timerMode,
305
322
  isTimerExpired,
306
323
  projectMinutes,
@@ -482,6 +499,7 @@ export const ConsolePage = () => {
482
499
  )}
483
500
  {actionQueue.error !== null && (
484
501
  <ConsoleErrorToast
502
+ title={actionQueue.error.message}
485
503
  message={`Operation failed: ${actionQueue.error.reason}`}
486
504
  onDismiss={actionQueue.dismissError}
487
505
  />
@@ -510,6 +528,13 @@ export const ConsolePage = () => {
510
528
  onClose={closeSettings}
511
529
  />
512
530
  }
531
+ airplaneModeEnabled={featuresConfig.airplaneMode}
532
+ airplaneModeStatus={airplaneMode.status}
533
+ airplaneModeProgress={airplaneMode.progress}
534
+ airplaneModeCapturedAt={airplaneSnapshot?.capturedAt ?? null}
535
+ airplaneModeFailures={airplaneMode.failures}
536
+ onAirplaneModeStartSync={airplaneMode.startSync}
537
+ onAirplaneModeTurnOff={airplaneMode.turnOff}
513
538
  />
514
539
  {activeTab === 'stories' ? (
515
540
  <ConsoleStoryList