4 entries — real, dated progress notes for Reels Stüdyo.
Entry 52development
Every run now produces platform descriptions, a hook band and an A/B cover
I closed the five gaps the research file had left unimplemented. Every run now generates a description file per platform and per language, and the "cover text must never repeat the title" rule actually holds: the cover says "AI WROTE THE CODE" while the title says "Day 1: Claude wrote a security patch for my site." I added a hook band of at most 8 words over the 0.4–2.9 second window right after the cover; since it's burned in the same encode there's no extra processing time, and I verified it by pulling the frame at 1.5 seconds. Because the stamp decision has no supporting data, each run now produces both the stamped cover and a "?" variant, so there's fresh material for YouTube's Test & Compare every day. I also lay out the last 9 covers as a profile grid using Instagram's 3:4 crop and added a views/retention note field to the Publications tab; 38/38 tests and the quality gate passed at -14.0 LUFS.
Stopped treating the cover as a separate file and burned it into the video's first frame
I didn't want to answer "text or a video frame on the cover?" by guessing, so I ran 6 researcher agents plus 1 synthesizer in parallel; 68 web searches produced 10 evidence-backed decisions. The most valuable finding: on all three platforms the video autoplays in the feed, so the cover never appears there — it only exists on profile and discovery surfaces. So I burned the cover into the first 0.4 seconds of the video and verified it by extracting the output's first frame. The research overturned three of my earlier decisions: the dark left band is gone (TikTok's grid crops covers to a center square), the circular stamp is gone (it reads as a clickbait signal), and the "pick the shocked face" logic is gone; in their place came a center-block layout, an angled rectangular label, and an evidence card carrying a screenshot of that day's tool. After rebuilding, all 38 unit tests and the quality gate passed again, with duration holding at 19.66 + 0.4 = 20.075 seconds.
Multi-agent research · Cover design · ffmpeg · A/B testing
Entry 46development
Wrote Reels Stüdyo from scratch and installed it as a signed macOS app
I didn't leave the plan on paper: I wrote the StudyoKit video engine, the SwiftUI panel and the CLI the same day, signed the build, and installed it as /Applications/Reels Stüdyo.app. To verify it I produced a test clip from Turkish TTS speech and a real face photo, deliberately dark and quiet; the audio moved from -24.6 LUFS to exactly -14.0, a 25.3-second video came down to 19.6 seconds, and the 0.3-second gap below the threshold was correctly preserved. All 38 unit tests passed, and the quality gate now checks LUFS, resolution, fps, first-frame brightness and duration ratio automatically on every job. When I found that Homebrew's ffmpeg 8.x ships without libass, I wrote subtitle burning myself via CoreText → PNG → overlay; with whisper large-v3-turbo the Turkish transcription came out word-perfect on all four sentences. I also migrated the journal and site infrastructure from my Devam app as GunlukKit — 15 files that compiled without a single line of change.
Swift · SwiftUI · ffmpeg · Apple Vision · whisper.cpp · CoreText
Entry 45research
Locked the vertical video pipeline's standards through research
Before writing any code, I researched the pipeline that turns a phone-shot vertical video into a publish-ready file in one pass: I fixed -14 LUFS as the audio target, 0.4 seconds as the silence-trim threshold, and 1080x1920 at 30 fps as the output. I reworked the cover template twice; in the first draft the text sat in the lower left, and once I saw that Instagram's profile grid crops covers to 3:4, I moved every critical element into the center safe box. For German subtitles I tested Apple's on-device translation engine, found Turkish missing on macOS 26, and routed the path as Turkish → English → German instead. I verified the 2026 API limits of YouTube, Instagram and TikTok one by one and wrote ten decisions into PLAN.md. I deliberately wrote no code in this round.