Commit Graph
518 Commits
Author SHA1 Message Date
amosblomqvist b48821309b feat: finish donor-led custom endpoint integration 2026-10-29 04:43:53 +02:00
amosblomqvist 80662d3d3b Merge PR #62 contribution for donor-led integration 2026-10-29 02:25:19 +02:00
amosblomqvist b493403fc3 Merge occurrence-aware pending-question submission fix 2026-10-29 01:30:13 +02:00
amosblomqvist 6ff4924780 fix: align pending questions by native occurrence 2026-10-28 23:31:37 +02:00
amosblomqvist de9caf6bc4 Merge contributor foundation for pending-question authority 2026-10-28 23:23:46 +02:00
amosblomqvist 3c76930964 fix: preserve math through streaming HTML repair
Disable only Remend's incomplete-HTML stripping in message/tool content and reasoning rendering. Keep TeX, source data, and sanitization unchanged; unfinished HTML can display literally.

PR #266 identified the less-than comparison trigger. This uses an independently authored renderer configuration fix rather than its TeX-spacing workaround, with streaming, incremental, literal-code, and safety regressions.
2026-10-28 23:21:15 +02:00
iamabhishekt b4a13f5c3b feat: manual model IDs when /models is unavailable
Hosted OpenAI-compatible APIs often serve chat but not GET /models
(Volcengine Ark Agent Plan returns 404), so connect failed. Accept a
typed list of model IDs: merged into discovered models when /models
works, used alone when it does not. The typed list is stored as
customProvider.manualModels so reconnects and pin saves keep it.
2026-10-28 16:16:30 -04:00
amosblomqvist 8883fe1f5f Merge native Claude Code integration with explicit opt-in
# Conflicts:
#	src/agent/teacher-agent.ts
#	src/server/keys.ts
2026-10-28 21:45:50 +02:00
amosblomqvist c9c8cead57 feat: require explicit opt-in for Claude Code use 2026-10-28 21:37:03 +02:00
amosblomqvist ab76e4ff50 fix: clarify Claude CLI billing and compact status copy 2026-10-28 21:13:43 +02:00
amosblomqvist 074ba7afe4 feat: use session-reported Claude CLI context windows 2026-10-28 20:36:42 +02:00
amosblomqvist 17c94be327 fix: show native Claude CLI usage as unpriced 2026-10-28 19:58:07 +02:00
amosblomqvist 1750dd8a24 fix: keep successful file path attachments silent 2026-10-28 19:52:07 +02:00
amosblomqvist 5093809ea0 fix: authorize CLI probes and preserve executable identity 2026-10-28 19:26:36 +02:00
amosblomqvist c5a756d707 feat: report Claude CLI installation and gate unsupported versions 2026-10-28 19:10:47 +02:00
amosblomqvist 0b576d5973 fix: preserve native word and line deletion around file chips 2026-10-28 19:07:25 +02:00
amosblomqvist c4e934c9dc feat: attach desktop file paths as editable learner chips 2026-10-28 18:54:57 +02:00
Hadrien Cornier 82f0b59355 Keep the question dock aligned with the native pending call 2026-10-27 22:58:00 -05:00
Daniel Buckner 695948271f feat: user pins for local model limits (context, max output, thinking)
A local endpoint that publishes no limits — LM Studio's /models says nothing —
left every model on the 8192/4096 defaults with no way to say "this one has a
131k window". Each discovered model now gets three optional pins in the
endpoint editor: context window, max output tokens, thinking (auto/on/off).

A pin always wins: user pin → what the endpoint published → compiled default.
Blank means no opinion, so discovery keeps ruling wherever you don't pin. Pins
live in customProvider.overrides keyed by model id, stored apart from the
discovery snapshot: a reconnect refreshes the models and prunes the pins of
models that vanished while keeping the rest.

Pins are written by PATCH /api/custom-provider, which never probes — the whole
point is configuring a server that isn't answering /models correctly. Connect
still probes and still fails loudly when the endpoint is down. A pin under 2048
tokens is rejected on the write side and clamped up on the read path, matching
the compaction-floor discipline.
2026-10-27 16:25:03 -07:00
Daniel Buckner 286a95ba04 feat: disconnect a custom endpoint (DELETE /api/custom-provider + Disconnect in its editor)
Connecting was one-way: POST could only replace the base URL, and the only
escape was hand-editing settings.json. DELETE now mirrors POST — drop the
stored section, delete the reserved key, unregister the provider from
piModels() — and the connect editor grows a Disconnect beside Connect,
following the stored-key rows' Delete pattern (quiet text, one click, no
confirm, only once there is an endpoint to remove).
2026-10-27 15:56:17 -07:00
Daniel Buckner 5b1fd81815 fix: vision slot filters to image-capable + custom models (was relaxing for all providers)
The prior change made the vision slot show every model (image-capable first),
which relaxed the filter for built-in providers too — built-in text-only models
became selectable for Vision. Centralize the vision rule in ModelMenuList:
built-ins must report image input; custom-endpoint models stay selectable (their
capability may be unreported). Image-capable still float first.
2026-10-27 15:56:17 -07:00
Daniel Buckner dbf80803cc refactor: trim custom-endpoint comments and share synthetic provider const
Review pass: shorten verbose doc comments across the custom-endpoint code,
merge duplicate imports, share one synthetic provider entry between the keys
section and setup dialog, collapse the duplicated connect-editor block, revert
an unrelated settings-route drive-by.
2026-10-27 15:56:17 -07:00
Daniel Buckner 870a1ad343 feat: custom endpoint as a first-class provider (add via dropdown, required key, vision ordering) 2026-10-27 15:50:51 -07:00
Daniel Buckner 07b6403d94 feat: custom OpenAI-compatible endpoint as a first-class provider (vision + context from /models) 2026-10-27 15:48:16 -07:00
amosblomqvist 8337836199 Use sans settings labels and link Deepgram key setup 2026-10-27 22:32:55 +02:00
amosblomqvist 27e277099f Align dictation controls with settings dropdowns and show setup guidance 2026-10-27 22:18:01 +02:00
amosblomqvist f5a655b2f9 Preserve native Enter activation on dictation language options 2026-10-27 22:01:16 +02:00
amosblomqvist fbafc5e53a Finish Deepgram language settings with shared searchable picker 2026-10-27 21:51:09 +02:00
amosblomqvist 88266eaaf4 Merge PR114 dictation foundation for approved provider-row finishing
Preserve original contributor commit 3bb28e5f29. Resolve only the settings-dialog conflict by retaining current General/update behavior: the donor General-only language placement is explicitly superseded by the human-approved row BELOW the full-width Deepgram key. The assigned implementation worker will implement that placement and approved shared dropdown finishing. Foundation only, not a checked candidate.
2026-10-27 21:33:40 +02:00
amosblomqvist 320d5e4704 Merge PR #154 short opening URLs and recoverable prompt handoff 2026-10-27 19:13:19 +02:00
amosblomqvist 3b29b5e9e7 fix: retire stale composer recovery drafts before retry
A failed-response Retry submits no composer text. Retire the earlier accepted text send's recovery fallback synchronously so a Retry model/key refusal cannot restore it over the current unsent draft. Never clear a later ordinary send's fallback at async settlement.

Add key/model503, superseding-draft and ordinary-refusal coverage. Verified 183 focused tests, typecheck, full ESLint, production build, and a red/green live production regression plus ordinary-draft recovery; no external provider calls.
2026-10-27 18:56:55 +02:00
amosblomqvist 1ff60b4681 fix: recover opening refusals after view teardown 2026-10-27 18:39:42 +02:00
amosblomqvist 5984eb4914 fix: render failed-response retry refusals as readable text
Decode only Retry's HTTP 400 error field for the existing banner. Preserve raw model/key refusal envelopes and other submission-error handling.

Verified on the accepted-main integration: 2424 full-suite tests, typecheck, full ESLint, production build and isolated synthetic production-browser Retry/Submit smoke. No real provider calls.
2026-10-27 18:35:31 +02:00
amosblomqvist f24fda926a fix: finish new-session opening-message handoff 2026-10-27 18:19:38 +02:00
amosblomqvist 282f01e1f4 Merge accepted local main into PR #184 working branch 2026-10-27 18:12:09 +02:00
amosblomqvist 8ca291526c Merge accepted local main into PR #154 working branch 2026-10-27 17:13:15 +02:00
amosblomqvist 82c6999a63 fix: preserve failed responses when retrying model calls
Keep failed attempts in the saved transcript and omit only trailing failures from Retry's temporary agent history. Use the matching temporary prefix length when persisting genuinely new output.

Preserve the error notice across plan/compaction markers, refuse Retry after later compaction, and avoid synthesizing results for tool calls inside failed generations while retaining Pi's native filtering.

Verified: 173 focused Retry/session/compaction-projection/practice-record tests, typecheck, changed-file lint, and diff --check. No app launch or real provider calls.
2026-10-27 16:49:29 +02:00
amosblomqvist 06714e5998 Keep unresolved session identity separate from Strong fallback 2026-10-27 16:21:54 +02:00
amosblomqvist 419dcf1ba2 Restore exclusive provider-first setup recovery 2026-10-27 16:12:13 +02:00
amosblomqvist c1ef6d6822 Merge PR #211 dynamic dock sizing with reviewed viewport corrections 2026-10-27 15:47:15 +02:00
amosblomqvist d30acd4fdd fix: finish measured dock sizing and short-window scrolling 2026-10-27 15:27:08 +02:00
anikam13 42814ba6a6 fix: budget dock height for answer controls and toolbar 2026-10-26 23:03:09 -07:00
amosblomqvist 683eb93bcc Fix model labels and catalog-backed setup initialization 2026-10-26 19:43:09 +02:00
Evangelos Stavropoulos a572675900 fix: let the learner retry a turn whose model call failed 2026-10-26 14:31:51 +02:00
amosblomqvist 8c277f8320 Merge source-preserving math content presentation 2026-10-26 05:26:13 +02:00
amosblomqvist d3c8709bd2 fix: preserve source data and recover tool math at presentation 2026-10-26 04:49:47 +02:00
amosblomqvist c1d044f91b Merge server-owned web subscription connections 2026-10-26 03:18:19 +02:00
amosblomqvist c0c670b810 feat: enable subscription connections in web and dev 2026-10-26 03:00:40 +02:00
amosblomqvist 6370c9d618 Merge durable background job delivery and recovery 2026-10-26 02:39:59 +02:00
amosblomqvist e851432f4c fix: separate worker completion from durable session delivery 2026-10-26 01:55:52 +02:00