Skip to content

Releases: c-colloid/AgentPanelForUnity

v0.58.2-beta.1

v0.58.2-beta.1 Pre-release
Pre-release

Choose a tag to compare

@c-colloid c-colloid released this 18 Sep 16:23

Fixed

  • Backslash sequences in paths and code no longer turn into line breaks
    and tabs.
    A Windows path such as ...\Roaming\npm\node_modules\...
    showed as three lines with the n missing, and a \t lost its letter,
    because a text element made from C# in Unity 2022.3 parses \n / \t
    by default. Every text element the panel builds now has that parsing off
    (TextEscapes): the Overview's agent path, the executable field, tool
    card input / output, diffs, code blocks, history rows and the rest.
    docs/design-notes/2026-09-18-text-escape-sequences.md.

v0.58.1

Choose a tag to compare

@c-colloid c-colloid released this 18 Sep 15:58

Fixed

  • The v0.58.0 tag, and therefore the public mirror and its release zip,
    captured the tree before the redesign's last five commits (phase 4
    disclosure rows, the second hint diet round and Overview reconnect row,
    the UXML card/row templates with the USS fixes, the guide screenshots).
    Those commits kept the version at 0.58.0, so the tag landed on the commit
    that introduced the version, not on the merged head. This release
    republishes the complete tree; no code change since 0.58.0 on main.

v0.58.0

Choose a tag to compare

@c-colloid c-colloid released this 18 Sep 09:40

Added

  • Settings has five tabs and an Overview. The single sixteen-card
    scroll became Overview / Agent / Panel / Unity integration / Connection,
    one tab body at a time, with the tab you left remembered for the editor
    session (the header gear reopens it). The new Overview tab holds no
    control: a Setup card (agent found?, signed in?, Unity operations on?)
    and an "In effect now" card (permission mode, auto-approve level,
    default model, language, and a red line whenever every permission check
    is being skipped), each row with a "Change" link to the setting's one
    home; the setup rows offer the obvious next move ("Set up", "Sign in",
    "Enable") when a step is not done. The About card's version pills and
    links are the Overview's footer. Phase 1 of
    docs/design-notes/2026-09-17-settings-redesign-plan.md.
  • One "go to this setting" entry point. AgentPanelWindow.ShowSettings (tab, cardId) selects the tab, opens a collapsed card and scrolls to it;
    the first-run "Log in" button, the Overview links and the UapOps card's
    auto-approve cross-reference (now a link instead of a sentence) all use
    it.
  • Settings search. A search field at the right of the Settings title:
    typing hides the tab strip and shows, from every tab at once, only the
    rows whose label, hint, tooltip, button caption or current value contains
    the text (case-insensitive), each surviving card headed by a
    "Tab > Card" crumb; a hit inside a collapsed card or foldout opens it.
    Clearing the field (or Esc) puts the tab you were on back exactly as it
    was. The Overview tab is not searched, since it only mirrors other
    settings. Phase 3 of docs/design-notes/2026-09-17-settings-redesign-plan.md.
  • A status pill on every Settings card header. The one-word state a
    card used to bury in a line at the bottom of its body now sits at the
    right end of its header, readable with the card collapsed: Unity
    operations "Port N" / "Off" / "Not running", Agent "Signed in" /
    "Not signed in" / "Not found", Appearance the detected CJK font, Model
    the model a new session will run, Custom instructions "Not set" /
    "N lines", Quick actions and Console errors their counts, Extension
    profiles "N detected", uLoop and the Unity plugin "Installed" / "Not
    installed", the danger zone "All off" / "Skipping checks". Tone (green
    / amber / neutral) only tints; the text always says the state. Phase 2
    of docs/design-notes/2026-09-17-settings-redesign-plan.md.

