sandboxbox 2.2.2 → 2.2.3

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.
package/CLAUDE.md CHANGED
@@ -74,6 +74,13 @@ if (process.platform === 'win32' && isBundled) {
74
74
  - **Configuration**: All machines initialized with `--rootful=false` flag
75
75
  - **Benefits**: No elevated permissions required, better security, true portability
76
76
 
77
+ ### Portable Podman Architecture
78
+ - **Direct Podman Execution**: Uses bundled Podman binary without complex machine management
79
+ - **Rootless Operation**: Always runs in rootless mode for portability
80
+ - **Self-Contained**: All dependencies included in the package
81
+ - **Simple Configuration**: No complex connection or machine setup required
82
+ - **Auto-Download**: Downloads platform-specific binaries automatically
83
+
77
84
  ## Isolation Architecture
78
85
 
79
86
  ### Workflow
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sandboxbox",
3
- "version": "2.2.2",
3
+ "version": "2.2.3",
4
4
  "description": "Portable container runner with Podman - Claude Code & Playwright support. Works on Windows, macOS, and Linux.",
5
5
  "type": "module",
6
6
  "main": "cli.js",
Binary file
package/utils/podman.js CHANGED
@@ -37,43 +37,7 @@ export function checkPodman() {
37
37
  };
38
38
 
39
39
  const version = execSync(`"${podmanPath}" --version`, execOptions).trim();
40
-
41
- // Auto-manage Podman machine on Windows
42
- if (process.platform === 'win32' && isBundled) {
43
- try {
44
- execSync(`"${podmanPath}" info`, { ...execOptions, stdio: 'pipe' });
45
- } catch (infoError) {
46
- if (infoError.message.includes('Cannot connect to Podman')) {
47
- console.log('\n🔧 Podman machine not running, auto-initializing...');
48
-
49
- try {
50
- execSync(`"${podmanPath}" machine start`, {
51
- stdio: 'inherit',
52
- cwd: __dirname,
53
- shell: process.platform === 'win32'
54
- });
55
- console.log('\n✅ Podman machine started successfully in rootless mode!');
56
- } catch (startError) {
57
- if (startError.message.includes('not found') || startError.message.includes('does not exist')) {
58
- execSync(`"${podmanPath}" machine init --rootful=false`, {
59
- stdio: 'inherit',
60
- cwd: __dirname,
61
- shell: process.platform === 'win32'
62
- });
63
- execSync(`"${podmanPath}" machine start`, {
64
- stdio: 'inherit',
65
- cwd: __dirname,
66
- shell: process.platform === 'win32'
67
- });
68
- console.log('\n✅ Podman machine initialized and started in rootless mode!');
69
- } else {
70
- throw startError;
71
- }
72
- }
73
- }
74
- }
75
- }
76
-
40
+ console.log(color('green', `✅ ${version}${isBundled ? ' (bundled)' : ''}`));
77
41
  return podmanPath;
78
42
  } catch (error) {
79
43
  console.log('❌ Podman not found');
@@ -97,23 +61,34 @@ export function checkPodman() {
97
61
  const newVersion = execSync(`"${newPodmanPath}" --version`, execOptions).trim();
98
62
  console.log(`\n✅ ${newVersion} (auto-downloaded)`);
99
63
 
100
- if (process.platform === 'win32') {
64
+ // Auto-setup minimal backend for Windows portable operation
65
+ if (process.platform === 'win32' && isBundled) {
101
66
  try {
102
67
  execSync(`"${newPodmanPath}" info`, { ...execOptions, stdio: 'pipe' });
103
68
  } catch (infoError) {
104
69
  if (infoError.message.includes('Cannot connect to Podman')) {
105
- console.log('\n🔧 Initializing Podman machine in rootless mode...');
70
+ console.log('\n🔧 Setting up portable Podman backend...');
106
71
  try {
107
- execSync(`"${newPodmanPath}" machine init --rootful=false`, { stdio: 'inherit', shell: true });
108
- execSync(`"${newPodmanPath}" machine start`, { stdio: 'inherit', shell: true });
109
- console.log('\n✅ Podman machine initialized and started in rootless mode!');
72
+ execSync(`"${newPodmanPath}" machine init --rootful=false`, {
73
+ stdio: 'inherit',
74
+ shell: true,
75
+ cwd: __dirname
76
+ });
77
+ execSync(`"${newPodmanPath}" machine start`, {
78
+ stdio: 'inherit',
79
+ shell: true,
80
+ cwd: __dirname
81
+ });
82
+ console.log('\n✅ Portable Podman backend ready!');
110
83
  } catch (machineError) {
111
- console.log('\n⚠️ Podman machine initialization will be done on first use');
84
+ console.log('\n⚠️ Podman backend setup needed on first container run');
112
85
  }
113
86
  }
114
87
  }
115
88
  }
116
89
 
90
+ console.log('\n✅ Portable Podman ready');
91
+
117
92
  return newPodmanPath;
118
93
  } catch (downloadError) {
119
94
  console.log(`\n❌ Auto-download failed: ${downloadError.message}`);