icoa-cli 2.0.1 → 2.0.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.
@@ -382,7 +382,19 @@ async function installAll() {
382
382
  console.log(chalk.gray(' Or: brew link --overwrite python@3.12'));
383
383
  }
384
384
  else if (os === 'linux') {
385
- execSync('sudo apt-get update && sudo apt-get install -y python3.12 python3.12-venv python3.12-dev', { stdio: 'inherit' });
385
+ // Add deadsnakes PPA for older Ubuntu (22.04 etc.)
386
+ try {
387
+ execSync('sudo apt-get install -y software-properties-common', { stdio: 'inherit' });
388
+ execSync('sudo add-apt-repository -y ppa:deadsnakes/ppa', { stdio: 'inherit' });
389
+ execSync('sudo apt-get update', { stdio: 'inherit' });
390
+ }
391
+ catch { /* PPA may already exist or not needed on newer Ubuntu */ }
392
+ execSync('sudo apt-get install -y python3.12 python3.12-venv python3.12-dev', { stdio: 'inherit' });
393
+ // Install pip for 3.12
394
+ try {
395
+ execSync('curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.12', { stdio: 'inherit' });
396
+ }
397
+ catch { /* ok */ }
386
398
  console.log(chalk.green(' ✓ Python 3.12 installed'));
387
399
  console.log(chalk.gray(' Set default: sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1'));
388
400
  }
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ ${LINE}
36
36
  ${chalk.white('Sydney, Australia')} ${chalk.gray('Jun 27 - Jul 2, 2026')}
37
37
  ${chalk.cyan.underline('https://icoa2026.au')}
38
38
 
39
- ${chalk.gray('CLI-Native Competition Terminal v2.0.1')}
39
+ ${chalk.gray('CLI-Native Competition Terminal v2.0.2')}
40
40
 
41
41
  ${LINE}
42
42
  `;
package/dist/repl.js CHANGED
@@ -27,7 +27,7 @@ const BLOCKED_COMMANDS = new Set([
27
27
  'iptables', 'ufw', // firewall
28
28
  ]);
29
29
  const INTERCEPT = '__REPL_NO_EXIT__';
30
- const VERSION = '2.0.1';
30
+ const VERSION = '2.0.2';
31
31
  export async function startRepl(program, resumeMode) {
32
32
  const config = getConfig();
33
33
  const connected = isConnected();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icoa-cli",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "ICOA CLI — The world's first CLI-native CTF competition terminal",
5
5
  "type": "module",
6
6
  "bin": {