Skip to content

Whale-school sidebar: opt-in language-learning panel with pinned terms and drill #2091

@Hmbown

Description

@Hmbown

Problem. Hover translation cards (sibling issue) are great for spot-translation but disappear. A learner who wants to actually pick up Mandarin whale-species names (or English whale-species names if Mandarin is their primary) needs persistence, repetition, and drill. We have the data (every cross-language term the agent renders) and the audience (a global + Chinese user base actively switching between languages). Missing: the ingest pipeline that turns "I just saw 海氏矮海豚" into "I now know 海氏矮海豚".

Shape — Whale-school sidebar. Opt-in side panel (toggle via /whale-school on or sidebar tab):

  • Today's deck. Every cross-language term encountered this session, freshest first. Tap to expand into a full translation card.
  • My pinned list. Cross-session persistent list of terms the user pinned from any hover card or session deck.
  • Drill mode. Show the term in one language, hide the others, let the user say/type the translation, score it. SRS-style spacing if we feel ambitious — flat repetition if we don't.
  • Pronunciation drill (stretch). Record-and-score using a configured speech backend. Pure stretch — gate behind explicit config.

Persistence.

  • Pinned terms stored in a new whale_school_pinned table in crates/state/src/lib.rs, per-user, with last_reviewed and review_count columns for SRS.
  • Session deck is ephemeral — recomputed from rendered identifiers each session.

Cross-client.

  • Crate exposes panel data over serve --http. Tauri desktop, future iOS, future WeChat — all read from one source.
  • The TUI variant is a tab in the sidebar, sitting alongside agents/files/working-set.

Acceptance.

  • /whale-school on flips a sidebar tab.
  • Today's deck populates as sub-agents are named or other cross-language identifiers render.
  • Pinning a term and starting a new session shows it in "My pinned list".
  • Drill mode supports at least term→target and target→term modes.
  • All UI strings localizable.

Notes.

  • Yes, this is unusual scope for a coding agent. That's the point — codewhale ships with its own pedagogy because the user base is genuinely bilingual and the project already produces the cross-language content. Few projects sit in this position.
  • Sequenced after the hover-translation card system and the model family palette.

Far-out — milestone v0.9.0 or backlog.

Slate item 18/18. Tracking doc: .private/issue-slate.md (maintainer-only).

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requestlocalizationLocalization, i18n, and non-English language support

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions