You are browsing as a guest. Sign up (or log in) to start making projects!

8h 49m 14s logged

Devlog #4

Spent this round splitting the app into actual pages, fixing a permissions wall I didn’t know existed, and making the galaxy feel less like a static diorama.

New page

The demo mode search input lived in a corner of the galaxy view, which turned out to be a fight I couldn’t win: clicking the canvas locks your pointer for flight controls, so trying to type in an input that shares the screen meant the cursor kept getting stolen mid-keystroke.

Instead of negotiating between the two, I split them. / is now a landing page and the galaxy moved to /g/[user]. The URL now decides whose galaxy you’re looking at, which also means every galaxy is a shareable link for free. I had planned a whole /u/username share system for later and then realized the router had already handed it to me.

Permission issue

Demo mode looked done until I actually clicked into someone else’s repo and got nothing. My server authenticated every tree and file request with the GitHub App’s installation token, and installation tokens can only read repos the app is installed on. Works for my account, 404 for literally anyone else’s.

The fix was boring: try the token first, and if the response isn’t a success, retry anonymously. Public repos don’t need auth anyway. I briefly felt clever for the fallback, then remembered the clever thing would have been thinking about scope the first time.

Stars that burn when you’re active

Two visual features this time. First, activity flares: each repo’s pushed_at becomes a score that decays linearly to zero over 30 days, and that score drives a slow pulse on the star’s point light. Recently pushed repos visibly breathe; abandoned ones sit cold. The idea being you can see what someone is working on lately without reading anything.

Second, search and warp. Type part of a repo name, hit Enter, and the camera lerps itself to a viewpoint just off that star. One detail that mattered: the warp calls document.exitPointerLock() first, because warping while the pointer is locked leaves you staring at a star with no cursor to click anything.

Next up

Deployment, probably. It’s currently a localhost demo, and “check out my galaxy at localhost:3000” impresses no one.

0
61

Comments 0

No comments yet. Be the first!