Spaces:
Sleeping
Sleeping
Commit History
-
Add tester-note input for uploaded screenshots
ClaudeUnverified signatureThe pipeline accepted a tester note end-to-end but the UI never collected one. Add an optional one-line note field under the drop-zone; analyzeUpload now sends the trimmed note in the POST body so it reaches vision + structuring. reset() clears the note. Examples are unaffected (they ship canned reports). https://claude.ai/code/session_01JE4YVLBWnk188Yu5sib59yd1123c8 -
Wire export buttons to real copy/download
ClaudeUnverified signatureB5c: the results export bar now performs real actions instead of demo toasts. - Copy Jira: copies Jira wiki markup to the clipboard. - Copy GitHub issue: copies GitHub-flavored Markdown to the clipboard. - Download CSV: downloads the regression tests as buglens-tests.csv. Formatting is done client-side from the report payload already in the browser, so exports work for both gallery examples and live uploaded reports (which have no server-side id). Output mirrors buglens/render.py. Relabeled "Create Jira issue" to "Copy Jira" — we copy markdown, we don't actually file tickets, which keeps the UI honest. https://claude.ai/code/session_01JE4YVLBWnk188Yu5sib59yae635a0 -
Fix uploaded screenshot URL cleanup
vatche.thorossian +1: OpenAI CodexUse a ref-backed object URL cleanup path so uploaded screenshot previews are revoked even when an upload fails before React re-renders. Co-authored-by: OpenAI Codex <codex@openai.com>b5ee86a -
Wire drop-zone to real upload analysis
ClaudeUnverified signatureB5b: the frontend drop-zone now performs real analysis instead of triggering an example. - IdleView: hidden file input; click or drop a PNG/JPG calls analyzeUpload. - analyzeUpload(file): previews the uploaded screenshot (object URL), reads it to base64, POSTs /api/analyze, and shows results when the response lands (so it tolerates a Modal cold start instead of racing a fixed timer). The last loading stage stays active until the result arrives; errors (e.g. mock mode's 501) surface as a toast and reset. - LoadingView/ResultsView render the uploaded image (with the file name) when present, falling back to the MockScreen for gallery examples. - reset()/pick() revoke the object URL to avoid leaks. Gallery examples still use the mock GET path, so the app stays fully explorable; uploads go live once BUGLENS_BACKEND=modal + endpoint are set. https://claude.ai/code/session_01JE4YVLBWnk188Yu5sib59y52ddaed -
Fix stale-response race and empty results state on analyze
ClaudeUnverified signatureAddress review findings on the frontend analyze flow: - Guard setReport with a monotonic request token (reqRef) so a slower response for an earlier example can't overwrite a newer pick. reset() bumps the token to invalidate any in-flight request. - On fetch failure, call reset() after the toast so the staged timers don't leave the view in "results" with a null report (empty results screen). https://claude.ai/code/session_01JE4YVLBWnk188Yu5sib59y85d324e -
Serve custom frontend on gradio.Server with mock analyze pipeline
ClaudeUnverified signatureWire the buglens-ui prototype to a real backend so the four cards render from the canonical contract end-to-end (mock mode): - buglens/examples.py: the four prototype examples as validated BugReports, plus list_examples()/get_example() helpers. - app.py: gradio.Server (FastAPI) serving the custom frontend at "/", static jsx under /static, and JSON endpoints /api/examples, /api/analyze, and /api/export/{jira,github,csv}. analyze() is mock now; the Modal/ZeroGPU MiniCPM pipeline plugs in behind the same return contract. - buglens-ui: frontend now fetches /api/analyze and renders the returned payload; script srcs point at /static so we never shadow /gradio_api/*. - Tests: examples validation + endpoint smoke tests (TestClient). Booted the server and verified "/", /api/analyze, /api/examples, and static assets. https://claude.ai/code/session_01JE4YVLBWnk188Yu5sib59y85ebe4a -
added buglens ui sample
vatche.thorossianbec1346