@wistantkode/dotfiles 1.6.0 → 1.7.1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.7.1] - 2026-04-05 - [High-Fidelity Restoration]
6
+
7
+ ### Added
8
+
9
+ - **High-Fidelity UI**: Block progress bars (`█`) and CYAN/YELLOW color accents for a premium feel.
10
+ - **Branded Signature**: Integrated an interactive authorship and source information table.
11
+ - **Enhanced Orchestration**: Two-stage directory confirmation and state-aware audit feedback.
12
+ - **Protocol Governance**: Logic refinement for `.protocols/` folder selection with architectural recommendations.
13
+
14
+ ## [1.7.0] - 2026-04-05 - [Interactive Orchestration & Anonymization]
15
+
16
+ ### Added
17
+
18
+ - **Interactive CLI**: Full `node:readline` orchestration for deployment.
19
+ - **Directory Audit**: Preventive scan for existing files in target directory.
20
+ - **Protocol Placement**: Dynamic selection between `.protocols/` (recommended) and root.
21
+ - **Full Anonymization**: Removal of all personal identity and authorship markers.
22
+
5
23
  ## [1.6.0] - 2026-04-05 - [Vellum & Void Integrity]
6
24
 
7
25
  ### Added
package/README.md CHANGED
@@ -1,26 +1,28 @@
1
1
  <div align="center">
2
- <img src="./assets/logo.png" alt="Dotfiles Logo" width="180" />
2
+ <img src="./assets/logo.png" alt="Dotfiles Logo" width="240" />
3
3
 
4
4
  # Precision Dotfiles Infrastructure
5
5
 
6
- [ Automated Orchestration • AI-Driven Logic • Governance Protocols • CLI Distribution ]
6
+ [ Automated Orchestration • AI-Driven Logic • System Governance • CLI Distribution ]
7
7
 
8
8
  <p>
9
+ <a href="https://pnpm.io">
10
+ <img src="https://img.shields.io/badge/pnpm-4AB6FA?style=for-the-badge&logo=pnpm&logoColor=white" alt="pnpm" />
11
+ </a>
12
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">
13
+ <img src="https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black" alt="javascript" />
14
+ </a>
9
15
  <a href="https://www.npmjs.com/package/@wistantkode/dotfiles">
10
- <img src="https://img.shields.io/npm/v/@wistantkode/dotfiles?style=for-the-badge&color=CC0000&logo=npm" alt="npm version" />
16
+ <img src="https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white" alt="npm" />
11
17
  </a>
12
- <a href="https://pnpm.io">
13
- <img src="https://img.shields.io/badge/pnpm-4AB6FA?style=for-the-badge&logo=pnpm&logoColor=white" alt="pnpm" />
18
+ <a href="https://github.com/wistant/dotfiles/actions">
19
+ <img src="https://img.shields.io/badge/GitHub_Actions-2088FF?style=for-the-badge&logo=github-actions&logoColor=white" alt="github actions" />
14
20
  </a>
15
21
  <a href="https://github.com/wistant/dotfiles/releases">
16
- <img src="https://img.shields.io/badge/Release-v1.6.0-blue?style=for-the-badge&logo=github" alt="GitHub release" />
22
+ <img src="https://img.shields.io/badge/Release-v1.7.0-blue?style=for-the-badge&logo=github" alt="GitHub release" />
17
23
  </a>
18
24
  </p>
19
25
 
