A Windows Desktop Where Icons Clock Out, Fight, and Play Soccer on Their Own
The project is a worked example of AI-assisted development where the model's value isn't one-shot code generation but sustained, multi-turn refinement driven by runtime feedback. The Windows transparency, foreground detection, and DPI pitfalls it hits are the same ones any desktop-tool author faces, making the debugging narrative more instructive than the final toy.
Desktop After Hours scans a user's actual `.lnk` files and spawns animated avatars on a click-through WPF stage. The avatars wander, rest, form relationships, and trigger automatic events—chats, cartoon fights, group dances, parades, and full-roster soccer matches—all without user input beyond an optional "mediate" button. The real desktop shortcuts stay untouched; the overlay hides when any normal application is in the foreground and resumes when the desktop is visible again.
The project started as a single-sentence brainstorm handed to Doubao-Seed-Evolving, which proposed the critical architectural decision to clone icons rather than move native ones. The developer then spent most of the effort on product boundaries—rejecting gamified interactions in favor of a pure ambient toy—and on Windows-specific hurdles like mouse transparency, foreground detection that misidentified companion apps, and a default lineup that initially dumped all 38 shortcuts onto the stage.
Every fix came from running the program on real Windows, capturing the failure, and feeding the concrete result back to the model. The final stack is plain C#, .NET 10, WPF, and Win32 interop, with a separate Core library that lets event rules and cooldowns be unit-tested without waiting for desktop animations.
The most consequential decision was product-boundary work, not technical architecture: rejecting click-to-play game mechanics kept the project scoped as an ambient toy rather than a half-baked game nobody asked for.
AI-generated first drafts still miss real-world edge cases—hidden-panel foreground switching, default-full-lineup clutter, stale UI text—that only surface when the binary runs on actual Windows with other software present.
The model's sustained usefulness came from accepting concrete runtime feedback (screenshots plus error descriptions) and producing targeted fixes, not from generating a complete app in one shot.
Separating event rules into a unit-testable Core library let soccer participation and mediation logic be verified without waiting for desktop animations, a structural choice that paid off as rules grew more complex.
Lowering the render rate to 24 FPS and reusing visual objects is a reminder that desktop toys don't need game-engine framerates; the optimization is obvious in hindsight but easy to skip when chasing smooth animation.