Skip to content

Changelog

Version v0.4.0

What’s Changed

Features

  • Feature slices: New mergeJobTypeRegistries() and mergeJobTypeProcessors() utilities for splitting job type definitions and processors into independent feature modules (slices), then merging them at the application level. Duplicate job types are detected at both compile time and runtime.
  • Cross-slice type safety: defineJobTypes now accepts an optional TExternal type parameter for compile-time validation of blocker and continueWith references across slice boundaries.
  • New type exports: Navigation types (ResolvedJob, ResolvedJobChain, ResolvedJobWithBlockers, etc.), reference types (JobTypeReference, NominalJobTypeReference, StructuralJobTypeReference), and utility types (JobTypeRegistryDefinitions, EntryJobTypeDefinitions, BlockerChains, ContinuationJobs).

Improvements

  • Narrowed trace context types: ObservabilityAdapter and StateAdapter interfaces now use string | null for trace contexts instead of unknown, making types more precise and predictable.
  • Postgres trace context columns changed from jsonb to text for consistency with the narrowed types.

Breaking Changes

  • Trace context types narrowed from unknown to string | null — affects custom ObservabilityAdapter and StateAdapter implementations.
  • Postgres schema: trace columns changed from jsonb to text (migration required).
  • Navigation types renamed: JobOf → ResolvedJob, JobChainOf → ResolvedJobChain, ChainJobTypes → ChainJobTypeNames, BlockedJobTypes → BlockedJobTypeNames, HasBlockers → JobTypeHasBlockers.
  • Handler/callback types renamed: AttemptHandlerFn → AttemptHandler, PrepareFn → AttemptPrepare, CompleteFn → AttemptComplete, CompleteCallbackOptions → AttemptCompleteOptions, PrepareConfig → AttemptPrepareOptions.
  • Registry phantom property $definitions replaced with symbol; use JobTypeRegistryDefinitions<T> utility type instead.
  • PartialJobTypeReference replaced by JobTypeReference union (NominalJobTypeReference | StructuralJobTypeReference).
  • JobTypeRegistryConfig now requires a getTypeNames callback.

Packages

All packages released at 0.4.0: queuert, @queuert/postgres, @queuert/sqlite, @queuert/redis, @queuert/nats, @queuert/otel, @queuert/dashboard.