floq 0.1.0 → 0.2.1

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 (42) hide show
  1. package/README.ja.md +89 -9
  2. package/README.md +89 -9
  3. package/dist/changelog.d.ts +13 -0
  4. package/dist/changelog.js +95 -0
  5. package/dist/cli.js +44 -1
  6. package/dist/commands/comment.d.ts +2 -0
  7. package/dist/commands/comment.js +67 -0
  8. package/dist/commands/config.d.ts +4 -0
  9. package/dist/commands/config.js +123 -1
  10. package/dist/commands/setup.d.ts +1 -0
  11. package/dist/commands/setup.js +13 -0
  12. package/dist/config.d.ts +5 -0
  13. package/dist/config.js +40 -3
  14. package/dist/db/index.js +20 -0
  15. package/dist/db/schema.d.ts +83 -0
  16. package/dist/db/schema.js +6 -0
  17. package/dist/i18n/en.d.ts +278 -0
  18. package/dist/i18n/en.js +148 -3
  19. package/dist/i18n/ja.js +148 -3
  20. package/dist/index.js +14 -4
  21. package/dist/paths.d.ts +4 -0
  22. package/dist/paths.js +63 -5
  23. package/dist/ui/App.js +320 -37
  24. package/dist/ui/ModeSelector.d.ts +7 -0
  25. package/dist/ui/ModeSelector.js +37 -0
  26. package/dist/ui/SetupWizard.d.ts +6 -0
  27. package/dist/ui/SetupWizard.js +321 -0
  28. package/dist/ui/components/HelpModal.d.ts +2 -1
  29. package/dist/ui/components/HelpModal.js +155 -4
  30. package/dist/ui/components/KanbanBoard.d.ts +6 -0
  31. package/dist/ui/components/KanbanBoard.js +498 -0
  32. package/dist/ui/components/KanbanColumn.d.ts +12 -0
  33. package/dist/ui/components/KanbanColumn.js +11 -0
  34. package/dist/ui/components/ProgressBar.d.ts +7 -0
  35. package/dist/ui/components/ProgressBar.js +13 -0
  36. package/dist/ui/components/SearchBar.d.ts +8 -0
  37. package/dist/ui/components/SearchBar.js +11 -0
  38. package/dist/ui/components/SearchResults.d.ts +9 -0
  39. package/dist/ui/components/SearchResults.js +18 -0
  40. package/dist/ui/components/TaskItem.d.ts +6 -1
  41. package/dist/ui/components/TaskItem.js +3 -2
  42. package/package.json +1 -1
package/dist/i18n/en.d.ts CHANGED
@@ -6,6 +6,11 @@ export declare const en: {
6
6
  someday: string;
7
7
  done: string;
8
8
  };
9
+ kanban: {
10
+ todo: string;
11
+ doing: string;
12
+ done: string;
13
+ };
9
14
  projectStatus: {
10
15
  active: string;
11
16
  someday: string;
@@ -51,6 +56,13 @@ export declare const en: {
51
56
  statusLabel: string;
52
57
  tasksCount: string;
53
58
  };
59
+ comment: {
60
+ added: string;
61
+ notFound: string;
62
+ multipleMatch: string;
63
+ noComments: string;
64
+ listHeader: string;
65
+ };
54
66
  };
