All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Info for all packagers:
In case you updated your packaging rules for the new layout, those changes need to be reverted.
The new repository layout with workspaces didn't work out that well.
Managing two crates in a single repository in combination with cargo release
turned out to be quite annoying.
--all-failed
flag forrestart
. This will restart all tasks that didn't finish with aSuccess
status.
- Rename/change some flags on the
restart
subcommand.- Rename
--path
to--edit-path
. The short flag stays the same (p
). - Rename the short flag for
--start-immediately
to-k
.
- Rename
-s
flag overload on therestart
command.--start-immediately
and--stashed
collided.
- Readability of the
log
command has been further improved. - Dependency update to pueue-lib v0.11.2
- Wrong version (
pueue-v0.11.0-alpha.0
) due to an error in the build process with the new project structure.
- Add the
--lines
flag to thelog
subcommand. This is used to only show the last X lines of each task's stdout and stderr. - Add the
--full
flag to thelog
subcommand. This is used to show the whole logfile of each task's stdout and stderr. - Add the
--successful-only
flag to theclean
subcommand. This let's keep you all important logs of failed tasks, while freeing up some screen space.
- If multiple tasks are selected,
log
now only shows the last few lines for each log. You can use the new--full
option to get the old behavior.
- It was possible to remove tasks with active dependants, i.e. tasks which have a dependency and didn't finish yet. This didn't lead to any crashes, but could lead to unwanted behavior, since the dependant tasks simply started due to the dependency no longer existing. It's however still possible to delete dependencies as long as their dependants are deleted as well.
- panic, when using
pueue status
and only having tasks in non-default groups.
This release adds a lot of breaking changes! I tried to clean up, refactor and streamline as much code as possible.
v0.10.0
aims to be the last release before hitting v1.0.0.
From that point on I'll try to maintain backward compatibility for as long as possible (v2.0.0).
Please read this changelog carefully.
- Use TLS encryption for all TCP communication.
- Updated Crossterm and thereby bump the required rust version to
1.48
. - Extract the shared
secret
into a separate file. This will allow users to publicly sync their config directory between machines. - Change default secret length from 20 to 512 chars.
- Any unix socket code or configuration stuff has been removed, when building for Windows.
- Lots of internal code cleanup/refactoring/restructuring.
- Exit client with non-zero exit code when getting a failure message from the daemon.
- The
group
list output has been properly styled. - Use unix sockets by default on unix systems.
- Add the
shared.host
configuration variable. This finally allows to accept outside connections, but comes with some security implications. - Create a self-signed ECDSA cert/key for TLS crypto with rcgen.
- Error messages have been improved in many places.
daemon.pause_all_on_failure
config, which actually pauses all groups as soon as a task fails.daemon.pause_group_on_failure
config, which only pauses the group of the affected task instead of everything.- Users can add some additional information to tasks with the
task add --label $LABEL
option, which will be displayed when callingpueue status
. --escape
flag on theadd
subcommand, which takes all given Parameter strings and escapes special characters.- Remove
--task-ids
forwait
. Now it's used the same way as start/kill/pause etc.
- Removed the
daemon.pause_on_failure
configuration variable in favor of the other two previously mentioned options. - Removed the
--port
and--unix-socket-path
cli flags on client in favor of the--config
flag. - Removed the
--port
flag on the daemon in favor of the--config
flag.
- Properly pass
--config
CLI argument to daemonizedpueued
instance. - The
--default
flag on thekill
command has been removed, since this was the default anyway. That makes this command's behavior consistent with thestart
andpause
command. - Allow the old
kill [task_ids...]
behavior. You no longer need the-t
flag to kill a tasks. This broke in one of the previous refactorings.
- The default group is now an actual group.
- The
wait
subcommand. This allows you to wait for all tasks in the default queue/ a specific group to finish. On top of this, you can also specify specific tasks ids. - New client configuration
show_expanded_aliases
(default:false
). Determines whether the original input command or the expanded alias will be shown when callingstatus
. - New
--in-place
option forrestart
, which resets and reuses the existing task instead of creating a new one.
- Don't update the status of tasks with failed dependencies on paused queues.
This allows to fix dependency chains without having to restart all tasks in combination with the
pause_on_failure
and the new--in-place
restart option.
pause_on_failure
pauses the group of the failed tasks. Previously this always paused the default queue.- Properly display version when using
-V
. - Execute callbacks for tasks with failed dependencies.
- Execute callbacks for tasks that failed to spawn at all.
- Persist state changes when handling tasks that failed to spawn.
- Set proper start/end times for all tasks that failed in any way.
- The original user command will be used when editing a task's command. As a result of this, aliases will be re-applied after editing a command.
- Add
exit_code
parameter to callback hooks. - Add a confirmation message when using
reset
with running tasks by quebin31.
- Update to beta branch of Clap v3. Mainly for better auto-completion scripts.
- Add
start
,end
andenqueue
time parameters to callback hooks by soruh. - Config flag to truncate content in 'status'.
- ZSH completion script fix by ahkrr.
This version adds breaking changes:
- The configuration file structure has been changed. There's now a
shared
section. - The configuration files have been moved to a dedicated
pueue
subdirectory.
- Unix socket support (#90)
- New option to specify a configuration file on startup for daemon and client.
- Warning messages for removing/killing tasks (#111) by Julian Kaindl
- Better message on
pueue group
, when there are no groups yet. - Guide on how to connect to remote hosts via ssh port forwarding.
- Move a lot of documentation from the README and FAQ into Github's wiki. The docs have been restructured at the same time.
- Never create a default config when starting the client. Only starting the daemon can do that.
- Better error messages when connecting with wrong secret.
- Windows: The configuration file will now also be placed in
%APPDATA%\Local\pueue
.
- Fixed panic, when killing and immediately removing a task. (#119)
- Fixed broken non-responsive daemon, on panic in threads. (#119)
- Don't allow empty commands on
add
. - The client will never persist/write the configuration file. (#116)
- The daemon will only persist configuration file on startup, if anything changes. (#116)
- (Probably fixed) Malformed configuration file. (#116)
- Non-existing tasks were displayed as successfully removed. (#108)
- Remove child process handling logic for MacOs, since the library simply doesn't support this.
- Remove unneeded
config
features and reduce compile time by ~10%. Contribution by LovecraftianHorror (#112) - Remove futures-timers, effectively reducing compile time by ~14%. (#112)
- Update to comfy-table v1.1.0, reducing compile time by another ~10%. (#112)
- Linux process handling now always sends signals to it's direct children, if the root process is a
sh -c
process. Previously, this behavior was somewhat ambiguous and inconsistent. (#109)
- Update workflow to build arm binaries.
- New
-e
and-p
flags to edit tasks on restart.-e
forcommand
,-p
forpath
. Both can be added at the same time.
- Internal refactoring of the client code. Mostly structure.
- Improved CLI validation. Several subcommands accepted empty task id vectors, when they shouldn't.
- Don't do any code styling, if
stdout
is no tty.
- Fix local
stderr
formatting forlog
. - Fix missing sleep in local
follow
loop, resulting in single core 100% CPU usage.
- New default behavior for
follow
. Implemented by JP-Ellis. - Delete everything in Pueue's
task_logs
folder onreset
.
pueue_aliases.yml
, which allows some shell-like aliasing.-c
flag forkill
andreset
.
--children/-c
flag forstart
andstop
. This sends theSIGSTOP
/SIGSTART
signal not only to the main process of a task, but also to direct children. This is, for instance, useful if you're starting tasks via a shell script.
- Fixed formatting bug in
pueue log
. Fixed by sourcefrog.
- Groups! Tasks can now be assigned to a group. Each group acts as their own queue and each group has their own setting for parallel task execution. Groups can also be paused/resumed individually.
- Added
--group
flag forstatus
. This will only print tasks of a specific group - Add new flags
--default
tokill
. With this flag only tasks in the default queue will be affected. - Users can now specify a custom callback that'll be called whenever tasks finish.
- Environment variable capture. Tasks will now start with the variables of the environment
pueue add
is being called in.
log
now also works on running and paused tasks. It thereby replaces some ofshow
's functionality.- Rename
show
tofollow
. Thefollow
is now only for actually following the output of a single command. follow
(previouslyshow
) now also reads directly from disk, ifread_local_logs
is set totrue
.- The
--all
flag now affects all groups AND the default queue forkill
,start
andpause
.
- Dependencies! This adds the
--after [ids]
option. Implemented by tinou98.
Task with this option will only be started, if all specified dependencies successfully finish. Tasks with failed dependencies will fail as well. - New state
FailedToStart
. Used if the process cannot be started. - New state
DependencyFailed
. Used if any dependency of a task fails. - New config option
read_local_logs
. Default:true
We assume that the daemon and client run on the same machine by default. This removes the need to send logs via socket, since the client can directly read the log files.
Set tofalse
if you, for instance, use Pueue in combination with SSH port forwarding.
- Pueue no longer stores log output in its backup files.
- Process log output is no longer permanently stored in memory. This significantly reduced RAM usage for large log outputs. Huge thanks for helping with this to sourcefrog!
- Process log output is compressed in-memory on read from disk. This leads to reduced bandwidth and RAM usage.
- Set
start
for processes. (Seems to have broken in 0.2.0)
pause_on_failure
configuration flag. Set this to true to pause the daemon as soon as a task fails.- Add
--stashed
flag torestart
. - Add
-p/--path
flag to allow editing of a stashed/queued task's path. - Better network utilization for
pueue log
.
- Respect
Killed
tasks onpueue clean
. - Show
Killed
status inpueue log
. - Fix
pueue log
formatting. - Show daemon status if no tasks exist.
- Better error messages when daemon isn't running.
- New
--delay
flag, which delays enqueueing of a task. Can be used onstart
andenqueue
. Implemented by taylor1791. --stashed
flag forpueue add
to add a task in stashed mode. Implemented by taylor1791.
- Generating completion files moved away from build.rs to the new
pueue completions {shell} {output_dir}
subcommand. This seems to be the proper way to generate completion files with clap. There is abuild_completions.sh
script to build all completion files to the known location for your convenience.
- Fix
edit
command. - Several wrong state restorations after restarting pueue.
- [BUG] Fix wrong TCP receiving logic.
- Automatically create config directory.
- Fix and reword cli help texts.
- Basic Windows support. Huge thanks to Lej77 for implementing this!
- Integrate completion script build in
build.rs
.
- Dependency updates
- Change table design of
pueue status
.
- Handle broken UTF8 in
show
with-f
and-e
flags. - Allow restart of
Killed
processes.
- Add --daemonize flag for daemon to daemonize pueued without using a service manager.
- Add
shutdown
subcommand for client for being able to manually kill the pueue daemon.
- Replace prettytables-rs with comfy-table.
- Replace termion with crossterm.