Skip to content

Dev into main again - #6

Merged
RainyRoot merged 20 commits into
mainfrom
dev
Mar 29, 2026
Merged

Dev into main again#6
RainyRoot merged 20 commits into
mainfrom
dev

Conversation

@RainyRoot

Copy link
Copy Markdown
Owner

No description provided.

RainyRoot and others added 20 commits March 28, 2026 16:13
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
@RainyRoot
RainyRoot merged commit f49cb2b into main Mar 29, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant