From 710bbd69aecdebe6a22295657ffb92a4884c01da Mon Sep 17 00:00:00 2001 From: JohnsonKC201 Date: Mon, 31 Aug 2026 11:32:59 -0400 Subject: [PATCH 1/2] chore: tidy the repo layout and drop the dead icon pipeline Four things the folder had accumulated, none of which a newcomer could tell apart from live code by looking: - `scripts/make-app-icon.js`, `make-tray-icon.js`, `make-ico.js` and `logo-glyph.js` referenced only each other. `make-logo-icons.js` (`npm run icon`) has produced every app and tray icon from `assets/logo.png` since the logo rework, and `make-ico.js` was not wired to anything at all. Removed, and the two `cat-sprite.js` header comments that pointed a reader at `make-app-icon.js` now point at `pet-sheet.js`, which is a Node consumer that still exists. - `assets/pixelcat-demo.{gif,mp4}` and `assets/pixelcat.ico` survived the rebrand carrying the old name. Nothing embeds them: the README uses the hero, gallery and carousel, and the build takes `icon.ico`. That is 588K of binary in every clone for no reader. The demo recipe that writes the pair keeps working but now writes `pixelpets-demo.*`, and it is out of `demo:all`, which the README describes as regenerating the README media and which it was not. - `extras/` held one file. Lobby Jam standalone is the same kind of thing as the iPad terminal (run it yourself, it is not part of the app), so it moves to `tools/lobby-jam/` with a README, and a top-level directory goes away. - `scripts/` is 15 entry points with no map. `scripts/README.md` groups them and, more usefully, marks the two that are public surface: `notify.js` and `install-hook.js` are pasted into other people's CI jobs and cron entries, so they cannot be moved on a tidying whim. --- assets/pixelcat-demo.gif | Bin 551556 -> 0 bytes assets/pixelcat-demo.mp4 | Bin 46838 -> 0 bytes assets/pixelcat.ico | Bin 5430 -> 0 bytes scripts/README.md | 45 +++++++++ scripts/logo-glyph.js | 95 ------------------ scripts/make-app-icon.js | 51 ---------- scripts/make-demo-gif.js | 24 +++-- scripts/make-ico.js | 30 ------ scripts/make-logo-icons.js | 5 +- scripts/make-tray-icon.js | 40 -------- site/cat-sprite.js | 4 +- src/cat-sprite.js | 4 +- tools/lobby-jam/README.md | 17 ++++ .../lobby-jam/index.html | 0 14 files changed, 81 insertions(+), 234 deletions(-) delete mode 100644 assets/pixelcat-demo.gif delete mode 100644 assets/pixelcat-demo.mp4 delete mode 100644 assets/pixelcat.ico create mode 100644 scripts/README.md delete mode 100644 scripts/logo-glyph.js delete mode 100644 scripts/make-app-icon.js delete mode 100644 scripts/make-ico.js delete mode 100644 scripts/make-tray-icon.js create mode 100644 tools/lobby-jam/README.md rename extras/lobby-jam.html => tools/lobby-jam/index.html (100%) diff --git a/assets/pixelcat-demo.gif b/assets/pixelcat-demo.gif deleted file mode 100644 index 526aef3c47d36deb8046d3a90816943d62fda261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551556 zcmeF(XHZiCgYSPpRJvU{cBz8h(CyOgO2;lzRg~U43B85{LMIJEhmb(%H8e#a1W4#5 z3B80G{?TWjyZhh0_s-7jzPR^}d2`;J%$dxYIcM^j@BAKU-v=na9_D<;xyr$D^q7RO z=qXW&a}p7ga41~d8QLIZe-F|xKWv5|6fJMGqHC49RIv0HDt zTZi6Qp5EHo<@jHGPVMp=+)#BUC_ZZI!Rgu=?x%}D^`Qe1sP2dC+`3yv^ChL}AhVahIv>{?y9<|DQ55JTiHh-ip_=voD8@6Dq zDe{aiOs~9ff(X81O=&AHn(9ow1Cr9m70+}do}$g$aV7M={I^7yKE8Bz0P8@fwByU> zsnvdOvu{;kzXUYK$SZ-9Hoo|_W*l)c-%eYZ;muPD!t5yDo~@;_d^;(XDo)FLpeafZ zCEe;4sYJZ6j2Ge7`bghsl|_}h;4W(xPI2oy)kk$55|uIYw4D`x<-@}joa#-vG(PNq zFx%;sJO5>bMd1D(riK4mE1493ZpY?RZXzg=)4@`(YbQO9Ed^0PH^eSxgkO`hOo=!H zv80Cgt{T1x{W7aH9(7&FXe?TO-=~q7XOo7RaeAj`;-l~L$-a-V_!{y)_N7YVnb@b{ z+8Gez>~oV5Mwd4x6K=+feu(>=4W5Fym4@^teUElJ5BtVPmIk_0T0W${+mw|G4bASK z3NR;!oR3gc{3e?o4!I{A9@IE9kp(RU$Yur}CtJcVr{hqWEYx`&tAtcL;rGZm6@PiO zi3eYH^34t$0$K1zOfnz$vlac4@KsC}TpOr@Dr^TD(+gp8TMBUR^Qtx&*W>uyvY&5M zdoWemt+}PW+2V@#rd6!%UM!XlT)^g^-kQ6+I;xuYV(0uOqjDo!-VQ%Dw`HHlAkZ+? zJP#Q5wR?4sF4StL$&cdvU|I?_5IbjEl8G0m!@B;M4aQIN=Yrdbv5o>PDSqg>w4{Rbp_+Id^GWdbhkk^I_w;EqZ0uUA1A z)=2LXY}fiN;kj#M8^7;$1E0~{PJ^W5ub4y5Q@KnQ#hp3JqG_+1zLPM($AcgWl4Fl50~MlX%;rHJ|w z*dvd90%-ytwd$(Fx&qFvcVwb;vUl}LXxjcAAJ{*a9cUr-zg-D3|>0c&r zUfMyl<^0+bxH9LhV0??-iQ3`BuF&kOaP9Vwn~{m_N6*UhhP2t?o+OfTe6FCiJH8qp z2^u*HzpnX7&mLD4JzPHtXxD!D$^1%^9jon?JhkQFoyIFr#T@v}G?#}in5QX&4EXII z>z(gA98y;lWNxa5JbI+Kl5S#yP}#%x!&T>3+WrO$(Mvi{PFwv7QqV%`ylnj$kGq<6 zVo2uRJzQrrxj0a|VMN!d^=Vw=)s(CH)A~VtwMn>qxYqZXhj$>F=_=QJ?q7TT1WtSU zZ8QdX#sl@@kVwzrCvhm4@O?+PbUdAUT%IIfDPf=tca=%}&@gth50AILPUQqlHfhUhgJC?V%V;J`VhN8|)JVY?>9dh91Adp$Xw?5~z zA7nO*V>)++nLG8!?^yvRR3P+oJ?eBVMDv+t^Md(2V<7Jhlv5R?VcudD^r~)+S@qTy z?k%09Jhxd=C3ro@SN0V}U~IL<(^e_qfu0VRxJZT6i|RmC#_NO3=k;g97e^EZUkbpT z8wBhwd7Nr95ZwZNJ)`Cm8Kn2_6x@*Wo&Y^>l%tw#^*jdLlkd5jqnS&8+DGm^+V~yqR%w0YpxdvieWl(3 z9<;ZeO1NP1EPod?IhhF@%8#m&wN$_#P~OgTI2+mRyq-N#WDrw@SjjjuRH*~sY=;W1rs#T18&{S0 z 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 E8c82c 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 e$tenY+c(D(7u!;x9gy?J)k`j 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

L&~MrGlALWEX~*$+VKa&s>cyPamJx;%d~6 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 diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..02d6089 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,45 @@ +# scripts/ + +Everything here is a Node or Electron entry point. Nothing in this folder ships +inside the app except `notify.js`, which is bundled deliberately so an installed +copy can still be driven from a shell. + +## Public surface (do not move or rename) + +These paths appear in other people's config files and shortcuts. + +| Script | Run via | What it does | +|---|---|---| +| `notify.js` | `node scripts/notify.js "msg"` | Pushes a message to the running pet: speech bubble, toast, meow. Hook-safe (drains stdin). | +| `install-hook.js` | `npm run hook -- ` | Prints an agent hook config with the absolute path already filled in. | + +## Build and release + +| Script | Run via | What it does | +|---|---|---| +| `adhoc-sign.js` | electron-builder `afterPack` | Ad-hoc signs the macOS bundle. Without the seal, macOS discards the Accessibility grant and Keychain entry on every update. | +| `bootcheck.js` | `npm run test:boot` | Launches the real app and asserts it renders a frame. Runs in CI on Windows and macOS. | +| `hook-check.js` | `npm run check:hook` | Answers whether the global input hook loads on this Electron build. | + +## Art and media generators + +All of these render from the same sprite geometry the app draws with, in pure +Node, with no browser and no GPU. + +| Script | Run via | Output | +|---|---|---| +| `make-demo-gif.js` | `npm run demo:all` | `assets/hero-banner.*`, `assets/gallery/*`, `assets/coat-carousel.gif`. The `demo` recipe is legacy and is not part of `all`. | +| `make-reel.js` | `npm run reel` | `assets/pixelpets-reel.mp4`, the launch reel. Films the real renderer. | +| `make-social-card.js` | `npm run social` | `assets/social-card.png`, the GitHub and link-preview card. | +| `make-logo-icons.js` | `npm run icon` | Every app and tray icon, from the master `assets/logo.png`. | +| `logo-source.js` | library | Loads and rescales `logo.png`, and decodes PNGs for the climb slicer. | + +## Sprite tooling + +| Script | Run via | What it does | +|---|---|---| +| `overlay-vm.js` | library | Loads the overlay's script stack in a vm so poses can be read back headlessly. The pose tests and the contact sheets both drive this. | +| `pet-sheet.js` | `npm run poses:cat` / `poses:dog` | Renders every activity across every coat into one contact sheet for visual QA. | +| `import-frames.js` | `npm run frames:import --

