Releases: dtormoen/tsk
v0.8.1
Added
- add configurable auto-cleanup settings to [server] config section
- add override options to retry command (--name, --agent, --stack, --project, --parent)
- expand repo lock scope to cover submodule fetches and post-fetch operations
- replace in-process mutex with cross-process flock(2) file locking in GitSyncManager
- auto-clean old tasks in server mode
Other
- add section descriptions to README command groups
- remove unused get_full_log from LogProcessor trait
v0.8.0
There are a lot of under the hood improvements, but the headlines here are:
- Added a
--parentflag for tasks which allows task chaining. Very powerful
when combined with a Claude Code skill that teaches Claude how to use TSK. - Added automatic tsk-proxy container management so it'll shut down when not in use.
tsk server startwill now kill running containers when you use ctrl-c to exit.- Migrated json task storage to sql and renamed task directories to be just their task ID.
- Added the ability to add a description to your task templates via yaml frontmatter.
Runtsk template listto see task descriptions. - Improved TUI output tables in
tsk listandtsk template listcommands.
Task chaining allows you to specify parent child relationships between tasks. TSK will
wait to schedule a child task until the parent completes and the child will start from
the branch that the parent created.
There are two breaking changes:
- The
tsk proxycommands are removed in favor of automatic proxy container management. - Migrating to SQL storage and simplifying task directory paths. These changes did not
cause issues in my testing, however, this is a large change and there may be cases
that are broken with tasks created before the migration.
Added
- implement graceful server shutdown with container cleanup
- skip cleaning parent tasks with active children
- track shell and run tasks in the database
- replace IPC-based server stop with SIGTERM via PID file
- remove IPC from add and list commands in favor of direct SQLite access
- simplify storage wrapper from Arc<Mutex<Box>> to Arc
- add busy_timeout PRAGMA to SQLite storage for safe concurrent access
- run network isolation tests conditionally in precommit
- add TSK_CONTAINER and TSK_TASK_ID env vars to task containers
- add color coding to status column in tsk list
- support multiple parent IDs in database schema
- remove JsonTaskStorage and clean up legacy JSON references
- add automatic migration from tasks.json to SQLite
- wire SqliteTaskStorage as default storage backend
- add rusqlite dependency and implement SqliteTaskStorage
- add bold+underline styling to table headers
- add frontmatter support to task templates
- add duration column to list and replace table borders with aligned columns
- add task dependency chaining with --parent flag
Other
- remove NotificationClient trait, use concrete type in AppContext
- remove TerminalOperations trait, use concrete type in AppContext
- move DockerBuildLockManager out of AppContext into DockerImageManager
- remove GitOperations trait, extract to free functions
- remove FileSystemOperations trait, extract to free functions
- add comments to justfile recipes and simplify CLAUDE.md dev commands
- [breaking] remove
tsk proxycommand - [breaking] remove repo hash prefix from task directory paths
- add task chaining with --parent to README
v0.7.1
v0.7.0
This version fixes mutltiple ways agents could bypass the proxy and as a result, could
potentially break workflows that relied on that ability. Agents containers now have their
own separate networks without any external access other the proxy and the proxy has a
more restrictive firewall configuration.
To help ensure that there is a way for common workflows to work, this release adds the
ability to forward specific ports to localhost so you can run local services like development
databases or service endpoints and expose those specific endpoints. This release also adds an
way to pass environment varibles to agents via the tsk.toml config file without needing to
create/edit dockerfiles.
Here is an example tsk.toml which configures my-project to pass env variables for Postgres
and Redis which are running on localhost:
[proxy]
host_services = [5432, 6379] # e.g., PostgreSQL, Redis
[project.my-project]
env = [
# Environment variables passed to the container
{ name = "DATABASE_URL", value = "postgres://tsk-proxy:5432/mydb" },
{ name = "REDIS_URL", value = "redis://tsk-proxy:6379" },
]Added
- add per-project environment variable configuration
- harden proxy container with iptables firewall and security options
- add host service TCP port forwarding via socat
- [breaking] implement per-container network isolation for agents
Fixed
- correct proxy container permissions for tmpfs and squid operation
Other
- add network isolation guide with architecture diagrams
- add network isolation test script for container security
v0.6.5
v0.6.4
v0.6.3
Added
- human-friendly Docker resource configuration
- add project-specific configuration with volume mounts
- add TOML configuration file support
- make --name optional for add and run commands
Fixed
- provide test defaults for git config in CI environments
Other
- add configuration file documentation to README
- resolve git author dynamically from repository
- rename TskConfig to TskEnv and TskOptions to TskConfig
v0.6.2
v0.6.1
Added
- add uv to base image
- add quit-when-done mode to server start
Fixed
- add line buffering to Docker log streaming to prevent parse errors
- resolve git fetch errors when copying repos from specific commits
Other
- update deps
- (docker) simplify agent installation and environment setup
v0.6.0
This release has a few large changes. First we've added
codex support! You can now launch codex agents or even
launch multiple agents in parallel:
tsk add --type feat --name greeting --description "Add a greeting to all TSK commands" --agent claude,codexThis will create two tasks that are identical except for claude will work on one and
codex will work on the other. This is great for comparing the performance of different
agents.
We've also simplified TSK commands:
tsk debugis now calledtsk shelltsk quickis now calledtsk runtsk runhas been removed--timeouthas been removed from a few commands as it was not actually implemented- The
claude-codeagent has been renamed toclaudethroughout the codebase
Added
- [breaking] simplify command structure for better UX
- add multi-agent support for task creation
- (codex) improve log processor output quality
- (codex) add JSON log processor with human-readable output
- add codex agent support
Other
- reorganize and enhance README
- improve documentation
- rename claude-code agent to claude