Skip to content

chore: release v0.18.0#409

Merged
jamesbrink merged 2 commits into
mainfrom
release-plz-2026-07-15T20-18-40Z
Jul 19, 2026
Merged

chore: release v0.18.0#409
jamesbrink merged 2 commits into
mainfrom
release-plz-2026-07-15T20-18-40Z

Conversation

@release-plz-mold

@release-plz-mold release-plz-mold Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🤖 New release

  • mold-ai-core: 0.17.1 -> 0.18.0
  • mold-ai-db: 0.17.1 -> 0.18.0
  • mold-ai-catalog: 0.17.1 -> 0.18.0
  • mold-ai-inference: 0.17.1 -> 0.18.0
  • mold-ai-server: 0.17.1 -> 0.18.0
  • mold-ai-discord: 0.17.1 -> 0.18.0
  • mold-ai-tui: 0.17.1 -> 0.18.0
  • mold-ai: 0.17.1 -> 0.18.0
Changelog

Added

  • Desktop chains can now start from an image. The Chains builder gains a chain-level Start image well in the header and an attach / replace / clear source-image well on every stage card, both fed by the shared image picker (upload a PNG/JPEG or choose from any connected host's gallery) — making image→video chains possible on desktop. The start image conditions stage 1 (it rides on stages[0].source_image; a stage's own image takes precedence), TOML Export now inlines images as source_image_b64 per stage, and Open reads them back, so image chains round-trip between the desktop composer and mold run --script.

  • Desktop: catalog cards open an in-app detail drawer. Clicking a catalog card (title or body — the external Hugging Face / Civitai link remains as a secondary icon) now opens a detail panel with the model's description, license, tags, modality and file format, rating, and an itemized list of everything a pull will download: the primary weights files plus each shared companion (VAE / text-encoder / CLIP) with per-file sizes and a computed total. The detail is fetched from the same host the catalog view is browsing, every descriptive field is optional so older servers simply show less, and installed entries swap the Pull action for Repair, which re-fetches only missing or incomplete files.

  • Desktop: repair a model with missing components without re-pulling it. The Installed list's Info expansion already showed per-component present/missing dots; each missing component now carries a Repair button that enqueues a targeted catalog download on the host that owns the model — the server skips files already on disk, so only what's missing is fetched. Previously the only recovery was deleting the model and pulling it again.

  • Desktop downloads tray shows real progress detail and failed downloads can be retried. Every download row now carries a status chip, and active rows add the file currently transferring, files done/total, and a live ETA derived from a sliding transfer-rate window (stalled downloads honestly show no ETA instead of a bogus one). Finished, cancelled, and failed downloads no longer vanish: they collect in a collapsed History section under the tray, failed entries keep their error message, and a Retry button re-starts the download on the same host it originally targeted.

  • Desktop: Qwen-Image-Edit multi-image inputs and a ControlNet model picker. Picking a qwen-image-edit model now swaps the single source well for a reorderable picture strip — the first picture is the edit Target, the rest are References, added through the multi-select upload/gallery picker, reordered by drag or ‹ › buttons, and shipped in order as edit_images with the batch locked to 1. Previously the desktop detected qwen-edit and then stripped the image from the request, so even single-image edits never reached the server; a source image attached in single mode now seeds the strip as the Target when switching to an edit model. The SD1.5 ControlNet "Control model" free-text field is replaced by a picker listing installed controlnet-family models (not-yet-downloaded entries greyed out with a hint) merged with catalog-installed control-net entries fetched from the generation target host via the new GET /api/catalog/installed client, plus a Custom… escape hatch that restores the free-text input.

  • Desktop img2img gains source-fit policies. A Source fit selector in the Generate source well controls how a source image whose dimensions differ from the requested canvas is applied — Pad repaint (default: letterbox, then repaint the added bands via an auto-generated mask), Crop fill, Pad fit, Lanczos resize, or Upscale then fit (the source is first run through an upscaler such as Real-ESRGAN, then fit). Fitting happens client-side before submit, an existing inpaint mask is refit alongside the source, and with several hosts connected the pre-fit upscale runs on the same host the generation routes to, matching the web SPA's behavior.

  • Desktop Models is now a single Catalog view. The All / Installed / Available toggle is gone — installed models render stacked above the live Hugging Face + Civitai catalog in one searchable screen with compact responsive cards and a Grid / Table density toggle, filtered by All / Images / Video media chips (?type= deep links; the Chains and video Generate empty states jump straight to /models?type=video). Active downloads pin to the top of the view, each row carrying a source glyph (HF / Civitai) and its target host. When more than one host is connected, Pull still opens a target picker naming each ready host and its queue depth, and every pull keeps live progress, completion refresh, and cancellation routed to the server that owns it.

  • Servers carry a stable installation identity and models-disk stats. GET /api/status gains an additive instance_id — a per-installation UUID generated on first boot and persisted in the metadata DB (ephemeral when the DB is disabled) — and models_disk { total_bytes, free_bytes } for the filesystem holding the models directory; the mDNS advertisement adds a matching id TXT record. Older servers and clients are unaffected: both fields are simply absent or ignored.

  • Desktop: click a host for a live detail view. Selecting a host in the sidebar opens a per-host page with live GPU / CPU / RAM telemetry, models-disk usage, queue state, and the models installed on that host.

  • Desktop LTX-2 video panel: chained-clip routing cue and camera-motion presets. When the frame count exceeds one clip, the Frames input now explains the auto-chain plan ("Will render as N chained clips of C frames (motion-tail M) — expect this to take substantially longer") for chain-capable models, and blocks over-budget requests on models without chain support before they reach the server. A new Camera motion select (LTX-2 only) surfaces the curated camera-control LoRA presets — Dolly in/left/out/right, Jib down/up, Static — plus a custom .safetensors path, shipping exactly what the CLI's --camera-control sends (a camera-control:<preset> loras[] entry at scale 1.0); presets are disabled for LTX-2.3 models, which have no published camera LoRAs yet.

  • Desktop gallery gains search, an Images/Video filter, and bulk delete. The Gallery header adds a debounced text search over prompt, model, and filename and All / Images / Video chips with live per-kind counts — both narrow the merged multi-host grid alongside the existing host chips (History → Runs keeps its own search and is not affected). A new Select mode supports click-to-toggle, shift-click ranges, and Cmd/Ctrl-click, with a floating action bar carrying the selected count, Select all (in the current filter), Clear, and a confirm-guarded Delete selected that routes every print to its origin exactly like the single-tile delete (This-Mac prints over IPC, remote prints over that host's authenticated API) and reports partial failures as "Deleted X of N. Y failed." before resyncing the affected hosts.

  • Desktop prompt expansion gains variations, a candidate chooser, and a family override. The Expand control keeps its one-shot ⌘E in-place rewrite (with restore-to-original undo) and adds a popover: pick 1/3/5 variations, preview the LLM-expanded candidates without touching the prompt, click one to apply — the same undo restores the original — and optionally override the model-family style per request.

  • Desktop: queued jobs can move between a host's GPUs. On multi-GPU hosts the Jobs view splits each server's queue into per-GPU lanes; drag a queued row onto another lane — or right-click it for Move to GPU N — to retarget it via PATCH /api/queue/:id. The view never reorders optimistically: after every move (including a lost race against a job that already started, surfaced as a toast) the queue re-syncs from the server. Jobs stay on their owning host — cross-host drops are rejected — and single-GPU hosts keep the flat list unchanged.

  • Remote catalog requests can use the desktop's Hugging Face and Civitai credentials. The desktop forwards its locally stored tokens only on authenticated catalog requests to remote Mold hosts. A remote server keeps precedence for its own configured token and falls back independently per upstream to the request-scoped desktop token when the server token is missing or rejected; forwarded values never enter download listings, events, or persistent server config, and queued cancellation removes them from memory immediately.

Changed

  • Multi-GPU servers now run same-model jobs in parallel instead of serializing them on the warm card. The GPU scheduler preferred a busy worker that already had the model loaded over an idle empty sibling, so on a 4-GPU box a second job for the running model queued behind GPU 0 while three GPUs sat idle. An idle GPU that fits the model's VRAM estimate now outranks the warm-but-busy worker — the cold load is paid once, after which that GPU is warm and the loaded-and-idle tier takes over for later jobs. When no idle GPU can hold the model, jobs still queue behind the warm worker rather than cold-loading onto a card that would have to offload.
  • Desktop Catalog is one unified list with an Installed tab. The Installed shelf no longer sits stacked above the catalog: the main list merges live catalog results with installed models — deduped by name (the installed row wins), tagged with chips for every host that has the model, and sorted first. The source chips gain Installed (All / HuggingFace / Civitai / Installed, All remains the default), which scopes to the full-featured installed rows with Load / unload / delete. NSFW-flagged catalog entries now carry a visible NSFW tag while the include-NSFW checkbox stays, and the downloads tray remains pinned at the top of the view.
  • Desktop model info is one drawer, opened by clicking any model row. The catalog's detail drawer is now the single model-info surface: Installed rows (the Info button is gone — the row itself opens it), host-page model rows, catalog table rows, and grid cards all open the same sidebar. For installed models it adds an ON THIS HOST section with per-component presence dots and per-component Repair (moved out of the old cramped inline Info expansion), keeps the whole-model Repair footer, and never downgrades a known-installed model to "Pull" when the detail lookup comes from a different host.
  • Desktop catalog layout switcher is a real segmented control, defaulting to Table. The Grid/Table toggle is now an icon segmented control with an unmistakable filled active segment; Table is the default view and the chosen layout persists for the app session (navigating away and back keeps it; relaunching resets it). The Installed shelf's family sections now render in the same divided panel as the catalog table and host pages, so every model table in the app looks identical.
  • Desktop model rows are one shared shape, and catalog tables drop the thumbnails. A new ModelTableRow component (built on the Installed shelf's row: residency dot, source glyph, name, host and quant chips, family code, page link, relative-usage bar, two-line size block, actions) now renders model rows on the Installed shelf, host detail pages, and the catalog's table layout — so models look identical wherever they appear as a table. Catalog table rows lose the preview image and family placeholder tile in favor of clean info with the Hugging Face / Civitai source mark, showing SIZE and FETCH as aligned lines; grid cards keep their previews.
  • Desktop host pages show the actual queue. The host detail QUEUE section now lists the host's whole server queue as compact live rows — temperature dot, RUNNING · GPU 0 / QUEUED #2 state code, model, an OTHER CLIENT tag for jobs that aren't this app's, and elapsed time on running jobs — polled every 5 seconds while the page is open, with a PAUSED marker and a Jobs → link in the header for queue management.
  • Desktop host pages read top-down as a machine card. The per-host detail view is reordered and realigned: identity and actions up top, then one telemetry instrument panel where the GPU, CPU, RAM, and models-disk meters share aligned label / bar / value columns (the disk bar no longer floats in its own Storage section), an uptime chip and a warm LIVE indicator in the section header, and the VRAM meter warming to Safelight while jobs are queued. Models resident in the engine are now explicitly labelled LOADED with a residency dot so they can't be mistaken for queue entries, the host-scoped downloads tray moved from above the page title into the Models section (pulls land where models live, matching Catalog), the models list is a single divided panel with a count · total-size summary in its header, and the host title renders at its intended display size (a broken type token previously shrank it to body text).
  • Desktop: Settings → Engine is now Settings → Hosts. Engine modes are gone — the built-in engine is permanently the app's primary and every remote server is a list entry. One panel holds a This device card (engine status, base URL, Restart, per-device API key reveal/copy), an Add host row with Test connection, the Connected and Remembered lists, and On your network discovery with one-click Add. "Use this host" is retired — the generation-time Host selector already covers routing — and existing remote-primary installs migrate automatically on first launch: the old primary becomes a connected host, its API key moves into that host's per-host slot, and generation stays pinned to it until you choose otherwise.
  • Desktop: picking a specific generation host narrows the model picker to that host. With an explicit sticky host selected, the Generate model list only shows models installed on that host (and drops the now-redundant per-row availability tags); Auto and Most capable keep showing the all-host union since they route per-job. If the host's model list hasn't been fetched yet the full union is shown rather than an empty picker, and an already-selected model missing from the picked host still submits with the existing auto-pull warning.
  • Desktop: one physical server is one host entry. Hosts now dedupe by the server's instance UUID, so a box reached by hostname, mDNS name, and IP collapses into a single entry (the most recently used one wins, keeping its stored key), and both the saved list and network discovery stop re-offering machines that are already connected. Display names follow the server's reported hostname — stable across IP and port changes — unless you rename the host yourself.

Added

  • Desktop: a missing model on the routed host offers pull-and-resume instead of a raw 404. When a generation lands on a host that doesn't have the model, a dialog names the model, the host, and the known weights size, and offers Download and generate — the pull is routed to that host and the exact generation resubmits automatically the moment the download completes (the resume survives navigating away from Generate; a failed or cancelled pull explains itself instead of silently dropping the job). Declining leaves everything as before.
  • Reuse settings now restores the input image. Generation metadata gains two additive provenance fields — source_image_name (the gallery filename or upload name the img2img source was picked from; the request carries it via the new GenerateRequest.source_image_name, which the desktop and TUI populate) and source_image_sha256 (the server-computed hash of the exact source bytes; names and hashes only, never image payloads). On the desktop, submitting with a source also stashes those exact bytes locally by hash (bounded, content-addressed), and Reuse settings restores the input image best-effort: the local stash first (covers uploads and canvas-fitted sources that exist nowhere else), then a cross-host gallery filename match fetched from the print's own origin host. Old prints without provenance keys are skipped silently; a keyed print whose source can't be found explains itself with a toast.
  • Desktop: inspect queued jobs from the host page and reuse their settings. Queue rows on a host's detail page now open a right-side info drawer — state, host, owner, elapsed time, and (on servers that share them) the submitted settings: prompt, size, steps, guidance, seed (or Random), frames, and LoRAs — with a Load settings in Generate action that prefills the composer exactly like the gallery's Reuse settings. GET /api/queue entries gain an additive metadata field carrying those request parameters (never image payloads); the drawer degrades gracefully against older servers.
  • Desktop: unload models straight from a host page. Each LOADED chip on the host detail page gains an unload control that frees that host's GPU, with the chip hidden optimistically until the next telemetry poll confirms.
  • Desktop: the source-image gallery picker is now multi-host. The Generate/Chains "Choose from gallery…" picker shows the same unified view as the Gallery's All section — every connected host's still images, merged and deduped, newest first, with a host label on each tile when more than one source exists — and picking a remote print fetches its bytes from that print's own host. Previously the picker only listed the primary host's gallery.
  • Desktop: Help → Mold Documentation. The Help menu now opens the published documentation site (utensils.io/mold) in the browser, alongside the existing API Reference and Open Logs items.
  • Desktop: View → Developer Tools (⌥⌘I / Ctrl+Shift+I). A sanctioned menu entry that toggles the webview inspector, kept working in release builds. It replaces the webview's right-click Inspect Element as the debugging entry point now that the native context menu is fully suppressed.
  • Desktop: image-to-video for LTX-2 in Generate. Picking an LTX-2 model now keeps the source-image well: the attached image conditions the video's first frame at the chosen strength (the same source_image the CLI's -i/--image sends), complete with the gallery picker and Source fit control. Video can't repaint pad bands, so the mask surface and the Pad repaint fit option are absent for LTX-2 — a mask-dependent policy switches to centered Crop fill on entry (and Upscale-then-fit preprocesses with a fill instead of pads). Switching from qwen-edit promotes the edit Target into the img2video source, and an image attached for an image family survives the switch to LTX-2. Plain LTX-Video keeps no source well: its engine has no image-to-video path, so offering one would silently ignore the image.
  • Desktop: ⌘K searches the gallery, ⌘F focuses the Gallery search. The command palette now surfaces up to six prints matching the query (prompt, model, or filename, labeled · gallery); selecting one jumps to the Gallery with that print revealed in the lightbox via a one-shot /gallery?print=<filename> deep link. In the Gallery view, ⌘F focuses the existing search input, matching the screen-filter shortcut everywhere else.

Fixed

  • z-image-turbo:bf16 generates again. The official Tongyi BF16 checkpoint stores split diffusers attention tensors (to_q/to_k/to_v), but the Z-Image loader unconditionally translated split requests into a fused attention.qkv slice and failed with "cannot find tensor noise_refiner.0.attention.qkv.weight". Directly-stored names now win before the fused-QKV adaptation, so both split (official) and fused (single-file/community) checkpoints load.
  • qwen-image:bf16 loads on 46–48 GB GPUs again. The server's pre-load VRAM gate rejected the BF16 checkpoint on an idle L40S: the generic sequential peak estimate (transformer + VAE + 2 GB flat headroom + activation budget, ~43.5 GB) exceeded the flat 90%-of-free cap (~42.1 GB), even though the runtime is phase-sequential — the text encoder is dropped before the transformer loads, leaving ~5 GB of real slack during denoise. The Qwen-Image family now gets the same fits-in-free-VRAM admission the GGUF variant already had; undersized cards still reject.
  • Desktop: the webview's native right-click menu can no longer appear anywhere. The app-wide suppressor exempted every <input>, so non-text controls — range sliders, checkboxes, file wells — still leaked the webview's Back / Reload / Inspect Element menu. Only genuine text-editing fields (text-like inputs, textareas, contenteditable) now keep the native menu for spellcheck and paste; everything else opens the app's own context menu or nothing.
  • Sharded checkpoints report their Hugging Face repo again. Models whose weights ship as TransformerShard files (e.g. qwen-image:bf16) had no single Transformer entry, so /api/models reported an empty hf_repo — stripping their source mark and model-page link in the desktop pickers. The repo now falls back to the shard files.
  • The multi-host gallery now recognizes copies of the same print, and mirrored videos keep their true dimensions. The generation complete SSE event gains additive filename / original_filename / metadata fields (absent on older servers): the server now reports the gallery names it saved the output under and the exact metadata it recorded. The desktop's auto-save of remote results keeps those names and records that metadata locally — video files embed no mold:parameters, so locally-mirrored LTX prints previously synthesized their rows from the filename and rendered with wrong aspect ratios and no prompt. The merged All view additionally collapses legacy stray copies by seed + byte-size identity, and re-saving an already-present print is idempotent instead of minting a -2 duplicate.
  • The gallery right-click save action is now "Save locally" (the app also runs on Linux) and grays out when a local copy already exists — including copies saved under a different filename — instead of only checking the tile's origin, and manual saves now carry the origin row's metadata so copied videos keep their dimensions and provenance.
  • The desktop model picker now dismisses when clicking elsewhere. Opening the Generate view's model menu no longer leaves it covering the parameter controls after the user moves on to another part of the composer.
  • Desktop job statuses now use plain language. The sidebar and full Jobs view say Finalizing, Done, and Failed instead of the darkroom-inspired but ambiguous Fixing, Fixed, and Stopped, while cancelled jobs remain clearly labelled Cancelled.
  • macOS window controls remain visible when Mold is inactive. The overlay title bar now leaves close, minimize, and zoom at AppKit's native placement instead of repeatedly resizing the private title-bar container, and restores the native buttons' expected gray backing when macOS makes their inactive state fully transparent.
  • Desktop host pages no longer collapse and rebuild during background health polls. A host's telemetry, storage, queue, downloads, and model components remain mounted while connectivity changes, preserving the last good snapshot until each live source updates its own values.
  • Desktop Chains now uses video models installed on connected hosts. The Chains model picker merges every ready host's installed inventory, routes chain limits, creation, durable job actions, live events, and stage previews through the host that owns the selected model, and no longer disables a remote CUDA LTX-2 model merely because This Mac uses Metal.
  • The desktop now attempts every remembered host immediately on every launch. Remote reconnects start in parallel with This Mac instead of waiting for the local engine, and a saved host can no longer be skipped because an older reconnect-marker list is missing or stale. Unreachable hosts remain visible as errored rows and continue to self-heal through polling.
  • Desktop remote-host model downloads and inventories now stay visible. The Catalog subscribes to every ready host's download stream and merges every host's installed models into the Installed shelf with host badges and host-routed actions; a host detail page shows that host's active pull progress and force-refreshes its inventory on entry and completion. Model rows now label primary weights separately from the larger with shared runtime footprint, avoiding the misleading impression that shared text encoders and VAEs are part of each checkpoint's weight file. Built-in manifest variants also replace ambiguous multi-checkpoint Hugging Face repository results, preventing LTX repositories from appearing as unsafe 100+ GB aggregate pulls.
  • Desktop "Reuse settings" now restores every recorded parameter. Reusing a print from the gallery grid or lightbox previously carried only prompt, model, seed, size, steps, and guidance — silently dropping the negative prompt, LoRA stack, scheduler, CFG++, img2img strength, and video settings. The composer now receives the item's full embedded metadata and restores all serialized knobs (with the recorded seed as a fixed seed and the pre-upscale generation canvas), clears stale source/mask/control attachments that metadata cannot carry, and falls back cleanly when the print's model isn't installed. The lightbox metadata panel also gained the missing fields: negative and original prompt, scheduler, CFG++, strength, frames/fps, the full LoRA stack with scales, file size, format, and the mold version that produced the print — each shown only when recorded.
  • macOS Nightly updates no longer wait for the Linux AppImage build. Frontend and macOS Rust checks still gate the signed, notarized desktop update, while Linux validation continues independently as a required check. This lets macOS clients receive a ready Nightly as soon as its own platform gates and distribution finish.
  • The desktop All gallery no longer repeats prints saved on several hosts. Matching filenames collapse into one tile, preferring the copy on This Mac for media and actions while the badge and lightbox list every host where the print remains available. The local source itself is also registered only once when a remote primary keeps the built-in engine ready. Individual host filters continue to show each host's complete gallery, and the All count reflects the deduplicated result set.
  • Desktop title-bar chrome no longer collides on macOS development builds. When Tauri's build-time platform value is unavailable, Mold now falls back to WKWebView's native platform before laying out the overlay, preserving the traffic-light inset and Command conventions. The custom wordmark also uses the lowercase mold brand form.
  • Desktop themes now maintain WCAG AA contrast across both families and appearances. Light themes use a light empty-generation surface instead of a false black preview; text, semantic states, control boundaries, media badges, toggles, upload wells, and resize handles retain readable or perceivable contrast in Safelight and Mold light/dark modes. Upload wells and panel resize handles are also keyboard operable.
  • Catalog models without preview art no longer leave blank cards. Grid and Table use a lightweight local family mark for FLUX, Stable Diffusion, Qwen, Z-Image, LTX, and Wuerstchen entries when a source image is missing or fails, preserving card rhythm without another network request.
  • Desktop development builds are now clearly identifiable. Debug windows use the logical title Mold - dev, while the native macOS application menu and Dock process name use mold-dev. Release builds remain Mold, so system surfaces distinguish the hot-reload app even though Mold's overlay title bar hides native title text.
  • Desktop catalog thumbnails are dramatically lighter and cheaper to render. Civitai source-resolution previews are rewritten to one cache-stable 512 px CDN derivative for both Grid and Table, including responses from older remote servers. Cards defer image loading and decoding, assign thumbnails low fetch priority, and isolate their layout and paint work so long result sets avoid multi-megapixel image work outside the viewport.
  • Coverage CI now reserves enough runner disk for instrumented workspace builds. The coverage job removes large unused preinstalled SDKs before installing Rust and compiling the workspace, preventing GitHub-hosted runners from aborting with No space left on device while generating LCOV output.
  • Desktop updates now verify completely before installation and never roll back after launch. Mold removes the backup-supervisor, frontend health-handshake, and probation flow that could replace a successfully launched update with the old app seconds later. After Tauri verifies the Minisign signature, Mold fully extracts the archive in temporary storage, binds its bundle identity/version to the manifest, verifies the Apple signature and Gatekeeper assessment, validates the running install, and proves the target directory is replaceable before touching the installed app; macOS RENAME_SWAP then makes the final exchange indivisible. A one-time migration bridge retires the previous release's supervisor when it launches this fixed build, so the updater bug cannot revert its own fix. Startup checks now surface available updates in persistent app chrome and send a native notification while Mold is backgrounded; installation remains an explicit Update and restart action.
  • macOS notifications now show the Mold app icon. Bundled desktop builds supply their icon.icns as the notification identity image instead of relying on Tauri's bundle-ID lookup, which could leave completion notifications with a blank placeholder icon.
  • Post-generation upscaling now preserves both artifacts and their reusable settings. The server saves the original generated image and the upscaled result as distinct -original / -upscaled gallery entries on single- and multi-GPU hosts, and remote desktop auto-save mirrors both to This Mac. Gallery metadata still reports each file's real raster size, while Reuse settings restores the pre-upscale generation canvas instead of attempting to generate directly at 2x/4x dimensions. If the upscaler fails after generation, Mold now completes with the original image instead of discarding the successful output.


This PR was generated with release-plz.

@codecov

codecov Bot commented Jul 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.93%. Comparing base (049d1dc) to head (753a542).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #409      +/-   ##
==========================================
- Coverage   68.94%   68.93%   -0.01%     
==========================================
  Files         278      278              
  Lines      154414   154414              
==========================================
- Hits       106462   106450      -12     
- Misses      47952    47964      +12     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@release-plz-mold
release-plz-mold Bot force-pushed the release-plz-2026-07-15T20-18-40Z branch 2 times, most recently from 224e6d7 to c06ff5b Compare July 15, 2026 21:21
@release-plz-mold release-plz-mold Bot changed the title chore: release v0.17.2 chore: release v0.18.0 Jul 15, 2026
@release-plz-mold
release-plz-mold Bot force-pushed the release-plz-2026-07-15T20-18-40Z branch 26 times, most recently from 76cc150 to 6d31942 Compare July 19, 2026 01:49
@release-plz-mold
release-plz-mold Bot force-pushed the release-plz-2026-07-15T20-18-40Z branch 2 times, most recently from 92f1469 to b5d1495 Compare July 19, 2026 02:40
@release-plz-mold
release-plz-mold Bot force-pushed the release-plz-2026-07-15T20-18-40Z branch from eadd03e to 5a95c81 Compare July 19, 2026 04:15
@jamesbrink
jamesbrink merged commit fec9959 into main Jul 19, 2026
13 of 14 checks passed
@jamesbrink
jamesbrink deleted the release-plz-2026-07-15T20-18-40Z branch July 19, 2026 04:23
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