- Replace console.error with NestJS Logger in NetworkService
- Remove debug console.log statements from mana page and events store
- Remove stale TODO comment in ShareController (user.email already available)
- Update TODO comments to "Workaround" notes in EventContextMenu
- Fix port fallback in main.ts (3016 → 3014) for consistency
- Email Service: Add email.service.ts with Brevo SMTP for reminders and
calendar share invitations (German templates)
- Push Notifications: Add notification module with Expo Push API support,
device token management, and notification.controller.ts endpoints
- Reminder Service: Integrate email and push notifications in reminder
processing, add userEmail field to reminders schema
- Share Service: Send invitation emails when sharing calendars
- Unit Tests: Add jest.config.js and 63 tests for CalendarService,
EventService, ReminderService, and ShareService with mock utilities
- Database Migrations: Add migrate.ts with advisory locks for safe
production deployments
- Type-Checking: Enable type-check script for web app, fix all TypeScript
errors including CalendarViewType completeness and optional field access
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add dev credentials pre-fill on login page (dev@manacore.local)
- Add initialPassword prop to LoginPage component
- Add seed script for dev user (pnpm db:seed:dev in mana-core-auth)
- Add OLLAMA_URL to .env.development for Mac Mini connection
Add /compare route to test prompts against multiple Ollama models:
- CompareInput: prompt textarea with temperature/max tokens controls
- ModelResponseCard: displays response with status, metrics, markdown
- ModelResponseGrid: responsive grid layout for side-by-side comparison
- CompareProgress: progress bar with cancel functionality
- Svelte 5 runes-based store for state management
- Add Scales icon to shared-ui navigation
Add a unified welcome modal for guest mode that displays:
- App icon, name, and description from shared-branding
- Feature list of what guests can do (localized DE/EN)
- Warning about local-only data storage
- Login, Register, Help, and "Continue as Guest" buttons
New files:
- GuestWelcomeModal.svelte - The modal component
- guestWelcome.ts - localStorage utilities for tracking seen state
Integrated into: contacts, chat, todo, calendar, and clock apps
Redesign TaskItem to expand inline for editing instead of opening
a separate modal. Improves UX by keeping user context and reducing
visual interruption. Removes modal-related code from pages.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add verified banner and email pre-fill to LoginPage component when
users are redirected after email verification. Updates all app login
pages to pass verification params from URL query string.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add sourceAppUrl tracking during registration to redirect users back
to the app they registered from after email verification. Includes
URL validation for security (only *.mana.how, mana.how, localhost).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix $effect infinite loop causing app to hang after guest mode
- Track viewType and currentDate primitives instead of derived viewRange
- Fix root layout to use h-screen flex container for full height
- Fix guest banner offset using padding instead of margin
- Calendar now fills entire screen with UI floating on top
- Simplify i18n initialization
Add success and failure pages for email verification:
- /email-verified - shows success message with login button
- /verification-failed - shows error message with relevant actions
These pages are redirected to from mana-core-auth's verify-email endpoint.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove "Meine Aufgaben" header (sections are self-explanatory)
- Add enhanced empty state with animated sparkle icon, motivational
message, and clickable syntax examples that insert into input bar
- Implement smart section visibility (only show sections with tasks,
but always show "Today" as primary workspace)
- Add onboarding tip for users with 1-3 tasks showing #tags and
!priority syntax
- Add quick-input-set event listener to InputBar for example clicks
- Add OllamaService for local model inference via Ollama API
- Update ChatService to route requests based on model provider
- Support both 'ollama' (local) and 'openrouter' (cloud) providers
- Add Gemma 3 4B as default model (free, runs on Mac Mini)
- Add SQL migration script for existing databases
- Update CLAUDE.md with Ollama configuration docs
Environment variables:
- OLLAMA_URL: Ollama server URL (default: http://localhost:11434)
- OLLAMA_TIMEOUT: Request timeout in ms (default: 120000)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Refactor TodoToolbar to use ExpandableToolbar (FAB + sliding panel)
- Create TodoToolbarContent with filter, sort, and view options
- Move toolbar from page to layout (consistent with Calendar app)
- Add dynamic bottomOffset to QuickInputBar when toolbar expands
- Add isToolbarCollapsed state with localStorage persistence
- Remove auth redirects from kanban and settings pages for guest mode support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use list format for environment variables as suggested in shoutrrr
issue #45 to avoid YAML parsing issues with colon in bot token.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Backend: Fix Dockerfile health check path (/api/v1/health -> /health)
- Web: Add missing /health endpoint for Docker health checks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add metrics module to calendar, chat, clock, contacts backends
- Add metrics module to mana-core-auth service
- Expose /metrics endpoint for Prometheus scraping
- Track HTTP requests, response times, and custom business metrics
Co-Authored-By: Claude <noreply@anthropic.com>
Switch from @sveltejs/adapter-auto to @sveltejs/adapter-node for
presi-web and storage-web to enable proper Docker container builds.
adapter-auto cannot build correctly in Docker environment.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moved HTTP request metrics tracking from NestJS interceptor to Express
middleware in main.ts. This ensures ALL requests are tracked, including
those rejected by auth guards before reaching the handler.
- Remove MetricsInterceptor (wasn't capturing guard exceptions)
- Add Express middleware in main.ts for metrics collection
- Track all HTTP requests including 401/403/404 responses
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use catchError instead of tap.error to properly capture HTTP exception
status codes (401, 404, etc.) in Prometheus metrics.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>