unstale

npm / noxcturnal

noxcturnal

What changed in noxcturnal 0.1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-15.

7 breaking4 new APIs and options4 performance1 behavior and defaults41 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.3.1 on npm

noxcturnal 0.157 changes

Breaking changes 7

  • Removed the unused preflight option; native configuration belongs on PipelinePhase.native.

    0.1.8release notes

  • Unknown enabled native options now throw.

    0.1.2release notes

  • Fragment factories require one complete expression and reject self-contained early errors while allowing unresolved enclosing bindings.

    0.1.2release notes

  • JSX configuration honors Babel comment directive precedence, rejects invalid pragmas and conflicting runtime settings, and accepts escaped identifier paths.

    0.1.2release notes

  • The optional transform setting and its session enforcement are removed.

    0.1.2release notes

  • Pattern matching returns false for nodes outside static or computed member chains and throws when the declaration required for a node is omitted.

    0.1.2release notes

  • Each plugin must declare its query categories, and mutable query requests refresh cached facts.

    0.1.2release notes

New APIs and options 4

  • Add composable selectors for field predicates and immediate parent/child relationships, including indexed list children; match conditions filter delivery and child prefetch without granting data access.

    0.1.11release notes

  • A new transform option controls how diagnostic filenames are resolved; it defaults to the current working directory.

    0.1.7release notes

  • Plugins can require actual syntax before retaining native data or hydrating children; applicability is rechecked after source changes.

    0.1.3release notes

  • Module pipelines can remove unused top-level functions without changing parser semantics.

    0.1.3release notes

Performance 4

  • Binding details are loaded only for requested names, with uncached lookups batched and cached results reused.

    0.1.3release notes

  • Child data is fetched in batches for nodes matched by visitors rather than for every node of the same type.

    0.1.3release notes

  • Function-map generation reuses the input parse, collects maps before visitor edits and native language lowering, and skips collection when function maps are disabled.

    0.1.3release notes

  • Nested traversal bounds scans to the requested source range and uses compact indexes, reducing setup cost and memory while preserving visitor behavior.

    0.1.3release notes

Behavior and default changes 1

  • Native Flow support expands to readonly properties, variance, async components, and records, with detailed fallback diagnostics preserved.

    0.1.3release notes

