chore: drop who + kontext MANA_APPS entries to match earlier extractions

Two cleanup follow-ups that the parallel sessions which extracted these
modules left behind, surfaced by the route-drift test added in 6d193a9fa:

who — `chore: extract who module into standalone repo` (a3eedfc87) +
follow-up cleanup (f076d9345) removed `lib/modules/who/` and the
workbench `registerApp({ id: 'who' })` block, but the broken `/who/+page`
and `/who/play/[gameId]/+page` routes still imported the deleted module
and the MANA_APPS entry, APP_ICONS icon, categories.ts mapping and
help-content block were still in place. Drop all five.

kontext — `feat(notes): isSpaceContext flag replaces kontext module
(Option B)` (8fbdc6db7) replaced the kontext module with a per-note
`isSpaceContext` flag in the notes module. The MANA_APPS entry I added
in 6d193a9fa and the matching APP_ICONS entry are now both stale —
there is no `kontext` route, no module, no registerApp. Drop them.

Verification: `registry.spec.ts` 4/4 green, `svelte-check src/lib`
0 errors / 5 warnings (pre-existing in other files).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-29 01:04:34 +02:00
parent b297f68ee4
commit 93545f8516
6 changed files with 0 additions and 98 deletions

View file

@ -79,7 +79,6 @@ export const APP_CATEGORY_MAP: Record<string, AppCategory> = {
wetter: 'life', wetter: 'life',
inventory: 'life', inventory: 'life',
storage: 'life', storage: 'life',
who: 'life',
firsts: 'life', firsts: 'life',
memoro: 'life', memoro: 'life',
questions: 'life', questions: 'life',

View file

@ -448,21 +448,6 @@ export const MODULE_HELP: Record<string, ModuleHelp> = {
'Bring-Listen-Items können von Gästen "reserviert" werden', 'Bring-Listen-Items können von Gästen "reserviert" werden',
], ],
}, },
who: {
description:
'Rate-Spiel — erkenne Persönlichkeiten anhand von Hinweisen. Die AI gibt dir Schritt für Schritt mehr Informationen.',
features: [
'AI gibt dir Hinweise, du rätst die Person',
'Verschiedene Schwierigkeitsgrade',
'Spiel-Verlauf mit Statistiken',
'Chat-basierte Interaktion',
'Historische und aktuelle Persönlichkeiten',
],
tips: [
'Stelle gezielte Ja/Nein-Fragen um die Person schneller einzugrenzen',
'Schwierigere Modi geben weniger offensichtliche Hinweise',
],
},
firsts: { firsts: {
description: description:
'Erste Male festhalten — eine Bucket-List für Dinge die du erleben möchtest, und ein Archiv erlebter Momente.', 'Erste Male festhalten — eine Bucket-List für Dinge die du erleben möchtest, und ein Archiv erlebter Momente.',

View file

@ -1,13 +0,0 @@
<script lang="ts">
import { goto } from '$app/navigation';
import ListView from '$lib/modules/who/ListView.svelte';
import { RoutePage } from '$lib/components/shell';
</script>
<svelte:head>
<title>Who? — Mana</title>
</svelte:head>
<RoutePage appId="who">
<ListView navigate={(view) => goto(`/who/${view}`)} goBack={() => history.back()} params={{}} />
</RoutePage>

View file

@ -1,18 +0,0 @@
<script lang="ts">
import { goto } from '$app/navigation';
import { page } from '$app/stores';
import PlayView from '$lib/modules/who/views/PlayView.svelte';
import { RoutePage } from '$lib/components/shell';
const gameId = $derived($page.params.gameId ?? '');
</script>
<svelte:head>
<title>Who? — Spiel — Mana</title>
</svelte:head>
<RoutePage appId="who" backHref="/who" title="Spiel">
{#if gameId}
<PlayView {gameId} onBack={() => goto('/who')} />
{/if}
</RoutePage>

View file

@ -197,11 +197,6 @@ export const APP_ICONS = {
// Blue→cyan gradient for the hydration theme. // Blue→cyan gradient for the hydration theme.
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="dk" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#3b82f6"/><stop offset="100%" style="stop-color:#06b6d4"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#dk)"/><path d="M35 28h30l-4 48a10 10 0 0 1-10 9h-2a10 10 0 0 1-10-9L35 28z" fill="white" fill-opacity="0.9"/><path d="M39 52c0-4 5-6 11-6s11 2 11 6v12a8 8 0 0 1-8 7h-6a8 8 0 0 1-8-7V52z" fill="#3b82f6" fill-opacity="0.35"/><path d="M33 28h34" stroke="white" stroke-width="4" stroke-linecap="round"/><circle cx="72" cy="36" r="3" fill="white" fill-opacity="0.6"/><circle cx="68" cy="46" r="2" fill="white" fill-opacity="0.4"/><circle cx="74" cy="54" r="2.5" fill="white" fill-opacity="0.3"/></svg>` `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="dk" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#3b82f6"/><stop offset="100%" style="stop-color:#06b6d4"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#dk)"/><path d="M35 28h30l-4 48a10 10 0 0 1-10 9h-2a10 10 0 0 1-10-9L35 28z" fill="white" fill-opacity="0.9"/><path d="M39 52c0-4 5-6 11-6s11 2 11 6v12a8 8 0 0 1-8 7h-6a8 8 0 0 1-8-7V52z" fill="#3b82f6" fill-opacity="0.35"/><path d="M33 28h34" stroke="white" stroke-width="4" stroke-linecap="round"/><circle cx="72" cy="36" r="3" fill="white" fill-opacity="0.6"/><circle cx="68" cy="46" r="2" fill="white" fill-opacity="0.4"/><circle cx="74" cy="54" r="2.5" fill="white" fill-opacity="0.3"/></svg>`
), ),
who: svgToDataUrl(
// Theatre mask silhouette in front of a question mark — references
// the "guess who's behind the disguise" mechanic. Purple gradient.
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="wh" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#a855f7"/><stop offset="100%" style="stop-color:#7c3aed"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#wh)"/><path d="M58 30c-3-2-7-3-11-3-12 0-22 9-22 21 0 7 4 13 9 17l-3 11 11-5c2 0 3 1 5 1 12 0 22-9 22-21 0-7-4-13-11-21z" fill="white" fill-opacity="0.18"/><path d="M50 28c-4 0-8 1-11 3-7 8-11 14-11 21 0 12 10 21 22 21 12 0 22-9 22-21s-10-24-22-24z" fill="white"/><circle cx="44" cy="48" r="2.6" fill="#7c3aed"/><circle cx="60" cy="48" r="2.6" fill="#7c3aed"/><path d="M44 60c2 3 4 4 6 4s4-1 6-4" stroke="#7c3aed" stroke-width="2.5" stroke-linecap="round" fill="none"/><text x="76" y="42" font-family="system-ui" font-size="22" font-weight="700" fill="white" fill-opacity="0.85">?</text></svg>`
),
recipes: svgToDataUrl( recipes: svgToDataUrl(
// Cooking pot with steam — represents recipe collection. // Cooking pot with steam — represents recipe collection.
// Orange→amber gradient for a warm kitchen feel. // Orange→amber gradient for a warm kitchen feel.
@ -307,13 +302,6 @@ export const APP_ICONS = {
// communication family without competing with either. // communication family without competing with either.
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="sp" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#14b8a6"/><stop offset="100%" style="stop-color:#6366f1"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#sp)"/><circle cx="30" cy="38" r="9" fill="white" fill-opacity="0.85"/><path d="M14 70c0-9 7-16 16-16s16 7 16 16v4H14v-4z" fill="white" fill-opacity="0.85"/><circle cx="70" cy="38" r="9" fill="white" fill-opacity="0.85"/><path d="M54 70c0-9 7-16 16-16s16 7 16 16v4H54v-4z" fill="white" fill-opacity="0.85"/><circle cx="50" cy="32" r="11" fill="white"/><path d="M30 76c0-11 9-20 20-20s20 9 20 20v4H30v-4z" fill="white"/></svg>` `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="sp" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#14b8a6"/><stop offset="100%" style="stop-color:#6366f1"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#sp)"/><circle cx="30" cy="38" r="9" fill="white" fill-opacity="0.85"/><path d="M14 70c0-9 7-16 16-16s16 7 16 16v4H14v-4z" fill="white" fill-opacity="0.85"/><circle cx="70" cy="38" r="9" fill="white" fill-opacity="0.85"/><path d="M54 70c0-9 7-16 16-16s16 7 16 16v4H54v-4z" fill="white" fill-opacity="0.85"/><circle cx="50" cy="32" r="11" fill="white"/><path d="M30 76c0-11 9-20 20-20s20 9 20 20v4H30v-4z" fill="white"/></svg>`
), ),
kontext: svgToDataUrl(
// Globe with three horizontal text-lines — represents the Web-Context
// crawler that pulls URLs into the user's profile context. Tan→ochre
// gradient (#a78b6f → #c79a64) sits in the documents family but warmer
// than the cool blues of notes/storage.
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="kx" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#a78b6f"/><stop offset="100%" style="stop-color:#c79a64"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#kx)"/><circle cx="50" cy="38" r="18" fill="none" stroke="white" stroke-width="2.5"/><ellipse cx="50" cy="38" rx="9" ry="18" fill="none" stroke="white" stroke-width="2"/><path d="M32 38h36" stroke="white" stroke-width="2"/><rect x="28" y="62" width="44" height="3" rx="1.5" fill="white" fill-opacity="0.9"/><rect x="28" y="70" width="34" height="3" rx="1.5" fill="white" fill-opacity="0.7"/><rect x="28" y="78" width="40" height="3" rx="1.5" fill="white" fill-opacity="0.55"/></svg>`
),
wishes: svgToDataUrl( wishes: svgToDataUrl(
// Shooting star with sparkle trail — the wishes module is about // Shooting star with sparkle trail — the wishes module is about
// hopes/aspirations. Amber→rose gradient distinguishes it from the // hopes/aspirations. Amber→rose gradient distinguishes it from the

View file

@ -886,28 +886,6 @@ export const MANA_APPS: ManaApp[] = [
status: 'development', status: 'development',
requiredTier: 'guest', requiredTier: 'guest',
}, },
{
id: 'who',
name: 'Who',
description: {
de: 'Errate wer ich bin',
en: 'Guess who I am',
},
longDescription: {
de: 'Chatte mit einer historischen Persönlichkeit. Eine KI verkörpert sie ohne den Namen zu verraten — du musst durch geschickte Fragen herausfinden, mit wem du sprichst. Vier Decks: Historisch, Frauen der Geschichte, Antike, Erfinder & Pioniere.',
en: 'Chat with a historical figure. An AI roleplays them without revealing their name — you have to figure out who you are talking to. Four decks: Historical, Women in History, Antiquity, Inventors & Pioneers.',
},
icon: APP_ICONS.who,
color: '#a855f7',
comingSoon: false,
status: 'beta',
// Open to all signed-in users (Standard / public tier and up).
// The initial 'beta' here was an arbitrary RFC default — it
// matched the status='beta' badge but the gate was more friction
// than value while the module is finding its audience. The LLM
// calls behind it are credit-gated server-side regardless.
requiredTier: 'guest',
},
{ {
id: 'meditate', id: 'meditate',
name: 'Meditate', name: 'Meditate',
@ -1206,23 +1184,6 @@ export const MANA_APPS: ManaApp[] = [
status: 'beta', status: 'beta',
requiredTier: 'guest', // LOCAL TIER PATCH — revert to 'beta' before release requiredTier: 'guest', // LOCAL TIER PATCH — revert to 'beta' before release
}, },
{
id: 'kontext',
name: 'Web-Context',
description: {
de: 'URLs in deinen Kontext crawlen',
en: 'Crawl URLs into your context',
},
longDescription: {
de: 'Webseiten und Artikel als persönlichen Kontext sammeln — crawlt eine URL (oder eine ganze Site bis 20 Seiten), optional KI-zusammengefasst, und hängt das Ergebnis an dein Profil-Kontext-Dokument an. Der Companion sieht das beim nächsten Planen automatisch mit.',
en: 'Pull web pages and articles into your personal context — crawl a URL (or up to 20 pages of a site), optionally AI-summarised, and append the result to your profile context document. The companion picks it up automatically on the next plan call.',
},
icon: APP_ICONS.kontext,
color: '#a78b6f',
comingSoon: false,
status: 'beta',
requiredTier: 'guest',
},
{ {
id: 'wishes', id: 'wishes',
name: 'Wünsche', name: 'Wünsche',