floq 0.0.1 → 0.2.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 (55) hide show
  1. package/README.ja.md +157 -29
  2. package/README.md +157 -29
  3. package/dist/changelog.d.ts +13 -0
  4. package/dist/changelog.js +95 -0
  5. package/dist/cli.js +70 -1
  6. package/dist/commands/add.js +5 -6
  7. package/dist/commands/comment.d.ts +2 -0
  8. package/dist/commands/comment.js +67 -0
  9. package/dist/commands/config.d.ts +7 -0
  10. package/dist/commands/config.js +163 -14
  11. package/dist/commands/done.js +4 -6
  12. package/dist/commands/list.js +9 -13
  13. package/dist/commands/move.js +4 -6
  14. package/dist/commands/project.js +18 -26
  15. package/dist/commands/setup.d.ts +1 -0
  16. package/dist/commands/setup.js +13 -0
  17. package/dist/config.d.ts +15 -1
  18. package/dist/config.js +53 -2
  19. package/dist/db/index.d.ts +5 -4
  20. package/dist/db/index.js +127 -32
  21. package/dist/db/schema.d.ts +83 -0
  22. package/dist/db/schema.js +6 -0
  23. package/dist/i18n/en.d.ts +258 -0
  24. package/dist/i18n/en.js +138 -3
  25. package/dist/i18n/ja.js +138 -3
  26. package/dist/index.js +33 -1
  27. package/dist/paths.d.ts +4 -0
  28. package/dist/paths.js +63 -5
  29. package/dist/ui/App.js +384 -136
  30. package/dist/ui/ModeSelector.d.ts +7 -0
  31. package/dist/ui/ModeSelector.js +37 -0
  32. package/dist/ui/SetupWizard.d.ts +6 -0
  33. package/dist/ui/SetupWizard.js +321 -0
  34. package/dist/ui/ThemeSelector.d.ts +1 -1
  35. package/dist/ui/ThemeSelector.js +23 -10
  36. package/dist/ui/components/FunctionKeyBar.d.ts +5 -4
  37. package/dist/ui/components/FunctionKeyBar.js +19 -15
  38. package/dist/ui/components/HelpModal.d.ts +2 -1
  39. package/dist/ui/components/HelpModal.js +118 -4
  40. package/dist/ui/components/KanbanBoard.d.ts +6 -0
  41. package/dist/ui/components/KanbanBoard.js +508 -0
  42. package/dist/ui/components/KanbanColumn.d.ts +12 -0
  43. package/dist/ui/components/KanbanColumn.js +11 -0
  44. package/dist/ui/components/ProgressBar.d.ts +7 -0
  45. package/dist/ui/components/ProgressBar.js +13 -0
  46. package/dist/ui/components/SearchBar.d.ts +8 -0
  47. package/dist/ui/components/SearchBar.js +11 -0
  48. package/dist/ui/components/SearchResults.d.ts +9 -0
  49. package/dist/ui/components/SearchResults.js +18 -0
  50. package/dist/ui/components/TaskItem.d.ts +6 -1
  51. package/dist/ui/components/TaskItem.js +3 -2
  52. package/dist/ui/theme/themes.d.ts +12 -0
  53. package/dist/ui/theme/themes.js +495 -3
  54. package/dist/ui/theme/types.d.ts +1 -1
  55. package/package.json +2 -1
@@ -3,6 +3,18 @@ export declare const modernTheme: Theme;
3
3
  export declare const nortonCommanderTheme: Theme;
4
4
  export declare const dosPromptTheme: Theme;
5
5
  export declare const turboPascalTheme: Theme;
6
+ export declare const classicMacTheme: Theme;
7
+ export declare const appleIITheme: Theme;
8
+ export declare const commodore64Theme: Theme;
9
+ export declare const amigaWorkbenchTheme: Theme;
10
+ export declare const matrixTheme: Theme;
11
+ export declare const amberCrtTheme: Theme;
12
+ export declare const phosphorTheme: Theme;
13
+ export declare const solarizedDarkTheme: Theme;
14
+ export declare const solarizedLightTheme: Theme;
15
+ export declare const synthwaveTheme: Theme;
16
+ export declare const paperTheme: Theme;
17
+ export declare const coffeeTheme: Theme;
6
18
  export declare const themes: Record<ThemeName, Theme>;
7
19
  export declare const VALID_THEMES: ThemeName[];
8
20
  export declare function getTheme(name: ThemeName): Theme;
@@ -55,8 +55,8 @@ export const nortonCommanderTheme = {
55
55
  textMuted: 'blue',
56
56
  textSelected: 'yellow',
57
57
  textHighlight: 'white',
58
- fnKeyLabel: 'black',
59
- fnKeyText: 'cyan',
58
+ fnKeyLabel: 'cyan',
59
+ fnKeyText: 'white',
60
60
  },
61
61
  borders: {
62
62
  main: 'double',
@@ -148,13 +148,505 @@ export const turboPascalTheme = {
148
148
  loadingChars: ['█', '▒'],
149
149
  },
150
150
  };
151
+ // Classic Macintosh System 7 style - monochrome elegance
152
+ export const classicMacTheme = {
153
+ name: 'classic-mac',
154
+ displayName: 'Classic Mac',
155
+ colors: {
156
+ primary: 'white',
157
+ secondary: 'white',
158
+ accent: 'white',
159
+ muted: 'gray',
160
+ border: 'white',
161
+ borderActive: 'white',
162
+ statusInbox: 'white',
163
+ statusNext: 'white',
164
+ statusWaiting: 'gray',
165
+ statusSomeday: 'gray',
166
+ statusDone: 'gray',
167
+ text: 'white',
168
+ textMuted: 'gray',
169
+ textSelected: 'black',
170
+ textHighlight: 'white',
171
+ fnKeyLabel: 'black',
172
+ fnKeyText: 'white',
173
+ },
174
+ borders: {
175
+ main: 'single',
176
+ modal: 'round',
177
+ list: 'single',
178
+ },
179
+ style: {
180
+ selectedPrefix: '☛ ',
181
+ unselectedPrefix: ' ',
182
+ tabActiveInverse: true,
183
+ tabBrackets: ['', ''],
184
+ headerUppercase: false,
185
+ showFunctionKeys: false,
186
+ loadingChars: ['◼', '◻'],
187
+ },
188
+ };
189
+ // Apple II green phosphor monitor
190
+ export const appleIITheme = {
191
+ name: 'apple-ii',
192
+ displayName: 'Apple ][',
193
+ colors: {
194
+ primary: '#00ff00',
195
+ secondary: '#00ff00',
196
+ accent: '#00ff00',
197
+ muted: '#008000',
198
+ border: '#00ff00',
199
+ borderActive: '#00ff00',
200
+ statusInbox: '#00ff00',
201
+ statusNext: '#00ff00',
202
+ statusWaiting: '#008000',
203
+ statusSomeday: '#008000',
204
+ statusDone: '#004000',
205
+ text: '#00ff00',
206
+ textMuted: '#008000',
207
+ textSelected: '#00ff00',
208
+ textHighlight: '#00ff00',
209
+ fnKeyLabel: '#004000',
210
+ fnKeyText: '#00ff00',
211
+ },
212
+ borders: {
213
+ main: 'single',
214
+ modal: 'single',
215
+ list: 'single',
216
+ },
217
+ style: {
218
+ selectedPrefix: '] ',
219
+ unselectedPrefix: ' ',
220
+ tabActiveInverse: true,
221
+ tabBrackets: ['[', ']'],
222
+ headerUppercase: true,
223
+ showFunctionKeys: false,
224
+ loadingChars: ['▓', '░'],
225
+ },
226
+ };
227
+ // Commodore 64 - iconic blue and light blue
228
+ export const commodore64Theme = {
229
+ name: 'commodore-64',
230
+ displayName: 'Commodore 64',
231
+ colors: {
232
+ primary: '#7869c4',
233
+ secondary: '#9f9fff',
234
+ accent: '#ffffff',
235
+ muted: '#6c5eb5',
236
+ border: '#7869c4',
237
+ borderActive: '#9f9fff',
238
+ background: '#40318d',
239
+ statusInbox: '#9f9fff',
240
+ statusNext: '#7fff7f',
241
+ statusWaiting: '#ffff7f',
242
+ statusSomeday: '#7f7fff',
243
+ statusDone: '#6c5eb5',
244
+ text: '#9f9fff',
245
+ textMuted: '#6c5eb5',
246
+ textSelected: '#ffffff',
247
+ textHighlight: '#9f9fff',
248
+ fnKeyLabel: '#40318d',
249
+ fnKeyText: '#9f9fff',
250
+ },
251
+ borders: {
252
+ main: 'single',
253
+ modal: 'single',
254
+ list: 'single',
255
+ },
256
+ style: {
257
+ selectedPrefix: '▶ ',
258
+ unselectedPrefix: ' ',
259
+ tabActiveInverse: true,
260
+ tabBrackets: ['<', '>'],
261
+ headerUppercase: true,
262
+ showFunctionKeys: true,
263
+ loadingChars: ['●', '○'],
264
+ },
265
+ };
266
+ // Amiga Workbench - orange, blue, white, black
267
+ export const amigaWorkbenchTheme = {
268
+ name: 'amiga-workbench',
269
+ displayName: 'Amiga Workbench',
270
+ colors: {
271
+ primary: '#ff8800',
272
+ secondary: '#0055aa',
273
+ accent: '#ffffff',
274
+ muted: '#0055aa',
275
+ border: '#ff8800',
276
+ borderActive: '#ffffff',
277
+ background: '#0055aa',
278
+ statusInbox: '#ffffff',
279
+ statusNext: '#ff8800',
280
+ statusWaiting: '#ffcc00',
281
+ statusSomeday: '#0088ff',
282
+ statusDone: '#555555',
283
+ text: '#ff8800',
284
+ textMuted: '#0088ff',
285
+ textSelected: '#ffffff',
286
+ textHighlight: '#ff8800',
287
+ fnKeyLabel: '#0055aa',
288
+ fnKeyText: '#ff8800',
289
+ },
290
+ borders: {
291
+ main: 'double',
292
+ modal: 'single',
293
+ list: 'single',
294
+ },
295
+ style: {
296
+ selectedPrefix: '▸ ',
297
+ unselectedPrefix: ' ',
298
+ tabActiveInverse: true,
299
+ tabBrackets: ['【', '】'],
300
+ headerUppercase: false,
301
+ showFunctionKeys: true,
302
+ loadingChars: ['▰', '▱'],
303
+ },
304
+ };
305
+ // Matrix - digital rain aesthetic
306
+ export const matrixTheme = {
307
+ name: 'matrix',
308
+ displayName: 'Matrix',
309
+ colors: {
310
+ primary: '#00ff00',
311
+ secondary: '#00cc00',
312
+ accent: '#ffffff',
313
+ muted: '#003300',
314
+ border: '#00ff00',
315
+ borderActive: '#00ff00',
316
+ statusInbox: '#00ff00',
317
+ statusNext: '#00ff00',
318
+ statusWaiting: '#00cc00',
319
+ statusSomeday: '#009900',
320
+ statusDone: '#003300',
321
+ text: '#00ff00',
322
+ textMuted: '#006600',
323
+ textSelected: '#ffffff',
324
+ textHighlight: '#00ff00',
325
+ fnKeyLabel: '#003300',
326
+ fnKeyText: '#00ff00',
327
+ },
328
+ borders: {
329
+ main: 'single',
330
+ modal: 'single',
331
+ list: 'single',
332
+ },
333
+ style: {
334
+ selectedPrefix: '⟩ ',
335
+ unselectedPrefix: ' ',
336
+ tabActiveInverse: false,
337
+ tabBrackets: ['⟨', '⟩'],
338
+ headerUppercase: false,
339
+ showFunctionKeys: false,
340
+ loadingChars: ['█', '▁'],
341
+ },
342
+ };
343
+ // Amber CRT monitor
344
+ export const amberCrtTheme = {
345
+ name: 'amber-crt',
346
+ displayName: 'Amber CRT',
347
+ colors: {
348
+ primary: '#ffb000',
349
+ secondary: '#ffb000',
350
+ accent: '#ffd000',
351
+ muted: '#805800',
352
+ border: '#ffb000',
353
+ borderActive: '#ffd000',
354
+ statusInbox: '#ffd000',
355
+ statusNext: '#ffb000',
356
+ statusWaiting: '#cc8800',
357
+ statusSomeday: '#996600',
358
+ statusDone: '#664400',
359
+ text: '#ffb000',
360
+ textMuted: '#996600',
361
+ textSelected: '#ffd000',
362
+ textHighlight: '#ffb000',
363
+ fnKeyLabel: '#664400',
364
+ fnKeyText: '#ffb000',
365
+ },
366
+ borders: {
367
+ main: 'single',
368
+ modal: 'single',
369
+ list: 'single',
370
+ },
371
+ style: {
372
+ selectedPrefix: '→ ',
373
+ unselectedPrefix: ' ',
374
+ tabActiveInverse: true,
375
+ tabBrackets: ['(', ')'],
376
+ headerUppercase: true,
377
+ showFunctionKeys: false,
378
+ loadingChars: ['▮', '▯'],
379
+ },
380
+ };
381
+ // Phosphor CRT with glow effect colors
382
+ export const phosphorTheme = {
383
+ name: 'phosphor',
384
+ displayName: 'Phosphor',
385
+ colors: {
386
+ primary: '#33ff33',
387
+ secondary: '#66ff66',
388
+ accent: '#99ff99',
389
+ muted: '#116611',
390
+ border: '#33ff33',
391
+ borderActive: '#66ff66',
392
+ statusInbox: '#66ff66',
393
+ statusNext: '#33ff33',
394
+ statusWaiting: '#99ff33',
395
+ statusSomeday: '#33ff99',
396
+ statusDone: '#116611',
397
+ text: '#33ff33',
398
+ textMuted: '#228822',
399
+ textSelected: '#99ff99',
400
+ textHighlight: '#66ff66',
401
+ fnKeyLabel: '#116611',
402
+ fnKeyText: '#33ff33',
403
+ },
404
+ borders: {
405
+ main: 'round',
406
+ modal: 'round',
407
+ list: 'single',
408
+ },
409
+ style: {
410
+ selectedPrefix: '◈ ',
411
+ unselectedPrefix: ' ',
412
+ tabActiveInverse: true,
413
+ tabBrackets: ['', ''],
414
+ headerUppercase: false,
415
+ showFunctionKeys: false,
416
+ loadingChars: ['◉', '◎'],
417
+ },
418
+ };
419
+ // Solarized Dark - eye-friendly classic
420
+ export const solarizedDarkTheme = {
421
+ name: 'solarized-dark',
422
+ displayName: 'Solarized Dark',
423
+ colors: {
424
+ primary: '#268bd2',
425
+ secondary: '#2aa198',
426
+ accent: '#b58900',
427
+ muted: '#586e75',
428
+ border: '#586e75',
429
+ borderActive: '#268bd2',
430
+ background: '#002b36',
431
+ statusInbox: '#268bd2',
432
+ statusNext: '#859900',
433
+ statusWaiting: '#b58900',
434
+ statusSomeday: '#6c71c4',
435
+ statusDone: '#586e75',
436
+ text: '#839496',
437
+ textMuted: '#586e75',
438
+ textSelected: '#93a1a1',
439
+ textHighlight: '#268bd2',
440
+ fnKeyLabel: '#073642',
441
+ fnKeyText: '#839496',
442
+ },
443
+ borders: {
444
+ main: 'round',
445
+ modal: 'round',
446
+ list: 'single',
447
+ },
448
+ style: {
449
+ selectedPrefix: '• ',
450
+ unselectedPrefix: ' ',
451
+ tabActiveInverse: true,
452
+ tabBrackets: ['', ''],
453
+ headerUppercase: false,
454
+ showFunctionKeys: false,
455
+ loadingChars: ['●', '○'],
456
+ },
457
+ };
458
+ // Solarized Light
459
+ export const solarizedLightTheme = {
460
+ name: 'solarized-light',
461
+ displayName: 'Solarized Light',
462
+ colors: {
463
+ primary: '#268bd2',
464
+ secondary: '#2aa198',
465
+ accent: '#b58900',
466
+ muted: '#93a1a1',
467
+ border: '#93a1a1',
468
+ borderActive: '#268bd2',
469
+ background: '#fdf6e3',
470
+ statusInbox: '#268bd2',
471
+ statusNext: '#859900',
472
+ statusWaiting: '#b58900',
473
+ statusSomeday: '#6c71c4',
474
+ statusDone: '#93a1a1',
475
+ text: '#657b83',
476
+ textMuted: '#93a1a1',
477
+ textSelected: '#586e75',
478
+ textHighlight: '#268bd2',
479
+ fnKeyLabel: '#eee8d5',
480
+ fnKeyText: '#657b83',
481
+ },
482
+ borders: {
483
+ main: 'round',
484
+ modal: 'round',
485
+ list: 'single',
486
+ },
487
+ style: {
488
+ selectedPrefix: '• ',
489
+ unselectedPrefix: ' ',
490
+ tabActiveInverse: true,
491
+ tabBrackets: ['', ''],
492
+ headerUppercase: false,
493
+ showFunctionKeys: false,
494
+ loadingChars: ['●', '○'],
495
+ },
496
+ };
497
+ // Synthwave / Outrun - neon 80s aesthetic
498
+ export const synthwaveTheme = {
499
+ name: 'synthwave',
500
+ displayName: 'Synthwave',
501
+ colors: {
502
+ primary: '#ff00ff',
503
+ secondary: '#00ffff',
504
+ accent: '#ff00aa',
505
+ muted: '#660066',
506
+ border: '#ff00ff',
507
+ borderActive: '#00ffff',
508
+ background: '#1a0a2e',
509
+ statusInbox: '#00ffff',
510
+ statusNext: '#ff00ff',
511
+ statusWaiting: '#ffff00',
512
+ statusSomeday: '#ff6600',
513
+ statusDone: '#660066',
514
+ text: '#ff00ff',
515
+ textMuted: '#9933ff',
516
+ textSelected: '#00ffff',
517
+ textHighlight: '#ff00ff',
518
+ fnKeyLabel: '#330033',
519
+ fnKeyText: '#00ffff',
520
+ },
521
+ borders: {
522
+ main: 'double',
523
+ modal: 'double',
524
+ list: 'single',
525
+ },
526
+ style: {
527
+ selectedPrefix: '◆ ',
528
+ unselectedPrefix: ' ',
529
+ tabActiveInverse: true,
530
+ tabBrackets: ['「', '」'],
531
+ headerUppercase: false,
532
+ showFunctionKeys: true,
533
+ loadingChars: ['◢', '◣'],
534
+ },
535
+ };
536
+ // Paper - light minimal theme
537
+ export const paperTheme = {
538
+ name: 'paper',
539
+ displayName: 'Paper',
540
+ colors: {
541
+ primary: '#333333',
542
+ secondary: '#555555',
543
+ accent: '#0066cc',
544
+ muted: '#999999',
545
+ border: '#cccccc',
546
+ borderActive: '#333333',
547
+ background: '#ffffff',
548
+ statusInbox: '#0066cc',
549
+ statusNext: '#009933',
550
+ statusWaiting: '#cc6600',
551
+ statusSomeday: '#666699',
552
+ statusDone: '#999999',
553
+ text: '#333333',
554
+ textMuted: '#999999',
555
+ textSelected: '#000000',
556
+ textHighlight: '#0066cc',
557
+ fnKeyLabel: '#eeeeee',
558
+ fnKeyText: '#333333',
559
+ },
560
+ borders: {
561
+ main: 'single',
562
+ modal: 'round',
563
+ list: 'single',
564
+ },
565
+ style: {
566
+ selectedPrefix: '▸ ',
567
+ unselectedPrefix: ' ',
568
+ tabActiveInverse: false,
569
+ tabBrackets: ['', ''],
570
+ headerUppercase: false,
571
+ showFunctionKeys: false,
572
+ loadingChars: ['■', '□'],
573
+ },
574
+ };
575
+ // Coffee - warm brown tones
576
+ export const coffeeTheme = {
577
+ name: 'coffee',
578
+ displayName: 'Coffee',
579
+ colors: {
580
+ primary: '#d4a574',
581
+ secondary: '#b8956e',
582
+ accent: '#f5deb3',
583
+ muted: '#6b4423',
584
+ border: '#8b6914',
585
+ borderActive: '#d4a574',
586
+ background: '#2d1810',
587
+ statusInbox: '#d4a574',
588
+ statusNext: '#b8956e',
589
+ statusWaiting: '#daa520',
590
+ statusSomeday: '#a0522d',
591
+ statusDone: '#6b4423',
592
+ text: '#d4a574',
593
+ textMuted: '#8b6914',
594
+ textSelected: '#f5deb3',
595
+ textHighlight: '#d4a574',
596
+ fnKeyLabel: '#3d2817',
597
+ fnKeyText: '#d4a574',
598
+ },
599
+ borders: {
600
+ main: 'round',
601
+ modal: 'round',
602
+ list: 'single',
603
+ },
604
+ style: {
605
+ selectedPrefix: '❯ ',
606
+ unselectedPrefix: ' ',
607
+ tabActiveInverse: true,
608
+ tabBrackets: ['', ''],
609
+ headerUppercase: false,
610
+ showFunctionKeys: false,
611
+ loadingChars: ['☕', '○'],
612
+ },
613
+ };
151
614
  export const themes = {
152
615
  'modern': modernTheme,
153
616
  'norton-commander': nortonCommanderTheme,
154
617
  'dos-prompt': dosPromptTheme,
155
618
  'turbo-pascal': turboPascalTheme,
619
+ 'classic-mac': classicMacTheme,
620
+ 'apple-ii': appleIITheme,
621
+ 'commodore-64': commodore64Theme,
622
+ 'amiga-workbench': amigaWorkbenchTheme,
623
+ 'matrix': matrixTheme,
624
+ 'amber-crt': amberCrtTheme,
625
+ 'phosphor': phosphorTheme,
626
+ 'solarized-dark': solarizedDarkTheme,
627
+ 'solarized-light': solarizedLightTheme,
628
+ 'synthwave': synthwaveTheme,
629
+ 'paper': paperTheme,
630
+ 'coffee': coffeeTheme,
156
631
  };