Changed

  • The danger zone is its own collapsed card at the end of the Agent
    tab
    , no longer the third row of the Conversation card, and it only
    takes the warning surface while "Skip ALL permission checks" is ON.
  • At 300px the tab strip shows short labels ("Unity", "Connect").
  • Fewer always-visible hint lines in Settings. Twenty-two lines that
    restated a label, repeated what the reconnect banner says, or described
    one of twelve module switches moved onto the control's tooltip (a "?"
    mark when long): the per-module descriptions, the Unity operations and
    Extension profiles opening paragraphs, the notifications focus caveat,
    the web fetch / search field notes, the staging-folder line, the
    disallowed-tools "one per line", the subagent-card caveat and the agent
    picker's "applies at the next reconnect". What stays visible is the one
    line you need to choose (auto-approve scope, validation gate, the two
    auto-continue switches, sign-in method, Ctrl+Enter).
  • The Unity operations, uLoop and Appearance cards no longer end with a
    status line; the header pill carries it.

v0.57.0

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 22:55

Added

  • uap_web_fetch: the agent can look at images, PDFs and pages on the
    web.
    Every agent's own web fetch flattens a URL to text, so a PNG or a
    PDF found by a web search could not be seen. The new Core tool (module
    web, default ON) fetches one URL and returns it in the form the model
    can use: PNG/JPEG downscaled like a composer attachment and returned
    inline as an image block (the tool card shows the thumbnail), GIF/WebP
    passed through as-is when under 5 MB, PDFs and any other file saved
    under Library/AgentPanel/Downloads/ with the path (Claude Code reads
    the PDF with Read; the result says which page ranges to ask for), HTML
    reduced to readable text (title, headings, list items) plus the page's
    image and link URLs so "search -> page -> the picture in it" is two or
    three calls, and other text (JSON, XML, Markdown, SVG) returned with a
    max_chars / offset window. Body kind is decided from the first
    bytes before the Content-Type, so a PNG served as
    application/octet-stream is still an image. The download runs on the
    UapOps worker thread (never blocks the Editor); only the image
    downscale hops to the main thread. Public http/https hosts only:
    loopback, private, link-local and multicast destinations are refused,
    on every redirect hop; 20 MB and 20 s caps; no cookies or credentials
    are ever sent. The tool is deliberately not read-only -- an outbound
    URL is a data-exfiltration channel for a prompt-injected agent -- so
    every call shows a permission card naming the host and path
    ("Always allow" still works). Downloads older than 7 days or beyond
    200 MB are pruned. Settings gain a "Web fetch" module row. Design note:
    docs/design-notes/2026-09-17-web-fetch-tool.md.

  • uap_web_fetch can import what it fetched as a project asset, and
    the fetch destinations can be narrowed per project.
    A save_to
    argument (a path under Assets/ with an extension) writes the
    downloaded bytes there and imports them synchronously, reporting the
    asset path and GUID -- "fetch this texture and put it on the material"
    is one call; an existing file is kept unless overwrite is true. The
    Web fetch settings gain "Allowed hosts" and "Blocked hosts" lists (one
    host per line, subdomains included, blocked wins, empty allowed list =
    any public host), enforced on the first URL and on every redirect hop
    on top of the built-in private-address policy, which the lists can
    never loosen. Design note
    docs/design-notes/2026-09-17-web-fetch-tool.md (stage 2).

  • uap_web_fetch extracts PDF text on request. as:"text" or a
    pages range ("3", "1-5", "7-") returns the text of a fetched PDF
    in the result, page by page with --- Page N of M --- markers, so an
    agent whose file reader cannot open PDFs (Codex, Grok) can still read a
    paper or a manual; Claude Code keeps the saved-file path as well. The
    extractor is dependency-free and best-effort: it scans every object
    (no xref trust), opens object streams, decodes Flate (with PNG/TIFF
    predictors), LZW, ASCIIHex, ASCII85 and RunLength, maps codes through
    /ToUnicode CMaps or WinAnsi / Standard / MacRoman + /Differences
    glyph names, and derives word gaps and line breaks from tracked pen
    positions and glyph widths (kerned runs stay one word, sub/superscripts
    stay on the line). Encrypted files, XObject forms and scanned pages
    yield no text and say so. Design note
    docs/design-notes/2026-09-17-web-fetch-tool.md sections 4.3 and 12.

