- Add MetricsModule with prom-client for todo backend
- Add MetricsInterceptor for request tracking
- Update COMMANDS.md with presi and storage commands
- Update Grafana dashboards for backend monitoring
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Re-activate presi (presentation tool) and storage (cloud storage)
apps that were previously archived for context reduction.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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
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.
- 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>
- 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
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>
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>
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 drizzle.config.ts to clock-backend
- Add missing shared-types package to all web app Dockerfiles
- Add shared-splitscreen to todo-web Dockerfile
These packages were missing from the Docker build context,
causing TypeScript compilation errors during image builds.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add rememberMe field to sessions schema
- Mock non-existent service imports in tests
- Add missing docker-entrypoint.sh for clock-backend
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Merge till-dev branch containing:
- Planta plant care tracking application
- Clock backend with alarms, timers, world clocks
- Zitare backend with favorites and lists
- Various app improvements and fixes
- Auth system updates
- Infrastructure improvements
Note: Some type-check issues may need resolution after merge.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new Planta project for plant care management with:
Backend (NestJS):
- Plant CRUD with species, location, and care requirements
- Watering tracking and scheduling
- Photo management with S3 storage
- AI-powered plant analysis using Google Gemini Vision API
- Drizzle ORM with PostgreSQL schema
Web (SvelteKit):
- Dashboard with plant overview
- Plant detail pages with care history
- Add/edit plant forms
- Auth integration with login/register routes
- API client layer for all endpoints
Infrastructure:
- Database setup in setup-databases.sh
- MinIO bucket for plant photos
- Environment variables for port 3022
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The @todo/shared package exports TypeScript source files directly
(no build script). The backend's build process handles compiling
these TypeScript files, so we don't need a separate build step.
Fixes Docker error:
ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL Command "build" not found
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Web apps use hooks.server.ts to inject window.__PUBLIC_*__ variables at
runtime, but docker-compose.staging.yml was only setting vars for
docker-entrypoint.sh config.json. This caused web apps to fall back to
localhost URLs in production.
Changes:
- Add PUBLIC_*_CLIENT env vars for all staging web apps
- Update calendar-web hooks.server.ts to inject contacts API URL
Added rootDir: "./src" to tsconfig.json so that main.ts compiles to
dist/main.js instead of dist/src/main.js. This matches the CMD path
in the Dockerfile.
Also added include/exclude and moduleResolution to match other backends.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Docker build was failing because adapter-netlify outputs to .netlify/
directory but the Dockerfile expected build output in build/ directory.
Switched to adapter-node with explicit `out: 'build'` configuration
which matches the Dockerfile expectations.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add picture-backend and picture-web to CI Docker build matrix
- Add picture services to staging deployment workflow
- Add picture-backend to production deployment workflow
- Create Dockerfile and docker-entrypoint.sh for picture-web
- Fix picture-backend Dockerfile port (3003→3006) and health endpoint
- Add picture routes to Caddyfile.staging
- Add REPLICATE_API_TOKEN and MANA_CORE_SERVICE_KEY env vars