Commit Graph
205 Commits
Author SHA1 Message Date
0xallam 6d769f4d97 chore: Bump strix version to 0.6.0 2026-01-12 09:19:19 -08:00
0xallam f3b48e97fb feat: modernize TUI status bar with sweep animation
- Replace braille spinner with ping-pong sweep animation using colored squares
- Add smooth gradient fade with 8 color steps from dim to bright green
- Modernize keymap styling: keys in white, actions in dim, separated by ·
- Move "esc stop" to left side next to animation
- Change ctrl-c to ctrl-q for quit
- Simplify "Initializing Agent" to just "Initializing"
- Remove italic styling from status text
- Waiting state shows only "Send message to resume" hint
- Remove unused action verbs and related dead code
2026-01-11 23:54:24 -08:00
0xallam b95864ab9e fix: correct GitHub repository URL in README 2026-01-10 15:53:10 -08:00
0xallamandAhmed Allam 88489aeafb docs: document config persistence in README 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 427e7cf960 fix: allow clearing saved config by setting empty env var 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 75b9e13d1a fix: apply saved config at module level before strix imports 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 67c89077c3 fix: handle chmod failure on Windows gracefully 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 8ec139f207 refactor: add explicit STRIX_IMAGE validation 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 873c0b08ba refactor: remove unused LLMRequestQueue constructor params 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 2288c20eae refactor: replace type ignores with inline fallbacks 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 87e3486116 refactor: use Config.get() in validate_environment() 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 3f4691aa19 fix: set restrictive permissions on config file 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 9ac8ebc001 refactor: remove STRIX_IMAGE constant, use Config.get() instead 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam 6ef491ea50 fix: remove default for strix_llm, keep it required 2026-01-10 15:49:03 -08:00
0xallamandAhmed Allam e586cd7f61 feat: add centralized Config class with auto-save to ~/.strix/cli-config.json
- Add Config class with all env var defaults in one place
- Auto-load saved config on startup (env vars take precedence)
- Auto-save config after successful LLM warm-up
- Replace scattered os.getenv() calls with Config.get()
2026-01-10 15:49:03 -08:00
0xallam 21e8e37a3e fix: add missing 'low' value to reasoning effort options 2026-01-09 20:17:46 -08:00
Ahmed Allamandgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> 8b65094a24 Update args in strix/interface/main.py
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-01-09 20:00:01 -08:00
66518c8a0e feat: add STRIX_REASONING_EFFORT env var to control thinking effort
- Add configurable reasoning effort via environment variable
- Default to "high", but use "medium" for quick scan mode
- Document in README and interface error panel

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:00:01 -08:00
0xallam 88a02e539a docs: reformat recommended models as bulleted list 2026-01-09 16:49:16 -08:00
0xallam 00f9c62d8e docs: add Gemini 3 Pro Preview to recommended models 2026-01-09 16:47:33 -08:00
0xallamandAhmed Allam 2608166895 fix: restrict result type check to dict or str 2026-01-09 16:44:05 -08:00
0xallamandAhmed Allam 66de693618 fix: handle string results in tool renderers
Previously, tool renderers assumed result was always a dict and would
crash with AttributeError when result was a string (e.g., error messages).
Now all renderers properly check for string results and display them.
2026-01-09 16:44:05 -08:00
Daniel SangorrinandAhmed Allam 82cff89bb9 fix: add thinking blocks 2026-01-09 15:40:21 -08:00
Ahmed AllamandGitHub c6e984ed6d Remove title from README 2026-01-10 02:35:20 +04:00
0xallamandAhmed Allam dc26a440b5 Simplify stats panel display format 2026-01-09 14:25:00 -08:00
0xallamandAhmed Allam 7aa9a771b1 Modernize vulnerability detail dialog styling 2026-01-09 14:25:00 -08:00
0xallam f1820b76fc Add PostHog integration for analytics and error debugging 2026-01-09 14:24:04 -08:00
0xallamandAhmed Allam 4682657644 chore(deps): bump pypdf from 6.4.0 to 6.6.0
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.4.0 to 6.6.0.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.4.0...6.6.0)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.6.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 12:28:41 -08:00
0xallam 5ba69a2800 fix: reduce spacing between consecutive tool calls in TUI 2026-01-08 17:53:16 -08:00
0xallamandAhmed Allam ef4068d376 fix: use fixed per-request timeout for tool server health checks
The previous implementation divided total timeout by retries, making the
timeout behavior confusing and the actual wait time unpredictable. Now
uses a consistent 5-second timeout per request for clearer semantics.
2026-01-08 17:41:44 -08:00
0xallamandAhmed Allam 916a9000af feat: add tool server health check and show error details in CLI
- Add _wait_for_tool_server_health() to verify tool server is responding after init
- Show error details in CLI mode when penetration test fails
- Simplify error message (remove technical URL details)
2026-01-08 17:41:44 -08:00
0xallamandAhmed Allam 3a1820a1ff feat: add tool server health check during sandbox initialization
- Add _wait_for_tool_server_health() method with retry logic and exponential backoff
- Check tool server /health endpoint after container initialization
- Add async _verify_tool_server_health() for health check when reusing containers
- Raise SandboxInitializationError with helpful message if tool server is not responding
- Add TOOL_SERVER_HEALTH_TIMEOUT and TOOL_SERVER_HEALTH_RETRIES constants
2026-01-08 17:41:44 -08:00
0xallamandAhmed Allam 3f19ab1188 fix: add timeout handling for Docker operations and improve error messages
- Add SandboxInitializationError exception for sandbox/Docker failures
- Add 60-second timeout to Docker client initialization
- Add _exec_run_with_timeout() method using ThreadPoolExecutor for exec_run calls
- Catch ConnectionError and Timeout exceptions from requests library
- Add _handle_sandbox_error() and _handle_llm_error() methods in base_agent.py
- Handle sandbox_error_details tool in TUI for displaying errors
- Increase TUI truncation limits for better error visibility
- Update all Docker error messages with helpful hint:
  'Please ensure Docker Desktop is installed and running, and try running strix again.'
