@nbtca/prompt 1.0.18 → 1.0.20

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 (43) hide show
  1. package/dist/config/data.d.ts +1 -0
  2. package/dist/config/data.d.ts.map +1 -1
  3. package/dist/config/data.js +2 -4
  4. package/dist/config/data.js.map +1 -1
  5. package/dist/core/logo.d.ts.map +1 -1
  6. package/dist/core/logo.js +14 -104
  7. package/dist/core/logo.js.map +1 -1
  8. package/dist/core/menu.d.ts +1 -1
  9. package/dist/core/menu.d.ts.map +1 -1
  10. package/dist/core/menu.js +48 -23
  11. package/dist/core/menu.js.map +1 -1
  12. package/dist/core/text.d.ts +7 -0
  13. package/dist/core/text.d.ts.map +1 -0
  14. package/dist/core/text.js +43 -0
  15. package/dist/core/text.js.map +1 -0
  16. package/dist/core/ui.d.ts +0 -4
  17. package/dist/core/ui.d.ts.map +1 -1
  18. package/dist/core/ui.js +0 -6
  19. package/dist/core/ui.js.map +1 -1
  20. package/dist/core/vim-keys.d.ts +1 -10
  21. package/dist/core/vim-keys.d.ts.map +1 -1
  22. package/dist/core/vim-keys.js +14 -44
  23. package/dist/core/vim-keys.js.map +1 -1
  24. package/dist/features/calendar.d.ts.map +1 -1
  25. package/dist/features/calendar.js +16 -63
  26. package/dist/features/calendar.js.map +1 -1
  27. package/dist/features/docs.d.ts.map +1 -1
  28. package/dist/features/docs.js +26 -43
  29. package/dist/features/docs.js.map +1 -1
  30. package/dist/features/repair.d.ts +1 -4
  31. package/dist/features/repair.d.ts.map +1 -1
  32. package/dist/features/repair.js +3 -4
  33. package/dist/features/repair.js.map +1 -1
  34. package/dist/features/website.d.ts +3 -0
  35. package/dist/features/website.d.ts.map +1 -1
  36. package/dist/features/website.js +3 -6
  37. package/dist/features/website.js.map +1 -1
  38. package/dist/i18n/index.d.ts +3 -5
  39. package/dist/i18n/index.d.ts.map +1 -1
  40. package/dist/i18n/index.js.map +1 -1
  41. package/dist/i18n/locales/en.json +3 -5
  42. package/dist/i18n/locales/zh.json +3 -5
  43. package/package.json +1 -2
@@ -5,6 +5,7 @@
5
5
  export declare const URLS: {
6
6
  readonly homepage: "https://nbtca.space";
7
7
  readonly github: "https://github.com/nbtca";
8
+ readonly roadmap: "https://github.com/orgs/nbtca/projects/5";
8
9
  readonly docs: "https://docs.nbtca.space";
9
10
  readonly repair: "https://nbtca.space/repair";
10
11
  readonly calendar: "https://ical.nbtca.space";
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,eAAO,MAAM,IAAI;;;;;;;CAYP,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC"}
@@ -18,15 +18,13 @@ function readPackageVersion() {
18
18
  }
19
19
  }
20
20
  export const URLS = {
21
- // 主要链接
22
21
  homepage: 'https://nbtca.space',
23
22
  github: 'https://github.com/nbtca',
23
+ roadmap: 'https://github.com/orgs/nbtca/projects/5',
24
24
  docs: 'https://docs.nbtca.space',
25
25
  repair: 'https://nbtca.space/repair',
26
- // API链接
27
26
  calendar: 'https://ical.nbtca.space',
28
- // 联系方式
29
- email: 'contact@nbtca.space'
27
+ email: 'contact@nbtca.space',
30
28
  };