` | Imports hand-painted PNGs as baked poses that win over the composer. See [docs/frame-pack.md](../docs/frame-pack.md). | +| `slice-climb-sheet.js` | `node scripts/slice-climb-sheet.js ` | Slices a 5-panel climb contact sheet into per-coat frames. See [assets/climb/](../assets/climb/). | +| `embed-climb-frames.js` | `npm run climb-frames` | Bakes those frames into `src/climb-frames.js`. | diff --git a/scripts/logo-glyph.js b/scripts/logo-glyph.js deleted file mode 100644 index 9c3c53b..0000000 --- a/scripts/logo-glyph.js +++ /dev/null @@ -1,95 +0,0 @@ -// Shared "pixelcat" logo mark - a bold, friendly FRONT-FACING cat face that reads -// at 16px and scales up crisply. Brand orange on a dark outline + light halo so it -// stays visible on a dark Windows taskbar (the old dark cat-head vanished there). -// -// renderCatFace(S, { halo }) returns an S*S RGBA buffer (transparent background). -// The face geometry is normalized (0..1), classified per pixel with supersampling -// for clean edges, then outline/halo are grown around the silhouette. Used by both -// scripts/make-tray-icon.js (tray) and scripts/make-app-icon.js (app tile). - -const COL = { - 1: [232, 148, 60], // coat - brand orange - 2: [181, 100, 29], // mark - tabby stripes - 3: [247, 241, 230], // cream - muzzle / chin - 4: [240, 170, 165], // earin - inner ear - 5: [38, 40, 48], // eye - 6: [255, 255, 255], // shine - eye sparkle - 7: [224, 136, 143], // nose - 8: [60, 36, 18], // line - dark outline - 9: [255, 252, 246], // halo - light contrast ring -}; - -function sign(px, py, ax, ay, bx, by) { return (px - bx) * (ay - by) - (ax - bx) * (py - by); } -function inTri(px, py, a, b, c) { - const d1 = sign(px, py, a[0], a[1], b[0], b[1]); - const d2 = sign(px, py, b[0], b[1], c[0], c[1]); - const d3 = sign(px, py, c[0], c[1], a[0], a[1]); - return !((d1 < 0 || d2 < 0 || d3 < 0) && (d1 > 0 || d2 > 0 || d3 > 0)); -} - -// Classify a normalized point (nx, ny in 0..1) into a role code, or 0 (empty). -function classify(nx, ny) { - // eyes (+ a bright sparkle in the upper-right of each) - for (const ex of [0.355, 0.645]) { - const dx = (nx - ex) / 0.090, dy = (ny - 0.55) / 0.125; - if (dx * dx + dy * dy <= 1) { - const sx = (nx - (ex + 0.028)) / 0.028, sy = (ny - (0.55 - 0.040)) / 0.028; - return (sx * sx + sy * sy <= 1) ? 6 : 5; - } - } - // nose - { const dx = (nx - 0.5) / 0.045, dy = (ny - 0.665) / 0.036; if (dx * dx + dy * dy <= 1) return 7; } - // inner ears - if (inTri(nx, ny, [0.215, 0.15], [0.15, 0.37], [0.33, 0.30])) return 4; - if (inTri(nx, ny, [0.785, 0.15], [0.85, 0.37], [0.67, 0.30])) return 4; - const inHead = ((nx - 0.5) / 0.40) ** 2 + ((ny - 0.57) / 0.36) ** 2 <= 1; - // cream muzzle / chin (lower-centre of the head) - if (inHead) { const dx = (nx - 0.5) / 0.185, dy = (ny - 0.72) / 0.125; if (dx * dx + dy * dy <= 1) return 3; } - // forehead "M" tabby stripes on the coat - if (inHead && ny > 0.27 && ny < 0.40) { for (const mx of [0.415, 0.50, 0.585]) if (Math.abs(nx - mx) < 0.017) return 2; } - const inEarL = inTri(nx, ny, [0.20, 0.05], [0.07, 0.42], [0.40, 0.30]); - const inEarR = inTri(nx, ny, [0.80, 0.05], [0.93, 0.42], [0.60, 0.30]); - return (inHead || inEarL || inEarR) ? 1 : 0; -} - -function renderCatFace(S, opts = {}) { - const halo = opts.halo !== false; - const ss = S <= 64 ? 4 : 2, W = S * ss; - const role = new Int8Array(W * W); - for (let y = 0; y < W; y++) for (let x = 0; x < W; x++) role[y * W + x] = classify((x + 0.5) / W, (y + 0.5) / W); - // grow a dark outline (ss thick) around the silhouette, then a light halo - const grow = (from, to, steps) => { - for (let s = 0; s < steps; s++) { - const add = []; - for (let y = 0; y < W; y++) for (let x = 0; x < W; x++) { - if (role[y * W + x] !== 0) continue; - const n = (xx, yy) => xx >= 0 && yy >= 0 && xx < W && yy < W && role[yy * W + xx] >= from && role[yy * W + xx] <= to; - if (n(x - 1, y) || n(x + 1, y) || n(x, y - 1) || n(x, y + 1)) add.push(y * W + x); - } - for (const i of add) role[i] = to + 1; // 8 (line) when growing 1..7, 9 (halo) when growing 1..8 - } - }; - grow(1, 7, ss); // outline - if (halo) grow(1, 8, ss); // halo ring (only useful on transparent/dark backgrounds) - // hi-res RGBA, then box-downsample (premultiplied) to S for clean alpha edges - const hi = new Uint8ClampedArray(W * W * 4); - for (let i = 0; i < W * W; i++) { const c = COL[role[i]]; if (!c) continue; hi[i * 4] = c[0]; hi[i * 4 + 1] = c[1]; hi[i * 4 + 2] = c[2]; hi[i * 4 + 3] = 255; } - return downsample(hi, W, S); -} - -function downsample(src, srcSize, size) { - if (size === srcSize) return src; - const out = new Uint8ClampedArray(size * size * 4), ratio = srcSize / size; - for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) { - let r = 0, g = 0, b = 0, a = 0, n = 0; - for (let sy = 0; sy < ratio; sy++) for (let sx = 0; sx < ratio; sx++) { - const px = Math.floor(x * ratio + sx), py = Math.floor(y * ratio + sy), i = (py * srcSize + px) * 4, af = src[i + 3] / 255; - r += src[i] * af; g += src[i + 1] * af; b += src[i + 2] * af; a += src[i + 3]; n++; - } - const o = (y * size + x) * 4, av = a / n; - out[o] = av ? r / n / (av / 255) : 0; out[o + 1] = av ? g / n / (av / 255) : 0; out[o + 2] = av ? b / n / (av / 255) : 0; out[o + 3] = av; - } - return out; -} - -module.exports = { renderCatFace, COL }; diff --git a/scripts/make-app-icon.js b/scripts/make-app-icon.js deleted file mode 100644 index 097efc3..0000000 --- a/scripts/make-app-icon.js +++ /dev/null @@ -1,51 +0,0 @@ -// Generates assets/icon.png (256) and assets/icon.ico (16/32/48/64/128/256) - the -// "pixelcat" logo: a bold ORANGE cat face (the shared logo mark) centred on a vibrant -// indigo rounded app-tile. The same face is used for the tray glyph (make-tray-icon.js) -// so the brand is consistent and instantly recognizable. Run: node scripts/make-app-icon.js -const fs = require('fs'); -const zlib = require('zlib'); -const path = require('path'); -const { renderCatFace } = require('./logo-glyph.js'); - -const TILE_TOP = [126, 86, 214], TILE_BOT = [56, 38, 138]; // vibrant indigo gradient -const lerp = (a, b, t) => Math.round(a + (b - a) * t); - -function render(SZ) { - const buf = new Uint8ClampedArray(SZ * SZ * 4); - const radius = Math.round(SZ * 0.22); - for (let y = 0; y < SZ; y++) for (let x = 0; x < SZ; x++) { // rounded gradient tile - const rx = Math.max(0, radius - x, x - (SZ - 1 - radius)), ry = Math.max(0, radius - y, y - (SZ - 1 - radius)); - if (rx > 0 && ry > 0 && rx * rx + ry * ry > radius * radius) continue; - const i = (y * SZ + x) * 4; - buf[i] = lerp(TILE_TOP[0], TILE_BOT[0], y / SZ); buf[i + 1] = lerp(TILE_TOP[1], TILE_BOT[1], y / SZ); buf[i + 2] = lerp(TILE_TOP[2], TILE_BOT[2], y / SZ); buf[i + 3] = 255; - } - const fSz = Math.round(SZ * 0.80), face = renderCatFace(fSz, { halo: false }); // cat face centred (~80%) - const off = Math.floor((SZ - fSz) / 2); - for (let y = 0; y < fSz; y++) for (let x = 0; x < fSz; x++) { // alpha-over composite - const fi = (y * fSz + x) * 4, a = face[fi + 3] / 255; if (!a) continue; - const X = off + x, Y = off + y; if (X < 0 || Y < 0 || X >= SZ || Y >= SZ) continue; - const i = (Y * SZ + X) * 4; - buf[i] = Math.round(face[fi] * a + buf[i] * (1 - a)); buf[i + 1] = Math.round(face[fi + 1] * a + buf[i + 1] * (1 - a)); buf[i + 2] = Math.round(face[fi + 2] * a + buf[i + 2] * (1 - a)); buf[i + 3] = 255; - } - return buf; -} -function downsample(src, srcSize, size) { - if (size === srcSize) return src; - const out = new Uint8ClampedArray(size * size * 4), ratio = srcSize / size; - for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) { let r = 0, g = 0, b = 0, a = 0, n = 0; for (let sy = 0; sy < ratio; sy++) for (let sx = 0; sx < ratio; sx++) { const pxn = Math.floor(x * ratio + sx), py = Math.floor(y * ratio + sy), i = (py * srcSize + pxn) * 4, af = src[i + 3] / 255; r += src[i] * af; g += src[i + 1] * af; b += src[i + 2] * af; a += src[i + 3]; n++; } const o = (y * size + x) * 4, av = a / n; out[o] = av ? r / n / (av / 255) : 0; out[o + 1] = av ? g / n / (av / 255) : 0; out[o + 2] = av ? b / n / (av / 255) : 0; out[o + 3] = av; } - return out; -} -function crc(b) { let c = ~0; for (let i = 0; i < b.length; i++) { c ^= b[i]; for (let k = 0; k < 8; k++) c = (c >>> 1) ^ (0xEDB88320 & -(c & 1)); } return ~c >>> 0; } -function chunk(t, d) { const l = Buffer.alloc(4); l.writeUInt32BE(d.length, 0); const b = Buffer.concat([Buffer.from(t), d]); const cc = Buffer.alloc(4); cc.writeUInt32BE(crc(b), 0); return Buffer.concat([l, b, cc]); } -function encodePng(rgba, s) { const ih = Buffer.alloc(13); ih.writeUInt32BE(s, 0); ih.writeUInt32BE(s, 4); ih[8] = 8; ih[9] = 6; const raw = Buffer.alloc(s * (s * 4 + 1)); for (let y = 0; y < s; y++) { raw[y * (s * 4 + 1)] = 0; for (let x = 0; x < s * 4; x++) raw[y * (s * 4 + 1) + 1 + x] = rgba[y * s * 4 + x]; } return Buffer.concat([Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]), chunk('IHDR', ih), chunk('IDAT', zlib.deflateSync(raw, { level: 9 })), chunk('IEND', Buffer.alloc(0))]); } -function buildIco(pngs) { const head = Buffer.alloc(6); head.writeUInt16LE(0, 0); head.writeUInt16LE(1, 2); head.writeUInt16LE(pngs.length, 4); let off = 6 + 16 * pngs.length; const e = pngs.map((p) => { const b = Buffer.alloc(16); b.writeUInt8(p.size >= 256 ? 0 : p.size, 0); b.writeUInt8(p.size >= 256 ? 0 : p.size, 1); b.writeUInt16LE(1, 4); b.writeUInt16LE(32, 6); b.writeUInt32LE(p.data.length, 8); b.writeUInt32LE(off, 12); off += p.data.length; return b; }); return Buffer.concat([head, ...e, ...pngs.map((p) => p.data)]); } - -const hi = render(512); -const big = render(256); -const outDir = path.join(__dirname, '..', 'assets'); -fs.mkdirSync(outDir, { recursive: true }); -const pngs = [256, 128, 64, 48, 32, 16].map((s) => ({ size: s, data: encodePng(s === 256 ? big : downsample(hi, 512, s), s) })); -fs.writeFileSync(path.join(outDir, 'icon.png'), pngs[0].data); -fs.writeFileSync(path.join(outDir, 'icon.ico'), buildIco(pngs)); -fs.writeFileSync(path.join(outDir, 'icon-512.png'), encodePng(hi, 512)); // macOS app icon (electron-builder needs >= 512px) -console.log('wrote assets/icon.png (256), assets/icon.ico (16-256), and assets/icon-512.png (mac)'); diff --git a/scripts/make-demo-gif.js b/scripts/make-demo-gif.js index 2a3796b..c29ef11 100644 --- a/scripts/make-demo-gif.js +++ b/scripts/make-demo-gif.js @@ -1,10 +1,11 @@ -// Generates assets/pixelcat-demo.gif - a short looping clip that shows what the -// desktop pet DOES: it sits and follows your cursor, naps when idle, taps its -// paws when you type, pounces to hunt, and purrs when you pet it. Pure JS, no -// browser / no native deps: the sprite geometry comes from src/cat-sprite.js -// (single source of truth) plus the pose composers copied from renderer.js, all -// rasterised by hand into RGBA frames and encoded with gifenc. -// Run: node scripts/make-demo-gif.js +// Renders the README media - short looping clips that show what the desktop pet +// DOES: it sits and follows your cursor, naps when idle, taps its paws when you +// type, pounces to hunt, and purrs when you pet it. Pure JS, no browser / no +// native deps: the sprite geometry comes from src/cat-sprite.js (single source of +// truth) plus the pose composers copied from renderer.js, all rasterised by hand +// into RGBA frames and encoded with gifenc. +// Run: node scripts/make-demo-gif.js [demo|hero|gallery|carousel|all] [mp4] +// npm run demo:all # the three the README embeds const fs = require('fs'); const path = require('path'); const { GIFEncoder, quantize, applyPalette } = require('gifenc'); @@ -652,7 +653,8 @@ function maybeDump(frames, tag) { // ---- recipes ---------------------------------------------------------------- function setCanvas(w, h, px, baseY) { W = w; H = h; PX = px; BASE_Y = baseY; } -// the original 5-scene desktop demo (480x340) -> assets/pixelcat-demo.{gif,mp4} +// the original 5-scene desktop demo (480x340) -> assets/pixelpets-demo.{gif,mp4}. +// Not README media (the hero, gallery and carousel below are), so `all` leaves it out. function recipeDemo(wantMp4) { setCanvas(480, 340, 6, 250); SP = buildPoses(0); PAL = paletteFor(S.PATTERNS[0]); const frames = []; @@ -662,8 +664,8 @@ function recipeDemo(wantMp4) { sceneHunt(frames, { caption: 'POUNCES TO HUNT' }); scenePet(frames, { caption: 'PURRS WHEN YOU PET IT' }); maybeDump(frames, 'demo'); - encodeGif(frames, A('pixelcat-demo.gif')); - if (wantMp4) encodeMp4(frames, A('pixelcat-demo.mp4')); + encodeGif(frames, A('pixelpets-demo.gif')); + if (wantMp4) encodeMp4(frames, A('pixelpets-demo.mp4')); } // wide cinematic banner (960x360) -> assets/hero-banner.{gif,mp4} @@ -730,7 +732,7 @@ const RECIPES = { hero: () => recipeHero(wantMp4), gallery: () => recipeGallery(wantMp4), carousel: () => recipeCarousel(), - all: () => { recipeDemo(wantMp4); recipeHero(wantMp4); recipeGallery(wantMp4); recipeCarousel(); }, + all: () => { recipeHero(wantMp4); recipeGallery(wantMp4); recipeCarousel(); }, }; if (!RECIPES[recipe]) { console.error(`unknown recipe: ${recipe} (expected demo|hero|gallery|carousel|all)`); process.exit(1); } RECIPES[recipe](); diff --git a/scripts/make-ico.js b/scripts/make-ico.js deleted file mode 100644 index b297498..0000000 --- a/scripts/make-ico.js +++ /dev/null @@ -1,30 +0,0 @@ -// Bundle the generated tray PNGs into assets/pixelcat.ico (PNG-embedded ICO, -// supported on modern Windows). Run after make-tray-icon.js. -const fs = require('fs'); -const path = require('path'); - -const dir = path.join(__dirname, '..', 'assets'); -const imgs = [ - { size: 16, file: 'tray.png' }, - { size: 32, file: 'tray@2x.png' }, -].map((e) => ({ size: e.size, data: fs.readFileSync(path.join(dir, e.file)) })); - -const HEADER = 6, ENTRY = 16; -const head = Buffer.alloc(HEADER); -head.writeUInt16LE(0, 0); head.writeUInt16LE(1, 2); head.writeUInt16LE(imgs.length, 4); - -let offset = HEADER + ENTRY * imgs.length; -const entries = []; -for (const im of imgs) { - const e = Buffer.alloc(ENTRY); - e.writeUInt8(im.size === 256 ? 0 : im.size, 0); - e.writeUInt8(im.size === 256 ? 0 : im.size, 1); - e.writeUInt8(0, 2); e.writeUInt8(0, 3); - e.writeUInt16LE(1, 4); e.writeUInt16LE(32, 6); - e.writeUInt32LE(im.data.length, 8); - e.writeUInt32LE(offset, 12); - offset += im.data.length; - entries.push(e); -} -fs.writeFileSync(path.join(dir, 'pixelcat.ico'), Buffer.concat([head, ...entries, ...imgs.map((i) => i.data)])); -console.log('wrote assets/pixelcat.ico'); diff --git a/scripts/make-logo-icons.js b/scripts/make-logo-icons.js index 45e1e89..81fd88d 100644 --- a/scripts/make-logo-icons.js +++ b/scripts/make-logo-icons.js @@ -163,11 +163,10 @@ fs.writeFileSync(path.join(outDir, 'icon-512.png'), encodePng(onTile(512), 512)) // Transparent 512 mascot mark for the README hero (no tile). fs.writeFileSync(path.join(outDir, 'logo-mark.png'), encodePng(rgbaAt(512), 512)); -// Tray glyph (16 + retina 32) and the legacy tray .ico - on the same warm tile as the app -// icon so the dark mascot is clearly visible on a dark system tray. +// Tray glyph (16 + retina 32) - on the same warm tile as the app icon so the dark +// mascot is clearly visible on a dark system tray. fs.writeFileSync(path.join(outDir, 'tray.png'), encodePng(onTile(16), 16)); fs.writeFileSync(path.join(outDir, 'tray@2x.png'), encodePng(onTile(32), 32)); -fs.writeFileSync(path.join(outDir, 'pixelcat.ico'), buildIco([32, 16].map(tileEntry))); // macOS menu-bar glyph. A template image is pure BLACK plus an alpha channel: macOS // reads only the alpha and paints it itself, which is what lets it invert on a dark diff --git a/scripts/make-tray-icon.js b/scripts/make-tray-icon.js deleted file mode 100644 index 6207b3b..0000000 --- a/scripts/make-tray-icon.js +++ /dev/null @@ -1,40 +0,0 @@ -// Generates assets/tray.png (16px) and assets/tray@2x.png (32px) - the "pixelcat" -// logo mark: a bold ORANGE cat face with a dark outline and light halo, so it stays -// visible on a dark Windows taskbar (the previous dark cat-head was invisible there). -// Artwork comes from the shared scripts/logo-glyph.js. Run: node scripts/make-tray-icon.js -const fs = require('fs'); -const zlib = require('zlib'); -const path = require('path'); -const { renderCatFace } = require('./logo-glyph.js'); - -// Minimal PNG encoder (truecolor + alpha). -function crc32(buf) { - let c = ~0; - for (let i = 0; i < buf.length; i++) { c ^= buf[i]; for (let k = 0; k < 8; k++) c = (c >>> 1) ^ (0xEDB88320 & -(c & 1)); } - return ~c >>> 0; -} -function chunk(type, data) { - const len = Buffer.alloc(4); len.writeUInt32BE(data.length, 0); - const tb = Buffer.from(type, 'ascii'), body = Buffer.concat([tb, data]); - const crc = Buffer.alloc(4); crc.writeUInt32BE(crc32(body), 0); - return Buffer.concat([len, body, crc]); -} -function encodePng(rgba, size) { - const sig = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]); - const ihdr = Buffer.alloc(13); - ihdr.writeUInt32BE(size, 0); ihdr.writeUInt32BE(size, 4); - ihdr[8] = 8; ihdr[9] = 6; ihdr[10] = 0; ihdr[11] = 0; ihdr[12] = 0; - const raw = Buffer.alloc(size * (size * 4 + 1)); - for (let y = 0; y < size; y++) { - raw[y * (size * 4 + 1)] = 0; - for (let x = 0; x < size * 4; x++) raw[y * (size * 4 + 1) + 1 + x] = rgba[y * size * 4 + x]; - } - const idat = zlib.deflateSync(raw, { level: 9 }); - return Buffer.concat([sig, chunk('IHDR', ihdr), chunk('IDAT', idat), chunk('IEND', Buffer.alloc(0))]); -} - -const outDir = path.join(__dirname, '..', 'assets'); -fs.mkdirSync(outDir, { recursive: true }); -fs.writeFileSync(path.join(outDir, 'tray.png'), encodePng(renderCatFace(16, { halo: true }), 16)); -fs.writeFileSync(path.join(outDir, 'tray@2x.png'), encodePng(renderCatFace(32, { halo: true }), 32)); -console.log('wrote assets/tray.png (16) and assets/tray@2x.png (32)'); diff --git a/site/cat-sprite.js b/site/cat-sprite.js index 9363f18..361f26c 100644 --- a/site/cat-sprite.js +++ b/site/cat-sprite.js @@ -3,7 +3,7 @@ // by the overlay (index.html) and the settings window (settings.html) - its // top-level const/function declarations live in the shared global lexical scope, // so renderer.js / cat-preview.js use them as bare identifiers - and required as a -// CommonJS module by scripts/make-app-icon.js (Node). Pose-specific composers +// CommonJS module by scripts/pet-sheet.js (Node). Pose-specific composers // (hunt/type/sleep) and the animated drawCat stay in renderer.js. const CELL = 4; // px per sprite cell - sets the cat's overall size (was 5; 4 ≈ 20% smaller) @@ -163,7 +163,7 @@ function shadeStr(rgb, f) { const c = (v) => Math.max(0, Math.min(255, Math.roun const HALO = '#fbfdff'; const BODY = new Set(['C', 'K', 'W', 'X', 'I']); -// CommonJS export (Node, for scripts/make-app-icon.js). In a browser classic +// CommonJS export (Node, for scripts/pet-sheet.js). In a browser classic // script `module` is undefined, so this is skipped and the declarations above // remain available in the shared global scope. if (typeof module !== 'undefined' && module.exports) { diff --git a/src/cat-sprite.js b/src/cat-sprite.js index 9363f18..361f26c 100644 --- a/src/cat-sprite.js +++ b/src/cat-sprite.js @@ -3,7 +3,7 @@ // by the overlay (index.html) and the settings window (settings.html) - its // top-level const/function declarations live in the shared global lexical scope, // so renderer.js / cat-preview.js use them as bare identifiers - and required as a -// CommonJS module by scripts/make-app-icon.js (Node). Pose-specific composers +// CommonJS module by scripts/pet-sheet.js (Node). Pose-specific composers // (hunt/type/sleep) and the animated drawCat stay in renderer.js. const CELL = 4; // px per sprite cell - sets the cat's overall size (was 5; 4 ≈ 20% smaller) @@ -163,7 +163,7 @@ function shadeStr(rgb, f) { const c = (v) => Math.max(0, Math.min(255, Math.roun const HALO = '#fbfdff'; const BODY = new Set(['C', 'K', 'W', 'X', 'I']); -// CommonJS export (Node, for scripts/make-app-icon.js). In a browser classic +// CommonJS export (Node, for scripts/pet-sheet.js). In a browser classic // script `module` is undefined, so this is skipped and the declarations above // remain available in the shared global scope. if (typeof module !== 'undefined' && module.exports) { diff --git a/tools/lobby-jam/README.md b/tools/lobby-jam/README.md new file mode 100644 index 0000000..54b24b2 --- /dev/null +++ b/tools/lobby-jam/README.md @@ -0,0 +1,17 @@ +# Lobby Jam, standalone + +`index.html` is the pet's lo-fi jam generator with the pet taken out: the same +Karplus-Strong guitar, jazz voicings, brushed percussion and tape warmth, in one +self-contained page with no Electron, no build step and no audio files. + +Open it directly in a browser: + +```powershell +start tools/lobby-jam/index.html # Windows +open tools/lobby-jam/index.html # macOS +``` + +Useful for tuning the generator without launching the app, and for hearing what +the moods sound like back to back. The version that ships inside pixelpets lives +in [`src/jam.js`](../../src/jam.js) and is toggled from Settings or the tray; see +[docs/features.md](../../docs/features.md#lobby-jam). diff --git a/extras/lobby-jam.html b/tools/lobby-jam/index.html similarity index 100% rename from extras/lobby-jam.html rename to tools/lobby-jam/index.html From 6062a31dcf38feb9b81e94d11d41d58ac31c873c Mon Sep 17 00:00:00 2001 From: JohnsonKC201 Date: Mon, 31 Aug 2026 11:33:16 -0400 Subject: [PATCH 2/2] docs: split the README into a tour and a docs/ set The README had grown to 693 lines and 38K, which is long enough that the two things a landing page has to do, convince someone to try it and get them running, were buried under reference material they had no reason to read yet. Nine `
` blocks is the tell: the page already knew most of itself was not for a first-time reader. So it keeps the hero, the gallery, what the thing does, quick start, controls, agent hooks and privacy, and hands the rest to `docs/`: - `docs/features.md` every interaction, coat, mood, sound and productivity feature, as prose rather than collapsed sections, so it is readable in one pass and findable by search - `docs/architecture.md` how one sprite covers 15 coats, plus the project layout, plus the paths that are public surface and cannot move - `docs/development.md` commands, installer builds, visual QA and the macOS beta checklist, which now has a real anchor to link people at - `docs/custom-coats.md` designing, hand-editing and sharing a coat - `docs/README.md` an index, since `docs/` previously held one file and a folder of art and was easy to mistake for a dead end README goes 693 -> 285 lines with nothing dropped. Three staleness fixes found while moving the text: CONTRIBUTING pointed at `README.md#development` and at `npx eslint src/ tests/` rather than the `npm run lint` CI actually runs, and recommended `npm run sheet` where the headless `npm run poses:cat` is what the pose tests drive; frame-pack.md still claimed 28 coats. `tests/bridge-paths.test.js` asserted the README quotes the real `%TEMP%` bridge filenames, and moving the notify docs would have made it fail, which is the test doing its job. Rather than pin the prose in place it now asserts over the whole user-facing doc set, so a path may live on whichever page suits it but still cannot go undocumented, and it additionally fails a page that quotes a `%TEMP%` bridge file nothing reads. --- CONTRIBUTING.md | 10 +- README.md | 590 ++++++------------------------------- docs/README.md | 25 ++ docs/architecture.md | 94 ++++++ docs/custom-coats.md | 52 ++++ docs/development.md | 137 +++++++++ docs/features.md | 215 ++++++++++++++ docs/frame-pack.md | 5 +- tests/bridge-paths.test.js | 22 +- 9 files changed, 639 insertions(+), 511 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/architecture.md create mode 100644 docs/custom-coats.md create mode 100644 docs/development.md create mode 100644 docs/features.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f0d4e2..8eea591 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,26 +11,26 @@ npm install npm start # your pet appears ``` -The [Development section of the README](README.md#development) covers the day-to-day commands. The short version: +The [development guide](docs/development.md) covers the day-to-day commands. The short version: | Command | What it does | |---------|--------------| | `npm test` | Smoke tests (node --test). Must be green before a PR. | -| `npx eslint src/ tests/` | Lint. Lint these folders, not `.` (local scratch dirs are noisy). | -| `npm run sheet` | Renders every pose x coat into `previews/contact-sheet.png` for visual QA. | +| `npm run lint` | Lint (eslint, cached). CI runs exactly this. | +| `npm run poses:cat` | Renders every activity x coat into `previews/cat-poses.png` for visual QA. Headless: no Electron, no GPU. | | `npm run test:boot` | Boots the app headlessly and renders one frame. | ## Before you open a PR 1. **Tests green:** `npm test` (CI runs the same thing). -2. **Visual changes need visual proof.** If you touch `src/renderer.js`, `src/cat-sprite.js`, or anything that draws, run `npm run sheet` before and after. For pure refactors the sha256 of the contact sheet should not change; for intentional changes, include a before/after crop in the PR. +2. **Visual changes need visual proof.** If you touch `src/renderer.js`, `src/cat-sprite.js`, or anything that draws, run `npm run poses:cat` before and after. For pure refactors the sha256 of the sheet should not change; for intentional changes, include a before/after crop in the PR. 3. **Keep the site cat in sync.** `site/cat-sprite.js` must stay a byte-identical copy of `src/cat-sprite.js` (a test enforces this). If you change the sprite, re-copy it: `node -e "fs.copyFileSync('src/cat-sprite.js','site/cat-sprite.js')"`. 4. **Respect line endings.** Files in this repo are a mix of LF and CRLF for historical reasons. Do not normalize files you are not otherwise changing; keep each file's existing endings. 5. **Commit style:** conventional commits (`feat:`, `fix:`, `docs:`, `test:`, `chore:`), imperative mood, like the existing history. ## Good places to start -- **Own a Mac?** The macOS port is code-complete but untested on real hardware. Running the [beta checklist](README.md#build-a-standalone-app) and reporting what happened is the single most useful contribution right now. +- **Own a Mac?** The macOS port is code-complete but untested on real hardware. Running the [beta checklist](docs/development.md#macos-beta-checklist) and reporting what happened is the single most useful contribution right now. - **Design a coat** and share it (Settings → Custom coats → Export). Great ones can become built-ins. - Anything labeled [good first issue](https://github.com/JOhnsonKC201/pixelpets/labels/good%20first%20issue) or [help wanted](https://github.com/JOhnsonKC201/pixelpets/labels/help%20wanted). diff --git a/README.md b/README.md index 664162b..ea9c525 100644 --- a/README.md +++ b/README.md @@ -40,18 +40,13 @@ scratch: nearly every sprite, animation, and sound is original and procedural.
-
Two pets · - In action · - Features · + In action · + What it does · Quick start · - Meet the cat · - Stay on track · Controls · AI agents · - Custom coats · - How it works · Privacy · - Development · + Docs · Contributing @@ -59,36 +54,6 @@ scratch: nearly every sprite, animation, and sound is original and procedural. --- -## Two pets, one app - -Pick your species from the tray (**Pet → Cat / Dog**). Each one keeps its own -coat choice, so switching back and forth never loses your pick. - -| | Cat | Dog | -|---|---|---| -| Coats | 14 coats, from Orange Tabby to Russian Blue | the Black Lab | -| Resting | loafs into a "cat bread" | curls nose-to-tail into a ring | -| Excited | hunting crouch, ears back | **play bow**: chest down, rump up, tail flagged | -| Tail | slow rolling S-curve, tip flicks | fast wag from the base, shaped per breed (curl / plume / feather / stub / straight) | -| Play | bats a butterfly | **fetch**: chases the ball down, carries it home, drops it | -| Left alone | a butterfly flutters in | starts its own game of fetch | -| After exertion | grooms | pants, tongue out | -| Scroll | climbs a yarn rope, or swipes at a blowing leaf, depending on the coat | rears into a beg and swipes at the leaf | -| Reward | a fish treat | a tennis ball | - -The dog is not a recoloured cat. It has its own sprite module with a muzzle that -protrudes past the skull line, floppy ears, a broader chest, and a straight -otter tail. Markings are coat *structures* rather than palette swaps, and the -build archetypes behind them (spotted, saddled, tricolour, masked, merle, and -the short-legged dwarf silhouette) are still in the sprite module for any breed -added back later. - -```bash -npm run poses:dog # previews/dog-poses.png - every breed x every ACTIVITY -npm run poses:cat # previews/cat-poses.png - 14 coats x 11 activities -npm run sheet:dog # previews/dog-sheet.png - the five base poses only -``` - ## See it in action @@ -135,13 +100,42 @@ Nothing is a screen recording. +### Cat or dog + +Pick your species from the tray (**Pet > Cat / Dog**); each keeps its own coat. +The dog is not a recoloured cat. It has its own sprite module, with a muzzle that +protrudes past the skull line, floppy ears, a broader chest, and a straight otter +tail. + +| | Cat | Dog | +|---|---|---| +| Excited | hunting crouch, ears back | **play bow**: chest down, rump up, tail flagged | +| Play | bats a butterfly | **fetch**: chases the ball down, carries it home, drops it | +| After exertion | grooms | pants, tongue out | +| Reward | a fish treat | a tennis ball | + +[Full comparison, and every interaction, in the feature guide.](docs/features.md#cat-or-dog) + +### It keeps you on track + +The pet doubles as a quiet productivity companion, and it works out when to leave +you alone. **Focus Guard** reads "busy" from a calendar event that is actually +happening now, from Quiet Hours, or from Work mode, then parks the pet and holds +email, reminders and agent messages back rather than meowing into your +screen-share. Nothing is thrown away: when you are free it sums the lot up in one +line. On top of that sit break and Pomodoro timers, repeating reminders, a pinned +note, IMAP mail alerts, `.ics` calendar nudges, and a live lo-fi jam. + +[All of it, in detail.](docs/features.md#stay-on-track) + ## Quick start The Windows installer is the easy path. No git, no Node, just run it: [![Download the Windows installer](https://img.shields.io/badge/Download_the_Windows_installer-E8930C?style=for-the-badge&logo=windows&logoColor=white)](https://github.com/JOhnsonKC201/pixelpets/releases/latest) -You can also [play with the cat in your browser](https://pixelcat-jet.vercel.app) before installing anything. +You can also [play with the cat in your browser](https://pixelcat-jet.vercel.app) +before installing anything. > [!IMPORTANT] > **Your OS will warn you the first time, and that is expected.** The builds are @@ -162,7 +156,7 @@ You can also [play with the cat in your browser](https://pixelcat-jet.vercel.app > [Privacy](#privacy) and [SECURITY.md](SECURITY.md): the keyboard hook forwards > a single "a key was pressed" boolean and never what you typed. -To run from source (for development, or on macOS) you need git and Node 20 or newer: +To run from source, on any platform, you need git and Node 20 or newer: ```powershell git clone https://github.com/JOhnsonKC201/pixelpets.git @@ -173,226 +167,9 @@ npm start Either way your pet appears in the corner and registers itself to start at login. `npm run autostart:off` turns that off, and the installed version uninstalls like -any other program, from Windows Settings > Apps. - -> [!TIP] -> **Windows, running from source:** `npm start` leaves a console window open behind -> the pet. `launch-pixelpets.vbs` starts the same thing silently, so it works as a -> desktop shortcut (point one at `wscript.exe "\launch-pixelpets.vbs"`). It -> locates the project from its own path, so moving the folder does not break it. - -> [!NOTE] -> **macOS (beta):** same commands. On first run, grant Accessibility permission -> (System Settings > Privacy & Security > Accessibility) so your pet can react to your -> typing and cursor. Input is only detected, never logged or sent anywhere. The mac -> port is code-complete but not yet smoke-tested on real hardware; see the -> [build checklist](#build-a-standalone-app). Issues welcome. - ---- - -## Meet the cat - -The whole point: a pet that *feels* alive on your desktop. It reacts to touch, -to your cursor, to your typing, and to its own internal mood. - -| Interaction | What the cat does | -|-------------|-------------------| -| **Drag it** | Stretches like mochi (head and feet stay solid while the body thins), then squashes and bounces back. Shake it side to side and it wobbles like jello with a startled mrrp. It stays where you drop it. | -| **Pet its head** | Squeezes its eyes shut, wiggles, floats little hearts, and purrs. The squint holds through the whole stroke, not just when your hand stops moving. | -| **Touch its body** | Squints just as happily, leans and arches into your hand, tail up, trilling. | -| **Tap it** | A quick pet: happy eyes, hearts, a chirp. | -| **Move your cursor** | The cat watches it and blinks now and then. Flick the cursor fast and it crouches, stalks, and pounces. A sudden jolt startles it: it puffs up, freezes, then bolts or creeps back. | -| **Type in any app** | It leans onto two big keys and kneads them with its paws. Type fast enough and it overheats, turning red with steam, then cools down. | -| **Scroll anywhere** | Coats with hand-painted climb art grab a yarn rope and haul themselves up it, hand over hand, with a ball of yarn on the floor below. Every other coat, and every dog, rears up and swipes at a leaf blowing past in the direction you are scrolling, faster the harder you flick the wheel. | -| **Wait for a visitor** | Once in a while a butterfly flutters in. The cat tracks it, swats at it, and occasionally pounces and catches it between its paws before it flutters off. Step away from the keyboard and one comes out on its own, so the pet always has something to play with. Keep a dog instead and it starts its own game of fetch rather than waiting on a butterfly. | -| **Leave it be** | Left alone it keeps itself busy: it bats a drifting leaf with a paw, washes its face, loafs, and its whiskers twitch. Lively without ever getting in your way. | -| **Come back** | Return after being away and the cat notices you: happy eyes, a little heart, and a friendly chirp hello. | -| **Give it a treat** | Pick "Give a treat" from the tray and a little fish drops in. The cat trots over and noms it with hearts and a happy chirp. | -| **Late at night** | After 23:00 the cat winds down. It settles to calm faster and loafs or dozes more, though a nudge still rouses it. | - -
-Coats and pixel art: 14 built-in patterns, custom coats, a polished sticker look - -- 14 coat patterns: Orange, Mackerel, and Brown tabby, Siamese, Tuxedo, Black, - Gray, White, Cream, Tortoiseshell, Calico, Slate, Chocolate (a solid warm-brown - Havana with green eyes), and Russian Blue (cool blue-grey with green eyes). It - ships as Mackerel Tabby; right-click the cat to cycle, and your choice is remembered. -- Custom coats: design your own (see [Custom coats](#custom-coats)). -- The pixel art has a white sticker outline that pops on any wallpaper, soft - top-lit shading, whiskers, a ground shadow, and sparkly eyes. -- The cat is one role-coded sprite recolored per pattern at draw time, so a - dozen cats come from one shape, and shading, outline, and the overheat tint - apply to every coat for free. - -
- -
-Moods and energy: calm, playful, or zoomies, driven by what you do - -The cat tracks an internal energy value (0 to 100) that decays over time and is -bumped by stimuli: typing, scrolling, fast-mouse play, petting, an AI agent -finishing. Energy maps to three mood bands that gate and scale every reaction: - -| Band | Energy | Behaviour | -|------|--------|-----------| -| **Calm** | 0-50 | Mellow, with small and infrequent idle moves (loafs, grooms) | -| **Playful** | 51-80 | Full reactions (the original feel) | -| **Zoomies** | 81-100 | Frantic and fast, then a hard crash back toward calm | - -Keep it busy and it gets the zoomies, then settles back down. Startle fires on -an abrupt cursor jump (no microphone, fully local). The whole system turns off -with the Mood reactions toggle (Settings or tray) for the classic always-playful -behaviour, and the tray Mood submenu has "Zoomies!" and "Calm down" to drive the -model on demand. - -
- -
-Sound: synthesized meow, purr, chirp, and mrrp, with no audio files - -The meow is a voiced sawtooth shaped by a moving mouth formant (it opens into -the "ee" and closes through the "ow"), with a breath of air on the onset and -gentle vibrato. Each meow randomly comes out as a short mew, a two-syllable -meow, or a drawn-out meeow, so it never sounds canned, and pitch and length -also vary by cat species. There is also a purr, a rolled chirrup trill (the -flutter cats greet you with), and a startled mrrp. All of it is synthesized -with Web Audio in code, so there are no audio assets to ship. Toggle it in -Settings. - -
- -
-Desktop-pet overlay: floats over everything, never blocks your clicks - -A full-screen, transparent, click-through layer: the cat floats over everything -but only the cat itself is interactive. It stays on top of every app (it -re-asserts top-most, even over fullscreen windows), and you can confine it to a -play area by picking a tray preset or drawing one with the mouse (tray > Set -play area). It starts at login by registering itself in Windows startup. - -
- -## Stay on track - -pixelpets doubles as a quiet productivity companion. Every alert comes through -your pet, as a meow or a bark and a speech bubble, with an optional real -desktop notification. - -
-Focus Guard: the pet works out when to leave you alone - -A desktop pet that meows into the middle of a screen-share is a desktop pet you -uninstall. Focus Guard is the pet noticing you are busy without being told. - -It reads "busy" from a calendar event that is actually happening now (an all-day -block is explicitly not a meeting, so *Vacation* cannot silence it for a whole -day), from Quiet Hours, or from Work mode. While you are busy the pet parks in -its rest corner and stops chasing things, and email, reminders and agent -messages **wait** rather than interrupt. - -Nothing is thrown away. Held messages still land in the tray recap as they -arrive, and when you are free the pet sums them up in one line - *"While you -were busy: 3 new emails and 1 reminder."* Calendar nudges always come through, -because being told about the meeting you are about to miss is the opposite of an -interruption, and you can name senders under **Always tell me about** so the -people who matter reach you anyway. - -
- -
-Quiet hours: a nightly do-not-disturb window - -Set a From and To time and the pet goes silent between them - no meow, no -desktop notification. The speech bubble still appears, so a reminder that lands -at 3am is waiting for you in the morning rather than lost. - -
- -
-Timers: break reminders and Pomodoro - -- Break timer: pick an interval and the cat grows big to stretch with you and - meows, on a schedule. Or "Start break now." -- Pomodoro timer: set focus and break loops, and a pixel timer floats next to - the cat (a tomato dot for focus, green for break). At the end of each focus - block the cat stretches with you; when the break ends it meows "Back to - focus!". Toggle in Settings or the tray. - -
- -
-Lobby Jam: synthesized lo-fi study music the cat plays live - -Flip on Lobby Jam (Settings or the tray submenu) and the cat picks up a little -guitar and plays an endlessly improvising lo-fi loop: plucked Karplus-Strong -guitar over lazy jazz voicings, soft bass, brushed percussion, and tape warmth. -It is all Web Audio, generated live, with no audio files. Pick a mood: - -| Mood | For | -|------|-----| -| **Cozy café** | A warm, easy background loop | -| **Dreamy** | Slow and washed out, with lots of reverb | -| **Upbeat lounge** | Brighter and a touch faster | -| **Deep focus** | Steady and minimal, almost no flourishes, so it stays out of the way while you work | -| **Rainy study** | A cozy loop over a soft, gusting rain bed | -| **Sleepy night** | Very slow, warm, and dark, for late-night wind-down | - -The music mixes through the same Volume control as the meow and purr, and the -floating notes and the cat's strumming bob along in time with the beat. - -
- -
-Reminders and notes: timed, repeating, snoozable - -- Reminders: set a time and a message and the cat meows and shows a speech - bubble. Reminders can repeat (daily, weekdays, specific weekdays, or once), - can be snoozed from the tray, and support `{name}`, `{time}`, and `{date}` - placeholders. -- Pinned note: pin an important message and it stays in a bubble above the - cat's head until you clear it. Reminders briefly take over, then it returns. -- It calls you by name: tell the cat your name in Settings (or use `{name}`) - and it greets you with it. -- Desktop alerts: every reminder can also raise a real Windows notification and - a sound, so you never miss one when you are not looking at the cat. - -
- -
-Mail and calendar: IMAP unread alerts and .ics event nudges - -- Unread-mail alerts: point the cat at your IMAP inbox (Gmail, Outlook, anything - IMAP) and it tells you who the mail is from - *"Alice: Budget review"* - so you - can decide from the bubble instead of going to look. Name the senders you never - want to miss under **Always tell me about**, and they reach you even while - Focus Guard is holding everything else back; a bare domain like `@acme.com` - covers everyone there. Your app password is stored encrypted at rest (Electron - `safeStorage`, which is DPAPI on Windows), never in `settings.json`, and the - IMAP connection runs in an isolated worker process. -- Calendar nudges: paste your calendar's secret `.ics` URL (Google and Outlook - both provide one) and the cat nudges you a few minutes before each event. The - feed is fetched and parsed in an isolated worker. - -
- -
-Notify the cat: push any message from a script, CI, or cron job - -Any script or tool can make the cat deliver an arbitrary message: a speech -bubble, a Windows toast, and a meow. - -```bash -node scripts/notify.js "Build finished" --title CI --level success -node scripts/notify.js "Coffee break ☕" --ttl 8000 -echo "anything" | node scripts/notify.js "Deploy done" # hook-safe (drains stdin) -``` - -Flags: `--title `, `--level info|success|warn|alert`, `--ttl `, -`--no-sound`. The script appends one JSON line to `%TEMP%/pixelcat-notify.jsonl` -and the running pet tails the file. Lines written before the pet launched are -ignored (no backlog replay), and calling it while the pet is closed is harmless. - -
+any other program, from Windows Settings > Apps. Running from source has two +platform notes (a silent Windows launcher, and the macOS Accessibility grant) +covered in the [development guide](docs/development.md). ## Controls @@ -410,275 +187,90 @@ ignored (no backlog replay), and calling it while the pet is closed is harmless. Settings persist to `settings.json` in your per-user app-data folder (`%APPDATA%/pixelpets/` on Windows, `~/Library/Application Support/pixelpets/` on -macOS). An install that predates the rename is migrated across on first launch. Timers and reminders only fire while -pixelpets is running, and reminder times use your local clock. +macOS). An install that predates the rename is migrated across on first launch. +Timers and reminders only fire while pixelpets is running, and reminder times use +your local clock. ## AI agent reactions -The cat reacts to a coding agent's work status, and it uses its paws to do it. -It raises a paw to its chin to ponder (with a "…" bubble) while an agent like -Claude Code, Codex, or Cursor thinks, taps a paw along with a spinner while it -works, and does a happy hop and meow when it finishes. Any tool can signal it by -running the bundled helper, which writes a tiny status file the cat watches +The cat reacts to a coding agent's work status, and it uses its paws to do it. It +raises a paw to its chin to ponder while an agent like Claude Code, Codex, or +Cursor thinks, taps a paw along with a spinner while it works, and does a happy +hop and meow when it finishes. Any tool can signal it by running the bundled +helper, which writes a tiny status file the cat watches (`%TEMP%/pixelcat-agent.state`): ```bash node agent-hook.js thinking # ponders, paw to chin + "…" bubble -node agent-hook.js editing # taps a paw + "working" spinner (also: writing/testing/building/running) +node agent-hook.js editing # taps a paw + "working" spinner node agent-hook.js error # the cat startles (flinch) node agent-hook.js done # happy hop + meow node agent-hook.js idle # back to normal ``` -Ready-to-use hook configs for five agents live in [`integrations/`](integrations/). -Copy the one for your agent and replace the path with your checkout: - -| Agent | Setup | -|-------|-------| -| **Claude Code** | merge [`integrations/claude-code/settings.hooks.json`](integrations/claude-code/) into `~/.claude/settings.json` | -| **Codex CLI** | merge [`integrations/codex/config.toml`](integrations/codex/) into `~/.codex/config.toml` | -| **Cursor** | copy [`integrations/cursor/hooks.json`](integrations/cursor/) to `/.cursor/hooks.json` | -| **Antigravity** | add hooks to `.agents/hooks.json`, per [`integrations/antigravity/`](integrations/antigravity/) | -| **Kiro** | add hooks via the Agent Hooks UI, per [`integrations/kiro/`](integrations/kiro/) | - -The mapping: prompt and submit events signal `thinking`, tool calls and file -edits signal `working`, and stop or complete signals `done`. Use the absolute -path to `agent-hook.js`, since hooks run from varying directories (forward -slashes work on Windows too). The helper is hook-safe: it drains stdin and -replies `{"continue": true}`, so it never blocks or alters your agent. - -> Tip: `node scripts/install-hook.js ` (or `npm run hook -- `) -> prints the config with the absolute path already filled in. +Ready-to-use configs for **Claude Code, Codex CLI, Cursor, Antigravity and Kiro** +live in [`integrations/`](integrations/), and `npm run hook -- ` prints +yours with the absolute path already filled in. The helper is hook-safe: it +drains stdin and replies `{"continue": true}`, so it never blocks or alters your +agent. The richer status reactions were inspired by the open-source AI desktop pets -[openpets](https://github.com/alvinunreal/openpets) (MIT) and -[clawd-on-desk](https://github.com/rullerzhou-afk/clawd-on-desk) (AGPL-3.0). +openpets (MIT) and +clawd-on-desk (AGPL-3.0). Ideas only; all code here is original to pixelpets. -## Custom coats - -Design your own under Settings > Pet > Custom coats > "+ Add a custom coat": pick -a name, a body build (standard, slender, stocky, or fluffy), optional tabby -stripes, and eight colours (coat, marks, white, patch, eyes, nose, inner ear, -outline). Your coat shows up in the Coat dropdown and the tray menu next to the -14 built-ins. Custom coats are built from the cat's geometry, so they apply to -cats only; the Pet tab says so when a dog is selected. - -Custom coats live in `themes.json` in your app-data folder -(`%APPDATA%/pixelpets/themes.json`) and can be hand-edited too: - -```json -{ "themes": [ - { "name": "Galaxy", "build": "fluffy", "tabby": false, - "coat": "#3b2f63", "mark": "#2a2147", "white": "#c9c0e8", "patch": "#7a5cc0", - "eye": "#7fd6ff", "nose": "#e0a0c0", "inner": "#9a7ad0", "outline": "#15101f" } ] } -``` - -Every colour role is required and must be a `#rrggbb` hex (invalid themes are -skipped). Preview one without the overlay: `npx electron . --shot --pattern=galaxy`. -Share coats with Export and Import in the same panel; they write and read a JSON -file, and imported coats merge into your set by name. - -## Build a standalone app - -```powershell -npm run pack # portable build -> dist/win-unpacked/pixelpets.exe (no installer) -npm run dist # Windows installer -> dist/pixelpets Setup .exe -``` - -`pack` works out of the box. `dist` (the NSIS installer) needs permission to -create symlinks while electron-builder unpacks its bundled signing tools: -enable Windows Developer Mode (Settings > Privacy & security > For developers) -or run the build once from an Administrator terminal. The native `uiohook-napi` -module ships N-API prebuilds, so `npmRebuild` is disabled in the build config -and no Visual Studio is needed. `npm run icon` regenerates the procedural app -and tray icons. - -**macOS:** `npm run dist:mac` (on a Mac) builds a dmg and zip for Apple Silicon -and Intel; the release workflow also builds them in CI on every version tag. -Builds are ad-hoc signed rather than notarized, so Gatekeeper still asks before -the first launch: open it once, then **System Settings > Privacy & Security > -Open Anyway**. (The ad-hoc seal matters for more than the warning - macOS keys the -Accessibility grant and the Keychain entry to a code signature, so without it both -would be thrown away on every update.) The mac port -is code-complete but not yet smoke-tested on real hardware. If you have a Mac, -the checklist is: the overlay shows over all apps and Spaces (including -fullscreen), clicks pass through except on the cat, the typing reaction works -after granting Accessibility, the cat rests on the Dock edge (not the menu -bar), the tray menu works in the menu bar, and login launch works. - -## Drive it from an iPad - -``` -npm run ipad:lan -``` - -That prints a URL. Open it in Safari on the iPad and you have a real terminal - `vim`, -`top`, tab completion, colours - on **this** machine. Share → Add to Home Screen gives -it an icon and a full-screen window. - -The honest limitation first, because it is the reason the tool works this way: nothing -running on an iPad can control other iPad apps. iPadOS sandboxes every app, Apple -exposes no API for cross-app control, and no terminal on the App Store gets around it - -Shortcuts is the only sanctioned path, and only for apps that publish App Intents. So -this puts the shell on the computer, where a shell is worth having, and lets the iPad be -the screen and the keyboard. - -It is built for a tablet: a key bar supplies the Esc, Tab, Ctrl and arrows the soft -keyboard lacks, and because Safari suspends a backgrounded tab, the shell outlives the -connection and replays exactly the output you missed when you come back. - -It is a shell running as you, over plain HTTP. Fine on your own Wi-Fi, not fine anywhere -else - see [`tools/ipad-terminal/`](tools/ipad-terminal/) for the full notes. - -## How it works - -- The cat is one role-coded sprite (outline, coat, markings, white, patch, eye, - nose, inner ear) built procedurally, then recolored per pattern at draw time, - so a dozen cats come from one shape. -- Every pose is composed into that same grid, including the limbs. A raised paw - is made of the same cells as the rest of the pet, so it picks up the coat's - shading, outline halo, markings and breathing scale for free. Nothing is - painted on top afterwards. That is why washing, pondering, batting a leaf, - boxing at the butterfly and swiping at the scroll leaf all work in all 15 coats - and both species without a single extra sprite asset. -- Poses that vary continuously (how high a paw is raised, how far it reaches, - which paw is mid-swipe) are quantised to a handful of steps and memoised, and - built only for the coat currently on screen. Pixel art wants stepped limbs - anyway, so the cheap thing and the right-looking thing are the same thing. -- Rendering happens on an HTML canvas in a full-screen transparent Electron - window. Ordinary screenshots cannot capture it (it is GPU-composited), so - previews use a self-capture: - `electron . --shot --pattern= [--species=cat|dog] [--state=] [--at=]`. -- The mochi drag is a spring system (a pinned handle plus a trailing body - point) with a three-band stretch that keeps the head and feet rigid. -- Break timers and reminders are scheduled in the main process (the renderer - throttles and pauses when idle), which pushes fire events to the cat over - IPC. Sound is synthesized with Web Audio in the renderer, so there are no - audio assets to ship: every meow, bark, purr, pant, swipe and thud is - generated live, and so is the lo-fi jam. - -### Project layout - -``` -pixelpets/ - src/ - main.js # overlay window, global input hooks, tray + menu, - # scheduler (breaks, reminders, Pomodoro), config IPC - renderer.js # the pet: sprites, palettes, physics, reactions, sound - preload.js # safe IPC bridge for the overlay - cat-sprite.js # the role-coded cat, mirrored to site/ for the browser demo - dog-sprite.js # the Black Lab, and the poses composed from it - pets.js # per-species registry: menu labels, IPC channels, copy - patterns.js # shared coat list, recolored at draw time - art-frames.js # baked hand-painted poses that win over the composer - climb-frames.js # the yarn-rope climb, per coat - audio.js # synthesized voice: meow, purr, bark, pant, chirp - jam.js # the live lo-fi jam, generated bar by bar - effects.js / bubble.js # hearts and leaves, and the speech bubble - focus.js # when to leave you alone: meetings, work mode, quiet hours - quiet-hours.js # the nightly do-not-disturb window - mail.js / mail-worker.js # IMAP unread-mail checks (isolated worker) - cal.js / cal-worker.js # .ics calendar feed (isolated worker) - config.js # settings.json load/save/normalize (per-user app data) - datadir.js # one-time rescue of that folder after the rename - themes.js # custom-coat load/validate - template.js # message placeholders: {name}, {time}, {date}, {count} - index.html # the overlay page - settings*.{html,js} # settings window + its IPC bridge - tests/ # node:test suites, no Electron and no GPU required - scripts/ # the vm harness, icon and demo generators, notify.js, - # install-hook.js, the boot check - tools/ipad-terminal/ # browser terminal for this machine, driven from an iPad - integrations/ # ready-made agent hook configs (5 agents) - assets/ # generated icons, showcase, hero + gallery clips - site/ # the browser demo deployed to Vercel - docs/ # frame-pack guide, and the early coat studies - extras/ # the standalone Lobby Jam page - .github/ # CI and release workflows, issue and PR templates -``` - ## Privacy Your pet reacts to your typing and scrolling, which means it listens to global input events, so here is the plain statement: input is used only to trigger -animations, in the moment, on your machine. Keystrokes are never logged, -stored, or sent anywhere. There is no telemetry and no auto-update. The app -makes no network connections at all unless you set up the optional mail or -calendar alerts, and those talk only to the servers you point them at, from -isolated worker processes. Your IMAP app password is stored encrypted at rest -(Electron `safeStorage`) and never written to `settings.json`. +animations, in the moment, on your machine. Keystrokes are never logged, stored, +or sent anywhere. There is no telemetry and no auto-update. The app makes no +network connections at all unless you set up the optional mail or calendar +alerts, and those talk only to the servers you point them at, from isolated +worker processes. Your IMAP app password is stored encrypted at rest (Electron +`safeStorage`) and never written to `settings.json`. + +## Documentation + +| Guide | What is in it | +|---|---| +| [Features](docs/features.md) | Every interaction, coat, mood, sound, and productivity feature | +| [Custom coats](docs/custom-coats.md) | Designing, hand-editing, and sharing your own coat | +| [How it works](docs/architecture.md) | One sprite covering 15 coats, and the project layout | +| [Development](docs/development.md) | Running from source, building installers, visual QA | +| [Frame pack](docs/frame-pack.md) | Painting a pose by hand and importing it | +| [Agent hooks](integrations/) | Wiring the pet to Claude Code, Codex, Cursor, Antigravity, Kiro | +| [iPad terminal](tools/ipad-terminal/) | A real terminal for *this* machine, driven from an iPad | ## Development ```powershell -npm start # run the app -npm test # 200+ tests: config and data migration, poses, interactions, - # audio, focus and quiet hours, mail and calendar, site drift -npm run lint # eslint over src, tests, scripts and site (what CI runs) -npm run test:boot # launch the real app and assert it renders a frame -npm run check:hook # does the global input hook load on this Electron? -npm run poses:cat # previews/cat-poses.png (every activity x every coat) -npm run poses:dog # the same for the Black Lab -npm run frames:import -- # import painted PNGs as baked poses -npm run demo:all # regenerate the README media (hero, gallery, carousel) -npm run hook -- cursor # print a path-filled agent hook config -npm run icon # regenerate the tray + app-tile icons +npm start # run the app +npm test # 200+ tests, no Electron and no GPU required +npm run lint # what CI runs, alongside the tests and a real boot check +npm run poses:cat # contact sheet: every activity x every coat, for visual QA ``` -CI runs `npm run lint`, `npm test`, and the boot check on Windows and macOS for -every push and pull request. - -**Painting a pose by hand.** Every pose is composed in code, which is why one -`sit` covers 15 coats and a new coat costs nine hex values instead of an art pass. -The trade is that changing how the pet looks means editing geometry. -`npm run frames:import` is the escape hatch: paint a pose against a placeholder -palette, import it, and it wins over the composer for exactly the coats you name -while everything else keeps composing. Five held poses can be baked (`sit`, -`type`, `loaf`, `rear`, `hunt`); the six raised-limb activities are parameterised -rigs whose limbs sweep through quantised frames, so a still would freeze them. -Palette, naming and the checks the importer runs are in -[docs/frame-pack.md](docs/frame-pack.md). - -**Visual QA.** The overlay is GPU-composited, so ordinary screenshots cannot -capture it. Poses are reviewed with a one-command contact sheet instead: -`npm run poses:cat` renders **every activity across every coat** into one image, -bottom-aligned on a shared floor line so silhouettes can be compared down a -column. It runs headlessly, with no Electron and no GPU, by loading the overlay's -script stack in a vm (`scripts/overlay-vm.js`) and reading the pose grids back -out. That is also what the pose tests drive, so the sheet and the suite are -looking at exactly the same sprites. - -**README media.** The hero banner, the gallery above, and the coat carousel are -all rendered from the same sprite geometry by `scripts/make-demo-gif.js`, in -pure Node with no browser or GPU. Regenerate any one with -`node scripts/make-demo-gif.js [mp4]`, or all of them -with `npm run demo:all`. - -Single poses preview via -`npx electron . --shot --state= --pattern=`. -Add `--at=` to capture an animated pose at a chosen phase (a typing -key-press, say): `npx electron . --shot --state=typing --at=760`. Add -`--note=""` to pin a speech bubble open in the capture, which is how bubble -wrapping and screen-edge clamping get checked against a real font rather than only -in unit tests: `npx electron . --shot --note="a long reminder that has to wrap"`. - -### Tech - -Electron · HTML canvas · Web Audio · [`uiohook-napi`](https://github.com/SnosMe/uiohook-napi) -(system-wide keyboard hook) · [`imapflow`](https://github.com/postalsys/imapflow) · -[`node-ical`](https://github.com/jens-maus/node-ical). +The overlay is GPU-composited, so ordinary screenshots cannot capture it. Visual +changes are reviewed with those contact sheets instead. The full command list, +build instructions, and the macOS beta checklist are in the +[development guide](docs/development.md). ## Contributing Bug reports, ideas, and PRs are all welcome. Start with the -[contributing guide](CONTRIBUTING.md); the [security policy](SECURITY.md) -covers reporting a vulnerability privately. If you own a Mac, running the -[beta checklist](#build-a-standalone-app) and opening an issue with whatever you -see is the single most useful contribution right now: the port is code-complete -and the builds are ad-hoc signed, but nobody has run one on real Apple hardware. Custom coats and desk setups -belong in [Discussions](https://github.com/JOhnsonKC201/pixelpets/discussions), -and release history lives in the [changelog](CHANGELOG.md). +[contributing guide](CONTRIBUTING.md); the [security policy](SECURITY.md) covers +reporting a vulnerability privately. + +If you own a Mac, running the +[beta checklist](docs/development.md#macos-beta-checklist) and opening an issue +with whatever you see is the single most useful contribution right now: the port +is code-complete and the builds are ad-hoc signed, but nobody has run one on real +Apple hardware. + +Custom coats and desk setups belong in +[Discussions](https://github.com/JOhnsonKC201/pixelpets/discussions), and release +history lives in the [changelog](CHANGELOG.md). --- diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..bde69d1 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,25 @@ +# pixelpets documentation + +The [README](../README.md) is the tour. These are the details it links out to. + +| Document | What is in it | +|---|---| +| [features.md](features.md) | Every interaction, coat, mood, sound, and productivity feature | +| [custom-coats.md](custom-coats.md) | Designing, hand-editing, and sharing your own coat | +| [architecture.md](architecture.md) | How one sprite covers 15 coats, and the project layout | +| [development.md](development.md) | Running from source, building installers, visual QA | +| [frame-pack.md](frame-pack.md) | Painting a pose by hand and importing it | +| [reference-art/](reference-art/) | The original hand-drawn coat studies, kept as history | + +Elsewhere in the repo: + +| Location | What is in it | +|---|---| +| [`integrations/`](../integrations/) | Agent hook configs: Claude Code, Codex, Cursor, Antigravity, Kiro | +| [`scripts/`](../scripts/) | What each script does and which are safe to move | +| [`assets/climb/`](../assets/climb/) | Adding hand-painted rope-climb frames for a coat | +| [`tools/ipad-terminal/`](../tools/ipad-terminal/) | Driving this machine from an iPad browser | +| [`tools/lobby-jam/`](../tools/lobby-jam/) | The lo-fi jam generator as a standalone page | +| [CONTRIBUTING.md](../CONTRIBUTING.md) | How to open a good PR here | +| [SECURITY.md](../SECURITY.md) | What the app touches, and reporting a vulnerability | +| [CHANGELOG.md](../CHANGELOG.md) | Release history | diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..19348c4 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,94 @@ +# How it works + +Why one `sit` pose covers fifteen coats and two species, and why the repo ships +no sprite sheets and no audio files. + +## One sprite, recolored + +The cat is one role-coded sprite (outline, coat, markings, white, patch, eye, +nose, inner ear) built procedurally, then recolored per pattern at draw time, so +a dozen cats come from one shape. + +Every pose is composed into that same grid, including the limbs. A raised paw is +made of the same cells as the rest of the pet, so it picks up the coat's shading, +outline halo, markings and breathing scale for free. Nothing is painted on top +afterwards. That is why washing, pondering, batting a leaf, boxing at the +butterfly and swiping at the scroll leaf all work in all 15 coats and both +species without a single extra sprite asset. + +Poses that vary continuously (how high a paw is raised, how far it reaches, which +paw is mid-swipe) are quantised to a handful of steps and memoised, and built +only for the coat currently on screen. Pixel art wants stepped limbs anyway, so +the cheap thing and the right-looking thing are the same thing. + +## Rendering + +Rendering happens on an HTML canvas in a full-screen transparent Electron window. +Ordinary screenshots cannot capture it (it is GPU-composited), so previews use a +self-capture: + +```powershell +electron . --shot --pattern= [--species=cat|dog] [--state=] [--at=] +``` + +The mochi drag is a spring system (a pinned handle plus a trailing body point) +with a three-band stretch that keeps the head and feet rigid. + +## Scheduling and sound + +Break timers and reminders are scheduled in the main process (the renderer +throttles and pauses when idle), which pushes fire events to the cat over IPC. + +Sound is synthesized with Web Audio in the renderer, so there are no audio assets +to ship: every meow, bark, purr, pant, swipe and thud is generated live, and so +is the lo-fi jam. + +## Project layout + +``` +pixelpets/ + src/ + main.js # overlay window, global input hooks, tray + menu, + # scheduler (breaks, reminders, Pomodoro), config IPC + renderer.js # the pet: sprites, palettes, physics, reactions, sound + preload.js # safe IPC bridge for the overlay + cat-sprite.js # the role-coded cat, mirrored to site/ for the browser demo + dog-sprite.js # the Black Lab, and the poses composed from it + pets.js # per-species registry: menu labels, IPC channels, copy + patterns.js # shared coat list, recolored at draw time + art-frames.js # baked hand-painted poses that win over the composer + climb-frames.js # the yarn-rope climb, per coat + audio.js # synthesized voice: meow, purr, bark, pant, chirp + jam.js # the live lo-fi jam, generated bar by bar + effects.js / bubble.js # hearts and leaves, and the speech bubble + focus.js # when to leave you alone: meetings, work mode, quiet hours + quiet-hours.js # the nightly do-not-disturb window + mail.js / mail-worker.js # IMAP unread-mail checks (isolated worker) + cal.js / cal-worker.js # .ics calendar feed (isolated worker) + config.js # settings.json load/save/normalize (per-user app data) + datadir.js # one-time rescue of that folder after the rename + themes.js # custom-coat load/validate + template.js # message placeholders: {name}, {time}, {date}, {count} + index.html # the overlay page + settings*.{html,js} # settings window + its IPC bridge + + tests/ # node:test suites, no Electron and no GPU required + scripts/ # the vm harness, icon and demo generators, notify.js, + # install-hook.js, the boot check (see scripts/README.md) + tools/ # standalone extras: the iPad terminal, the Lobby Jam page + integrations/ # ready-made agent hook configs (5 agents) + assets/ # generated icons, showcase, hero + gallery clips + site/ # the browser demo deployed to Vercel + docs/ # this folder: features, architecture, development, frame pack + .github/ # CI and release workflows, issue and PR templates +``` + +## Entry points that are part of the public surface + +These paths appear in other people's config files, so they do not move: + +| Path | Who depends on it | +|---|---| +| `agent-hook.js` | every user's agent hook config (see [`integrations/`](../integrations/)) | +| `scripts/notify.js` | scripts, CI jobs and cron entries that push a message to the pet | +| `launch-pixelpets.vbs` | Windows desktop shortcuts that start the pet without a console | diff --git a/docs/custom-coats.md b/docs/custom-coats.md new file mode 100644 index 0000000..2d2028b --- /dev/null +++ b/docs/custom-coats.md @@ -0,0 +1,52 @@ +# Custom coats + +Design your own coat under **Settings > Pet > Custom coats > "+ Add a custom +coat"**: pick a name, a body build (standard, slender, stocky, or fluffy), +optional tabby stripes, and eight colours (coat, marks, white, patch, eyes, nose, +inner ear, outline). Your coat shows up in the Coat dropdown and the tray menu +next to the 14 built-ins. + +Custom coats are built from the cat's geometry, so they apply to cats only. The +Pet tab says so when a dog is selected. + +## Where they live + +`themes.json` in your app-data folder, which you can hand-edit too: + +| Platform | Path | +|---|---| +| Windows | `%APPDATA%/pixelpets/themes.json` | +| macOS | `~/Library/Application Support/pixelpets/themes.json` | + +```json +{ "themes": [ + { "name": "Galaxy", "build": "fluffy", "tabby": false, + "coat": "#3b2f63", "mark": "#2a2147", "white": "#c9c0e8", "patch": "#7a5cc0", + "eye": "#7fd6ff", "nose": "#e0a0c0", "inner": "#9a7ad0", "outline": "#15101f" } ] } +``` + +Every colour role is required and must be a `#rrggbb` hex. Invalid themes are +skipped rather than crashing the app. + +## Preview one without the overlay + +```powershell +npx electron . --shot --pattern=galaxy +``` + +## Share them + +Export and Import live in the same Settings panel. They write and read a plain +JSON file, and imported coats merge into your set by name, so sharing a coat is +sending one small file. + +Great coats can become built-ins. Open a +[Discussion](https://github.com/JOhnsonKC201/pixelpets/discussions) with the +export and a screenshot. + +## Painting a pose instead + +Custom coats change *colour*. Changing the pet's *shape* for a given pose is a +different job, and it has its own escape hatch: paint the pose, import it, and it +wins over the composer for exactly the coats you name. See +[frame-pack.md](frame-pack.md). diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..23b5c8e --- /dev/null +++ b/docs/development.md @@ -0,0 +1,137 @@ +# Development + +Run from source, build an installer, and check visual changes on a project whose +output is GPU-composited and cannot be screenshotted. + +Requires git and Node 20 or newer. + +```powershell +git clone https://github.com/JOhnsonKC201/pixelpets.git +cd pixelpets +npm install +npm start +``` + +## Commands + +```powershell +npm start # run the app +npm test # 200+ tests: config and data migration, poses, interactions, + # audio, focus and quiet hours, mail and calendar, site drift +npm run lint # eslint over src, tests and scripts (what CI runs) +npm run test:boot # launch the real app and assert it renders a frame +npm run check:hook # does the global input hook load on this Electron? +npm run poses:cat # previews/cat-poses.png (every activity x every coat) +npm run poses:dog # the same for the Black Lab +npm run frames:import -- # import painted PNGs as baked poses +npm run demo:all # regenerate the README media (hero, gallery, carousel) +npm run hook -- cursor # print a path-filled agent hook config +npm run icon # regenerate the tray + app-tile icons +``` + +CI runs `npm run lint`, `npm test`, and the boot check on Windows and macOS for +every push and pull request. + +> [!TIP] +> **Windows:** `npm start` leaves a console window open behind the pet. +> `launch-pixelpets.vbs` starts the same thing silently, so it works as a desktop +> shortcut (point one at `wscript.exe "\launch-pixelpets.vbs"`). It locates +> the project from its own path, so moving the folder does not break it. + +> [!NOTE] +> **macOS:** same commands. On first run, grant Accessibility permission (System +> Settings > Privacy & Security > Accessibility) so your pet can react to your +> typing and cursor. Input is only detected, never logged or sent anywhere. + +## Build a standalone app + +```powershell +npm run pack # portable build -> dist/win-unpacked/pixelpets.exe (no installer) +npm run dist # Windows installer -> dist/pixelpets Setup .exe +``` + +`pack` works out of the box. `dist` (the NSIS installer) needs permission to +create symlinks while electron-builder unpacks its bundled signing tools: enable +Windows Developer Mode (Settings > Privacy & security > For developers) or run +the build once from an Administrator terminal. The native `uiohook-napi` module +ships N-API prebuilds, so `npmRebuild` is disabled in the build config and no +Visual Studio is needed. + +**macOS:** `npm run dist:mac` (on a Mac) builds a dmg and zip for Apple Silicon +and Intel; the release workflow also builds them in CI on every version tag. +Builds are ad-hoc signed rather than notarized, so Gatekeeper still asks before +the first launch: open it once, then **System Settings > Privacy & Security > +Open Anyway**. The ad-hoc seal matters for more than the warning: macOS keys the +Accessibility grant and the Keychain entry to a code signature, so without it both +would be thrown away on every update. + +### macOS beta checklist + +The mac port is code-complete but has not been smoke-tested on real hardware. If +you own a Mac, running this and opening an issue with whatever you see is the +single most useful contribution to the project right now. + +- [ ] The overlay shows over all apps and Spaces, including fullscreen. +- [ ] Clicks pass through everywhere except on the pet. +- [ ] The typing reaction works after granting Accessibility. +- [ ] The pet rests on the Dock edge, not the menu bar. +- [ ] The tray menu works in the menu bar. +- [ ] Login launch works. + +## Visual QA + +The overlay is GPU-composited, so ordinary screenshots cannot capture it. Poses +are reviewed with a one-command contact sheet instead: + +```powershell +npm run poses:cat +``` + +That renders **every activity across every coat** into one image, bottom-aligned +on a shared floor line so silhouettes can be compared down a column. It runs +headlessly, with no Electron and no GPU, by loading the overlay's script stack in +a vm (`scripts/overlay-vm.js`) and reading the pose grids back out. That is also +what the pose tests drive, so the sheet and the suite are looking at exactly the +same sprites. + +Single poses preview via: + +```powershell +npx electron . --shot --state= --pattern= +``` + +Add `--at=` to capture an animated pose at a chosen phase (a typing key-press, +say): `npx electron . --shot --state=typing --at=760`. Add `--note=""` to +pin a speech bubble open in the capture, which is how bubble wrapping and +screen-edge clamping get checked against a real font rather than only in unit +tests: `npx electron . --shot --note="a long reminder that has to wrap"`. + +## Painting a pose by hand + +Every pose is composed in code, which is why one `sit` covers 15 coats and a new +coat costs nine hex values instead of an art pass. The trade is that changing how +the pet looks means editing geometry. + +`npm run frames:import` is the escape hatch: paint a pose against a placeholder +palette, import it, and it wins over the composer for exactly the coats you name +while everything else keeps composing. Five held poses can be baked (`sit`, +`type`, `loaf`, `rear`, `hunt`); the six raised-limb activities are parameterised +rigs whose limbs sweep through quantised frames, so a still would freeze them. + +Palette, naming and the checks the importer runs are in +[frame-pack.md](frame-pack.md). + +## README media + +The hero banner, the gallery, and the coat carousel are all rendered from the +same sprite geometry by `scripts/make-demo-gif.js`, in pure Node with no browser +or GPU. Regenerate any one with +`node scripts/make-demo-gif.js [mp4]`, or all three with +`npm run demo:all`. + +## Tech + +Electron, HTML canvas, Web Audio, +[`uiohook-napi`](https://github.com/SnosMe/uiohook-napi) (system-wide keyboard +hook), [`imapflow`](https://github.com/postalsys/imapflow), and +[`node-ical`](https://github.com/jens-maus/node-ical). diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 0000000..32d26dc --- /dev/null +++ b/docs/features.md @@ -0,0 +1,215 @@ +# Features + +Everything pixelpets does, in detail. The [README](../README.md) has the short +version; this page is the full catalogue. + +- [Meet the pet](#meet-the-pet) +- [Coats and pixel art](#coats-and-pixel-art) +- [Moods and energy](#moods-and-energy) +- [Sound](#sound) +- [The overlay](#the-overlay) +- [Stay on track](#stay-on-track) + +## Meet the pet + +The whole point: a pet that *feels* alive on your desktop. It reacts to touch, +to your cursor, to your typing, and to its own internal mood. + +| Interaction | What the cat does | +|-------------|-------------------| +| **Drag it** | Stretches like mochi (head and feet stay solid while the body thins), then squashes and bounces back. Shake it side to side and it wobbles like jello with a startled mrrp. It stays where you drop it. | +| **Pet its head** | Squeezes its eyes shut, wiggles, floats little hearts, and purrs. The squint holds through the whole stroke, not just when your hand stops moving. | +| **Touch its body** | Squints just as happily, leans and arches into your hand, tail up, trilling. | +| **Tap it** | A quick pet: happy eyes, hearts, a chirp. | +| **Move your cursor** | The cat watches it and blinks now and then. Flick the cursor fast and it crouches, stalks, and pounces. A sudden jolt startles it: it puffs up, freezes, then bolts or creeps back. | +| **Type in any app** | It leans onto two big keys and kneads them with its paws. Type fast enough and it overheats, turning red with steam, then cools down. | +| **Scroll anywhere** | Coats with hand-painted climb art grab a yarn rope and haul themselves up it, hand over hand, with a ball of yarn on the floor below. Every other coat, and every dog, rears up and swipes at a leaf blowing past in the direction you are scrolling, faster the harder you flick the wheel. | +| **Wait for a visitor** | Once in a while a butterfly flutters in. The cat tracks it, swats at it, and occasionally pounces and catches it between its paws before it flutters off. Step away from the keyboard and one comes out on its own, so the pet always has something to play with. Keep a dog instead and it starts its own game of fetch rather than waiting on a butterfly. | +| **Leave it be** | Left alone it keeps itself busy: it bats a drifting leaf with a paw, washes its face, loafs, and its whiskers twitch. Lively without ever getting in your way. | +| **Come back** | Return after being away and the cat notices you: happy eyes, a little heart, and a friendly chirp hello. | +| **Give it a treat** | Pick "Give a treat" from the tray and a little fish drops in. The cat trots over and noms it with hearts and a happy chirp. | +| **Late at night** | After 23:00 the cat winds down. It settles to calm faster and loafs or dozes more, though a nudge still rouses it. | + +### Cat or dog + +Pick your species from the tray (**Pet > Cat / Dog**). Each one keeps its own +coat choice, so switching back and forth never loses your pick. + +| | Cat | Dog | +|---|---|---| +| Coats | 14 coats, from Orange Tabby to Russian Blue | the Black Lab | +| Resting | loafs into a "cat bread" | curls nose-to-tail into a ring | +| Excited | hunting crouch, ears back | **play bow**: chest down, rump up, tail flagged | +| Tail | slow rolling S-curve, tip flicks | fast wag from the base, shaped per breed (curl / plume / feather / stub / straight) | +| Play | bats a butterfly | **fetch**: chases the ball down, carries it home, drops it | +| Left alone | a butterfly flutters in | starts its own game of fetch | +| After exertion | grooms | pants, tongue out | +| Scroll | climbs a yarn rope, or swipes at a blowing leaf, depending on the coat | rears into a beg and swipes at the leaf | +| Reward | a fish treat | a tennis ball | + +The dog is not a recoloured cat. It has its own sprite module with a muzzle that +protrudes past the skull line, floppy ears, a broader chest, and a straight +otter tail. Markings are coat *structures* rather than palette swaps, and the +build archetypes behind them (spotted, saddled, tricolour, masked, merle, and +the short-legged dwarf silhouette) are still in the sprite module for any breed +added back later. + +```bash +npm run poses:dog # previews/dog-poses.png - every breed x every ACTIVITY +npm run poses:cat # previews/cat-poses.png - 14 coats x 11 activities +npm run sheet:dog # previews/dog-sheet.png - the five base poses only +``` + +## Coats and pixel art + +- 14 coat patterns: Orange, Mackerel, and Brown tabby, Siamese, Tuxedo, Black, + Gray, White, Cream, Tortoiseshell, Calico, Slate, Chocolate (a solid warm-brown + Havana with green eyes), and Russian Blue (cool blue-grey with green eyes). It + ships as Mackerel Tabby; right-click the cat to cycle, and your choice is + remembered. +- Custom coats: design your own, documented in [custom-coats.md](custom-coats.md). +- The pixel art has a white sticker outline that pops on any wallpaper, soft + top-lit shading, whiskers, a ground shadow, and sparkly eyes. +- The cat is one role-coded sprite recolored per pattern at draw time, so a + dozen cats come from one shape, and shading, outline, and the overheat tint + apply to every coat for free. + +## Moods and energy + +The cat tracks an internal energy value (0 to 100) that decays over time and is +bumped by stimuli: typing, scrolling, fast-mouse play, petting, an AI agent +finishing. Energy maps to three mood bands that gate and scale every reaction: + +| Band | Energy | Behaviour | +|------|--------|-----------| +| **Calm** | 0-50 | Mellow, with small and infrequent idle moves (loafs, grooms) | +| **Playful** | 51-80 | Full reactions (the original feel) | +| **Zoomies** | 81-100 | Frantic and fast, then a hard crash back toward calm | + +Keep it busy and it gets the zoomies, then settles back down. Startle fires on +an abrupt cursor jump (no microphone, fully local). The whole system turns off +with the Mood reactions toggle (Settings or tray) for the classic always-playful +behaviour, and the tray Mood submenu has "Zoomies!" and "Calm down" to drive the +model on demand. + +## Sound + +The meow is a voiced sawtooth shaped by a moving mouth formant (it opens into +the "ee" and closes through the "ow"), with a breath of air on the onset and +gentle vibrato. Each meow randomly comes out as a short mew, a two-syllable +meow, or a drawn-out meeow, so it never sounds canned, and pitch and length +also vary by cat species. There is also a purr, a rolled chirrup trill (the +flutter cats greet you with), and a startled mrrp. All of it is synthesized +with Web Audio in code, so there are no audio assets to ship. Toggle it in +Settings. + +## The overlay + +A full-screen, transparent, click-through layer: the cat floats over everything +but only the cat itself is interactive. It stays on top of every app (it +re-asserts top-most, even over fullscreen windows), and you can confine it to a +play area by picking a tray preset or drawing one with the mouse (tray > Set +play area). It starts at login by registering itself in Windows startup. + +## Stay on track + +pixelpets doubles as a quiet productivity companion. Every alert comes through +your pet, as a meow or a bark and a speech bubble, with an optional real +desktop notification. + +### Focus Guard + +A desktop pet that meows into the middle of a screen-share is a desktop pet you +uninstall. Focus Guard is the pet noticing you are busy without being told. + +It reads "busy" from a calendar event that is actually happening now (an all-day +block is explicitly not a meeting, so *Vacation* cannot silence it for a whole +day), from Quiet Hours, or from Work mode. While you are busy the pet parks in +its rest corner and stops chasing things, and email, reminders and agent +messages **wait** rather than interrupt. + +Nothing is thrown away. Held messages still land in the tray recap as they +arrive, and when you are free the pet sums them up in one line: *"While you were +busy: 3 new emails and 1 reminder."* Calendar nudges always come through, +because being told about the meeting you are about to miss is the opposite of an +interruption, and you can name senders under **Always tell me about** so the +people who matter reach you anyway. + +### Quiet hours + +Set a From and To time and the pet goes silent between them: no meow, no desktop +notification. The speech bubble still appears, so a reminder that lands at 3am is +waiting for you in the morning rather than lost. + +### Timers + +- Break timer: pick an interval and the cat grows big to stretch with you and + meows, on a schedule. Or "Start break now." +- Pomodoro timer: set focus and break loops, and a pixel timer floats next to the + cat (a tomato dot for focus, green for break). At the end of each focus block + the cat stretches with you; when the break ends it meows "Back to focus!". + Toggle in Settings or the tray. + +### Lobby Jam + +Flip on Lobby Jam (Settings or the tray submenu) and the cat picks up a little +guitar and plays an endlessly improvising lo-fi loop: plucked Karplus-Strong +guitar over lazy jazz voicings, soft bass, brushed percussion, and tape warmth. +It is all Web Audio, generated live, with no audio files. Pick a mood: + +| Mood | For | +|------|-----| +| **Cozy cafe** | A warm, easy background loop | +| **Dreamy** | Slow and washed out, with lots of reverb | +| **Upbeat lounge** | Brighter and a touch faster | +| **Deep focus** | Steady and minimal, almost no flourishes, so it stays out of the way while you work | +| **Rainy study** | A cozy loop over a soft, gusting rain bed | +| **Sleepy night** | Very slow, warm, and dark, for late-night wind-down | + +The music mixes through the same Volume control as the meow and purr, and the +floating notes and the cat's strumming bob along in time with the beat. The same +generator also runs as a standalone page, with no Electron, in +[`tools/lobby-jam/`](../tools/lobby-jam/). + +### Reminders and notes + +- Reminders: set a time and a message and the cat meows and shows a speech + bubble. Reminders can repeat (daily, weekdays, specific weekdays, or once), can + be snoozed from the tray, and support `{name}`, `{time}`, and `{date}` + placeholders. +- Pinned note: pin an important message and it stays in a bubble above the cat's + head until you clear it. Reminders briefly take over, then it returns. +- It calls you by name: tell the cat your name in Settings (or use `{name}`) and + it greets you with it. +- Desktop alerts: every reminder can also raise a real Windows notification and a + sound, so you never miss one when you are not looking at the cat. + +### Mail and calendar + +- Unread-mail alerts: point the cat at your IMAP inbox (Gmail, Outlook, anything + IMAP) and it tells you who the mail is from, as *"Alice: Budget review"*, so + you can decide from the bubble instead of going to look. Name the senders you + never want to miss under **Always tell me about**, and they reach you even + while Focus Guard is holding everything else back; a bare domain like + `@acme.com` covers everyone there. Your app password is stored encrypted at + rest (Electron `safeStorage`, which is DPAPI on Windows), never in + `settings.json`, and the IMAP connection runs in an isolated worker process. +- Calendar nudges: paste your calendar's secret `.ics` URL (Google and Outlook + both provide one) and the cat nudges you a few minutes before each event. The + feed is fetched and parsed in an isolated worker. + +### Notify the pet from a script + +Any script or tool can make the cat deliver an arbitrary message: a speech +bubble, a Windows toast, and a meow. + +```bash +node scripts/notify.js "Build finished" --title CI --level success +node scripts/notify.js "Coffee break" --ttl 8000 +echo "anything" | node scripts/notify.js "Deploy done" # hook-safe (drains stdin) +``` + +Flags: `--title `, `--level info|success|warn|alert`, `--ttl `, +`--no-sound`. The script appends one JSON line to `%TEMP%/pixelcat-notify.jsonl` +and the running pet tails the file. Lines written before the pet launched are +ignored (no backlog replay), and calling it while the pet is closed is harmless. diff --git a/docs/frame-pack.md b/docs/frame-pack.md index 5f0f4a1..064f8e1 100644 --- a/docs/frame-pack.md +++ b/docs/frame-pack.md @@ -1,8 +1,9 @@ # Frame pack: painting poses by hand Every pose the pet holds is composed in code from grid primitives, which is why one -`sit` covers 28 coats and why a new coat costs nine hex values instead of an art -pass. The trade is that improving how the pet *looks* means editing geometry. +`sit` covers 15 coats across two species, and why a new coat costs nine hex +values instead of an art pass. The trade is that improving how the pet *looks* +means editing geometry. This is the escape hatch. Paint a pose, import it, and it wins over the composer for exactly the coats you name. Everything else keeps composing, so a pack of one diff --git a/tests/bridge-paths.test.js b/tests/bridge-paths.test.js index 7d8eac1..095fc41 100644 --- a/tests/bridge-paths.test.js +++ b/tests/bridge-paths.test.js @@ -64,11 +64,23 @@ test('the Windows app identity stays frozen too', () => { 'the installer appId must match the app user model id, or NSIS installs alongside the old copy'); }); -test('the README documents the same bridge paths the code uses', () => { - // The README is how anyone sets these hooks up, so a stale path there sends people - // to a file nothing reads. - const readme = src('README.md'); +test('the docs quote the same bridge paths the code uses', () => { + // The docs are how anyone sets these hooks up, so a stale path there sends people + // to a file nothing reads. Which page carries which path may move as the docs are + // reorganised; what must not happen is a path going undocumented, or documented + // wrong, so this asserts over the whole user-facing set rather than one file. + const PAGES = ['README.md', 'docs/features.md', 'integrations/README.md']; + const docs = PAGES.map((p) => [p, src(p)]); for (const name of [constTmpName('src/main.js', 'AGENT_FILE'), constTmpName('src/main.js', 'NOTIFY_FILE')]) { - assert.ok(readme.includes(name), `README.md should document the bridge path ${name}`); + assert.ok(docs.some(([, text]) => text.includes(name)), + `the bridge path ${name} is documented nowhere in ${PAGES.join(', ')}`); + } + // A page that names the wrong file is worse than one that stays quiet. + const STALE = /%TEMP%\/([\w.-]+\.(?:state|jsonl))/g; + const live = [constTmpName('src/main.js', 'AGENT_FILE'), constTmpName('src/main.js', 'NOTIFY_FILE')]; + for (const [page, text] of docs) { + for (const m of text.matchAll(STALE)) { + assert.ok(live.includes(m[1]), `${page} documents ${m[1]}, which nothing reads`); + } } });