project-nomad/admin/inertia/components
chriscrosstalk d50cfa192a
feat(AI): per-model thinking toggle with global default (off) (#1079)
* feat(AI): per-model thinking toggle with global default (off)

Stop forcing thinking on for every capable model. Adds a global default
(ai.autoThinking, ships OFF) and a per-model override in the chat window,
shown only for thinking-capable models and remembered client-side.

The /v1 (OpenAI-compat) endpoint ignores `think`; reasoning_effort is the
real lever. The controller resolves per-request preference -> global default
-> OFF (gated on capability), and the service maps that to reasoning_effort
('none' to suppress on a capable model, 'medium' for gpt-oss, unset to let a
capable model default thinking on). A new thinkingCapable flag keeps
non-Ollama backends from ever receiving reasoning_effort.

installed-models is enriched with a `thinking` flag (checkModelHasThinking,
now memoized) so the picker knows which models get the toggle.

Stacks on #1078 (reasoning-field read + client-disconnect abort).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(AI): thinking toggle as NOMAD Switch + info tooltip

Address review feedback on the per-model thinking control:
- Use the shared Switch component (matches AI Assistant settings) instead
  of a raw checkbox.
- Label "Thinking:" with a colon to match the adjacent "Model:" label.
- Add an InfoTooltip explaining what thinking does and where the default
  lives. Extend InfoTooltip with optional `position` ('top'|'bottom') and
  `align` ('center'|'right') so it opens downward and expands leftward from
  the right-edge header slot instead of being clipped/crushed against the
  viewport edge. Defaults preserve existing (benchmark page) behavior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 16:33:09 -07:00
..
ZimUploader
…
benchmark
…
chat feat(AI): per-model thinking toggle with global default (off) (#1079) 2026-07-20 16:33:09 -07:00
file-uploader
…
inputs
…
layout
…
maps
…
markdoc
…
systeminfo
…
updates
…
ActiveDownloads.tsx
…
ActiveEmbedJobs.tsx
…
ActiveModelDownloads.tsx
…
Alert.tsx
…
AppUrlModal.tsx
…
BouncingDots.tsx
…
BouncingLogo.tsx
…
BuilderTagSelector.tsx
…
CategoryCard.tsx
…
CountryPickerModal.tsx
…
CreatorPackCard.tsx feat(creator-packs): gated per-creator video packs, offline via Kiwix (#1106) 2026-07-20 16:21:18 -07:00
CreatorPacksSection.tsx feat(creator-packs): gated per-creator video packs, offline via Kiwix (#1106) 2026-07-20 16:21:18 -07:00
CuratedCollectionCard.tsx
…
CustomAppModal.tsx
…
DebugInfoModal.tsx
…
DownloadURLModal.tsx
…
DynamicIcon.tsx
…
Footer.tsx
…
HorizontalBarChart.tsx
…
InfoTooltip.tsx feat(AI): per-model thinking toggle with global default (off) (#1079) 2026-07-20 16:33:09 -07:00
InstallActivityFeed.tsx
…
KbGuardrailModal.tsx
…
LoadingSpinner.tsx
…
MarkdocRenderer.tsx
…
ProgressBar.tsx
…
ServiceLogsModal.tsx
…
ServiceStatsModal.tsx
…
StorageProjectionBar.tsx
…
StyledButton.tsx
…
StyledModal.tsx
…
StyledSectionHeader.tsx
…
StyledSidebar.tsx
…
StyledTable.tsx
…
ThemeToggle.tsx
…
TierSelectionModal.tsx
…
UpdateServiceModal.tsx
…
WhatsNewBanner.tsx
…
WikipediaSelector.tsx
…