- NestJS backend with Gemini AI for food photo analysis
- SvelteKit web app with Svelte 5 runes
- Drizzle ORM schema for meals, goals, favorites, recommendations
- Unified auth pages using shared-auth-ui components
- Landing page with Astro
- Shared types and utilities package
The lockfile was not committed when telegram-stats-bot was added,
causing CI to fail with ERR_PNPM_OUTDATED_LOCKFILE.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove auth check before loading data - the stores already handle
guest mode by loading from sessionStorage instead of API.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove the login redirect from the main dashboard page to allow
guest users to access the Clock app without authentication.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Clock: Replace local user-settings store with shared theme store
from @manacore/shared-theme to support nav settings properly
- All apps: Add optional chaining and fallback values when accessing
userSettings.nav.desktopPosition and userSettings.nav.hiddenNavItems
to prevent TypeError when user is not authenticated
Apps fixed: calendar, chat, clock, contacts, manacore, manadeck,
picture, todo
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Users can now use Contacts without signing in.
Data is stored in sessionStorage (lost when tab closes).
Changes:
- Add session-contacts.svelte.ts for temporary local storage
- Add AuthGateModal for login prompts
- Remove auth redirect from app layout
- Add guest mode banner with contact count
- Add sessionStorage return URL handling in login/register
When users sign in, session contacts are migrated to their cloud account.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Users can now use Calendar, Chat, Clock, and Todo without signing in.
Data is stored in sessionStorage (lost when tab closes).
Changes per app:
- Add session storage stores for temporary data
- Add AuthGateModal for login prompts
- Remove auth redirect from app layouts
- Add guest mode banner with item count
- Add sessionStorage return URL handling
When users sign in, session data is migrated to their cloud account.
Adds a NestJS service that delivers Umami analytics via Telegram:
- Telegram commands: /start, /stats, /today, /week, /realtime, /users
- Scheduled reports: Daily at 9:00, Weekly on Monday at 9:00
- Umami API integration with token management
- User statistics from auth database
- Docker + CI/CD pipeline integration
Bot: @stats_mana_bot
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add n8n container with PostgreSQL backend
- Configure webhook URL for n8n.mana.how
- Add persistent volume for n8n data
- Set timezone to Europe/Berlin
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Display latest devlog entries on the homepage
- Show category badges, dates, commits, and read time
- Link to full devlog overview
- Responsive grid layout with hover effects
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add devlog content collection with schema for development reports
- Create devlog index page with card-based post listing
- Create devlog detail page with prose styling for markdown content
- Add first devlog entry: Production Launch (2026-01-23)
- Add devlog link to navbar navigation
- Add i18n translations for devlog in all languages (de, en, it, fr, es)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Comprehensive summary of today's work:
- Mac Mini server setup with auto-start
- Contacts app full deployment
- Monitoring stack (Prometheus, Grafana, Umami)
- Shared landing UI components
- 26 commits total
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- mac-mini-setup.sh: Initial setup script for Mac Mini server
- Installs cloudflared, git via Homebrew
- Clones repository
- Instructions for tunnel setup
- docker-compose.production.yml: Updated production configuration
- Add postgres and redis services inline
- Configure all app services with proper networking
- Add health checks and logging
- Align with Mac Mini deployment structure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Picture Landing: d3ac98e6-0d1a-47a3-a218-2a81fff596bd
- Picture Web: bc552bd2-667d-44b4-a717-0dce6a8db98f
- ManaDeck Web: 314fc57a-c63d-4008-b19e-5e272c0329d6
- Planta Web: 876f30bd-43e3-405a-9697-6157db67ca6b
All landing pages and web apps now have Umami analytics integrated.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add unified pricing components for the Mana credit system:
- Central pricing data with plans, packages, and translations
- ManaPricingSection component with billing toggle and trust indicators
- Pricing pages for Chat and ManaDeck landings
- Footer links updated to /pricing pages
- Add MinIO service for S3-compatible object storage
- Configure contacts-backend with S3 environment variables
- Add minio_data volume
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all tracking script URLs and admin dashboard links to use the
new stats.mana.how subdomain for Umami web analytics.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new reusable components to shared-landing-ui package:
- AppScrollerSection, TimelineSection, MasonryGridSection, PrinciplesSection
- LegalPageTemplate for privacy/terms/cookies/imprint pages
- Navigation component with mobile menu and language switcher
- GradientText and LanguageSwitcher atoms
- i18n system with getLangFromUrl, useTranslations, localizePath
- Theme files for picture (indigo), chat (blue), zitare (teal)
Add legal pages to ManaDeck and Chat landing pages:
- privacy, terms, cookies, imprint pages using shared template
- Updated footers with cookies link
- Switch from @sveltejs/adapter-auto to @sveltejs/adapter-node
- Required for Node.js production deployment in Docker
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Dockerfile for contacts-backend (port 3015)
- Add Dockerfile for contacts-web (port 5184)
- Add docker-entrypoint.sh for database migrations
- Update CI workflow with contacts-backend and contacts-web build jobs
- Add contacts services to docker-compose.macmini.yml
- Update CORS origins to include contacts.mana.how
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add PUBLIC_TODO_BACKEND_URL and PUBLIC_CONTACTS_API_URL environment
variables to calendar-web container for cross-app integrations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- MAIL_SERVER_DEDICATED.md: Full guide for dedicated mail server
on Raspberry Pi 5 or Mini-PC (future setup)
- MAIL_SERVER_MAC_MINI_TEMP.md: Temporary solution running on
Mac Mini using Mailcow Docker (ready to implement)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added missing (app)/+page.svelte that shows:
- Current time display
- Quick links to World Clock, Alarms, Timers, Stopwatch
This fixes the 404 on the root route.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
drizzle-kit looks for drizzle.config.json by default, but project
uses drizzle.config.ts. Added explicit --config flag.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Web apps: check root URL (/) instead of /health (SvelteKit has no health endpoint)
- Todo backend: fix path to /api/v1/health
- Remove redundant PostgreSQL HTTP check (checked via docker exec)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SSH sessions don't inherit the full PATH, so docker command
wasn't found. Now all scripts explicitly add /usr/local/bin
and /opt/homebrew/bin to PATH.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- setup-autostart.sh: Configure launchd services for boot
- startup.sh: Main startup script (waits for Docker, starts containers)
- health-check.sh: Check all services (runs every 5 min)
- status.sh: Full system status overview
- restart.sh: Restart containers (with --pull and --force options)
- stop.sh: Stop all containers gracefully
- README.md: Complete documentation
Includes optional ntfy.sh push notifications for health check failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The alarms page imports 'toast' but the store exported 'toasts'.
Add alias to support both import styles.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add missing files that were never committed:
- Stores: alarms, timers, stopwatch, world-clocks, user-settings, navigation
- API modules: alarms, timers
- Components: WorldMap
- Skeletons: AlarmsSkeleton, TimersSkeleton, WorldClockSkeleton
- Fix clock-landing type-check to not fail on missing deps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add essential files that were never committed to git:
- app.css with Tailwind imports
- theme.svelte.ts store
- toast.ts store
- ToastContainer.svelte component
- AppLoadingSkeleton.svelte component
- i18n setup with de/en locales
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These essential files were never committed:
- svelte.config.js
- vite.config.ts
- tsconfig.json
- src/app.html
Without these, SvelteKit cannot build the app.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The prepare script only runs during local pnpm install, not during
workspace-level installation in Docker. Adding explicit svelte-kit sync
step before vite build to generate SvelteKit entry points.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SvelteKit apps need `svelte-kit sync` to run before build to generate
the entry points. This was missing from several web apps, causing
Docker builds to fail with "Could not resolve entry module 'index.html'".
Fixed apps:
- clock-web
- todo-web
- calendar-web
- manacore-web
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add detect-changes job that analyzes changed files
- Only build services that have changes in their paths
- Detects shared package changes and triggers dependent builds
- Add workflow_dispatch option to force rebuild all services
- Add build summary to GitHub Actions UI
This reduces build time by ~70% when only specific apps change.
Trigger patterns:
- Service path changes → only that service
- Shared packages → dependent services
- pnpm-lock.yaml, ci.yml → all services
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>