10 KiB
10 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 02-gemini-integration-asset-pipeline | 02 | execute | 1 |
|
true |
|
|
Purpose: The app must work without an API key. Fallbacks are the graceful degradation path.
Output: src/companion/fallbacks.ts with all text arrays, 7 SVG fallback images.
<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md@src/companion/characters.ts @src/game/levels.ts @SPEC.md (section 9.2 for prompt templates — use as guide for fallback tone)
```typescript export type CompanionType = "fee" | "einhorn" | "fuchs" | "eule";export interface CompanionDefinition { type: CompanionType; name: string; emoji: string; personality: string; }
<!-- From src/game/levels.ts — levels 1-6 keys -->
Level 1: F, J, Space
Level 2: D, K
Level 3: S, L
Level 4: A, Ö
Level 5: G, H
Level 6: E, I
**1. Fallback greetings** — 10 entries, keyed by time of day:
```typescript
export type TimeOfDay = 'morgen' | 'mittag' | 'abend';
export interface FallbackGreeting {
text: string;
timeOfDay: TimeOfDay | 'any';
}
export const fallbackGreetings: FallbackGreeting[] = [
// 3-4 morning, 3-4 any-time, 2-3 evening
// Example: { text: "Guten Morgen! Der Wald hat auf dich gewartet.", timeOfDay: "morgen" }
];
```
Rules for ALL texts (per COMP-04):
- Max 25 words per text
- Simple German a 7-year-old can read
- No performance praise ("toll gemacht", "super", etc.)
- No English words
- Warm, friendly, nature-themed
**2. Fallback forest comments** — 10 entries:
```typescript
export const fallbackForestComments: string[] = [
// Express wonder and joy about new forest elements
// Example: "Oh schau mal! Ein neuer Bewohner ist in unseren Wald gezogen!"
];
```
**3. Fallback letter introductions** — one per key in levels 1-6:
```typescript
export interface LetterIntro {
letter: string;
finger: string; // e.g. "linker Zeigefinger"
text: string; // The mnemonic/introduction text
}
export const fallbackLetterIntros: LetterIntro[] = [
// Level 1
{ letter: "f", finger: "linker Zeigefinger", text: "Das F ist da, wo dein linker Zeigefinger zu Hause ist. Spuerst du den kleinen Huegel?" },
{ letter: "j", finger: "rechter Zeigefinger", text: "Das J hat einen kleinen Strich unten. Dein rechter Zeigefinger findet ihn sofort!" },
{ letter: " ", finger: "Daumen", text: "Die grosse Leertaste ganz unten drueckst du mit dem Daumen. Einfach druecken!" },
// Level 2: D (linker Mittelfinger), K (rechter Mittelfinger)
// Level 3: S (linker Ringfinger), L (rechter Ringfinger)
// Level 4: A (linker kleiner Finger), Ö (rechter kleiner Finger)
// Level 5: G (linker Zeigefinger Mitte), H (rechter Zeigefinger Mitte)
// Level 6: E (linker Mittelfinger oben), I (rechter Mittelfinger oben)
// Use nature/forest-themed mnemonics for each letter
];
```
**4. Helper function to get fallback:**
```typescript
export function getRandomFallbackGreeting(timeOfDay: TimeOfDay): string
export function getRandomFallbackForestComment(): string
export function getFallbackLetterIntro(letter: string): LetterIntro | undefined
```
Write all 10 greetings, all 10 forest comments, and all letter intros for F, J, Space, D, K, S, L, A, OE, G, H, E, I (13 entries). All in German, all max 25 words.
Each SVG should be:
- 200x200 viewBox
- Simple, clean shapes using pastel colors from the palette
- Watercolor-inspired: soft gradients, rounded shapes, no hard edges
- Child-friendly, warm aesthetic
- No text in the images
Colors to use (from SPEC.md palette):
- Greens: #6DB87D, #E8F5E4
- Pink: #E88BAE
- Purple: #9B7DC4
- Blue: #7DB8D4
- Gold: #E8B84B
- Cream: #FFF8F0
Files to create:
1. `blume.svg` — A simple flower with rounded petals (pink/purple)
2. `pilz.svg` — A mushroom with red cap and white dots (classic fairy tale)
3. `vogel.svg` — A small bird (blue/green)
4. `schmetterling.svg` — A butterfly with pastel wings
5. `reh.svg` — A young deer (simple silhouette, warm brown)
6. `baum.svg` — A small magical tree with round crown
7. `bach.svg` — A small stream with stones (blue tones)
Each SVG should use `<defs>` with radial or linear gradients for the watercolor feel. Use `opacity` and `filter` for softness where appropriate. Keep SVGs under 3KB each for performance.
Also create an index file for easy imports:
This is NOT needed — Vite handles static imports. The fallback images will be referenced by path in the companion module (Plan 04).
<success_criteria>
- Fallback texts module has 10 greetings, 10 forest comments, 13 letter intros — all German, max 25 words
- 7 SVG fallback images depict forest elements in pastel watercolor style
- All content is child-appropriate and matches the Zauberwald aesthetic </success_criteria>