Dedupe Findings in Output / globally respect no_color / --no-color cli option#3074
Merged
Conversation
Findings were printed twice — once colored to stderr via log_to_stderr and once plain to stdout. Drop the stderr emission and colorize the single stdout line directly: severity selects the hue, confidence scales the brightness (CONFIRMED also bold). Gated on isatty() so piped/redirected stdout stays plain text. output.txt is unaffected (written by the separate txt module).
Match the 🟦🟨🟧🟥🟪 convention from FINDING.severity_colors instead of collapsing LOW+MEDIUM and HIGH+CRITICAL onto shared hues.
Bump base RGB so every severity's brightest channel is 255 (INFO blue 113,161,255 and CRITICAL purple 207,0,255 were below max). Raise the UNKNOWN/LOW multipliers so the dimmest cells stay legible on dark terminals — brightest channel never drops below ~115.
Contributor
📊 Performance Benchmark Report
📈 Detailed Results (All Benchmarks)
🎯 Performance Summary✅ No significant performance changes detected (all changes <10%) 🐍 Python Version 3.11.15 |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev #3074 +/- ##
=====================================
+ Coverage 90% 90% +1%
=====================================
Files 441 441
Lines 38841 38886 +45
=====================================
+ Hits 34749 34798 +49
+ Misses 4092 4088 -4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
ausmaster
reviewed
May 20, 2026
Move the finding color palette (ANSI, emoji, Teams card styles) onto the FINDING event class as the single source of truth, standardized on the blue/yellow/orange/red/purple convention. stdout, webhook, and teams now consume it instead of each defining their own. Honor the NO_COLOR env var in colorize() and stdout, and add a --no-color CLI switch.
ausmaster
approved these changes
Jun 1, 2026
ausmaster
left a comment
Contributor
There was a problem hiding this comment.
Privately submitted feedback, nice.
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.
This PR does three things to the "human" output.
Stop the duplicate lines. Instead of a standard line and a colored line, only the colored line shows up now. This happens without affecting the output in output.txt. The output going to the TTY takes a totally separate path than data going to output.txt.
Link severity with boldness. Currently severity is linked to the color, but there was no visual way to perceive the confidence. Now the boldness of the text will correspond to the confidence.
Changes color of critical to purple and low to yellow. Previously they were the same color as high/medium.
Follow-ups
Standardized the finding color palette. Severity and confidence colors were defined in three separate places: emoji on the
FINDINGevent (Slack/Discord), hardcoded Adaptive Card styles in the Teams module, and the new ANSI palette in stdout. They now live in one place on theFINDINGevent class as the single source of truth, all following the blue/yellow/orange/red/purple convention.stdout,webhook, andteamsconsume it instead of carrying their own maps. INFO is now blue everywhere (it was inconsistently white in the emoji map).NO_COLOR support.
colorize()and the stdout module now honor the NO_COLOR convention, which disables all bbot terminal color (live log and findings). Added a--no-colorCLI switch that sets it.