Skip to Content

SAMURAI 4.2

Released June 25, 2026.

Features

  • Changes: AdvancedFilterBar + per-field URL filtering on the Changes page
  • Changes: always reflect the time range in the URL (default range=7d)
  • Changes: animated accordion sections, fixed popover width, Clear on Done row
  • Changes: calendar date-range picker for custom From/To (react-day-picker)
  • Changes: changeSearchToMongo DSL->Mongo translator over change_log
  • Changes: collapse time From/To into the range dropdown (compact toolbar)
  • Changes: collapsible Quick/Custom time sections (accordion, one open)
  • Changes: explicit date + time pickers for the custom From/To range
  • Changes: from/to zone chips + time controls inline in the filter bar
  • Changes: persist custom time range (start/end) in the URL
  • Changes: remove client-side triage + reviewed (superseded by server-side filters)
  • Changes: searchable endpoint-identity + auth-session fields
  • Changes: single Clear button clears search + time range (drop Reset)
  • Changes: smooth expand/collapse animation for nested change-detail cards
  • Changes: Start/End date tabs with sliding animation + auto-advance
  • Changes: time controls on the filter row + explicit start/end (until bound)
  • Changes: timeline query parses search DSL, AND-combined with time-range
  • Filters: searchable field picker in AdvancedFilterBar
  • Proxy: add proxy.manage permission (admin-only)
  • Proxy: bind resolve_hostnames in PUT + default ON for legacy configs
  • Proxy: caching host resolver (DNS) with positive+negative TTL
  • Proxy: config validation
  • Proxy: direct + SOCKS5 dialers
  • Proxy: frontend endpoints + proxy.manage in catalog
  • Proxy: health probe + status
  • Proxy: hostname-resolution toggle + resolved-IP in test result
  • Proxy: persist resolve_hostnames + cache TTL
  • Proxy: register routes + boot router/health
  • Proxy: REST handlers + hot-reload
  • Proxy: route AD/LDAP via proxyrouter
  • Proxy: route HTTP device connectors via proxyrouter
  • Proxy: route internet integrations via DefaultDialer
  • Proxy: route SSH via proxyrouter
  • Proxy: route vCenter (govmomi) via proxyrouter + scope AD StartTLS
  • Proxy: router resolves hostname devices to CIDR (lazy, short-circuit-safe)
  • Proxy: router with pool load-balance, failover, singleton
  • Proxy: routing config + deterministic resolve
  • Proxy: settings load/save with encrypted SOCKS passwords
  • Proxy: Settings Proxy section + wire-in
  • Proxy: SOCKS5 handshake health check (RFC 1928/1929) instead of bare TCP
  • Proxy: test endpoint reports resolved IP for hostname devices
  • Proxy: useProxy hooks
  • Settings: confirm CORS origin removal
  • Settings: confirm Telegram bot enable/disable toggle
  • Settings: roll sticky save bar out to Logging, Network, Notifications
  • Settings: single sticky save bar per tab (Sync tab)
  • TLS: accept PKCS#7/.p7b bundles, pick leaf by key match
  • TLS: add tls.manage permission (admin-only)
  • TLS: allow re-downloading a pending CSR
  • TLS: bridge generates cross-platform nginx config (stage B)
  • TLS: certificate validation + metadata extraction
  • TLS: cross-platform nginx layout detection (stage A)
  • TLS: default bridge factory + restore-from-settings
  • TLS: dropzone accepts .p7b/binary DER (base64) + PKCS7 PEM
  • TLS: dropzone cert upload + confirm dialogs for enable/disable/regenerate
  • TLS: encrypted-at-rest settings accessors
  • TLS: entrypoint TLS seeding, template COPY, ssl tmpfs
  • TLS: expiry checker with 30/14/7-day alerts
  • TLS: frontend endpoints + tls.manage in catalog
  • TLS: http{}-level root + samurai.d include for generated configs (stage E)
  • TLS: never expose tls_private_key via the generic settings list
  • TLS: nginx bridge with rollback-on-reload-failure
  • TLS: nginx resolver, override setting, status + config endpoints (stage C)
  • TLS: nginx status alert + folder picker + auto-detect (stage D)
  • TLS: register /api/settings/tls routes (admin-gated)
  • TLS: Remove keeps key+CSR; only new CSR replaces the key
  • TLS: REST handlers for CSR/cert/enable/delete
  • TLS: restore TLS on boot + start expiry checker
  • TLS: RSA-2048 key + CSR generation
  • TLS: Settings TLS/HTTPS tab UI
  • TLS: show certificate chain + human-readable DNs in status card
  • TLS: single dropzone auto-splits cert bundle into leaf + chain
  • TLS: swappable :80 server block (serve vs 301 redirect)
  • TLS: upload certificate file as alternative to paste
  • TLS: useTls TanStack Query hooks
  • TLS: wire TLS tab into Settings (gated on tls.manage)
  • UI: add shadcn breadcrumb block — slash separator + home icon
  • UI: add shadcn tooltip block — tooltip-04 rounded
  • UI: add standard icon to all confirmation dialogs
  • UI: app tooltips adopt rounded-full style from tooltip-04
  • UI: Changes date picker → single 2-month range calendar
  • UI: confirm before Sync All on the dashboard
  • UI: confirmation dialogs adopt dialog-01 pattern
  • UI: Dialog primitive adopts dialog-01 header/footer + DialogIcon
  • UI: dynamic document.title per route
  • UI: login split-screen, tooltip arrow, Textarea primitive
  • UI: showCloseButton on DialogContent + adapted dialog-01 block
  • UI: standardize form dialogs to dialog-01 pattern
  • UI: Topbar breadcrumb uses slash separators