157
- export const VALID_THEMES = ['modern', 'norton-commander', 'dos-prompt', 'turbo-pascal'];
632
+ export const VALID_THEMES = [
633
+ 'modern',
634
+ 'norton-commander',
635
+ 'dos-prompt',
636
+ 'turbo-pascal',
637
+ 'classic-mac',
638
+ 'apple-ii',
639
+ 'commodore-64',
640
+ 'amiga-workbench',
641
+ 'matrix',
642
+ 'amber-crt',
643
+ 'phosphor',
644
+ 'solarized-dark',
645
+ 'solarized-light',
646
+ 'synthwave',
647
+ 'paper',
648
+ 'coffee',
649
+ ];
158
650
  export function getTheme(name) {
159
651
  return themes[name] || modernTheme;
160
652
  }
@@ -1,4 +1,4 @@
1
- export type ThemeName = 'modern' | 'norton-commander' | 'dos-prompt' | 'turbo-pascal';
1
+ export type ThemeName = 'modern' | 'norton-commander' | 'dos-prompt' | 'turbo-pascal' | 'classic-mac' | 'apple-ii' | 'commodore-64' | 'amiga-workbench' | 'matrix' | 'amber-crt' | 'phosphor' | 'solarized-dark' | 'solarized-light' | 'synthwave' | 'paper' | 'coffee';
2
2
  export type BorderStyleType = 'single' | 'double' | 'round' | 'bold' | 'singleDouble' | 'doubleSingle' | 'classic';
3
3
  export interface ThemeColors {
4
4
  primary: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "floq",
3
- "version": "0.0.1",
3
+ "version": "0.2.0",
4
4
  "description": "Floq - Getting Things Done Task Manager with MS-DOS style themes",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,6 +37,7 @@
37
37
  },
38
38
  "homepage": "https://github.com/polidog/gtd-cli#readme",
39
39
  "dependencies": {
40
+ "@libsql/client": "^0.17.0",
40
41
  "better-sqlite3": "^11.7.0",
41
42
  "commander": "^13.1.0",
42
43
  "drizzle-orm": "^0.39.1",