@sascha384/tic 1.34.0 → 2.0.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 (107) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/backends/availability.js +4 -2
  3. package/dist/backends/availability.js.map +1 -1
  4. package/dist/backends/factory.d.ts +5 -3
  5. package/dist/backends/factory.js +28 -43
  6. package/dist/backends/factory.js.map +1 -1
  7. package/dist/backends/files/hash.d.ts +1 -0
  8. package/dist/backends/files/hash.js +5 -0
  9. package/dist/backends/files/hash.js.map +1 -0
  10. package/dist/backends/files/index.d.ts +48 -0
  11. package/dist/backends/files/index.js +174 -0
  12. package/dist/backends/files/index.js.map +1 -0
  13. package/dist/backends/files/sync.d.ts +13 -0
  14. package/dist/backends/files/sync.js +69 -0
  15. package/dist/backends/files/sync.js.map +1 -0
  16. package/dist/backends/jira/config.d.ts +1 -1
  17. package/dist/backends/jira/config.js +6 -9
  18. package/dist/backends/jira/config.js.map +1 -1
  19. package/dist/backends/types.d.ts +12 -0
  20. package/dist/backends/types.js +5 -1
  21. package/dist/backends/types.js.map +1 -1
  22. package/dist/cli/commands/config.js +27 -14
  23. package/dist/cli/commands/config.js.map +1 -1
  24. package/dist/cli/commands/init.js +10 -3
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/mcp.d.ts +4 -4
  27. package/dist/cli/commands/mcp.js +16 -25
  28. package/dist/cli/commands/mcp.js.map +1 -1
  29. package/dist/cli/index.js +16 -19
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/commands.d.ts +2 -0
  32. package/dist/commands.js +33 -0
  33. package/dist/commands.js.map +1 -1
  34. package/dist/components/Header.js +9 -2
  35. package/dist/components/Header.js.map +1 -1
  36. package/dist/components/HelpScreen.js +3 -0
  37. package/dist/components/HelpScreen.js.map +1 -1
  38. package/dist/components/OverlayPanel.d.ts +2 -1
  39. package/dist/components/OverlayPanel.js +14 -1
  40. package/dist/components/OverlayPanel.js.map +1 -1
  41. package/dist/components/Settings.js +6 -11
  42. package/dist/components/Settings.js.map +1 -1
  43. package/dist/components/StatusScreen.js +29 -4
  44. package/dist/components/StatusScreen.js.map +1 -1
  45. package/dist/components/WorkItemForm.js +6 -9
  46. package/dist/components/WorkItemForm.js.map +1 -1
  47. package/dist/components/WorkItemList.js +353 -36
  48. package/dist/components/WorkItemList.js.map +1 -1
  49. package/dist/filters.d.ts +28 -0
  50. package/dist/filters.js +47 -0
  51. package/dist/filters.js.map +1 -0
  52. package/dist/implement.js +4 -56
  53. package/dist/implement.js.map +1 -1
  54. package/dist/index.js +20 -8
  55. package/dist/index.js.map +1 -1
  56. package/dist/storage/config.d.ts +61 -0
  57. package/dist/storage/config.js +309 -0
  58. package/dist/storage/config.js.map +1 -0
  59. package/dist/storage/db.d.ts +11 -0
  60. package/dist/storage/db.js +34 -0
  61. package/dist/storage/db.js.map +1 -0
  62. package/dist/storage/index.d.ts +73 -0
  63. package/dist/storage/index.js +966 -0
  64. package/dist/storage/index.js.map +1 -0
  65. package/dist/storage/mappers.d.ts +35 -0
  66. package/dist/storage/mappers.js +70 -0
  67. package/dist/storage/mappers.js.map +1 -0
  68. package/dist/storage/schema.d.ts +1844 -0
  69. package/dist/storage/schema.js +197 -0
  70. package/dist/storage/schema.js.map +1 -0
  71. package/dist/storage/syncQueue.d.ts +13 -0
  72. package/dist/storage/syncQueue.js +98 -0
  73. package/dist/storage/syncQueue.js.map +1 -0
  74. package/dist/storage/undo.d.ts +22 -0
  75. package/dist/storage/undo.js +129 -0
  76. package/dist/storage/undo.js.map +1 -0
  77. package/dist/stores/backendDataStore.d.ts +4 -1
  78. package/dist/stores/backendDataStore.js +61 -40
  79. package/dist/stores/backendDataStore.js.map +1 -1
  80. package/dist/stores/configStore.d.ts +3 -1
  81. package/dist/stores/configStore.js +25 -65
  82. package/dist/stores/configStore.js.map +1 -1
  83. package/dist/stores/filterStore.d.ts +13 -0
  84. package/dist/stores/filterStore.js +38 -0
  85. package/dist/stores/filterStore.js.map +1 -0
  86. package/dist/stores/listViewStore.d.ts +1 -0
  87. package/dist/stores/listViewStore.js +1 -0
  88. package/dist/stores/listViewStore.js.map +1 -1
  89. package/dist/stores/uiStore.d.ts +8 -0
  90. package/dist/stores/uiStore.js.map +1 -1
  91. package/dist/stores/undoStore.d.ts +4 -0
  92. package/dist/stores/undoStore.js +32 -0
  93. package/dist/stores/undoStore.js.map +1 -1
  94. package/dist/sync/SyncManager.d.ts +5 -4
  95. package/dist/sync/SyncManager.js +129 -36
  96. package/dist/sync/SyncManager.js.map +1 -1
  97. package/dist/sync/types.d.ts +25 -1
  98. package/package.json +5 -1
  99. package/dist/backends/local/config.d.ts +0 -23
  100. package/dist/backends/local/config.js +0 -42
  101. package/dist/backends/local/config.js.map +0 -1
  102. package/dist/backends/local/index.d.ts +0 -45
  103. package/dist/backends/local/index.js +0 -291
  104. package/dist/backends/local/index.js.map +0 -1
  105. package/dist/sync/queue.d.ts +0 -12
  106. package/dist/sync/queue.js +0 -56
  107. package/dist/sync/queue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"backendDataStore.js","sourceRoot":"","sources":["../../src/stores/backendDataStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backendDataStore.js","sourceRoot":"","sources":["../../src/stores/backendDataStore.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- import { type Config } from '../backends/local/config.js';
1
+ import { type Config } from '../storage/config.js';
2
+ import type { TicDatabase } from '../storage/db.js';
2
3
  export interface ConfigStoreState {
3
4
  config: Config;
4
5
  loaded: boolean;
5
6
  init(root: string): Promise<void>;
6
7
  startWatching(): void;
7
8
  update(partial: Partial<Config>): Promise<void>;
9
+ setDatabase(db: TicDatabase | null): void;
8
10
  destroy(): void;
9
11
  }
10
12
  export declare const configStore: import("zustand").StoreApi<ConfigStoreState>;
@@ -1,82 +1,42 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
1
  import { createStore } from 'zustand/vanilla';
4
2
  import { useStore } from 'zustand';
5
- import yaml from 'yaml';
6
- import { defaultConfig, readConfig, writeConfig, } from '../backends/local/config.js';
7
- const WATCH_DEBOUNCE_MS = 50;
8
- const WRITE_FLAG_DURATION_MS = 100;
9
- let watcher = null;
10
- let debounceTimer = null;
11
- let writingTimer = null;
12
- let writing = false;
13
- let currentRoot = '';
3
+ import { defaultConfig } from '../storage/config.js';
4
+ import { readConfig as readConfigFromDb, writeConfig as writeConfigToDb, } from '../storage/config.js';
5
+ let currentDb = null;
14
6
  export const configStore = createStore((set, get) => ({
15
7
  config: { ...defaultConfig },
16
8
  loaded: false,
17
- async init(root) {
9
+ // eslint-disable-next-line @typescript-eslint/require-await, @typescript-eslint/no-unused-vars
10
+ async init(_root) {
11
+ // Preserve database reference across the internal destroy
12
+ const db = currentDb;
18
13
  get().destroy();
19
- currentRoot = root;
20
- const config = await readConfig(root);
21
- set({ config, loaded: true });
14
+ currentDb = db;
15
+ if (currentDb) {
16
+ const config = readConfigFromDb(currentDb);
17
+ set({ config, loaded: true });
18
+ }
19
+ else {
20
+ // No DB — fall back to defaults
21
+ set({ config: { ...defaultConfig }, loaded: true });
22
+ }
22
23
  },
23
24
  startWatching() {
24
- if (watcher)
25
- return; // Already watching
26
- if (!currentRoot)
27
- return;
28
- // Ensure .tic dir exists before watching
29
- const ticDir = path.join(currentRoot, '.tic');
30
- fs.mkdirSync(ticDir, { recursive: true });
31
- const configPath = path.join(ticDir, 'config.yml');
32
- // Ensure the config file exists so fs.watch doesn't error
33
- if (!fs.existsSync(configPath)) {
34
- fs.writeFileSync(configPath, yaml.stringify(get().config));
35
- }
36
- watcher = fs.watch(configPath, () => {
37
- if (writing)
38
- return;
39
- if (debounceTimer)
40
- clearTimeout(debounceTimer);
41
- debounceTimer = setTimeout(() => {
42
- debounceTimer = null;
43
- readConfig(currentRoot).then((updated) => set({ config: updated }), () => {
44
- // File may have been deleted or be mid-write; ignore
45
- });
46
- }, WATCH_DEBOUNCE_MS);
47
- });
48
- watcher.on('error', () => {
49
- watcher?.close();
50
- watcher = null;
51
- });
25
+ // No-op — DB is the source of truth, no file watcher needed
52
26
  },
27
+ // eslint-disable-next-line @typescript-eslint/require-await
53
28
  async update(partial) {
54
29
  const merged = { ...get().config, ...partial };
55
30
  set({ config: merged });
56
- writing = true;
57
- await writeConfig(currentRoot, merged);
58
- // Keep the writing flag on long enough for the watcher to fire and be ignored
59
- if (writingTimer)
60
- clearTimeout(writingTimer);
61
- writingTimer = setTimeout(() => {
62
- writing = false;
63
- writingTimer = null;
64
- }, WRITE_FLAG_DURATION_MS);
31
+ if (currentDb) {
32
+ writeConfigToDb(currentDb, merged);
33
+ }
34
+ },
35
+ setDatabase(db) {
36
+ currentDb = db;
65
37
  },
66
38
  destroy() {
67
- if (watcher) {
68
- watcher.close();
69
- watcher = null;
70
- }
71
- if (debounceTimer) {
72
- clearTimeout(debounceTimer);
73
- debounceTimer = null;
74
- }
75
- if (writingTimer) {
76
- clearTimeout(writingTimer);
77
- writingTimer = null;
78
- }
79
- writing = false;
39
+ currentDb = null;
80
40
  set({ config: { ...defaultConfig }, loaded: false });
81
41
  },
82
42
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"configStore.js","sourceRoot":"","sources":["../../src/stores/configStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configStore.js","sourceRoot":"","sources":["../../src/stores/configStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAe,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,UAAU,IAAI,gBAAgB,EAC9B,WAAW,IAAI,eAAe,GAC/B,MAAM,sBAAsB,CAAC;AAa9B,IAAI,SAAS,GAAuB,IAAI,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE;IAC5B,MAAM,EAAE,KAAK;IAEb,+FAA+F;IAC/F,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,0DAA0D;QAC1D,MAAM,EAAE,GAAG,SAAS,CAAC;QACrB,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,SAAS,GAAG,EAAE,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC3C,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,gCAAgC;YAChC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,aAAa;QACX,4DAA4D;IAC9D,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,MAAM,CAAC,OAAwB;QACnC,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAExB,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,WAAW,CAAC,EAAsB;QAChC,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,SAAS,GAAG,IAAI,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,cAAc,CAAI,QAAwC;IACxE,OAAO,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ViewFilters, SavedView } from '../filters.js';
2
+ export interface FilterStoreState {
3
+ activeFilters: ViewFilters;
4
+ activeViewName: string | null;
5
+ /** Remembers the last loaded view name even after filters diverge. */
6
+ lastViewName: string | null;
7
+ setFilters: (filters: ViewFilters) => void;
8
+ clearFilters: () => void;
9
+ toggleFilter: (field: keyof ViewFilters, value: string) => void;
10
+ loadView: (view: SavedView) => void;
11
+ }
12
+ export declare const filterStore: import("zustand").StoreApi<FilterStoreState>;
13
+ export declare function useFilterStore<T>(selector: (state: FilterStoreState) => T): T;
@@ -0,0 +1,38 @@
1
+ // src/stores/filterStore.ts
2
+ import { createStore } from 'zustand/vanilla';
3
+ import { useStore } from 'zustand';
4
+ export const filterStore = createStore((set) => ({
5
+ activeFilters: {},
6
+ activeViewName: null,
7
+ lastViewName: null,
8
+ setFilters: (filters) => set({ activeFilters: filters, activeViewName: null }),
9
+ clearFilters: () => set({ activeFilters: {}, activeViewName: null, lastViewName: null }),
10
+ toggleFilter: (field, value) => set((state) => {
11
+ const current = state.activeFilters[field] ?? [];
12
+ const idx = current.indexOf(value);
13
+ let next;
14
+ if (idx === -1) {
15
+ next = [...current, value];
16
+ }
17
+ else {
18
+ next = current.filter((_, i) => i !== idx);
19
+ }
20
+ const nextFilters = { ...state.activeFilters };
21
+ if (next.length === 0) {
22
+ delete nextFilters[field];
23
+ }
24
+ else {
25
+ nextFilters[field] = next;
26
+ }
27
+ return { activeFilters: nextFilters, activeViewName: null };
28
+ }),
29
+ loadView: (view) => set({
30
+ activeFilters: { ...view.filters },
31
+ activeViewName: view.name,
32
+ lastViewName: view.name,
33
+ }),
34
+ }));
35
+ export function useFilterStore(selector) {
36
+ return useStore(filterStore, selector);
37
+ }
38
+ //# sourceMappingURL=filterStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterStore.js","sourceRoot":"","sources":["../../src/stores/filterStore.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAenC,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAElB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAEvD,YAAY,EAAE,GAAG,EAAE,CACjB,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAEtE,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAc,CAAC;QACnB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC,CAAC;IAEJ,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CACjB,GAAG,CAAC;QACF,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAClC,cAAc,EAAE,IAAI,CAAC,IAAI;QACzB,YAAY,EAAE,IAAI,CAAC,IAAI;KACxB,CAAC;CACL,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,cAAc,CAAI,QAAwC;IACxE,OAAO,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
@@ -22,6 +22,7 @@ interface ListViewState {
22
22
  removeDeletedItem: (id: string) => void;
23
23
  toggleSortColumn: (column: SortColumn) => void;
24
24
  clearSort: () => void;
25
+ setSortStack: (stack: SortEntry[]) => void;
25
26
  reset: () => void;
26
27
  }
27
28
  export declare const listViewStore: import("zustand").StoreApi<ListViewState>;
@@ -61,6 +61,7 @@ export const listViewStore = createStore((set) => ({
61
61
  return { sortStack: state.sortStack.filter((_, i) => i !== idx) };
62
62
  }),
63
63
  clearSort: () => set({ sortStack: [] }),
64
+ setSortStack: (stack) => set({ sortStack: stack }),
64
65
  reset: () => set({
65
66
  cursor: 0,
66
67
  expandedIds: new Set(),
@@ -1 +1 @@
1
- {"version":3,"file":"listViewStore.js","sourceRoot":"","sources":["../../src/stores/listViewStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listViewStore.js","sourceRoot":"","sources":["../../src/stores/listViewStore.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,14 @@ export type ActiveOverlay = {
29
29
  targetIds: string[];
30
30
  } | {
31
31
  type: 'sort-picker';
32
+ } | {
33
+ type: 'filter-picker';
34
+ } | {
35
+ type: 'view-picker';
36
+ } | {
37
+ type: 'save-view-input';
38
+ } | {
39
+ type: 'delete-view-picker';
32
40
  } | {
33
41
  type: 'default-type-picker';
34
42
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"uiStore.js","sourceRoot":"","sources":["../../src/stores/uiStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAoCnC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IAEX,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IACzD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAChD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1C,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IAC1E,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CACpE,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,UAAU,CAAI,QAAoC;IAChE,OAAO,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC;IACjD,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IAChE,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"uiStore.js","sourceRoot":"","sources":["../../src/stores/uiStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAwCnC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IAEX,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IACzD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAChD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1C,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IAC1E,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CACpE,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,UAAU,CAAI,QAAoC;IAChE,OAAO,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC;IACjD,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IAChE,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { WorkItem } from '../types.js';
2
2
  import type { QueueAction } from '../sync/types.js';
3
+ import type { TicDatabase } from '../storage/db.js';
3
4
  export type UndoActionType = 'delete' | 'create' | 'update';
4
5
  export interface UndoEntry {
5
6
  type: UndoActionType;
@@ -14,6 +15,9 @@ export interface UndoStoreState {
14
15
  pushUndo: (entry: UndoEntry) => UndoEntry | undefined;
15
16
  popUndo: () => UndoEntry | undefined;
16
17
  clear: () => UndoEntry[];
18
+ setDatabase: (db: TicDatabase | null) => void;
19
+ initFromDb: () => void;
20
+ destroy: () => void;
17
21
  }
18
22
  export declare const undoStore: import("zustand").StoreApi<UndoStoreState>;
19
23
  export declare function useUndoStore<T>(selector: (state: UndoStoreState) => T): T;
@@ -1,9 +1,16 @@
1
1
  import { createStore } from 'zustand/vanilla';
2
2
  import { useStore } from 'zustand';
3
+ import { pushUndoEntry, popUndoEntry, readUndoStack, clearUndoStack, } from '../storage/undo.js';
3
4
  const MAX_DEPTH = 5;
5
+ let currentDb = null;
4
6
  export const undoStore = createStore((set, get) => ({
5
7
  stack: [],
6
8
  pushUndo: (entry) => {
9
+ if (currentDb) {
10
+ const evicted = pushUndoEntry(currentDb, entry);
11
+ set({ stack: readUndoStack(currentDb) });
12
+ return evicted;
13
+ }
7
14
  const { stack } = get();
8
15
  const newStack = [entry, ...stack];
9
16
  let evicted;
@@ -14,6 +21,11 @@ export const undoStore = createStore((set, get) => ({
14
21
  return evicted;
15
22
  },
16
23
  popUndo: () => {
24
+ if (currentDb) {
25
+ const popped = popUndoEntry(currentDb);
26
+ set({ stack: readUndoStack(currentDb) });
27
+ return popped;
28
+ }
17
29
  const { stack } = get();
18
30
  if (stack.length === 0)
19
31
  return undefined;
@@ -22,10 +34,30 @@ export const undoStore = createStore((set, get) => ({
22
34
  return first;
23
35
  },
24
36
  clear: () => {
37
+ if (currentDb) {
38
+ const entries = clearUndoStack(currentDb);
39
+ set({ stack: [] });
40
+ return entries;
41
+ }
25
42
  const { stack } = get();
26
43
  set({ stack: [] });
27
44
  return stack;
28
45
  },
46
+ setDatabase: (db) => {
47
+ currentDb = db;
48
+ if (db) {
49
+ set({ stack: readUndoStack(db) });
50
+ }
51
+ },
52
+ initFromDb: () => {
53
+ if (currentDb) {
54
+ set({ stack: readUndoStack(currentDb) });
55
+ }
56
+ },
57
+ destroy: () => {
58
+ currentDb = null;
59
+ set({ stack: [] });
60
+ },
29
61
  }));
30
62
  export function useUndoStore(selector) {
31
63
  return useStore(undoStore, selector);
@@ -1 +1 @@
1
- {"version":3,"file":"undoStore.js","sourceRoot":"","sources":["../../src/stores/undoStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAenC,MAAM,SAAS,GAAG,CAAC,CAAC;AASpB,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAClE,KAAK,EAAE,EAAE;IAET,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;QACnC,IAAI,OAA8B,CAAC;QACnC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAChC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;QAC/B,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,EAAE,GAAG,EAAE;QACV,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;QACxB,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,YAAY,CAAI,QAAsC;IACpE,OAAO,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"undoStore.js","sourceRoot":"","sources":["../../src/stores/undoStore.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,19 @@
1
1
  import type { Backend } from '../backends/types.js';
2
- import { LocalBackend } from '../backends/local/index.js';
3
- import type { SyncQueueStore } from './queue.js';
2
+ import type { SyncQueueAdapter } from './types.js';
4
3
  import type { SyncStatus, SyncResult, PushResult } from './types.js';
5
4
  type StatusListener = (status: SyncStatus) => void;
6
5
  export declare class SyncManager {
7
- private local;
6
+ private primary;
8
7
  private remote;
9
8
  private queue;
10
9
  private status;
11
10
  private listeners;
12
- constructor(local: LocalBackend, remote: Backend, queue: SyncQueueStore);
11
+ private syncLog;
12
+ constructor(primary: Backend, remote: Backend, queue: SyncQueueAdapter);
13
13
  getStatus(): SyncStatus;
14
14
  onStatusChange(cb: StatusListener): void;
15
15
  private updateStatus;
16
+ private appendLog;
16
17
  pushPending(): Promise<PushResult>;
17
18
  /** Strip fields the remote backend doesn't support to avoid UnsupportedOperationError. */
18
19
  private stripUnsupportedFields;