Dev Log
GitHub activity across your tracked history
Activity Patterns
Activity Timeline
Recent Activity
0424262117
Data sync: 2026-04-24 22:38
Data sync: 2026-04-24 21:08
Data sync: 2026-04-24 21:02
Data sync: 2026-04-24 19:31
Data sync: 2026-04-24 14:24
Data sync: 2026-04-24 06:21
Data sync: 2026-04-23 22:27
Data sync: 2026-04-23 21:29
feat(files): paragraph-chunked inference + highlighted diff panes Fixes three issues in the file upload path: 1. Preview truncation too aggressive - Old cap was 4KB (plain text). Bumped to 80KB with a visible, styled truncation notice. Downloads always carry the full redacted content regardless of preview clamp. - Output panes now use max-height: 70vh instead of a fixed 600px and scroll naturally. 2. File panes didn't color-code like the Text tab - Both Original and Redacted panes now render with color-coded pills: Original shows detected PII spans in-place, Redacted shows each <PLACEHOLDER> as a pill colored by its source category. - New applyRedactionWithRanges() returns both the redacted string and the placeholder positions in the output string, so the redacted pane can highlight without re-scanning. 3. Redactions drifted/misfired on long markdown files - Long single-pass inference caused cumulative drift in our manual offset reconstruction (tiktoken doesn't surface return_offsets_mapping). - New redactChunked() splits the input on blank-line paragraph boundaries, runs inference per chunk, and reassembles. Each chunk gets a fresh cursor so reconstruction errors stay local. - Separators are passed through verbatim so markdown structure (headings, list layout, code blocks) is preserved exactly. Other: - File tab now has a Copy button matching the Text tab. - Per-chunk progress reported to the top progress bar + drawer. - MIME_BY_EXT map so markdown downloads as text/markdown, etc. - Internal note: redactText() is now a facade over redactChunked().
fix: loosen CSP to allow transformers.js blob scripts + add favicon transformers.js dynamically imports its WebGPU backend from a blob: URL, which the previous script-src blocked. Allow blob: in script-src and add an explicit script-src-elem fallback (Chrome treats them separately). Also: - Drop frame-ancestors from meta CSP — the browser ignores it there (can only be set via HTTP header, which Replit Static doesn't let us customize on a per-directive basis). - Add inline SVG favicon to kill the 404 on /favicon.ico.
fix: clean Zendesk delivery kit [HRS-891] - Post-mistune HTML sanitizer in exporter: strip script/iframe/object/embed/form/button/input/link/meta/style/svg, on*= attributes, unsafe URL schemes (javascript:/data:/vbscript:/file:). - Drop rows with <50 visible chars after sanitization. - Title disambiguation for H1 collisions across products. - Nav chrome strip pre-<h1> (3DS logo + empty-anchor resource-center ULs). - Breadcrumb noise fix covers both > and > forms. - Nested-callout pipe regression fix (_contains_nested_callout_pipe_table) — table preservation now survives outer tables with inner Important/Tip/Note callouts. - Atomic chunking for copyright/legal/changelog URLs. - Pre-2020 version filter. - scripts/package_handoff.py templatizes the handoff folder with computed metrics, portable HRS_HANDOFF_DIR override, manifest + empty-CSV guards. - scripts/clean.py validates raw input before destructive clear. Final artifact: 10,282 rows, 10,010 unique URLs, 37.9 MB, SHA 92a82cb0c8bff265e42108cb1b2902aaf232df3f6fd677c9f9f90715d822d560. All 26 acceptance gates green. 98 tests pass, 3 skipped. Closes HRS-891.
chore: harden for public deployment - Add Content-Security-Policy meta: locks outbound connect-src to huggingface.co (model), cdn.jsdelivr.net (transformers.js), and google fonts. Any other network call is hard-rejected by the browser. - Add referrer-policy: no-referrer so URLs don't leak in Referer headers. - frame-ancestors 'none' prevents embedding in a hostile iframe. - Strip "internal" wording from footer and README — deployment is public. - Remove unused spike/sample_eval.jsonl (leftover from inference spike). - Switch .replit deployment target from autoscale to static with publicDir=spike. The app is pure client-side — no container needed at runtime. Dev preview workflow unchanged (still runs serve.mjs on 5000).
0423261516
feat: initial hrs-privacy-filter scaffold with working inference spike Static single-page app that runs openai/privacy-filter (1.5B MoE, q4f16) fully in-browser via @huggingface/transformers on WebGPU. No backend. Working features in spike/index.html: - Auto-loading model with progress bar + status chip - Tabs: Text (paste/redact/download) and File (drop/redact/download) - Settings drawer: output mode (typed vs generic), per-category toggles, clear-cache + reload, runtime metrics - File formats: .txt .md .log .env .csv .tsv .json .jsonl (json/jsonl walk the tree and redact string leaves individually) - Custom BIOES aggregation (transformers.js built-in only handles BIO) - Offset reconstruction via per-token decode (tiktoken doesn't surface return_offsets_mapping through transformers.js) - HRS AI aesthetic: dark glassmorphism, underlay.jpeg, HRS blue accent Minimal node static server (serve.mjs) on :4173 for local dev. Apache 2.0 — matches upstream openai/privacy-filter license.
0423261330
fix: relax ALC/YLC 1st Year rule and surface fallback row matches (HRS-892) (#22) Closes HRS-892
0423261306
0423261232
0423261022