Development Diary - January 21, 2026
📋Daily Summary
Big release day! Prepared and submitted v2.0.0 builds for both iOS TestFlight and Android APK. Implemented the "Public" badge indicator that shows when a note has been shared, with a tap-to-share feature. Also created the v2.0 marketing plan with four real-life scenario-based campaigns showcasing the MODE Framework.
🕐Work Sessions
Session 1: Build & Deployment Fixes (12:35 AM - 3:52 AM)
Focus: Resolving Vercel deployment and build configuration issues
Activities:
- Investigated and fixed Vercel deployment failures related to root directory configuration
- Updated build configuration for EAS local builds
- Added pnpm hoisting config to resolve dependency issues
- Added Features link to website homepage header
Key Decision: Reverted apps/expo root directory to null since custom configuration didn't work with Vercel's deployment system.
Session 2: Marketing Plan Creation (12:36 AM - 3:51 AM)
Focus: v2.0 MODE Framework Marketing Campaign
Activities:
- Created comprehensive marketing plan for v2.0 launch
- Designed four real-life scenario campaigns:
- "The Trip That Planned Itself" (Manager Agent)
- "The Idea That Grew Up" (Muse Agent)
- "The Recipe I Actually Used" (Librarian Agent)
- "The Memory That Came Back" (Biographer Agent)
- Made campaign content viewable on marketing dashboard
- Published diary entries for Jan 19 and Jan 20
Session 3: Version 2.0.0 Release (3:53 AM - 2:30 PM)
Focus: Building and submitting v2.0.0 releases
Activities:
- Updated package.json version to 2.0.0 (was out of sync with app.json)
- Built Android APK locally for distribution
- Submitted iOS build to TestFlight
- Verified version numbers display correctly
Files Changed: 3 files (version updates)
Session 4: Public Badge Feature (2:30 PM - 9:25 PM)
Focus: Shared notes indicator and security verification
Activities:
- Created
get_share_status_batch()database function for efficient lookups - Built new
shareStatusStorefor caching share status - Implemented
PublicBadgecomponent with green globe icon - Integrated badge into NoteCard with tap-to-share functionality
- Fixed share URL domain consistency (was using Vercel URL on iOS)
- Hardcoded
toonnotes.comas canonical share domain - Cleaned up unused environment variable documentation
Security Verification:
- Confirmed private notes are protected by RLS policies
- Verified share tokens have sufficient entropy (~64 bits)
- Public notes only accessible via valid share tokens
Files Changed: 13 files (+385/-32 lines)
🏷️Categorized Work
Implementation
- Public badge indicator for shared notes
- Share status batch query function
- Share status caching store
- pnpm hoisting config for EAS builds
Release
- Version 2.0.0 build for iOS (TestFlight)
- Version 2.0.0 APK for Android
- Synchronized version across app.json and package.json
Bug Fix
- Fixed share URL using Vercel domain instead of toonnotes.com on iOS
- Fixed Vercel deployment root directory issues
Documentation
- Created v2.0 marketing plan with scenario campaigns
- Removed unused EXPO_PUBLIC_SHARE_BASE_URL documentation
- Published diary entries for Jan 19-20
📝Technical Decisions
Decision: Hardcoded
toonnotes.comas the share URL domain instead of using environment variables. The canonical production domain doesn't need environment-based configuration.
Decision: Implemented batch share status queries to avoid N+1 database calls when loading the notes list.
Learning: Vercel deployment with custom root directory in monorepos requires git integration to be disconnected and CLI-only deploys from the target directory.
📊Statistics
🎯Tomorrow's Focus
- Test v2.0.0 builds on TestFlight and APK distribution
- Continue marketing campaign content creation
- Create visual assets for scenario-based marketing
Generated with ToonNotes Development Diary