* fix: prevent redactors from corrupting binary files (#102)
Redactors were adding newlines to files without them, corrupting binary
files during support bundle collection (51 bytes → 53 bytes).
Created LineReader to track original newline state and only restore
newlines when they were present in the original file.
- Added pkg/redact/line_reader.go
- Refactored single_line.go, multi_line.go, literal.go
- Added 48 tests, all passing
- Verified: binary files now preserved byte-for-byte
Fixes#102
* fix: handle empty lines correctly in MultiLineRedactor
- Check line1 == nil instead of len(line1) == 0 for empty file detection
- Fixes edge case where file containing only '\n' would be dropped
- Addresses bugbot finding about empty line handling
* fix: handle empty lines correctly in MultiLineRedactor
- Check line1 != nil instead of len(line1) > 0 in both locations
- Fixes edge case where empty trailing lines would be dropped
- Fix test isolation in literal_test.go (move ResetRedactionList to parent)
- Addresses bugbot findings about empty line handling
* fmt
* chore: update regression baselines from run 20107431959
* adding defense
* fix: propagate non-EOF errors in all early return paths
Ensure non-EOF errors (like buffer overflow) are properly propagated
to caller in both pre-loop early returns. Addresses bugbot finding.
* fix: use unique test names to prevent redaction list pollution
Use t.Name() instead of hardcoded 'test' to ensure each test
has unique redactor name, preventing parallel test interference
---------
Co-authored-by: hedge-sparrow <sparrow@spooky.academy>
* Document additional go tool profiling flags
* Add a regex cache to avoid compiling regular expressions all the time
* Reduce max buffer capacity
* Prefer bytes to strings
Strings are immutable and hence we need to create a new one
all the time when operation on them
* Some more changes
* More bytes
* Use writer.Write instead of fmt.FPrintf
* Clear regex cache when resetting redactors
* Logs errors when redactors error since they get swallowed
* Add an improvement comment
* Limit the number of goroutines spawned when redacting
* Minor improvement
* Write byte slices one at a time instead of concatenating them first
* Add a test for writeBytes
* Additional tests
add redact type, and begin wiring global redactors
use per-collector redactors
add a test of the 'data' collector and redaction
handle literal string replacements
remove redundant types and redact calls
add proper redactor type, foundations of global redactors
accept global redactors from the CLI, include sample redaction spec