v0.56.2

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 15:18

Fixed

  • The Agent card no longer offers a primary "Sign in" while an ACP agent
    is already connected.
    The card now has four distinct shapes: signed
    out (primary "Sign in" plus the how-to hint), signing in (status,
    Cancel and the browser link), connecting ("Connecting to {agent}...",
    no buttons) and signed in (the sign-in method line and a plain "Switch
    account"). Design note
    docs/design-notes/2026-09-17-acp-account-card-phases.md.

v0.56.1

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 13:34

Fixed

  • Sketch strokes and pins no longer see the hidden main scene while a
    prefab is open.
    In Prefab Mode the depth contour traced the room
    behind the prefab, and a pin or a surface stroke could land on it:
    the renderer scan returned the main scene's objects even though the
    stage does not draw them. Picking and the contour now keep only what
    the current stage contains. Design note
    docs/design-notes/2026-09-17-scene-sketch-strokes.md section 9.
  • The wheel now moves an axis-locked sketch plane from any viewpoint.
    A Z plane seen from above did not respond, because the depth step fell
    back to the view direction when it was nearly perpendicular to the
    plane; an axis plane now always moves along its own normal. Same note.
  • The sketch plane's readout (depth, axis, key hints) sits at the Scene
    view's top-left
    instead of next to the cursor, so it is visible for
    every plane and view. Same note.

v0.56.0

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 12:47

Added

  • Sketch strokes: draw in the Scene view and hand the line to the
    agent.
    The context bar's new "Sketch" menu (and an "Agent Sketch"
    toolbar overlay in the Scene view) arms one of two modes; a left drag
    then draws a stroke (S1, S2, ...) that becomes a context chip carrying
    the world-space points, and the new read-only uap_stroke_list tool
    (module markers) returns every stroke as JSON -- points, per-point
    normals and the objects a surface stroke was drawn on, length, closed
    flag, bounds and the sketch plane. Plane mode draws on a plane at
    a depth you choose: the Scene view shows the plane's section contour
    on every mesh it cuts, a depth-tested grid patch under the cursor, and
    a readout of the depth and of how far the surface under the cursor is
    in front of or behind the plane; the wheel and [ ] move the depth,
    F snaps it to the surface under the cursor, X/Y/Z lock a world-axis
    plane, C returns to camera-facing, Shift draws a straight line.
    Surface mode draws on the mesh surface under the cursor. Strokes
    are Scene-view overlays only (also drawn into camera-mode screenshots),
    survive a domain reload, and vanish on scene change or Play Mode; the
    chip's X, the "N scene markers" chip's clear button, or Esc handles
    them like pins. Design note
    docs/design-notes/2026-09-17-scene-sketch-strokes.md.

v0.55.2

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 11:09

