8000 feat(settings): fold the options most people leave as they are by adeelahmad · Pull Request #392 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(settings): fold the options most people leave as they are - #392

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-jcbu0k
Oct 15, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-jcbu0k

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: the busiest settings sections showed every tuning number and list at once (the AI assistant had 57 controls, Uploads 23, Speech providers 22, IIIF 21, Video 19, Workers 18), and the AI assistant opened with "1 change" nobody made, so leaving it asked about unsaved changes.

After: what most people leave as it is sits under a line that names it, with a count where that helps ("Tools it may use (24 of 24)", "Text from outside Lens (3 of 3 defences on)", "File types (20 of 20), pieces and unfinished uploads"). Folded: the assistant's tools, defences against outside text, approvals, steps, prices and long conversations; the decision model's server; search by meaning's tuning; the LLM's chat models, vision and key variable (its timeout stays in view); the local model's context, threads, GPU and address; upload file types and pieces; document page sizes and limits; video shot, OCR and face thresholds; the job queue and steps; IIIF's version, language, provider, layers, viewers and tokens; the voice model; and each speech provider, open when its key is set. A fold opens by itself when one of its fields has an error, and Find or Ctrl+K (#390) open it on the field they found. The import page's "Upload settings" and a podcast's "Set it up in Settings" open on the field they need. The AI assistant no longer opens with a change: an unset Laya server read back as an empty address (decisions.laya_url is now nullable, as the API stores it).

Controls in view on a fresh install (the clicks survey's count, measured locally on this branch):

Section Before After
AI assistant 58 19
Uploads 23 1
Speech providers 22 2
IIIF & metadata 21 6
Video, OCR, faces and objects 19 10
Workers 18 2
Search 17 9
Documents 13 8
Local model 25 20

How: a More fold in components/settings/bodies.tsx (the <details> the HTTPS and Assistant email sections already used), opened when a field in it has an error or a found field is in it. The clicks survey now leaves out controls a closed fold hides, which Chromium still lays out.

Motivation and Context

Adeel asked to simplify the interface and settings; the clicks survey's per-page counts put these sections at the top.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project (make hooks checks it on commit).
  • I added or updated tests.
  • My change requires documentation updates, and I have updated docs/ accordingly.
  • Users need more than the title to understand it, so I wrote it under ## Unreleased in CHANGELOG.md. (n/a)

Done questions (AGENTS.md)

  • Goal: the second step of "simplify the interface and settings"; merged on green.
  • Agents: n/a for layout; every setting stays reachable through GET/PUT /api/v1/settings/<section> and the admin assistant.
  • Zero setup: nothing new.
  • Fewest clicks: no journey takes more (local survey on both devices); the fields journeys change (LLM timeout, cloud preset, API key) stay in view; fix-it links land on the field.
  • Configurable: no setting removed or hidden from the app; all are one click away.
  • Light: n/a.
  • Private and secure: the prompt-injection defences are folded with their state in the title; nothing changes their values. No new surface.
  • Cost: n/a.
  • User decides: no default changes.
  • Upgrades: n/a, nothing stored changes.
  • Honest: the counts above are measured, on a fresh install.
  • Tests, docs and generated files updated (settings-save.test.tsx, settings-admin-models.test.ts, settings-speech.test.tsx still passes; docs/configuration.md).
  • Open standards: n/a; no new dependency.
  • Reported in the project thread; refine later: the clicks baselines' page counts refresh at the next survey.

🤖 Generated with Claude Code

https://claude.ai/code/session_012QHdEu9xFwnsCUnJn4yB3v


Generated by Claude Code

In the busiest sections the tuning numbers and long lists sit under a line that names them: the assistant's tools, defences against outside text, limits and prices; the decision model's server; search by meaning's tuning; the LLM's chat models and vision; the local model's threads and port; upload file types and pieces; document page sizes; video shot, OCR and face thresholds; the job queue and steps; IIIF's provider, layers and tokens; the voice model; and each speech provider, open when its key is set. A fold opens by itself when one of its fields has an error, and on the field Find or Ctrl+K found. The import page's Upload settings and a podcast's voice setup link open on the field they need. The clicks survey no longer counts controls a closed fold hides.

The AI assistant no longer opens with 1 unsaved change: an unset Laya server read back as an empty address.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012QHdEu9xFwnsCUnJn4yB3v
@adeelahmad adeelahmad self-assigned this Oct 15, 2026
@adeelahmad
adeelahmad merged commit bb3a151 into main Oct 15, 2026
10 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-jcbu0k branch October 15, 2026 10:44
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.

2 participants

0