Summary
bumblebee scan produces an inventory.ndjson file, but there is no built-in way to visualize or explore the results in a human-friendly format. This PR adds a self-contained Python script (scripts/generate-report.py) that transforms raw NDJSON output into a rich, interactive HTML report.
What it does
- Reads
inventory.ndjson and produces a single self-contained report.html (zero external dependencies, Python 3.10+ stdlib only)
- Presents 7 ordered sections: Ecosystems, Lifecycle Scripts, Version Sprawl, Top Projects, Confidence Scores, Detection Sources, Scan Roots — organized as Overview → Risks → Landscape → Reference
- Renders inline bar charts in table cells for quantitative columns (ecosystem share, version counts, confidence scores)
- Supports dark ("Midnight Parchment") and light ("Perplexity Editorial") themes with smooth transitions and
localStorage persistence
- Includes a scroll-spy page outline mini-TOC (fixed right-edge nav) and a scroll progress bar
- Truncates long project paths with ellipsis, expanding on hover — no content flash
Design system
Inspired by the Perplexity blog aesthetic:
| Token |
Light |
Dark |
| Background |
#fbfaf4 (warm cream) |
#091717 (deep forest-teal) |
| Text |
#13343b (deep teal-black) |
#e6e2d8 (ivory) |
| Accent |
#20808d (teal) |
#20808d (teal) |
| Data viz |
#d4940a (amber) |
#d4940a (amber) |
Fonts: Newsreader (serif display), Outfit (geometric body), JetBrains Mono (data/code).
Files changed
| File |
Description |
scripts/generate-report.py |
New — single ~1400-line script, the only deliverable |
.gitignore |
Added report.html (generated output) |
Usage
# Generate the report
python3 scripts/generate-report.py inventory.ndjson -o report.html
# Open in browser
open report.html # macOS
xdg-open report.html # Linux
Testing
Tested against a real 7,895-package inventory.ndjson from bumblebee scan across 7 ecosystems (npm, PyPI, Go, Cargo, RubyGems, Maven, NuGet). Verified table alignment and hover behavior in Chrome/Brave on macOS arm64.
Commits
3323fea — feat: add generate-report.py script for inventory.ndjson
61cb55b — style: adopt Perplexity editorial design system
86e515d — fix: proj-cell hover — replace dual-span swap with single trunc element
Summary
bumblebee scanproduces aninventory.ndjsonfile, but there is no built-in way to visualize or explore the results in a human-friendly format. This PR adds a self-contained Python script (scripts/generate-report.py) that transforms raw NDJSON output into a rich, interactive HTML report.What it does
inventory.ndjsonand produces a single self-containedreport.html(zero external dependencies, Python 3.10+ stdlib only)localStoragepersistenceDesign system
Inspired by the Perplexity blog aesthetic:
#fbfaf4(warm cream)#091717(deep forest-teal)#13343b(deep teal-black)#e6e2d8(ivory)#20808d(teal)#20808d(teal)#d4940a(amber)#d4940a(amber)Fonts: Newsreader (serif display), Outfit (geometric body), JetBrains Mono (data/code).
Files changed
scripts/generate-report.py.gitignorereport.html(generated output)Usage
Testing
Tested against a real 7,895-package
inventory.ndjsonfrombumblebee scanacross 7 ecosystems (npm, PyPI, Go, Cargo, RubyGems, Maven, NuGet). Verified table alignment and hover behavior in Chrome/Brave on macOS arm64.Commits
3323fea— feat: add generate-report.py script for inventory.ndjson61cb55b— style: adopt Perplexity editorial design system86e515d— fix: proj-cell hover — replace dual-span swap with single trunc element