Appearance
Release notes
The sixty most recent releases, newest first. A release is cut every two hours when something has merged; feat entries raise the minor version, fix and the rest the patch.
v2.72.0
2026-10-15
- feat DLP-2376: portal release notes from release commits, published by the release job
v2.71.0
2026-10-15
- fix DLP-2256: keep the line break after a line drawn a glyph at a time
- feat DLP-2160: sign in to the console against Active Directory over LDAPS
v2.70.0
2026-10-15
- test DLP-2372: check the agent in and release through a second owner, so the e2e reaches step 20
- test DLP-2372: stop asserting a clean agent exit the run loop cannot yet promise
- fix DLP-2367: show the retention windows that are kept, not one stored under its floor
- feat DLP-2376: documentation portal for docs.dlp.erpona.app
- fix DLP-2365: read ID document labels that carry an Azerbaijani case or possessive ending
- feat DLP-2366: watch the Azerbaijani identity card in the personal identifiers template
v2.69.0
2026-10-15
- feat DLP-2222: record when housekeeping and anchor passes start and finish
- fix DLP-2369: refuse a credential in a change reason or a new policy's top-level description
v2.68.4
2026-10-15
- test DLP-2334: assert the refused value is in no row of the database
- test DLP-2334: refuse to run the free-text suite without pg_dump
- test DLP-2316: choose the kept saved view only once the page lists it
- fix DLP-2265: tell the operator a failed download is offered again, and how often
- test DLP-2316: prove the partial-page reorder rule with eleven policies, not sixty
v2.68.3
2026-10-15
- fix DLP-2304: stop psql | head -1 from reporting a committed write as failed
- docs DLP-2360: record how strikes a requested stop left are released
- test DLP-2361: fail the security gate when the analyst test scopes drift from the fixture
- fix DLP-2306: read a stored retention window back at the write-path floor
- fix DLP-2338: let the previous release write report exports after 0224
- test DLP-2316: give two dashboard tests a 60 s limit the host load was spending
- test DLP-2353: prove the coverage preview answers for the draft it is sent
- test DLP-2334: give the free-text suite's negative checks a positive control
- test DLP-2359: wait for the API against a 180 s wall-clock bound
v2.68.2
2026-10-15
- test DLP-2356: record incidents:mark_test for the three roles that hold it
- test DLP-2357: wait for a slow second start instead of killing it
- fix DLP-2319: a requested stop no longer counts the read it interrupted
- test DLP-2358: copy the security_analyst scopes from the fixture into App.test.tsx
- test DLP-2358: include incidents:mark_test, which the fixture now grants security_analyst
v2.68.1
2026-10-15
- test DLP-2345: record the answers for eight read routes the matrix never asked
- test DLP-2355: write the waiting state in the same statement as the status
v2.68.0
2026-10-15
- test DLP-2287: cover the watch tick that says a refused stick
- feat DLP-2198: link ingest to the explorer and pin the seven-day baseline edges
v2.67.0
2026-10-15
- fix DLP-2349: keep the Activity Explorer details title and destination on their lines
- feat DLP-2244: judge SMTP from the last test email
v2.66.0
2026-10-15
- feat DLP-2337: ask the server what a draft would warn about
v2.65.0
2026-10-15
- feat DLP-2348: rebuild Activity Explorer to the approved design
v2.64.1
2026-10-15
- fix DLP-2268: a stamp with a capitalised qualifier is a marking
- fix DLP-2339: keep a report's N-day window relative when its queue is reopened
- test DLP-2343: write the verification policy and gate its path selection
- ci DLP-2341: a required security gate that needs no server
- docs DLP-2341: describe the security-gate job that CI now runs
- docs DLP-2340: record the verification groups, failure table and owner decisions
- docs DLP-2340: cite the enforcer test that sets the no-decision default
- docs DLP-2340: point the undecided-behaviour item at all six rows
- test DLP-2346: stop the NotFound identity test comparing a value with itself
- docs DLP-2346: describe the cross-tenant check by what it now asserts
v2.64.0
2026-10-15
- feat DLP-2332: name the audit entry that recorded each policy revision
- fix DLP-666: say beside the directory scope that no endpoint can evaluate it
- fix DLP-2336: run the migration lint in CI and record the one applied break it finds
- fix DLP-2297: open a group's seven-day window as a preset, not a fixed instant
v2.63.2
2026-10-15
- test DLP-2327: prove a FIN table is read under its header in every archive shape
- test DLP-2327: check the zipped docx, xlsx and pptx at the twenty-row table
- test DLP-2334: name a changed description and user message by their field
- fix DLP-2265: re-offer a release to a device that reported busy
v2.63.1
2026-10-15
- fix DLP-2327: read every table in a text under its own header
- fix DLP-2335: record the four retention kinds the run row left out
- fix DLP-2334: refuse a credential typed into a policy's free text at save
v2.63.0
2026-10-14
- feat DLP-2328: the Owner manages a detector's sample list on its page
v2.62.0
2026-10-14
- feat(activity): distinguish unmonitored channels
- feat(activity): improve pagination controls
- refactor(activity): share enforcement badges
- fix(activity): complete keyboard accessibility
- Merge remote-tracking branch 'origin/main'
- fix(migrations): sequence activity explorer changes
- fix(activity): use shared download handling
- fix DLP-2163: gate revision links on policies:read, label deployment state
- test DLP-2331: assert the SSO panel's loading, error, denied and saved states
- Merge remote-tracking branch 'origin/main'
- fix DLP-2296: log every kind a retention pass counts
- fix(activity): tolerate agents without capability channels
- Merge remote-tracking branch 'origin/main'
v2.61.1
2026-10-14
- fix DLP-2326: read identity-card MRZ from spreadsheet pipes and HTML attributes
- test DLP-2158: the syslog collector reports a failed list read and an empty list
- fix DLP-2324: only the Owner can set a value aside with a detector's allowlist
- fix DLP-2327: read a docx, xlsx or pptx inside a zip as the document it is
- fix DLP-2325: a shipped rule deleted before 0221 stays deleted at the first start after it
v2.61.0
2026-10-14
- test DLP-2138: assert the named System Health panels render before the inset check
- fix DLP-2162: show the server's licence read and health evaluation times
- fix DLP-2158: drop the saved-collector success line when a test fails
- test DLP-2125: make policy lifecycle suite match the approval and coverage gates
- feat DLP-2162: preflight restore and certificate replacement before any host action
- fix DLP-2320: read xlsx cells whose reference attribute is omitted
- fix DLP-2319: a read the operator's stop interrupted is not a poison strike
- test DLP-2256: a FIN column in a cell-by-cell PDF table is counted, phones are not VÖEN
- fix DLP-2319: release strikes that no stop note backs
- fix DLP-2226: keep a refused in-place install visible and retry it
- fix DLP-2251: read passport MRZ from spreadsheet pipes and HTML attributes
- fix DLP-2318: a shipped activity rule a tenant deleted stays deleted
- fix DLP-2322: report a worksheet cell whose reference names no column
- test DLP-2324: prove only the exact allowlist value sets a sample FIN aside
v2.60.4
2026-10-14
- test DLP-2301: give the queue's time-window test room on a loaded host
- fix DLP-2314: audit coverage is per path, not per handler
- docs: reconcile minifilter decision history
- Merge pull request #40 from asafahmadov/codex/reconcile-minifilter-docs-20261014
- fix(agent): describe live minifilter capability
- Merge pull request #41 from asafahmadov/codex/live-minifilter-capability-copy-20261014
- fix DLP-2158: settings states say why a setting is unavailable
- fix DLP-2305: hold monitor tests' watchers one at a time
- fix DLP-2317: audit the start-up pass that changes shipped activity rules
- fix DLP-2158: say what the on-prem cards do not know, not that nothing is configured
v2.60.3
2026-10-14
- fix DLP-2259: a term alone on its line labels only the value that opens the next line
- fix(api): keep update history in writable state
- Merge pull request #39 from asafahmadov/codex/agent-package-store-20261014
v2.60.2
2026-10-14
- fix DLP-2295: read no binary PDF stream as page text
v2.60.1
2026-10-14
- fix(api): audit failed email delivery tests
- Merge pull request #37 from asafahmadov/codex/audit-coverage-20261014
- fix(agent): keep pending decrement lint-clean on MSRV
- Merge pull request #38 from asafahmadov/codex/atomic-msrv-20261014
v2.60.0
2026-10-14
- fix(copy): remove garbled spacing from user messages
- Merge pull request #35 from asafahmadov/codex/prose-spacing-20261014
- fix DLP-2308: name the FltLib and Kernel32 import libraries in lower case
- feat DLP-2179: scope the System Health KPIs to what the reader may see
- fix DLP-2179: keep Endpoint coverage a link for readers who may not open the inventory
- fix DLP-2179: make the health tables' scroll regions reachable by keyboard
- fix(api): make forbidden responses complete the permission sentence
- Merge pull request #36 from asafahmadov/codex/forbidden-copy-20261014
- fix DLP-2309: link the Windows agent in the lint gate, as the release does
- fix DLP-2310: give four suites their own default ports
- docs DLP-2312: document the backup_run step-up in the confirmation table
- fix DLP-2313: clear the clippy errors that stop the management API's lint gate
- fix DLP-2311: read route modules and audit helpers in the audit check
v2.59.0
2026-10-14
- feat DLP-2294: read objects embedded in a TNEF message's RTF body
- fix DLP-2258: a blank cell between two tabs is a column, not nothing
- fix DLP-2293: read a plain-text TNEF body held only in MAPI properties
- fix DLP-2138: wrap System Health panel bodies in the card inset
- Merge origin/main into Windows minifilter and security review work
- Merge pull request #21 from asafahmadov/codex/windows-minifilter-b1-b2-20261009
- feat DLP-2287: decide the notice a person gets when Windows refuses a removable write
- fix DLP-2298: the Windows cross-check compiles again
- fix(dashboard): stabilize merged UI tests
- ci(security): distinguish synthetic secret fixtures
- Merge pull request #24 from asafahmadov/codex/post-merge-ci-fixes-20261014
- test(agent): align CPU ceiling with sysinfo
- Merge pull request #25 from asafahmadov/codex/ci-cpu-sampling-20261014
- ci(licences): admit bundled IBM Plex font
- Merge pull request #26 from asafahmadov/codex/font-license-notices-20261014
- ci(windows): document pinned action versions
- Merge pull request #27 from asafahmadov/codex/windows-action-pin-comments-20261014
- docs: repair paths after incident module split
- Merge pull request #28 from asafahmadov/codex/doc-paths-after-merge-20261014
- ci(security): decouple clean scans from artifact quota
- Merge pull request #29 from asafahmadov/codex/gitleaks-artifact-quota-20261014
- feat DLP-2287: tell the person when policy refuses removable writes as a device appears
- feat DLP-2084: keep which template a report came from, and ask before saving it twice
- fix DLP-2084: bind the template id column's placeholder in the report insert
- fix DLP-2303: renumber the unreleased policy migration to 0214
- fix DLP-2303: renumber six unreleased migrations off numbers a release already uses
- fix DLP-2303: refuse a migration directory where two files share a number
- fix DLP-2304: stop a head-piped psql helper from reporting a committed write as failed
- test DLP-2307: scope the badge count to the Main navigation
- test(detectors): align FIN suppression with validation floor
- Merge pull request #30 from asafahmadov/codex/fin-suppression-test-20261014
- fix(security): update ruzstd past RUSTSEC-2026-0344
- Merge pull request #31 from asafahmadov/codex/ruzstd-rustsec-20261014
- ci: run signing key expiry regression
- Merge pull request #32 from asafahmadov/codex/signing-key-expiry-ci-20261014
- docs(licenses): refresh notice for ruzstd 0.9.1
- Merge pull request #33 from asafahmadov/codex/ruzstd-notice-20261014
- ci: retain browser reports only on failure
- Merge pull request #34 from asafahmadov/codex/browser-artifact-quota-20261014
v2.58.0
2026-10-13
- fix DLP-2291: delete expired events by id, not ctid
- fix DLP-2290: sum every retention counter in enforce_all
- feat DLP-2253: read a TNEF message body held only as compressed RTF
- feat DLP-2254: read TNEF attachment data held in MAPI properties
- fix DLP-2292: key retention and housekeeping deletes on primary keys, not ctid
- test DLP-2289: cover the recorder heartbeat and the history stop it raises
v2.57.0
2026-10-13
- fix DLP-2233: let the health overview's theme tokens paint the dark page
- fix DLP-2180: name the endpoint table as a keyboard-reachable region
- fix DLP-2255: count a TNEF attachment as mail
- fix DLP-2233: keep the health route's other states on the page surface
- fix DLP-2247: report the health-event recorder when it stops
- feat DLP-2246: prune resolved health history after 90 days
v2.56.0
2026-10-13
- fix DLP-2288: a placeholder AWS key id of three or four distinct characters is not a secret
- feat DLP-2274: read LZX folders in a cabinet
- fix DLP-2248: read a workbook's print header and footer
- fix DLP-2249: read a Word watermark's text
- fix DLP-2250: read a slide master's and layout's text boxes
- fix DLP-2268: an HTML footer's classification stamp is a marking
v2.55.0
2026-10-13
- fix DLP-2282: a negative word on another line no longer drops a labelled VÖEN
- docs DLP-2283: decide the Windows enforcement path for Azerbaijani identifiers
- fix DLP-2268: a classification label with a title-case marking is a banner
- feat DLP-2286: ship a template for Windows' removable-write policy
- feat DLP-2269: detect the Azerbaijani ID card serial and passport number beside a label
- fix DLP-2267: a VÖEN label does not support a number labelled otherwise
- fix DLP-2261: a placeholder AWS key id and a masked connection password are not secrets
v2.54.0
2026-10-13
- fix DLP-2282: a negative term on another line no longer drops a labelled FIN
- fix DLP-2266: Cyrillic FIN and VÖEN labels, and Latin long names, support az.fin and az.voen
- test DLP-2282: name the test marker case for what it now asserts
- test DLP-2285: a kerned card above an IBAN is found on its joined copy
- fix DLP-2279: let the audit chain check cover the whole chain, not its first 20,000 entries
- fix DLP-2284: a multi-word term matches with each word capitalised
- feat DLP-2281: measure how long deferred classification choices take to write
v2.53.0
2026-10-13
- fix DLP-2137: do not space a kerned card number in the joined reading
- fix DLP-2280: hold a refused audit chain verdict in memory until it can be written
- feat DLP-2201: give Health its own read and manage permissions
- docs DLP-2201: the privacy register and the Health backlog name health:read
v2.52.0
2026-10-13
- feat DLP-2200: show the endpoints' classification queue on the Health page
v2.51.0
2026-10-13
- test DLP-2257: a FIN column supports every row in a slide, sheet and ODS table
- fix DLP-2275: stop the continuity banner calling accepted loss still missing
- feat DLP-2197: let an Owner download a redacted Health support bundle
- feat DLP-2199: verify each tenant's audit chain on a schedule and show the result
- docs DLP-2276: give sequence gaps and their acceptance reasons a privacy row
v2.50.0
2026-10-13
- feat DLP-2194: let an administrator accept a sequence gap's loss, with a reason
- fix DLP-2257: tab-separate table cells in Office and RTF text
- feat DLP-2195: group sequence gaps by endpoint and page them by cursor
- fix DLP-2256: read PDF table rows and cells as lines and tabs
- test DLP-2277: an MRZ printed to PDF by Chromium, and an ID card inside a docx
v2.49.0
2026-10-13
- fix DLP-2263: count Activity Explorer events with formatCount and use a hyphen for empty cells
- feat DLP-2230: read CAB archives whose folders are MSZIP or stored
v2.48.0
2026-10-13
- feat DLP-2193: let an Owner choose and test health alert rules
- fix DLP-2251: find a passport or ID-card zone however its lines are separated
- test DLP-2251: a passport's lines drawn as PDF text runs are found
v2.47.0
2026-10-12
- feat DLP-2190: keep health issues as events from first reading to recovery
- fix DLP-2252: record the activity-events route in the access matrix
- feat DLP-2229: read Outlook winmail.dat (TNEF) body and attachments
- fix DLP-2245: read a workbook's cells in their columns so a FIN header outside column A labels its value
- docs DLP-2245: name the workbook tests that prove cells are read in their columns
- feat DLP-2191: show health event history with filters and owner triage
- feat DLP-2192: notify a chosen channel when a health fault stays open
- fix DLP-2227: an endpoint is sent the release its manifest declares, at that digest
v2.46.0
2026-10-12
- fix DLP-2228: read the end of extracted text, not only its head
- fix DLP-2233: paint the system health overview from theme tokens
- feat DLP-2181: add Activity Explorer and align navigation
- fix DLP-2243: refuse a tenant lookup that cannot be made, so saturated components takes one budget
v2.45.0
2026-10-12
- fix DLP-2180: show the refresh interval's value in the dark theme
- feat DLP-2221: report a correlation worker that has stopped finishing passes
- feat DLP-2187: judge licence and certificate expiry in the health components
- feat DLP-2188: judge external connections from what was recorded
- ci DLP-2188: run the connections integration suite in CI
- fix DLP-2231: make the backup page test assert the copy that renders
- test DLP-2189: prove the Health page judges backup and standby from the snapshot
v2.44.0
2026-10-12
- fix DLP-2220: bound the wait for a pooled connection before identity is read
- feat DLP-2180: refresh system health on a chosen interval and say when its data is stale
v2.43.0
2026-10-12
- feat DLP-2185: show every endpoint's drift and interruption history in the fleet list
- docs DLP-2225: accept the settle-second deletion gap and track the NTFS journal gap
- feat DLP-2186: let an agent report its own service, driver and tamper observations
- feat DLP-2196: let the fleet list ask an endpoint to re-sync or send diagnostics
- fix DLP-2218: record the answer for the routes the permission matrix asked about
- fix DLP-2220: a database that never frees a pooled connection is unavailable, not an internal error
- perf DLP-2224: reuse one syslog connection per delivery pass
- feat DLP-2162: queue operator-run on-prem backups
- fix DLP-2162: keep manual backup queue portable
v2.42.0
2026-10-12
- feat DLP-2182: keep resource samples and read them back as bounded history
- test DLP-2182: count the eight-day insert where it happens
- feat DLP-2183: show platform parts and resource trends on the health page
- docs DLP-2208: measure one destination's drain rate against a slow collector
- chore DLP-2224: refresh the register's absent-key file
- feat DLP-2184: list every endpoint with its state and its problems in one page list
- ci DLP-2184: run the fleet walk's timing gate in its own step
v2.41.0
2026-10-12
- feat: observe on-prem standby streams in System Health
v2.40.0
2026-10-12
- test DLP-2181: show what the health endpoints do when the pool is saturated
- feat DLP-2207: forward audit events to a CEF collector
- test DLP-2223: list the backup freshness endpoint as open to every role
- test DLP-2219: assert the queue's Export gate without the App shell
v2.39.0
2026-10-12
- fix DLP-2214: keep the SIEM event switches read-only until the saved collector is loaded
- test DLP-2215: give the Export CSV link assertion its own wait under CPU contention
- feat DLP-2181: report each part of the platform as its own verdict
- feat: surface on-prem backup freshness in System Health
v2.38.0
2026-10-12
- fix DLP-2213: give the archive-unavailable case an unconfigured archive
- feat(health): compare event ingest with tenant baseline
v2.37.1
2026-10-12
- fix DLP-2211: make the console's copy and route tests match the code
- fix DLP-2209: drop the health input no rule reads
- ci DLP-2210: run the service-account suite in the test job
- fix DLP-2212: word the service-credential refusal as a clause that completes it
v2.37.0
2026-10-12
- feat DLP-2205: forward selected audit events to a syslog SIEM
- test DLP-2205: wait for the saved event checkboxes before asserting them
- feat(settings): download observed public TLS certificate
v2.36.0
2026-10-12
- feat DLP-2177: read each organisation's silence cutoff on every count
- test DLP-2177: prove the silence cutoff in real browsers
- fix(settings): bring service account credentials closer to reference
v2.35.3
2026-10-12
- fix(settings): align on-prem backup panel with reference layout
v2.35.2
2026-10-12
- fix DLP-2178: unify server health issues
v2.35.1
2026-10-12
- ops: publish public console certificate after renewal
- DLP-2161 improve settings responsive navigation UX
- fix DLP-2167: read standard-14 PDF fonts with no map through WinAnsi
- fix: stage SIEM forwarding changes until save
v2.35.0
2026-10-12
- feat DLP-2177: let each organisation set when silence is listed and alerted
- feat: expose public TLS certificate inventory in Settings
v2.34.0
2026-10-12
- fix DLP-2204: report image-only PDF pages
- fix DLP-2204: clear two clippy warnings in the PDF page walk
- feat DLP-2156: make the Settings rail the only Settings navigation
- feat DLP-2161: say what a settings save changes and when it applies
- feat DLP-2162: show when on-prem maintenance readings were last taken
- feat: add read-only service accounts with isolated credentials
- fix: align Settings shell with API Access reference
- fix: use console-standard punctuation in service accounts
v2.33.0
2026-10-12
- feat(settings): align system health shell with supplied design
v2.32.1
2026-10-12
- fix DLP-2176: unify endpoint state counts
- Merge pull request #23 from asafahmadov/codex/dlp-2176-health-counts-20261012
v2.32.0
2026-10-12
- fix DLP-2170: carry the encrypted flag through mail, embedded and archive-only nesting
- fix DLP-2147: read a Spring datasource password as a database credential
- test DLP-2142: an IBAN split into spans by spaces is found, not only a card
- fix DLP-2168: read RTF 'xx bytes in the code page the document names
- test DLP-2165: the wall-clock ceilings in detector_budget run only in the timing step
- test DLP-2202: a test marker on the line above sets a FIN label aside by design
- fix DLP-2171: name a refused entry by the chain of archives it was found in
- ci: run the live browser session suite, which no CI step named
- fix DLP-2154: a symbol escape in RTF is what it stands for, not the bare symbol
- feat(settings): build system health target overview from live signals
v2.31.0
2026-10-11
- fix DLP-2143: decode HTML 4 named references, so a label written with Ö reads as Ö
- fix DLP-2145: name a password-protected zip entry by its path and mark the file encrypted
- docs: map System Health audit to actionable backlog
- fix DLP-2139: a scanned PDF is not read in full because its metadata has text
- fix DLP-2144: read a table cell's label as the text beside its value
- feat(settings): configure signed endpoint update rollout
v2.30.0
2026-10-11
- docs: link Settings UX findings to MyDLP tickets
- docs: ground Settings UX review in accessibility and findability guidance
- fix DLP-2134: a glyph placed at its own text matrix joins the line
- fix DLP-2150: a GitHub fine-grained token is reported as a GitHub token
- fix DLP-2146: read a brace-quoted ADO.NET password as a connection string
- fix DLP-2137: read a word that a PDF splits by kerning or a move as one word
- fix DLP-2149: find title-case two-part markings and the Azerbaijani konfidensial
- fix DLP-2142: read a card whose digit groups are split by a space and an inline element
- feat: show live console sessions in Settings