Releases: noormdev/noorm
@noormdev/sdk@1.0.0-alpha.35
Minor Changes
-
01208ec: ## Added
feat(runner):Split MSSQL SQL files on theGObatch separator. Multi-statement DDL files (multipleCREATE PROCEDURE/CREATE FUNCTION/CREATE TRIGGER/CREATE VIEW/CREATE TYPEin one file) now run correctly instead of failing withIncorrect syntax near 'GO'.feat(runner):Batch failures report the failed batch index inFileResult.error(e.g.[batch 3 of 5] <driver error>) and short-circuit the remaining batches.
Known limitations
GOinside string literals or block comments is still treated as a separator — matchessqlcmdbehavior. Document accordingly when authoring T-SQL files.GO <N>repetition is not implemented.
Patch Changes
-
01208ec: ## Changed
feat(sdk):changes.ff(options?)andchanges.next(count, options?)now acceptBatchChangeOptionsso callers can passdryRun/force. Previously the options were silently dropped before reaching the manager.
-
01208ec: ## Fixed
fix(teardown):Reorder schema teardown to drop procedures and functions before tables. MSSQL schema-bound UDFs (WITH SCHEMABINDING) previously blocked the table drop withCannot DROP TABLE because it is being referenced by object 'fn_X'. New order: FK constraints → Procedures → Functions → Views → Tables → Types.fix(teardown):Replacesp_MSforeachtablewith per-table sequentialALTER TABLE [name] NOCHECK CONSTRAINT ALL(and inverse) in MSSQLdb.truncate(). The previous implementation spawned parallel workers that deadlocked on schema locks against non-trivial schemas.fix(teardown):TeardownDialectOperations.disableForeignKeyChecks/enableForeignKeyChecksnow accept an optionaltables?: string[]and may returnstring | string[]. PostgreSQL / MySQL / SQLite implementations ignore the argument — no behavior change for those dialects.
-
01208ec: ## Changed
fix(vault):vault.init()is now idempotent. A repeat call against an already-initialized vault returns[null, null]instead of[null, Error('Vault already initialized')]. Thevault:initializedobserver event still fires only on first init.
This is a behavior change for callers that were special-casing the
'Vault already initialized'error string — they now see no error on repeat and must check whether the returned key isnull(already initialized) or aBuffer(newly generated).
@noormdev/cli@1.0.0-alpha.35
Minor Changes
-
f522adc: ### Added
feat(cli):Addnoorm init --hereto initialize a project in the original cwd, ignoring any parent.noorm/discovered while walking upfeat(cli):Add global-c <path>/--cwd <path>flag (likegit -C) that runs the subcommand inside<path>and skips the walk-up. Must precede the subcommand; after the subcommand-ckeeps its per-command--configmeaning.
Changed
refactor(cli):noorm initnow reports an existing.noorm/before the TTY gate, so scripted invocations get the more actionable error.
-
01208ec: ## Added
feat(cli):Universal--yes/-yflag andNOORM_YES=1environment variable for TTY-gated commands. Unblocks CI, scripted bootstrap, and subagent flows.feat(cli):noorm init --yesnow succeeds in non-TTY environments when an identity already exists at~/.noorm/identity.{key,pub,json}. Without an identity, it errors with a hint pointing atnoorm identity init --name "X" --email "Y".feat(cli):noorm sql repl --yes,noorm settings edit --yes, andnoorm settings secret --yesprint a documented redirect-hint error instead of refusing silently, telling the user which non-interactive alternative to use (sql query/ direct YAML edit /secret set).
Patch Changes
- 01208ec: ## Fixed
fix(cli):Wirenoorm change ff --dry-run(andnext/run/revert) through to the SDK — the flag previously parsed but did nothingfix(cli):Drop the unreachable positionalqueryarg fromnoorm sqland add an argv rewriter sonoorm sql "SELECT 1"is rewritten tonoorm sql query "SELECT 1"before citty dispatchfix(cli):Show(dry-run)markers in human output anddryRun: truein--jsonenvelopes for all four change commands
- 01208ec: ## Fixed
fix(cli):Surface SQL errors and skip reasons inrunandchangeoutputfix(cli):noorm run build/dir/files/execnow print each failed file's driver error inline and route the summary throughlogger.erroron non-successfix(cli):noorm run fileand the skip path now report(skipped: <reason>)so callers know whether the file was unchanged or already-runfix(cli):noorm change ff/run/revert/rewindprint per-change error detail on failure instead of just(failed)
@noormdev/sdk@1.0.0-alpha.34
@noormdev/sdk@1.0.0-alpha.34
@noormdev/cli@1.0.0-alpha.34
Minor Changes
-
7b907b3: Introduce the
noorm cicommand namespace and retire the standalonenoorm identity cidiagnostic.Four new commands cover the full CI lifecycle — mint a keypair, enroll it in a real database, bootstrap ephemeral state inside a job, and batch-load secrets:
noorm ci identity new --name <str> --email <str>— generate a test-CI keypair locally. No database contact, no state written. Prints the private key once plus a copy-pasteableNOORM_IDENTITY_*env block. Designed for stateless/ephemeral CI (isTestconfigs, throwaway databases). Accepts--json.noorm ci identity enroll --config <name> --name <str> --email <str> [--public-key <hex>]— register a CI identity in the target database and propagate vault access to it. Run once by a developer with existing vault access. Decrypts the caller's vault key, inserts a new identity row (machine='ci',os='env'), and re-encrypts the vault key for the new identity. Idempotent on identityHash — safe to re-run. When--public-keyis omitted, mints a new keypair and returns the private key; when provided, only the public half is enrolled (air-gapped flow).noorm ci init [--name <str>] [--force]— bootstrap ephemeralstate.encfromNOORM_IDENTITY_*+NOORM_CONNECTION_*env vars. Runs inside the CI job. Creates a config (default:ci, override via--nameorNOORM_CI_CONFIG_NAME), marks it active, setsisTest: true. Absorbs the formernoorm identity ciprecheck — fails fast with exit 1 if any required env var is missing or malformed, or ifstate.encalready exists without--force.noorm ci secrets --file <path> [--config <name>] [--overwrite]— batch-load secrets from a dotenv-style file into the active (or--config-named) vault. Parser ignores blank lines and#comments, splits on the first=, and strips a single matched pair of surrounding quotes. Existing keys are skipped unless--overwriteis set (so reruns are safe). Exit codes:0clean,1precondition failure,2partial (some set, some errored).
Removed:
noorm identity ci. Its precheck behavior is now built intonoorm ci init. Callers that usedidentity cionly for validation should replace it withnoorm ci init, which does the validation plus the state bootstrap.Migration: replace any pipeline that set
NOORM_IDENTITY_*+NOORM_CONNECTION_*and rannoorm identity cifollowed bynoorm change ffwith:noorm ci init --name prod noorm change ff
For vault-aware pipelines, provision the CI identity once from a developer machine:
noorm ci identity enroll --config prod --name "CI Bot" --email ci@example.com # copy the printed NOORM_IDENTITY_* block into your CI secrets store
@noormdev/sdk@1.0.0-alpha.33
@noormdev/sdk@1.0.0-alpha.33
@noormdev/cli@1.0.0-alpha.33
Minor Changes
-
e87c435: Rework
noorm changefor interactive-first ergonomics and drop the surprising bare-invocation side effect.- Bare
noorm changenow renders citty's help output and does not connect to the database. The status listing that used to live there moved to a new explicit leaf:noorm change list. This matches every other root command (config,settings,identity,db,vault,secret,run) and prevents accidental connection attempts when users are just exploring the CLI. change list— new. Lists every known change with its status; accepts--config,--json.change edit [name]— new. Resolves the change folder from settings and spawns$EDITOR(then$VISUAL, thencode) with stdio inherited so terminal editors work in-place; exits with the editor's own exit code. Surfaces spawn failures (e.g. editor binary not found) instead of silently no-oping.change add [description]— prompts for a description viap.textwhen omitted on a TTY.change rm [name]— prompts for a change to delete, then confirms withp.confirm.--yesis no longer required on a TTY (it now just skips the confirm). On a non-TTY, both the name and--yesare still required so CI never deletes silently.change run [name]— prompts from pending/reverted changes (filtersctx.noorm.changes.status()by!orphaned && status in { pending, reverted }).change revert [name]— prompts from successfully applied changes.change rewind [name]— prompts from successfully applied changes.change history-detail [name]— prompts from changes with execution history (status !== 'pending').
In every case, non-TTY invocations without a name exit 1 with a uniform
Change name required…error. User cancellation from any picker exits 1 withCancelled..Migration: replace
noorm changewithnoorm change listin any scripts or CI jobs that relied on the status listing. The--jsonshape is unchanged. - Bare
@noormdev/sdk@1.0.0-alpha.32
@noormdev/sdk@1.0.0-alpha.32
@noormdev/cli@1.0.0-alpha.32
Minor Changes
-
f946820: Add CI identity bootstrap and two interactive settings editors:
noorm identity ci— diagnostic command for CI environments. Bootstraps the process fromNOORM_IDENTITY_PRIVATE_KEY,NOORM_IDENTITY_NAME, andNOORM_IDENTITY_EMAILenv vars, deriving the public key from the private key and computing a deterministic identity hash across runners. In-memory overrides for both private key and metadata replace~/.noorm/filesystem reads, so CI runners can decrypt vault/state without writing key files.noorm settings edit— interactive editor covering all 7 settings sections: paths, build, strict, logging, stages, rules, teardown. Stages and rules use add/edit/remove sub-loops. Esc inside a sub-editor returns to the section picker; only Esc at the top level exits. AddssetTeardown()toSettingsManagerand asettings:teardown-updatedevent.noorm settings secret— interactive editor for universal and stage-scoped secret requirements (declarations, not values). Supports add, edit, remove, and list actions.
@noormdev/sdk@1.0.0-alpha.31
@noormdev/sdk@1.0.0-alpha.31
@noormdev/cli@1.0.0-alpha.31
Minor Changes
-
e10b7a4: Add two new CLI commands:
noorm init— interactive project bootstrap. Creates identity (if missing), project structure, and settings. Requires an interactive TTY.noorm sql repl— launches the TUI directly on the SQL Terminal screen. Supports--config <name>to switch active config before launching. Requires an interactive TTY.