-
Notifications
You must be signed in to change notification settings - Fork 1
CHANGELOG
All notable changes to nself-admin will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
RCE via shell injection fixed — the deployment environments API route (
src/app/api/deployment/environments/route.ts) passed user-supplied environment names and actions into a shell string viaexec(). An attacker with an authenticated admin session could inject shell metacharacters to execute arbitrary OS commands on the machine running nself-admin. The route now usesexecFile()with a structured argv array, a Zod action enum (create | diff | delete | list),IDENTIFIER_PATTERNvalidation (rejects all non-alphanumeric-or-interior-hyphen input), aKNOWN_TEMPLATESallowlist, avalidateServiceName()guard, and a'--'end-of-options separator before user-controlled positionals. Auth check runs before any processing; GET returns 405; all operations are appended to the audit log. Severity: Critical. Chain ID: a83c99d6. Advisory:.github/SECURITY-ADVISORIES/2026-05-15-rce-and-secrets.md.
Patch release. CLI ↔ Admin lockstep at v1.1.2. P101 nClaw groundwork carry-through plus security hardening and doc-truth corrections.
- Plugin inventory views updated to reflect 29 free / 112 paid plugin counts (per SPORT F03/F04 regeneration).
- Doctor panel surfaces new baseline rules from nself-audit (10 rules) and the
--deepsecurity-always-free integration. - ADR-003 reference page: admin Next.js permanent exception (no migration to Tauri 2).
- Plugin signing verification UI now uses canonical SHA-256 of tarball bytes. Matches CLI and Worker.
- Doctor panel correctly reports AGPL/SSPL gate as fail-mode active (was previously displayed as warn-only).
- License management UI: revoke action now confirms server-side invalidation. Stale-key edge case eliminated.
- Build configuration: no remaining TODO / stub / unimplemented placeholders in production paths.
- Doctor
--deepruns without a license in admin's panel. Critical findings render as red badge with exit-1 indicator. - AGPL/SSPL license gate fail mode reflected in admin's Plugins page status column.
- Plugin count badge: 29 free + 112 paid (was 29 free + 109 paid).
- Version badge: v1.1.2 across all admin pages (CLI lockstep).
- README version bumped to v1.1.2.
- Multi-user admin UI surfaces remain gated behind
NSELF_ADMIN_MULTIUSER=false. v1.2.0 GA target unchanged.
Minor release. CLI ↔ Admin lockstep at v1.1.0. ɳSentry bundle, ClawDE bundle buyable (price drop to $0.99/mo), ɳFamily ratified, nCloud waitlist mode. UI state coverage enforcement and mock-data sweep.
-
Bundle Management pages (
/bundles/*) (S13.T20): install, uninstall, and status views for all 7 bundles (6 paid + ɳTask free). Delegates tonself bundle install/uninstall/status <name>. -
ɳSentry dashboard page (
/sentry) (S10.T22): real-time health across all 13 ɳSentry plugins (uptime, incidents, SLO compliance, synthetic results, RUM metrics). Requires ɳSentry bundle license. -
ɳFamily status page (
/family) (S11.T11): CSAM scan health, parental-consent status, ɳFamily plugin install state. Requires ɳFamily bundle license. -
nCloud provisioning page (
/cloud) (S12.T09): waitlist enrollment UI and provisioning status for nCloud managed deployments. -
Multi-Tenant Convention Wall indicator in doctor panel (S12.T10): surfaces PERM-RLS-01 violations from
nself doctor --deep. - License management (S13.T20): ClawDE bundle now has a buyable license flow — purchase link to nself.org/products/clawde, license-set UI, plugin install gate.
- License tier badge (S10.T22): updated to show ɳSentry as a distinct purchasable bundle tier.
-
ui-state-coverage ESLint rule (S05.T01) wired into
pnpm lint: every page component must render all 7 UI states (loading, empty, error, no-permission, partial-data, success, edge) or declare an explicit waiver comment.
- ClawDE bundle marketplace price (S05.T08): now displayed as $0.99/mo or $9.99/yr across all bundle pages (was $1.99/mo). Aligns with pricing canon update of 2026-04-22.
-
Bundle list page (
/bundles): now shows 7 total bundles (ɳClaw, ɳChat, ɳTV, ɳFamily, ClawDE, ɳSentry, ɳTask-free). - Minimum CLI version badge: v1.1.0 required for ɳSentry + ɳFamily + nCloud features.
- Plugin count displayed across all admin pages: 29 free + 109 paid (per F03/F04 canonical inventories).
-
Mock data swept from production paths (S05.T02..T07):
/dashboard,/services,/plugins,/bundles,/sentry,/family,/cloudpages now read live data from Hasura + CLI subprocess; mock fallbacks isolated to test fixtures only.
- Single-operator RBAC posture (P94 S73) preserved: multi-user surfaces (
/users,/tenant/*,/auth/roles) remain hidden behindNSELF_ADMIN_MULTIUSER=falsedefault; v1.2.0 target for GA.
P99 Sprints 3.1–3.3 patch release (CLI ↔ Admin lockstep at v1.0.18). Pairs with plugins-pro v1.1.6. Filled by Sprint 3.4 (this sprint) — concrete bullets land when sprints 3.1/3.2/3.3 complete.
P99 Sprints 2.1–2.5 patch release (CLI ↔ Admin lockstep at v1.0.17). Filled by Sprint 2.6 — bullets land when sprints 2.1–2.5 complete.
P99 reliability + data-integrity + security-lockdown patch release. Bundles unreleased v1.0.14 + v1.0.15 work plus full P99 Sprints 1.1–1.7. CLI ↔ Admin lockstep maintained at v1.0.16. Plugins-pro paired patch is v1.1.4.
User-action items (T01–T03, T18, T04+T05) from the Sprint 1.8 prep are NOT in this release; they land in the next patch.
- Blue-green/canary deploy state file with atomic write + 0600 perms (1.1.T06+T06-FIX).
- mux audit queue + 1s flusher (1.2.T05).
-
Stripe
Idempotency-Keyshared helper (1.2.T06+T07). -
Hasura row filters on
np_*tables (1.3.T01+T02). Row-level isolation enforced across the fullnp_*surface; doctor verifies coverage. - SSRF guard shared module (1.3.T05).
- Ollama installer SHA pinning + verify pipeline (1.3.T08).
-
Loki retention extended to 30d (1.6.T11).
cli/internal/compose/monitoring/loki.goDefaultLokiConfig.RetentionPeriodnow720h(was168h).
-
mux Gmail timeout retry telemetry split (1.2.T01). Retry counter decomposed into
attempt,outcome,latency_ms. -
HTTP timeout sweep — 17 CLI sites migrated to scoped
httptimeout/httpclient(1.4 series);forbidigolint blocks new barehttp.Client{}usage. - GitHub Actions pinned to commit SHAs across 17 workflows (1.5.T09 + T13). Node runners moved 20 → 22 in lockstep.
- homebrew formula audit hardening (1.5.T16).
- license-gate workflow updated for AGPL ua-parser-js → v1 MIT (1.5.T17+T17b).
- Version bumped to v1.0.16 to maintain lockstep with CLI v1.0.16 (per ɳSelf CLI ↔ Admin version-lockstep policy).
-
mux
SafeGopanic guards (1.1.T01). - Cron stagger jitter (0–60s) (1.1.T02). Prevents thundering-herd on the top of the hour.
-
nginx healthcheck endpoint returns 200 on
/healthzconsistently across reload cycles (1.1.T03). - Identifier sanitizer error returns (1.1.T04). No more silent truncation.
- Plugin scaffold panic→error (1.1.T05).
- mux Gmail timeout retry with telemetry split (1.2.T01).
- claw DLQ + tiered retry (5m / 30m / 2h / 24h) (1.2.T02).
- Telegram webhook ingress validation (1.2.T03).
-
mux nil
AccountEmail→ DLQ guard (1.2.T04). Nil-account events now route to DLQ instead of nil-deref panic. - Admin yaml syntax fix (1.5.T08).
- GH Actions failures: Node 20 → 22 across 17 workflows (1.5.T13).
- Web/org CSP smoke test tsx loader (1.5.T14) and 4 web/org check workflows (1.5.T15).
- ai SHA-256 audit hashing (1.3.T04). All ai-plugin audit log entries hashed with SHA-256 (was MD5).
- admin CSP nonce + httpOnly session cookies (1.3.T06+T07). Inline scripts gated by per-request nonce; session cookie set httpOnly + Secure + SameSite=Strict.
- mux attachment path-traversal hardening (1.3.T10).
-
License pubkey ldflag pin (SEC-10) (1.3.T11).
LICENSE_PUBLIC_KEY_OVERRIDEenv var removed. - Fuzz test on identifier sanitizer (1.3.T03). 1M+ iterations against the sanitizer regex.
- plugins-pro CI checkout fixes for ntask iOS + sibling workflows (1.5.T07+T07b).
- clawde AI action SHA-pinned replacement (1.5.T11).
- nchat tests env fix (1.5.T09), nclaw + ntv plugins-pro PAT (1.5.T10).
- plugins-pro auth-enterprise + byok import path fixes (1.5.T06b/c).
- HTTP timeout sweep — 76 plugins-pro sites migrated (1.4 series, plugins-pro side; total ecosystem footprint 93 sites).
-
Pricing/brand sweep: canonical
$0.99 / $3.99 / $39.99across 5 READMEs +cli/README+ 11 brand-voice fixes;nclawindigo → sky-500 (18 occurrences);nMedia→nTV;ClawDE+→ClawDE. - DR + ops: Hasura migration runbook now ACTIONABLE (PostgREST primary, RTO < 4h); Stripe failover (Lemon Squeezy) PREP runbook published.
-
Doctrine:
nchat install.sh15docker composeinvocations →nselfCLI (nSelf-First); LICENSING_SPEC doc-drift cleanup queued.
- v1.0.14 + v1.0.15 work was never tagged separately; both batches are folded into v1.0.16.
- CLI ships at v1.0.16 in lockstep per CLI ↔ Admin lockstep hard rule.
- Plugins-pro ships v1.1.4 alongside.
-
Auth middleware on all 260 routes (S121):
requireAuthmiddleware enforced across every App Router page and API route. Unauthenticated requests return 401 and redirect to/login. - CSRF protection added to all 260 routes as part of S121 security lockdown.
-
Secret redaction in
/api/env/read:HASURA_GRAPHQL_ADMIN_SECRET,NSELF_PLUGIN_LICENSE_KEY, and other sensitive vars are masked in the API response. Operators see***in the UI; plaintext never leaves the server. -
Wizard write guards:
/buildwizard routes now verify auth before accepting any POST; unauthenticated wizard writes return 401. -
Default binding to 127.0.0.1: Docker Compose production config now binds admin port 3021 to
127.0.0.1only. External exposure requires the new--expose-networkflag (default: off). -
--expose-networkflag: explicit opt-in to bind admin on0.0.0.0for LAN/remote-admin scenarios. - Gitleaks credential scanner added to CI (S102-T01+T02): all PRs and pushes now run gitleaks to prevent accidental secret commits.
-
Dockerfile version sync (S211-T07b):
NSELF_VERSIONbuild arg andADMIN_VERSIONenv var in Dockerfile updated to1.0.11; stale1.0.10references removed. -
CLI version constant (S211-T06):
src/lib/cli-version.tsCLI_VERSIONbumped to1.0.11to match CLI lockstep. -
react-markdownlockfile (S211-T07):pnpm-lock.yamlregenerated to includereact-markdown@^9.0.1; specifier mismatch resolved. -
dompurifylockfile specifier (S211-T07b):pnpm-lock.yamlspecifier fordompurifysynced. -
TypeScript errors (S211-T07b): resolved
TS2552andTS2307type errors across build. -
NODE_ENVreadonly (S211-T07b):NODE_ENVtyped asreadonlyin TS config to prevent accidental mutation. -
eslint-plugin-react-hooks(S211-T07b): upgraded to resolvereact-hooks/rules-of-hooksCI failures. -
ActivityTimelineuseMemo (S211-T07b): wrapped expensive computations inuseMemoto fix lint exhaustive-deps warning. -
Dead code removal (S211-T07b): deleted
page.old.tsxand excluded remaining dead-code files from ESLint scope. -
Prettier formatting (S211-T07b): applied Prettier to all files;
services/functions/page.tsxformatted. -
LokiJS test isolation (S211-T07b): fixed prefix collision in
api-keystests causing false failures in parallel Jest runs. -
Vibe session export (S211-T07b): removed invalid
maxSessionsPerUserexport from vibe session route that caused CI type errors. -
Hasura startup guard (S211-T07b /
fix(build)):HASURA_GRAPHQL_ADMIN_SECRETguard skipped duringnext buildphase to prevent build-time failures in CI containers without a running Hasura. -
Gitleaks allowlist path (ci): fixed allowlist path reference after
ai-dirremoval.
- Version bumped to v1.0.11 to maintain lockstep with CLI v1.0.11 (per ɳSelf CLI-Admin version-lockstep policy).
This is the first production-ready release of nself-admin, representing a complete transformation from prototype to enterprise-grade application.
-
Dashboard & Overview (15 pages)
-
Real-time dashboard with live metrics
-
Service overview grid with health indicators
-
Quick actions and common tasks
-
System resource monitoring
-
Activity feed and recent events
-
Database Management (25 pages)
-
Full-featured SQL console with Monaco editor
-
Query history and saved queries
-
Backup creation and restoration wizard
-
Automated backup scheduling with cron
-
Migration management (create, run, rollback)
-
Schema browser with table visualization
-
Query explain/analyze support
-
Database performance metrics
-
Connection pool monitoring
-
Index management and optimization
-
Service Management (30 pages)
-
Individual service detail pages (PostgreSQL, Hasura, Auth, Functions, MinIO, Redis, Mailpit, Nginx)
-
Service configuration editors
-
Container logs viewer with filtering
-
Service health checks and diagnostics
-
Resource usage per service
-
Service dependency visualization
-
Container shell access
-
Deployment & Environments (35 pages)
-
Multi-environment management (Dev, Staging, Production)
-
Blue-green deployment strategy
-
Canary deployment controls
-
Preview environment generation
-
Rollback management
-
Deployment history and audit log
-
Environment diff viewer
-
Secrets management per environment
-
Environment variable editor with validation
-
Cloud & Infrastructure (28 pages)
-
AWS integration (EC2, RDS, S3, Route53)
-
Google Cloud Platform support
-
DigitalOcean integration
-
Azure support
-
Server provisioning wizard
-
Cloud resource monitoring
-
Cost estimation
-
Multi-cloud deployment
-
Kubernetes & Orchestration (22 pages)
-
Cluster management
-
Namespace viewer
-
Pod monitoring and logs
-
Helm chart management
-
Service mesh integration
-
Ingress configuration
-
ConfigMap and Secret management
-
Resource quotas and limits
-
Monitoring & Observability (18 pages)
-
Grafana dashboard integration
-
Prometheus metrics viewer
-
Loki log aggregation
-
Alert configuration
-
Uptime monitoring
-
Performance profiling
-
Trace viewer
-
Custom metrics dashboard
-
Security & Access (12 pages)
-
SSL certificate management (mkcert, Let's Encrypt)
-
Certificate renewal automation
-
Trust store management
-
Access control configuration
-
Audit log viewer
-
Security scan results
-
Vulnerability reports
-
Plugins & Extensions (13 pages)
-
Plugin marketplace
-
Installed plugins dashboard
-
Plugin configuration
-
Stripe integration (revenue, customers, subscriptions)
-
GitHub integration (repos, issues, PRs, CI/CD)
-
Shopify integration (products, orders, inventory)
-
Custom plugin development guide
Core UI Components:
-
Layout- Main application layout with navigation -
PageShell- Page wrapper with breadcrumbs and actions -
PageTemplate- Standardized page template -
Header- Top navigation bar with user menu -
Sidebar- Collapsible navigation sidebar -
Footer- Application footer -
Breadcrumbs- Hierarchical navigation -
Logo- Application branding
Data Display:
-
ServiceCard- Service status cards -
MetricCard- Metric display cards -
StatCard- Statistics cards -
ActivityFeed- Recent activity list -
Timeline- Event timeline -
Table- Data table with sorting/filtering -
VirtualTable- Virtualized table for large datasets -
TreeView- Hierarchical data viewer
Forms & Input:
-
Input- Text input with validation -
Textarea- Multi-line text input -
Select- Dropdown select -
Checkbox- Checkbox input -
Switch- Toggle switch -
DatePicker- Date selection -
TimePicker- Time selection -
ColorPicker- Color selection -
FileUpload- File upload with drag-drop -
CodeEditor- Monaco-based code editor -
UrlInput- URL validation input
Feedback & Overlays:
-
Toast- Toast notifications (using Sonner) -
Dialog- Modal dialogs -
AlertDialog- Confirmation dialogs -
Sheet- Side panels -
Popover- Contextual popovers -
Tooltip- Hover tooltips -
ConfirmDialog- Confirmation prompts -
ErrorBoundary- Error boundary wrapper -
LoadingStates- Loading indicators
Charts & Visualization:
-
LineChart- Time series charts -
BarChart- Bar charts -
PieChart- Pie charts -
AreaChart- Area charts -
ComposedChart- Multi-type charts -
Gauge- Gauge indicators -
Sparkline- Inline trend charts -
HeatMap- Heat map visualization
Skeletons & Loading:
-
DashboardSkeleton- Dashboard loading state -
FormSkeleton- Form loading state -
CodeEditorSkeleton- Editor loading state -
LogViewerSkeleton- Log viewer loading state -
MetricCardSkeleton- Metric card loading state -
CardGridSkeleton- Card grid loading state -
ChartSkeleton- Chart loading state -
ListSkeleton- List loading state -
TableSkeleton- Table loading state -
TimelineSkeleton- Timeline loading state
Specialized Components:
-
ServiceDetailModal- Service details modal -
ServiceConfigModal- Service configuration modal -
BackupConfiguration- Backup setup wizard -
NetworkSpeedTest- Network speed testing -
ProjectSetupWizard- Initial setup wizard -
WizardProvider- Wizard state management -
ProjectStateProvider- Project state context -
SSEProvider- Server-sent events provider -
GlobalDataProvider- Global data context -
ThemeToggle- Dark/light mode toggle
-
WebSocket Integration
-
Live service status updates
-
Real-time log streaming
-
Container event notifications
-
Deployment progress tracking
-
Resource usage monitoring
-
Server-Sent Events (SSE)
-
Long-running operation updates
-
Build process streaming
-
CLI command output streaming
-
Metrics updates
-
Authentication
-
bcrypt password hashing
-
Session management with httpOnly cookies
-
7-day session expiry with auto-renewal
-
CSRF protection
-
Rate limiting on auth endpoints
-
Authorization
-
Role-based access control foundation
-
Environment-based access (dev, staging, prod)
-
Secrets management per environment
-
Audit logging for all actions
-
Input Validation
-
Zod schema validation on all forms
-
Command injection prevention (execFile vs exec)
-
GraphQL query allowlisting
-
File path sanitization
-
Environment variable validation
-
Responsive Design
-
Mobile-first approach
-
Tablet optimization
-
Desktop layouts
-
Touch-friendly interactions
-
Accessibility
-
WCAG 2.1 AA compliance
-
Keyboard navigation
-
Screen reader support
-
Focus management
-
ARIA attributes
-
Dark Mode
-
Full dark mode support
-
System preference detection
-
Persistent theme selection
-
Smooth transitions
-
Progressive Web App (PWA)
-
Installable on mobile/desktop
-
Offline capability (coming soon)
-
App-like workflow
-
Authentication:
/api/auth/*(5 endpoints) -
Services:
/api/services/*(12 endpoints) -
Database:
/api/database/*(18 endpoints) -
Docker:
/api/docker/*(15 endpoints) -
Deployment:
/api/deploy/*(10 endpoints) -
Cloud:
/api/cloud/*(15 endpoints) -
Kubernetes:
/api/k8s/*(12 endpoints) -
Monitoring:
/api/monitoring/*(8 endpoints) -
Plugins:
/api/plugins/*(10 endpoints) -
Config:
/api/config/*(8 endpoints) -
System:
/api/system/*(7 endpoints)
-
State Management
-
Zustand for global state
-
SWR for data fetching with caching
-
React Context for feature-specific state
-
LocalStorage persistence where appropriate
-
Code Organization
-
Feature-based folder structure
-
Shared components library
-
Utility functions library
-
Type-safe API client
-
Build Optimization
-
Code splitting per route
-
Dynamic imports for heavy components
-
Image optimization
-
Bundle size reduction (30% smaller)
-
Lighthouse score: 95+
-
Rendering
-
React 19 concurrent features
-
Virtual scrolling for large lists
-
Memoization of expensive calculations
-
Lazy loading of images and components
-
Networking
-
API response caching
-
Request deduplication
-
Optimistic UI updates
-
Retry logic with exponential backoff
-
Metrics
-
Initial load: < 1.5s
-
API response: < 100ms average
-
Real-time latency: < 50ms
-
Time to Interactive: < 2s
- Build Page Race Condition - Prevent double builds with useRef
- Store Cleanup on Logout - Reset all Zustand stores
- Memory Leak Prevention - Proper cleanup in polling services
- Command Injection - 50+ routes now use execFile
- GraphQL Injection - Query allowlisting implemented
- Session Security - Enhanced token validation
- Password Validation - Improved strength requirements
- Docker container detection in WSL2
- Environment file parsing edge cases
- SSL certificate renewal automation
- Wizard state persistence across refreshes
- Service dependency ordering
- Log viewer ANSI escape code handling
- Real-time update reconnection
- Chart rendering with null values
- Table sorting with mixed types
- Form validation error display
- Legacy environment variable authentication (now database-based)
- Deprecated API routes from v0.0.x
- Unused dependencies (reduced by 15%)
- Test fixtures and mock data from production build
- Next.js: 14.x → 16.1.4
- React: 18.x → 19.1.1
- TypeScript: 5.3 → 5.9.2
- Tailwind CSS: 3.x → 4.1.11
- Socket.io: 4.5 → 4.8.1
- Chrome/Edge 100+
- Firefox 100+
- Safari 15+
- Mobile browsers (iOS Safari, Chrome Mobile)
Development:
- Node.js 18+
- pnpm 8+
- Docker 20+
- 4GB RAM minimum
Production:
- Docker 20+
- 2GB RAM minimum
- 10GB disk space
- Linux/macOS/Windows (WSL2)
- Image:
nself/nself-admin:0.5.0 - Size: 450MB (optimized)
- Base:
node:18-alpine - Multi-stage build
- Security scanning passed
See MIGRATION_v0.4_to_v0.5.md for detailed upgrade instructions.
Breaking Changes:
- Database schema changes (automatic migration)
- API response format standardization
- Environment variable naming conventions
- Session storage moved to database
Recommended Steps:
- Backup your current installation
- Update Docker image:
docker pull nself/nself-admin:0.5.0 - Review environment variables
- Restart containers
- Test all critical workflows
-
Full Security Audit (
docs/SECURITY_AUDIT.md) -
3-pass security review covering OWASP Top 10
-
Authentication and session management audit
-
API routes and input validation analysis
-
Command injection vulnerability assessment
-
Dependency vulnerability scan
-
Prioritized remediation recommendations
-
Plugin Management UI (Aligns with nself CLI v0.4.8)
-
Plugin dashboard (
/plugins) with installed/available plugins grid -
Plugin installation wizard with environment variable configuration
-
Plugin configuration management
-
Plugin-specific detail pages (
/plugins/[name]) -
Webhook event monitoring and retry
-
Plugin sync controls and history
-
Plugin health indicators
-
Stripe Plugin UI (
/plugins/stripe) -
Revenue dashboard (MRR, ARR, key metrics)
-
Customer management interface with search
-
Subscription viewer with status filters
-
Invoice management and PDF download
-
Payment methods viewer
-
Webhook event log with filtering
-
GitHub Plugin UI (
/plugins/github) -
Repository overview and sync status
-
Issues and Pull Requests dashboard
-
CI/CD status (GitHub Actions runs)
-
Commit history and releases
-
Activity feed
-
Shopify Plugin UI (
/plugins/shopify) -
Store overview and metrics
-
Product catalog viewer with variants
-
Order management with status filters
-
Customer list
-
Inventory status
-
Enhanced Database UI
-
Backup creation wizard with type selection
-
Backup list with download/delete actions
-
Backup restore workflow with confirmation
-
Scheduled backups with visual cron editor
-
Migration management (run, rollback, create)
-
Schema browser with table visualization
-
Monaco-based SQL console with syntax highlighting
-
Query history (persisted) and saved queries
-
Query results export (CSV, JSON)
-
Query explain/analyze support
-
Cloud Provider Integration
-
AWS configuration and deployment
-
Google Cloud Platform (GCP) support
-
DigitalOcean integration
-
Provider status monitoring
-
Kubernetes Management UI
-
Cluster configuration
-
Namespace management
-
Pod monitoring
-
Helm chart support
-
Performance & Deployment
-
Benchmark runner UI
-
Cache management interface
-
Blue-green deployment controls
-
Rollback management
-
Command Injection - Fixed vulnerabilities in 9 API routes using
execFileinstead ofexec /api/database/backups/route.ts/api/database/migrations/route.ts/api/database/schema/route.ts/api/cloud/aws/route.ts/api/cloud/gcp/route.ts/api/cloud/digitalocean/route.ts/api/kubernetes/route.ts/api/kubernetes/helm/route.ts/api/performance/benchmark/route.ts- GraphQL Query Injection - Added allowlisted query patterns to prevent arbitrary query execution
- Session Validation - Enhanced session security with proper token verification
- Password Storage - Improved password hashing and validation
-
Build Page Race Condition - Changed
buildStartedfromuseStatetouseRefto prevent double builds - Store Cleanup on Logout - Added Zustand store reset calls in AuthContext for security
-
Memory Leak Prevention - Proper cleanup in DockerPollingService with
beforeunloadhandler
-
GET/POST /api/plugins/*- Plugin management endpoints -
GET/POST /api/plugins/[name]/*- Plugin-specific endpoints -
GET/POST /api/database/backups/*- Backup management -
GET/POST /api/database/migrations/*- Migration management -
GET/POST /api/database/schema/*- Schema browser -
GET/POST /api/cloud/*- Cloud provider integration -
GET/POST /api/kubernetes/*- Kubernetes management -
GET/POST /api/performance/*- Performance tools
-
@monaco-editor/react- SQL editor -
recharts- Revenue charts -
cronstrue- Cron to human readable
- Aligns with nself CLI v0.4.8 (Plugin System Release)
- New plugin command wrapping infrastructure
- Enhanced database command support
- Plugin registry integration
- Docker image:
nself/nself-admin:0.0.8 - 50+ files changed with security hardening
- Multi-Environment Deployment UI
- New
/deployment/stagingpage for staging deployments - New
/deployment/prodpage for production deployments - New
/deployment/environmentspage for environment management - Deploy API routes (
/api/deploy/staging,/api/deploy/production) - CLI Integration Improvements
- Added
findNselfPath()andfindNselfPathSync()for dynamic CLI path resolution - Added
getEnhancedPath()for proper PATH environment in container - CLI version detection in health endpoint (
cliVersionfield) - Support for
PROJECT_PATHandNSELF_PROJECT_PATHenvironment variables - Container Enhancements
- Added mkcert binary for local SSL certificate generation
- Added docker-cli-compose for Docker Compose support
- Documented Docker socket security considerations
- Unit Testing Infrastructure
- Added Jest configuration (
jest.config.js,jest.setup.js) - Created initial test suite for nself-path utilities
- Navigation updated with new deployment routes
- CLI command whitelist expanded with new commands:
restart,ssl,trust,env,clean,reset,exec,staging,prod - Default CLI command timeout increased from 30s to 60s
- Health check now includes nself CLI availability and version
-
CLI Path Resolution - Fixed hardcoded paths in
letsencrypt/route.tsandconfig/route.ts -
Enhanced PATH - Added
getEnhancedPath()to all exec calls for container compatibility - Project Name Detection - Fixed extraction from multiple env files (.env, .env.local, .env.dev)
-
ANSI Escape Codes - Added
stripAnsi()function for parsing CLI output -
Filesystem Health Check - Changed from
/projectto/workspace(NSELF_PROJECT_PATH)
- 20+ files changed
- New API routes:
/api/deploy/*(3 endpoints),/api/env(1 endpoint) - New pages:
/deployment/*(3 pages) - Docker image:
nself/nself-admin:0.0.7 - Aligned with nself CLI v0.4.4
-
SSL Configuration Page (
/config/ssl) - Certificate status display (mode, validity, expiry)
- Local certificate generation via mkcert integration
- Let's Encrypt configuration support
- Trust store installation guide with OS-specific instructions
-
Centralized Constants (
src/lib/constants.ts) - All port definitions (ADMIN: 3021, LOKI: 3100, etc.)
- Version information for dynamic display
-
Full Roadmap (
docs/ROADMAP.md) - Detailed plans for v0.0.7 through v0.1.0
- Aligned with nself CLI v0.4.3-v0.5.0 release schedule
- Technical architecture notes with TypeScript interfaces
- Multi-environment deployment considerations
- Login page now displays dynamic version from constants (was hardcoded v0.3.9)
- Standardized error response format across all 30+ API routes
- TypeScript Error Handling - Fixed 30+ API routes with proper error handling
- Changed
error?.messageanderror.messagepatterns to proper type checking - Pattern:
error instanceof Error ? error.message : 'Unknown error' -
Promise Typing - Fixed
Promise<Response>return type in SSL generate-local route -
File System Errors - Added
NodeJS.ErrnoExceptiontyping for file operations
- 45 files changed, 2,362 insertions(+), 264 deletions(-)
- New API routes:
/api/config/ssl/*(4 endpoints) - Docker image:
nself/nself-admin:0.0.6
- Full documentation reorganization for GitHub Wiki sync
- Improved sidebar navigation with complete page linking
- VERSION file moved to
/docsfor cleaner root directory
- Cleaned up root directory (removed VERSION, docker-compose files, test files)
- Updated all version references to 0.0.5 across package.json, Dockerfile
- Reorganized documentation structure for better wiki generation
- Simplified README.md to focus on quick start
- Version mismatch between package.json (0.0.4) and Dockerfile (0.0.3)
- ESLint warnings for unused variables across API routes
- Documentation link consistency across wiki pages
- Updated Dockerfile labels and environment variables
- Improved GitHub Actions wiki-sync workflow with better navigation
- Standardized documentation file naming conventions
- Security enhancements with bcrypt password hashing
- Secure random generation for session tokens
- Dependabot configuration for automated updates
- Centralized project path handling
- Improved CI/CD pipeline reliability
- Enhanced TypeScript declarations
- Better path resolution across modules
- 43 security alerts resolved
- Build and reset command issues
- Functions service categorization
- UI consistency between wizard pages
- Unified state management for wizard configuration
- Real-time synchronization between UI state and environment files
- Automatic environment file detection (.env.dev, .env.local, .env)
- Improved wizard navigation with proper state persistence
- Environment handler now writes directly to .env.dev for development
- Removed .env.local as primary configuration target
- Simplified ProjectStateWrapper to prevent navigation conflicts
- Updated optional services to save all states together
- Wizard navigation redirect loops between /init pages
- Project status API not detecting .env.dev files
- Optional service selections not persisting across page navigation
- Environment changes not saving immediately on field changes
- Redirect issues when moving between wizard steps
- Project name and configuration values reverting on navigation
- Removed aggressive redirect logic from ProjectStateWrapper
- Enhanced environment file cascade priority handling
- Improved auto-save functionality with proper debouncing
- Better error handling in wizard update endpoints
- Streamlined state management across all wizard pages
- LokiJS database integration for session management
- Project setup wizard with 6 steps
- Docker image optimization (reduced from 3.69GB to 421MB)
- Migrated from environment variables to database for auth
- Improved project initialization flow
- Initial project setup capabilities
- Service configuration interface
- Docker integration
- Initial release
- Basic admin interface
- Authentication system
- Project management features
-
Admin panel unified auth (O07), Admin now uses unified auth flow (FF_UNIFIED_AUTH). Session management via np_sessions v2. License management and device management pages wired to
nself accountCLI. - Audit log live tail (Q02), Admin shows live stream of np_audit_log entries via Hasura subscription panel.
- Ollama status panel (B38), Admin displays Ollama service health and installed models.
P96 CRUNCH phase, release cascade widget, XSS hardening, 2FA TOTP, audit log, rate limiting, and ship-readiness fixes.
-
ReleaseCascadeWidget(S173): visual release coordinator in Admin UI. Shows real-time progress of the 12-step release cascade; links out to GitHub Actions, Homebrew tap, and Docker Hub status. - 2FA TOTP enforcement (S123): all admin users can enroll a TOTP authenticator app; super-admin policy can require 2FA for privileged operations.
-
Audit log with rate limit (S123): every sensitive admin action (env write, plugin install, license set, user manage) is written to
np_audit_logwith actor, timestamp, and IP. Rate limit enforced at the route level. -
nself doctoradmin check (S124): admin surfaces a one-click "Doctor" panel that runsnself doctor --deepand displays categorised findings inline. Blocks deploy button on CRITICAL findings.
- Version bumped to v1.0.12 (lockstep with CLI v1.0.12).
-
CLI_VERSIONconstant insrc/lib/cli-version.tsupdated to1.0.12.
- XSS hardening on all output viewers (S122): all plugin log viewers, env value displays, and JSON output panels now sanitise through DOMPurify before rendering.
-
requireAuthon all 260 routes (S121): middleware enforced across every page and API route; unauthenticated requests return 401. -
Dockerfile
NSELF_VERSIONbuild arg updated from stale1.0.11to1.0.12.
- CSRF protection extended to all 260 routes as part of S121-S122 security lockdown.
-
Secret redaction hardened: additional sensitive env var patterns masked in
/api/env/readresponse.
Version: 1.0.0 | Updated: 2026-09-16 11:21 UTC | GitHub