Add HTML report output: multi-project pages and --format html for CLI#6
Merged
BjornvdLaan merged 4 commits intomainfrom Apr 24, 2026
Merged
Conversation
- scripts/html-report.sh: takes aggregated JSON + per-project JSONs and generates a sleek self-contained HTML report — index.html with stat cards, compliance grid, algorithm bar chart, and a projects table linking to per-project detail pages with findings and snippet expand. - scripts/scan-all.sh: add --groundstate-url / --groundstate-token flags; each completed project JSON is POSTed to the Groundstate server via curl. - scripts/run.sh: add --html / --html-dir flags that trigger html-report.sh after aggregation; pass groundstate flags through to scan-all.sh. - pkg/report/html/renderer.go: self-contained Go HTML renderer (no JS framework, no external deps) for single-scan output. Groups findings by file, shows compliance badges, algorithm bar chart, collapsible snippets, and a severity filter bar — same design language as the multi-project report. - cmd/observer/main.go, cmd/action/main.go: wire --format html | output-format html into the existing json|sarif switch. - action.yml: document html as a valid output-format value. https://claude.ai/code/session_01VKJhpMHJcrENToF3GWZsqP
- cmd/observer/README.md: full standalone CLI reference — all flags, all three output formats (JSON/SARIF/HTML), rules layering, suppressions, Groundstate integration, exit codes. - plugins/gradle/README.md: Gradle plugin reference — extension DSL with all properties, output formats, Groundstate, custom rules (local + remote), multi-module projects, binary caching, CI example. - scripts/README.md: bulk-scan scripts reference — run.sh orchestrator, scan-all.sh (targets.yaml format, Groundstate posting), aggregate.sh (combined JSON schema), html-report.sh, CI example. - README.md: add HTML to the output formats table, add HTML format section, add "More documentation" table linking to the new sub-READMEs. https://claude.ai/code/session_01VKJhpMHJcrENToF3GWZsqP
scan-all.sh now runs the full pipeline itself: 1. build/locate observer binary 2. clone + scan each target 3. call aggregate.sh → combined JSON + markdown 4. call html-report.sh → index.html + per-project pages HTML is always generated (no --html flag needed; --html is kept as a no-op for backwards compat). Added --out and --html-dir flags. Added --help, banner, and final summary block listing all output paths. run.sh reduced to a one-liner shim (exec scan-all.sh "$@") so existing scripts and CI configs that reference it continue to work. scripts/README.md updated to reflect scan-all.sh as the entry point, with aggregate.sh and html-report.sh documented as standalone tools for re-generating reports from existing JSON. https://claude.ai/code/session_01VKJhpMHJcrENToF3GWZsqP
run.sh was a one-liner shim with no purpose once scan-all.sh became the orchestrator. Deleted the file and removed the reference from scripts/README.md. https://claude.ai/code/session_01VKJhpMHJcrENToF3GWZsqP
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.
scripts/html-report.sh: takes aggregated JSON + per-project JSONs and
generates a sleek self-contained HTML report — index.html with stat
cards, compliance grid, algorithm bar chart, and a projects table
linking to per-project detail pages with findings and snippet expand.
scripts/scan-all.sh: add --groundstate-url / --groundstate-token flags;
each completed project JSON is POSTed to the Groundstate server via curl.
scripts/run.sh: add --html / --html-dir flags that trigger html-report.sh
after aggregation; pass groundstate flags through to scan-all.sh.
pkg/report/html/renderer.go: self-contained Go HTML renderer (no JS
framework, no external deps) for single-scan output. Groups findings by
file, shows compliance badges, algorithm bar chart, collapsible snippets,
and a severity filter bar — same design language as the multi-project report.
cmd/observer/main.go, cmd/action/main.go: wire --format html | output-format
html into the existing json|sarif switch.
action.yml: document html as a valid output-format value.
https://claude.ai/code/session_01VKJhpMHJcrENToF3GWZsqP