_blogs
// blogs / 20260707.md
// blogs / 20260707.md
Dev Log: July 07 Wrap-up
Overview
Today was mostly spent in 'polish mode.' I finished up that custom Chart.js plugin I started yesterday and spent some time making sure the new API projections weren't breaking the older parts of the dashboard. It’s satisfying when the pieces finally start feeling like a cohesive product rather than a collection of features.
What I Worked On
Taming the Chart Labels
The custom plugin for Chart.js was a bit of a headache. The issue was that on smaller screens, the data labels were overlapping and becoming unreadable. I wrote a small logic gate to check the chart's width and toggle label visibility or rotation based on the available space. It’s a much cleaner look now, especially on mobile. It’s a tiny detail, but it’s the difference between a dashboard that looks professional and one that looks broken.
Fixing the 'Null' Leak
I also went back to the dynamic API projections I worked on earlier this week. I realized that if the frontend requested a field that didn't exist in a specific document, the backend was returning null instead of just omitting the key. This was causing some 'undefined' errors in the UI components that weren't expecting those keys to exist at all. I updated the logic to be a bit more defensive.
// Ensuring we only include fields that actually have data
for (String key : requestedKeys) {
Object value = sourceData.get(key.trim());
if (value != null) {
sanitizedResponse.put(key.trim(), value);
}
}
HomeAlone Update
Good news on the hardware front: the 10 PM reboot for my HomeAlone controller kicked in perfectly last night. The logs show it cleared the memory buffer right before the usual 'heavy' night cycle. It’s a brute-force fix for the flaky connection issues I was seeing, but in the world of DIY hardware, sometimes the simplest solution is the most reliable one.
Wrapping Up
The dashboard is finally in a state where I’m not embarrassed to show it to anyone. Everything feels snappier now that the loaders are localized and the data payloads are leaner. Tomorrow, I’m planning to look into some better error handling for the auth service—right now, if a session expires, it just kind of sits there instead of redirecting. Catch you then.