···11----
22-'moroutine': patch
33----
44-55-Fix `Cannot find module .../dist/worker-entry.ts` when consuming the published build. The worker entry URL was hardcoded to `./worker-entry.ts` as a string literal, so tsc's extension rewriting (which only handles import specifiers) left it unchanged in `dist/*.js`. Now derived from `import.meta.url` so src uses `.ts` and dist uses `.js`.
-10
.changeset/inert-and-map.md
···11----
22-'moroutine': minor
33----
44-55-Add `inert()` and `map()` helpers for fan-out over a worker pool
66-77-- `inert(task)` returns a plain task descriptor without `PromiseLike` or `AsyncIterable` protocols — safe to yield from an (async) generator without triggering auto-await
88-- `map(run, items, { concurrency, signal })` dispatches an iterable or async iterable of tasks to a `Runner` with bounded concurrency, yielding results in completion order; accepts mixed task types (`Task<string> | Task<number>` → `string | number`)
99-- New example: `examples/bounded-map` — recursive directory walk hashing every file with bounded concurrency
1010-- `Task<T, A>` now carries a type-only arg brand to enable accurate result inference through `map()`; live tasks returned by `mo()` continue to be `PromiseLike<T>` / `AsyncIterable<T>` as before
-16
.changeset/is-task.md
···11----
22-'moroutine': minor
33----
44-55-Add `isTask()` type guard for narrowing tasks to a specific moroutine
66-77-```ts
88-if (isTask(isPrime, task)) {
99- // task: Task<boolean, [n: number]>
1010- const [n] = task.args;
1111-}
1212-```
1313-1414-- Moroutines returned by `mo()` now expose a readonly `id` for stable identity
1515-- `isTask(mo, task)` returns `true` when `task` was produced by `mo`, and narrows the task to the descriptor type produced by that moroutine
1616-- `Task<T, A>.args` is now typed as `A` (previously `unknown[]`) so narrowing propagates to argument access — unchanged for `Task<T>` without a specialized arg tuple
+27
CHANGELOG.md
···11# moroutine
2233+## 1.1.0
44+55+### Minor Changes
66+77+- 25ea1c1: Add `inert()` and `map()` helpers for fan-out over a worker pool
88+ - `inert(task)` returns a plain task descriptor without `PromiseLike` or `AsyncIterable` protocols — safe to yield from an (async) generator without triggering auto-await
99+ - `map(run, items, { concurrency, signal })` dispatches an iterable or async iterable of tasks to a `Runner` with bounded concurrency, yielding results in completion order; accepts mixed task types (`Task<string> | Task<number>` → `string | number`)
1010+ - New example: `examples/bounded-map` — recursive directory walk hashing every file with bounded concurrency
1111+ - `Task<T, A>` now carries a type-only arg brand to enable accurate result inference through `map()`; live tasks returned by `mo()` continue to be `PromiseLike<T>` / `AsyncIterable<T>` as before
1212+1313+- 4ef12db: Add `isTask()` type guard for narrowing tasks to a specific moroutine
1414+1515+ ```ts
1616+ if (isTask(isPrime, task)) {
1717+ // task: Task<boolean, [n: number]>
1818+ const [n] = task.args;
1919+ }
2020+ ```
2121+2222+ - Moroutines returned by `mo()` now expose a readonly `id` for stable identity
2323+ - `isTask(mo, task)` returns `true` when `task` was produced by `mo`, and narrows the task to the descriptor type produced by that moroutine
2424+ - `Task<T, A>.args` is now typed as `A` (previously `unknown[]`) so narrowing propagates to argument access — unchanged for `Task<T>` without a specialized arg tuple
2525+2626+### Patch Changes
2727+2828+- e2cebd5: Fix `Cannot find module .../dist/worker-entry.ts` when consuming the published build. The worker entry URL was hardcoded to `./worker-entry.ts` as a string literal, so tsc's extension rewriting (which only handles import specifiers) left it unchanged in `dist/*.js`. Now derived from `import.meta.url` so src uses `.ts` and dist uses `.js`.
2929+330## 1.0.0
431532### Major Changes