claude-cli-advanced-starter-pack 1.0.15 → 1.0.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-cli-advanced-starter-pack",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Advanced Claude Code CLI toolkit - agents, hooks, skills, MCP servers, phased development, and GitHub integration",
5
5
  "main": "src/index.js",
6
6
  "bin": {
package/src/cli/menu.js CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  import chalk from 'chalk';
6
6
  import inquirer from 'inquirer';
7
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
8
+ import { join, dirname } from 'path';
7
9
  import { runSetup } from '../commands/setup.js';
8
10
  import { runCreate } from '../commands/create.js';
9
11
  import { runList } from '../commands/list.js';
@@ -22,6 +24,55 @@ import { hasTestingConfig } from '../testing/config.js';
22
24
  import { showHelp } from '../commands/help.js';
23
25
  import { hasValidConfig, getVersion, loadTechStack, saveTechStack } from '../utils.js';
24
26
 
27
+ /**
28
+ * Get bypass permissions status from settings.json
29
+ */
30
+ function getBypassPermissionsStatus() {
31
+ const settingsPath = join(process.cwd(), '.claude', 'settings.json');
32
+ if (!existsSync(settingsPath)) {
33
+ return false;
34
+ }
35
+ try {
36
+ const settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
37
+ return settings.permissions?.defaultMode === 'bypassPermissions';
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Toggle bypass permissions in settings.json
45
+ */
46
+ function toggleBypassPermissions() {
47
+ const settingsPath = join(process.cwd(), '.claude', 'settings.json');
48
+ let settings = {};
49
+
50
+ if (existsSync(settingsPath)) {
51
+ try {
52
+ settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
53
+ } catch {
54
+ settings = {};
55
+ }
56
+ }
57
+
58
+ if (!settings.permissions) {
59
+ settings.permissions = {};
60
+ }
61
+
62
+ const currentMode = settings.permissions.defaultMode;
63
+ const newMode = currentMode === 'bypassPermissions' ? 'acceptEdits' : 'bypassPermissions';
64
+ settings.permissions.defaultMode = newMode;
65
+
66
+ // Ensure directory exists
67
+ const dir = dirname(settingsPath);
68
+ if (!existsSync(dir)) {
69
+ mkdirSync(dir, { recursive: true });
70
+ }
71
+
72
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf8');
73
+ return newMode === 'bypassPermissions';
74
+ }
75
+
25
76
  /**
26
77
  * ASCII Art Banner
27
78
  */
@@ -40,11 +91,22 @@ const BANNER = `
40
91
  * Show Project Settings submenu
41
92
  */
42
93
  export async function showProjectSettingsMenu() {
94
+ // Get current bypass status for display
95
+ const bypassEnabled = getBypassPermissionsStatus();
96
+ const bypassStatus = bypassEnabled ? chalk.green('ON') : chalk.red('OFF');
97
+ const bypassLine = ` [P] Bypass All Permissions [${bypassStatus}]`;
98
+ const bypassPadding = ' '.repeat(79 - bypassLine.replace(/\x1B\[[0-9;]*m/g, '').length - 1);
99
+
43
100
  console.log('');
44
101
  console.log(chalk.cyan('╔═══════════════════════════════════════════════════════════════════════════════╗'));
45
102
  console.log(chalk.cyan('║') + chalk.bold(' PROJECT CONFIGURATION ') + chalk.cyan('║'));
46
103
  console.log(chalk.cyan('╠═══════════════════════════════════════════════════════════════════════════════╣'));
47
104
  console.log(chalk.cyan('║') + ' ' + chalk.cyan('║'));
105
+ console.log(chalk.cyan('║') + bypassLine + bypassPadding + chalk.cyan('║'));
106
+ console.log(chalk.cyan('║') + chalk.dim(' └─ Toggle auto-approve all tool calls (use with caution) ') + chalk.cyan('║'));
107
+ console.log(chalk.cyan('║') + ' ' + chalk.cyan('║'));
108
+ console.log(chalk.cyan('╠───────────────────────────────────────────────────────────────────────────────╣'));
109
+ console.log(chalk.cyan('║') + ' ' + chalk.cyan('║'));
48
110
  console.log(chalk.cyan('║') + ' [1] GitHub Project Board ' + chalk.cyan('║'));
49
111
  console.log(chalk.cyan('║') + chalk.dim(' └─ Connect to GitHub Projects v2 for issue tracking ') + chalk.cyan('║'));
50
112
  console.log(chalk.cyan('║') + ' ' + chalk.cyan('║'));
@@ -71,6 +133,8 @@ export async function showProjectSettingsMenu() {
71
133
  name: 'settingsAction',
72
134
  message: 'Select a configuration area:',
73
135
  choices: [
136
+ { name: `P. Bypass All Permissions [${bypassEnabled ? 'ON' : 'OFF'}]`, value: 'bypass' },
137
+ new inquirer.Separator(),
74
138
  { name: '1. GitHub Project Board', value: 'github' },
75
139
  { name: '2. Deployment Platforms', value: 'deployment' },
76
140
  { name: '3. Tunnel Services', value: 'tunnel' },
@@ -86,6 +150,22 @@ export async function showProjectSettingsMenu() {
86
150
  return;
87
151
  }
88
152
 
153
+ // Handle bypass toggle
154
+ if (settingsAction === 'bypass') {
155
+ const newState = toggleBypassPermissions();
156
+ console.log('');
157
+ if (newState) {
158
+ console.log(chalk.green(' ✓ Bypass All Permissions: ON'));
159
+ console.log(chalk.yellow(' All tool calls will be auto-approved'));
160
+ } else {
161
+ console.log(chalk.green(' ✓ Bypass All Permissions: OFF'));
162
+ console.log(chalk.dim(' Using Accept Edits mode (prompts for Edit/Write/Bash)'));
163
+ }
164
+ console.log('');
165
+ await showProjectSettingsMenu();
166
+ return;
167
+ }
168
+
89
169
  // Load current tech-stack.json
90
170
  const techStack = loadTechStack();
91
171
 
@@ -1,5 +1,30 @@
1
1
  {
2
2
  "releases": [
3
+ {
4
+ "version": "1.0.16",
5
+ "date": "2026-01-30",
6
+ "summary": "Feature: Bypass All Permissions toggle in Project Settings menu",
7
+ "highlights": [
8
+ "Quick toggle for Bypass All Permissions mode from /menu → Project Settings",
9
+ "Live status display shows current state (ON/OFF)",
10
+ "Toggles between bypassPermissions and acceptEdits modes",
11
+ "Updates .claude/settings.json directly"
12
+ ],
13
+ "newFeatures": {
14
+ "commands": [],
15
+ "agents": [],
16
+ "skills": [],
17
+ "hooks": [],
18
+ "other": [
19
+ {
20
+ "name": "bypass-permissions-toggle",
21
+ "description": "Quick toggle in Project Settings to enable/disable auto-approve mode"
22
+ }
23
+ ]
24
+ },
25
+ "breaking": [],
26
+ "deprecated": []
27
+ },
3
28
  {
4
29
  "version": "1.0.15",
5
30
  "date": "2026-01-30",