- Add glassmorphic design system utilities
- Update Message component with gradient avatars and bubble design
- Update MessageInput with pill-shaped glassmorphic container
- Update RoomList with modern search and tabs
- Update RoomItem with card-style design
- Update RoomHeader with glass-style buttons
- Replace DaisyUI colors with semantic design tokens
- Add fade-in animations for messages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update todo, contacts, storage web apps to use @manacore/shared-api-client
- Maintain backward compatibility with existing legacy wrappers
- Todo: apiClient wrapper for setAccessToken/getAccessToken pattern
- Contacts: fetchWithAuth/fetchWithAuthFormData wrappers
- Storage: toLegacyResponse wrapper for ApiResponse format
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Mark API Client Patterns as "In Arbeit"
- Add @manacore/shared-api-client to completed tasks
- Note clock app as first migrated (proof of concept)
- List remaining apps to migrate
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create unified API client for all web apps with:
- createApiClient factory function
- ApiResult<T> Go-style error handling
- HTTP methods: get, post, put, patch, delete, upload
- Auto token handling via getAuthToken callback
- Timeout support with AbortController
- Retry logic with exponential backoff
- Runtime URL injection for Docker
- FormData support for file uploads
Migrate clock app as proof of concept:
- Replace local fetchApi with shared createApiClient
- Update stores to use ApiError.message
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add multi-stage Dockerfile for matrix/web
- Add matrix-web service to docker-compose.macmini.yml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mark as completed:
- Tailwind Vite plugin migration (4 apps)
- Toast system centralization (6 apps)
- Dependency version standardization (15 apps)
- lucide-svelte removal from shared-ui
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate ImmersiveModeToggle to use @manacore/shared-icons (CaretUp/CaretDown)
- Remove lucide-svelte from shared-ui package.json
- All shared-ui components now use Phosphor icons consistently
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add demo-questions.ts with sample questions and collection
- Update questionsStore to show demo data when not authenticated
- Update collectionsStore with demo mode support
- Add demo banner and GuestWelcomeModal to layout
- Block create/update/delete operations in demo mode
- Add SkillTreeLogo to shared-branding (emerald green theme)
- Add login, register, forgot-password pages using shared-auth-ui
- Initialize authStore in layout alongside skillStore
- Add shared-auth-ui, shared-i18n, shared-branding dependencies
- German translations as default
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all 15 web apps to consistent dependency versions:
- @sveltejs/kit: ^2.47.1 (was mixed ^2.0.0 to ^2.47.1)
- svelte: ^5.41.0 (was mixed ^5.0.0 to ^5.41.0)
- svelte-check: ^4.3.3 (was mixed ^4.0.0 to ^4.3.3)
- typescript: ^5.9.3 (was mixed ^5.0.0 to ^5.9.3)
Benefits:
- Consistent type checking behavior across apps
- All apps benefit from latest Svelte 5 features
- Easier maintenance with unified versions
Migrate 4 web apps from @tailwindcss/postcss to @tailwindcss/vite:
- chat
- manadeck
- manacore
- presi
Changes per app:
- Replace @tailwindcss/postcss with @tailwindcss/vite in package.json
- Add tailwindcss() to vite.config.ts plugins array
- Delete postcss.config.js (no longer needed)
Benefits:
- Faster builds with native Vite integration
- Consistent build pipeline across all 14 web apps
- Simplified configuration (no separate PostCSS config)
- bot-services: Add registerAsync to AI, Calendar, Clock, Todo modules
- bot-services: Add convenience methods to ClockService for bot handlers
- bot-services: Make CreateEventInput.endTime optional with sensible defaults
- bot-services: Fix empty interface ESLint errors (use type aliases)
- questions-backend: Add missing schema columns (isDefault, sortOrder, deletedAt)
- questions-backend: Fix or() return type handling in question service
- questions-web: Add guard for undefined question ID in route params
- skilltree-web: Fix DBSchema type by not extending idb interface directly
- calendar-web: Fix Check icon prop (use weight instead of strokeWidth)
- matrix-mana-bot: Update clock handler to use new service methods
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Questions branding to shared-branding package (logo, colors)
- Create QuestionsLogo.svelte component
- Refactor login page to use shared LoginPage component
- Refactor register page to use shared RegisterPage component
- Refactor forgot-password page to use shared ForgotPasswordPage component
- Fix Svelte 5 class: directive on components (+page.svelte)
The Questions app now uses the same auth UI as Calendar, Chat, and other apps.
- Add questions app section with ports and commands
- Add mana-search service section with Docker and API examples
- Update services count (1 → 2) and apps count (11 → 12)
- Add to table of contents and quick start section
- Remove :ro flag from volume mounts (SearXNG needs write access)
- Simplify limiter.toml to match current SearXNG schema
- Disable link_token for API usage without browser
Add "Sign in with Mana Core" button to Matrix web login page.
This allows users to authenticate via SSO instead of entering
Matrix credentials directly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document the mana-search microservice in the main CLAUDE.md:
- Add to monorepo structure under services/
- Add Search Architecture section with API endpoints, categories, and usage examples
- Add to project-specific documentation list
- Add SKILLTREE_BACKEND_PORT and DATABASE_URL to .env.development
- Add port 5195 to CORS_ORIGINS
- Add skilltree backend/web entries to generate-env.mjs
- Fix nested button error in SkillTemplates.svelte
Add a simple login page at /login for OIDC authorization flows.
When users access the authorization endpoint without being logged in,
Better Auth redirects them to this page. After successful login,
users are redirected back to continue the authorization flow.
- Create OidcLoginController with login page HTML
- Add controller to AuthModule
- Exclude /login from global prefix
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Better Auth's OIDC discovery document advertises endpoints at
/api/auth/oauth2/* paths. Add routes for these native paths to
ensure Matrix Synapse and other OIDC clients can complete the
authorization flow.
Routes added:
- GET /api/auth/oauth2/authorize
- POST /api/auth/oauth2/token
- GET /api/auth/oauth2/userinfo
- GET /api/auth/jwks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add explicit path exclusions and path-to-regexp wildcard patterns
to ensure /api/auth/jwks and other OIDC routes are excluded from
the /api/v1 global prefix. This fixes JWKS endpoint accessibility
for Matrix Synapse OIDC integration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Better Auth's discovery document points to /api/auth/jwks,
so we need to expose this route directly in NestJS.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update Synapse OIDC configuration to use the registered
matrix-synapse client for SSO authentication.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add API client for backend communication
- Add skills and activities API modules
- Add auth store with Mana Core Auth integration
- Update skills store to use API when authenticated
- Keep IndexedDB as offline fallback
- Add hooks.server.ts for runtime env injection
https://claude.ai/code/session_015XCsTDS9aLZ64Zin4HU6ex
- Fix AiHandler to use correct service methods:
- setSessionModel instead of setModel
- clearSessionHistory instead of clearHistory
- compareModels for model comparison
- Fix TodoHandler to use index-based methods:
- completeTaskByIndex instead of completeTask
- deleteTaskByIndex instead of deleteTask
- Add deploy-mana-bot.sh script for full deployment automation
https://claude.ai/code/session_015bwcqVRiFmSydYTjvDJGTc
- Add matrix-mana-bot to docker-compose.macmini.yml
- Add setup-mana-bot.sh script for bot registration
- Add dev:matrix:* scripts to root package.json
- Add devlog entry documenting the new architecture
The gateway bot is now ready for deployment alongside
the existing standalone Matrix bots.
https://claude.ai/code/session_015bwcqVRiFmSydYTjvDJGTc
Introduces a unified Matrix bot that combines all features:
- AI Chat (Ollama integration)
- Todo management
- Calendar events
- Timers & Alarms
- Cross-feature orchestration (!summary, !ai-todo)
Architecture:
- Uses @manacore/bot-services for shared business logic
- Command router with natural language support
- Handlers delegate to shared services
- Orchestration layer for cross-feature AI features
This enables users to interact with a single bot for all features,
while standalone bots remain available for dedicated use cases.
https://claude.ai/code/session_015bwcqVRiFmSydYTjvDJGTc
Complete web app implementation with Svelte 5 runes:
Features:
- Authentication: Login, register pages with mana-core-auth integration
- Question List: Filterable list with search, status, and collection filters
- Question Detail: View research results and sources
- New Question: Create questions with depth selection and auto-research
- Collections Sidebar: Navigate and organize questions by collection
- Dark Mode: Full theme support with toggle
Structure:
- src/lib/api/: API clients for all backend endpoints
- src/lib/stores/: Svelte 5 reactive stores (auth, questions, collections)
- src/lib/types/: TypeScript interfaces
- src/routes/(app)/: Protected app routes
- src/routes/(auth)/: Public auth routes
Configuration:
- Port: 5111
- Tailwind CSS with shared theme
- lucide-svelte icons
Also updated:
- CLAUDE.md: Added web app documentation
- package.json: Updated dev:questions:full to include web
https://claude.ai/code/session_01Rk3YVJCU3nM8uvVPghRz6r
- Add NestJS backend with Drizzle ORM and PostgreSQL
- Implement skills CRUD API with XP/level progression system
- Add activities tracking endpoint
- Configure Docker containers for backend (port 3024) and web (port 5195)
- Add skilltree services to docker-compose.macmini.yml
- Add CI build jobs for skilltree-backend and skilltree-web
https://claude.ai/code/session_015XCsTDS9aLZ64Zin4HU6ex
File Upload & Media:
- Send images, videos, audio, and files
- Display media in timeline with thumbnails
- Download links for files
- Upload progress indicator
Message Actions:
- Reply to messages with quote preview
- Edit own text messages
- Delete (redact) own messages
- React with emoji (store only, UI pending)
Room Management:
- Create room dialog (DM or group)
- User search and invite
- Room settings panel with member list
- Leave room functionality
UI Improvements:
- German translations
- Message hover actions
- Reply/Edit preview in input
- Date separators in timeline
https://claude.ai/code/session_01RUrt2qN1D3nVh9HcGpwoby
Complete backend implementation for the AI-powered research assistant app:
Database Schema (Drizzle ORM):
- collections: Organize questions into folders with colors and icons
- questions: User questions with status, priority, tags, and research depth
- research_results: Results from mana-search service with summaries and key points
- sources: Extracted content from web search results
- answers: AI-generated answers with ratings and citations
NestJS Modules:
- QuestionModule: CRUD operations with filtering, pagination, and status management
- CollectionModule: Collection management with reordering and question counts
- ResearchModule: Integration with mana-search microservice for web search
- AnswerModule: Answer management with ratings and acceptance tracking
- SourceModule: Source content retrieval and management
- HealthModule: Health checks for database and search service
Features:
- Full JWT authentication via @manacore/shared-nestjs-auth
- Research depths: quick (5 sources), standard (15), deep (30)
- Automatic content extraction and summarization
- Follow-up question generation
Also updated:
- Root package.json: Added questions:* development scripts
- setup-databases.sh: Added questions database setup
https://claude.ai/code/session_01Rk3YVJCU3nM8uvVPghRz6r
Central search microservice for all ManaCore apps featuring:
- NestJS API on port 3021
- SearXNG meta-search engine integration (40+ search engines)
- Redis caching layer for search results and extracted content
- Content extraction with markdown conversion
- Prometheus metrics for monitoring
API Endpoints:
- POST /api/v1/search - Web search with categories/engines
- POST /api/v1/extract - Content extraction from URLs
- POST /api/v1/extract/bulk - Bulk extraction
- GET /health - Health check
- GET /metrics - Prometheus metrics
Search categories: general, news, science, it, images, videos
Supported engines: Google, Bing, DuckDuckGo, Wikipedia, arXiv,
GitHub, StackOverflow, and many more.
https://claude.ai/code/session_01Rk3YVJCU3nM8uvVPghRz6r