Skip to content

5 tracks#8

Open
ch1kim0n1 wants to merge 10 commits into
Sage2.0from
5-tracks
Open

5 tracks#8
ch1kim0n1 wants to merge 10 commits into
Sage2.0from
5-tracks

Conversation

@ch1kim0n1

Copy link
Copy Markdown
Collaborator

No description provided.

ch1kim0n1 and others added 10 commits April 25, 2026 17:35
Learners can type a leading slash to invoke specific tutor behaviors.
Backend strips the command from the visible message and injects a
behavioral instruction into the system prompt for that turn.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tutor can now emit small self-contained HTML/JS demos for tunable
simulations and live examples. The frontend renders them in a sandboxed
iframe (allow-scripts only — no parent DOM, no network) with a
preview/source toggle.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Long sessions occasionally bumped the model's context limit. The agent
loop now drops the oldest turns to keep total tokens under
context_max_tokens (configurable in settings.yaml; default 28k for the
70B llama tutor). System message and the in-flight user turn are always
preserved.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pending wiki changes (new topics, concept-map updates) already land in
content/pedagogy-wiki/.pending/. This adds the review surface on top:

- /wiki/staging endpoints: list, get, approve, reject
- /wiki-staging admin page with approve/reject controls
- API client wired in lib/api.ts

Approval applies the staged page + concept-map entry to the canonical
wiki and removes the pending file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduces a private wiki overlay at content/users/{user_id}/wiki/.
Topic page lookup checks the user overlay first, then falls back to the
shared wiki — letting learners customize or supplement topics without
touching the canonical content. Path traversal is locked down by strict
slug + user_id regex.

- services/user_wiki.py: storage layer + find_topic_page() resolver
- routers/user_wiki.py: GET/PUT /wiki/notes/{slug}
- frontend api.wikiNotes client

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Each learner now has a small structured profile (expertise level,
preferred style, interests, goals) that the tutor folds into the system
prompt. Adapts depth and analogies even on the first turn of a new
session — without the tutor explicitly mentioning the profile.

- models/profile.py + migration for the learnerprofile table
- services/learner_profile.py: DB access + prompt summary builder
- routers/profile.py: GET/PATCH /profile/me
- agent/context.py: TutorContext.learner_profile field
- routers/tutor.py: load and inject summary per turn
- frontend /profile page with tags + style/expertise selectors

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Chat now stays at full width while notes slide in as an overlay drawer
from the right (or full-screen on mobile). Replaces the resizable split
panel which always shrank the chat to 50%. Esc closes the drawer; a
backdrop closes it on small screens.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Sidebar collapses by default on small screens and opens as overlay
  with a backdrop; resize handle hidden on mobile
- Notes drawer (already overlay) gets aria-label and Esc-to-close
- aria-label / aria-pressed / aria-expanded on icon-only buttons
  (voice mic, send, sidebar toggle, notes toggle, back, delete session)
- Session history uses listbox/option roles with keyboard select
- Global :focus-visible ring for keyboard navigation
- prefers-reduced-motion suppresses animations

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
feat: ship remaining 8% (slash commands, artifacts, profile, drawer, a11y, more)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant