Conversation
AI Service (4.1, 4.9)
- Provider abstraction: Ollama (local), OpenAI, Anthropic via httpx
- Data sanitization: IPs/hostnames replaced with [IP-N]/[HOST-N] tokens
before cloud API calls, restored after — zero PII leakage
- ai_analyses DB model + Alembic migration (ai_analyses, chains, chain_runs)
- GET/PATCH /api/ai/settings — provider, model, API key, sanitize toggle
- POST /api/ai/test — connection smoke test
- POST /api/ai/analyse — scan | finding | host | project context types
- GET /api/ai/analyses — stored analysis history per project
AI Features (4.2, 4.3, 4.4)
- Scans page: AI Analyse panel on completed scans
- Findings page: Analyse Finding + False Positive Check buttons in detail panel
- AI Page (/ai): Settings / Analyse / History tabs
AI Report Generation (4.7)
- Reports page: AI Report Generation card — executive summary + tech details
- POST /api/ai/analyse with context_type=project generates full pentest report
Chain Engine (4.5, 4.6)
- Sequential workflow runner: scan → scan → notify steps
- chains + chain_runs DB models
- POST/GET/PATCH/DELETE /api/chains
- POST /api/chains/{id}/run — background execution with step-level results
- GET /api/chains/templates — 4 built-in chains:
Quick Recon (Nmap → Gobuster)
Full Web Audit (Nikto → Nuclei → SQLMap)
Network Sweep (Nmap → SearchSploit)
Credential Attack (Hydra SSH + FTP)
- POST /api/chains/from-template — instantiate chain from template
- Chains Page (/chains): Templates tab + My Chains tab with run history
Obsidian Auto-Sync (4.8)
- ObsidianSyncService writes Markdown directly to vault directory on disk
- Hook in ScanService._persist_result — auto-syncs after each scan if enabled
- POST /api/projects/{id}/export/obsidian/sync-to-disk — manual full sync
- Settings: obsidian_vault_path + obsidian_auto_sync toggle (with PRO badge)
Frontend
- New /ai and /chains routes + sidebar nav items (BrainCircuit, Workflow icons)
- AIAnalysis, AISettings, Chain, ChainRun types added to types/index.ts
- PageId extended with 'ai' | 'chains'
- Define manifest.json JSON Schema with permissions, UI slots, hooks, settings - Add Plugin SQLAlchemy model + Alembic migration - Plugin manager service: install from zip/dir, load backend modules, hook dispatch, settings management, uninstall - REST routes: list, install, uninstall, toggle, grant permissions, update settings - Register plugin router and startup loader in main.py - Add Plugin/PluginManifest TypeScript types and plugins PageId
- PluginSlot component: dynamically loads plugin frontend bundles and renders them into named slots (scan_result_panel, dashboard_widget, etc.) - Plugin Zustand store: fetch, install, uninstall, toggle, grant permissions, update settings - Plugins management page with drag-and-drop .zeronyx-plugin install, dev-mode directory install, per-plugin settings panel - Permission grant dialog with risk-level badges (low/medium/high) and warning for high-risk permission combinations - Plugins nav item added to Sidebar - pluginsApi added to REST client - App.tsx route /plugins registered
Python SDK base classes: ZeroNyxPlugin, PluginContext, PluginApiClient with full docstrings for all hooks and API methods. PLUGIN_SDK.md: complete developer reference covering manifest schema, permissions table with risk levels, UI slots, backend hooks, packaging, and quick-start code examples. Example plugins: - whois-lookup: queries WHOIS on target add, saves finding (no deps) - cve-search: queries NVD API after scans, creates CVE findings with CVSS - export-csv: exports findings/hosts/credentials to CSV via toolbar action
…keletons - Global keyboard shortcuts: Ctrl+W (close tab), Ctrl+T (new scan), Ctrl+, (settings), Ctrl+1-9 (tab by index), Alt+←/→ (tab navigation) - Keyboard shortcuts reference modal on '?' key - Lightweight toast notification system (no external deps) with success/error/info variants and auto-dismiss - EmptyState component for consistent empty page states - Skeleton components (Skeleton, TableRowSkeleton, CardSkeleton) for loading - StatusBar updated to v0.5.0 with ? shortcut hint - Toaster and KeyboardShortcutsModal mounted globally in AppShell
- Add @tanstack/react-virtual for virtualized list rendering - VirtualList and VirtualTableBody reusable components - History page: ScanTable auto-switches to virtualized rendering when filtered items exceed 100 rows (maxHeight 60vh scroll container) - ScanRow wrapped in React.memo to prevent unnecessary re-renders - Virtual rendering path maintains a 10-row overscan for smooth scrolling
- updater.ts: electron-updater integration with full event lifecycle (checking, available, downloading, downloaded, error) - Auto-check 8s after startup, no update nag in dev mode - Native dialog on update ready: restart now or defer - IPC bridge exposed via preload: checkForUpdates, installUpdate, and all event listeners (onAvailable, onProgress, onDownloaded, etc.) - UpdateBanner component shows download progress in StatusBar - UpdateSection in Settings → About with manual check button - electron-builder publish config: GitHub releases (RainyRoot/zeronyx) - Bump package.json version to 0.5.0
…, UpgradeButton component
… one-click install
…on, and docs page
… Reddit, Twitter/X, HN, LinkedIn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.