icoa-cli 1.5.1 → 1.5.2

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 (2) hide show
  1. package/dist/index.js +30 -23
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -16,31 +16,38 @@ import { getConfig, saveConfig } from './lib/config.js';
16
16
  import { startRepl } from './repl.js';
17
17
  import { checkTerminal } from './lib/terminal.js';
18
18
  import { setTerminalTheme } from './lib/theme.js';
19
- // Banner: each line between ║ = exactly 58 visible chars
19
+ // Banner: padded programmatically for perfect alignment
20
+ const W = 58; // inner width between ║ ║
21
+ function pad(text, visible) {
22
+ return text + ' '.repeat(Math.max(0, W - visible));
23
+ }
20
24
  const B = chalk.cyan('║');
25
+ const TOP = chalk.cyan('╔' + '═'.repeat(W) + '╗');
26
+ const BOT = chalk.cyan('╚' + '═'.repeat(W) + '╝');
27
+ const EMPTY = B + ' '.repeat(W) + B;
21
28
  const BANNER = `
22
- ${chalk.cyan('╔══════════════════════════════════════════════════════════╗')}
23
- ${B} ${B}
24
- ${B} ${chalk.bold.white('██╗ ██████╗ ██████╗ █████╗')} ${B}
25
- ${B} ${chalk.bold.white('██║██╔════╝██╔═══██╗██╔══██╗')} ${B}
26
- ${B} ${chalk.bold.white('██║██║ ██║ ██║███████║')} ${B}
27
- ${B} ${chalk.bold.white('██║██║ ██║ ██║██╔══██║')} ${B}
28
- ${B} ${chalk.bold.white('██║╚██████╗╚██████╔╝██║ ██║')} ${B}
29
- ${B} ${chalk.bold.white('╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝')} ${B}
30
- ${B} ${B}
31
- ${B} ${chalk.yellow('International Cyber Olympiad in AI 2026')} ${B}
32
- ${B} ${chalk.bold.magenta("The World's First AI Security Olympiad")} ${B}
33
- ${B} ${B}
34
- ${B} ${chalk.green.bold('AI4CTF')} ${chalk.gray('AI as your teammate')} ${B}
35
- ${B} ${chalk.red.bold('CTF4AI')} ${chalk.gray('Hack & evaluate AI systems')} ${B}
36
- ${B} ${chalk.bold.white('AI is your ally. AI is your target.')} ${B}
37
- ${B} ${B}
38
- ${B} ${chalk.white('Sydney, Australia')} ${chalk.gray('Jun 27 - Jul 2, 2026')} ${B}
39
- ${B} ${chalk.cyan.underline('https://icoa2026.au')} ${B}
40
- ${B} ${B}
41
- ${B} ${chalk.gray('CLI-Native Competition Terminal v1.5.1')} ${B}
42
- ${B} ${B}
43
- ${chalk.cyan('╚══════════════════════════════════════════════════════════╝')}
29
+ ${TOP}
30
+ ${EMPTY}
31
+ ${B}${pad(' ' + chalk.bold.white('██╗ ██████╗ ██████╗ █████╗'), 31)}${B}
32
+ ${B}${pad(' ' + chalk.bold.white('██║██╔════╝██╔═══██╗██╔══██╗'), 32)}${B}
33
+ ${B}${pad(' ' + chalk.bold.white('██║██║ ██║ ██║███████║'), 32)}${B}
34
+ ${B}${pad(' ' + chalk.bold.white('██║██║ ██║ ██║██╔══██║'), 32)}${B}
35
+ ${B}${pad(' ' + chalk.bold.white('██║╚██████╗╚██████╔╝██║ ██║'), 32)}${B}
36
+ ${B}${pad(' ' + chalk.bold.white('╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝'), 33)}${B}
37
+ ${EMPTY}
38
+ ${B}${pad(' ' + chalk.yellow('International Cyber Olympiad in AI 2026'), 42)}${B}
39
+ ${B}${pad(' ' + chalk.bold.magenta("The World's First AI Security Olympiad"), 41)}${B}
40
+ ${EMPTY}
41
+ ${B}${pad(' ' + chalk.green.bold('AI4CTF') + ' ' + chalk.gray('AI as your teammate'), 29)}${B}
42
+ ${B}${pad(' ' + chalk.red.bold('CTF4AI') + ' ' + chalk.gray('Hack & evaluate AI systems'), 36)}${B}
43
+ ${B}${pad(' ' + chalk.bold.white('AI is your ally. AI is your target.'), 38)}${B}
44
+ ${EMPTY}
45
+ ${B}${pad(' ' + chalk.white('Sydney, Australia') + ' ' + chalk.gray('Jun 27 - Jul 2, 2026'), 42)}${B}
46
+ ${B}${pad(' ' + chalk.cyan.underline('https://icoa2026.au'), 22)}${B}
47
+ ${EMPTY}
48
+ ${B}${pad(' ' + chalk.gray('CLI-Native Competition Terminal v1.5.2'), 42)}${B}
49
+ ${EMPTY}
50
+ ${BOT}
44
51
  `;
45
52
  // Global error handlers
46
53
  process.on('uncaughtException', (err) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icoa-cli",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "ICOA CLI — The world's first CLI-native CTF competition terminal",
5
5
  "type": "module",
6
6
  "bin": {