Fix Server AI backend config and DevTools probe handling - #1
Draft
gardinermichael wants to merge 21 commits into
Draft
Fix Server AI backend config and DevTools probe handling#1gardinermichael wants to merge 21 commits into
gardinermichael wants to merge 21 commits into
Conversation
A slow summarization request left the page with no sign of activity, so a working export was indistinguishable from a hung extension. Adds ui.createProgress() in shared-ui.js: a progress light tracing the viewport edge, a grey non-blocking scrim, a status chip with the current phase, message count, animated ellipses and elapsed seconds, and a progress fill inside the launcher button itself. All layers are pointer-events: none, so the page stays usable while the export runs. The export drives it in phases — scan (measured by how far the transcript still has to scroll back), build, summarize, prepare review. The summarize phase has no measurable progress, so it creeps toward its end and adds a "still waiting on the model" note after 12s rather than parking the bar. Terminal states turn the whole indicator green or red with the failure reason. Also guards against a second concurrent export on the same tab, and gives the popup's Test connection button the same elapsed-time treatment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NYMeEC8y68JvPaQQLEiUKU
Correct the deprecated Chrome built-in AI surface in background.js. The context-usage and overflow code used measureContextUsage(), contextWindow, and the "contextoverflow" event, which are superseded by measureInputUsage(), inputUsage/inputQuota, and "quotaoverflow" on current Chrome. Because the old names no longer exist there, the guards silently skipped and the overflow -> Server AI / BYOK fallback routing never fired. Prefer the current names with a legacy fallback so overflow is detected across Chrome versions. Stop versioning the generated per-tool skill mirrors (.bob, .bolt, .cline, .cursor, .kilo, .roo, .github/skills, output/). They are machine-generated copies of the canonical skills in .agents/skills/ and inflate the diff without adding reviewable source. Add them to .gitignore and untrack them. Add docs/Plans/2026-08-11-source-resweep-review.md (second-pass audit of the session knowledge export spec across all 49 referenced repositories) and fold its promoted requirements into session-knowledge-repo-spec.md: atomic session-bundle write, Verify/Guard split, bounded loops, deterministic session teardown, verifier-backend provenance, provenance backlinks on compiled layers, anti-skimming density floor, and branch/DAG-aware capture. Reorder the first implementation slice so capture-completeness comes first. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A3mV9pSmnPevC7fx7Xskey
The context-usage and overflow code used measureContextUsage(), contextWindow, and the "contextoverflow" event. Current Chrome supersedes these with measureInputUsage(), inputUsage/inputQuota, and "quotaoverflow". Because the old names no longer exist there, the typeof guard skipped silently and the overflow listener never fired, so the overflow -> Server AI / BYOK fallback routing was effectively dead on current Chrome. Prefer the current names with a legacy fallback so overflow is detected and routed across Chrome versions. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A3mV9pSmnPevC7fx7Xskey
…icator-ya72c8 Add persistent progress indicator for long-running exports
… agent/chrome-built-in-ai-summary
…ummary Add Chrome AI agent guidance and export spec
…view-b5mzt3 Untrack generated skill mirrors and add second-pass export-spec review
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
http://localhost:8787/does not fall through to the default Express 404 page./.well-known/appspecific/com.chrome.devtools.jsonwith204 No Content./api/summarizevalidation with the extension background worker payload by removing the unusedheuristicSummaryrequirement.continueIt.ai.serverUrl.http://localhost:8787..envkey, or BYOK./health, warn when an OpenRouter URL is paired with a non-OpenRouter-looking key, and replace the unavailablemeta-llama/llama-3.3-70b-instruct:freedefault withgoogle/gemma-4-26b-a4b-it:free.Why
Chrome DevTools probes localhost servers for automatic workspace discovery. When this backend did not handle the probe or root path, Express generated default error responses that could surface CSP noise in the browser console.
The Server AI docs also implied users could use the mode without supplying keys, but the repo does not ship a shared key and the extension should not bundle one. The keyless user experience only exists when users point the extension at a hosted backend that is already configured with provider secrets. For local use, the person running the backend must provide
.envkeys.While testing Server AI, OpenRouter rejected the old default free model as no longer available for free. The new default was verified against OpenRouter and returns normal
choices[0].message.content.Validation
node --check server/server.jsnode --check background.jsnode --check shared-ai.jsnode --check popup.jsGET /returns200 OKGET /.well-known/appspecific/com.chrome.devtools.jsonreturns204 No ContentGET /healthreturns the configured provider/model and non-secret warnings arrayPOST /api/summarizewith the extension payload shape reaches provider configuration logic instead of failing request validationgoogle/gemma-4-26b-a4b-it:freethrough the local backend and receivedok: truewith a summary