- base.js: Fix boot sequence title centering — old formula was off by 1
char for odd-length app names (PULSE, GANDALF). Remove unused `bar`
variable. New logic computes left/right padding independently to
handle both even and odd title lengths correctly.
- node/middleware.js: Prune expired rate-limit entries from Map when
size exceeds 5000 to prevent unbounded memory growth. Also use
req.socket?.remoteAddress as fallback for req.ip.
- README.md: Document lt.beep() in the JS API section. Clarify Quick
Start to distinguish core files from platform-specific helpers.
Note that tableNav.init() and sortTable.init() require explicit calls.
- aesthetic_diff.md: Correct §8 toast icon format — base.js uses
bracketed symbols [✓][✗][!][i], not >> prefix as previously stated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Unified CSS, JavaScript utilities, HTML template, and framework skeleton
files for Tinker Tickets (PHP), PULSE (Node.js), and GANDALF (Flask).
Includes aesthetic_diff.md documenting every divergence between the three
apps with prioritised recommendations for convergence.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>