Releases: meslzy/outdo
Releases · meslzy/outdo
Release list
v0.0.1
First release.
Task authoring
- Typed
do.tsviadefineTasks()/task()— compile-time dependency
checking with did-you-mean, typedenv(Standard Schema: zod / valibot /
arktype) validated before anything runs, typed per-task CLIargswith
auto-generated--helpand shell completions. - Conditional deps (
{ task, if: "CI" | (env) => boolean }) and optional deps
(optional("name")). - Task data outputs:
run()'s return value flows to dependents via
ctx.deps, typed end-to-end withfrom(), replayed from cache on hits.
Execution
- Parallel DAG scheduler with fail-fast,
--continue, multiplexed output,
and an in-process fast path for pure dependency chains. - Services (
persistent: true) with readiness probes
(ready: { log | url | port }) gating dependents. - Opt-in
retrypolicies and per-attempttimeoutMs. - Watch mode with affected-subgraph re-runs and service restarts.
Caching
- Fingerprint cache (content-hashed inputs with an mtime+size fast path,
task definition, env output, args, dep fingerprints, dep data outputs). outdo explain <task>— per-component cache diagnosis without running.
Monorepos
- Bun workspace awareness (
pkg#task, bare-name fan-out,--filter
microsyntax) and git-aware--affected[=rev]selection.
Hardening (pre-release review)
- A full-code review pass fixed 25+ confirmed defects before first publish,
including: an IPC race that could report a green task as failed; unenforceable
in-process timeouts (timeout plans now always use the child backend); cache
I/O failures crashing the scheduler (now degrade to uncached success); empty
ctx.argsin multi-task runs;--affectedsilently doing nothing on failing
git commands, non-ASCII paths, and subdirectory repos; garbled zsh
completions; a constructible cache-fingerprint collision; watch-mode error
handling (watcher errors now fall back to polling, Ctrl-C aborts in-flight
re-runs); UTF-8-safe multiplexed output with per-fd grouped flushing; and
--output-logs=errors-onlynow working in stream order.
Observability & automation
--jsonrun report (per-task status, timing, cache result, critical path),
--profileChrome trace export,ls --json,graph --json,--dry=json,
--print-env --json, stable exit codes, machine-readable errors,
llms.txton the docs site.