Release Log Tools v0.1.0
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# Accessibility
|
||||
|
||||
The workbench uses semantic landmarks, headings and labelled native controls, supports keyboard operation, visible focus, reduced-width layouts, and system/light/dark themes through the Toolbox shell. Results do not rely on colour alone.
|
||||
@@ -0,0 +1,9 @@
|
||||
# Architecture
|
||||
|
||||
Log Tools is a static React/Vite application inside the shared Toolbox shell. `src/log/model.ts` contains the streaming and bounded trust boundary. `scanLogBlob()` obtains a `ReadableStream` from the supplied `Blob`/`File`, reads byte chunks, decodes UTF-8 incrementally with `TextDecoder.decode(..., {stream:true})`, and feeds a line framer that retains at most 256 KiB for one physical line. It never calls `File.text()`, `arrayBuffer()`, or constructs a complete-file string.
|
||||
|
||||
Automatic detection buffers only the first 30 nonblank bounded lines, chooses among JSON Lines, nginx common/combined, RFC 5424/common RFC 3164 syslog, logfmt, and plain text, then replays that small buffer through the selected parser. Explicit selection skips detection. Parsing continues up to five million lines or eight GiB. At most the first 10,000 nonblank records and 32 MiB of retained characters are kept; individual retained raw/message strings, fields, level/source maps, hourly timestamp buckets, field names, counters, and progress are independently capped. Reads yield between progress intervals so cancellation and UI updates can run.
|
||||
|
||||
Filtering operates on the retained preview. Correlation counts describe the scanned portion. Redaction recipes transform raw text, normalized messages, sources, and extracted values using fixed, linear-oriented patterns and an optional exact literal. Expanded redaction output is capped per value and truncation is reported. Salted pseudonyms use a stable non-cryptographic hash: useful for local equality correlation, not encryption or resistance to guessing. Exports use the filtered retained preview, at most 50,000 rows and 10 MiB of text. CSV prefixes spreadsheet-formula-leading cells.
|
||||
|
||||
React renders log values through text nodes only. ANSI escape sequences are removed and other control bytes are replaced; HTML-like content is never interpreted. Relative assets and a same-origin scoped service worker keep the build relocatable below nested portal routes. There is no telemetry, database, server API, worker, or remote dependency at runtime.
|
||||
@@ -0,0 +1,9 @@
|
||||
# Privacy and security
|
||||
|
||||
Log files, pasted text, normalized records, filters, redaction previews, and exports stay in browser memory. There are no accounts, analytics, telemetry, persistence, uploads, remote parsers, or runtime third-party assets. Explicit source navigation is outside the processing flow. Clearing or closing the workspace releases application references but cannot promise forensic erasure from browser or operating-system memory.
|
||||
|
||||
Files are streamed rather than buffered whole. The file byte gate is eight GiB, scans stop at five million physical lines, and one framed line retains at most 256 KiB. A normalized raw/message string retains at most 32 KiB, one flattened field at most 4 KiB, and the preview stops at 10,000 nonblank records or 32 MiB of retained characters. Pasted input is limited to 2 MiB. JSONL parsing limits text, depth, values, dangerous keys, flattened fields, and field lengths. Unique aggregation keys, hourly buckets, fields, rendered rows, export rows, and export text are separately bounded and truncation is surfaced.
|
||||
|
||||
ANSI escape sequences are stripped; other control characters are replaced; HTML and URLs render only as text. No `dangerouslySetInnerHTML`, script evaluation, regex input field, or network enrichment exists. Auto-detection and parser results are syntactic interpretations, not authenticity checks. A malicious value can still be misleading when copied into another system.
|
||||
|
||||
Redaction is a previewable convenience, not a data-loss-prevention guarantee. Built-in patterns can miss unusual representations and can redact false positives. Stable pseudonyms use a non-cryptographic hash and user-selected salt and may be reversible by guessing. Redacted values retain the same per-value caps as parsed values; expansion past a cap is truncated and reported. CSV export mitigates common formula injection by apostrophe-prefixing cells whose trimmed value begins with `=`, `+`, `-`, or `@`; consumers should retain that defence when transforming the file.
|
||||
Reference in New Issue
Block a user