Skip to content

Releases: adamjmurray/producer-pal

2.4.0

Choose a tag to compare

@adamjmurray adamjmurray released this 02 Oct 04:30
v2.4.0
e073a81
  • Fewer dead ends. When something can't be done, the AI now learns exactly what went wrong and why for each item, and carries on with the rest. It recovers from mistakes instead of stalling or guessing.
  • More done per step. Read or change many clips, tracks, scenes, devices or locators at once. For example, lay out a song's locators in one call or add samples to eight arrangement positions at once.
  • Plug-ins, Max for Live devices and presets (experimental). The new Producer Pal remote script lets the AI load VST/AU plug-ins, Max for Live devices and presets, and swap a preset onto a device. Set it up from the chat UI's new Remote Script tab (guide).
  • Images in the chat UI. Paste, drop or attach screenshots and photos. Can be used to convert graphic scores into MIDI and nudge the AI into more creative territory.
  • Easier to point at things. Devices by type (t0/inst is the track's instrument), d+/c+ to append a device or chain, and take lanes you can create, name and copy a track's arrangement onto. t0[5|1] now finds the clip playing at bar 5, not just one starting there.
  • Improved Library search. Searches, similar samples and tag counts now more closely match what Live's browser shows.
  • New example skills for agents like Claude Code: read an .als file without Live, open or create a Live Set, and a dedicated export audio skill (decoupled from the analyze audio skill).
  • Plus: notation enhancements, updated model presets (GPT-6, Claude Opus 5.5, Claude Sonnet 5.5, Gemini 3.8 Flash), and hundreds of small fixes and improvements.

Important

New install location. Install the device to your User Library's Presets → MIDI Effects → Max MIDI Effect folder, then add it to a track from there. The remote script and future features rely on it being there. See the install guide, or the upgrading guide if you saved it somewhere else before.

Upgrading from 2.3? If you script Producer Pal or depend on exact tool results, read the migration guide. Result shapes and some refusals changed. Deprecated params like deviceName and count still work.

Full details: Changeset #1171

Shout-out to @ben-juodvalkis for reporting bugs and offering solutions that improved Producer Pal in this release + upcoming features.

2.3.0

Choose a tag to compare

@adamjmurray adamjmurray released this 12 Sep 07:44
v2.3.0
6667b77

TL;DR: Producer Pal now works better and faster.
Mostly under-the-hood changes. Device control is more reliable.


This release fills in the gaps the AI kept tripping over. Producer Pal used to
refuse reasonable requests, or report success for operations Live had quietly
ignored. Every tool was brought to one consistent set of rules:

  • It tells you the truth. Every write is checked against Live. If a value
    was rounded, clamped, or ignored, the result says so instead of echoing what
    you asked for.
  • It stops refusing reasonable things. Move a clip onto or off a take lane,
    copy a rack chain, split a stacked drum pad, address anything by path or
    id — and do any of it to a list of targets in one call.
  • It says the same thing the same way everywhere. One list rule, one set of
    param names, one spelling for a path. Arrangement clips are now addressed by
    where they start (t0[5|1], or t0[loc:Chorus]), and drum pads by pitch, so
    anything a result reports can be sent straight back in.
  • It does less work per request. Tools now ask Live for each object once and
    reuse it, and skip the work that doesn't matter for what you asked. Big batches
    feel it most: splitting 40 arrangement clips at 32 points went from 13 seconds to
    under 5.

Device parameters got the most attention: they were read and written in guessed
units, so "set the compressor attack to 12 ms" could do nothing and report
success. Now units are checked, out-of-range values land on the nearest step,
and you're told the steps a parameter accepts.

Also: set several sends on a track or chain at once, set track routing by
name, and dozens of smaller fixes, including clearer errors. In the chat
UI, deleting a conversation is undoable, rate limits honor the provider's
retry timing, and presets have been updated to the latest Claude, OpenAI,
and Gemini models.

Full details here →

Shout-out to @GooDVim for reporting device parameter bugs that helped improve Producer Pal for this release.


Scripting Producer Pal?

If you use Producer Pal by chatting, this does not apply.
Otherwise, scripts and code may need to be updated.
Some response fields were renamed or removed. Some input params are
deprecated and give a warning if you try to use them. See the Migration Guide.

2.3.0-rc1

2.3.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@adamjmurray adamjmurray released this 29 Aug 22:48
v2.3.0-rc1
4742af2

Producer Pal 2.3.0 (release candidate 1)

Device parameters

This release is mostly about device parameters. Reading and writing them in their real units — dB, ms, Q — was broken in several ways.

  • Parameters that show a plain number now use their real units. Glue Compressor's Attack read as 0–6 instead of its actual 0.01–30 ms, and EQ Eight's Q as 0–1 instead of 0.1–18. Writing 2.5 to Q went in raw, landing way past the maximum.
  • Values land on the nearest setting, not the next one up. Asking Glue Compressor for a 12 ms attack used to land on 30 ms. Utility's Output and Saturator's Drive landed one step low.
  • Parameters whose range ends in a word now work. Glue Compressor's Release runs 0.1–1.2 s and then reads "A" for Auto. That word broke the whole parameter: asking for 0.4 s landed on 0.1 s. Now 0.4 s lands on 0.4 s. Same fix for Compressor's Ratio ("inf : 1") and Analog's S Time ("inf s"). You can still set the word by name — value: "A" — and reads report it as alsoAccepts.
  • A write that didn't work no longer reports success. Live quietly ignores an out-of-range value and keeps the old one, so Producer Pal used to claim changes that never happened. Out-of-range requests now warn you, in the parameter's own units.
  • Writes tell you what they landed on. create-device and update-device return each parameter's value as it actually reads afterward, so a request for 12 ms visibly comes back as 10 ms — no follow-up read needed. Many parameters that look continuous only accept a coarse ladder of values, and both tools now say so.
  • Device paths through a drum pad's chain work. A path like pC1/c1/d0/c0 used to fail (or hit an internal error inside a nested rack). It now creates the pad's missing chain and puts the device where you asked.

Chat

  • Conversations no longer lose their tail. Clicking New or switching conversations mid-response used to drop whatever was still streaming, silently.
  • A conversation keeps its own settings. Switching or starting a conversation mid-stream could save the outgoing one with the incoming one's model, provider, and tools — and reopening it locked it to them.
  • Deleting and switching no longer collide. A delete running while you switched could clear the conversation you'd just opened, and a conversation deleted in another tab used to keep collecting turns that were never saved. You now get a banner instead of silence. A save can't bring a deleted conversation back, and an undo restores it properly.
  • Rate limits wait the right amount of time. Producer Pal now honors the provider's own Retry-After instead of always falling back to a fixed 5/10/20/40/60s schedule.

Speed

Every tool that writes a list now does the shared setup once per call instead of once per item. Measured against Live 12.4.3:

  • Splitting arrangement clips was getting dramatically slower with more cuts. 40 clips at 32 split points: 13.4s → 4.6s.
  • Building a drum kit in one call no longer slows down as the kit grows.
  • Reading a drum rack's chains is about twice as fast on a 64-pad kit whose pads feed returns: 1.0s → 0.5s.
  • create-clip, duplicate, and delete do roughly half the Live API work for a typical batch.

Other fixes

  • update-track: skipping an id no longer shifts the later names and colors onto the wrong track.

Under the hood

Chat and voice now share one conversation store, with a test harness that races every kind of save against every conversation-changing operation. Internal docs were reorganized, code-quality thresholds tightened, and dependencies updated. Nothing here changes what you see.

2.2.0

Choose a tag to compare

@adamjmurray adamjmurray released this 24 Aug 00:44
v2.2.0
a5e2ed1

2.2.0 is a performance release. Producer Pal stops leaking Live API objects,
so Ableton stays fast over a long session and its log file stops growing. Calls
that run long now return partial results instead of a bare timeout.

Two secondary focuses: Drum Rack support fills in its gaps, and every tool
starts moving onto one shorthand syntax for locating anything in a Live Set.

Special thanks to @arturflor for many useful bug reports.

Highlights

  • The Live API object leak is fixed in every tool — 2.1.0 fixed it for
    ppal-live-api alone. 500 ppal-read-track calls used to leave 5,252
    listeners armed in Live, enough to make the next track delete write 26 MB to
    Ableton's log. The same 500 now arm zero.
  • Live stops slowing down over a session — reads went 54 → 90 ms over 2,500
    calls, against 534 ms → 1.1 s before. Released objects are pooled and
    retargeted instead of rebuilt.
  • Drum kits, Live Set reads, and arrangement edits do a fraction of the work
    — a 64-pad kit's drum map went from 769 Live API objects to 129, and tiling or
    splitting on a busy track could freeze Live.
  • One path syntax for everything — t2/s3 is a session slot, t2/l0 a take
    lane, t1/d0/pC1 a drum pad. path replaces slot, whose two bare numbers
    models regularly sent backwards, and toPath names destinations. Old params
    still work with a deprecation notice — but see Breaking changes below.
  • Every id param is just id, and a param sent as null or empty reads as
    unset instead of as a real value.
  • Drum Racks fill in — copy a whole pad, delete a single chain, read and
    write chain mixers, address a send's return by name, and nested racks work at
    last.
  • More ways to move clips — copy or move one to another track in the
    arrangement, promote a take-lane clip back to the main lane, and cut
    arrangement clips at song positions.
  • Long calls come back with something — a call that runs out of time reports
    what landed and names what it didn't reach. The default timeout is 45s, up
    from 30s.
  • Built-in chat — the input is a markdown editor, Tab and Shift+Tab indent,
    the per-turn tool-step budget is 25 (settable 5–100), and Stop no longer sends
    the message you queued behind it.

Also: every copy-pasteable npx command pins producer-pal@latest, the tool
reference shows real example output for every tool, and a long list of clip,
rack, device, and chat fixes.

Full release notes, with the details behind every item →


⚠️ Breaking changes — only if you script against the REST API

Nothing changes for chatting with Producer Pal, and nothing changes for an MCP
client: the model reads whatever a tool hands back. This is for code you wrote
that parses tool results — a SKILL.md helper script, or anything calling the
REST API directly.

A clip's location comes back as path. The slot ("0/3"),
trackIndex/sceneIndex, and takeLane fields are replaced by one path
("t0/s3"). Read result.path instead, and it pastes straight back into a
path param.

Params are not affected. slot, toSlot, devicePath, takeLane, and the old
id spellings all still work — they're just no longer advertised.

2.1.0

Choose a tag to compare

@adamjmurray adamjmurray released this 13 Aug 21:23
v2.1.0
570917e

2.1.0 is a release about token and cost efficiency.

Two major changes make Producer Pal more efficient:

  1. The skills relayed at connection time are assembled from the tools you actually
    have enabled, so a client stops paying tokens to learn tools it can't use.

  2. The built-in chat can delegate to subagents, so detail work runs in worker
    contexts instead of piling into the one you're steering.

Highlights

  • Subagents — spawn_subagent(task) runs workers in their own nested chat
    sessions, several in parallel, returning only their final message. Each worker
    is resumable and keeps a full transcript the orchestrator never pays for. Off
    by default (Tools tab).
  • Chat settings presets — named bundles of provider, model, thinking level,
    toolset, and notation. Pairs with subagents: a strong planner can drive cheaper
    workers with more limited toolsets.
  • Skills — re-carved into 26 gated fragments, and fragments for tools
    you turned off are omitted: −16% with the device tools off, −69% for a
    read-only worker. Per-slot Include switches, and editing a built-in is now just
    typing in it.
  • Notation and toolset are scoped to the conversation — an old chat resumes
    the way its notes were written, and setting changes land in the next
    conversation instead of mid-chat.
  • Your project context is protected — backed up to a file next to your
    .als and restored automatically after an upgrade, and a model that sends only
    its new fact can no longer wipe the document.
  • Audio clips — new warping argument on ppal-create-clip, plus fixes for
    unwarped clips, which reported the wrong length and got duplicated over
    still-sounding audio.
  • Voice mode — OpenAI voice on GPT Realtime 2.1, transcripts on
    gpt-transcribe (~¼ the price per minute), and with barge-in off the mic now
    stays muted until the assistant actually stops talking.
  • Fix tool calling for local llama.cpp clients where it was broken (Jan, LM Studio,
    Ollama, llama-server) — one field's length limit was breaking every tool call.
  • Direct Live API tool no longer leaves objects behind in Live, which could
    dump tens of MB into Ableton's log when you deleted a track.
  • Skills for coding agents — drum rack, wavetable, and reverb IR generators,
    analyze-audio, and one-click zip downloads from the docs site.

Also: MIDI JSON note deletion with v:0, absolute octaves in Stark, a
reorganized documentation site, and a long list of smaller fixes.

Full release notes, with the details behind every item →


⚠️ Upgrading? Copy your project context out of the old device first

Replacing Producer_Pal.amxd gives you a fresh, empty device, and no release
before 2.1.0 wrote a backup to restore from — so this applies coming from any
earlier version. Open each Set whose project context you care about, copy the
text out of the device's Context tab, and paste it back once the new device is in
place.

2.1.0 is the last release that needs this. From here on, the on-disk backup
is restored automatically the first time you use the upgraded device.


Shoutout to @dominikzeman56-cloud for bringing issues with MIDI octave handling to my attention, which has been improved in this release. LLMs were getting confused because Ableton uses C3 for middle C, but C4 is much more common so they tend to use that.

2.0.0

Choose a tag to compare

@adamjmurray adamjmurray released this 15 Jul 20:08
v2.0.0
b1446c1

The "make it your assistant" release: persistent context and memory, your own
instructions, new notation styles for coding agents and small local models, and a
round of chat UI improvements and bug fixes.

Make it your assistant

Producer Pal can now carry context across sessions, projects, and MCP clients — and
you and the AI both manage it.

  • Global context — ~/.producer-pal/context.md is added to every session, so
    your preferences and background carry across all projects and all MCP clients
    (Claude Desktop, LM Studio, coding agents). Separate from the per-project context
    stored in the device.
  • Memory — Producer Pal remembers things about you across sessions. Each memory
    is a small file with a name, a one-line description, and the fact itself; every
    session sees the index of descriptions and loads a memory's full text only when
    it's relevant, keeping context lean. The assistant saves and updates memories as
    it learns.
  • Custom instructions — a system-prompt.md fully replaces the built-in chat
    instructions. Each conversation keeps the instructions it started with, so editing
    later won't rewrite old chats.
  • Skill overrides — override any of the built-in instruction sections; anything
    you leave alone tracks the shipped default.
  • Manage it all from the chat UI — the Context panel has five tabs: Project ·
    Global · Instructions · Skills · Memory
    . Instructions and Skills show your
    editable copy next to the read-only built-in, with a Copy button, change markers,
    live size indicators, and "Reset to default" — so you never start from a blank
    page.
  • You're in control — the AI is instructed to check with you before changing
    project or global context (unless it's currently empty), and you can review, edit,
    or delete anything it wrote.

Better support for coding agents

  • MIDI JSON notation — a compact, machine-readable format with short keys and
    omitted defaults: a plain JSON array an agent can generate and parse in scripts.
    The bundled Agent Skill now steers coding
    agents to it.
  • Configure the server at launch — npx producer-pal --notation midi-json --format json
    (short forms -n / -f). The new --format json|compact flag sets the tool
    response format: json for programmatic parsing, compact (the default) to save
    tokens in normal conversation.
  • Enable the Direct Live API remotely — the opt-in ppal-live-api tool no longer
    requires the device UI. Turn it on with POST /config {"liveApiEnabled": true},
    the Agent Skill's --set-config '{"liveApiEnabled":true}', or npx producer-pal --live-api.
    An escape hatch for scripting and debugging directly against the Live Object Model
    when the specialized tools aren't enough — not a default.
  • REST API defaults to JSON — a parsed result plus a separate warnings list.
    The older compact format is still available via ?format=compact.
  • Build your own web UI — the server now accepts browser requests from any
    localhost origin, so a page you serve locally (or the
    MCP Inspector) can drive
    Ableton Live through the REST API or /mcp. Non-localhost origins stay blocked.

New "Stark" notation

Stark is a literal notation designed to work better with small local models.
Melodies spell out exact pitches, chords can be named as symbols (Cm7, G7/B) or
voiced explicitly, and drums are written as hits with absolute /N durations, so a
pattern counts by its own subdivision instead of a fixed grid. Every Drum Rack pad
round-trips.

Notation is now a global setting (device Setup tab, chat UI Tools tab) rather
than a per-call choice, and every notation round-trips — reading back a clip gives
you the same notation you wrote. bar|beat remains the default; instructions adapt
to whichever notation is active.

Claude Desktop extension

The extension now exposes Producer Pal's key settings under Settings → Extensions →
Producer Pal
, so a model-specific setup travels with the extension instead of being
toggled on the device each time: MIDI notation, Small model mode, Direct
Live API
, and JSON output. They're gated behind an Allow configuration
overrides
master switch that's off by default — while off, the device and chat
UI stay authoritative.

Chat UI

  • Undo deleting a conversation — a banner names what you deleted and lets you
    restore it, with multi-level undo.
  • New models — OpenAI's GPT-5.6 Terra, Sol, and Luna (Terra is the new OpenAI
    default), plus Anthropic Sonnet 5 and Fable 5. On OpenRouter: GPT-5.6 Terra and Sol
    (replacing GPT-5.5 and GPT-5.3 Codex), Sonnet 5, Fable 5, Z.ai GLM 5.2, and
    Moonshot AI Kimi K3 (replacing the unavailable Kimi K2.6).
  • Provider errors — rate limits, credit problems, rejected requests — showed up
    in chat as a bare Error: [object Object]; the chat now shows the provider's
    own message, status code, and error type.

Bug fixes

  • npx producer-pal -s (small model mode) silently reverted to the device default
    whenever the device's server restarted while the client stayed connected —
    restarting Ableton or switching Live Sets. Config overrides are now re-applied on
    every request.
  • The Setup tab's JSON output toggle showed an inverted state when the setting was
    changed externally.
  • Drum-mode detection failed for nested Drum Racks when reading clips.
  • Notes at the same pitch and start time could silently delete each other when
    creating a clip (Live's overlap rule); they're now de-duplicated first.

1.4.14

Choose a tag to compare

@adamjmurray adamjmurray released this 29 Jun 01:52

v1.4.14

Clip editing

  • Duplicate Loop — double a MIDI clip with one flag, copying both notes and automation envelopes into the new half (something the manual length+notes approach couldn't do). Works alongside your other edits.

MIDI Transforms

  • repeat(offset, copies) — echo notes forward in place by a note value (e.g. repeat(n/8) adds one echo an eighth-note later; repeat(n/8, 3) adds three). Works with selectors, doesn't resize the clip.
  • where() predicates now accept functions, and float-tolerant comparisons stop boundary notes from being dropped.
  • Onset collisions are deduped before writing, with a warning when an echo would overwrite an existing note.

Built-in chat

  • Queue messages while the AI is still responding — they send automatically when it finishes.
  • History stays visible after compacting — older turns remain on screen instead of collapsing into a summary.
  • Conversation branching — editing a message or retrying a response now forks the conversation instead of discarding it, with ‹ › arrows to move between branches and a history panel that groups each branch family together.
  • Restored conversations keep their original provider + model instead of silently switching to your current selection.
  • More robust conversation import — malformed messages are dropped individually rather than failing the whole import.
  • Clearer status while compacting (input is disabled so nothing gets lost mid-compaction).

Voice chat

  • Rate-limited responses now auto-retry instead of requiring a manual click
  • Fixed a stale "Retry now" banner after a dropped connection, and the "active response in progress" error on stop → restart.

Performance

  • Prompt caching for chat — reuses the static system prompt, skills, and tool definitions across turns to cut cost and latency.

Bug fixes

  • Deleting several devices at once no longer removes the wrong ones.
  • Comma-separated arrangementStart now works for scene duplication.
  • Invalid time signatures (e.g. 4/0) are rejected instead of breaking.
  • Out-of-range scene tempos are clamped (20–999) with a warning.
  • The Portal (the adapter used by the Claude Desktop extension the npx producer-pal) no longer produces a double-slash (//mcp) when the base URL ends in /.

Documentation

  • New "How Producer Pal Works" section, conversation-branching guide, click-to-zoom screenshots, and a simpler sidebar with clickable group headers.

1.4.13

Choose a tag to compare

@adamjmurray adamjmurray released this 09 Jun 22:19

v1.4.13

New

  • Note-count transforms — the first MIDI transforms that change how many notes exist: ratchet() rolls a note into evenly-divided pieces (or cuts it on a grid), split() cuts at explicit bar|beat positions you name, and merge() glues repeated same-pitch notes into one sustained note.
  • Value-based note selection — where() filters which notes a MIDI transform touches by their values, not just position: where(note.velocity < 40): delete drops the quiet notes, where(note.velocity > 100): velocity += 20 accents the loud ones.
  • Manual conversation compaction in the built-in chat — summarize a chat up to any point to reclaim context, or back up and compact to get a small model that's run out of room (or gone off the rails) back on track.

Reliability

  • General:
    • Duplicating or moving an arrangement clip onto itself no longer loses content.
    • Devices: pan 50L/50R parsed correctly (no longer inverted), and numeric enum parameters resolve to the right option.
  • Built-in chat:
    • Pressing Stop while a tool is running no longer breaks the conversation.
    • Switching conversations mid-response now stops the in-flight reply instead of bleeding it into the newly opened chat.
    • Gemini voice mode: manual Interrupt no longer leaves your mic stuck muted.
    • Token usage now shows for LM Studio and custom OpenAI-compatible endpoints.

Plus many smaller fixes across clips, notation/transforms, tracks, and settings. See #866 for full details

1.4.12

Choose a tag to compare

@adamjmurray adamjmurray released this 03 Jun 23:07

A MIDI/notation expressiveness release with sample-library discovery and a batch of correctness fixes. (#862)

  • bar|beat pattern brackets [...] — one token cycles a set of values (pitches, chords, velocities, durations, probabilities) across positions for melodic stepping, chord layering, and gallop rhythms.
  • More forgiving notation — case-insensitive/Unicode/enharmonic pitch names, decimal ±n offset bases, Nbar-n near-bar durations, per-item bar| in beat-lists, and targeted errors that teach the right form.
  • Sample library discovery — findSimilar (rank by audio similarity) and findDuplicates (byte-identical groups).
  • Build a drum kit in one call — load samples onto pads with path-prefixed params like pC1/d0/sample.
  • Open a plug-in's editor window from ppal-select via openPluginWindow (VST/AU, Live 12.4+).
  • Chat UI — search conversations by title or message text (voice transcripts included); reasoning shown for LM Studio and custom local models; assistant links open in a new window.
  • MIDI correctness — notes are sorted/deduped before writing, noteCount reflects what Live actually stored, and read-clip round-trips pickup/overhang notes.

Heads-up: read-clip now reads a wider window and includes pickup/overhang notes, so noteCount can differ from the number of notes you actually hear in the clip. See #862 for full details and backward-compatibility notes.

Also: Fixed library browsing on older Live versions: ppal-library requires Live 12.4+ and now reports a clear error on attempted use of that tool instead of failing to initialize the Producer Pal Max for Live device.

1.4.11

Choose a tag to compare

@adamjmurray adamjmurray released this 01 Jun 20:16

Notation

  • Note-value durations — durations are now written as a fraction of a whole note: n/4 is a quarter note in any meter, n/8 an eighth note, and so on. This replaces the old beat-relative durations that were easy to misread (especially for smaller and local models). The fraction is now required, so mistakes surface as a clear error instead of a wrong note length.
  • Pickup notes — you can now place notes before the downbeat (e.g. 1|1-n/12), and they're preserved on read instead of being dropped.
  • Edit-then-add in one call — ppal-update-clip can now clear or edit existing notes and then add new ones in a single call. Clear a whole bar with "3|*: v0", an explicit region with "1|1-2|1: v0", or v0 to clear the entire clip. (This replaced the old merge/replace mode toggle.)

Transforms

  • Shared shorthand across notes and transforms: v100 (velocity), v80-120 (velocity range), p0.8 (probability), n/4 and 1bar (durations), bare pitch, and additive v±N / p±N.
  • New whole-bar and half-open range selectors: 3|* targets all of bar 3 (meter-safe), and -< gives an exclusive end.
  • Per-clip variation when updating or duplicating multiple clips now lives in one string via clip.index math and the new clipseq() helper (seq() stays per-note).
  • Fixed left-to-right operator evaluation: chained -, /, and % now compute correctly.

Voice

  • Defaults to English on both the OpenAI and Gemini backends, with a language selector in Voice settings.
  • Stopping and resuming voice in the same session (Stop → Talk) now keeps your earlier tool calls instead of dropping them.

Fixes & Housekeeping

  • ppal-update-clip's quantize now defaults to a 1/16 grid (it previously did nothing when you didn't specify a grid).
  • Fixed calling LM Studio's API from the built-in chat UI.
  • Refreshed the suggested models in the chat UI and updated third-party license notices.