Skip to content

feat: model picker favorites, recents, and effort-aware selection - #6

Open
coda-rho-bot wants to merge 2 commits into
letta-ai:mainfrom
coda-rho-bot:feat/model-picker-favorites-effort
Open

feat: model picker favorites, recents, and effort-aware selection#6
coda-rho-bot wants to merge 2 commits into
letta-ai:mainfrom
coda-rho-bot:feat/model-picker-favorites-effort

Conversation

@coda-rho-bot

@coda-rho-bot coda-rho-bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Makes the model picker faster to use:

Favorites + recents. Star any model (persisted in AsyncStorage) and the starred section pins to the top; the last five used models (keyed by handle) appear beneath it. The full catalog follows with search.

Effort-aware rendering. The reasoning-effort segment now renders only for models that actually ship effort variants — detected as distinct reasoning_effort values across catalog entries sharing a handle. Models without variants (most of the catalog) show no dead segment. Tapping a model with variants keeps the sheet open so the tier can be picked in the same interaction; models without variants apply immediately.

API groundwork: widens ReasoningEffort with "max" (the catalog ships max variants — claude and gpt-5.6 lines — and Anthropic's model settings accept it; the SDK union omits it), surfaces each catalog entry's declared effort on ModelOption, and passes max through to OpenAI reasoning settings.

Note: stacked on #5 — it uses the sheet's onSheetDismiss to clear pending effort state. Merge that first; this branch is based on it.


AI Contribution Disclosure

  • Authorship: This change was developed with AI assistance (agent-driven development).
  • AI tools used: Letta Code agent (GLM-5.3 and GLM-5.3 Flash via z.ai, per provider usage records).
  • Human involvement: Harry Cliff (@RhoMancer) reviewed the approach and the final diff; every line was verified against a working build on a physical device (Samsung ZFold 7, Android 16) before submission.
  • AI Policy: acknowledged — this contribution follows the repo's AI contribution policy.

coda-rho-bot and others added 2 commits August 31, 2026 13:00
…g for bottom sheets

The app is edge-to-edge (targetSdk 36), so Android never resizes the window
for the IME and @gorhom/bottom-sheet's built-in keyboardBehavior stays a
no-op — sheets with search inputs sat under the keyboard. Listen to Keyboard
events directly and grow the sheet's bottom padding by the keyboard height
while visible; dynamic sizing re-measures and the whole sheet rides above it.

Also: the Android hardware back button now dismisses the presented sheet
instead of popping the screen underneath (BackHandler while a sheet is open,
tracked via onChange), and an optional onSheetDismiss callback lets callers
reset transient state after any dismissal path (back, drag, backdrop).

Co-authored-by: Letta Code <noreply@letta.com>
Favorites (star toggle, persisted in AsyncStorage) and recents (last five
used, per handle) sections above the full catalog, so the models you
actually use are one tap away. The reasoning-effort segment now renders
only for models that actually ship effort variants (distinct
reasoning_effort entries across catalog entries sharing a handle) — models
without variants show no segment. Tapping a model with variants keeps the
sheet open so the tier can be picked in the same interaction; models
without variants apply immediately.

api.ts: widen ReasoningEffort with "max" (the catalog ships max variants
and Anthropic accepts it; the SDK union omits it), surface each catalog
entry's declared effort on ModelOption, and pass "max" through to the
OpenAI reasoning settings.

Stacked on the bottom-sheet fixes PR — uses the sheet's onSheetDismiss to
clear the pending-effort state when the sheet closes.

Co-authored-by: Letta Code <noreply@letta.com>
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