chore: overnight plan 2026-03-04 + /overnight command
- Rewrote loop/plan.md with 34 checkbox tasks across 8 phases - Updated loop/prompt.md for new overnight scope - Added .claude/commands/overnight.md skill - Self-destructing dev SW from previous session Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
8a1c3135dd
commit
9dbc9c24a6
+56
-85
@@ -1,102 +1,73 @@
|
||||
You are making the AIUI app compliant with iOS Human Interface Guidelines (HIG) for font sizes, touch targets, and button hitboxes — WITHOUT changing the visual design. Read these files first:
|
||||
You are working through an overnight automation plan for the AIUI app. Read these files first:
|
||||
|
||||
1. `loop/plan.md` — Your task checklist (mark items `- [x]` as you complete them)
|
||||
2. `CLAUDE.md` — Project conventions, design system rules, and coding standards
|
||||
|
||||
## Key Principle
|
||||
## Project Context
|
||||
|
||||
**Same design, better accessibility.** The app should look identical but be properly tappable and readable on mobile. All changes are about sizing minimums, not visual redesign.
|
||||
AIUI is an AI content surface UI — a Vue 3 + TypeScript + Tailwind CSS app with chat, content panels (films, music, books, TV, places, news, images, podcasts), and a plugin system. It runs as a PWA and inside Archy (an iframe host).
|
||||
|
||||
## iOS HIG Requirements
|
||||
Key directories:
|
||||
- `packages/app/src/` — Main application source
|
||||
- `packages/app/src/composables/` — Shared composition functions
|
||||
- `packages/app/src/components/content/` — Content grid and detail components
|
||||
- `packages/app/src/components/chat/` — Chat interface components
|
||||
- `packages/app/src/styles/main.css` — Glass morphism design system
|
||||
- `packages/core/src/` — Core library and types
|
||||
|
||||
1. **Font Sizes:**
|
||||
- Body text: 17px (but we use 14px base — OK, it's a dense app)
|
||||
- Footnote: 13px minimum
|
||||
- Caption: 11px ABSOLUTE minimum (nothing smaller than 11px ever)
|
||||
- Form inputs: 16px minimum (prevents iOS auto-zoom on focus)
|
||||
## Working Process
|
||||
|
||||
2. **Touch Targets:**
|
||||
- All interactive elements: 44×44px minimum tappable area
|
||||
- The VISUAL icon can be smaller (e.g., 20px SVG), but the tappable wrapper must be 44×44px
|
||||
- Pattern: `<button class="min-w-[44px] min-h-[44px] flex items-center justify-center"><svg class="w-5 h-5" ...></button>`
|
||||
|
||||
3. **Gaps Between Targets:**
|
||||
- Minimum 8px (gap-2) between any two tappable elements
|
||||
- `gap-0.5` (2px) and `gap-1` (4px) between buttons is a violation
|
||||
|
||||
## Current Violations Found (from audit)
|
||||
|
||||
- **301× `text-[10px]`** — timestamps, labels, metadata throughout app
|
||||
- **76× `text-[11px]`** — settings, branch switcher, design system
|
||||
- **100× `text-[9px]` / `text-[8px]`** — badges, version numbers, plugin metadata
|
||||
- **40+ buttons below 44×44px** — `w-7 h-7` (28px), `w-8 h-8` (32px), `w-6 h-6` (24px), `w-5 h-5` (20px)
|
||||
- **20+ locations with gap < 8px** between clickable elements
|
||||
- **9+ inputs below 16px** — ChatInput textarea, settings inputs, search
|
||||
|
||||
## Key Files
|
||||
|
||||
- `packages/app/src/styles/main.css` — Glass button system, utility classes
|
||||
- `packages/app/src/components/chat/ChatMessage.vue` — Message actions, timestamps
|
||||
- `packages/app/src/components/chat/ChatInput.vue` — Main input, send button
|
||||
- `packages/app/src/components/chat/ChatHeader.vue` — Toolbar buttons
|
||||
- `packages/app/src/components/chat/ChatSearch.vue` — Search nav buttons
|
||||
- `packages/app/src/components/chat/SettingsModal.vue` — Settings UI
|
||||
- `packages/app/src/components/content/ContentPanel.vue` — Tab bar
|
||||
- `packages/app/src/components/content/*Grid.vue` — All content grids
|
||||
- `packages/app/src/components/content/*Detail.vue` — All detail views
|
||||
- `packages/app/src/components/settings/` — Settings components
|
||||
- `packages/app/src/components/ui/` — Shared UI components
|
||||
|
||||
## Design System Rules (must follow for every file you touch)
|
||||
|
||||
- **Glass morphism only** — use `.glass`, `.glass-card`, `.glass-button`, `.glass-button-sm` from `src/styles/main.css`
|
||||
- **No light-mode conditionals** — never use `isDark ?` pattern. The app is dark-only.
|
||||
- **No `bg-gray-*` or `bg-white`** — use `bg-white/5`, `bg-white/10`, `bg-black/35` etc.
|
||||
- **Text opacity scale** — `text-white/25` → `/40` → `/60` → `/70` → `/80` → `/90` → `/96` → `text-white`
|
||||
- **Accent colour** — `text-accent` (`#F7931A`), `bg-accent/15`, `border-accent/30`
|
||||
- **Animations** — `animate-scale-in`, `animate-fade-up`, `animate-fade-in` from design system only
|
||||
|
||||
## How to Fix Touch Targets (Pattern)
|
||||
|
||||
**Before (violation):**
|
||||
```html
|
||||
<button class="w-7 h-7 rounded-full" @click="doThing">
|
||||
<svg class="w-4 h-4" ...></svg>
|
||||
</button>
|
||||
```
|
||||
|
||||
**After (compliant):**
|
||||
```html
|
||||
<button class="min-w-[44px] min-h-[44px] flex items-center justify-center rounded-full" @click="doThing">
|
||||
<svg class="w-4 h-4" ...></svg>
|
||||
</button>
|
||||
```
|
||||
|
||||
Or use the utility class (after T19):
|
||||
```html
|
||||
<button class="touch-target rounded-full" @click="doThing">
|
||||
<svg class="w-4 h-4" ...></svg>
|
||||
</button>
|
||||
```
|
||||
|
||||
## For each task in loop/plan.md:
|
||||
For each task in `loop/plan.md`:
|
||||
|
||||
1. Find the first unchecked `- [ ]` item
|
||||
2. Read the task description carefully
|
||||
2. Read the task description carefully — it tells you what to change and where
|
||||
3. Read the relevant source files before making changes
|
||||
4. Make the change — keep visual design identical, only adjust sizing
|
||||
5. Run `pnpm typecheck && pnpm lint` — fix all errors
|
||||
6. Run `pnpm test` — fix any failing tests
|
||||
7. Commit: `type(scope): description` (conventional commits)
|
||||
8. Mark it done `- [x]` in `loop/plan.md`
|
||||
4. Make the change following CLAUDE.md conventions
|
||||
5. Run the TEST command specified in the task
|
||||
6. Fix any errors from the test command before proceeding
|
||||
7. Commit with conventional commit format: `type(scope): description`
|
||||
8. Mark the task done: change `- [ ]` to `- [x]` in `loop/plan.md`
|
||||
9. Move to the next unchecked task immediately
|
||||
|
||||
## Testing Gates
|
||||
|
||||
Every task specifies a TEST command. You MUST run it and pass before committing:
|
||||
- `pnpm typecheck` — TypeScript strict mode compilation
|
||||
- `pnpm lint` — ESLint checks
|
||||
- `pnpm test` — Vitest unit tests
|
||||
- Multiple commands joined with `&&` must ALL pass
|
||||
|
||||
If a test fails, fix the issue and re-run. Do not skip tests. Do not mark a task as done if tests fail.
|
||||
|
||||
## Coding Rules
|
||||
|
||||
- **Vue 3 Composition API only** — `<script setup lang="ts">`, never Options API
|
||||
- **Glass morphism design** — use `.glass`, `.glass-card`, `.glass-button` from `main.css`
|
||||
- **Dark theme** — `bg-white/5`, `text-white/80`, never `bg-gray-*` or plain `bg-white`
|
||||
- **Text opacity scale** — `text-white/25` → `/40` → `/60` → `/70` → `/80` → `/90` → `/96`
|
||||
- **Accent** — `text-accent` (`#F7931A`)
|
||||
- **Touch targets** — minimum 44x44px for all interactive elements
|
||||
- **Font minimums** — never smaller than 11px
|
||||
- **No over-engineering** — only change what the task asks for
|
||||
- **Keep existing patterns** — match the style of surrounding code
|
||||
|
||||
## Commit Format
|
||||
|
||||
```
|
||||
type(scope): description
|
||||
|
||||
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
||||
```
|
||||
|
||||
Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`
|
||||
Scope: `app`, `core`, or specific area like `chat`, `content`, `player`
|
||||
|
||||
## Rules
|
||||
|
||||
- Never skip a testing gate — if tests fail, fix them before moving on
|
||||
- If a task is proving difficult, keep trying different approaches. Make at least 30 genuine attempts.
|
||||
- Always run typecheck + lint after every code change
|
||||
- The visual design must NOT change — same colors, same layout, same glass morphism
|
||||
- Only sizes of tappable areas, font minimums, and gaps change
|
||||
- If a task is proving difficult, make at least 10 genuine attempts before moving on
|
||||
- Always read source files before editing them
|
||||
- Do not stop until all tasks are checked or you are rate limited
|
||||
- Commit and push after each TEST: task
|
||||
- Commit after each completed task
|
||||
- For research tasks (Phase 8), create the docs directory if needed: `mkdir -p docs/research`
|
||||
- For test tasks (Phase 4), create the test directory if needed: `mkdir -p packages/app/src/composables/__tests__`
|
||||
|
||||
Reference in New Issue
Block a user