Changed

  • The CLI card and the Account card are now one "Agent" card. It
    reads top to bottom as: which agent, whether its command was found
    (with the install button when not), whether it is signed in, the
    sign-in method, the sign-in buttons, and a closed-by-default
    "Advanced (executable / command)" foldout holding the former CLI
    fields, which opens itself while the command is not found. One
    "Reconnect" button replaces "Re-detect", "Reconnect now" and the ACP
    "Reconnect". The "Diagnostics" card is renamed "CLI output (stderr)".
    Settings values and the reconnect-banner behavior are unchanged.
    Design notes:
    docs/design-notes/2026-09-17-account-card-agent-picker-and-acp-init.md
    (the picker's move out of the collapsed CLI card, the first step) and
    docs/design-notes/2026-09-17-agent-card-merge.md (the merge).
  • "API key authentication" (Claude Code only) and "Auth method id"
    (ACP only) are now one "Sign-in method" row
    whose shape follows the
    selected agent: Claude Code offers "Auto (leave it to the CLI)" /
    "Subscription only", an ACP agent takes its authenticate method id.
    Switching to an ACP agent no longer leaves the Claude hint line
    behind. Design note 2026-09-17-agent-card-merge.md, section 3.

Fixed

  • "Connected with an API key (acp)" no longer shows under a
    "Subscription only" picker.
    After switching from an ACP agent back to
    Claude Code, the Account card read the ACP bridge's synthesized
    system/init (which carried apiKeySource: "acp") as Claude API-key
    billing until Claude's own init arrived. An init an ACP bridge produced
    is never counted as Claude API-key auth, and the bridge now reports
    apiKeySource: "none". Design note
    docs/design-notes/2026-09-17-account-card-agent-picker-and-acp-init.md.

v0.55.1

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 11:05

Fixed

  • A Console error caused by the agent's own tool call no longer raises
    the "ask the agent to fix these" chip.
    Measured with Codex: it passed
    uap_editor_execute_menu a menu path that does not exist
    (GameObject/Duplicate); the tool answered found:false and the agent
    worked around it, but Unity also logs an Error for that call, so the red
    chip appeared, stayed for the rest of the session and was then offered
    to the next agent as well ("Ask Grok to fix") although nothing was wrong
    with the project. Errors logged on the main thread while a UapOps tool is
    running are now attributed to that call: they are appended to the tool
    result (Unity Console errors logged during this call:, at most 5
    lines) so the agent still sees them, and they stay off the chip. Errors
    from other threads, and anything the project logs again after the call,
    reach the chip as before. uap_editor_execute_menu additionally checks
    that the menu item exists before running it, so that particular Error is
    no longer logged at all. Design note:
    docs/design-notes/2026-09-17-tool-caused-console-errors.md.

v0.55.0

Choose a tag to compare

@c-colloid c-colloid released this 17 Sep 10:52

Added

  • uap_scene_save: save a scene without any dialog. Saves the active
    (or a named) loaded scene in place, or to path (Assets/.../Name.unity,
    folders created) with saveAsCopy / overwrite. An untitled scene
    without path is refused up front instead of reaching Unity, which
    would open the Save Scene dialog. There was no save tool before, so
    agents ran the File/Save menu instead -- see below.

Fixed

  • uap_editor_execute_menu no longer parks the Editor behind a native
    modal dialog.
    A live Codex session ran File/Save on an untitled
    scene: Unity opened the native Save Scene dialog inside the call, the
    Editor loop did not tick once until a person closed it (288 s), every
    other uap_* call died "never started" and the panel stopped answering
    permission requests. The menu items measured to open such a dialog
    (File/Save while a scene is untitled, File/Save As...,
    File/Open Scene, File/Build And Run, File/Exit,
    Assets/Import New Asset..., Assets/Import Package/Custom Package...)
    are now refused before they run, with the alternative in the message.
    Build Settings, Project Settings, Preferences and the rest are ordinary
    windows and keep working.
  • A main-thread timeout now says when a modal dialog is the cause
    (Windows). For dialogs a third-party menu or tool opens, the timeout
    text names the dialog and says only a person can close it, instead of
    "will finish on its own"; calls issued while it is open fail in 8 s
    with the same note.
  • A screenshot returned as text no longer freezes the Editor for
    minutes.
    Codex hands an MCP result over as one JSON string, base64
    picture included; the tool card's image-path detection ran two regexes
    that were quadratic on such text (measured: 431 s of "not responding"
    for a 498 KB screenshot, 256 s in the live session, shown as "Hold on
    ... EditorUpdatePump.OnEditorUpdate"). The scan is now linear (same
    input: 1 ms) and finds the same paths. Design note:
    docs/design-notes/2026-09-17-modal-menu-and-base64-scan.md.