Skip to content

v0.1.13.0

Choose a tag to compare

@grimandgreedy grimandgreedy released this 25 Jan 20:07
· 19 commits to master since this release
2fa8f75

Release Notes - v0.1.13.0

v0.1.13.0 released on pypi

python -m pip install --upgrade aria2tui

New Features

Multiple Instance Support

multiple instances in tabs

  • Connect to multiple aria2 daemons simultaneously - Run multiple aria2c daemons and switch between them in aria2tui using { and }.
  • New instances array configuration format in config.toml - define multiple aria2 connections with different settings
    • README.md updated with new config format. But if you go to edit aria2tui config in the main menu and then click save it will automatically save your config in the newer format.
  • Individual picker states for each instance with proper naming and state management
  • Improved connection testing and error recovery for multi-instance setups
  • Most of the work for this was done in (listpick)[https://github.com/grimandgreedy/listpick] which underwent a major upgrade to the internal state management and now supports the creation of arbitrary PickerState objects which we use here to setup each instance.
# Aria2TUI: config.toml
[[instances]]
name = "Default"
url = "http://localhost"
port = 6800
token = "1234"
startup_commands = ["aria2c"]
restart_commands = ["pkill aria2c && sleep 1 && aria2c"]
aria2_config_path = "~/.config/aria2/aria2.conf"

[[instances]]
name = "Torrents"
url = "http://localhost"
port = 6805
token = "1234"
startup_commands = ["aria2c --conf-path=~/.config/aria2/torrents.conf"]
restart_commands = ["pkill aria2c && sleep 1 && aria2c"]
aria2_config_path = "~/.config/aria2/torrents.conf"

[general]
terminal_file_manager = "yazi"
...

New form-handler

  • New form handler for structured data input and editing. Replaces hacky entry via mutable picker.
  • Add download form interface with better validation & true/false toggles
  • Change download/global options through forms
  • Form-based config editing - edit aria2tui configuration through an interactive form interface
  • First-time startup wizard - generates default config in a form
  • Retry download and change options form
    • Usecase: if you have allow-overwrite=false as the default but want to overwrite partial progress for this one failed download on retry
image

Improvements

UI Enhancements

  • Improved progress bar display
  • Menu refactoring--both main menu and downloads menu have been cleaned up
  • Better logging throughout the application
  • Redirected stderr messages at app launch to prevent TUI distortion
  • Use checkboxes for torrent file selection with progress indicators

Internal Config Management

  • Created a new ConfigManager class which allows:
    • switching between configs (for multiple instance support)
    • hot reload after changing config
  • Updated config structure to allow multiple connections to be specified via the instances array
  • Removed launch_command and paginate from config options.
  • Config can now be modified from the main menu in a form.

Logging

  • Improved logging support

Bug Fixes

  • Prevent crash if connection goes down - added try/catch in getAll() and getGlobalStats()
  • Fixed config editing with multiple instances
  • Fixed config reload functionality
  • Properly close /dev/null file handle using contextlib.redirect_stderr() with atexit cleanup
  • Fixed bug where editing config would automatically save config
  • Fix bitstring to download pieces display in right pane.

Testing

  • Added end-to-end testing framework using Kitty with IPC
  • Still need to implement some key tests (probably need to mock aria endpoints). But the setup is there.