From a33ab981f444b18c747dead388d2b28054ab6840 Mon Sep 17 00:00:00 2001 From: doomcrewinc Date: Mon, 16 Mar 2026 22:07:28 -0600 Subject: [PATCH 1/2] refactor: migrate from semantic versioning to CalVer+ShortSHA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed version scheme from semantic versioning (2.4.0) to CalVer+ShortSHA format (YYYYMMDD-SHA) for better deployment tracking. Version: 20260316-1e87b5e 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d44668..b25ab76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "foaas", - "version": "2.4.0", + "version": "20260316-1e87b5e", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "foaas", - "version": "2.4.0", + "version": "20260316-1e87b5e", "license": "WTFPL", "dependencies": { "@cypress/request": "3.0.10", diff --git a/package.json b/package.json index 1208e1f..b447444 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "foaas", - "version": "2.4.0", + "version": "20260316-1e87b5e", "description": "Fuck Off As A Service", "main": "lib/server.js", "scripts": { From ff2549c35f67a2338f4d11d226104633bf978193 Mon Sep 17 00:00:00 2001 From: doomcrewinc Date: Mon, 16 Mar 2026 22:13:07 -0600 Subject: [PATCH 2/2] feat: add automatic CalVer+SHA version updates via husky pre-commit hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set up husky to automatically update version to CalVer+ShortSHA format (YYYYMMDD-SHA) on every commit. Version uses commit date + previous commit's short SHA. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .husky/pre-commit | 42 ++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 27 +++++++++++++++++++++++++-- package.json | 6 ++++-- 3 files changed, 71 insertions(+), 4 deletions(-) create mode 100755 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..106040d --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,42 @@ +#!/usr/bin/env sh + +# Auto-update version to CalVer+ShortSHA format (YYYYMMDD-SHA) + +# Get current date in YYYYMMDD format +DATE=$(date +%Y%m%d) + +# Get previous commit short SHA (HEAD if exists, otherwise use initial) +if git rev-parse --verify HEAD >/dev/null 2>&1; then + SHA=$(git rev-parse --short HEAD) +else + # For initial commit, use placeholder + SHA="initial" +fi + +# New version +NEW_VERSION="${DATE}-${SHA}" + +# Get current version from package.json +CURRENT_VERSION=$(node -p "require('./package.json').version") + +# Only update if version has changed +if [ "$CURRENT_VERSION" != "$NEW_VERSION" ]; then + echo "Updating version: $CURRENT_VERSION → $NEW_VERSION" + + # Update package.json version using Node + node -e " + const fs = require('fs'); + const pkg = require('./package.json'); + pkg.version = '$NEW_VERSION'; + fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n'); + " + + # Update package-lock.json + npm install --package-lock-only --silent + + # Stage the updated files + git add package.json package-lock.json +fi + +# Run tests +npm test diff --git a/package-lock.json b/package-lock.json index b25ab76..8c90387 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "foaas", - "version": "20260316-1e87b5e", + "version": "20260316-a33ab98", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "foaas", - "version": "20260316-1e87b5e", + "version": "20260316-a33ab98", "license": "WTFPL", "dependencies": { "@cypress/request": "3.0.10", @@ -26,6 +26,7 @@ }, "devDependencies": { "coveralls-next": "6.0.1", + "husky": "^9.1.7", "jasmine": "^6.0.0", "nyc": "^17.1.0" } @@ -1957,6 +1958,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/i18next": { "version": "25.7.3", "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.3.tgz", @@ -5233,6 +5250,12 @@ "toidentifier": "~1.0.1" } }, + "husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true + }, "i18next": { "version": "25.7.3", "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.3.tgz", diff --git a/package.json b/package.json index b447444..e0d167b 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,20 @@ { "name": "foaas", - "version": "20260316-1e87b5e", + "version": "20260316-a33ab98", "description": "Fuck Off As A Service", "main": "lib/server.js", "scripts": { "start": "node lib/server.js", "test": "nyc --reporter=lcov --exclude=spec jasmine", - "coverage": "nyc report --reporter=text-lcov | coveralls" + "coverage": "nyc report --reporter=text-lcov | coveralls", + "prepare": "husky" }, "repository": "git@github.com:doomcrewinc/foaas", "author": "Tom Cully / doomcrewinc", "license": "WTFPL", "devDependencies": { "coveralls-next": "6.0.1", + "husky": "^9.1.7", "jasmine": "^6.0.0", "nyc": "^17.1.0" },