- Add blog posts in Markdown (_posts/)
- Build script converts MD to HTML at container build time
- First posts: building with AI lessons, quick start guide
- AGENTS.md documents blog writing style (unixsheikh-inspired)
Fixes#2 - Add website link to app footer
- Add VITE_WEBSITE_URL build arg for configurable website URL
- Add Git Repository and License links to app footer
- Update Join Free Alpha links to open in new tab (target=_blank)
- Add Custom provider for any OpenAI-compatible API
- All providers now support custom headers and parameters
- providerSettings stored per-provider with headers and parameters
- Example: disable thinking in Ollama, add tools, etc.
- Removed docs/ (Starlight)
- Added www/ with pure HTML/CSS/JS landing page
- Product website with features, how it works, get started
- Basic HTML documentation pages (installation, quick start, AI providers)
- Dockerfile.docs now serves static files from www/
- Updated README and AGENTS.md
- Dockerfile.docs for building docs container
- nginx.conf for serving static Starlight site
- docker-compose.yml updated with docs service (--profile docs)
- Updated docs installation/deployment pages
- Automatic browser geolocation capture on event creation
- Reverse geocoding via Nominatim API for place names
- Full-text search with SQLite FTS5
- Calendar view for browsing past entries
- DateNavigator component for day navigation
- SearchModal with Ctrl+K shortcut
- QuickAddWidget with Ctrl+J shortcut
- Starlight documentation site with GitHub Pages deployment
- Multiple AI provider support (Groq, OpenAI, Anthropic, Ollama, LM Studio)
- Multi-user registration support
BREAKING: Events now include latitude/longitude/placeName fields
- Rename Entry→Event throughout frontend and backend
- Change 'journal' terminology to 'diary page'
- Add professional footer with links
- Redirect to diary page after generation
- Error handling for generation failures
- Fix settings to store per-provider configs in providerSettings
- Backend reads API key from providerSettings
- Use prisma db push instead of migrate for schema sync
- Clean up duplicate entries.ts file
Entries now immutable once journal is generated:
- Edit/delete returns ENTRY_IMMUTABLE error if journal exists
- Frontend shows lock message and hides delete button
- Delete Journal button to unlock entries
Task logging now stores full JSON:
- request: full JSON request sent to AI provider
- response: full JSON response from AI provider
- prompt: formatted human-readable prompt
Prompt structure:
1. System prompt
2. Previous diary entries (journals)
3. Today's entries
- Replace creative/warm tone with factual summarization
- Explicitly forbid invention, assumption, or hallucination
- Model must ONLY use information from provided entries
- Acknowledge gaps rather than fill them