- generate-status-page.sh now also writes status.json alongside index.html
Format: { updated, summary: {up, total}, services: { appName: bool } }
- nginx status.mana.how serves status.json with CORS headers (public read)
and explicit location block to avoid rewrite to index.html
- ManaScore index page fetches status.json client-side on load and
injects green ● LIVE / red ● DOWN badge next to each app's status chip
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full migration plan for both NestJS services (backend + audio-backend)
to Hono/Bun, including endpoint inventory, auth pattern change
(Supabase RLS → service role), and phased implementation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Better Auth uses callbackURL to determine the post-verification redirect target.
Setting only redirectTo left callbackURL=/ which resolved to auth.mana.how/ (404).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cross-app data bundle format (.mana / .manapkg) for onboarding flows,
templates, and sequential content release. Implementation deferred.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All 4 apps now use the same local build pattern as the other 33 apps.
Only umami (external project) keeps its GHCR image.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
FokusLayout:
- Wrap DnD zone, footer, and completed-today in .sheet-body
- .sheet-body is the scroll container (flex:1, overflow-y:auto)
- .sheet-content no longer manages scroll — allows scrolling to
the "Heute erledigt" section below the main task list
KanbanTaskCard:
- Inline subtasks all appear as done (checked + strikethrough) during
the parent's completing animation via isAnimatingComplete flag
- Subtask clicks blocked during animation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
KanbanTaskCard:
- Checkbox click animates first (checkPop 300ms, fade to 50% opacity)
- After 500ms the actual onToggleComplete fires and task moves
- Modal cannot open during animation (pointer-events: none)
FokusLayout:
- Derives completedToday from tasks context (isCompleted + completedAt today)
- Shows "Heute erledigt" section at bottom of every sheet
- New items slide in from above (slideDown 350ms animation)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove white-space: nowrap / overflow: hidden / text-overflow: ellipsis
- Titles wrap to multiple lines so all content is always readable
- align-items: flex-start on card and subtask rows so checkbox
and priority dot stay aligned to the first text line (margin-top: 0.2rem)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove card border, background, shadow, backdrop-filter, border-radius
- Tasks render as plain text directly on the page background
- Priority dot: slim 3px left accent instead of round dot
- Main checkbox: 1.1rem circle matching title font size
- Title: 0.9375rem regular weight, uses CSS var for theme color
- Subtasks: same size as title (0.9375rem), same checkbox size
- Subtask indent calculated from priority-dot + gaps + checkbox width
- Vertical connecting line aligned to checkbox center
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Svelte 5 \$state creates deep reactive Proxy objects. IndexedDB can't
serialize Proxies via structured clone algorithm. Using \$state.snapshot()
produces plain objects that IndexedDB can store.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
svelte-dnd-action intercepted pointerdown on .task-card-wrapper items,
which interfered with clicks on the inline subtask buttons. Stopping
pointer event propagation on the subtasks container prevents DnD from
treating subtask clicks as drag interactions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Subtasks now show directly below each task card on the homepage,
indented with a vertical connecting line, directly checkable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Redesign TaskEditModal as a multi-column page-like layout:
- Title (large, borderless textarea with autoGrow)
- Content grid: description (left) | subtasks + links (right)
- Props strip: all metadata as horizontal flex-wrap cells (status,
priority, due date, recurrence, tags, assignee, story points, etc.)
- No sidebar, no scrollable property list
- Remove redundant `notes` field from TaskMetadata (keep only `description`)
- Remove all legacy migration code from useTaskForm composable
- Add inline subtasks display to TaskItem on the homepage:
- Shown indented under parent task when task has subtasks and is incomplete
- Each subtask is directly checkable (toggleSubtask via onSave callback)
- Vertical connecting line via CSS pseudo-element
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds the original NestJS backends (backend, audio-backend), Expo mobile app,
and Astro landing page as-is from the standalone memoro repo. These are
not yet migrated to monorepo standards (migration tracked in memory/CLAUDE.md).
Also adds eslint.config.mjs ignore for apps/*/apps/audio-backend/**
and .prettierignore entries for legacy memoro dirs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Structure: apps/memoro/apps/web, package name @memoro/web
Web tooling: adapter-node, Tailwind v4 + @manacore/shared-tailwind, Vite v6, shared PWA/vite-config
Auth: createManaAuthStore() from @manacore/shared-auth-stores, removed Google/Apple OAuth
Local-first: memoroStore with 7 collections + guest seed data (memos, tags, spaces, etc.)
Service layer: memoService + tagService migrated from Supabase direct to local-store collections
Workspace: dev:memoro:* scripts in root package.json, memoro added to CLAUDE.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
No ManaCore app provides favicon.png (all use favicon.svg). The default
caused prerender 404 errors for any app with an /offline page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
App only provides favicon.svg; the PWA plugin's default includeAssets
list also includes favicon.png which triggers a prerender error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace @arcade/backend (NestJS) with @arcade/server (Hono/Bun).
Same two endpoints, no auth required (public game generator):
- POST /api/games/generate — AI game generation (Gemini, Claude, GPT)
- POST /api/games/submit — Community game submission via GitHub PR
- GET /health — Health check
This removes the last remaining NestJS backend from the monorepo.
NestJS is now completely gone — all servers use Hono + Bun.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- inventar-web: fix mangled icon import in settings page
- skilltree-web: create missing lib/services/storage.ts for export/import
- startup.sh: add umami/synapse DB creation + synapse user setup with C locale
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add right-click context menu to ContactAlphabetView (was missing entirely)
- Add icons to ContactGridView context menu items
- Wire up onDeleteContact through ContactList to both views
- Add icons to TaskList (todo) context menu: edit, complete, priority, delete
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevents the internal SSD from filling up if the external SSD is not
mounted or if `colima delete` wiped the datadisk symlink.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove LocalProject, projectId from all tasks, and project-related stores/queries
- Add 'fokus' layout mode to LocalBoardView; activeLayoutMode setting in settings store
- Build FokusLayout.svelte: scroll-snap paper sheets with cross-page DnD ('task-dnd')
- Inline column edit mode: ViewColumnHeader with color picker popup, rename, reorder, delete
- Add "Neues Board" placeholder as last column in all layout modes
- PillNav now state-based (Fokus/Übersicht/Matrix tabs) instead of route-based
- Unified filter strip: merge TagStrip + FilterStrip with "Tags:" and "Filter:" label pills
- Fix all 3 test files after project removal; 100/100 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>