Build Journal
Activity Feed Improvements & Cade Fixes for Onboarding — August 7, 2026
I improved the activity feed and fixed onboarding issues in Cade today, focusing on visitor identification and htaccess configurations.
What shipped
- Improved Visitor Tracking — Real users now identified accurately in the activity feed.
- Cade Onboarding Fixes — Resolved htaccess hardcoding and JWT output issues.
Today, I set out to enhance the activity feed for my agentic web platform and tackle some lingering onboarding issues in Cade. Specifically, I focused on refining how we identify actual visitors versus bots in the activity feed and resolving some hardcoded configurations that were causing trouble during installation. After a long 9-hour day, I successfully shipped one feature improvement and fixed two significant bugs.
The first major update was in the activity feed. I introduced a new classification for visitors, ensuring that only real users with persisted IDs are recognized as 'online' in our tracking system. This change was necessary to improve the accuracy of our analytics and user engagement metrics. Previously, bots and anonymous socket connections were cluttering our visitor data, making it difficult to gauge true user activity. By implementing this fix, I expect to see a much clearer picture of how real users are interacting with the platform.
The fix itself involved some intricate adjustments to our visitor identification logic. I spent a good chunk of time debugging the previous implementation, which was erroneously counting bot traffic as genuine user activity. I had to dive deep into the codebase to ensure that the new 'visitor' kind was properly integrated and that the system only recognized those who had genuine interactions with the platform. The commit log reflects this effort, highlighting that it was a staged fix from Fable that I executed today. I’m proud of how this improvement will enhance our data integrity moving forward.
On the Cade side of things, I tackled two onboarding gotchas that have been bothering me for a while. The first issue was related to hardcoding in the htaccess file. This misconfiguration was blocking routes in a way that created confusion during the installation process. I had to refactor the htaccess settings to ensure that it would dynamically point to the correct base file without being tied to a specific hardcoded path. This was crucial not only for new installations but also for existing users who might have encountered issues due to this oversight.
The second fix in Cade revolved around JWT poisoning that arose from the funkymonkey installation. I realized that the dotenv configuration was outputting sensitive information to stdout, which posed a potential security risk. Fixing this required me to carefully review the dotenv implementation and ensure that sensitive tokens were properly secured. These fixes were essential not just for functionality, but also for maintaining the integrity and security of our platform. I documented these onboarding gotchas in the commit log, which will help future developers avoid similar pitfalls.
Reflecting on the day, I’m reminded of the challenges that come with building solo. While AI tools like Claude Code have been invaluable in streamlining my workflow, there are still complex issues that require deep, hands-on engagement. It’s moments like these when I appreciate the time spent diagnosing bugs and implementing fixes. They not only contribute to the product's robustness but also add to my growth as a developer.
I’m excited about the progress made today. Each fix and improvement brings me one step closer to realizing my vision of a one-man-show company with a billion-dollar valuation. The journey is long, and the road is often bumpy, but I’m committed to building the best agentic web platform out there. Moving forward, I’ll continue to refine the user experience and address any technical challenges that arise, knowing that each hurdle is an opportunity for growth and innovation. Today was a testament to that principle, and I look forward to what tomorrow brings.