Repository navigation
Release Meridian 1.7.16-beta - #321
Merged
Merged
Conversation
- Make generation report success or failure instead of silently returning, so the chat can tell whether a submission was accepted or lost. - Restore the message, attachments, and Git context when submission fails, while never overwriting a newer draft typed while the request was pending. - Track an isSubmitting state to block duplicate sends from Enter or the send button until the current submission settles. - Move the generation error out of the message list and next to the input so the failure stays visible after the draft is restored. - Prepare attachment message content before creating nodes or migrating the session, so a conversion failure leaves graph and chat state untouched. - Extract waitForRender into useGraphRenderReady and bound it with a timeout so a hidden canvas cannot block execution forever. - Centralize image detection in useFiles and broaden its extension and MIME coverage so more image types are sent as images rather than generic files.
…at-first-message Fix chat first message
- Replace the HeadlessUI combobox with a custom `useModelSelectCombobox` hook built on `useVirtualList`, since mounting every option made catalogs of 500+ models slow to open and navigate. - Render only visible rows while keeping keyboard traversal and `aria-activedescendant` over the full data set, so accessibility does not regress. - Move open/close, scroll, jump-to-section, and outside-click tracking into the hook and start position tracking only while open. - Pin shortcut settings in the catalog fixture and extend e2e coverage to assert bounded option mounts and an open-time responsiveness budget.
Batch endpoints are not intended for interactive chat and cluttered the model selector while adding latency to model list responses. - Add _is_openrouter_batch_model helper detecting ":batch" ids and "(batch)" names. - Filter batch entries in both frontend and v1 model mappers. - Cover both mapping paths with tests asserting batch models are dropped.
Rows were keyed by `${sectionId}:${model.id}`, so duplicate model ids
across the catalog collided and Vue reused the wrong DOM nodes when the
list re-rendered while filtering. This caused duplicated option rows and
slow, janky updates in the model selector.
- Include the row index in the generated row id and use it as the render
key so each option has a distinct identity.
- Extend the model catalog fixture with two models sharing an id to
reproduce the collision.
- Add an e2e assertion that duplicate-id models render as two separate,
non-overlapping options after repeated filter changes.
- Drop focus-within ring classes from the trigger element, which caused sluggish interactions when opening the model selector. - Keep outline-none for focus handling without the costly ring repaint.
- Add `jumpLabel` option to section metadata so jump buttons can display a different label than the section header. - Label the OpenRouter jump button "OpenRouter" instead of reusing the "All Models" header title, making the target clearer. - Extend model catalog e2e coverage to click the OpenRouter jump and assert it scrolls to the expected section.
…del-selector-slow perf: virtualize model selector for large catalogs
Persist the decoded model catalog in browser storage per user so the model dropdown renders immediately on app load while the fresh catalog is fetched in the background. - Add modelCatalogCache util to read/write per-user cached catalogs and drop malformed or mismatched entries - Key cache by user id (anonymous fallback) to avoid leaking catalogs across accounts - Seed models from cache in app.vue, then reconcile with the fresh catalog once it resolves - Thread user id through getAvailableModels callers so caches stay scoped - Add unit tests for cache hit/miss and storage failures, plus an e2e test asserting cached models show before fresh data arrives
…models-api-response Cache model catalog for faster model loading
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.
Meridian 1.7.16-beta
Meridian
1.7.16-betaimproves model loading and navigation through large catalogs, restores chat drafts when generation cannot start, and fixes attachment handling for first messages.Highlights
Faster Model Loading and Selection
Model selection reuses the last catalog while fetching fresh availability and renders only the visible portion of long model lists.
Reliable Chat Submission and Draft Recovery
Failed generation startup now leaves a visible error near the chat input and restores the submitted draft when no newer draft has been entered.
Self-Hosting and Upgrade Notes
Meridian
1.7.16-betaintroduces no database migrations, new configuration keys, new secrets, or dependency-file changes.