mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:01:09 +02:00
chore: clear svelte-check errors + document scene-scope pattern
- `app-registry/types.ts` now includes `tips` in the inline help shape,
matching `ModuleHelp` and what `AppPage.svelte` actually renders.
Drops 3 recurring type errors.
- `event-scout` template's `{ kind: 'daily' }` cadence now carries the
required `atHour` / `atMinute` fields (daily 08:00). Drops the 4th
type error — svelte-check is clean.
- `apps/mana/CLAUDE.md` gains a "Scene Scope" section documenting the
pattern: wire `filterBySceneScopeBatch` in the query AND render
`<ScopeEmptyState>` from the empty branch, so users always see why
the list is empty.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e813401dc0
commit
cd594509b2
3 changed files with 27 additions and 1 deletions
|
|
@ -167,6 +167,29 @@ pnpm test:e2e # Playwright
|
|||
|
||||
Svelte 5 runes are mandatory — no legacy `let count = 0; $: doubled = count * 2`. Always `$state`, `$derived`, `$effect`. See [`.claude/guidelines/sveltekit-web.md`](../../.claude/guidelines/sveltekit-web.md).
|
||||
|
||||
## Scene Scope
|
||||
|
||||
Each workbench scene can carry `scopeTagIds` — a per-scene tag filter that module queries honour via `filterBySceneScopeBatch` from `$lib/stores/scene-scope.svelte`. When the filter hides everything, users need to see why.
|
||||
|
||||
**When a module wires the scope filter, wire the empty state too:**
|
||||
|
||||
```svelte
|
||||
<script lang="ts">
|
||||
import ScopeEmptyState from '$lib/components/workbench/ScopeEmptyState.svelte';
|
||||
import { hasActiveSceneScope } from '$lib/stores/scene-scope.svelte';
|
||||
</script>
|
||||
|
||||
{#if items.length === 0}
|
||||
{#if hasActiveSceneScope()}
|
||||
<ScopeEmptyState label="Aufgaben" />
|
||||
{:else}
|
||||
<p class="empty">Noch keine Aufgaben</p>
|
||||
{/if}
|
||||
{/if}
|
||||
```
|
||||
|
||||
`ScopeEmptyState` renders a subdued "Bereichsfilter verbergen alles" message plus a one-click "Bereich zurücksetzen" button that calls `workbenchScenesStore.setSceneScopeTags(activeSceneId, undefined)`. `SceneAppBar` already shows a Funnel badge on scoped scene pills; the module doesn't need to duplicate that signal. Plan: [`docs/plans/scene-scope-empty-state.md`](../../docs/plans/scene-scope-empty-state.md).
|
||||
|
||||
## AI Workbench
|
||||
|
||||
The companion is a **second actor** that works alongside the human in every module. Full pipeline live end-to-end:
|
||||
|
|
|
|||
|
|
@ -59,9 +59,12 @@ export interface AppDescriptor {
|
|||
contextMenuActions?: AppContextMenuAction[];
|
||||
|
||||
// -- Help (optional) --
|
||||
// Kept in sync with ModuleHelp in help-content.ts; AppPage renders
|
||||
// the tips section when present.
|
||||
help?: {
|
||||
description: string;
|
||||
features?: string[];
|
||||
tips?: string[];
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ du entscheidest was in deinen Kalender kommt.
|
|||
|
||||
**Voraussetzung:** Mindestens eine Region und Interessen muessen im Events-Modul
|
||||
unter dem Tab "Entdecken" eingerichtet sein.`,
|
||||
cadence: { kind: 'daily' },
|
||||
cadence: { kind: 'daily', atHour: 8, atMinute: 0 },
|
||||
startPaused: true,
|
||||
},
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue