Tags

Tags give the ability to mark specific points in history as being important
  • 2.11.0

    - List the log files of suvi and its tasks, rotated ones included, behind a new
      files icon next to json and txt on the global log and every task log page, each
      with a link to view it as plain text and one to download it.
    - List all of these files with their size and date at `/logfiles.json`.
    - Serve only files named after suvi or a task config file, so a log directory
      shared with other programs exposes nothing else.
    - Compress responses while they stream instead of holding the whole body in
      memory, and leave byte range answers uncompressed.
    - Keep webhook tokens out of the log, which every user login can read. The log
      names the position of the token in the task config file instead, i. e.
      `hook token #2`. Log files written before keep their tokens until they rotate out.
    - Escape line breaks inside a log entry as `\n`, `\r` and the like, so that one
      entry is always one line of the log file and a webhook call or a login name can
      no longer write a forged entry.
  • 2.10.0

    - Move the web interface to the ECMind Bootstrap theme, vendored from
      `https://ecmind-css.api.ecmind.ch/ecmind-css/dist/ecmind.min.css`.
    - Follow the browser's light/dark preference automatically and switch over live
      when it changes.
    - Vendor the two theme fonts, Open Sans and JetBrains Mono, as woff2 in their
      latin and latin extended subsets. suvi loads nothing from the internet.
    - Drop plain Bootstrap, jQuery, which nothing used, and the ECMind color
      overrides in `site.css` that the theme now brings itself.
    - Draw the action icons as CSS masks, so they take the text color of their
      context in both themes instead of staying black.
    - Pick the suvi and ECMind logos per theme instead of always showing the light
      variant.
    - Let wide tables scroll on narrow screens instead of running off the page.
    - Replace every icon with its counterpart from the current Phosphor 2.1.1 regular
      set, which drops the last Phosphor 1.x exports. The suvi and ECMind logos stay.
    - Remove stray `</main>` and `</body>` tags from the task info page.
  • 2.9.2

    - Fix `/tasks.json` answering with a 500 since version 2.4.0, where the task files
      became `Task` objects that `jsonify` cannot serialize.
    - Build the endpoint from the new `Task.as_dict()`, which writes the fields of the
      task config file plus the runtime data, i. e. whether a keepalive task is running.
    - Leave the webhook tokens of a task out of that output.
  • 2.9.1

    - Expand the five schedule fields once while loading a task, so that matching a
      schedule can no longer fail at runtime.
    - Fix a single malformed schedule killing the scheduler thread, which silently
      stopped every scheduled task until the next restart.
    - Support ranges with a step like `1-23/2`, which raised an error before.
    - Support english month and weekday names like `jan`, `january`, `mon` or `mon-fri`.
    - Accept numbers with a leading zero like `01`.
    - Log unusable schedule elements as a warning instead of ignoring them silently.
    - Document the two places where suvi deviates from vixie cron, namely `*/n` steps
      in the day, month and weekday field and a schedule that restricts the day of
      month and the weekday at once. Existing schedules keep firing unchanged.
  • 2.9.0

    - Allow suvi to be served below a sub path by a reverse proxy.
    - New options `--url-prefix`, `--url-scheme` and `--trusted-proxy`.
    - Build all static file links relative to the sub path.
    - Scope the session cookie to the sub path and mark it `Secure` for `https`.
    - Render the task, process and task log lists on the server again instead of
      leaving the page empty until htmx has fetched them.
    - Remove stray `</main>` and `</body>` tags from the task log list partial.
    - Let browsers cache static files and stamp their links with the file date,
      so a page change no longer reloads the stylesheets.
    - Compress text responses, which shrinks a full log page from 270 KB to 5 KB.
      Uncompressed, such a page delayed its own stylesheets and showed up unstyled.
    - New option `--threads`, raising the default from waitress' 4 to 8.
  • 2.8.2

    - Fix stop, remove and reload buttons for task names with special characters like `#`.
    - Encode the task name in the redirect after starting a task.
    - Fix task config files with a dot in their name never being loaded.
  • 2.8.1

    - Allow task args to be an array of arrays to run subsequent programs (and break if one fails).
    - `requirements.txt` added.
  • 2.8.0

    0515c97c · Login with session cookie ·
    - Login with `/login` (+ `/logout`) with a signed session cookie.
    - New options `--secret-key` and `--session-days`.
  • 2.7.9

    - Auto-reload pauses while text is selected to make copying text possible.
  • 2.7.8

    - Tasklist with lesser updates, based on `cycle_wait`/2.
    - Tasklist does not reload (and clear the filter) when selecting reload for ondemand tasks or schedules.
  • 2.7.7

    Catch UnicodeDecodeError in task parser.
  • 2.7.6

    f4f4877d · Typo ·
    Allow more complex schedules with slash and dash elements like `*/2` and `1-3,5-9`.
  • 2.7.5

    Fix file log handler writing all task logs only to `suvi.log`
  • 2.7.4

    - Remove linting errors
    - Code formatting
    - Visual cleanups
    - Navbar indicators
  • 2.7.3

    - Updated colouring in ECMind 2025 style
    - Remove spinners in search boxes
  • 2.7.2

    - Change to open source icons by [phosphoricons.com](https://phosphoricons.com/)
    - Smaller visual updates
  • 2.7.1

    61a9a317 · Rely on LICENSE file ·
    Add & display GPLv3