🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@colmbyrne/specflow

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@colmbyrne/specflow - npm Package Compare versions

Comparing version
0.7.3
to
0.7.4
+10
-0
CHANGELOG.md

@@ -9,2 +9,12 @@ # Changelog

## 0.7.4 (2026-06-10)
**Make the LF fix actually stick — 0.7.3's `prepack` didn't run on the publisher's machine, so it still shipped CRLF.**
`prepack` is unreliable if the publisher has `ignore-scripts` set (or an npm that skips it on publish), so 0.7.3 was published with CRLF anyway and still broke Linux/Mac. Now: `normalize-eol` runs as **`prepack` *and* `prepublishOnly`** (redundant hooks), is exposed as **`npm run normalize`** to run by hand, and **aborts the publish (exit 1) if any CR survives** — so a CRLF tarball can't be published silently again.
**Publishing this package:** `npm run normalize` then `npm publish` (the manual normalize guarantees LF even if your npm skips lifecycle scripts).
---
## 0.7.3 (2026-06-10)

@@ -11,0 +21,0 @@

+3
-1
{
"name": "@colmbyrne/specflow",
"version": "0.7.3",
"version": "0.7.4",
"description": "Specs that enforce themselves. Contract tests, journey hooks, and agent orchestration for LLM-driven development.",

@@ -32,2 +32,4 @@ "license": "MIT",

"prepack": "node scripts/normalize-eol.cjs",
"prepublishOnly": "node scripts/normalize-eol.cjs",
"normalize": "node scripts/normalize-eol.cjs",
"postinstall": "echo '' && echo '╔═══════════════════════════════════════════════════════╗' && echo '║ @colmbyrne/specflow installed ║' && echo '╠═══════════════════════════════════════════════════════╣' && echo '║ ║' && echo '║ Run in EACH project you want to enforce: ║' && echo '║ ║' && echo '║ npx @colmbyrne/specflow init . ║' && echo '║ ║' && echo '║ This creates hooks, contracts, agents, tests, and ║' && echo '║ CLAUDE.md (or appends rules to your existing one). ║' && echo '║ Then fill in the Project Context in CLAUDE.md. ║' && echo '║ ║' && echo '╚═══════════════════════════════════════════════════════╝' && echo ''",

@@ -34,0 +36,0 @@ "test": "jest --no-coverage",

@@ -41,1 +41,8 @@ #!/usr/bin/env node

console.error(`normalize-eol: ${targets.size} shell file(s) checked, ${fixed} fixed`);
// Guard: abort loudly if any CR survives — better to fail the publish than ship CRLF.
const dirty = [...targets].filter(rel => readFileSync(join(ROOT, rel), 'utf8').includes('\r'));
if (dirty.length) {
console.error(`normalize-eol: ERROR — CR still present in: ${dirty.join(', ')}`);
process.exit(1);
}