Fixes and other changes 41

  • Composes strict directives, helpers, preambles, and epilogues against the edited body so replacements do not consume insertion anchors, while preserving wrapper scope and source-map provenance.

    0.1.13release notes

  • Emitted output now automatically preserves module strictness independently of selected transforms or plugins, including empty and visitor-only pipelines, while retaining explicit directives and sloppy script/CommonJS behavior.

    0.1.12release notes

  • Recognize parenthesized static callee roots in calleeGlobal fields and predicates, consistent with static member paths.

    0.1.11release notes

  • Recognize parenthesized static callee roots in calleePath fields and predicates, consistent with static member paths.

    0.1.11release notes

  • Unsupported decorated class expressions now return a pristine compatibility bailout instead of reporting successful output with decorators left in JavaScript; invalid input still throws.

    0.1.11release notes

  • Fixes legacy class default exports and preserves bindings, captures, temporary owners, and helper initialization when native transforms reuse source locations.

    0.1.10release notes

  • Keeps path.skip(), path.traverse(), and subscribeWithin() within their owning AST subtrees when source locations coincide, without retaining an index for skip-only visitors.

    0.1.10release notes

  • Fixes hoisting, JSX binding resolution, and derived-effect validation for nodes that share source locations.

    0.1.10release notes

  • Preserves merged declarations and validates infer types and resource redeclarations using AST ownership instead of source locations.

    0.1.10release notes

  • Named capture group lowering no longer rejects valid regular expressions containing numeric backreferences or legacy octal escapes in strict mode.

    0.1.9release notes

  • Errors now include filenames, source locations, and Babel-style code frames, with locations traced through earlier transform phases so Metro can identify the input file and line.

    0.1.7release notes

  • Plugin hooks and visitors consistently receive the original caller filename, preserving its extension and relative form when parser overrides or adapters select a different input dialect.

    0.1.7release notes

  • Input and output JSX settings are differentiated; input JSX grammar is disabled for .ts files so they are not interpreted as .tsx.

    0.1.6release notes

  • Unreachable var initializers are removed while hoisted bindings are preserved, preventing dependencies referenced only by those initializers from being retained after block-scoping transforms.

    0.1.4release notes

  • Callee names are inferred directly from the AST, preventing anonymous IIFE bodies from becoming names; parentheses, comments, and escaped string member keys are handled correctly.

    0.1.3release notes

  • Parser, semantic analysis, code generation, transformer, and React Compiler updates fix string enum mappings and coercion, private optional-chain receivers, resource disposal, and React Compiler miscompilations.

    0.1.3release notes

  • Async lowering now preserves transform selection, labels, bindings, strictness, lexical captures, and super references; iterator-result validation follows generated bindings.

    0.1.2release notes

  • Block-scoping transforms no longer hang on function-local loop-header or iterable bindings and preserve captured loop bindings and JavaScript binding behavior.

    0.1.2release notes

  • Extracted captured loops preserve labeled exits and static-block environments, and private writes resolve in the correct class environment.

    0.1.2release notes

  • Class lowering preserves private identities, initialization, lexical environments, computed keys, optional calls, and strict super references.

    0.1.2release notes

  • Setting comments to false now removes HTML-style JavaScript comments in scripts, including in native transform phases that return unchanged input.

    0.1.2release notes

  • Decorator lowering fixes legacy ordering and accessor metadata, supports rest-parameter decorators, and preserves class replacement and auto-accessor storage.

    0.1.2release notes

  • Editor replacements follow global and sticky regular expressions, handle Unicode empty matches and named captures, and reject invalid offsets before encoding.

    0.1.2release notes

  • The published ESM entry defines require and __dirname from import.meta.url before native initialization; CommonJS loading is unchanged.

    0.1.2release notes

  • Exponentiation assignment preserves receivers across computed-key effects, and generated temporaries are isolated during recursive parameter-default evaluation.

    0.1.2release notes

  • For-of loops use Babel's standard createForOfIteratorHelper in inline and runtime modes, adopting its iterator lookup and cleanup semantics.

    0.1.2release notes

  • Inline helpers preserve bindings, dependencies, directives, hashbangs, and source maps; adapter imports are emitted in ES modules.

    0.1.2release notes

  • Static member matching requires declared native facts; literal dots and backslashes in property names are escaped in memberPath strings.

    0.1.2release notes

  • Values crossing native transport retain distinctions for negative zero, non-finite numbers, null, numeric-looking strings, and strings Rust UTF-8 cannot hold.

    0.1.2release notes

  • Object-rest lowering is unified across option modes; array rest copies values without invoking source slice or species hooks.

    0.1.2release notes

  • Optimization preserves references, names, bindings, globals, eval visibility, and dynamic writes, and avoids misinterpreting isolated-surrogate string expressions.

    0.1.2release notes

  • Optional-chain lowering preserves method receivers across mutation, keeps parameter temporaries invocation-local, and honors grouped delete and call references.

    0.1.2release notes

  • Logical-assignment receivers are preserved across private getter effects and regexp allocations, and selected nullish lowering finishes in the same phase.

    0.1.2release notes

  • Program insertion preserves directive and statement boundaries, adding an empty statement when needed to prevent attachment to the inserted statement.

    0.1.2release notes

  • Transforms preserve diagnostic thresholds, run later transforms exactly once, retain helpers and Refresh registrations, and honor directives and memo-cache invalidation.

    0.1.2release notes

  • Regexp lowering preserves token contexts, flags, Unicode boundaries, set operations, string alternatives, and named capture metadata.

    0.1.2release notes

  • Scope renaming, UID allocation, ownership, and declaration insertion handle escaped identifiers, Unicode names, binding references, and supported statement locations correctly.

    0.1.2release notes

  • Composed transforms preserve sparse anchors, unmapped regions, original symbol names, and explicit fragment mapping policies; visitor and declaration locations account for JavaScript line terminators and Unicode header trivia.

    0.1.2release notes

  • Custom JSX factory and fragment imports survive TypeScript prepasses, unused forward alias dependencies are removed without module evaluation, and enum initializer effects are retained.

    0.1.2release notes

  • Object spread retains strict semantics when useBuiltIns is enabled; classic JSX props completion is limited to calls originating from JSX elements.

    0.1.2release notes

  • Nested contracts retain declared data, aliases classify function and class instances, matching routes run once, and skip or stop applies across a plugin's routes.

    0.1.2release notes