2026-01-08 17:41:44 -08:00
0xallamandAhmed Allam 6ecd14741e Remove --run-name CLI argument 2026-01-08 15:16:25 -08:00
0xallamandAhmed Allam 2c7ab780fa Add background styling to finish and reporting tool renderers
- Wrap finish_scan and create_vulnerability_report tool output in Padding with dark grey background (#141414)
- Refactor TUI rendering to support heterogeneous renderables (Text, Padding, Group) instead of just Text
- Update _render_streaming_content and _render_tool_content_simple to return Any renderable type
- Handle interrupted messages by composing with Group instead of appending to Text
2026-01-08 15:09:10 -08:00
0xallamandAhmed Allam ae9719e648 fix(tui): hide cost in stats panel when zero 2026-01-08 12:21:18 -08:00
0xallamandAhmed Allam 3ec2609f6d fix(tui): rename 'Tokens' to 'Total Tokens' in stats display 2026-01-08 12:21:18 -08:00
0xallamandAhmed Allam 4a2379e5ac fix(tui): compare vulnerability content instead of just count for updates 2026-01-08 12:21:18 -08:00
0xallamandAhmed Allam 0deec6da1c fix(tui): use consistent severity colors between vulnerability components 2026-01-08 12:21:18 -08:00
0xallamandAhmed Allam 532a15127f feat(tui): add vulnerability detail dialog with markdown copy support
- Add VulnerabilityDetailScreen modal with full vulnerability details
- Add Copy button that exports report as markdown to clipboard
- Add VulnerabilitiesPanel in sidebar showing found vulnerabilities
- Add clickable VulnerabilityItem widgets with severity-colored dots
- ESC key closes modal dialogs
- Remove emojis from TUI stats panel for cleaner display
- Add build_tui_stats_text() for minimal TUI-specific stats
2026-01-08 12:21:18 -08:00
0xallam 91e47f74f9 fix(llm): suppress RuntimeWarnings for unawaited coroutines from asyncio 2026-01-07 20:09:46 -08:00
0xallam 5ec718c460 refactor(cli): remove final statistics display from CLI output 2026-01-07 19:53:40 -08:00
0xallam 18ce29ab25 feat(reporting): improve vulnerability display and reporting format 2026-01-07 19:51:41 -08:00
0xallamandAhmed Allam 8fa934e5dc chore: increase truncation limit to 8000 chars 2026-01-07 19:32:45 -08:00
0xallamandAhmed Allam b687d7a188 feat(reporting): add LLM-based vulnerability deduplication
- Add dedupe.py with XML-based LLM deduplication using direct litellm calls
- Integrate deduplication check in create_vulnerability_report tool
- Add get_existing_vulnerabilities() method to tracer for fetching reports
- Update schema and system prompt with deduplication guidelines
2026-01-07 19:32:45 -08:00
0xallamandAhmed Allam 451fc34e8b chore(deps): bump urllib3 from 2.6.0 to 2.6.3
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.0 to 2.6.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.0...2.6.3)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 19:25:31 -08:00
0xallamandAhmed Allam 1993b97f63 feat(reporting): enhance vulnerability reporting with detailed fields and CVSS calculation 2026-01-07 17:50:32 -08:00
0xallamandAhmed Allam f2138c87f8 feat: enable container access to host localhost services
Rewrite localhost/127.x.x.x/0.0.0.0 target URLs to use host.docker.internal,
allowing the container to reach services running on the host machine.

- Add extra_hosts mapping for host.docker.internal on Linux
- Add HOST_GATEWAY env var to container
- Add rewrite_localhost_targets() to transform localhost URLs
- Support full 127.0.0.0/8 loopback range and IPv6 ::1
2026-01-07 12:04:21 -08:00
0xallam 96a7b00d6c Refactor(skills): rename prompt modules to skills and update documentation 2026-01-06 17:50:15 -08:00
0xallamandAhmed Allam 7303e0accf refactor(tui): remove flawed streaming update throttling
The length-based hash was prone to collisions and could miss
content changes. Simplified to always update during streaming.
2026-01-06 16:44:22 -08:00