31
29
  export const APP_INFO = {
32
30
  name: 'Prompt',
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO;IACP,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAE,0BAA0B;IAClC,IAAI,EAAE,0BAA0B;IAChC,MAAM,EAAE,4BAA4B;IAEpC,QAAQ;IACR,QAAQ,EAAE,0BAA0B;IAEpC,OAAO;IACP,KAAK,EAAE,qBAAqB;CACpB,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,kBAAkB,EAAE;IAC7B,WAAW,EAAE,eAAe;IAC5B,eAAe,EAAE,wBAAwB;IACzC,MAAM,EAAE,+BAA+B;IACvC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iCAAiC;CACrC,CAAC"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAI,0BAA0B;IACpC,OAAO,EAAG,0CAA0C;IACpD,IAAI,EAAM,0BAA0B;IACpC,MAAM,EAAI,4BAA4B;IACtC,QAAQ,EAAE,0BAA0B;IACpC,KAAK,EAAK,qBAAqB;CACvB,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,kBAAkB,EAAE;IAC7B,WAAW,EAAE,eAAe;IAC5B,eAAe,EAAE,wBAAwB;IACzC,MAAM,EAAE,+BAA+B;IACvC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iCAAiC;CACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyIH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC/C"}
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoCH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B/C"}
package/dist/core/logo.js CHANGED
@@ -12,7 +12,6 @@ const __dirname = dirname(__filename);
12
12
  * Create blue-toned gradient effect
13
13
  */
