From 9809b06adf361924abc57cc65e0751eb2f57cf5f Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 15 Apr 2026 13:34:07 +0200 Subject: [PATCH] feat(app-registry): new 'AI' category at top of the app picker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Groups the six AI-Workbench apps plus the Companion chat under a dedicated category, moved to order 0 so they're the first thing a user sees when adding a page. Brain icon. - `categories.ts` - New `ai` type added to AppCategory union at order 0 - Old 'companion' category stays for derived projections (myday, activity, goals) that aren't themselves AI-driven — renamed doc only, behavior unchanged - APP_CATEGORY_MAP reassigns: companion, ai-missions, ai-workbench, ai-rituals, ai-policy, ai-insights, ai-health → 'ai' - `AppPagePicker.svelte` collapsed-state map gains `ai: false` so the new category is expanded by default (it's the user's new front door) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../web/src/lib/app-registry/categories.ts | 34 +++++++++++++------ .../components/workbench/AppPagePicker.svelte | 1 + 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/apps/mana/apps/web/src/lib/app-registry/categories.ts b/apps/mana/apps/web/src/lib/app-registry/categories.ts index 7ca8f087a..11a0db386 100644 --- a/apps/mana/apps/web/src/lib/app-registry/categories.ts +++ b/apps/mana/apps/web/src/lib/app-registry/categories.ts @@ -2,8 +2,11 @@ * App Categories — Groups apps in the workbench AppPagePicker so users * can find pages by intent rather than scanning an alphabetical list. * - * Five categories (Vorschlag C): - * - companion: Companion Brain pages (myday, activity, companion, goals) + * Six categories: + * - ai: AI Workbench — Missions, Workbench timeline, Rituale, + * Policy, Insights, Health, Companion chat. Top of list. + * - companion: Brain projections (myday, activity, goals) — derived + * dashboards that aren't themselves AI-driven * - life: Personal / wellness / everyday-life tracking * - work: Productivity & planning * - creative: Creative, learning, generation @@ -15,9 +18,9 @@ */ import type { Component } from 'svelte'; -import { Robot, Heart, Briefcase, Sparkle, Gear } from '@mana/shared-icons'; +import { Robot, Heart, Briefcase, Sparkle, Gear, Brain } from '@mana/shared-icons'; -export type AppCategory = 'companion' | 'life' | 'work' | 'creative' | 'system'; +export type AppCategory = 'ai' | 'companion' | 'life' | 'work' | 'creative' | 'system'; export interface CategoryMeta { id: AppCategory; @@ -27,21 +30,30 @@ export interface CategoryMeta { } export const APP_CATEGORIES: CategoryMeta[] = [ - { id: 'companion', label: 'Companion', icon: Robot, order: 0 }, - { id: 'life', label: 'Leben', icon: Heart, order: 1 }, - { id: 'work', label: 'Arbeit', icon: Briefcase, order: 2 }, - { id: 'creative', label: 'Kreativ', icon: Sparkle, order: 3 }, - { id: 'system', label: 'System', icon: Gear, order: 4 }, + { id: 'ai', label: 'AI', icon: Brain, order: 0 }, + { id: 'companion', label: 'Companion', icon: Robot, order: 1 }, + { id: 'life', label: 'Leben', icon: Heart, order: 2 }, + { id: 'work', label: 'Arbeit', icon: Briefcase, order: 3 }, + { id: 'creative', label: 'Kreativ', icon: Sparkle, order: 4 }, + { id: 'system', label: 'System', icon: Gear, order: 5 }, ]; /** * appId → AppCategory. Apps not listed here default to 'system'. */ export const APP_CATEGORY_MAP: Record = { - // Companion Brain + // AI Workbench — the 6 new AI feature apps + companion chat + companion: 'ai', + 'ai-missions': 'ai', + 'ai-workbench': 'ai', + 'ai-rituals': 'ai', + 'ai-policy': 'ai', + 'ai-insights': 'ai', + 'ai-health': 'ai', + + // Companion Brain — derived projections that aren't themselves AI myday: 'companion', activity: 'companion', - companion: 'companion', goals: 'companion', // Leben — personal, wellness, everyday diff --git a/apps/mana/apps/web/src/lib/components/workbench/AppPagePicker.svelte b/apps/mana/apps/web/src/lib/components/workbench/AppPagePicker.svelte index 6a34ac318..012fcbda5 100644 --- a/apps/mana/apps/web/src/lib/components/workbench/AppPagePicker.svelte +++ b/apps/mana/apps/web/src/lib/components/workbench/AppPagePicker.svelte @@ -35,6 +35,7 @@ // Collapsed state per category — persist across openings in-session. let collapsed = $state>({ + ai: false, companion: false, life: false, work: false,