55
67
  tui: {
56
68
  title: string;
@@ -61,6 +73,8 @@ export declare const en: {
61
73
  added: string;
62
74
  completed: string;
63
75
  movedTo: string;
76
+ movedToWaiting: string;
77
+ waitingFor: string;
64
78
  refreshed: string;
65
79
  footer: string;
66
80
  noTasks: string;
@@ -69,6 +83,7 @@ export declare const en: {
69
83
  tabWaiting: string;
70
84
  tabSomeday: string;
71
85
  tabProjects: string;
86
+ tabDone: string;
72
87
  madeProject: string;
73
88
  linkedToProject: string;
74
89
  selectProject: string;
@@ -79,13 +94,21 @@ export declare const en: {
79
94
  done: string;
80
95
  next: string;
81
96
  someday: string;
97
+ waiting: string;
82
98
  inbox: string;
83
99
  project: string;
84
100
  help: string;
85
101
  quit: string;
102
+ comment: string;
103
+ back: string;
104
+ delete: string;
86
105
  };
87
106
  help: {
88
107
  title: string;
108
+ whatsNewTab: string;
109
+ keybindingsTab: string;
110
+ infoTab: string;
111
+ tabHint: string;
89
112
  navigation: string;
90
113
  tabSwitch: string;
91
114
  prevNextTab: string;
@@ -95,6 +118,7 @@ export declare const en: {
95
118
  completeTask: string;
96
119
  moveToNext: string;
97
120
  moveToSomeday: string;
121
+ moveToWaiting: string;
98
122
  moveToInbox: string;
99
123
  refresh: string;
100
124
  projects: string;
@@ -102,15 +126,134 @@ export declare const en: {
102
126
  linkToProject: string;
103
127
  openProject: string;
104
128
  backFromProject: string;
129
+ taskDetail: string;
130
+ addComment: string;
131
+ searchTasks: string;
132
+ other: string;
133
+ showHelp: string;
134
+ quit: string;
135
+ closeHint: string;
136
+ };
137
+ whatsNew: {
138
+ title: string;
139
+ noChanges: string;
140
+ added: string;
141
+ changed: string;
142
+ deprecated: string;
143
+ removed: string;
144
+ fixed: string;
145
+ security: string;
146
+ };
147
+ kanbanHelp: {
148
+ title: string;
149
+ navigation: string;
150
+ columnSwitch: string;
151
+ columnDirect: string;
152
+ taskSelect: string;
153
+ actions: string;
154
+ addTask: string;
155
+ completeTask: string;
156
+ moveRight: string;
157
+ moveLeft: string;
158
+ searchTasks: string;
105
159
  other: string;
106
160
  showHelp: string;
107
161
  quit: string;
108
162
  closeHint: string;
109
163
  };
164
+ addComment: string;
165
+ noComments: string;
166
+ commentHint: string;
167
+ linkHint: string;
168
+ commentAdded: string;
169
+ commentDeleted: string;
170
+ taskDetailTitle: string;
171
+ taskDetailFooter: string;
172
+ taskDetailStatus: string;
173
+ deleteConfirm: string;
174
+ deleted: string;
175
+ deleteCancelled: string;
176
+ comments: string;
177
+ projectTasks: string;
178
+ search: {
179
+ prefix: string;
180
+ placeholder: string;
181
+ help: string;
182
+ noResults: string;
183
+ resultsTitle: string;
184
+ searchTasks: string;
185
+ };
186
+ info: {
187
+ settings: string;
188
+ database: string;
189
+ paths: string;
190
+ theme: string;
191
+ language: string;
192
+ viewMode: string;
193
+ dbType: string;
194
+ dbPath: string;
195
+ tursoUrl: string;
196
+ configFile: string;
197
+ dataDir: string;
198
+ local: string;
199
+ turso: string;
200
+ };
201
+ };
202
+ setup: {
203
+ welcome: {
204
+ title: string;
205
+ subtitle: string;
206
+ instruction: string;
207
+ };
208
+ language: {
209
+ title: string;
210
+ hint: string;
211
+ };
212
+ theme: {
213
+ title: string;
214
+ hint: string;
215
+ };
216
+ viewMode: {
217
+ title: string;
218
+ hint: string;
219
+ gtd: string;
220
+ gtdDesc: string;
221
+ kanban: string;
222
+ kanbanDesc: string;
223
+ };
224
+ database: {
225
+ title: string;
226
+ local: string;
227
+ localDesc: string;
228
+ turso: string;
229
+ tursoDesc: string;
230
+ hint: string;
231
+ };
232
+ turso: {
233
+ urlPrompt: string;
234
+ urlPlaceholder: string;
235
+ urlError: string;
236
+ tokenPrompt: string;
237
+ tokenError: string;
238
+ inputHint: string;
239
+ };
240
+ complete: {
241
+ title: string;
242
+ summary: string;
243
+ language: string;
244
+ theme: string;
245
+ viewMode: string;
246
+ database: string;
247
+ confirm: string;
248
+ };
110
249
  };
111
250
  };
112
251
  export type HelpTranslations = {
113
252
  title: string;
253
+ whatsNewTab: string;
254
+ keybindingsTab: string;
255
+ infoTab: string;
256
+ tabHint: string;
114
257
  navigation: string;
115
258
  tabSwitch: string;
116
259
  prevNextTab: string;
@@ -120,6 +263,7 @@ export type HelpTranslations = {
120
263
  completeTask: string;
121
264
  moveToNext: string;
122
265
  moveToSomeday: string;
266
+ moveToWaiting: string;
123
267
  moveToInbox: string;
124
268
  refresh: string;
125
269
  projects: string;
@@ -127,20 +271,82 @@ export type HelpTranslations = {
127
271
  linkToProject: string;
128
272
  openProject: string;
129
273
  backFromProject: string;
274
+ taskDetail: string;
275
+ addComment: string;
276
+ searchTasks: string;
130
277
  other: string;
131
278
  showHelp: string;
132
279
  quit: string;
133
280
  closeHint: string;
134
281
  };
282
+ export type WhatsNewTranslations = {
283
+ title: string;
284
+ noChanges: string;
285
+ added: string;
286
+ changed: string;
287
+ deprecated: string;
288
+ removed: string;
289
+ fixed: string;
290
+ security: string;
291
+ };
292
+ export type KanbanHelpTranslations = {
293
+ title: string;
294
+ navigation: string;
295
+ columnSwitch: string;
296
+ columnDirect: string;
297
+ taskSelect: string;
298
+ actions: string;
299
+ addTask: string;
300
+ completeTask: string;
301
+ moveRight: string;
302
+ moveLeft: string;
303
+ searchTasks: string;
304
+ other: string;
305
+ showHelp: string;
306
+ quit: string;
307
+ closeHint: string;
308
+ };
309
+ export type KanbanTranslations = {
310
+ todo: string;
311
+ doing: string;
312
+ done: string;
313
+ };
135
314
  export type KeyBarTranslations = {
136
315
  add: string;
137
316
  done: string;
138
317
  next: string;
139
318
  someday: string;
319
+ waiting: string;
140
320
  inbox: string;
141
321
  project: string;
142
322
  help: string;
143
323
  quit: string;
324
+ comment: string;
325
+ back: string;
326
+ delete: string;
327
+ };
328
+ export type SearchTranslations = {
329
+ prefix: string;
330
+ placeholder: string;
331
+ help: string;
332
+ noResults: string;
333
+ resultsTitle: string;
334
+ searchTasks: string;
335
+ };
336
+ export type InfoTranslations = {
337
+ settings: string;
338
+ database: string;
339
+ paths: string;
340
+ theme: string;
341
+ language: string;
342
+ viewMode: string;
343
+ dbType: string;
344
+ dbPath: string;
345
+ tursoUrl: string;
346
+ configFile: string;
347
+ dataDir: string;
348
+ local: string;
349
+ turso: string;
144
350
  };
145
351
  export type TuiTranslations = {
146
352
  title: string;
@@ -151,6 +357,8 @@ export type TuiTranslations = {
151
357
  added: string;
152
358
  completed: string;
153
359
  movedTo: string;
360
+ movedToWaiting: string;
361
+ waitingFor: string;
154
362
  refreshed: string;
155
363
  footer: string;
156
364
  noTasks: string;
@@ -159,6 +367,7 @@ export type TuiTranslations = {
159
367
  tabWaiting: string;
160
368
  tabSomeday: string;
161
369
  tabProjects: string;
370
+ tabDone: string;
162
371
  madeProject: string;
163
372
  linkedToProject: string;
164
373
  selectProject: string;
@@ -166,9 +375,76 @@ export type TuiTranslations = {
166
375
  back: string;
167
376
  keyBar: KeyBarTranslations;
168
377
  help: HelpTranslations;
378
+ whatsNew: WhatsNewTranslations;
379
+ kanbanHelp: KanbanHelpTranslations;
380
+ search: SearchTranslations;
381
+ info: InfoTranslations;
382
+ addComment: string;
383
+ noComments: string;
384
+ commentHint: string;
385
+ linkHint: string;
386
+ commentAdded: string;
387
+ commentDeleted: string;
388
+ taskDetailTitle: string;
389
+ taskDetailFooter: string;
390
+ taskDetailStatus: string;
391
+ deleteConfirm: string;
392
+ deleted: string;
393
+ deleteCancelled: string;
394
+ comments: string;
395
+ projectTasks: string;
396
+ };
397
+ export type SetupTranslations = {
398
+ welcome: {
399
+ title: string;
400
+ subtitle: string;
401
+ instruction: string;
402
+ };
403
+ language: {
404
+ title: string;
405
+ hint: string;
406
+ };
407
+ theme: {
408
+ title: string;
409
+ hint: string;
410
+ };
411
+ viewMode: {
412
+ title: string;
413
+ hint: string;
414
+ gtd: string;
415
+ gtdDesc: string;
416
+ kanban: string;
417
+ kanbanDesc: string;
418
+ };
419
+ database: {
420
+ title: string;
421
+ local: string;
422
+ localDesc: string;
423
+ turso: string;
424
+ tursoDesc: string;
425
+ hint: string;
426
+ };
427
+ turso: {
428
+ urlPrompt: string;
429
+ urlPlaceholder: string;
430
+ urlError: string;
431
+ tokenPrompt: string;
432
+ tokenError: string;
433
+ inputHint: string;
434
+ };
435
+ complete: {
436
+ title: string;
437
+ summary: string;
438
+ language: string;
439
+ theme: string;
440
+ viewMode: string;
441
+ database: string;
442
+ confirm: string;
443
+ };
169
444
  };
170
445
  export type Translations = {
171
446
  status: Record<string, string>;
447
+ kanban: KanbanTranslations;
172
448
  projectStatus: Record<string, string>;
173
449
  commands: {
174
450
  add: Record<string, string>;
@@ -176,6 +452,8 @@ export type Translations = {
176
452
  move: Record<string, string>;
177
453
  done: Record<string, string>;
178
454
  project: Record<string, string>;
455
+ comment: Record<string, string>;
179
456
  };
180
457
  tui: TuiTranslations;
458
+ setup: SetupTranslations;
181
459
  };
package/dist/i18n/en.js CHANGED
@@ -7,6 +7,12 @@ export const en = {
7
7
  someday: 'Someday/Maybe',
8
8
  done: 'Done',
9
9
  },
10
+ // Kanban mode labels
11
+ kanban: {
12
+ todo: 'TODO',
13
+ doing: 'Doing',
14
+ done: 'Done',
15
+ },
10
16
  // Project status
11
17
  projectStatus: {
12
18
  active: 'Active Projects',
@@ -54,6 +60,13 @@ export const en = {
54
60
  statusLabel: 'Status: {status}',
55
61
  tasksCount: 'Tasks: {count}',
56
62
  },
63
+ comment: {
64
+ added: 'Comment added to "{title}"',
65
+ notFound: 'Task not found: {id}',
66
+ multipleMatch: 'Multiple tasks match "{id}". Please be more specific:',
67
+ noComments: 'No comments',
68
+ listHeader: 'Comments for "{title}":',
69
+ },
57
70
  },
58
71
  // TUI
59
72
  tui: {
@@ -65,8 +78,10 @@ export const en = {
65
78
  added: 'Added: "{title}"',
66
79
  completed: 'Completed: "{title}"',
67
80
  movedTo: 'Moved "{title}" to {status}',
81
+ movedToWaiting: 'Moved "{title}" to Waiting (for {person})',
82
+ waitingFor: 'Waiting for: ',
68
83
  refreshed: 'Refreshed',
69
- footer: 'a=add d=done n=next s=someday i=inbox p=project P=link',
84
+ footer: 'a=add d=done D=delete n=next s=someday w=waiting i=inbox p=project P=link',
70
85
  noTasks: 'No tasks',
71
86
  // Tab labels
72
87
  tabInbox: 'Inbox',
@@ -74,6 +89,7 @@ export const en = {
74
89
  tabWaiting: 'Waiting',
75
90
  tabSomeday: 'Someday',
76
91
  tabProjects: 'Projects',
92
+ tabDone: 'Done',
77
93
  // Project actions
78
94
  madeProject: 'Made project: "{title}"',
79
95
  linkedToProject: 'Linked "{title}" to {project}',
@@ -86,16 +102,24 @@ export const en = {
86
102
  done: 'Done',
87
103
  next: 'Next',
88
104
  someday: 'Someday',
105
+ waiting: 'Waiting',
89
106
  inbox: 'Inbox',
90
107
  project: 'Project',
91
108
  help: 'Help',
92
109
  quit: 'Quit',
110
+ comment: 'Comment',
111
+ back: 'Back',
112
+ delete: 'Delete',
93
113
  },
94
114
  // Help modal
95
115
  help: {
96
116
  title: 'Keyboard Shortcuts',
117
+ whatsNewTab: "What's New",
118
+ keybindingsTab: 'Keybindings',
119
+ infoTab: 'Info',
120
+ tabHint: 'Tab: switch view',
97
121
  navigation: 'Navigation',
98
- tabSwitch: 'Switch tab (5=Projects)',
122
+ tabSwitch: 'Switch tab (5=Projects, 6=Done)',
99
123
  prevNextTab: 'Previous/Next tab',
100
124
  taskSelect: 'Select task',
101
125
  actions: 'Actions',
@@ -103,6 +127,7 @@ export const en = {
103
127
  completeTask: 'Complete selected task',
104
128
  moveToNext: 'Move to Next Actions',
105
129
  moveToSomeday: 'Move to Someday/Maybe',
130
+ moveToWaiting: 'Move to Waiting For',
106
131
  moveToInbox: 'Move to Inbox',
107
132
  refresh: 'Refresh list',
108
133
  projects: 'Projects',
@@ -110,10 +135,130 @@ export const en = {
110
135
  linkToProject: 'Link task to project',
111
136
  openProject: 'Open project (on Projects tab)',
112
137
  backFromProject: 'Back from project detail',
138
+ taskDetail: 'View task details',
139
+ addComment: 'Add comment',
140
+ searchTasks: 'Search tasks',
113
141
  other: 'Other',
114
142
  showHelp: 'Show this help',
115
143
  quit: 'Quit',
116
- closeHint: 'Press any key to close',
144
+ closeHint: 'Esc/q: close',
145
+ },
146
+ // What's New / Changelog
147
+ whatsNew: {
148
+ title: "What's New",
149
+ noChanges: 'No changelog available',
150
+ added: 'Added',
151
+ changed: 'Changed',
152
+ deprecated: 'Deprecated',
153
+ removed: 'Removed',
154
+ fixed: 'Fixed',
155
+ security: 'Security',
156
+ },
157
+ // Kanban mode help
158
+ kanbanHelp: {
159
+ title: 'Kanban Shortcuts',
160
+ navigation: 'Navigation',
161
+ columnSwitch: 'Switch column',
162
+ columnDirect: 'Jump to column directly',
163
+ taskSelect: 'Select task',
164
+ actions: 'Actions',
165
+ addTask: 'Add new task (to TODO)',
166
+ completeTask: 'Move to Done',
167
+ moveRight: 'Move task to next column',
168
+ moveLeft: 'Move task to previous column',
169
+ searchTasks: 'Search tasks',
170
+ other: 'Other',
171
+ showHelp: 'Show this help',
172
+ quit: 'Quit',
173
+ closeHint: 'Esc/q: close',
174
+ },
175
+ addComment: 'New comment: ',
176
+ noComments: 'No comments yet',
177
+ commentHint: 'i: add comment',
178
+ linkHint: 'P: link to project',
179
+ commentAdded: 'Comment added',
180
+ commentDeleted: 'Comment deleted',
181
+ taskDetailTitle: 'Task Details',
182
+ taskDetailFooter: 'j/k=select i=comment d=delete P=link b/Esc=back',
183
+ taskDetailStatus: 'Status',
184
+ deleteConfirm: 'Delete "{title}"? (y/n)',
185
+ deleted: 'Deleted: "{title}"',
186
+ deleteCancelled: 'Delete cancelled',
187
+ comments: 'Comments',
188
+ projectTasks: 'Tasks',
189
+ // Search
190
+ search: {
191
+ prefix: '/',
192
+ placeholder: 'Search tasks...',
193
+ help: '(Enter to select, Ctrl+j/k to navigate, Esc to cancel)',
194
+ noResults: 'No matching tasks',
195
+ resultsTitle: 'Search Results',
196
+ searchTasks: 'Search tasks',
197
+ },
198
+ // Info tab
199
+ info: {
200
+ settings: 'Settings',
201
+ database: 'Database',
202
+ paths: 'Paths',
203
+ theme: 'Theme',
204
+ language: 'Language',
205
+ viewMode: 'View Mode',
206
+ dbType: 'Type',
207
+ dbPath: 'Path',
208
+ tursoUrl: 'Turso URL',
209
+ configFile: 'Config File',
210
+ dataDir: 'Data Directory',
211
+ local: 'local',
212
+ turso: 'turso',
213
+ },
214
+ },
215
+ // Setup wizard
216
+ setup: {
217
+ welcome: {
218
+ title: 'Welcome to Floq!',
219
+ subtitle: 'Let\'s configure your task manager',
220
+ instruction: 'Press any key to start setup...',
221
+ },
222
+ language: {
223
+ title: 'Select Language',
224
+ hint: 'j/k: select, Enter: confirm, Esc: back',
225
+ },
226
+ theme: {
227
+ title: 'Select Theme',
228
+ hint: 'j/k: select, Enter: confirm, Esc: back',
229
+ },
230
+ viewMode: {
231
+ title: 'Select View Mode',
232
+ hint: 'j/k: select, Enter: confirm, Esc: back',
233
+ gtd: 'GTD (Getting Things Done)',
234
+ gtdDesc: 'Classic GTD workflow with Inbox, Next, Waiting, Someday lists',
235
+ kanban: 'Kanban Board',
236
+ kanbanDesc: '3-column kanban board view',
237
+ },
238
+ database: {
239
+ title: 'Select Database Mode',
240
+ local: 'Local',
241
+ localDesc: 'Store data locally on this device',
242
+ turso: 'Turso Cloud',
243
+ tursoDesc: 'Sync data across devices via Turso',
244
+ hint: 'j/k: select, Enter: confirm, Esc: back',
245
+ },
246
+ turso: {
247
+ urlPrompt: 'Turso Database URL',
248
+ urlPlaceholder: 'libsql://your-db.turso.io',
249
+ urlError: 'URL must start with libsql://',
250
+ tokenPrompt: 'Turso Auth Token',
251
+ tokenError: 'Token cannot be empty',
252
+ inputHint: 'Enter: confirm, Esc: back',
253
+ },
254
+ complete: {
255
+ title: 'Setup Complete!',
256
+ summary: 'Your settings:',
257
+ language: 'Language',
258
+ theme: 'Theme',
259
+ viewMode: 'View Mode',
260
+ database: 'Database',
261
+ confirm: 'Press Enter to save and start Floq...',
117
262
  },
118
263
  },
119
264
  };