# Task: Move configured teacher prompts above composer ## Identity - Task ID: 20260929-teacher-prompt-buttons-a682d30f - Mode: Feature - Branch: codex/20260929-teacher-prompt-buttons-a682d30f-teacher-prompt-buttons - Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260929-teacher-prompt-buttons-a682d30f - Base commit: 78cfde67340aaccea8e8edc2505136cfcf865eda - Owner: codex - Status: Ready for Integration ## Scope - Move Yuxi-configured teacher shortcuts above the composer as small pastel buttons with soft shadows; preserve exact configured label/prompt and existing send/voice/model behavior. ## Intent And Constraints - User authorized code and background trial update. No subagents, cloud deployment, paid prompts, main merge/push, focus changes or history deletion. ## Outcome - Configured teacher shortcuts now sit outside and directly above the composer. Buttons use 13px normal text (same as reply body), pale cream fill, no border and soft shadow; wrapping/overflow/keyboard focus supported. - Adapted product/tests dependency from main 53d5b6b (bb96941); original source task record remains in its source commit, excluded from this feature boundary. Explicit empty arrays hide prompts; absent historical field retains approved fallback. Published label and prompt are unchanged. - Trial Renderer updated in place in PID 32583; Main and empty-work preview overlay remain intact. Live Alice cloud v53 supplies “继续看看咯”. ## Verification - Typecheck, lint (0 errors / 8 existing warnings), production build passed. 75 focused unit tests and 23 headless browser scenarios passed, including 319/508px overflow, keyboard focus, exact configured prompt sends, preserved drafts, cloud refresh/empty list and voice/model controls. - First test pass exposed two stale assertions in the imported tests (send argument position and old toolbar ownership); adapted them. One rerun hit the existing old-topic stream timing test; serial rerun passed all 75 with no product changes. - Trial screenshot confirms 13px, weight 400, no shadow, buttons above composer, no horizontal overflow. Same account/storage/drafts/teacher/tab; focus monitor reports no trial activation. - Operation hydration initially collided with the existing E2E trial 250ms background-sleep timer while the desktop was at loginwindow. Read-only inspector diagnosis traced stop to BackgroundLifecycleController.sleepIfIdle (same failures present at 11:28Z before this update). A temporary Main-owned snapshot-verification lease allowed normal selectConversation hydration; then released it. No runtime code or user files changed. Final comparison: all 14 operation messages, teacher turns, drafts, selected teacher, route/tab unchanged; 15 timestamps visible. No live prompt or microphone call. All inspector breakpoints were removed. ## Follow-ups - Feature branch awaits separate integration; no main merge/push or cloud deployment in this task. Prior model-selection cloud rollout remains pending. ## Promotion Candidates - Target: integrated classroom UI documentation. Proposal: configured prompts live above the composer as borderless body-size buttons with soft shadows; exact cloud labels/prompts, absent/empty compatibility and send guards retained. Evidence: user approval, 75 unit / 23 browser tests and live trial comparison. No product-policy conflict; canonical promotion belongs to integration. ## Project Context Loaded - Task ID/mode/branch/worktree/base: matching official reservation and owner verified; feature task at 78cfde67340aaccea8e8edc2505136cfcf865eda in the isolated path above. - Read: AGENTS; entry, memory index, active task, positioning, current state, decisions/teacher ADR, architecture, domain rules, success criteria, evidence/commitment indexes and all registered peer Scope/Intent/Promotion sections. - Goal: child-friendly creation with cloud-defined teachers and Main-owned auth/model access. Current code and README supersede stale canonical mentions of retired discussion components. - Active peers: window-close (native lifecycle, explicitly excludes trial), help-label/replies-release, child-language (undefined scope), and completed teacher/composer/community/empty-preview tasks. No concrete semantic conflict; preserve their committed behavior and do not modify peer checkouts. - Relevant dependencies: main 53d5b6b adds configured shortcuts; current trial has 78cfde6 microphone/models and empty-preview 0167d36 overlay. Only shortcut support and presentation are brought into this task. - Files: TeacherChatPanel, classroom-workspace.css, shared definition and focused UI/layout fixtures, README. Existing single light palette and body font remain; design skill recommendations subordinate to approved layout. - Gate: Passed. ## Plan 1. Reconcile committed Yuxi shortcuts support with trial composer, preserving empty-array versus absent compatibility. 2. Move controls above composer and give them body-size, normal-weight, pale rounded styling with keyboard focus and wrapping. 3. Verify UI behavior/layout, typecheck/lint/build; update current trial in background preserving source overlays and user state; document evidence. ## Compact Shadow Follow-up - Same-task ownership resumed and verified at efd1894. Reused the unchanged planning context above and reread current peer scopes; no new conflict. Gate passed. - User now wants smaller buttons without a visible border, using background and soft shadow. Keep 13px text for readability, reduce minimum height from 36px to 30px and padding to 4px/10px, soften corners. - Plan: update only prompt CSS, existing layout assertions and product/task documentation; verify targeted layouts and build. Refresh the built stylesheet in the running trial without remounting conversations or activating the window. - Completed: prompt button minimum height 30px (was 36px), padding 4px/10px, 8px corners, no border, soft 2px/6px shadow and pale cream background. Font remains 13px/400. - Verification: typecheck, lint (0 errors, 8 existing warnings), source/staged production builds and six 319/508px prompt/model/microphone layout scenarios passed. Existing checks now assert no border, a shadow and 30px height. - Updated the production stylesheet link in the live trial, with new built assets/index installed for subsequent reload. No Renderer remount or Main restart; live JS behavior is unchanged. Native capture confirms 30px, zero border and soft shadow. All localStorage, input text, operation messages, teacher turn text and route remained byte-identical; window stayed unfocused. ## Click Affordance Follow-up - Same-task ownership and existing planning context verified again at dc8f766; peer scope decisions remain compatible. Gate passed. User wants the compact borderless prompts to look unmistakably clickable. - Plan: retain 30px/13px sizing, strengthen the warm fill and bottom shadow, add a small decorative chevron, and provide hover/pressed depth feedback with reduced-motion support. Update existing layout checks and hot-swap the built stylesheet in the trial, preserving live conversations. - Completed: 30px borderless buttons now have a warmer pale-yellow fill, 2px bottom shadow and decorative chevron. Hover raises 1px and pressed state lowers 1px; reduced-motion keeps position stable. Exact configured text and accessible name unchanged. - Verification: typecheck, lint (0 errors / 8 existing warnings), source and combined-stage production builds, and six focused browser cases passed. Existing cases now exercise hover, pressed and reduced-motion feedback as well as 319/508px layout and exact prompt sends. - Trial stylesheet index-ydJGBX8O.css installed and activated without reload. Native screenshot inspected; computed height 30px, font 13px, border 0 and raised shadow confirmed. All storage, inputs, 14 operation messages, teacher message text and route unchanged; focused=false before/after. No cloud changes or live messages sent. ## Smaller Reply Cards Follow-up - Resumed the same visual refinement task at 79b1dc1; verified ownership, existing planning context and peer registry against the last reviewed state. No new overlap. Gate passed. - User identifies the generated three-color reply cards, separate from the configured prompt buttons. Reduce one size: text 16px to 14px, padding 14px/16px to 10px/12px, radius 16px to 12px, gap 10px to 8px, arrow 16px to 14px. Keep full row width and at least a 44px target, colors and click/send behavior. - Plan: change scoped CSS, existing browser assertions and docs; build and swap the current trial stylesheet without remounting conversations or changing focus. - Completed the requested size step for generated reply cards only: 14px text, 10px/12px padding, 12px radius, 8px row gap, 14px chevron and 44px minimum target. Three colors, full-width layout and click behavior unchanged; configured prompt buttons retain their previously approved size/style. - Verification: typecheck, full lint (0 errors / 8 existing warnings), source/combined-stage builds and 10 browser reply-history/card interaction cases passed at 319px and 508px. - Hot-swapped trial stylesheet index-CZpr_a7Y.css without reload or focus acquisition. Actual three screenshot cards now measure 45.8px high with 14px text. Native image inspected; storage, current text inputs, operation messages, teacher history and route match before the update. No live model calls.