20
- [![Commit Protocol](https://img.shields.io/badge/Protocol-COMMIT-black?style=flat-square&logo=gitbook&logoColor=white)](./protocols/COMMIT.md)
21
- [![Release Protocol](https://img.shields.io/badge/Protocol-RELEASE-black?style=flat-square&logo=gitbook&logoColor=white)](./protocols/RELEASE.md)
22
- [![Security Protocol](https://img.shields.io/badge/Protocol-SECURITY-black?style=flat-square&logo=gitbook&logoColor=white)](./protocols/SECURITY.md)
23
-
24
26
  </div>
25
27
 
26
28
  ---
@@ -30,16 +32,24 @@
30
32
  This repository is not just a collection of configs; it is a **Living Governance System**. Every interaction between the Architect and the AI is filtered through a rigorous protocol stack.
31
33
 
32
34
  ```mermaid
33
- graph TD
34
- A[Architect Request] --> B{Verification Cycle}
35
- B -- Protocol Audit --> C[Technical Logic]
36
- C -- Separation Mode --> D[Atomic Implementation]
37
- D -- History Guard --> E[Versioned State]
38
- E -- Sync Process --> F[NPM Distribution]
39
- F -- CLI Engine --> G[System Deployment]
40
-
41
- style B fill:#f9f,stroke:#333,stroke-width:2px
42
- style G fill:#00ff,stroke:#fff,stroke-width:2px,color:#fff
35
+ graph LR
36
+ subgraph "Engineering & Governance"
37
+ SE[Software Engineer] --> PR[Protocols & Registry]
38
+ end
39
+
40
+ subgraph "Automation Core"
41
+ PR --> CLI[CLI Orchestrator]
42
+ PR --> SYNC[Sync Engine]
43
+ end
44
+
45
+ subgraph "Deployment Lifecycle"
46
+ CLI --> OS[System Deployment]
47
+ SYNC --> GIT[Git Integrity]
48
+ GIT --> NPM[NPM Distribution]
49
+ end
50
+
51
+ style SE fill:#fff,stroke:#333,stroke-width:2px
52
+ style NPM fill:#000,stroke:#fff,stroke-width:2px,color:#fff
43
53
  ```
44
54
 
45
55
  ### Core Automation Tools
@@ -81,11 +91,11 @@ pnpm dlx @wistantkode/dotfiles
81
91
 
82
92
  ## Contributors
83
93
 
84
- The project is currently orchestrated by its lead architect. New contributions are welcome to expand the baseline.
94
+ The project is currently orchestrated by its lead software engineer. New contributions are welcome to expand the baseline.
85
95
 
86
96
  <p align="left">
87
97
  <a href="https://github.com/wistant">
88
- <img src="https://github.com/wistant.png?size=100" width="100" height="100" alt="wistant" title="Lead Architect"/>
98
+ <img src="https://github.com/wistant.png?size=100" width="50" height="50" alt="wistant" title="Wistant"/>
89
99
  </a>
90
100
  </p>
91
101
 
@@ -93,7 +103,7 @@ The project is currently orchestrated by its lead architect. New contributions a
93
103
 
94
104
  ## Community
95
105
 
96
- See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to join the **clawtributors** and submit PRs.
106
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to join the **contributors** and submit PRs.
97
107
  AI/vibe-coded PRs welcome! 🤖
98
108
 
99
109
  ---
@@ -103,7 +113,3 @@ AI/vibe-coded PRs welcome! 🤖
103
113
  Copyright © 2026 **Wistant**. Distributed under the **Apache License 2.0**.
104
114
 
105
115
  ---
106
-
107
- <div align="center">
108
- <b>Designed for the 0.1% — Engineered by @wistant</b>
109
- </div>
package/cli/cli.mjs CHANGED
@@ -9,6 +9,7 @@
9
9
  import { copyFile, mkdir, readdir, lstat } from 'node:fs/promises';
10
10
  import { join, dirname } from 'node:path';
11
11
  import { fileURLToPath } from 'node:url';
12
+ import { createInterface } from 'node:readline/promises';
12
13
 
13
14
  // ── UI Configuration (256-color) ──────────────────────────────────────
14
15
  const RESET = '\x1b[0m';
@@ -26,13 +27,6 @@ const BLUE = '\x1b[38;5;75m';
26
27
  const __dirname = dirname(fileURLToPath(import.meta.url));
27
28
  const pkgRoot = join(__dirname, '..');
28
29
 
29
- // ── Asset Mapping ─────────────────────────────────────────────────────
30
- const ASSETS = [
31
- { src: 'gitignore', dest: '.gitignore', label: 'Ignore patterns' },
32
- { src: 'LICENSE', dest: 'LICENSE', label: 'License' },
33
- { src: 'protocols', dest: '.protocols', label: 'Governance protocols', isDir: true }
34
- ];
35
-
36
30
  // ── Layout Components ─────────────────────────────────────────────────
37
31
 
38
32
  const _rep = (n, char = ' ') => char.repeat(Math.max(0, n));
@@ -67,17 +61,39 @@ const renderSignature = () => {
67
61
  console.log(` ${DGRAY}┌${_rep(width, '──')}┐${RESET}`);
68
62
 
69
63
  const label = (txt, col) => `${col}${BOLD}${txt}${RESET}`;
70
- const info = (txt) => `${GRAY}${txt}${RESET}`;
71
64
 
72
65
  console.log(` ${DGRAY}│${RESET} ${pad(`${label('REPOSITORY', BLUE)} ${BOLD}https://github.com/wistant/dotfiles${RESET}`, width + 17)} ${DGRAY}│${RESET}`);
73
66
  console.log(` ${DGRAY}├${_rep(width, '──')}┤${RESET}`);
74
67
  console.log(` ${DGRAY}│${RESET} ${pad(`${label('ARCHITECT ', WHITE)} ${BOLD}Wistant${RESET} ${GRAY}(DevOps Architect)${RESET}`, width + 28)} ${DGRAY}│${RESET}`);
75
68
  console.log(` ${DGRAY}│${RESET} ${pad(`${label('GITHUB ', BLUE)} ${GRAY}https://github.com/wistant${RESET}`, width + 26)} ${DGRAY}│${RESET}`);
76
- console.log(` ${DGRAY}│${RESET} ${pad(`${label('X ', CYAN)} ${GRAY}https://x.com/wistant${RESET}`, width + 26)} ${DGRAY}│${RESET}`);
77
- console.log(` ${DGRAY}│${RESET} ${pad(`${label('LINKEDIN ', BLUE)} ${GRAY}https://linkedin.com/in/wistant${RESET}`, width + 26)} ${DGRAY}│${RESET}`);
78
69
  console.log(` ${DGRAY}└${_rep(width, '──')}┘${RESET}\n`);
79
70
  };
80
71
 
72
+ // ── Interactive Logic ─────────────────────────────────────────────────
73
+
74
+ const rl = createInterface({
75
+ input: process.stdin,
76
+ output: process.stdout
77
+ });
78
+
79
+ const ask = async (question, defaultYes = true) => {
80
+ const options = defaultYes ? ' (Y/n)' : ' (y/N)';
81
+ const answer = await rl.question(` ${YELLOW}${BOLD}?${RESET} ${question}${GRAY}${options}${RESET} `);
82
+ if (!answer) return defaultYes;
83
+ return answer.toLowerCase().startsWith('y');
84
+ };
85
+
86
+ async function checkDirectory(dir) {
87
+ try {
88
+ const files = await readdir(dir);
89
+ // Ignore common development/system noise
90
+ const filtered = files.filter(f => !['.git', 'node_modules', '.DS_Store', 'package-lock.json', 'pnpm-lock.yaml'].includes(f));
91
+ return filtered.length > 0;
92
+ } catch {
93
+ return false;
94
+ }
95
+ }
96
+
81
97
  // ── Core Engine ───────────────────────────────────────────────────────
82
98
 
83
99
  async function copyRecursive(src, dest, onFile) {
@@ -100,11 +116,56 @@ async function run() {
100
116
  sep();
101
117
 
102
118
  const targetDir = process.cwd();
103
- console.log(`\n ${GRAY}System Target:${RESET} ${WHITE}${BOLD}${targetDir}${RESET}\n`);
119
+ console.log(`\n ${GRAY}System Target:${RESET} ${WHITE}${BOLD}${targetDir}${RESET}`);
104
120
 
121
+ const proceedTarget = await ask('Initiate deployment in this directory?', true);
122
+ if (!proceedTarget) {
123
+ console.log(`\n ${RED}Deployment cancelled by user.${RESET}\n`);
124
+ rl.close();
125
+ return;
126
+ }
127
+
128
+ // Phase 1: Directory Audit
129
+ const isEmpty = !(await checkDirectory(targetDir));
130
+ if (isEmpty) {
131
+ console.log(` ${GREEN}${BOLD}✔ TARGET DIRECTORY IS CLEAN${RESET}`);
132
+ } else {
133
+ console.log(` ${YELLOW}${BOLD}⚠ TARGET DIRECTORY IS NOT EMPTY${RESET}`);
134
+ const proceed = await ask('Deployment may overwrite existing files. Force installation?', false);
135
+ if (!proceed) {
136
+ console.log(`\n ${RED}Deployment cancelled by user.${RESET}\n`);
137
+ rl.close();
138
+ return;
139
+ }
140
+ }
141
+
142
+ // Phase 2: Protocol Selection
143
+ let protocolDest = '.protocols';
144
+ console.log(`\n ${CYAN}${BOLD}i GOVERNANCE PLACEMENT${RESET}`);
145
+ const useDotDir = await ask('Deploy protocols to .protocols/ folder? (Recommended)', true);
146
+ if (!useDotDir) {
147
+ protocolDest = 'protocols';
148
+ console.log(` ${DIM}Protocols will be deployed to 'protocols/' (Visibility Mode).${RESET}`);
149
+ } else {
150
+ console.log(` ${DIM}Protocols will be deployed to '.protocols/' (Architecture Standard).${RESET}`);
151
+ }
152
+
153
+ const ASSETS = [
154
+ { src: 'gitignore', dest: '.gitignore', label: 'Ignore patterns' },
155
+ { src: 'LICENSE', dest: 'LICENSE', label: 'License' },
156
+ { src: 'protocols', dest: protocolDest, label: 'Governance protocols', isDir: true }
157
+ ];
158
+
105
159
  sep();
106
- console.log(`\n ${BOLD}▶ Initiating deployment sequence...${RESET}\n`);
160
+ console.log(`\n ${BOLD}▶ Ready to initiate deployment sequence...${RESET}`);
161
+ const confirm = await ask('Apply changes to your system?', true);
162
+ if (!confirm) {
163
+ console.log(`\n ${RED}Deployment aborted.${RESET}\n`);
164
+ rl.close();
165
+ return;
166
+ }
107
167
 
168
+ console.log('');
108
169
  await progress('Validating package integrity');
109
170
 
110
171
  const deployedFiles = [];
@@ -145,9 +206,12 @@ async function run() {
145
206
  console.log(` ${DIM}Thank you for choosing high-end architectural standards.${RESET}\n`);
146
207
  sep();
147
208
  console.log('');
209
+
210
+ rl.close();
148
211
  }
149
212
 
150
213
  run().catch(err => {
151
214
  console.error(`\n ${RED}${BOLD}✗ FATAL ERROR${RESET} ${err.message}\n`);
215
+ if (rl) rl.close();
152
216
  process.exit(1);
153
217
  });
package/github.sh CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  # ═══════════════════════════════════════════════════════════════════════
4
4
  # GITHUB SYNC · Integrity Gate · @wistantkode/dotfiles
5
- # ═══════════════════════════════════════════════════════════════════════
5
+ # ════════════════════════════════════════───────────────────────════════
6
6
 
7
- # ── Color palette (256-color) ─────────────────────────────────────────
7
+ # ── Color palette (Minimalist 256-color) ──────────────────────────────
8
8
  RESET='\033[0m'; BOLD='\033[1m'; DIM='\033[2m'
9
- RED='\033[38;5;203m'; GREEN='\033[38;5;114m'; YELLOW='\033[38;5;221m'
10
- CYAN='\033[38;5;117m'; BLUE='\033[38;5;75m'; GRAY='\033[38;5;244m'
11
- DGRAY='\033[38;5;238m'; WHITE='\033[38;5;255m'; ORANGE='\033[38;5;215m'
9
+ WHITE='\033[38;5;255m'; GRAY='\033[38;5;244m'; DGRAY='\033[38;5;238m'
10
+ RED='\033[38;5;203m'; GREEN='\033[38;5;114m'; YELLOW='\033[38;5;221m'
11
+ BLUE='\033[38;5;75m'; CYAN='\033[38;5;117m'
12
12
 
13
13
  # ── Table dimensions ──────────────────────────────────────────────────
14
14
  HASH_W=8 # hash column display width
@@ -16,13 +16,21 @@ MSG_W=52 # message column display width
16
16
 
17
17
  # ── Layout helpers ────────────────────────────────────────────────────
18
18
  _rep() { printf "%${1}s" | tr ' ' "${2}"; }
19
- _sep() { echo -e "${DGRAY}$(_rep 68 '─')${RESET}"; }
20
- _sep2() { echo -e "${DGRAY} $(_rep 64 '·')${RESET}"; }
19
+ _sep() { echo -e "${DGRAY}$(_rep 66 '─')${RESET}"; }
20
+
21
+ _logo() {
22
+ echo -e "\n ${WHITE}██████╗ ██╗████████╗██╗ ██╗██╗ ██╗██████╗ "
23
+ echo -e " ${WHITE}██╔════╝ ██║╚══██╔══╝██║ ██║██║ ██║██╔══██╗"
24
+ echo -e " ${WHITE}██║ ███╗██║ ██║ ███████║██║ ██║██████╔╝"
25
+ echo -e " ${WHITE}██║ ██║██║ ██║ ██╔══██║██║ ██║██╔══██╗"
26
+ echo -e " ${WHITE}╚██████╔╝██║ ██║ ██║ ██║╚██████╔╝██████╔╝"
27
+ echo -e " ${WHITE} ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ${RESET}"
28
+ echo -e "\n ${GRAY}${BOLD}[ GITHUB AUTOMATION SYNC ]${RESET}\n"
29
+ }
21
30
 
22
31
  _header() {
23
- echo -e "${DGRAY} ╭$(_rep $((HASH_W+2)) '─')┬$(_rep $((MSG_W+2)) '─')╮${RESET}"
24
- printf "${DGRAY} │${RESET} ${BOLD}${GRAY}%-${HASH_W}s${RESET} ${DGRAY}│${RESET} ${BOLD}${GRAY}%-${MSG_W}s${RESET} ${DGRAY}│${RESET}\n" "HASH" "COMMIT"
25
- echo -e "${DGRAY} ├$(_rep $((HASH_W+2)) '─')┼$(_rep $((MSG_W+2)) '─')┤${RESET}"
32
+ printf " ${BOLD}${GRAY}%-${HASH_W}s %-${MSG_W}s${RESET}\n" "HASH" "COMMIT MESSAGE"
33
+ _sep
26
34
  }
27
35
 
28
36
  _row() {
@@ -31,23 +39,17 @@ _row() {
31
39
  local raw="$2"
32
40
  [ ${#raw} -gt $((MSG_W-1)) ] && raw="${raw:0:$((MSG_W-3))}..."
33
41
  msg=$(printf "%-${MSG_W}s" "$raw")
34
- printf "${DGRAY} │${RESET} ${CYAN}%s${RESET} ${DGRAY}│${RESET} %s ${DGRAY}│${RESET}\n" "$hash" "$msg"
35
- }
36
-
37
- _footer() {
38
- echo -e "${DGRAY} ╰$(_rep $((HASH_W+2)) '─')┴$(_rep $((MSG_W+2)) '─')╯${RESET}"
42
+ printf " ${BLUE}%s${RESET} ${WHITE}%s${RESET}\n" "$hash" "$msg"
39
43
  }
40
44
 
41
- # ── Progress bar animation ────────────────────────────────────────────
42
45
  _progress() {
43
46
  local label="$1"
44
- local total=28
45
- printf " ${GRAY}[${RESET}"
46
- for ((i=1; i<=total; i++)); do
47
- printf "${CYAN}█${RESET}"
48
- sleep 0.018
47
+ printf " ${GRAY}%-28s ${RESET}" "$label"
48
+ for ((i=1; i<=20; i++)); do
49
+ printf "${WHITE}·${RESET}"
50
+ sleep 0.015
49
51
  done
50
- printf "${GRAY}]${RESET} ${GREEN}${label}${RESET}\n"
52
+ printf " ${GREEN}✔${RESET}\n"
51
53
  }
52
54
 
53
55
  # ── Core utilities ────────────────────────────────────────────────────
@@ -61,7 +63,7 @@ abort() {
61
63
  }
62
64
 
63
65
  ask() {
64
- echo -ne "\n ${YELLOW}${BOLD}?${RESET} $1 ${GRAY}[y/N]${RESET} "
66
+ echo -ne "\n ${WHITE}${BOLD}?${RESET} $1 ${GRAY}(y/N)${RESET} "
65
67
  read -r _r
66
68
  [[ "$_r" =~ ^([yY][eE][sS]|[yY])$ ]]
67
69
  }
@@ -90,19 +92,16 @@ PUSH_TAGS=""
90
92
 
91
93
  case "$CURRENT_BRANCH" in
92
94
  main|master) BLABEL="${RED}${BOLD}⬡ PRODUCTION${RESET}" ;;
93
- dev|develop) BLABEL="${YELLOW}◈ INTEGRATION${RESET}" ;;
94
- feat/*) BLABEL="${GREEN}◈ FEATURE${RESET}" ;;
95
- fix/*) BLABEL="${CYAN}◈ BUGFIX${RESET}" ;;
96
- refactor/*) BLABEL="${BLUE}◈ REFACTOR${RESET}" ;;
97
95
  *) BLABEL="${GRAY}◈ BRANCH${RESET}" ;;
98
96
  esac
99
97
 
100
98
  # ── Phase 1 · Working tree check ─────────────────────────────────────
101
99
  clear
100
+ _logo
101
+ _sep
102
102
  echo ""
103
- echo -e " ${WHITE}${BOLD}◆ GITHUB SYNC${RESET} ${DGRAY}· Integrity Gate · @wistantkode/dotfiles${RESET}"
103
+ echo -e " ${WHITE}${BOLD}◆ INTEGRITY GATE${RESET} ${DGRAY}· Software Engineer${RESET}"
104
104
  echo ""
105
- _sep
106
105
 
107
106
  if ! git diff-index --quiet HEAD -- 2>/dev/null; then
108
107
  echo ""
@@ -113,10 +112,9 @@ if ! git diff-index --quiet HEAD -- 2>/dev/null; then
113
112
  fi
114
113
 
115
114
  # ── Phase 2 · Summary panel ───────────────────────────────────────────
116
- echo ""
117
- printf " ${GRAY}%-14s${RESET} ${CYAN}${BOLD}%s${RESET} %b\n" "Branch" "$CURRENT_BRANCH" "$BLABEL"
118
- printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET} commit(s) ahead of remote\n" "Ahead" "$COMMIT_COUNT"
119
- printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET} to publish\n" "Tags" "$TAG_COUNT"
115
+ printf " ${GRAY}%-12s${RESET} ${WHITE}${BOLD}%s${RESET} %b\n" "Branch" "$CURRENT_BRANCH" "$BLABEL"
116
+ printf " ${GRAY}%-12s${RESET} ${WHITE}%s${RESET} commit(s) ahead\n" "Ahead" "$COMMIT_COUNT"
117
+ printf " ${GRAY}%-12s${RESET} ${WHITE}%s${RESET} to publish\n" "Tags" "$TAG_COUNT"
120
118
  echo ""
121
119
  _sep
122
120
 
@@ -129,7 +127,7 @@ if [ "$COMMIT_COUNT" -gt 0 ]; then
129
127
  m=$(echo "$line" | cut -d' ' -f2-)
130
128
  _row "$h" "$m"
131
129
  done <<< "$COMMITS_RAW"
132
- _footer
130
+ _sep
133
131
  fi
134
132
 
135
133
  # Tags list
@@ -137,70 +135,40 @@ if [ "$TAG_COUNT" -gt 0 ]; then
137
135
  echo ""
138
136
  echo -e " ${GRAY}Unpublished tags:${RESET}"
139
137
  while IFS= read -r tag; do
140
- echo -e " ${GREEN}+${RESET} ${BOLD}$tag${RESET}"
138
+ echo -e " ${GREEN}✔${RESET} ${WHITE}${BOLD}$tag${RESET}"
141
139
  done <<< "$LOCAL_ONLY_TAGS"
140
+ _sep
142
141
  fi
143
142
 
143
+ # ── Phase 3 · Final confirmation ──────────────────────────────────────
144
144
  echo ""
145
- _sep
146
-
147
- # ── Phase 3 · Branch gate ─────────────────────────────────────────────
148
- echo ""
149
- case "$CURRENT_BRANCH" in
150
- main|master)
151
- echo -e " ${RED}${BOLD}⚠ PRODUCTION BRANCH${RESET}"
152
- echo -e " ${DIM}Every push to this branch triggers the public release pipeline.${RESET}"
153
- ask "You are on ${BOLD}${CURRENT_BRANCH}${RESET}. Proceed to final review?" \
154
- || abort "Cancelled by operator."
155
- ;;
156
- dev|develop)
157
- echo -e " ${YELLOW}${BOLD}◈ INTEGRATION BRANCH${RESET}"
158
- ask "Push to ${BOLD}${REMOTE}${RESET}?" || abort "Cancelled by operator."
159
- ;;
160
- *)
161
- ask "Push ${BOLD}${CURRENT_BRANCH}${RESET} to remote?" || abort "Cancelled by operator."
162
- ;;
163
- esac
164
-
165
- # ── Phase 4 · Final confirmation ──────────────────────────────────────
166
- echo ""
167
- _sep
145
+ SUMMARY="${WHITE}${BOLD}${COMMIT_COUNT}${RESET} commit(s)"
146
+ [ "$TAG_COUNT" -gt 0 ] && SUMMARY+=" ${DGRAY}+${RESET} ${WHITE}${BOLD}${TAG_COUNT}${RESET} tag(s)"
147
+ printf " ${GRAY}%-12s${RESET} %b\n" "Will push" "$SUMMARY"
148
+ printf " ${GRAY}%-12s${RESET} ${BLUE}%s${RESET}\n" "Target" "$REMOTE"
168
149
  echo ""
169
- SUMMARY="${BOLD}${COMMIT_COUNT}${RESET} commit(s)"
170
- [ "$TAG_COUNT" -gt 0 ] && SUMMARY+=" ${DGRAY}+${RESET} ${BOLD}${TAG_COUNT}${RESET} tag(s)"
171
- printf " ${GRAY}%-14s${RESET} %b\n" "Will push" "$SUMMARY"
172
- printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET}\n" "Target" "$REMOTE"
173
- echo ""
174
- echo -e " ${DIM}SSH key passphrase will be required by git if not cached.${RESET}"
175
150
 
176
- ask "${BOLD}Confirm push?${RESET} ${GRAY}This cannot be undone.${RESET}" \
177
- || abort "Final gate: push cancelled."
151
+ ask "Confirm push to remote?" || abort "Gate: push cancelled."
178
152
 
179
- # ── Phase 5 · Remote projection ───────────────────────────────────────
153
+ # ── Phase 4 · Projection ──────────────────────────────────────────────
180
154
  echo ""
181
155
  _sep
182
156
  echo ""
183
- _progress "Initializing..."
184
- _progress "Verifying integrity state..."
185
- _progress "Ready — handing off to git."
186
- echo ""
187
- echo -e " ${DGRAY}$(_rep 64 '─')${RESET}"
188
- echo -e " ${BOLD}▶ git push${RESET} ${DGRAY}(passphrase prompt appears below if required)${RESET}"
189
- echo -e " ${DGRAY}$(_rep 64 '─')${RESET}"
157
+ _progress "Initializing sync"
158
+ _progress "Verifying state"
159
+ _progress "Final handoff"
190
160
  echo ""
191
161
 
192
162
  if git push --quiet $PUSH_TAGS; then
193
163
  echo ""
194
164
  _sep
195
165
  echo ""
196
- echo -e " ${GREEN}${BOLD}✔ SUCCESS${RESET} Infrastructure synchronized with ${BOLD}${REMOTE}${RESET}."
197
- [ "$TAG_COUNT" -gt 0 ] && \
198
- echo -e " ${GRAY}Tags published. GitHub Actions pipeline may now be triggered.${RESET}"
166
+ echo -e " ${GREEN}${BOLD}✔ SUCCESS${RESET} Infrastructure synchronized."
199
167
  echo ""
200
168
  _sep
201
169
  else
202
170
  echo ""
203
- abort "Git push failed. Check your SSH key or network connectivity."
171
+ abort "Git push failed. Check connectivity."
204
172
  fi
205
173
 
206
174
  echo ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wistantkode/dotfiles",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "High-End Linux Infrastructure & AI-Driven Orchestration Protocols",
5
5
  "main": "index.js",
6
6
  "type": "module",