Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
bcd1aba
feat(moodle): add source-broker obligation discovery
HabsaTheDog Sep 9, 2026
f9fb110
docs: define batched Study Buddy release workflow
HabsaTheDog Sep 10, 2026
70dee0c
docs: queue verified provider updater fix
HabsaTheDog Sep 10, 2026
b30384d
fix: hand native study evidence to conversational agents
HabsaTheDog Sep 12, 2026
61cfff2
fix: validate separate native excerpts in semantic course search
HabsaTheDog Sep 12, 2026
c558bce
fix: surface native source conflicts in conversational handoffs
HabsaTheDog Sep 12, 2026
9e649a4
docs: record local agentic weekly-answer acceptance
HabsaTheDog Sep 12, 2026
a4328a9
fix: queue quick chat toolbar cleanup in development batch
HabsaTheDog Sep 13, 2026
d696f24
fix: queue stable quick chat composer spacing
HabsaTheDog Sep 13, 2026
69abf20
feat: add task-level model policy resolution
HabsaTheDog Sep 13, 2026
33f7eed
fix: queue voice transcript thread naming in development batch
HabsaTheDog Sep 13, 2026
dd31c7c
feat: integrate task profile editor and per-task metrics
HabsaTheDog Sep 13, 2026
90d9acd
chore: queue resizable sidebar sections
HabsaTheDog Sep 13, 2026
c9d0e11
fix: queue Windows updater diagnostics
HabsaTheDog Sep 14, 2026
fb7bd28
fix: queue desktop backend identity guard
HabsaTheDog Sep 14, 2026
090a34e
fix: queue desktop coexistence hardening
HabsaTheDog Sep 14, 2026
68e9621
docs(telemetry): record PostHog audit and queue v0.2.3 hardening
HabsaTheDog Sep 14, 2026
81a9ad5
docs(batch): record shared Telegram admin monitoring
HabsaTheDog Sep 14, 2026
80269b0
fix: queue reliable voice thread naming
HabsaTheDog Sep 14, 2026
0c4e5b0
docs(release): make full-batch handoff independent of chat context
HabsaTheDog Sep 14, 2026
3d1008d
chore: align package metadata with T3Code desktop build
HabsaTheDog Sep 14, 2026
7465bb8
fix(workflows): bound model calls and honor task-specific execution p…
HabsaTheDog Sep 15, 2026
ec337b9
fix(study-builder): skip unused layout calls and preserve item repair…
HabsaTheDog Sep 15, 2026
79ff78e
feat(study-builder): add bounded authoring and durable checkpoints
HabsaTheDog Sep 15, 2026
7a27dc9
fix(workflows): complete hybrid recovery and whole-turn accounting
HabsaTheDog Sep 15, 2026
2f656af
fix(runtime): restore workflow package contract after workspace migra…
HabsaTheDog Sep 15, 2026
9b90dd8
chore: update embedded T3 Code workflow runtime
HabsaTheDog Sep 15, 2026
d18006d
chore: record canonical project workspace
HabsaTheDog Sep 15, 2026
91c374a
Merge /home/alvaroschroll/Dokumente/Development/Study Buddy Project/S…
HabsaTheDog Sep 15, 2026
230e83b
fix(quiz): capture all questions, solve in parallel and verify saved …
HabsaTheDog Sep 15, 2026
1f3f24a
docs(quiz): record matched browser regression evidence and acceptance…
HabsaTheDog Sep 15, 2026
7f070f8
fix(quiz): stabilize page capture and isolate answer controls
HabsaTheDog Sep 15, 2026
5fbf486
docs(quiz): record authorized desktop first-try acceptance
HabsaTheDog Sep 16, 2026
ed219ee
feat(workflows): route study workers through the selected provider an…
HabsaTheDog Sep 22, 2026
400bef8
docs(providers): record committed verification and pending account ac…
HabsaTheDog Sep 22, 2026
7d2dca6
fix(settings): adopt cleaner provider connections interface
HabsaTheDog Sep 22, 2026
fa8bae8
test(providers): record live findings and harden cancellation coverage
HabsaTheDog Sep 22, 2026
90b842b
fix: isolate HTML workers and record resumed provider acceptance
HabsaTheDog Sep 22, 2026
8c1ebe1
fix: bound HTML repairs and recover provider worker failures
HabsaTheDog Sep 22, 2026
e57c512
Ground HTML workers in the owning request and image evidence
HabsaTheDog Sep 28, 2026
d4d2d67
Record Codex and Gemini desktop acceptance and provider handoff
HabsaTheDog Sep 28, 2026
88731cb
Restore first-try Moodle PDF workflow and deterministic rendering
HabsaTheDog Sep 29, 2026
347b3fb
Strip invalid control bytes from analyzer formulas
HabsaTheDog Sep 29, 2026
55356c1
Bound deterministic Typst recovery for malformed math spans
HabsaTheDog Sep 29, 2026
142d3d8
Prevent prose and recovered math from overflowing PDF pages
HabsaTheDog Sep 29, 2026
77db55d
Hide orphaned math delimiters in deterministic PDF prose
HabsaTheDog Sep 29, 2026
879e3b1
Record successful desktop PDF first-try acceptance
HabsaTheDog Sep 29, 2026
8d9f300
feat(providers): support mixed provider profiles in workflows
HabsaTheDog Sep 30, 2026
7b24d7c
fix(profiles): preserve mixed worker routing and acceptance evidence
HabsaTheDog Sep 30, 2026
0375e29
fix(moodle): keep task evidence complete through bounded native handoffs
HabsaTheDog Oct 1, 2026
231d099
feat(profiles): align workflow defaults with refreshed provider presets
HabsaTheDog Oct 1, 2026
cb98941
fix: record usable compact provider profile tabs
HabsaTheDog Oct 1, 2026
596ceae
Queue compact composer labels and permission icon review
HabsaTheDog Oct 1, 2026
7a80f94
Record email send icon follow-up in the development batch
HabsaTheDog Oct 1, 2026
957bbd4
fix(runtime): honor desktop broker routing and configured worker CLI
HabsaTheDog Oct 2, 2026
bd287e1
fix(moodle): preserve citable sources and assessed guide scope
HabsaTheDog Oct 2, 2026
9f2746c
fix(moodle): honor named course identities and explicit exclusions
HabsaTheDog Oct 2, 2026
bc89f8d
fix(pdf): prevent invented exercise point allocations
HabsaTheDog Oct 2, 2026
ed0eedb
fix(study-builder): preserve warning ownership and global repair scope
HabsaTheDog Oct 2, 2026
2b651d9
fix(pdf): validate mathematical conditions and table row shapes
HabsaTheDog Oct 2, 2026
ce7cfae
fix(review): preserve concrete content blockers on optional requirements
HabsaTheDog Oct 2, 2026
cacde07
fix(sources): preserve document context across chapter and PDF handoffs
HabsaTheDog Oct 2, 2026
3e5cb00
fix(evaluation): retain selected assessment records in bounded evidence
HabsaTheDog Oct 2, 2026
ac6ed8b
fix(pdf): preserve exercise givens and derivative assumptions
HabsaTheDog Oct 2, 2026
151c94b
fix(pdf): preserve source page composition and overlays
HabsaTheDog Oct 2, 2026
10b2f7e
fix(moodle): budget complete analyzer producer envelopes
HabsaTheDog Oct 2, 2026
378b102
fix(pdf): project shared-source content only once
HabsaTheDog Oct 2, 2026
9d54a61
fix(pdf): normalize unambiguous vector styling safely
HabsaTheDog Oct 2, 2026
bcfcf04
fix(moodle): preserve assigned sources and review original compositions
HabsaTheDog Oct 2, 2026
b850384
fix: hand acquired source reading to existing consumers
HabsaTheDog Oct 2, 2026
d8abac0
fix: preserve exploratory native reads before assignment
HabsaTheDog Oct 2, 2026
42f26a9
fix: reconcile mathematical interpretation and sufficient givens
HabsaTheDog Oct 2, 2026
553fb16
Preserve prior acquired exploration through bounded analyzer handoffs
HabsaTheDog Oct 2, 2026
7d3e2ef
Deliver assigned original PDF reading through bounded image packets
HabsaTheDog Oct 2, 2026
6d75190
Audit semantic direction claims and orphan PDF pagination in existing…
HabsaTheDog Oct 2, 2026
28a6c9e
fix(moodle): require local time scope for zero shortcuts
HabsaTheDog Oct 2, 2026
4a68458
fix(moodle): review complete learning claims in bounded packets
HabsaTheDog Oct 2, 2026
389167c
fix(moodle): reuse review packet space for unbound claims
HabsaTheDog Oct 2, 2026
e8f5628
fix: preserve complete review content within bounded workloads
HabsaTheDog Oct 2, 2026
253ee06
fix: retain assessed scope when source planning fails
HabsaTheDog Oct 2, 2026
cfb666b
docs: record native repair evidence and unresolved PDF acceptance
HabsaTheDog Oct 2, 2026
84a51f1
fix: preserve reviewed content in automatic PDF rendering
HabsaTheDog Oct 2, 2026
232c182
fix: simplify PDFs to direct native authoring and source tools
HabsaTheDog Oct 2, 2026
eb91687
fix: provide compiled Typst syntax examples for native PDF authors
HabsaTheDog Oct 2, 2026
0375bb9
fix: keep native PDF source attribution honest
HabsaTheDog Oct 2, 2026
6a746ae
fix: accept content blocks in source note template
HabsaTheDog Oct 2, 2026
8775caa
fix: verify document definitions and mathematical annotations
HabsaTheDog Oct 2, 2026
7356c1d
fix: support natural formula inputs and math notation
HabsaTheDog Oct 2, 2026
584b090
fix: validate generated practice and complete-quantity explanations
HabsaTheDog Oct 2, 2026
56e4acf
fix: preserve observed source identity during discovery
HabsaTheDog Oct 2, 2026
f88a299
fix: use full numerator and denominator in differential fractions
HabsaTheDog Oct 2, 2026
c664b10
fix(pdf): give owner executable checks and grouping examples
HabsaTheDog Oct 2, 2026
921c814
fix(pdf): retain source terms and demonstrate content notes
HabsaTheDog Oct 2, 2026
90b3d62
fix(pdf): simplify brief and avoid redundant technical recaps
HabsaTheDog Oct 2, 2026
7ae0ba2
fix(pdf): enforce one-owner default document entry
HabsaTheDog Oct 2, 2026
569792e
docs: record verified single-owner Quality PDF acceptance
HabsaTheDog Oct 2, 2026
4d54ec9
fix: retain published PDFs in owning Study Buddy workspace
HabsaTheDog Oct 3, 2026
41c1428
Provide direct mini-test tools with persistent first-attempt protection
HabsaTheDog Oct 3, 2026
d8e7508
Record native quiz routing repair and reviewed UI pin
HabsaTheDog Oct 4, 2026
e920965
Record tested native quiz transport follow-up
HabsaTheDog Oct 4, 2026
ae4a35d
Record reviewed quiz domain choice clarification
HabsaTheDog Oct 4, 2026
03afd77
Record verified native instruction transport and dependency
HabsaTheDog Oct 4, 2026
b3b1f81
Validate the single quiz start redirect before browser continuation
HabsaTheDog Oct 4, 2026
def47ed
fix(quiz): capture all questions and verify complete saved attempts
HabsaTheDog Oct 5, 2026
5c43b1b
fix(quiz): recover and verify existing first attempts reliably
HabsaTheDog Oct 5, 2026
9cc7625
Preserve source contacts and calendar context for native study email …
HabsaTheDog Oct 5, 2026
8857e88
fix(quiz): block unresolved answer risks and distinguish saved responses
HabsaTheDog Oct 5, 2026
1538875
fix(moodle): expose native grading and correct scored-answer audit
HabsaTheDog Oct 5, 2026
7a642b4
fix(email): integrate direct access and desktop reliability evidence
HabsaTheDog Oct 6, 2026
6dd3a32
docs: audit existing email capabilities and retain reliability failures
HabsaTheDog Oct 6, 2026
f14a4c0
fix: integrate verified latest-unread email reliability repair
HabsaTheDog Oct 6, 2026
b53e2b6
fix: automate Study Buddy local browser pairing for agents
HabsaTheDog Oct 6, 2026
ac7b23d
fix(integration): reconcile release history and repair PR merge contr…
HabsaTheDog Oct 6, 2026
cb5a40a
fix(integration): retain merged development dependency updates
HabsaTheDog Oct 6, 2026
0c689d4
fix(ci): provision pinned editor for cross-platform policy parity
HabsaTheDog Oct 6, 2026
c8a03fa
fix(pdf): retain fallback review pages and find Windows tools
HabsaTheDog Oct 6, 2026
4cbd560
test(windows): use native paths and executable provider fixtures
HabsaTheDog Oct 6, 2026
4cb6511
fix(quiz): accept Windows directory aliases without allowing links
HabsaTheDog Oct 6, 2026
e424804
fix(integration): retain merged workflow updates during CI repair
HabsaTheDog Oct 6, 2026
6b4f5f1
fix(ci): preserve Node runtime while installing editor test dependencies
HabsaTheDog Oct 6, 2026
9fff967
docs: record combined cross-platform CI repair validation
HabsaTheDog Oct 6, 2026
5d10cdd
fix(integration): retain merged Codex SDK upgrade
HabsaTheDog Oct 6, 2026
887336b
fix(ci): install parent workflow for pinned editor broker tests
HabsaTheDog Oct 6, 2026
fb2155f
fix(integration): pin validated editor CI test repairs
HabsaTheDog Oct 6, 2026
17ad5f0
fix(integration): retain merged production dependencies and final val…
HabsaTheDog Oct 6, 2026
1a6f596
test(windows): preserve catalogue parity across checkout line endings
HabsaTheDog Oct 6, 2026
efd11a0
fix(quiz): release operation leases on supported Windows runtimes
HabsaTheDog Oct 6, 2026
7ccfd13
test(quiz): guarantee distinct inode in lease replacement fixture
HabsaTheDog Oct 6, 2026
ac5e468
test(browser): allow bounded Chromium lifecycle time in guard suites
HabsaTheDog Oct 6, 2026
24f3c8c
fix(ci): bound Windows workflow test parallelism
HabsaTheDog Oct 6, 2026
9477023
Prepare integrated 0.2.4-alpha release and immutable promotion contract
HabsaTheDog Oct 6, 2026
167dd70
Pin reviewed shipped dependency security fixes for 0.2.4-alpha
HabsaTheDog Oct 6, 2026
9adc95f
Align release CLI integration fixtures with source version guard
HabsaTheDog Oct 6, 2026
b514412
Bound Windows CI rendering and enforce serial test files
HabsaTheDog Oct 6, 2026
39d513d
Give bounded widget rejection tests browser overhead budget
HabsaTheDog Oct 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions .github/workflows/alpha-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
version:
description: Stable, alpha, or beta SemVer without the v prefix
required: true
default: 0.2.0-alpha
default: 0.2.4-alpha
type: string
signed:
description: Require Windows code signing (blocked until SignPath onboarding is complete)
Expand Down Expand Up @@ -172,7 +172,7 @@ jobs:
retention-days: 14

assemble:
name: Assemble release evidence
name: Assemble immutable unpromoted release evidence
needs: [preflight, build]
runs-on: ubuntu-24.04
timeout-minutes: 15
Expand Down Expand Up @@ -222,6 +222,9 @@ jobs:
'
node -e 'const fs=require("node:fs"); const value=JSON.parse(fs.readFileSync("release-assets/study-buddy-root.cdx.json", "utf8")); if(value.bomFormat!=="CycloneDX" || !value.components?.length) process.exit(1)'
cd release-assets
# Promotion is a separate reviewed action after packaged acceptance.
test ! -e distribution-ready.json
test ! -e SHA256SUMS
sha256sum -- * > SHA256SUMS
cd ..
node scripts/check-desktop-release-assets.mjs release-assets "$RELEASE_VERSION" "${{ needs.preflight.outputs.channel }}" --final --unpromoted
Expand Down Expand Up @@ -250,6 +253,14 @@ jobs:
with:
name: study-buddy-${{ inputs.version }}
path: release-assets
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.16
- name: Verify draft contains only the exact unpromoted bundle
env:
RELEASE_VERSION: ${{ inputs.version }}
RELEASE_CHANNEL: ${{ needs.preflight.outputs.channel }}
run: node scripts/check-desktop-release-assets.mjs release-assets "$RELEASE_VERSION" "$RELEASE_CHANNEL" --final --unpromoted
- name: Publish reviewed draft from the exact existing tag
env:
GH_TOKEN: ${{ github.token }}
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,24 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
submodules: true
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.16
cache: npm
- name: Install pinned editor dependencies for workflow parity tests
uses: voidzero-dev/setup-vp@49c3e4e92c52e7f8392712a9267bbe71c5ab30e5 # v1.19.0
with:
working-directory: t3code-fork
node-manager: false
cache: true
run-install: true
- uses: typst-community/setup-typst@fee4b65b091cc546f02ce3be15fad8760f38a108 # v5.3.0
with:
typst-version: 0.15.0
- run: npm ci
- name: Verify workflow package and dependency security contracts
run: node --test scripts/check-workflow-package.test.mjs scripts/check-dependency-security.test.mjs
- name: Install Linux document and browser tooling
if: runner.os == 'Linux'
run: |
Expand All @@ -59,6 +69,7 @@ jobs:
pdfinfo -v
npx playwright install chromium
- run: npm run typecheck
# vitest.config.ts enforces serial files on Windows without shell flags.
- run: npm test
- name: Verify SDK and bundled CLI pairing
run: npm run moodle:doctor:version
Expand Down Expand Up @@ -96,6 +107,12 @@ jobs:
with:
persist-credentials: false
submodules: true
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.16
cache: npm
- name: Install parent workflow dependencies for editor broker tests
run: npm ci
- uses: voidzero-dev/setup-vp@49c3e4e92c52e7f8392712a9267bbe71c5ab30e5 # v1.19.0
with:
working-directory: t3code-fork
Expand Down
1 change: 1 addition & 0 deletions .hidden
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
AGENTS.md
16 changes: 16 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Study Buddy Agent Rules

This is the active application component under the Study Buddy umbrella now
used by T3 Code. The original repository is an untouched rollback/reference
copy. Read `../AGENTS.md` and `../project.json` before changing this component.

- Study Buddy is a universal study agent, not degree-, course-, subject-, or institution-specific. Build reusable modular behavior that adapts to the user's topic, study context, and configured sources; avoid hard-coded curricula, subject templates, or source assumptions.
- Study Buddy must coexist with independently installed T3 Code. Never share or alter its identity, state, ports, protocols, launchers, artifacts, updater, migrations, or processes unless explicitly requested.
- `t3code-fork/` belongs exclusively to Study Buddy. Treat `reference repo Study Buddy 1.0/` as read-only.
Expand All @@ -9,3 +13,15 @@
- Before changing Study Builder, read its implementation charter and relevant product specification, then update its implementation plan.
- Store workflow state under `study-buddy-data/`. Never place generated artifacts inside forks or reference repositories.
- Use the applicable Study Buddy skill for workflow-specific acquisition, rendering, testing, and delivery procedures.

## Batched Development and Release

- A generic request to prepare the next release includes discovery of the entire accumulated batch; never require the owner to remember individual changes or prior chat threads. Start with `docs/release-agent-handoff.md` and `docs/development-batch.md`, then reconcile them against commits since the last public release, root/UI submodule pins, development/release branches, open PRs and local dirty work. Record every discovered change as included, deferred with a reason, or blocked; do not silently omit another branch or silently include uncommitted work.
- The release agent owns regression triage and the final Windows/Fedora acceptance workflow. Ask the owner only for genuine owner-only actions such as authentication, required permissions or final publication approval, not to enumerate tests or fixes.
- Development handoff must distinguish committed, pushed (verified remote SHA), merged, deployed and release-accepted states. Push the reviewed UI dependency before the parent pointer when push is authorized. Document local-only repositories and uncommitted work explicitly; never call local commits remotely available.

- Accumulate compatible fixes and features on the current development version instead of starting or incrementing a release for every change. A batch of roughly 10–20 fixes is a planning heuristic, not a quota or permission to merge unverified work.
- Give every change focused deterministic tests, a scoped commit, and an entry in the development batch backlog. These checks make a change safe to queue; they do not make the accumulated version release-ready.
- Freeze the batch deliberately before release. At that point, run the applicable Study Buddy review and release skills, resolve the holistic review findings, and build one exact candidate from the reviewed commit.
- Because clean packaged acceptance is expensive, reserve full Fedora and Windows VM testing for the exact frozen candidate rather than every small development commit. Any byte change after acceptance invalidates that evidence and requires a rebuilt candidate and fresh affected acceptance.
- Do not tag, publish, promote, or call a build release-ready without explicit owner approval and the required final review, packaged checks, and clean Fedora/Windows VM acceptance. Never move or reuse a public tag for changed bytes.
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,26 @@ for owner testing; the `1.x` line remains reserved for the first full release.

## Unreleased

## 0.2.4-alpha — candidate

- Added Codex, Gemini and Claude provider installation, connection management,
task profiles and provider-independent study workflows.
- Improved source discovery, source-grounded obligations and study communication.
- Moved native PDF requests to one document owner with deterministic templates,
source attribution, math compilation and physical review.
- Added complete native quiz capture, original media preservation, first-attempt
recovery and saved-response verification; final submission remains blocked.
- Added permission-bound email inventory/search/read and exact-message send
approvals; corrected latest-unread ordering and preserved read state.
- Improved desktop source runtime, identity/ports, updater diagnostics, consent,
chat/sidebar/composer behavior and local browser pairing for external agents.
- Updated production dependencies and repaired cross-platform Windows tests,
lock/alias handling, PDF tool discovery and packaged release provenance.

