Skip to Content

SAMURAI 4.4

Released July 1, 2026.

Features

  • API: register gated /api/devices/:id/terminal WS route
  • Changes: collapse long “Seen on” list behind a Show-more toggle
  • Connectors: Discord incoming-webhook client
  • Forensics: animate result row expand/collapse (Collapse height-glide + rotating chevron)
  • Forensics: EOF-framed per-command SSH collector + classify
  • Forensics: gated Forensics tab — collect, view, download bundle
  • Forensics: persist job across refresh + confirm dialog on collect
  • Forensics: platform-aware command descriptor + output classifier
  • Forensics: start/status/bundle routes (gated) + collect+download audits + TTL sweeper
  • Forensics: transient in-memory job store (owner-bound, TTL)
  • Forensics: zip bundle + manifest with per-file + overall SHA-256
  • Frontend: add gated Terminal tab to router/switch panels
  • Frontend: xterm.js read-only device terminal component
  • HA: /api/cluster status + promote endpoints
  • HA: add cluster.manage permission
  • HA: cluster models + collection registration
  • HA: cluster service — role derivation + heartbeat/refresh loops
  • HA: cluster store (seed/heartbeat/list/set-active)
  • HA: gate background sync/compliance/monitor loops on cluster.IsActive
  • HA: global passive-mode banner
  • HA: High Availability tab cards default collapsed
  • Handlers: read-only live SSH terminal WebSocket handler
  • HA: read NODE_ID (hostname fallback)
  • HA: remove-node button + DELETE /api/cluster/nodes/:id
  • HA: RequireActive guard on on-demand device-data writes
  • HA: Settings High Availability tab (roster + promote)
  • HA: useCluster status/promote hook
  • Integrations: add Jira + custom authenticated callback sinks
  • Integrations: disable config inputs while an integration is off
  • Integrations: Discord sink with severity-colored embed
  • Integrations: event spine — domain/events + Sink registry + dispatcher
  • Integrations: Microsoft Teams notification channel via MessageCard
  • Integrations: move Email/Telegram transport into Integrations tab
  • Integrations: phase 1 — route change-email through the event bus
  • Integrations: phase 2 — Telegram outbound rebuild + unified change producer
  • Integrations: phase 2 (cont.) — Telegram outbound rebuild + unified producer
  • Integrations: phase 3 — merge Notifications into Integrations
  • Integrations: phase 3 (cont.) — Integrations cards + remove Notifications tab
  • Integrations: register Discord in catalog/settings/allsinks
  • Integrations: Settings Integrations tab — Slack/TheHive + on-demand trigger
  • Integrations: show “Configured / Not set” status for secret fields
  • Integrations: Slack + TheHive connectors/sinks + REST + on-demand trigger
  • Notifications: add custom notification hook + banner
  • Notifications: move Custom-notification enable toggle into the card header
  • Notifications: unified in-flow banner stack + Settings card
  • Rbac: add device.forensics permission (admin-only, secret trust)
  • Rbac: add device.terminal permission for live SSH terminal
  • Settings: animate Integrations rows + a11y-correct trigger + tests
  • Settings: apply claude.ai/design polish to Integrations tab
  • Settings: brand logos on Integrations tab cards
  • Settings: consolidate proxy sections into one Outbound proxy card
  • Settings: Discord integration logo + status label
  • Settings: lift section primary controls into card headers
  • Settings: move LDAP enable toggle into the card header
  • Settings: redesign Integrations tab as collapsible grouped list
  • Settings: restyle TabSaveBar to the design mockup floating glass pill
  • Settings: roll collapsible card design out to General/Sync/Logging
  • Settings: roll collapsible card design out to License + Access
  • Settings: roll Integrations card design out to Network & Security
  • Settings: Sync tab snapshot retention in days, not count
  • Settings: Users table — email column + sortable headers
  • SSH: persistent read-only terminal session primitive
  • Sync: add snapshotCutoff helper for time-based retention
  • Sync: default snapshot_retention_days to 180
  • Sync: time-based snapshot retention with always-keep-latest floor
  • Terminal: adopt usePanelTerminal in router/switch panels
  • Terminal: compact minimized pill + confirm-on-close for floating window
  • Terminal: confirm dialog on open (no auto-connect) + align Forensics tab design
  • Terminal: floating-window geometry helpers + tests
  • Terminal: FloatingWindow + placement-aware DeviceTerminal + usePanelTerminal host
  • Terminal: full-height layout, font-size dropdown (persisted), copy + download
  • Terminal: list candidates on ambiguous Tab via ? fallback
  • Terminal: polish UI (toolbar, status, history) + fix arrow-key input corruption
  • Terminal: pop-out / floating window — PanelTerminal component
  • Terminal: proper Ctrl+C, empty-Enter, copy/paste handling
  • Terminal: server-mediated Tab completion probe
  • Terminal: show-prefix guard + replay-based completion parser
  • Terminal: Tab key requests device completion + applies result
  • Terminal: WriteRaw primitive + completer capture coordinator
  • VMware vCenter: attribute changes via event-type allowlist classifier; drop privilege-check recovery
  • VMware vCenter: Changes tab ‘Changed by’ summary from per-item stamps, not transaction firehose
  • VMware vCenter: gate raw audit_admin_batches behind include_audit
  • VMware vCenter: recover actor from privilege-check audit events when stamping changes
  • VMware vCenter: remove top ‘Changed by’ summary block, match Palo/all vendors

