← Changelog
v1.2.2
2026-07-03
Fixed
- Declared plugins silently dropped (CRITICAL) —
nself buildignored the project’snself.yamlmanifest entirely: plugins declared underplugins:(flat orfree:/pro:tiers) or viabundle:/bundles:never materialized as containers because the only injection path was discovery over the plugin install dir. The build now parses the manifest, expands bundles through the canonical bundle catalog, best-effort auto-installs missing plugins (60s per-plugin timeout; disable withNSELF_AUTO_INSTALL_PLUGINS=false), and reports any plugin it cannot wire with a per-plugin warning, aBuildResult.MissingPluginsentry, and a printednself plugin install ...fix command. A declared plugin is never silently dropped. Core services (auth,storage) satisfy their declared names.NSELF_PLUGIN_DIRoverrides the plugin directory for hermetic CI and per-project plugin sets. (#168) - Literal secrets in generated docker-compose.yml (HIGH) —
nself buildbaked literal secret values (Postgres password, Hasura admin secret, JWT blobs, MinIO root credentials, SMTP password) into the generated compose file, so editing.envpost-build was a silent no-op and committing the generated file leaked credentials. Secrets are now emitted as${VAR}references; interpolation values are written to.nself/compose.env(mode 0600) and passed to docker compose via--env-fileby start/stop/restart/health. Legacy projects withoutcompose.envkeep default.envdiscovery. A safety-net scan warns if any known secret value still appears literally. (#168) - False “unknown env var” warnings — app-owned vars (
NODE_ENV,JWT_SECRET,SSL_AUTO_TRUST,COOKIE_SECRET,ENABLE_DEBUG,LOG_LEVEL,NSELF_PROJECT_NAME) are now known; newENV_ALLOWLISTaccepts comma-separated exact names orPREFIX_*patterns for project-specific passthrough vars. (#168) - Unreachable ready URLs from
nself start— with a default local domain,nself startprinted*.local.nself.orgURLs that 502 without DNS setup. It now prints directhttp://localhost:<port>endpoints (GraphQL, Hasura console, Auth, Storage, Mail UI, Admin) plus anself dns-setuphint for the domain routes; custom domains keep nginx-routed URLs. (#168) - Hash-prefixed leftover containers — interrupted
docker composerecreates leave the old container renamed with a hex-id prefix (e.g.b6d7b59a1c78_myapp_hasura) that holds ports and shadows the clean<project>_<service>name. Start now removes rename-leftovers before and aftercompose up. (#168)