14
14
  function createBlueGradient(text) {
15
- // Blue gradient: deep blue -> sky blue -> cyan
16
15
  const blueGradient = gradient([
17
16
  { color: '#1e3a8a', pos: 0 }, // Deep blue
18
17
  { color: '#0ea5e9', pos: 0.5 }, // Sky blue
@@ -21,88 +20,18 @@ function createBlueGradient(text) {
21
20
  return blueGradient(text);
22
21
  }
23
22
  /**
24
- * Convert hex color to RGB
23
+ * Display description text (instant, no animation)
25
24
  */
26
- function hexToRgb(hex) {
27
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
28
- return result
29
- ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]
30
- : [0, 0, 0];
31
- }
32
- /**
33
- * Convert RGB to hex color
34
- */
35
- function rgbToHex(r, g, b) {
36
- return '#' + [r, g, b].map(x => {
37
- const hex = Math.round(x).toString(16);
38
- return hex.length === 1 ? '0' + hex : hex;
39
- }).join('');
40
- }
41
- /**
42
- * Linear interpolation between two colors
43
- */
44
- function interpolateColor(color1, color2, factor) {
45
- const [r1, g1, b1] = hexToRgb(color1);
46
- const [r2, g2, b2] = hexToRgb(color2);
47
- const r = r1 + (r2 - r1) * factor;
48
- const g = g1 + (g2 - g1) * factor;
49
- const b = b1 + (b2 - b1) * factor;
50
- return rgbToHex(r, g, b);
51
- }
52
- /**
53
- * Easing function - smooth in-out effect
54
- */
55
- function easeInOutSine(t) {
56
- return -(Math.cos(Math.PI * t) - 1) / 2;
57
- }
58
- /**
59
- * Display gradient animation effect (optimized - truly smooth animation)
60
- */
61
- async function animateGradient(text, duration = 1200) {
62
- if (!process.stdout.isTTY || process.env['NO_COLOR']) {
63
- console.log(text);
64
- return;
25
+ function printDescription() {
26
+ const tagline = 'To be at the intersection of technology and liberal arts.';
27
+ console.log();
28
+ if (process.env['NO_COLOR']) {
29
+ console.log(tagline);
65
30
  }
66
- const frames = 60; // 60 frames for truly smooth animation
67
- const frameDelay = duration / frames;
68
- // Define color sequence - forms complete blue spectrum cycle
69
- const colorSequence = [
70
- '#1e3a8a', // Deep blue
71
- '#2563eb', // Blue
72
- '#3b82f6', // Bright blue
73
- '#0ea5e9', // Sky blue
74
- '#06b6d4', // Cyan
75
- '#14b8a6', // Teal
76
- '#06b6d4', // Cyan
77
- '#0ea5e9', // Sky blue
78
- '#3b82f6', // Bright blue
79
- '#2563eb', // Blue
80
- '#1e3a8a', // Deep blue
81
- ];
82
- for (let i = 0; i < frames; i++) {
83
- // Use smooth sine easing
84
- const progress = easeInOutSine(i / frames);
85
- // Calculate position in color sequence
86
- const position = progress * (colorSequence.length - 1);
87
- const index1 = Math.floor(position);
88
- const index2 = Math.min(index1 + 1, colorSequence.length - 1);
89
- const localProgress = position - index1;
90
- // Interpolate between adjacent colors, generating three smoothly transitioning colors
91
- const color1 = interpolateColor(colorSequence[index1], colorSequence[index2], localProgress);
92
- const nextIndex1 = Math.min(index2, colorSequence.length - 1);
93
- const nextIndex2 = Math.min(nextIndex1 + 1, colorSequence.length - 1);
94
- const color2 = interpolateColor(colorSequence[nextIndex1], colorSequence[nextIndex2], localProgress);
95
- const nextIndex3 = Math.min(nextIndex2, colorSequence.length - 1);
96
- const nextIndex4 = Math.min(nextIndex3 + 1, colorSequence.length - 1);
97
- const color3 = interpolateColor(colorSequence[nextIndex3], colorSequence[nextIndex4], localProgress);
98
- // Create gradient for current frame
99
- const frameGradient = gradient(color1, color2, color3);
100
- // Clear current line and display new frame
101
- process.stdout.write('\r' + frameGradient(text));
102
- await new Promise(resolve => setTimeout(resolve, frameDelay));
31
+ else {
32
+ console.log(createBlueGradient(tagline));
103
33
  }
104
- // Finally display static blue gradient
105
- process.stdout.write('\r' + createBlueGradient(text) + '\n');
34
+ console.log();
106
35
  }
107
36
  /**
108
37
  * Attempt to read and display logo file
@@ -112,50 +41,31 @@ export async function printLogo() {
112
41
  return;
113
42
  }
114
43
  try {
115
- // Try to read iTerm2 image format logo
116
44
  const logoPath = join(__dirname, '../logo/logo.txt');
117
45
  const logoContent = readFileSync(logoPath, 'utf-8');
118
- // If successfully read and content is valid, display directly
119
46
  if (logoContent && logoContent.length > 100) {
120
47
  console.log(logoContent);
121
- await printDescription();
48
+ printDescription();
122
49
  return;
123
50
  }
124
51
  }
125
- catch (error) {
52
+ catch {
126
53
  // iTerm2 logo read failed, continue trying ASCII logo
127
54
  }
128
- // Fallback: display ASCII art logo
129
55
  try {
130
56
  const asciiLogoPath = join(__dirname, '../logo/ascii-logo.txt');
131
57
  const asciiContent = readFileSync(asciiLogoPath, 'utf-8');
132
- // Display ASCII logo with gradient colors
133
58
  console.log();
134
59
  const lines = asciiContent.split('\n').filter(line => line.trim());
135
60
  lines.forEach(line => {
136
61
  console.log(createBlueGradient(line));
137
62
  });
138
- await printDescription();
63
+ printDescription();
139
64
  }
140
- catch (error) {
141
- // If ASCII logo also fails, display simple text logo
65
+ catch {
142
66
  console.log();
143
67
  console.log(createBlueGradient(' NBTCA'));
144
- await printDescription();
68
+ printDescription();
145
69
  }
146
70
  }
147
- /**
148
- * Display description text (with gradient animation)
149
- */
150
- async function printDescription() {
151
- const tagline = 'To be at the intersection of technology and liberal arts.';
152
- console.log();
153
- if (process.env['NO_COLOR']) {
154
- console.log(tagline);
155
- }
156
- else {
157
- await animateGradient(tagline, 1500);
158
- }
159
- console.log();
160
- }
161
71
  //# sourceMappingURL=logo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC;QAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAK,YAAY;QAC7C,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAG,WAAW;QAC5C,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAK,OAAO;KACzC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,2DAA2D,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,gBAAgB,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Minimalist menu system
3
3
  * Modern @clack/prompts select() with emoji icons and hint text
4
4
  */
5
- export type MenuAction = 'events' | 'repair' | 'docs' | 'website' | 'github' | 'roadmap' | 'about' | 'language';
5
+ export type MenuAction = 'events' | 'repair' | 'docs' | 'links' | 'website' | 'github' | 'roadmap' | 'about' | 'language';
6
6
  /**
7
7
  * Display main menu — loops until user exits via Ctrl+C
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAmBhH;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrE"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAiB1H;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE"}
package/dist/core/menu.js CHANGED
@@ -9,22 +9,21 @@ import { openRepairService } from '../features/repair.js';
9
9
  import { showDocsMenu } from '../features/docs.js';
10
10
  import { openHomepage, openGithub, openRoadmap } from '../features/website.js';
11
11
  import { printDivider, printNewLine, success } from './ui.js';
12
+ import { padEndV } from './text.js';
12
13
  import { APP_INFO, URLS } from '../config/data.js';
13
14
  import { t, getCurrentLanguage, setLanguage, clearTranslationCache } from '../i18n/index.js';
14
15
  /**
15
- * Get main menu options with emoji icons and hint text
16
+ * Get main menu options 6 items
16
17
  */
17
18
  function getMainMenuOptions() {
18
19
  const trans = t();
19
20
  return [
20
- { value: 'events', label: '🗓 ' + trans.menu.events, hint: trans.menu.eventsDesc },
21
- { value: 'repair', label: '🔧 ' + trans.menu.repair, hint: trans.menu.repairDesc },
22
- { value: 'docs', label: '📚 ' + trans.menu.docs, hint: trans.menu.docsDesc },
23
- { value: 'website', label: '🌐 ' + trans.menu.website, hint: trans.menu.websiteDesc },
24
- { value: 'github', label: '🐙 ' + trans.menu.github, hint: trans.menu.githubDesc },
25
- { value: 'roadmap', label: '🗺 ' + trans.menu.roadmap, hint: trans.menu.roadmapDesc },
26
- { value: 'about', label: 'ℹ️ ' + trans.menu.about, hint: trans.menu.aboutDesc },
27
- { value: 'language', label: '🌍 ' + trans.menu.language, hint: trans.menu.languageDesc },
21
+ { value: 'events', label: trans.menu.events, hint: trans.menu.eventsDesc },
22
+ { value: 'repair', label: trans.menu.repair, hint: trans.menu.repairDesc },
23
+ { value: 'docs', label: trans.menu.docs, hint: trans.menu.docsDesc },
24
+ { value: 'links', label: trans.menu.links, hint: trans.menu.linksDesc },
25
+ { value: 'about', label: trans.menu.about, hint: trans.menu.aboutDesc },
26
+ { value: 'language', label: trans.menu.language, hint: trans.menu.languageDesc },
28
27
  ];
29
28
  }
30
29
  /**
@@ -61,6 +60,9 @@ export async function runMenuAction(action) {
61
60
  case 'docs':
62
61
  await showDocsMenu();
63
62
  break;
63
+ case 'links':
64
+ await showLinksMenu();
65
+ break;
64
66
  case 'website':
65
67
  await openHomepage();
66
68
  break;
@@ -78,28 +80,51 @@ export async function runMenuAction(action) {
78
80
  break;
79
81
  }
80
82
  }
83
+ /**
84
+ * Links submenu — website, GitHub, roadmap
85
+ */
86
+ async function showLinksMenu() {
87
+ const trans = t();
88
+ const link = await select({
89
+ message: trans.menu.chooseLink,
90
+ options: [
91
+ { value: 'website', label: trans.menu.website, hint: 'nbtca.space' },
92
+ { value: 'github', label: 'GitHub', hint: 'github.com/nbtca' },
93
+ { value: 'roadmap', label: trans.menu.roadmap, hint: trans.menu.roadmapDesc },
94
+ ],
95
+ });
96
+ if (isCancel(link))
97
+ return;
98
+ switch (link) {
99
+ case 'website':
100
+ await openHomepage();
101
+ break;
102
+ case 'github':
103
+ await openGithub();
104
+ break;
105
+ case 'roadmap':
106
+ await openRoadmap();
107
+ break;
108
+ }
109
+ }
81
110
  /**
82
111
  * Display about information using clack note() box
83
112
  */
84
113
  function showAbout() {
85
114
  const trans = t();
115
+ const pad = 12;
116
+ const row = (label, value) => `${chalk.dim(padEndV(label, pad))}${value}`;
117
+ const link = (label, url) => row(label, chalk.cyan(url));
86
118
  const content = [
87
- `${chalk.dim(trans.about.project.padEnd(12))}${APP_INFO.name}`,
88
- `${chalk.dim(trans.about.version.padEnd(12))}v${APP_INFO.version}`,
89
- `${chalk.dim(trans.about.description.padEnd(12))}${APP_INFO.fullDescription}`,
90
- '',
91
- `${chalk.dim(trans.about.github.padEnd(12))}${chalk.cyan(APP_INFO.repository)}`,
92
- `${chalk.dim(trans.about.website.padEnd(12))}${chalk.cyan(URLS.homepage)}`,
93
- `${chalk.dim(trans.about.email.padEnd(12))}${chalk.cyan(URLS.email)}`,
119
+ row(trans.about.project, APP_INFO.name),
120
+ row(trans.about.version, `v${APP_INFO.version}`),
121
+ row(trans.about.description, APP_INFO.fullDescription),
94
122
  '',
95
- chalk.dim(trans.about.features),
96
- ' ' + trans.about.feature1,
97
- ' ' + trans.about.feature2,
98
- ' ' + trans.about.feature3,
99
- ' ' + trans.about.feature4,
123
+ link(trans.about.github, APP_INFO.repository),
124
+ link(trans.about.website, URLS.homepage),
125
+ link(trans.about.email, URLS.email),
100
126
  '',
101
- `${chalk.dim(trans.about.license.padEnd(12))}MIT License`,
102
- `${chalk.dim(trans.about.author.padEnd(12))}m1ngsama`,
127
+ row(trans.about.license, 'MIT · Author: m1ngsama'),
103
128
  ].join('\n');
104
129
  note(content, trans.about.title);
105
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Total visual width of a string (CJK characters count as 2). */
2
+ export declare function visualWidth(str: string): number;
3
+ /** Pad string to target visual width with trailing spaces. */
4
+ export declare function padEndV(str: string, width: number): string;
5
+ /** Truncate to visual width limit, appending '...' if cut. */
6
+ export declare function truncate(str: string, maxWidth: number): string;
7
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAiBA,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,8DAA8D;AAC9D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9D"}
@@ -0,0 +1,43 @@
1
+ /** Width of a single Unicode character: 2 for CJK/fullwidth, 1 otherwise. */
2
+ function charWidth(ch) {
3
+ const cp = ch.codePointAt(0) ?? 0;
4
+ return ((cp >= 0x1100 && cp <= 0x115F) || // Hangul Jamo
5
+ (cp >= 0x2E80 && cp <= 0x303F) || // CJK Radicals / Kangxi
6
+ (cp >= 0x3040 && cp <= 0x33FF) || // Japanese kana + CJK symbols
7
+ (cp >= 0x3400 && cp <= 0x4DBF) || // CJK Extension A
8
+ (cp >= 0x4E00 && cp <= 0x9FFF) || // CJK Unified Ideographs
9
+ (cp >= 0xAC00 && cp <= 0xD7AF) || // Hangul Syllables
10
+ (cp >= 0xF900 && cp <= 0xFAFF) || // CJK Compatibility Ideographs
11
+ (cp >= 0xFE30 && cp <= 0xFE4F) || // CJK Compatibility Forms
12
+ (cp >= 0xFF00 && cp <= 0xFF60) || // Fullwidth Forms
13
+ (cp >= 0xFFE0 && cp <= 0xFFE6) // Fullwidth Signs
14
+ ) ? 2 : 1;
15
+ }
16
+ /** Total visual width of a string (CJK characters count as 2). */
17
+ export function visualWidth(str) {
18
+ let w = 0;
19
+ for (const ch of str)
20
+ w += charWidth(ch);
21
+ return w;
22
+ }
23
+ /** Pad string to target visual width with trailing spaces. */
24
+ export function padEndV(str, width) {
25
+ const pad = width - visualWidth(str);
26
+ return pad > 0 ? str + ' '.repeat(pad) : str;
27
+ }
28
+ /** Truncate to visual width limit, appending '...' if cut. */
29
+ export function truncate(str, maxWidth) {
30
+ if (visualWidth(str) <= maxWidth)
31
+ return str;
32
+ let w = 0;
33
+ let i = 0;
34
+ for (const ch of str) {
35
+ const cw = charWidth(ch);
36
+ if (w + cw > maxWidth - 3)
37
+ break;
38
+ w += cw;
39
+ i += ch.length;
40
+ }
41
+ return str.slice(0, i) + '...';
42
+ }
43
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,SAAS,SAAS,CAAC,EAAU;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CACL,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,cAAc;QACjD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,wBAAwB;QAC3D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,8BAA8B;QACjE,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,kBAAkB;QACrD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,yBAAyB;QAC5D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,mBAAmB;QACtD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,+BAA+B;QAClE,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,0BAA0B;QAC7D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,kBAAkB;QACrD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAK,kBAAkB;KACtD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,EAAE,IAAI,GAAG;QAAE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,MAAM,GAAG,GAAG,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,QAAgB;IACpD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC;YAAE,MAAM;QACjC,CAAC,IAAI,EAAE,CAAC;QACR,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACjC,CAAC"}
package/dist/core/ui.d.ts CHANGED
@@ -18,10 +18,6 @@ export declare function info(msg: string): void;
18
18
  * Display warning message
19
19
  */
20
20
  export declare function warning(msg: string): void;
21
- /**
22
- * No-op: session framing moved to main.ts intro()
23
- */
24
- export declare function printHeader(_title: string): void;
25
21
  /**
26
22
  * Display divider line
27
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI,CAIpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,0CAIxC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI,CAIpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,0CAIxC"}
package/dist/core/ui.js CHANGED
@@ -28,12 +28,6 @@ export function info(msg) {
28
28
  export function warning(msg) {
29
29
  log.warn(msg);
30
30
  }
31
- /**
32
- * No-op: session framing moved to main.ts intro()
33
- */
34
- export function printHeader(_title) {
35
- // intentional noop — intro() in main.ts owns the header
36
- }
37
31
  /**
38
32
  * Display divider line
39
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,wDAAwD;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,15 +1,6 @@
1
1
  /**
2
2
  * Vim keybindings support
3
- * Intercepts and translates keyboard input for j/k/g/G/q/ESC keys
4
- */
5
- /**
6
- * Enable Vim key mappings for stdin
7
- * Maps: j/k (down/up), g/G (home/end), q (quit), ESC (back)
3
+ * Maps j/k/g/G/q to arrow keys and actions in clack menus.
8
4
  */
9
5
  export declare function enableVimKeys(): void;
10
- /**
11
- * Disable Vim key mappings
12
- * Currently not implemented as we use Vim keys throughout the application
13
- */
14
- export declare function disableVimKeys(): void;
15
6
  //# sourceMappingURL=vim-keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vim-keys.d.ts","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,aAAa,SAoD5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,SAE7B"}
1
+ {"version":3,"file":"vim-keys.d.ts","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAgB,aAAa,IAAI,IAAI,CAgBpC"}
@@ -1,59 +1,29 @@
1
1
  /**
2
2
  * Vim keybindings support
3
- * Intercepts and translates keyboard input for j/k/g/G/q/ESC keys
4
- */
5
- /**
6
- * Enable Vim key mappings for stdin
7
- * Maps: j/k (down/up), g/G (home/end), q (quit), ESC (back)
3
+ * Maps j/k/g/G/q to arrow keys and actions in clack menus.
8
4
  */
5
+ const KEY_MAP = [
6
+ { match: k => k.name === 'j' && !k.ctrl && !k.meta, mapped: { name: 'down' } },
7
+ { match: k => k.name === 'k' && !k.ctrl && !k.meta, mapped: { name: 'up' } },
8
+ { match: k => k.name === 'g' && !k.shift && !k.ctrl && !k.meta, mapped: { name: 'home' } },
9
+ { match: k => k.name === 'g' && !!k.shift && !k.ctrl && !k.meta, mapped: { name: 'end' } },
10
+ { match: k => k.name === 'q' && !k.ctrl && !k.meta, mapped: { name: 'c', ctrl: true } },
11
+ ];
9
12
  export function enableVimKeys() {
10
13
  const stdin = process.stdin;
11
- // Only enable for TTY sessions
12
- if (!stdin.isTTY) {
14
+ if (!stdin.isTTY)
13
15
  return;
14
- }
15
- // Save original input handler
16
16
  const originalEmit = stdin.emit.bind(stdin);
17
- // Override emit method to intercept keyboard events
18
17
  stdin.emit = function (event, ...args) {
19
18
  if (event === 'keypress') {
20
- const [, key] = args;
21
- if (key && key.name) {
22
- // j = down (mapped to down arrow)
23
- if (key.name === 'j' && !key.ctrl && !key.meta) {
24
- return originalEmit('keypress', null, { name: 'down' });
25
- }
26
- // k = up (mapped to up arrow)
27
- if (key.name === 'k' && !key.ctrl && !key.meta) {
28
- return originalEmit('keypress', null, { name: 'up' });
29
- }
30
- // g = jump to top (mapped to home)
31
- if (key.name === 'g' && !key.shift && !key.ctrl && !key.meta) {
32
- return originalEmit('keypress', null, { name: 'home' });
33
- }
34
- // G (Shift+g) = jump to bottom (mapped to end)
35
- if (key.name === 'g' && key.shift) {
36
- return originalEmit('keypress', null, { name: 'end' });
37
- }
38
- // ESC = back/cancel (pass through for menu handling)
39
- // Note: Applications should implement back navigation for ESC
40
- if (key.name === 'escape') {
41
- return originalEmit('keypress', null, { name: 'escape', sequence: '\x1b' });
42
- }
43
- // q = quit (mapped to Ctrl+C for application exit)
44
- if (key.name === 'q' && !key.ctrl && !key.meta) {
45
- return originalEmit('keypress', null, { name: 'c', ctrl: true });
46
- }
19
+ const key = args[1];
20
+ if (key?.name) {
21
+ const mapping = KEY_MAP.find(m => m.match(key));
22
+ if (mapping)
23
+ return originalEmit('keypress', null, mapping.mapped);
47
24
  }
48
25
  }
49
26
  return originalEmit(event, ...args);
50
27
  };
51
28
  }
52
- /**
53
- * Disable Vim key mappings
54
- * Currently not implemented as we use Vim keys throughout the application
55
- */
56
- export function disableVimKeys() {
57
- // Not needed for current implementation
58
- }
59
29
  //# sourceMappingURL=vim-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vim-keys.js","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE5B,+BAA+B;IAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE5C,oDAAoD;IACnD,KAAK,CAAC,IAAY,GAAG,UAAU,KAAa,EAAE,GAAG,IAAW;QAC3D,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAErB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACpB,kCAAkC;gBAClC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAED,8BAA8B;gBAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAED,mCAAmC;gBACnC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC7D,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzD,CAAC;gBAED,qDAAqD;gBACrD,8DAA8D;gBAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBAED,mDAAmD;gBACnD,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,wCAAwC;AAC1C,CAAC"}
1
+ {"version":3,"file":"vim-keys.js","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,OAAO,GAA0E;IACrF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACzF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACvF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;CACnG,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3C,KAAK,CAAC,IAAY,GAAG,UAAU,KAAa,EAAE,GAAG,IAAW;QAC3D,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,GAAG,GAAa,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,IAAI,OAAO;oBAAE,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/features/calendar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAyCpD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAQlE;AAuDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAoDxF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAUnD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAYlD"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/features/calendar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAyCpD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAQlE;AAeD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAqCxF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAUnD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAYlD"}