Added
suppress-attributionflag (optional boolean, default OFF): when enabled, writes{"commit":"","pr":""}to theattributionkey insettings.json, suppressing Claude attribution trailers in git commits and PRs. Disabling (or uninstalling) removes theattributionkey only when its current value exactly matches that managed shape — a custom attribution object is preserved, while enabling always replaces the existing value. Toggle viadevflow flags --enable/--disable suppress-attribution.- Attribution wizard step in Advanced init (D27): the Advanced-mode
devflow initwizard asks one attribution question after the compliance step. Recommended init never asks; it silently applies the seeded value (off by default on a fresh install). The non-interactive path isdevflow flags --enable/--disable suppress-attribution— there is no--attributioninit flag.
Changed
templates/settings.jsonno longer ships anattributionblock: fresh installs now emit Claude attribution in git commits and PRs by default (where every prior install suppressed it). Existing installs are unaffected — see Upgrade note below.devflow:gitskill: commit and PR templates no longer carry a hard-codedCo-Authored-By: Claudetrailer orGenerated with Claude Codefooter. Attribution suppression is now an opt-in flag (suppress-attribution) rather than a hard-coded default.- Routing runtime pinned to
subswitch@0.4.0(from0.2.0). Over-window Anthropic-bound request bodies are now streamed upstream instead of being rejected by the relay, so long prompts no longer fail at the proxy; only translated (Codex) routes still return413 request_too_large.buildRoutingConfigJsonno longer injectsanthropic.connectTimeoutMs— the relay's own default (10 s, connect-only) governs; user-set values are preserved as before. The injection was a 0.2.0-era workaround artifact that outlived its purpose once the key's semantics were narrowed to DNS+TCP connect only.
Fixed
proxy-routing.jsonupgrade safety:buildRoutingConfigJsonnow strips all sevenlimits.*sub-keys thatsubswitch@0.4.0promotes to hard startup errors:limits.maxBodyBytes(renamedlimits.maxBufferedBodyBytes),limits.maxUpstreamSockets(moved toanthropic.maxUpstreamSockets),limits.streamIdleTimeoutMs(moved toproviders.codex.streamIdleTimeoutMs),limits.requestTimeoutMs(moved toproviders.codex.requestTimeoutMs), andlimits.maxSseEventBytes(moved toproviders.codex.maxSseEventBytes), joining the existing strips foranthropic.streamIdleTimeoutMs,limits.connectTimeoutMs, andlimits.maxConcurrentRequests. A hand-edited config carrying any of these keys would have killed the relay on every session start — spawned by theensure-proxyhook, with no route back. Thelimitsblock is now omitted entirely when all its sub-keys are stripped (matching theanthropicblock's existing omit-when-empty behaviour).
Upgrade: no action required. If you hand-edited ~/.devflow/proxy-routing.json to set any of the seven stripped limits.* keys, move their values to the 0.4.0 target paths (limits.maxBufferedBodyBytes, anthropic.maxUpstreamSockets, or the appropriate providers.codex.* key); the next devflow proxy --enable drops the stale keys for you.
Upgrade (attribution): existing installs that carry the devflow-managed attribution block — written by prior versions' templates/settings.json — keep their suppression. On the next devflow init or any devflow flags write, the managed block is detected and adopted into the manifest as suppress-attribution: true automatically, so no manual action is required. Installs with a custom attribution value are also unaffected — the shape guard prevents any modification.