This candidate includes the complete accumulated development batch. Historical
`v0.2.3-alpha` remains untouched. Publication and website distribution are pending
exact Windows/Fedora packaged acceptance; source checks alone are insufficient.

## 0.2.2-alpha — 2026-09-10

This test alpha combines the previously unpublished 0.2.2 and 0.2.3 candidates.
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@ Study Buddy is a local-first AI learning companion that finds authorized course
evidence and turns it into source-grounded answers, PDF study guides, and
single-file offline learning webpages.

> **Alpha status:** `v0.2.2-alpha` consolidates the unpublished corrective builds
> for hands-on Windows and Fedora testing. Stable-channel promotion is separate
> and requires owner approval and clean Windows and Fedora acceptance;
> the `1.x` line remains reserved for the future full release. Read
> the [security](SECURITY.md) and [privacy](PRIVACY.md) guidance before
> connecting an account.
> **Alpha status:** `v0.2.4-alpha` is the next coordinated candidate. The latest
> public version is `v0.2.2-alpha`; website promotion requires exact clean
> Windows and Fedora acceptance. The `1.x` line remains reserved for a full
> release. Read the [security](SECURITY.md) and [privacy](PRIVACY.md) guidance
> before connecting an account.

[MIT licensed](LICENSE) · [Roadmap](ROADMAP.md) ·
[Contributing](CONTRIBUTING.md) · [Support](SUPPORT.md)
Expand Down
48 changes: 48 additions & 0 deletions docs/composer-permissions-2026-10-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Compact composer permission labels — 2026-10-02

The composer now shows the active profile's name without adding “profile”.
Built-ins read Fast, Balanced, and Quality; custom names are preserved verbatim.
A single vertical divider separates the profile picker from Computer, Email,
and Quizzes. Their selected modes appear through icons, hover descriptions,
and the existing detailed menus.

Computer retains its locked, edit, and unlocked icons. Email uses an envelope
with an X for off, search for reading, plus for drafts, and a small paper plane
for sending with approval. Multiple accounts retain the generic envelope and
their individual account permissions in the popover. Quizzes always use a
shield: an “i” for review, a question mark for asking before opening, and a
check mark for assistance. The same quiz icons appear in the narrow overflow
menu. The existing responsive overflow behavior remains in place.

This is a presentation change. Runtime permission values, per-account email
policy, quiz admission and the final-submission boundary are preserved.

## Evidence

Browser-diagnostic screenshots of the actual rendered composer are retained
under `study-buddy-data/composer-controls-review/2026-10-02/`: desktop and narrow
layouts, plus all three quiz modes. The screenshots were visually inspected.
These fixture-backed browser checks do not establish native desktop or
packaged Windows/Fedora acceptance. No chat prompt or actual quiz was submitted.

Focused regressions cover fixed control labels and ordering, one divider,
verbatim custom names, runtime menu descriptions and icon changes, all three
quiz transitions and saved values, and all four email permission states with
their corresponding account switches.

All 125 affected Chromium checks passed across the full chat view, profile
picker, compact controls menu, and source settings. Full fork `vp check`
passed, and all 13 workspace typechecks passed.

UI commit `eec115d93` and the parent pointer/documentation are committed locally.

The follow-up replaces the email approval question mark with a paper plane
at the envelope's bottom-right corner. The detailed menu still requires
approval for sending. Its browser-diagnostic capture is
`study-buddy-data/composer-controls-review/2026-10-02/email-ask-to-send.png`.
Follow-up UI `3521096d8` is committed locally; all 10 source-settings browser
checks, full fork format/lint, and all 13 workspace typechecks passed.
This change belongs to the open `0.2.3-alpha` development batch. It is local
development work; it has not been pushed, merged, packaged, deployed, published,
or release-accepted. Frozen-batch review and exact-candidate Windows/Fedora
acceptance remain required.
Loading
Loading