Bug Fixes

  • Changes: bulk-expanded cards use the vendor renderer, not generic
  • Changes: escape regex meta in search; export honors until; drop dup count
  • Changes: keep field-scoped quoted phrases intact in the search parser
  • Changes: write time-range URL params in one effect (start+end, drop range)
  • Database: add standalone change_log.timestamp index
  • Filterbar: removing a chip re-applies the filter (updates URL + results)
  • Monitor,sync: close probe keep-alive leak + route sync gate via proxy
  • Monitor: route device health checks through the proxy
  • Proxy: assert literal-IP skips DNS; cover off/override short-circuit; skip DNS when no rules
  • Proxy: context-wrap errors + testable buildPersistProxy seam (plaintext-never-persisted)
  • Proxy: defensive-copy resolved IPs + test empty-result negative cache
  • Proxy: guard health-cancel race; 500 for DB faults; device-not-found + nil-slice view
  • Proxy: keep focus while editing per-device override id
  • Proxy: move Save to a sticky bottom bar (was confusing at top of the long tab)
  • Proxy: probe loop owns health (no dial-path demotion); drop dead mu; cache disabled router; race test
  • Proxy: reject enforce_all without a pool + empty pools; cover misroute cases
  • Proxy: route LDAP auth service via proxyrouter; device-id route test without target
  • Proxy: show pool label (not uuid) in route errors + test results
  • Proxy: test endpoint resolves device IP like sync (url-host fallback)
  • Proxy: vCenter DialTLSContext (govmomi bypass), AD SNI hostname, ISE skip-verify
  • Settings: move Enable-HTTPS toggle out of section header into body
  • Settings: register SyslogTab + CorsOriginsTab into the tab save bar
  • Settings: reserve scroll space so content clears the sticky save bar
  • Settings: Telegram bot-config save button uses “Save Changes”
  • Settings: wrap SettingsSection tooltip in TooltipProvider
  • TLS: absolute samurai.d include in nginx.windows.conf (relative glob unreliable on Windows nginx)
  • TLS: clean nginx restart on Windows (reload leaves stale workers serving old config)
  • TLS: CN-into-SAN, not-yet-valid check, chain + CertInfoFromPEM tests
  • TLS: correct nginx rollback for renewal + fresh key perms + tests
  • TLS: exclude duplicate leaf from chain; surface PEM parse errors
  • TLS: keep confirm dialogs open during mutation (preventDefault)
  • TLS: nginx -t config test before Windows restart (don’t kill nginx on bad config)
  • TLS: nil-SAN guard, delegated tls.manage redirect, AlertDialog, error state
  • TLS: only mark expiry threshold alerted on email success
  • TLS: preserve pre-mounted certs on boot, Disable rollback, surface CSR, propagate disable error
  • TLS: propagate cert-subject marshal error
  • TLS: Remove always clears DB; skip nginx revert when not enabled
  • TLS: surface Disable error in DeleteTLS + use response envelope for CSR
  • TLS: try PKCS#7 parse on any DER block that fails x509 (mislabelled .p7b)
  • UI: FMC AddFTD Dialog shadow-state so exit animation plays
  • UI: keep tooltip change surgical — arrow only, no app-wide max-width
Last updated on