github CyberStrikeus/CyberStrike v2.0.0

one hour ago
  • fix(sdk): import the command catalog from a pure subpath, not the barrel (@badchars)
  • refactor: TUI and app registries consume the shared command catalog (@badchars)
  • fix(app): gate hackbrowser-stop and queue pause/resume by live status, like the TUI (@badchars)
  • feat(app): real Methodology and Report dialogs, replacing toast-only stubs (@badchars)
  • fix(app): call security actions through the typed SDK, like the TUI (drop as-any) (@badchars)
  • feat(sdk): shared command catalog — single source of truth for UI action commands (@badchars)
  • refactor(tui): align command ids with the app's canonical namespace (@badchars)
  • fix(app): persist the model selection to the server on every change (@badchars)
  • feat(provider): persist the selected model server-side so every surface resolves it (@badchars)
  • fix(app): send the selected model when launching a hackbrowser crawl (@badchars)
  • fix(web): hackbrowser crawls plan with the UI-selected model, not the catalog default (@badchars)
  • fix(web): /web/driver reports the session's active model, not Provider.defaultModel() (@badchars)
  • fix(build): also bundle the hackbrowser extension inside bin/ for binary-only installs (@badchars)
  • fix(build): bundle the web UI beside the binary in the release archive (@badchars)
  • fix(publish): skip already-published npm packages instead of aborting the whole publish (@badchars)
  • fix(web): AI-Navigator plans with the session's active model, not Provider.defaultModel() (@badchars)
  • feat(skill): fetch the corpus from a stable release URL, not per-version (@badchars)
  • fix(web): register the working directory as a project on startup (@badchars)
  • refactor(app): drop the dead legacy home/target-session routes (#10) (@badchars)
  • refactor(app): make newLayoutDesigns a constant true (#10) (@badchars)
  • chore(ui): remove dead-on-arrival v2 files with no importers (@badchars)
  • fix(app): new-session button opens the server workdir instead of an empty picker (@badchars)
  • fix(tui): use singular model/agent/mcp slash primaries to match the app (@badchars)
  • fix(app): show one slash row per command, keep aliases searchable (@badchars)
  • fix(app): empty sessions column points to opening a project when none can be created (@badchars)
  • chore(app): remove dead cyberstrike-panels (@badchars)
  • chore(app): align remaining store reads with the guarded pattern (@badchars)
  • fix(app): guard session store iteration in deleteSession (@badchars)
  • chore(app): remove dead titlebar-v2 and settings-agents placeholders (@badchars)
  • fix(app): guard Bolt dialog store reads against empty state (@badchars)
  • fix(app): guard composer store reads so closing a session no longer crashes (@badchars)
  • fix(app): open directory picker when New session has no project (@badchars)
  • fix(app): register Scroller before AutoScroller in sortable plugin lists (@badchars)
  • feat(skill): load the bundled corpus beside the binary (offline, all OS) (@badchars)
  • feat(uninstall): remove the Chrome for Testing cache on uninstall (@badchars)
  • feat(hackbrowser): ensure Chrome for Testing before spawning the orchestrator (@badchars)
  • feat(skill): show branded first-run skill-download progress (#114) (@badchars)
  • feat(npm): drop postinstall from published package — clean install, no npm v12 script warning (#114) (@badchars)
  • feat(skill): externalize skill corpus — fetch from GitHub Releases at runtime, not bundled in npm (#114) (@badchars)
  • test(publish): skip bundling skill corpus in main package — isolate npm review trigger (@badchars)
  • build: install @opentui/core platform packages by name for cross-compile (#112) (@badchars)
  • feat(web): server-side observe dedup — skip redundant SPA re-observations (#18) (@badchars)
  • test(web): clean-page fixtures set every required security header (@badchars)
  • test(web): driver POST response carries the main co-drive model (@badchars)
  • feat(db): drop orphan web_signal/web_canary tables (#15) (@badchars)
  • refactor(web): drop dead vars left after the CS-fabric rewiring (#15) (@badchars)
  • refactor(web): delete the retired CS signal fabric — Vortex is the single producer (#15) (@badchars)
  • refactor(web): route all live signal production to Vortex, off the CS fabric (#15) (@badchars)
  • fix: break turbo build cycle for re package and default to single-platform local builds (@badchars)
  • fix: rebrand vendored client tgz and add CyberStrikeClient type export (@badchars)
  • fix: rebrand opencode references in markdown docs and openapi.json (@badchars)
  • fix: rebrand opencode references to cyberstrike across core/ui/session-ui/llm/protocol/server/schema/httpapi-codegen/desktop/vortex/sdk (@badchars)
  • fix: remove accidentally committed .tgz pack files and gitignore them (@badchars)
  • fix: rebrand opencode references to cyberstrike across sdk/app/protocol/client/server/plugin/i18n (@badchars)
  • fix(desktop): rename opencode store names, types, and internal variables to cyberstrike/cli (@badchars)
  • fix(desktop): rebrand remaining opencode references in build/i18n/tests (@badchars)
  • feat(prompt): add SCALPEL (re-agent) to orchestrator agent roster (@badchars)
  • feat(plugin): register @cyberstrike-io/re as default domain (@badchars)
  • feat(prompt): update agent prompts with new tools and technique tools (@badchars)
  • feat(tool): add technique tools — IIS tilde, GraphQL introspection, HTTP smuggling (@badchars)
  • feat(tool): add built-in CVE lookup tool (OSV + NVD) (@badchars)
  • fix(provider): enable token usage tracking for GitHub Copilot (@badchars)
  • fix(release): include extension, web UI and skills in release archives (@badchars)
  • fix(build): minify binary + smol GC to reduce Windows OOM crashes (@badchars)
  • fix: prevent stack overflow on deeply nested messages in long sessions (@badchars)
  • fix(hackbrowser): fix double-hash URL corruption in spawned browsers (@badchars)
  • feat(data-collector): classify telemetry/APM endpoints as noise (@badchars)
  • fix(scope): block telemetry/APM domains from scope auto-expansion (@badchars)
  • fix: handle corrupt database and malformed JSON responses gracefully (@badchars)
  • chore(sdk): regenerate SDK types (@badchars)
  • fix(poster): lazy-load fonts to prevent $bunfs crash in compiled binary (@badchars)
  • feat(cyberstrike): add cloud escalation patterns to catalog (@badchars)
  • feat(plugin): add escalation-hunter to AgentSpec role union (@badchars)
  • fix: support Windows non-bash shells (PowerShell, cmd.exe) in bash tool (@badchars)
  • fix: auto-expand scope for cross-domain API traffic from in-scope pages (@badchars)
  • fix: prevent false chain auto-resume loops and duplicate watchdog notices (@badchars)
  • feat: /poster command generates shareable OG card, tweet, and blog post from findings (@badchars)
  • fix: inject credential context into LLM Navigator so smart models can log in (@badchars)
  • fix: skip AI SDK reasoning "not found" soft errors instead of throwing (@badchars)
  • feat: add /pin, /timestamps, /web commands to Web/Desktop (@badchars)
  • fix: add TUI slash command aliases to Web/Desktop (@badchars)
  • fix: align slash command names across TUI and Web/Desktop (@badchars)
  • fix(copilot): route Claude models through Anthropic Messages API (@badchars)
  • test(vuln): lock the severity scheme + guard the web mirror against divergence (#107) (@badchars)
  • refactor(ui): TUI theme + web CSS map the severity role once per renderer (#107) (@badchars)
  • refactor(vuln): canonical severity color scheme (role) in the shared model — crit+high=red, medium=orange, low=yellow, info=gray (#107) (@badchars)
  • test(triage): reconcileDuplicates promotes a mis-marked critical, idempotent (#108) (@badchars)
  • fix(triage): retroactively reconcile existing duplicate clusters on first read (#108) (@badchars)
  • test(triage): severity-first dedup swaps a mis-marked critical (#108) (@badchars)
  • fix(cloud): dedup fence picks the strongest finding per group as survivor (#108) (@badchars)
  • fix(triage): dedup keeps the higher-severity/better-evidenced finding as primary (#108) (@badchars)
  • refactor(ui): single source of truth for severity colors across all surfaces (#107) (@badchars)
  • fix(sidebar): color vulnerability title by severity so criticals stand out (#106) (@badchars)
  • feat(inspection): assessment-completion supervisor + resume-after-complete (#104) (@badchars)
  • feat(inspection): escalation-hunt coverage + triage finalize hardening (@badchars)
  • test(replay): constructed-target exploit is stored + verifiable end-to-end (#105) (@badchars)
  • fix(replay): persist constructed-target exploits as retestable requests + verification_token (#105) (@badchars)
  • test(inspection): routeAllSignals acknowledges un-routable signals (#102) (@badchars)
  • test(triage): triaged collapses to pending_fix through the real gate (#101) (@badchars)
  • fix(inspection): acknowledge structurally un-routable Vortex signals (#102) (@badchars)
  • fix(triage): collapse triaged into pending_fix at the write site (#101) (@badchars)
  • feat(tui): color signal status by triage (#98) + collapse MCP Servers by default (@badchars)
  • fix(provider): migrate Anthropic OAuth/subscription model to LanguageModelV3 (#100) (@badchars)
  • fix(provider): align @ai-sdk/* pins to v6-native so token usage is recorded (#99) (@badchars)
  • fix(inspection): cap dispatch fan-out per endpoint-operation (#94) (@badchars)
  • feat(agent): add wstg-api — API discovery + coverage + OWASP API Top-10 (#93) (@badchars)
  • chore(wstg-apit): fix API Testing coverage — recon + BOLA + GraphQL (#92) (@badchars)
  • feat(wstg-clnt): add Reverse Tabnabbing (CLNT-14) + fix stale/pessimistic map (#92) (@badchars)
  • chore(wstg-busl): add Payment Functionality (BUSL-10) to the map (#92) (@badchars)
  • fix(wstg-cryp): revive the cryptography orphan + fix map (#92) (@badchars)
  • chore(wstg-errh): refresh map mechanisms + promote to covered (#92) (@badchars)
  • chore(wstg-inpv): align coverage map with the (already-correct) prompt + tool (#92) (@badchars)
  • feat(wstg-sess): add JWT (SESS-10) + Concurrent Sessions (SESS-11) + map (#92) (@badchars)
  • feat(wstg-athz): first-class OAuth testing (ATHZ-05) + map (#92) (@badchars)
  • feat(wstg-athn): add MFA (ATHN-11) coverage + refresh the map (#92) (@badchars)
  • chore(wstg): give WSTG-IDNT (4.3) ownership to wstg-identity-mgmt (#92) (@badchars)
  • chore(wstg): coverage map covers all 14 CONF items with honest statuses (#92) (@badchars)
  • chore(wstg): consolidate WSTG-INFO (4.1) ownership to wstg-info-gathering + fix titles (#92) (@badchars)
  • fix(server): warn loudly on port conflict instead of silent random-port fallback (#91) (@badchars)
  • feat(triage): code-enforced impact gate — P1 deterministic F/P killer (#90) (@badchars)
  • feat(vortex): SSRF out-of-band probe, confirmed via the #85 OOB server (#89) (@badchars)
  • feat(vuln): human-readable per-session finding id (VULN-001) (@badchars)
  • chore(sdk): regenerate JS client (@badchars)
  • feat(hunter): escalation catalog as a loadable data pack — enterprise-extensible chains (P2) (@badchars)
  • feat(hunter): code-seeded escalation catalog — the frontier starts with the obvious chains (P2) (@badchars)
  • feat(oob): self-hosted OOB interaction server for blind-vuln confirmation (#85) (@badchars)
  • feat(hunter): P1 code-enforced relentless engine — the propose_escalation frontier (@badchars)
  • feat(hunter): code-enforced escalation coverage — auto-trigger per finding, guarantee every vuln is hunted (#84) (@badchars)
  • revert(inspection): remove the sidebar activity feed (#81) — superseded by inline transcript entries (@badchars)
  • feat(inspection): inline navigable dispatch entries in the root transcript (#78 follow-up) (@badchars)
  • feat(inspection): live activity feed in the root session (#81) (@badchars)

Thank you to 1 community contributor:

  • @badchars:
    • feat(inspection): live activity feed in the root session (#81)
    • feat(specialists): document HTTPQL cross-endpoint correlation in shared common prompt (#82)
    • feat(inspection): inline navigable dispatch entries in the root transcript (#78 follow-up)
    • revert(inspection): remove the sidebar activity feed (#81) — superseded by inline transcript entries
    • docs(hunter): expand Correlation Hunter into a Correlation & Escalation Hunter design
    • feat(hunter): escalation & correlation hunter agent — P0 MVP (#83)
    • feat(hunter): code-enforced escalation coverage — auto-trigger per finding, guarantee every vuln is hunted (#84)
    • docs(hunter): add the P1 code-enforced relentless engine (the secret sauce)
    • feat(hunter): P1 code-enforced relentless engine — the propose_escalation frontier
    • feat(oob): self-hosted OOB interaction server for blind-vuln confirmation (#85)
    • feat(hunter): code-seeded escalation catalog — the frontier starts with the obvious chains (P2)
    • feat(hunter): escalation catalog as a loadable data pack — enterprise-extensible chains (P2)
    • chore(sdk): regenerate JS client
    • feat(vuln): human-readable per-session finding id (VULN-001)
    • feat(vortex): detect-once config-class signal format — one signal per host, not per endpoint (#87)
    • feat(vortex): name/type targeting for the injection probe engine (#88 Phase B)
    • feat(vortex): injection probe engine — open-redirect, CRLF, command-injection classes (#88 Phase A)
    • feat(vortex): SSRF out-of-band probe, confirmed via the #85 OOB server (#89)
    • feat(triage): code-enforced impact gate — P1 deterministic F/P killer (#90)
    • fix(server): warn loudly on port conflict instead of silent random-port fallback (#91)
    • chore(wstg): consolidate WSTG-INFO (4.1) ownership to wstg-info-gathering + fix titles (#92)
    • docs(wstg-info): sharpen the info-gathering prompt per the official 4.1 checklist (#92)
    • docs(wstg-conf): rewrite config-deploy prompt to work ALL 14 CONF items in detail (#92)
    • chore(wstg): coverage map covers all 14 CONF items with honest statuses (#92)
    • chore(wstg): give WSTG-IDNT (4.3) ownership to wstg-identity-mgmt (#92)
    • fix(wstg): make wstg-identity-mgmt actually dispatchable (#92)
    • feat(wstg-athn): add MFA (ATHN-11) coverage + refresh the map (#92)
    • feat(wstg-athz): first-class OAuth testing (ATHZ-05) + map (#92)
    • feat(wstg-sess): add JWT (SESS-10) + Concurrent Sessions (SESS-11) + map (#92)
    • chore(wstg-inpv): align coverage map with the (already-correct) prompt + tool (#92)
    • chore(wstg-errh): refresh map mechanisms + promote to covered (#92)
    • fix(wstg-cryp): revive the cryptography orphan + fix map (#92)
    • chore(wstg-busl): add Payment Functionality (BUSL-10) to the map (#92)
    • feat(wstg-busl): Phase-0 app-understanding reasoning scaffold in business-logic (#92)
    • feat(wstg-clnt): add Reverse Tabnabbing (CLNT-14) + fix stale/pessimistic map (#92)
    • chore(wstg-apit): fix API Testing coverage — recon + BOLA + GraphQL (#92)
    • feat(agent): add wstg-api — API discovery + coverage + OWASP API Top-10 (#93)
    • fix(inspection): cap dispatch fan-out per endpoint-operation (#94)
    • chore(domains): license aws/azure/gcp AGPL-3.0-only + mark tier free
    • fix(provider): align @ai-sdk/* pins to v6-native so token usage is recorded (#99)
    • fix(provider): migrate Anthropic OAuth/subscription model to LanguageModelV3 (#100)
    • feat(tui): color signal status by triage (#98) + collapse MCP Servers by default
    • fix(triage): collapse triaged into pending_fix at the write site (#101)
    • fix(inspection): acknowledge structurally un-routable Vortex signals (#102)
    • test(triage): triaged collapses to pending_fix through the real gate (#101)
    • test(inspection): routeAllSignals acknowledges un-routable signals (#102)
    • build(desktop): add Windows MSI + macOS pkg managed-deploy targets (#103)
    • build(desktop): sign-windows accepts base64 pfx secret for CI (#103)
    • ci(desktop): wire Windows + mac-installer signing, collect msi/pkg (#103)
    • docs(desktop): enterprise deployment guide (#103)
    • build(desktop): sign Windows via Azure Trusted Signing dlib (#103)
    • ci(desktop): restore Trusted Signing dlib + pass Azure signing env (#103)
    • docs(desktop): document Azure Trusted Signing setup (#103)
    • fix(replay): persist constructed-target exploits as retestable requests + verification_token (#105)
    • test(replay): constructed-target exploit is stored + verifiable end-to-end (#105)
    • feat(inspection): escalation-hunt coverage + triage finalize hardening
    • feat(inspection): assessment-completion supervisor + resume-after-complete (#104)
    • chore(desktop): track electron-vite renderer entry html
    • fix(sidebar): color vulnerability title by severity so criticals stand out (#106)
    • refactor(ui): single source of truth for severity colors across all surfaces (#107)
    • fix(triage): dedup keeps the higher-severity/better-evidenced finding as primary (#108)
    • fix(cloud): dedup fence picks the strongest finding per group as survivor (#108)
    • test(triage): severity-first dedup swaps a mis-marked critical (#108)
    • fix(triage): retroactively reconcile existing duplicate clusters on first read (#108)
    • test(triage): reconcileDuplicates promotes a mis-marked critical, idempotent (#108)
    • refactor(vuln): canonical severity color scheme (role) in the shared model — crit+high=red, medium=orange, low=yellow, info=gray (#107)
    • refactor(ui): TUI theme + web CSS map the severity role once per renderer (#107)
    • test(vuln): lock the severity scheme + guard the web mirror against divergence (#107)
    • fix(copilot): route Claude models through Anthropic Messages API
    • docs: complete i18n overhaul — 9 locales, content rewrites, section cleanup
    • fix(docs): remove duplicate Badge imports in zh locale MDX files
    • fix(docs): increase Node.js heap size for Astro build
    • docs(tools): add security hooks and probes pages, rewrite tools overview
    • docs: remove Slash Commands section — content lives in Usage > TUI
    • docs: remove exploitation section across all 9 locales
    • docs: remove Resources sidebar section, link changelog to GitHub Releases
    • docs: consolidate MCP section into features, remove 54 orphan files
    • docs: consolidate CLI Reference into Usage > CLI, remove 36 orphan files
    • docs: consolidate Hooks and Permissions into Configuration section
    • docs: merge file-operations, bash, memory into single Built-in Tools page
    • docs: merge dynamic-loading into built-in-tools, move Features before Providers in sidebar
    • docs: move AI Providers into Configuration section, remove from sidebar
    • docs: update provider docs from code — 25+ providers, accurate config schema
    • docs: consolidate permissions, hooks, providers into single pages
    • fix: align slash command names across TUI and Web/Desktop
    • fix: add TUI slash command aliases to Web/Desktop
    • feat: add /pin, /timestamps, /web commands to Web/Desktop
    • docs: CHANGELOG [2.0.0] — 1,284 commits since v1.1.16
    • fix: skip AI SDK reasoning "not found" soft errors instead of throwing
    • fix: inject credential context into LLM Navigator so smart models can log in
    • feat: /poster command generates shareable OG card, tweet, and blog post from findings
    • fix: prevent false chain auto-resume loops and duplicate watchdog notices
    • fix: auto-expand scope for cross-domain API traffic from in-scope pages
    • fix: support Windows non-bash shells (PowerShell, cmd.exe) in bash tool
    • docs: add Agentic Pipelines, AI Models pages + GitLab CI deploy + cross-linking
    • docs: add external links to all provider and model names
    • feat(plugin): add escalation-hunter to AgentSpec role union
    • feat(cyberstrike): add cloud escalation patterns to catalog
    • feat(aws): add agentic assessment pipeline and escalation-hunter
    • feat(azure): add escalation-hunter agent and prompt
    • feat(gcp): add agentic assessment pipeline and escalation-hunter
    • fix(poster): lazy-load fonts to prevent $bunfs crash in compiled binary
    • chore(sdk): regenerate SDK types
    • fix: handle corrupt database and malformed JSON responses gracefully
    • fix(scope): block telemetry/APM domains from scope auto-expansion
    • feat(data-collector): classify telemetry/APM endpoints as noise
    • fix(hackbrowser): fix double-hash URL corruption in spawned browsers
    • fix: prevent stack overflow on deeply nested messages in long sessions
    • ci(gitlab): add release stage with Generic Package Registry uploads
    • ci(gitlab): tag-based release trigger
    • fix(ci): use absolute paths in release archive packaging
    • fix(build): minify binary + smol GC to reduce Windows OOM crashes
    • fix(ci): install npm in publish-gitlab job + add curl retry for release uploads
    • fix(ci): use --retry-all-errors for release uploads (connection reset)
    • fix(hackbrowser): add Windows and Linux browser discovery paths
    • fix(release): include extension, web UI and skills in release archives
    • fix(hackbrowser): await cap-state restore before webRequest handlers
    • fix(provider): enable token usage tracking for GitHub Copilot
    • feat(vortex): expand security rules from 58 to 100+
    • feat(vortex): add tech playbooks, error intelligence, and agent capabilities
    • feat(tool): add built-in CVE lookup tool (OSV + NVD)
    • feat(tool): add technique tools — IIS tilde, GraphQL introspection, HTTP smuggling
    • feat(prompt): update agent prompts with new tools and technique tools
    • docs(vortex): update documentation with expanded rule coverage
    • feat(re): add reverse engineering domain package with REA MCP pipeline
    • feat(plugin): register @cyberstrike-io/re as default domain
    • feat(prompt): add SCALPEL (re-agent) to orchestrator agent roster
    • feat(re): upgrade specialist prompts with real REA MCP tool names
    • fix(re): remove non-existent snapshot tool references from re-debug prompt
    • feat(web): add hypothesis generation phase to specialist agents
    • fix(desktop): rebrand opencode references to cyberstrike
    • fix(desktop): rebrand remaining opencode references in build/i18n/tests
    • fix(desktop): rename opencode store names, types, and internal variables to cyberstrike/cli
    • fix: rebrand opencode references to cyberstrike across sdk/app/protocol/client/server/plugin/i18n
    • fix: remove accidentally committed .tgz pack files and gitignore them
    • fix: rebrand opencode references to cyberstrike across core/ui/session-ui/llm/protocol/server/schema/httpapi-codegen/desktop/vortex/sdk
    • fix: rebrand opencode references in markdown docs and openapi.json
    • fix: rebrand vendored client tgz and add CyberStrikeClient type export
    • fix: break turbo build cycle for re package and default to single-platform local builds
    • fix: replace non-existent mcp__rea__* tools with real CLI tools in RE domain agents
    • Revert "fix: replace non-existent mcp__rea__* tools with real CLI tools in RE domain agents"
    • feat: add rea-agents (Reverse Engineer Anything) MCP server to monorepo
    • fix: wire RE domain MCP to local rea package and exclude from Bun workspace
    • feat(vortex): expand server-banner rule — wider header set + version-aware severity
    • test(vortex): assert probe count against catalog length, not a magic number
    • feat(hackbrowser): proactive surface-reveal sweep in the capture extension
    • feat(hackbrowser): proceed through non-destructive native confirm() to discover gated endpoints
    • docs: add module & package architecture doc
    • refactor(web): route all live signal production to Vortex, off the CS fabric (#15)
    • refactor(web): delete the retired CS signal fabric — Vortex is the single producer (#15)
    • refactor(web): drop dead vars left after the CS-fabric rewiring (#15)
    • feat(db): drop orphan web_signal/web_canary tables (#15)
    • test(web): driver POST response carries the main co-drive model
    • test(web): clean-page fixtures set every required security header
    • feat(vortex): declarative corpus rules + group quantifiers — access.ts is now data (#16)
    • feat(vortex): migrate header/cookie rules to declarative data (#16)
    • test(vortex): characterization tests for the advanced corpus rules
    • feat(web): server-side observe dedup — skip redundant SPA re-observations (#18)
    • build: install @opentui/core platform packages by name for cross-compile (#112)
    • fix(postinstall): drop child_process/PowerShell PATH edit — trips npm malware review (#174)
    • Revert "fix(postinstall): drop child_process/PowerShell PATH edit — trips npm malware review (#174)"
    • test(build): skip bundling hackbrowser extension — isolate npm automated-review trigger
    • Revert "test(build): skip bundling hackbrowser extension — isolate npm automated-review trigger"
    • test(publish): skip bundling skill corpus in main package — isolate npm review trigger
    • feat(skill): externalize skill corpus — fetch from GitHub Releases at runtime, not bundled in npm (#114)
    • feat(npm): drop postinstall from published package — clean install, no npm v12 script warning (#114)
    • feat(skill): show branded first-run skill-download progress (#114)
    • feat(release): auto-publish GitHub release (binaries + skills) for canary/beta too (#114)
    • feat(hackbrowser): auto-provision Chrome for Testing on first run
    • feat(hackbrowser): ensure Chrome for Testing before spawning the orchestrator
    • feat(uninstall): remove the Chrome for Testing cache on uninstall
    • feat(skill): load the bundled corpus beside the binary (offline, all OS)
    • ci(forgejo): self-hosted release pipeline on the home runner
    • ci(forgejo): drop github->Forgejo url rewrite before bun install
    • ci(forgejo): point github: deps at real github.com (GITHUB_API_URL override)
    • ci(forgejo): publish with PUBLISH_TOKEN + Basic auth for the package registry
    • ci(forgejo): add concurrency guard to the release workflow
    • ci(forgejo): attach archives as release assets, not the package registry
    • fix(app): register Scroller before AutoScroller in sortable plugin lists
    • fix(app): open directory picker when New session has no project
    • fix(app): guard composer store reads so closing a session no longer crashes
    • fix(app): guard Bolt dialog store reads against empty state
    • chore(app): remove dead titlebar-v2 and settings-agents placeholders
    • fix(ui): use the real brand logo for the in-app mark and favicons
    • fix(app): guard session store iteration in deleteSession
    • chore(app): align remaining store reads with the guarded pattern
    • chore(app): remove dead cyberstrike-panels
    • fix(app): empty sessions column points to opening a project when none can be created
    • fix(app): show one slash row per command, keep aliases searchable
    • fix(tui): use singular model/agent/mcp slash primaries to match the app
    • fix(app): new-session button opens the server workdir instead of an empty picker
    • chore(ui): remove dead-on-arrival v2 files with no importers
    • refactor(app): make newLayoutDesigns a constant true (#10)
    • refactor(app): drop the dead legacy home/target-session routes (#10)
    • fix(web): register the working directory as a project on startup
    • feat(skill): fetch the corpus from a stable release URL, not per-version
    • fix(web): AI-Navigator plans with the session's active model, not Provider.defaultModel()
    • fix(publish): skip already-published npm packages instead of aborting the whole publish
    • fix(ci): embed the freshly-built web UI into the compiled binary (build-cli)
    • fix(build): bundle the web UI beside the binary in the release archive
    • fix(build): also bundle the hackbrowser extension inside bin/ for binary-only installs
    • fix(web): /web/driver reports the session's active model, not Provider.defaultModel()
    • fix(web): hackbrowser crawls plan with the UI-selected model, not the catalog default
    • fix(app): send the selected model when launching a hackbrowser crawl
    • feat(provider): persist the selected model server-side so every surface resolves it
    • fix(app): persist the model selection to the server on every change
    • refactor(tui): align command ids with the app's canonical namespace
    • feat(sdk): shared command catalog — single source of truth for UI action commands
    • fix(app): call security actions through the typed SDK, like the TUI (drop as-any)
    • feat(app): real Methodology and Report dialogs, replacing toast-only stubs
    • fix(app): gate hackbrowser-stop and queue pause/resume by live status, like the TUI
    • refactor: TUI and app registries consume the shared command catalog
    • fix(sdk): import the command catalog from a pure subpath, not the barrel
    • ci(publish): reconcile and push against origin/main for the main-based stable release
    • docs(changelog): rewrite the 2.0.0 entry — detailed headerless bullets, no paid-layer references
    • docs: add long-form 2.0.0 release notes (headerless)
    • merge: adopt the 2.0.0 release line as main (take dev wholesale; main was a stale pre-2.0 line)

Don't miss a new CyberStrike release

NewReleases is sending notifications on new releases.