{"slug":"port-viewer","total":6,"limit":100,"offset":0,"since":null,"commits":[{"hash":"dfc290b","date":"2026-06-11 23:08:31 -0700","author":"Steve Abrams","subject":"Port grid viewer: iframe-per-service grid + per-port & restart-all buttons; fork-starvation resilient (retry lsof, keep last-good cache)","body":""},{"hash":"552078b","date":"2026-06-11 23:01:17 -0700","author":"Steve Abrams","subject":"Add grid.js: live iframe grid of all local web services","body":""},{"hash":"a86bf08","date":"2026-05-19 15:13:18 -0700","author":"Steve Abrams","subject":"broaden .gitignore to cover *.bak.* and *.pre-* snapshot patterns","body":"Standard fleet-wide refactor-sweep rule — keep editor and migration\nsnapshot files out of the repo even if no offenders currently exist.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"d93015a","date":"2026-05-19 15:12:56 -0700","author":"Steve Abrams","subject":"add rel=\"noopener noreferrer\" to external target=\"_blank\" links","body":"Domain card \"🔗\" link and per-port website link both opened external URLs\nin new tabs without rel — tab-nabbing risk closed.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"ee28ffe","date":"2026-05-13 08:57:59 -0700","author":"Steve","subject":"snapshot: 1 file(s) changed, ~1 modified","body":""},{"hash":"363d68c","date":"2026-05-06 10:25:45 -0700","author":"Steve Abrams","subject":"initial scaffold (gitify-all 2026-05-06)","body":""}]}