feat: "Open in LogAnalyzer" hand-off from result/comparison view - #86
Merged
Conversation
mmghannam
marked this pull request as draft
July 30, 2026 15:42
LogAnalyzer (FastAPI, its own SCIP parser) has a richer comparison UI and
already understands Rubberband's file-naming convention and zip uploads. Today
users manually download a run's zip from Rubberband and re-upload it to
LogAnalyzer. This automates that hand-off.
- New `loganalyzer_url` option (empty by default -> feature disabled, button
hidden, endpoint 404s).
- AnalyzeExternalView (`/analyze/<testset_ids>`) builds the same raw-log zip as
the download button, POSTs it to `{loganalyzer_url}/api/upload`, and redirects
the user to LogAnalyzer: a single run goes to its instances page; a comparison
(which LogAnalyzer splits into several runs by setting) goes to LogAnalyzer's
dashboard where the runs appear ready to compare.
- "Open in LogAnalyzer" button next to the download icon in result_view.html,
shown only when the integration is configured.
Raw logs are handed over (not Rubberband's parsed data) so LogAnalyzer re-parses
with its own parser -- that is the point of the integration. Verified end-to-end
against a local LogAnalyzer: single-run and multi-run hand-offs both round-trip.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
Behind an auth proxy the server-to-server upload and the browser redirect need different URLs: Rubberband must upload to LogAnalyzer's internal address (bypassing the auth proxy), but redirect the user's browser to LogAnalyzer's public address. - Split into loganalyzer_url (internal, for the upload POST) and loganalyzer_public_url (browser-facing, for the redirect; falls back to loganalyzer_url when empty, which is the single-host dev case). - Document both in the sample config/app.cfg. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
The prototype used fa-external-link, which does not exist in the bundled Font Awesome 5.10.2, so the button rendered as an invisible glyph. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
Allows setting any option via environment variable, e.g. RUBBERBAND_LOGANALYZER_URL or RUBBERBAND_ELASTICSEARCH_URL. Env vars have the highest priority: env var > config file > code defaults. Useful for Docker/Kubernetes deployments.
svigerske
force-pushed
the
integrate-loganalyzer
branch
from
July 31, 2026 10:02
9341d75 to
88c37ee
Compare
mmghannam
marked this pull request as ready for review
July 31, 2026 10:05
svigerske
approved these changes
Jul 31, 2026
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.
Adds an "Open in LogAnalyzer" button on the result/comparison view that hands
the run's raw solver logs (same zip as the download button) to a LogAnalyzer
instance for richer comparison UIs.