Bug Fixes

  • A11y: darken light-mode —muted-foreground to meet WCAG AA contrast
  • Changes: reliable keyframe collapse animation + default-collapsed + per-card consistency
  • Ci: restore linux optional deps in frontend lockfile (#756 recurrence)
  • Cisco FMC: show “any” for empty networks instead of injected 0.0.0.0/0
  • Forensics: don’t evict running jobs; bind bundle/status to job’s device; doc ctx choice
  • Forensics: hard per-command wall-clock cap so tech-support can’t hang
  • Forensics: isolated SSH connection per command (IOS-XE closes conn on exit)
  • Forensics: surface read truncation so partial captures aren’t certified complete
  • HA: gate cluster status polling on cluster.manage to avoid 403 spam
  • Infra: point nginx SPA root to the D: build path
  • Integrations: don’t leak Teams webhook URL into logs on delivery failure
  • Integrations: use official full-colour Teams logo in card header
  • Integrations: use the sticky save bar like every other Settings tab
  • Settings: collapse every settings card by default
  • Settings: collapse/expand animation via grid-rows + forceMount
  • Settings: collapsed-card-shaped loading skeleton
  • Settings: harden save-bar fill chain to pure flex-grow
  • Settings: Integrations loading skeleton matches the redesigned layout
  • Settings: keep save bar Discard/Save visible (disabled) when clean
  • Settings: lighten card-header icon-box border
  • Settings: make About section content full width
  • Settings: make card-header edges clickable for expand/collapse
  • Settings: make integration card expand/collapse actually animate
  • Settings: make the floating save bar always visible again
  • Settings: match collapsible section title size to Integrations
  • Settings: match Integrations card geometry + convert all proxy sections
  • Settings: normalize two spacing drifts
  • Settings: pin the save bar to the page bottom on short tabs
  • Settings: render header-action dialogs outside the collapsible body
  • Settings: show syslog listener confirm dialog when card collapsed
  • Settings: soften field labels to muted color
  • Settings: space the info tooltip from the header action control
  • Settings: use the shared Collapse component for card animation
  • Switch: harden parseVRFNames against device command echo
  • Terminal: absorb device Ctrl+U redraw so completion isn’t clobbered
  • Terminal: app-level GlobalTerminalHost so floating survives tab switches
  • Terminal: cursor-aware line editing — Left/Right/Home/End + mid-line insert
  • Terminal: explicit own-or-default credential handling + clear no-creds error
  • Terminal: explicit preventDefault on Tab to block browser focus-traversal
  • Terminal: nginx WS proxy location for /api/devices/<id>/terminal
  • Terminal: strip device prompt prefix from completion redraw
  • Terminal: strip device-echoed command from output stream, backend-side
  • Terminal: Vite dev proxy ws:true for /api/devices/<id>/terminal
  • Terminal: write geometry refs in effects, not during render
  • UI: lighten light-theme —input border to match design weight
  • VMware vCenter: derive timeline header from item stamps, not audit batches[0]
  • VMware vCenter: explicit audit actor wins over recovered denial actor when stamping
Last updated on