Repository navigation
Conversation
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Choosing a model in Bots now looks and behaves like Boite's composer model picker.
src/components/model-picker/: Boite'sModelPicker,ProviderTiles,AccountSeatsandEffortSlider, copied from Boite at 4b6335b1 (each file names its source). Same chip, same popover: provider rail with logos, favourites tile, search past 12 models, prefix groups, show-all fold, legacy fold, account seats, refresh, skeletons, keyboard and outside click. Leaf modules that are the same in the vendored submodule (ModelSearch,ProviderLogo,floating,Closing,model-list,model-order,model-picker-keys) come from@boite/ui.src/lib/model-picker/store.svelte.ts: aPickerStoregiving the picker the part of Boite'sStoreit reads, on top ofCoreLink. Favourites are Boite's own list: read from the core's settings and written withsettings.set { modelFavorites }, so a star set in Boite shows in Bots and back (favorites.tscopies the types and the merge rules, which the vendored contracts lack).CoreLinkgainsfollow(client)(the island borrows the companion's client), arefreshread and a reading state per provider and account, andsaveSettings.ModelMenuis now the picker plus the effort chip, on the agent's selection. A model of another provider or account moves the agent there with its model's default level, as Boite's agent editor does; the effort chip offers the model's own levels. The popover hangs under the chat's head inside the 940x530 island window, and takes clicks there (data-hit, new optionalresized()in the view contract).CompanionModelPicker.svelte(not wired yet): the companion's model and effort with an "Automatic" tile first (provider null). Props:store: CoreLink,prefs: CompanionPrefs,onchange?: (next: CompanionPrefs) => void; it writes withwriteCompanionPrefs..island-tokensmaps the remaining Boite tokens the picker uses (surface-3, active, control glaze, reasoning, shadows) to dark values, and theme-aware logos keep their dark colours on the island.ui.reveal, so the install and connect actions are left out.scene=menu|models|search|effortopen the picker on the favourites, on Claude, on OpenCode searched fornvidia, or the effort chip.How it was verified
bun run check: 0 errors, 0 warnings.bun run test: 61 files, 459 tests passed, including new tests for the favourites round trip through the fake core (Bots stars, Boite reads; Boite stars, Bots shows; unstar), the read-once, pending and refresh behaviour, the Automatic choice, the companion picker mounted, and moving the assistant to another provider.bun run test:scriptspassed,bun run check:manifest: accepted.