git-slot-machine 2.3.0 → 2.3.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.
- package/CHANGELOG.md +22 -0
- package/dist/animation/slotMachine.d.ts.map +1 -1
- package/dist/animation/slotMachine.js +47 -44
- package/dist/animation/slotMachine.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/animation/slotMachine.ts +51 -46
- package/src/index.ts +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.3.2] - 2026-03-11
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Skip slot machine animation in non-interactive environments (`CLAUDECODE=1`, `CI=1`)
|
|
12
|
+
- Animation skip is now built into the CLI itself — no hook changes needed
|
|
13
|
+
- Game still plays, balance updates, and API syncs normally
|
|
14
|
+
- Works automatically in all repos on upgrade
|
|
15
|
+
- `--version` flag now reads from `package.json` instead of a hardcoded string
|
|
16
|
+
|
|
17
|
+
## [2.3.1] - 2026-03-11
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- Post-commit hook now suppresses animation frames when running under Claude Code (`CLAUDECODE=1`)
|
|
21
|
+
- Game still plays, balance updates, and API syncs normally
|
|
22
|
+
- Only the final result line is shown, saving LLM context tokens
|
|
23
|
+
- Normal terminal usage is completely unchanged
|
|
24
|
+
|
|
25
|
+
## [2.3.0] - 2025-12-17
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- ???
|
|
29
|
+
|
|
8
30
|
## [2.2.0] - 2025-10-23
|
|
9
31
|
|
|
10
32
|
### Added
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotMachine.d.ts","sourceRoot":"","sources":["../../src/animation/slotMachine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAgED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"slotMachine.d.ts","sourceRoot":"","sources":["../../src/animation/slotMachine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAgED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD1E;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxE"}
|
|
@@ -61,63 +61,66 @@ function drawSlotMachine(chars, spinning, highlightIndices = [], flash = false)
|
|
|
61
61
|
export async function animateSlotMachine(config) {
|
|
62
62
|
const { finalHash, patternResult } = config;
|
|
63
63
|
const highlightIndices = patternResult?.highlightIndices || [];
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
//
|
|
74
|
-
|
|
64
|
+
const isCI = !!process.env.CLAUDECODE || !!process.env.CI;
|
|
65
|
+
const finalChars = finalHash.split('');
|
|
66
|
+
if (!isCI) {
|
|
67
|
+
// Clear screen
|
|
68
|
+
console.clear();
|
|
69
|
+
// Initialize with random characters
|
|
70
|
+
let currentChars = Array(7).fill(0).map(() => getRandomHexChar());
|
|
71
|
+
// Animate spinning
|
|
72
|
+
for (let frame = 0; frame < FRAMES; frame++) {
|
|
73
|
+
// Gradually slow down and settle on final hash
|
|
74
|
+
const progress = frame / FRAMES;
|
|
75
|
+
if (progress < 0.9) {
|
|
76
|
+
// Still spinning - show random
|
|
77
|
+
currentChars = currentChars.map(() => getRandomHexChar());
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Start settling - reveal characters one by one
|
|
81
|
+
const revealIndex = Math.floor((progress - 0.9) / 0.1 * 7);
|
|
82
|
+
for (let i = 0; i < revealIndex; i++) {
|
|
83
|
+
currentChars[i] = finalHash[i];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Redraw
|
|
87
|
+
console.clear();
|
|
88
|
+
drawSlotMachine(currentChars, progress < 0.9);
|
|
89
|
+
// Wait for next frame
|
|
90
|
+
await new Promise(resolve => setTimeout(resolve, ANIMATION_SPEED));
|
|
75
91
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
// Flash 3 times if there are highlighted characters
|
|
93
|
+
if (highlightIndices.length > 0) {
|
|
94
|
+
for (let flashCount = 0; flashCount < 3; flashCount++) {
|
|
95
|
+
console.clear();
|
|
96
|
+
drawSlotMachine(finalChars, false, highlightIndices, true);
|
|
97
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
98
|
+
console.clear();
|
|
99
|
+
drawSlotMachine(finalChars, false, highlightIndices, false);
|
|
100
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
81
101
|
}
|
|
82
102
|
}
|
|
83
|
-
//
|
|
103
|
+
// Steady state
|
|
84
104
|
console.clear();
|
|
85
|
-
drawSlotMachine(currentChars, progress < 0.9);
|
|
86
|
-
// Wait for next frame
|
|
87
|
-
await new Promise(resolve => setTimeout(resolve, ANIMATION_SPEED));
|
|
88
105
|
}
|
|
89
|
-
// Final reveal with flashing
|
|
90
|
-
const finalChars = finalHash.split('');
|
|
91
|
-
// Flash 3 times if there are highlighted characters
|
|
92
|
-
if (highlightIndices.length > 0) {
|
|
93
|
-
for (let flashCount = 0; flashCount < 3; flashCount++) {
|
|
94
|
-
// Flash on
|
|
95
|
-
console.clear();
|
|
96
|
-
drawSlotMachine(finalChars, false, highlightIndices, true);
|
|
97
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
98
|
-
// Flash off
|
|
99
|
-
console.clear();
|
|
100
|
-
drawSlotMachine(finalChars, false, highlightIndices, false);
|
|
101
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// Steady state
|
|
105
|
-
console.clear();
|
|
106
106
|
drawSlotMachine(finalChars, false, highlightIndices, false);
|
|
107
107
|
}
|
|
108
108
|
export async function animateSmallMode(config) {
|
|
109
109
|
const { finalHash, patternResult } = config;
|
|
110
110
|
const highlightIndices = patternResult?.highlightIndices || [];
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
const isCI = !!process.env.CLAUDECODE || !!process.env.CI;
|
|
112
|
+
if (!isCI) {
|
|
113
|
+
// Single line, rapid character flicker
|
|
114
|
+
process.stdout.write(chalk.cyan('🎰 '));
|
|
115
|
+
for (let frame = 0; frame < 20; frame++) {
|
|
116
|
+
const chars = Array(7).fill(0).map(() => getRandomHexChar()).join('');
|
|
117
|
+
clearLine();
|
|
118
|
+
process.stdout.write(chalk.cyan('🎰 ') + chalk.rgb(255, 255, 255)(chars));
|
|
119
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
120
|
+
}
|
|
115
121
|
clearLine();
|
|
116
|
-
process.stdout.write(chalk.cyan('🎰 ') + chalk.rgb(255, 255, 255)(chars));
|
|
117
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
118
122
|
}
|
|
119
123
|
// Final with highlighting - don't add newline, let the caller add result info
|
|
120
|
-
clearLine();
|
|
121
124
|
const display = finalHash.split('').map((char, i) => {
|
|
122
125
|
if (highlightIndices.includes(i)) {
|
|
123
126
|
return chalk.bgRgb(255, 255, 0).rgb(0, 0, 0).bold(char);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotMachine.js","sourceRoot":"","sources":["../../src/animation/slotMachine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slotMachine.js","sourceRoot":"","sources":["../../src/animation/slotMachine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,11 +9,14 @@ import { testCommand } from './commands/test.js';
|
|
|
9
9
|
import { authLoginCommand, authLogoutCommand, authStatusCommand } from './commands/auth.js';
|
|
10
10
|
import { syncCommand } from './commands/sync.js';
|
|
11
11
|
import { configGetCommand, configSetCommand } from './commands/config.js';
|
|
12
|
+
import { createRequire } from 'module';
|
|
13
|
+
const require = createRequire(import.meta.url);
|
|
14
|
+
const { version } = require('../package.json');
|
|
12
15
|
const program = new Command();
|
|
13
16
|
program
|
|
14
17
|
.name('git-slot-machine')
|
|
15
18
|
.description('Git commit hash slot machine')
|
|
16
|
-
.version(
|
|
19
|
+
.version(version, '-v, --version', 'Output the current version');
|
|
17
20
|
program
|
|
18
21
|
.command('play')
|
|
19
22
|
.description('Play the slot machine with a git hash')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAEnE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;KACjD,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;IAC3C,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,4BAA4B;AAC5B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oDAAoD,CAAC;KACjE,QAAQ,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,cAAsB,EAAE,EAAE;IACvC,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,oBAAoB;AACpB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,qBAAqB,CAAC;KAClC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;IACjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC1D,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEL,qDAAqD;AACrD,OAAO;KACJ,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACvC,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,OAAO,EAAE,gDAAgD,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;IAC5B,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACvC,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,OAAO,EAAE,2CAA2C,CAAC;KAC9D,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;IAC3C,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -77,76 +77,81 @@ function drawSlotMachine(chars: string[], spinning: boolean, highlightIndices: n
|
|
|
77
77
|
export async function animateSlotMachine(config: SlotConfig): Promise<void> {
|
|
78
78
|
const { finalHash, patternResult } = config;
|
|
79
79
|
const highlightIndices = patternResult?.highlightIndices || [];
|
|
80
|
+
const isCI = !!process.env.CLAUDECODE || !!process.env.CI;
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
console.clear();
|
|
82
|
+
const finalChars = finalHash.split('');
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
if (!isCI) {
|
|
85
|
+
// Clear screen
|
|
86
|
+
console.clear();
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// Gradually slow down and settle on final hash
|
|
90
|
-
const progress = frame / FRAMES;
|
|
88
|
+
// Initialize with random characters
|
|
89
|
+
let currentChars = Array(7).fill(0).map(() => getRandomHexChar());
|
|
91
90
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Start settling - reveal characters one by one
|
|
97
|
-
const revealIndex = Math.floor((progress - 0.9) / 0.1 * 7);
|
|
98
|
-
for (let i = 0; i < revealIndex; i++) {
|
|
99
|
-
currentChars[i] = finalHash[i];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
91
|
+
// Animate spinning
|
|
92
|
+
for (let frame = 0; frame < FRAMES; frame++) {
|
|
93
|
+
// Gradually slow down and settle on final hash
|
|
94
|
+
const progress = frame / FRAMES;
|
|
102
95
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
96
|
+
if (progress < 0.9) {
|
|
97
|
+
// Still spinning - show random
|
|
98
|
+
currentChars = currentChars.map(() => getRandomHexChar());
|
|
99
|
+
} else {
|
|
100
|
+
// Start settling - reveal characters one by one
|
|
101
|
+
const revealIndex = Math.floor((progress - 0.9) / 0.1 * 7);
|
|
102
|
+
for (let i = 0; i < revealIndex; i++) {
|
|
103
|
+
currentChars[i] = finalHash[i];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
// Redraw
|
|
108
|
+
console.clear();
|
|
109
|
+
drawSlotMachine(currentChars, progress < 0.9);
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
// Wait for next frame
|
|
112
|
+
await new Promise(resolve => setTimeout(resolve, ANIMATION_SPEED));
|
|
113
|
+
}
|
|
113
114
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
115
|
+
// Flash 3 times if there are highlighted characters
|
|
116
|
+
if (highlightIndices.length > 0) {
|
|
117
|
+
for (let flashCount = 0; flashCount < 3; flashCount++) {
|
|
118
|
+
console.clear();
|
|
119
|
+
drawSlotMachine(finalChars, false, highlightIndices, true);
|
|
120
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
console.clear();
|
|
123
|
+
drawSlotMachine(finalChars, false, highlightIndices, false);
|
|
124
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
125
|
+
}
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
// Steady state
|
|
129
|
+
console.clear();
|
|
127
130
|
}
|
|
128
131
|
|
|
129
|
-
// Steady state
|
|
130
|
-
console.clear();
|
|
131
132
|
drawSlotMachine(finalChars, false, highlightIndices, false);
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
export async function animateSmallMode(config: SlotConfig): Promise<void> {
|
|
135
136
|
const { finalHash, patternResult } = config;
|
|
136
137
|
const highlightIndices = patternResult?.highlightIndices || [];
|
|
138
|
+
const isCI = !!process.env.CLAUDECODE || !!process.env.CI;
|
|
137
139
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
+
if (!isCI) {
|
|
141
|
+
// Single line, rapid character flicker
|
|
142
|
+
process.stdout.write(chalk.cyan('🎰 '));
|
|
143
|
+
|
|
144
|
+
for (let frame = 0; frame < 20; frame++) {
|
|
145
|
+
const chars = Array(7).fill(0).map(() => getRandomHexChar()).join('');
|
|
146
|
+
clearLine();
|
|
147
|
+
process.stdout.write(chalk.cyan('🎰 ') + chalk.rgb(255, 255, 255)(chars));
|
|
148
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
149
|
+
}
|
|
140
150
|
|
|
141
|
-
for (let frame = 0; frame < 20; frame++) {
|
|
142
|
-
const chars = Array(7).fill(0).map(() => getRandomHexChar()).join('');
|
|
143
151
|
clearLine();
|
|
144
|
-
process.stdout.write(chalk.cyan('🎰 ') + chalk.rgb(255, 255, 255)(chars));
|
|
145
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
// Final with highlighting - don't add newline, let the caller add result info
|
|
149
|
-
clearLine();
|
|
150
155
|
const display = finalHash.split('').map((char, i) => {
|
|
151
156
|
if (highlightIndices.includes(i)) {
|
|
152
157
|
return chalk.bgRgb(255, 255, 0).rgb(0, 0, 0).bold(char);
|
package/src/index.ts
CHANGED
|
@@ -10,13 +10,17 @@ import { testCommand } from './commands/test.js';
|
|
|
10
10
|
import { authLoginCommand, authLogoutCommand, authStatusCommand } from './commands/auth.js';
|
|
11
11
|
import { syncCommand } from './commands/sync.js';
|
|
12
12
|
import { configGetCommand, configSetCommand } from './commands/config.js';
|
|
13
|
+
import { createRequire } from 'module';
|
|
14
|
+
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
const { version } = require('../package.json');
|
|
13
17
|
|
|
14
18
|
const program = new Command();
|
|
15
19
|
|
|
16
20
|
program
|
|
17
21
|
.name('git-slot-machine')
|
|
18
22
|
.description('Git commit hash slot machine')
|
|
19
|
-
.version(
|
|
23
|
+
.version(version, '-v, --version', 'Output the current version');
|
|
20
24
|
|
|
21
25
|
program
|
|
22
26
|
.command('play')
|