From fabf25952688025fea25d6d81afdfda775086858 Mon Sep 17 00:00:00 2001 From: Till JS Date: Thu, 16 Apr 2026 15:22:55 +0200 Subject: [PATCH] feat(ai-agents): missions lookup + simple policy + agent fingerprint (UX 3-6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four UX improvements that make agents more discoverable and their behavior more transparent. All svelte-check clean (0 errors in changed files). === UX 3: Reverse-Mission-Lookup === Agent detail view now shows a "Missions (N)" section listing all missions owned by this agent with status dots + state labels. Includes a "+ Neue Mission für [agent]" button that navigates to the template gallery. Users no longer have to mentally cross-reference between the agents and missions modules. === UX 4: Simple-Mode Policy === The Policy section defaults to three radio-card presets: - Standard (Vorschlag für alles) - Vorsichtig (alles Vorschlag, keine Auto-Writes) - Aggressiv (gleichartige Schreibvorgänge automatisch) The full per-module matrix is now hidden behind "▸ Erweitert anzeigen". This covers 90% of users who just want a quick conservative/aggressive toggle. Power-users still get the full matrix. === UX 5: Policy Natural Language Summary === Above the preset radios, a preformatted block summarizes the current policy in plain German: "Gesperrt: X, Y · calendar: automatisch · Alles andere: Vorschlag". Generated from the policy object. Updates live when the user switches presets or changes module overrides. === UX 6: Agent Fingerprint on List-Views === New component: reads __lastActor from any Dexie record, resolves the agent's avatar via the live useAgents query, and renders a tiny inline emoji dot next to the item title. When no AI actor wrote the record, renders nothing (zero-width). Wired into: - /todo — task title row, after the title span - /notes — note title row, after the title span Each module import is a single line (`import AgentDot from ...`); the component is self-contained (owns its own query + styles). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../web/src/lib/components/ai/AgentDot.svelte | 65 ++++ .../src/lib/modules/ai-agents/ListView.svelte | 316 ++++++++++++++---- .../web/src/lib/modules/notes/ListView.svelte | 2 + .../web/src/lib/modules/todo/ListView.svelte | 2 + 4 files changed, 323 insertions(+), 62 deletions(-) create mode 100644 apps/mana/apps/web/src/lib/components/ai/AgentDot.svelte diff --git a/apps/mana/apps/web/src/lib/components/ai/AgentDot.svelte b/apps/mana/apps/web/src/lib/components/ai/AgentDot.svelte new file mode 100644 index 000000000..0f33cc572 --- /dev/null +++ b/apps/mana/apps/web/src/lib/components/ai/AgentDot.svelte @@ -0,0 +1,65 @@ + + + +{#if resolved()} + + {resolved()?.avatar} + +{/if} + + diff --git a/apps/mana/apps/web/src/lib/modules/ai-agents/ListView.svelte b/apps/mana/apps/web/src/lib/modules/ai-agents/ListView.svelte index b4b7ad9e3..3ecacef41 100644 --- a/apps/mana/apps/web/src/lib/modules/ai-agents/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/ai-agents/ListView.svelte @@ -17,9 +17,11 @@ handle the common "let the agent touch todo but not calendar" case. -->