Skip to content

[pull] main from Alishahryar1:main - #238

Merged
pull[bot] merged 3 commits into
Co-Contribute-OpenSource:mainfrom
Alishahryar1:main
Sep 22, 2026
Merged

pull[bot] merged 3 commits into
Co-Contribute-OpenSource:mainfrom
Alishahryar1:main

Conversation

@pull

@pull pull Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

## Why

Fixes #1853. OpenRouter returns HTTP 404 when no endpoint supports an
attached image. Claude interprets that status as a missing or
inaccessible model and hides the actual image-support explanation.

## How

Recognize OpenRouter's structured image-routing rejection in its
provider behavior and translate it into a non-retryable HTTP 400. Tell
the user to remove the image or choose an image-capable model, retaining
the original upstream diagnostic and request ID.

Add regression coverage for classification boundaries and image-bearing
Messages/Responses requests. Bump the patch version to 6.2.55.


<!-- greptile_comment -->

<!-- greptile_summary -->

<h2><a
href="https://app.greptile.com/api/retrigger?id=67270899"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/RetriggerDark.svg?v=2"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"><img
alt="Retrigger"
src="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"
align="right"></picture></a>Confidence Score: 5/5</h2>

Safe to merge: the public Messages and Responses flows correctly
translate the targeted image-routing rejection, while unrelated
OpenRouter 404 responses remain unchanged.

What we checked:
- Ran a FastAPI/TestClient probe through the public Messages and
Responses endpoints with mocked OpenRouter responses; verified that a
normal OpenRouter 404 remains a 404 api_error with diagnostics, request
IDs, and forwarded image input, and that the image-routing 404 becomes a
non-retryable 400 invalid_request_error on both endpoints; 41 tests
passed. <a href="https://www.greptile.com/trex"><img alt="T-Rex"
src="https://greptile-static-assets.s3.amazonaws.com/trex/trex_green.svg"
height="16" align="absmiddle"></a>
- Executed the runtime and test commands: run the image-routing runtime
script with and without the image-routing flag, and run the focused
pytest suite for OpenRouter image errors and API tests; the authored
executable source is uploaded as openrouter-image-routing-runtime.py,
and the captured outputs show the commands, working directory, and exit
codes. <a href="https://www.greptile.com/trex"><img alt="T-Rex"
src="https://greptile-static-assets.s3.amazonaws.com/trex/trex_green.svg"
height="16" align="absmiddle"></a>

<details open><summary>Summary</summary>

OpenRouter image-support routing rejections now return a clear,
non-retryable invalid-request response while preserving upstream
diagnostics, request IDs, and image forwarding. Ordinary OpenRouter 404
routing responses retain their existing behavior. The package version is
updated to 6.2.55.

Merge safety: safe to merge.
</details>

<sub>Reviews (1) · Last reviewed commit: ["Explain OpenRouter
image-routing
rejecti..."](https://github.com/alishahryar1/free-claude-code/commit/e1e5fcc478611d0a872178c79a28dcbf70b21d42)</sub>

<!-- /greptile_comment -->
## Why

Updating FCC currently requires rerunning the installer. A dedicated
command should refresh FCC, stay in the foreground, and report the
actual result without locking the files it replaces.

## How

Add `fcc-update` as uv-owned native shell launchers. A short-lived
preparation process verifies the installation and stopped FCC processes,
preserves installed voice extras and identifiable backends, then exits
before the launcher runs the existing `uv tool install --force
--refresh-package free-claude-code` operation. The launcher verifies the
resulting version and returns failures to the terminal.

Keep updates scoped to FCC. Unknown/custom local-voice backends stop
with instructions to use the matching installer. Add
installer/uninstaller command verification and separate README Install
and Update instructions, with a bootstrap note for older installations.
Bump the patch version to 6.2.56.






<!-- greptile_comment -->

<!-- greptile_summary -->

<h2><a
href="https://app.greptile.com/api/retrigger?id=67291905"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/RetriggerDark.svg?v=2"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"><img
alt="Retrigger"
src="https://greptile-static-assets.s3.amazonaws.com/badges/Retrigger.svg?v=2"
align="right"></picture></a>Confidence Score: 5/5</h2>

Safe to merge.

<h2><a
href="https://app.greptile.com/api/ide/codex?prompt=IMPORTANT%3A%20Work%20in%20the%20repository%20%22alishahryar1%2Ffree-claude-code%22%20on%20the%20existing%20branch%20%22ali%2Ffcc-update%22.%20Checkout%20that%20branch%20%E2%80%94%20do%20NOT%20create%20a%20new%20branch%20or%20open%20a%20new%20PR.%20Push%20your%20changes%20to%20%22ali%2Ffcc-update%22.%0A%0A%23%23%23%20Issue%201%0Ascripts%2Finstall.ps1%3Aundefined-1510%0AThe%20installer%20verifies%20%60fcc-update.cmd%60%2C%20but%20that%20launcher%20unconditionally%20starts%20the%20adjacent%20%60fcc-update-windows.ps1%60.%20If%20the%20companion%20is%20absent%2C%20installation%20still%20reports%20success%20and%20%60fcc-update%60%20later%20fails%20to%20start.%20Verify%20the%20PowerShell%20script%20too%2C%20and%20add%20a%20fixture%20that%20omits%20it.%20This%20is%20non-blocking%2C%20but%20avoiding%20a%20successful%20installation%20that%20produces%20a%20broken%20update%20command%20prevents%20a%20support%20and%20recovery%20cost.%0A%0A---%0A%0AFor%20each%20issue%20above%2C%20determine%20whether%20it%20is%20valid%20and%20should%20be%20fixed.%20If%20so%2C%20fix%20it%20directly.&repo=alishahryar1%2Ffree-claude-code&pr=1856&platform=github"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodexDark.svg?v=7"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=7"><img
alt="Fix All in Codex"
src="https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=7"
align="right"></picture></a>Findings</h2>

1. <img alt="P2"
src="https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=9"
align="top">&nbsp;**Verify PowerShell companion** <a
href="https://github.com/Alishahryar1/free-claude-code/pull/1856#discussion_r4068282206">▶</a>

<details open><summary>Summary</summary>

Adds and verifies the dedicated `fcc-update` updater flow for uv-managed
installations. The Windows installer now confirms that the PowerShell
companion is installed next to its command launcher, preventing a
successful installation from leaving an unusable update command.
</details>

<sub>Reviews (3) · Last reviewed commit: ["Decode uv updater output as
UTF-8"](https://github.com/alishahryar1/free-claude-code/commit/ef558e85724d8c09e607b237fbfaf9e9862ce99c)</sub>

<!-- /greptile_comment -->
## Why

`fcc-update` should run the same installer as the README command. The
separate updater introduced in #1856 bypasses coding-agent prompts,
checks, and setup.

## How

Replace the separate updater with native shell and Windows command
wrappers that fetch and run the official installer in the foreground.
Forward installer options and preserve failure exit codes while allowing
the launcher to replace itself.

Remove the Python update preparation code and PowerShell companion. Keep
package-manager ownership of the launchers, explain installer and
voice-option behavior in the README, and bump FCC to 6.2.57.
@pull pull Bot locked and limited conversation to collaborators Sep 22, 2026
@pull pull Bot added the ⤵️ pull label Sep 22, 2026
@pull
pull Bot merged commit 1f8b1fd into Co-Contribute-OpenSource:main Sep 22, 2026
6 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant