← Changelog
v1.2.0
2026-07-01
Changed
- TypeScript SDK canary upgrade to TS6 —
cli/sdk/ts(@nself/plugin-sdk v2.0.0) bumped from TypeScript^5.4.5to^6.0.0(S06 canary).tsconfig.jsonupdated:module→node16,moduleResolution→node16(node10 alias deprecated in TS6). Addedtsconfig.test.jsonfor ts-jest withisolatedModules: true. Jest config migrated to flattransformsyntax (removes deprecatedglobals.ts-jest). Addedeslint,@typescript-eslint/parser,@typescript-eslint/eslint-plugindevDeps andeslint.config.mjs(ESLint 10 flat config). All 18 tests pass. Type-check and build clean.
Added
- Embedded PostgreSQL via pglite/wasmtime (
--embedded-pg) —nself start --embedded-pgboots a full ɳSelf stack without a Docker postgres container. PostgreSQL runs as a pglite WebAssembly module inside wasmtime. A Unix-domain socket bridge proxies the Postgres wire protocol to Hasura and Auth. pgvector is included in pglite v0.2.17. Cold start compiles the WASM module to native code and caches it; warm starts typically take under 5 seconds. Backup vianself backuptargets the UDS socket (pg_dump --format=customprimary, SQL wire-protocol fallback). Enable persistently withNSELF_EMBEDDED_PG=truein.env.local. See [[Embedded-Postgres]].
Security
- CWE-214 Hasura secret exposure fixed —
hasuraMetadataExportCmd()ininternal/backup/create.gopreviously passed the Hasura admin secret as--admin-secret=<value>in argv. Any local user with access to/proc/<pid>/cmdlineorps auxcould read it during a backup run. The secret is now passed exclusively through the child process environment (cmd.Env). Docker exec receives-e HASURA_GRAPHQL_ADMIN_SECRET(no value on the command line). Severity: High. Chain ID: a83c99d6. Advisory:.github/SECURITY-ADVISORIES/2026-05-15-rce-and-secrets.md. - Supply-chain installer verification added — the Ollama installer previously piped
curloutput directly toshwithout content verification.DownloadAndVerify()in the newinternal/installer/verify.godownloads to a 0700 owner-only temp directory, opens the file withO_EXCL(closes TOCTOU window), caps the body at 2 MiB, and verifies SHA-256 against the pinned checksum fromExpectedOllamaInstallChecksum()before execution. Severity: High. Chain ID: a83c99d6. Advisory:.github/SECURITY-ADVISORIES/2026-05-15-rce-and-secrets.md.
Testing
- S42-sec security-critical coverage uplift (sprint a5e2b723) — targeted coverage pass across
internal/license,internal/auth,internal/trust,internal/crypto, SSRF guards, and RLS enforcement. Real uplift: license 76 → 91.1% (392 new tests), auth 85 → 92.5% (140 tests), trust 67 → 72.1% (4 timeout-panic test bugs fixed: brew/osascript/setupResolver had unconditional 30s–5 min blocking calls, nowt.Skipwith unreachable-doc comment), security 89.3%, truststate 96.0%. No security bugs discovered;go buildandgo vetclean. Accepted coverage debt:internal/trust/ssl49.4%,internal/secrets39.0%,internal/tenant48.4% — these packages rely on external binary execution (mkcert, openssl, age — no injection point to test safely), osascript admin-dialog invocation (untestable in CI without real macOS privileges), and live Postgres/Stripe/MinIO connections. Plausible integration-test class; further uplift deferred to S47 once an integration harness is in place.