9.2 KiB
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:
78cfde6734 - 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
78cfde6734in 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
53d5b6badds configured shortcuts; current trial has78cfde6microphone/models and empty-preview0167d36overlay. 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
- Reconcile committed Yuxi shortcuts support with trial composer, preserving empty-array versus absent compatibility.
- Move controls above composer and give them body-size, normal-weight, pale rounded styling with keyboard focus and wrapping.
- 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.