Skip to content

docs(changelog): cut 0.2.0 - #144

Merged
mattmillerai merged 1 commit into
mainfrom
matt/release-0.2.0
Sep 10, 2026
Merged

mattmillerai merged 1 commit into
mainfrom
matt/release-0.2.0

Conversation

@mattmillerai

@mattmillerai mattmillerai commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

ELI-5

This moves everything under ## [Unreleased] in the changelog under a ## [0.2.0] - 2026-09-10 heading, so the next GitHub Release (tag v0.2.0) has a matching changelog section. Nothing else changes: the version is injected from the tag at publish time, so pyproject.toml stays a placeholder per CONTRIBUTING.md.

#141 has merged, so this is the one-commit cut on top of main.

What ships in 0.2.0

Why 0.2.0 rather than 0.1.10

The .code string for an unrecognised error changes, and it keeps the two SDKs in lockstep with the TypeScript 0.2.0 cut. Edit the heading in this PR if 0.1.10 is preferred.

Draft release notes for v0.2.0

Release notes (paste into the GitHub Release)

Uploaded assets get a directly-fetchable URL, and an error answered by something in front of the service now says so — and keeps the one line that explains it.

Highlights

Asset.get_download_url() / AsyncAsset.get_download_url(). A directly-fetchable URL for an uploaded asset's bytes, mirroring Output.get_download_url() (same DownloadUrl, commits the asset first if needed). On Comfy Cloud it is a short-lived signed URL any fetcher can read until expires_at, which is what lets a local image be passed to a URL-taking image-to-image model via client.models.run(): upload the file as an asset, resolve its URL, put the URL in the model's input. The README's "Image to image — upload an asset first" section walks through the flow.

An error nothing in the stack recognised names its status. Such a response now carries .code == "http_<status>" (http_503, http_500) instead of "error". It is reached only after the envelope's own code, Router's error bucket and the status table have all declined, so a bare 401 still maps to Unauthorized and every documented code is untouched. Read it as answered by something in front of Router rather than by the service itself, so no service verdict was reached; retry per your own policy — nothing about what the SDK retries changed.

The body that explains a bare 503 is kept. A load balancer's no healthy upstream or upstream connect error or disconnect/reset before headers arrives as plain text with no JSON and no request id, and used to be discarded with the response. It is now on comfy_low.errors.ApiError.body_excerpt, and str() of the exception you catch — at both the protocol and the SDK layer — reads HTTP 503: no healthy upstream. The excerpt is one line, capped at 256 characters, with control, bidi and zero-width characters replaced, and it is None whenever the response stated a message of its own.

Upgrading

Additive except for one string: code that matched the literal "error" on an unrecognised ComfyError should match code.startswith("http_") instead.

Full detail in CHANGELOG.md.

Not in this release

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

On-demand reviews are free for the next 29 days. After that, they cost $0.25 per reviewed file.

Or wait 4 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 98 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: 1adf5aa3-58cc-430d-b651-d036d15b86b5

📥 Commits

Reviewing files that changed from the base of the PR and between 5946156 and 9bd1c8e.

📒 Files selected for processing (1)
  • CHANGELOG.md

Comment @coderabbitai help to get the list of available commands.

Base automatically changed from matt/be-11430-http-status-code-body-excerpt to main September 10, 2026 20:17
@mattmillerai
mattmillerai marked this pull request as ready for review September 10, 2026 20:17
@mattmillerai
mattmillerai requested review from a team as code owners September 10, 2026 20:17
@mattmillerai mattmillerai added the full-autonomy Approved AI-brownfield: merges on machine gates alone, no human approver. Design doc + flag req'd. label Sep 10, 2026

@robinjhuang robinjhuang left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved under the full-autonomy policy.

Gates verified at 9bd1c8e5dd3a0aa267aeebea9e8cc8807d5bf611:

  • full-autonomy label present
  • assigned to, or review requested from, @robinjhuang
  • not a draft
  • 8 required check(s) green — none failing, none pending

Issued by full-autonomy-approve.yml (run). This approval attests
that the machine gates above passed at this commit. It does not attest that a
human read the diff.

@mattmillerai
mattmillerai merged commit 272574f into main Sep 10, 2026
23 of 30 checks passed
@mattmillerai
mattmillerai deleted the matt/release-0.2.0 branch September 10, 2026 20:23
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

full-autonomy Approved AI-brownfield: merges on machine gates alone, no human approver. Design doc + flag req'd.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants