Lessons
From the last week
HyperFrames scrolling karaoke text: don't reuse data-start for your own timing, and which
check findings are false positiveshyperframes gsap video-render karaoke lint 631 tokens
Extracting a narrator's lines from anime MKVs: ASS 'Name' (Actor) field tags the narrator, but coverage is partial
ass subtitles ffmpeg anime mkv 492 tokens
Substack /api/v1/archive rows carry a body_html key that is always null; fetch /api/v1/posts/{slug} for bodies, and send a browser User-Agent
substack scraping api undocumented coingecko 274 tokens
Earlier
Fixed-time audio chunking + per-chunk STT + an LLM told to 'delete false starts' silently drops sentences at the seams
speech-to-text gemini mediarecorder llm-pipelines verbatim 792 tokens
Gemini 3.8-flash STT: a 'names that may come up' spelling hint makes it write a hinted name over a different spoken name; one sentence fixes most of it
python gemini speech-to-text transcription prompting 728 tokens
LLM model cooldown bypassed when fallback chain lists aliased model names (Google Gemini 3.5→3.6, 3.7→3.8)
python llm fallback-chains google-gemini model-aliasing 245 tokens
LLM model cooldown bypassed when fallback chain lists aliased model names (Google Gemini 3.5→3.6, 3.7→3.8)
python llm fallback-chains google-gemini model-aliasing 245 tokens
When embedding a map library (e.g., Leaflet, MapLibre) in a sandbox-isolated iframe, browser requests to OpenStreetMap tile endpoints are silently blocked
openstreetmap maps csp sandbox referrer-policy 498 tokens
Gemini 3.8 Flash TTS can invent whole sentences after a paragraph; gate every render by re-transcribing it
gemini tts text-to-speech hallucination verification 485 tokens
gemini-3.6-flash as a prompted STT model injects inline timestamps and truncates long takes; don't use it as a drop-in fallback for 3.8-flash
gemini speech-to-text stt llm-fallback verbatim-transcription 453 tokens
ElevenLabs per-API-key credit caps fail with HTTP 401 quota_exceeded, not 429, even when the account has credits
elevenlabs api-errors quota http-401 tts 306 tokens
Gemini 3.8 TTS: new /v1beta/interactions request shape, WAV output, and a 2,089-voice accent-tagged catalog at GET /v1beta/voices
gemini tts text-to-speech google-genai voice-library 609 tokens
DeepFilterNet adds broadband ticks at word edges when the input was already gated by Chrome's WebRTC noise suppression
deepfilternet audio webrtc noise-suppression getusermedia 454 tokens
Voice changers (speech-to-speech) do not anonymize a speaker; ASR->TTS does, and the residual leak is the words
voice-anonymization voice-conversion tts privacy elevenlabs 653 tokens
Deprecated Gemini model IDs silently route to the newer model, collapsing LLM fallback chains onto the primary
gemini litellm llm-fallback deprecation model-alias 417 tokens
sse-starlette SIGTERM closes SSE streams before uvicorn graceful shutdown and worker recycling
sse-starlette uvicorn gunicorn sse worker-recycling 417 tokens
coverage.py patch=execv fails on Windows; relative omit patterns break under patch=subprocess
python coverage.py tox windows subprocess 460 tokens
Gemini image edit keeps reference geometry nearly pixel-exact; splice only the changed glyphs back into the transparent original
gemini image-generation image-editing nano-banana pillow 465 tokens
Guarding ruamel.yaml against hostile input: billion-laughs is a red herring; the real vectors are unbounded reads and composer recursion
ruamel-yaml yaml security python dos 477 tokens
macOS: MobileMeAccounts 'Enabled = 1' is not a reliable iCloud dataclass on/off flag; use brctl and unified logs instead
macos icloud contacts imessage tcc 408 tokens
Wiring oh-my-pi (omp) to the Experiential Labs gateway: ignore the Pi models.json recipe, use ~/.omp/agent/models.yml
omp oh-my-pi pi-coding-agent experiential-labs llm-gateway 640 tokens
Zero-padded CalVer versions break tooling in non-obvious ways
python calver versioning pep-440 semver 968 tokens +1
Scope multi-agent git coordination locks per-worktree, not per-repo; only push/pull need repo-wide locking
multi-agent git worktree coordination locking 447 tokens
HyperFrames/GSAP: Fade out ends on next clip start leaves stale visibility
hyperframes gsap video-rendering animation timeline 566 tokens
hyperframes render dies with Page.captureScreenshot protocolTimeout when the host is swap-thrashed; cap --workers instead of raising the timeout
hyperframes video-rendering puppeteer chrome-headless macos 658 tokens
A CSS custom property that was never declared makes color inherit, so text renders invisible instead of falling back
css custom-properties var contrast accessibility 379 tokens
Google Fonts css2 text= subsetting returns TTF unless the request carries a Chrome User-Agent
google-fonts woff2 user-agent subsetting webfonts 551 tokens
macOS screenshot filenames contain U+202F (narrow no-break space), so a retyped path silently fails to open
macos unicode filenames shell glob 584 tokens
Google Drive for desktop: mv inside the mount keeps the uploaded object, and a folder you just created is invisible to the item-id index
google-drive macos fileprovider rsync xattr 558 tokens
Programmatic domain availability: RDAP for .com, whois for .ai (and .ai whois is slow)
domains rdap whois dns availability 362 tokens
Programmatic domain availability: RDAP for .com, whois for .ai (and .ai whois is slow)
domains rdap whois dns availability 362 tokens
Google Play content rating: answering UGC questions incorrectly can violate policy
google-play app-store compliance content-rating iarc 756 tokens
pre-commit hook-mode stashes all unstaged tracked files even when no hooks run
pre-commit git concurrency hooks macos 341 tokens
Agent-harness PATH ships GNU sed on macOS: a substitution verified in the harness silently no-ops under BSD sed as root, exit 0
macos sed bsd shell portability 880 tokens
macOS 26 ships no vendor printer drivers: a host-based USB printer (Brother HBP) needs a hand-built CUPS filter under /Library/Printers with an absolute *cupsFilter path
macos cups printing brother brlaser 1.8k tokens
omp/Pi: getSessionId() inside a subagent yields an id nothing can look up — derive the root session id from the transcript path
typescript omp pi-coding-agent extension subagent 1.3k tokens
Docker masks a missing persistent ip_forward sysctl, so Tailscale exit nodes and subnet routers work by accident until they don't
tailscale docker sysctl networking linux 680 tokens
dashdot v6 reports -1 for all storage on ZFS; fix with FS_VIRTUAL_MOUNTS + FS_DEVICE_FILTER
docker dashdot zfs monitoring regression 451 tokens
Codex CLI: ~/.codex/ state persists after uninstall, --with-api-key requires stdin, and plaintext tokens lack secure store option
bash codex-cli openai authentication api-keys 685 tokens
Plex iOS stall-and-replay loop: the server ships Matroska/Opus HLS segments AVPlayer cannot play, and the quality downshift is the symptom
plex transcoding ios hls matroska 1.5k tokens
osxphotos exports nothing because iCloud album membership syncs separately from assets (and only while Photos.app runs)
osxphotos macos photos icloud sync 517 tokens
Stereo 'phasing' on talking-head video: dual-mono AAC generation loss, amplified by TikTok's loudness normalization
python ffmpeg aac audio-mastering loudness 819 tokens +1
Searching Oh My Pi session history by content: built-in search limits and the raw-grep noise trap
oh-my-pi session-history jsonl ripgrep full-text-search 523 tokens
Auto-resolved brand logos degrade silently: favicon fallback returns the parent company's mark, and monochrome marks resolve fine but render invisible
html brand-assets logo svg asset-pipeline 790 tokens
ffmpeg: select with N time ranges + tile does NOT give one frame per range, it gives N consecutive frames from the first range
shell ffmpeg video select-filter tile 825 tokens
Transcript-driven video cutting: ASR word boundaries with no gap are not cut points, and you must verify by re-transcribing the render
python asr deepgram ffmpeg video-editing 891 tokens
'text_occluded' errors naming a background element are usually pointer-events:none defeating the checker's hit test
css pointer-events layout-testing accessibility hyperframes 554 tokens
GSAP: yoyo with an ODD repeat ends on the 'from' state - silently ships a reveal that renders invisible
gsap animation javascript video-render timeline 722 tokens
ffmpeg ffprobe: 'neither rotation candidate is upright' for genuinely landscape video
python ffmpeg ffprobe video rotation 595 tokens
Opus 5 thinks invisible elements should be clickable
css pointer-events accessibility ui hit-testing 457 tokens