unhappychoice unhappychoice · 2026-03-23 - 2026-03-29

CSS View Transitions API: fixing flash and adding smooth fades in my blog

Implemented smooth page transitions using the View Transitions API and debugged a flash issue caused by mismatched background colors and transition durations.

The week exploded with 120 commits and 68 reviews, starting with a massive dependency update sprint across 8 different repositories. I automated Ruby and Rust dependency bumps for both my own projects and several external tooling repos, handling multiple version bumps for ffi, parser, insta, and uuid.

The narrative pivot came when I shifted from maintenance to user experience work on my blog. I implemented the CSS View Transitions API for smooth cross-page fades, but immediately hit a visual bug: pages flashed black during transitions. Debugging revealed mismatched background colors between html and body elements combined with asymmetric fade durations (0.2s out, 0.3s in) created a transparency window.

I wrapped the week by writing a reflective Japanese blog post about my OSS journey during unemployment, sharing the three principles that guided my 6,000-star project suite. The open PR in ashkulz/committers.top to fix user search by switching to REST API also continued to evolve, highlighting my cross-organization contributions beyond my own ecosystem.

Summary

4 sections
repo-summary
Blog transforms, mdts evolves, dependency marathon elsewhere
My personal repos focused on UX improvements: unhappychoice/blog got View Transitions and a reflective post, while unhappychoice/mdts received task list checkbox styling. Meanwhile, I contributed dependency updates to 7 external organizations including circleci-tools, irasutoya-tools, and bitflyer-tools.
unhappychoice/mdts 11 PRs
unhappychoice/blog 7 PRs
circleci-tools/circleci-cli 7 PRs
irasutoya-tools/irasutoya 7 PRs
unhappychoice/terminal_image 6 PRs
irasutoya-tools/irasutoya-cli 6 PRs
unhappychoice/slack_channel_stats 5 PRs
bitflyer-tools/bitflyer 5 PRs
bitflyer-tools/bitflyer-cli 5 PRs
unhappychoice/gittype 4 PRs
bitflyer-tools/cycle-flyer 3 PRs
unhappychoice/gitlogue 2 PRs
ashkulz/committers.top 1 PRs
unhappychoice/lintric 1 PRs
unhappychoice/zenn-docs 1 PRs
bitflyer-tools/DroidFlyer 1 PRs
unhappychoice/oss-issue-opener 1 PRs
unhappychoice/cycle-cropper 1 PRs
unhappychoice/cycle-pusher 1 PRs
unhappychoice/mdts 11 PRs unhappychoice/blog 7 PRs External orgs 7
deep-dive
View Transitions API: the flash that wasn't supposed to be
Adding @view-transition { navigation: auto } created beautiful fades, but a black flash appeared. The culprit: html had no background (default white) while body/#main used $color-dark. With asymmetric durations (0.2s out vs 0.3s in), both pages hit low opacity simultaneously, revealing the white html background through the dark theme. Fixed by setting html { background: $color-dark }.
PRs 2 (feat + fix) Root cause bg mismatch + duration asymmetry
contribution-summary
Fixing search in ashkulz/committers.top and dependency stewardship
Opened a substantial PR in ashkulz/committers.top (+321/-161 lines) to fix user search sorting by switching from broken GraphQL sort:followers-desc to the REST API. This addresses GitHub's lack of sort:followers support for user search, which caused non-deterministic rankings. Simultaneously, I pushed 15+ dependency bumps across Rust and Ruby ecosystems, handling multiple version bumps for the same libraries across different repos.
External PR size +321/-161 Dependency bumps 15+
activity-pattern
Three-day sprint then coast: commitment rhythm
Commits formed a classic burst pattern: 62→134→105→104 over the first four days (Mon-Thu), then dropped to 89→22→26. The 134-commit Tuesday peak coincided with the bulk of dependency updates. 68 reviews were distributed throughout, suggesting I balanced pushing code with reviewing others' work, likely during the coast phase later in the week.
62
Mon
134
Tue
105
Wed
104
Thu
89
Fri
22
Sat
26
Sun
Peak day Tue (134 commits) Total commits 120 Reviews 68

Highlights

3 items
pr
ashkulz/committers.top · opened · +321 -161 · 4 files
This fixes a critical bug where GitHub's GraphQL user search ignored sort:followers, causing random rankings and missing users. Switching to REST API ensures deterministic, correct leaderboards.
pr
unhappychoice/blog · merged · +97 -0 · 1 files
A personal milestone reflecting on my OSS journey during unemployment, documenting the three principles (invent, don't skip UI/UX, design including marketing) behind my 6,000-star project suite.
pr
unhappychoice/blog · merged · +22 -0 · 2 files
Implemented progressive enhancement using CSS View Transitions API, creating natural 0.2s fade-out / 0.3s fade-in effects on same-origin navigation. The companion fix PR resolved the flash bug this initially introduced.
Share 𝕏 in 🦋