Repository navigation
[pull] main from Alishahryar1:main - #249
Merged
Merged
Conversation
## Why Large fcc-doctor reports make bug reports difficult to scan. ## How Automatically wrap the doctor section in a collapsed, JSON-highlighted block when a bug report is opened or edited. Preserve the report and surrounding issue text, avoid wrapping it again, and let the version validator read both original and collapsed reports. <!-- greptile_comment --> <!-- greptile_summary --> <h2><a href="https://app.greptile.com/api/retrigger?id=69970665"><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: 4/5</h2> <!-- greptile-risk --> Not safe to merge until formatting preserves intervening author edits. <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%2Fcollapsible-doctor-output%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%2Fcollapsible-doctor-output%22.%0A%0A%23%23%23%20Issue%201%0A.github%2Fworkflows%2Fvalidate-bug-report-version.yml%3A79%0AIf%20an%20author%20edits%20an%20issue%20after%20the%20workflow%20fetches%20it%2C%20this%20update%20replaces%20the%20entire%20body%20with%20a%20formatted%20copy%20of%20the%20older%20version.%20The%20author's%20changes%20can%20silently%20disappear%2C%20even%20outside%20the%20doctor%20output.%20Preserve%20the%20newer%20body%20instead%20of%20overwriting%20it.%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=1911&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="P1" src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9" align="top"> **Concurrent edits can be lost** <a href="https://github.com/Alishahryar1/free-claude-code/pull/1911#discussion_r4112711510">▶</a> <details open><summary>Summary</summary> The PR collapses valid doctor output into a JSON-highlighted block and adds parsing and formatting tests. Its new full-body update can erase an author's edit made after the workflow fetches the issue. This should be fixed before merging. </details> <!-- greptile_confidence_score:4 --> <sub>Reviews (1) · Last reviewed commit: ["Collapse doctor output in submitted bug ..."](https://github.com/alishahryar1/free-claude-code/commit/0044dc8779ce80302cfeac1402a460ef0f81673e)</sub> <!-- /greptile_comment -->
Closes #1590 ## Problem `fcc-cline` runs Cline inside an ephemeral configuration tree pointed at the FCC proxy (`localhost:8082`). However, interactive Cline passes `backendMode: "auto"` to its core (verified in the shipped `cline.exe`), overriding the launcher's `CLINE_SESSION_BACKEND_MODE=local`. With `auto`, Cline may attach to — or start — a detached **Hub daemon** that: 1. resolves provider settings from the user's **global** store (`~/.cline/data/settings/providers.json`) instead of FCC's ephemeral providers file; 2. **outlives the launcher** (it is not killed when the terminal closes); 3. is auto-discovered by the *next* `fcc-cline` run via `~/.cline/data/locks/hub/production.json`, routing traffic to the wrong provider. This is exactly the behavior reported in #1590: > Run fcc-cline again → the server might already be running, but Cline might be > connecting to the wrong OpenAI provider. ## Fix — isolation over deletion `build_cline_launcher_env()` now redirects `CLINE_HUB_DISCOVERY_PATH` to `<ephemeral-tempdir>/hub/production.json` — a path that never exists and is never written: - The child can never **discover any pre-existing Hub** (FCC-created or user-created), so a stale daemon can no longer hijack the session. - If Cline spawns a Hub of its own, its discovery file is written **inside the ephemeral tree**, which the launcher deletes on exit — no Hub state survives the session. - A user-run `cline hub` (outside FCC) keeps its own discovery file at the default location and is untouched. Defense-in-depth notes: - `CLINE_HUB_DISCOVERY_PATH` is an internal Cline env var present in the shipped binary. The root cause is tracked upstream at cline/cline#13631, with a fix in cline/cline#13637 (owner-filed, unmerged at the time of writing). If that env var is ever renamed upstream, this guard degrades to today's behavior — **no new failure mode**. - Deliberately scoped to isolation: this change does not attempt to kill foreign Hub processes. ## Testing - 2 tests updated + 2 new in `tests/cli/test_cline_launcher.py`: - `test_cline_hub_discovery_is_isolated_from_user_hub_state` — a pre-existing user discovery file is overridden, never read; - `test_cline_hub_discovery_path_lives_in_ephemeral_temp_tree` — the redirected path sits inside the ephemeral tree and does not exist at spawn time. - Quality gates: `ruff format --check`, `ruff check`, `ty check` — all green. - Full suite: **4407 passed / 148 skipped / 0 failed** (Python 3.14, Windows). - e2e (Playwright): green except `e2e/test_chat_sessions.py::test_chat_context_meter_shows_used_over_advertised_context_window`, which fails on clean `main` as well (pre-existing, unrelated to this change). - Version bumped 5.18.11 → **5.18.12** (PATCH) with `uv lock` in the same commit. ## Version 5.18.12 — PATCH above base 5.18.11 (bug fix only, per CONTRIBUTING SemVer policy). <!-- greptile_comment --> <!-- greptile_summary --> <h2><a href="https://app.greptile.com/api/retrigger?id=58796606"><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> <!-- greptile-risk --> No outstanding findings block merging. <h3>Summary</h3> The PR isolates each fcc-cline launch’s Hub discovery path in its temporary configuration tree. The current code creates the path’s parent directory before starting Cline, fixing the previously reported launch issue. <!-- greptile_confidence_score:5 --> <sub>Reviews (17) · Last reviewed commit: ["Merge branch 'main' into fix-cline-hub-h..."](https://github.com/alishahryar1/free-claude-code/commit/2df1fefa2002bfa6c2e54eb3a8360836e6a69b20)</sub> <!-- /greptile_comment --> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: Ali Khokhar <20476625+Alishahryar1@users.noreply.github.com>
## Why OpenCode Go rejects provider smoke requests that lack a conversation ID. The settings-apply Playwright test also has a timing race because its wait accepts a Promise before request interception completes. ## How Give smoke requests an FCC smoke User-Agent and a conversation ID. Reuse the ID across turns, tool continuations, and disconnect follow-ups, and generate fresh IDs for independent conversations. Apply the headers to Messages and Responses probes while preserving caller-supplied headers and authentication. Make the settings-apply browser test wait for a boolean set by the route handler after it captures the request. <!-- greptile_comment --> <!-- greptile_summary --> <h2><a href="https://app.greptile.com/api/retrigger?id=69997246"><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> <!-- greptile-risk --> No blocking findings were identified. <details open><summary>Summary</summary> The PR adds conversation headers to smoke-client requests, reuses session IDs for related requests, and adds header tests. The latest change updates how a Playwright test detects an intercepted configuration request. </details> <!-- greptile_confidence_score:5 --> <sub>Reviews (2) · Last reviewed commit: ["Wait for actual Apply request intercepti..."](https://github.com/alishahryar1/free-claude-code/commit/2db361c3d534d38f28071ccd42387a19fbc41e54)</sub> <!-- /greptile_comment -->
## Why Nemotron Ultra 550B on NVIDIA NIM rejects numeric reasoning budgets because its deployed model runner does not support them. FCC currently converts named effort such as `high` into a numeric budget, causing repeated upstream 500 errors before Claude can use a tool. Direct requests with named effort succeed. ## How Use the existing named-effort encoder in NIM's shared request finalizer for Claude Messages and Codex Responses. Pass named efforts unchanged, send `none` for explicit off, use `high` for enabled reasoning without a named effort, and omit the control for provider defaults. Budget-only requests use the enabled default instead of sending a numeric budget. Remove the obsolete numeric-budget recovery code. Accepted behavior: NVIDIA's models support different sets of names. Unsupported values remain provider errors rather than being silently remapped or removed. For example, GPT-OSS 20B rejects `none`, `minimal`, `xhigh`, and `max`. No model-name allowlist is introduced. Acceptance of a name does not imply every model implements a distinct reasoning strength for it.
…1913) ## Why FCC's Code history lives in `code/code.db`, with schema creation, upgrades, and restart recovery mixed into its store. Move this existing data into `fcc.db` and give schema changes an ordered migration history for future consolidation. ## How - Move the existing database automatically during startup after FCC has been stopped for the update. Recover and checkpoint SQLite journals, close the database, then rename it under the existing ownership lock. - Extract the three existing upgrades into numbered migration modules. Apply only pending versions, committing each migration and its version together. Preserve sessions, transcript ordering, prompts, and the current constraints. - Keep Code restart recovery separate from schema upgrades. Preserve conflicting files on failure, resume pending migrations on restart, and retain independently retryable retired Chat cleanup. <!-- greptile_comment --> <!-- greptile_summary --> <h2><a href="https://app.greptile.com/api/retrigger?id=70020000"><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: 4/5</h2> <!-- greptile-risk --> Do not merge until NIM preserves explicit reasoning budgets or rejects requests it cannot represent. What we checked: - T-Rex produced a proof for the posted P1 finding, including a credential-free NIM request reproduction script. <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> - T-Rex produced a second proof for a posted P1 finding. See the corresponding review comment for finding details. <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> - T-Rex executed a general-contract-validation-proof by running Nim budget repro before and after; the policy retained budget 321 with no numeric budget in both runs, and the mocked 200 OK responses do not establish live NIM acceptance. <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> The PR moves Code history into `fcc.db`, adds ordered SQLite migrations, and updates the smoke test to read the new database. The NIM request change drops explicit numeric reasoning budgets and must be corrected before merging. </details> <!-- greptile_confidence_score:4 --> <sub>Reviews (3) · Last reviewed commit: ["Merge branch 'main' into sqlite-fcc-stor..."](https://github.com/alishahryar1/free-claude-code/commit/1bff6bf9b66e39cbbf85647bd0e6a7d2f08b6338)</sub> <!-- /greptile_comment -->
## Why `fcc-update` runs the full installer even when FCC is already current. Check the installed version against PyPI first so unnecessary reinstallations are skipped. ## How Add a shared, short-lived version checker before the native launcher handoff. Current or newer installations exit successfully, an available update shows both versions and runs the installer, and a failed check stops with an error. The checker exits before installation so FCC can replace itself safely. Installer options do not bypass the version gate. The README directs users to the installer for same-version reinstallation or optional component changes.
pull
Bot
merged commit Sep 27, 2026
f3ec474
into
Co-Contribute-OpenSource:main
10 of 11 checks passed
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )