Skip to content

Releases: EternityForest/KaithemAutomation

v0.87.0

03 Jan 03:26
Compare
Choose a tag to compare

Breaking changes

  • ⚰️ filename_for_resource is deprecated due to confusing name, use filename_for_file
    _resource instead.
  • 🐛 Map MIDI names to message bus topics without the 128:0 part that can change between sessions.
  • 🐛 MIDI channels in Chandler events, message bus topics, and tag names are one-based, to match almost every other app, instead of zero based to match the raw binary.

Other Changes

  • ✨ Persist login sessions across reboots
  • 🐛 Fix deleting file resources from modules page
  • ✨ widget.mjs notficiations on disconnect and reconnect
  • ✨ "Apps" page for quick access to things like chandler boards.
  • 🐛 Fix media link remote "Ding" buttons.
  • ✨ Mixer channel beat detection
  • 🐛 Fix deadlock that could happen if all background thread slots were filled by serialized_async_with_core_lock
  • 🐛 Fix pagination of tag points pages
  • ✨ __next__ special cue
  • ✨ Creating or cloning cues inserts after selected
  • 🐛 Fix importing fixture presets
  • ✨ Rework old chandler import/export feature
  • 🧑‍💻 Support for Snap packages is no longer a long term priority
  • 🐛 Fix total failure to load chandler data if cue param is corrupted
  • 🐛 Fix issues if inherit_rules is a nonexistant cue.
  • 🐛 Fix default cue not starting up properly
  • 🐛 Fix chandler board leaving behind fixture assignments when deleted
  • 🐛 Fix list of ports not updating until refresh
  • 🐛 Fix a very uncommon deadlock in the widgets module discovered through automated testing.
  • 🐛 Fix saved presets not showing up in list in mixer
  • 🐛 Fix cue shortcut codes not correctly cleaned up
  • 🧑‍💻 Log a warning if a tag point is not explicitly unsubscribed
  • 🐛 Spurious "Still Running" indicator in events
  • 🐛 Fix slideshow transform sometimes not being editable
  • 🐛 Fix blend mode detail editing
  • 🐛 Fix sound not playing in web player
  • 🐛 Fix edge case where silent cues that had fade in set did not fade out
  • 🐛 Media wind down sounds much better
  • ✨ UI notification if you try jumping to cue in inactive group
  • 🐛 Fix file data not showing up till manual rescan after uploading zip module
  • 🐛 Fix tag point aliases not being correctly cleaned up
  • 🐛 Fix not being able to move internal module to external
  • 🐛 Fix bug where failed add_data_pusher_to_all_boards function would retry forever

0.86.3

07 Dec 05:27
Compare
Choose a tag to compare

0.86.3

  • 🐛 Fix preset edting dialog
  • 🐛 Fix device interactive discovery
  • ✨ ~30 default color presets matched to common DMX fixtures
  • ✨ Library modules loaded as links
  • 🐛 Don't change timestamps when loading external module
  • ✨ Presets and range effects work better together
  • 🐛 Fix gen shortcut button
  • 🐛 Fix race condition that caused chandler to not reliably load on mobile
  • ✨ Keystone correction, rotation, scaling for Chandler slideshow
  • ⚰️ /user_static removed, use file server resources instead
  • 🐛 Fix world maps page

v0.86.2

20 Nov 22:48
Compare
Choose a tag to compare

0.86.2
This release is all about ES modules. I've decided to pretty much completely move on from non-module JS, and as kaithem is not yet 1.0, this will be a hard breaking change that affects most custom JS, requiring minor(a few lines) changes.

It does not affect anything not using custom HTML/JS

🧑‍💻 Dependabot and the general ecosystem have spoken. No more dev branch, we're not using Gitflow.
🧑‍💻 80 line limit.
🐛 Fix bug where the loop sound feature interacted badly with relative length
✨ Widget API will no longer send old failed messages on reconnected after 5 seconds
🐛 Fix nuisance gitgub flavor not found error
✨ Chandler logic lets you use =+ tv("TagName") to trigger when a tag changes to a nonzero value.
✨ Improve chandler autocomplete suggestions
💄 Alerts more visible on devices pages
🐛 Delete button on devices page works correctly
✨ Switch to https://reallyfreegeoip.org/ for the one time location lookup
✨ kaithem.api.web.render_html_file function for fully client side apps
✨ When setting a @time length, give a popup so you can tell if it was parsed correctly
✨ At boot, logs changes in the environment like installed system packages.
💄 Make cue notes more visible
💄 Less log clouter for notifications
✨ ArduinoCogs support improved.
🐛 i/o error checker stalling bug
💥 BREAKING
widget.mjs along with several other internals are now esm modules. Normal non-esm JS is deprecated or legacy pretty much everywhere.

If you're doing custom JS/Python work with an APIWidget, you'll need to give the APIWidget a widget ID, or fetch the generated one from widget.id, and import it's special API script:

<script type="module">
   import { kaithemapi, APIWidget} from "/static/js/widget.mjs"
    let api = new APIWidget("widget_id")
    api.upd = (val) => alert(val)
    api.send("MyValue")
</script>

Use:

import { kaithemapi } from "/static/js/widget.mjs"

if you need to access the widget API directly.

v0.86.0

12 Sep 02:37
Compare
Choose a tag to compare

0.86.0

This release took a while, because so many tests had to be rewritten for the Popover API based UI.
Chandler should be much nicer to use now, especially on Mobile!

Added

  • ✨ Cue provider system lets you quickly create playists from folders of media
  • ✨ Mount/Unmount disks from devices page
  • ✨ Add the module_lock key to the module's __metadata__.yaml to protect from changes via GUI.
  • ✨ Popover-based UI overhaul for Chandler.

v0.85.0

06 Jul 05:36
Compare
Choose a tag to compare

0.85.0

This is possibly the biggest release ever!

Removed

  • ⚰️ control and __variables__ chandler universes
  • ⚰️ Tab to space option: Spaces are always used
  • ⚰️ Screen rotate setting that didn't work on Wayland
  • ⚰️ The alert sounds system has been removed. It is suggested to use an automation rule on /sys/alerts.level.
  • ⚰️ The setting for universe channel count. They're just always max size now.
  • ⚰️ Most of the integrated self tests removed. Hardware related tests are staying.
  • ⚰️ RTP features in the Mixing Board. They will return at some point as a separate feature outside the FX chain.

Added

  • ✨ Can now set a label image for a cue
  • ✨ Presets named foo@fixture are only usable for that fixture or fixture type.
  • ✨ Improved preset picker UI
  • ✨ Can set images for presets
  • ✨ Preset and cue images specified as 16/9
  • ✨ File server resources are browsable
  • ✨ File resource thumbnails
  • ✨ File resource audio previews
  • ✨ Excalidraw integration to draw labels and add documentation to modules
  • ✨ Excalidraw labeling for presets, resources, fixtures, cues, and mixer channels
  • ✨ Retire the original error.ogg file. alert.ogg and error.ogg are now aliases for new files.
  • ✨ All the core web UI sounds are available in chandler
  • ✨ New "Enable Default Alerts" option to disable all the alerts a device sets.
  • ✨ Compact view for chandler cues

Changed

  • 💥 Chandler "Scenes" have been renamed to "Groups" to disambiguate from "Cues" and follow stage lighting practice. This should not be a breaking change, anything user facing gets migrated automatically.

  • 💥 Chandler GotoCue commands no longer stop execution of the current event.

  • 💥 Chandler GotoCue, shortcut, and event happens in the next frame

  • 💥 Tag points and the message bus use system time, not monotonic.

  • 💥 Tag points under /jackmixer/ renamed to just mixer

Fixed

  • 🐛 Fix setting media folders
  • 🐛 Fix beholder media playback and other things using subfolders of user pages
  • 🐛 Fix OPZ DMX Definition import
  • 🐛 Fix incorrect fixture type mouseover display
  • 🐛 Fix deleting file resources
  • 🐛 Fix get file resource path API
  • 🐛 Fix coarse/fine channels
  • 🐛 Use a cache busting value in urls so the browser knows to refresh
  • 🐛 Fix countdown timers with unusual bpm values
  • 🐛 Fix digital signage permission issue
  • 🐛 Fix digital signage unable to start midway through media
  • 🐛 Fix delete button in file manager
  • 🐛 Fix Vary blend mode
  • 🐛 Fix Flicker blend mode performance
  • 🐛 Fix editing blend mode params
  • 🐛 Tag point universes always update on cue even if not changed
  • 🐛 Fix bug where a fade in the middle of another fade could be a sudden jump
  • 🐛 Fix cue and group autocomplete in script editor
  • 🐛 Mixer sends work
  • 🐛 Fix recurring time selectors being a few seconds off

0.84.0b2

12 Jun 18:54
Compare
Choose a tag to compare

0.84.0b2

Added

  • ✨ More YoLink devices

Fixed

  • 🐛 Updated icemedia version fixes thread leak
  • 🐛 Fix import resource from yaml
  • 🐛 Sunrise and sunset times should be fixed
  • 🐛 Require confirm checkbox was showing incorrect value
  • 🐛 Missing file for lair.css theme
  • 🐛 Fixture values were not applied on boot until the first cue transition
  • 🐛 Fix issue where all black frames could get inserted in DMX output
  • 🐛 Improve the UI for the fxture assignments setup
  • 🐛 Fix fading from a cue that has a fixture to a non-tracking one that doesn't
  • 🐛 Fix inability to access manage page for subdevices

Changed

  • 💥 Use pyephem instead of astral due to this issue

Removed

  • ⚰️ Rahu calculations removed due to switching libraries

Internally, the separate "affect" variabl used in lighting rendering has been refactored away.

0.84.0b1

09 Jun 22:17
Compare
Choose a tag to compare

0.84.0b1

Added

  • ⚰️ Fileserver resource types allow you to serve a directory of files as if it were at /pages/module/resourcename. This replaces the old individual file permissions.

  • ✨ Lots of testing!

  • ✨ Now available on pypi!

Removed

  • ⚰️ Web console removed due to lack of ASGI but may return later
  • ⚰️ BREAKING. The internal fileref system. Instead, files in modules are just simple files under __filedata__

Changed

  • ✨ Move to the quart framework instead of cherrypy. Everything is fully ASGI based.
  • 💥 Logging out just logs out your client, not all clients on that user
  • ✨ Most loggers moved to __name__ instead of system
  • 💥 Tag point name normalization replaces x[foo] with x.foo for consistency.

Fixed

  • 🐛 Fix page XSS options
  • 🐛 Fix mixer level meters in new channels not immediately responding till you refresh the page
  • 🐛 Fix very old bug where widget messages could be one message behind if sent rapidly, and the newest wouldn't be sent till something else triggered send. Chandler sliders should be much smoother.
  • 🐛 Fix ancient race condition where widgets would subscribe before page load, and then the onpageload data happened before there was anything to recieve it.
  • 🐛 Fix MIDI integration

0.83.0

02 Jun 21:05
Compare
Choose a tag to compare

0.83.0

Barring unforseen events, this will be the last release using CherryPy and Tornado. Any APIs that reference them are deprecated.

Future versions will use Quart and will be fully ASGI-based.

Fixed
🐛 Bring back displaying errors on page editing UI
🐛 Fix moving a page resource
🐛 Static .vue files served with bad MIME type breaking tests
🐛 Guard against module or resource starting with /
🐛 Fix hashing new modules
🐛 :security: User page permissions were being removed on re-save.
🐛 :security: Because of this, please update to the new version of the Beholder module
Changed
💥 Schema for tag history changed for daasette compatibility.
💄 LoC count excludes tests.
Removed
⚰️ Experimental sqlite browser that didn't get much interest.
⚰️ yt-dlp integration removed.
⚰️ Monitor scenes removed
Added
✨ Usable RTP Opus listener to stream over network.
✨ kaithem.api.web.add_asgi_app
✨ e2e tests with Playwright
✨ Colorful log output with structlog
Dev Info
New pytest tests: 1 New Playwright tests: 4

0.82.0

09 May 21:49
Compare
Choose a tag to compare

0.82.0

This release brings compatibility with Python 3.12 and Ubuntu 24.04

Fixed

  • ✨ Jinja2 bytecode cache gives a very extreme speedup to certain page lodad
  • ✨ Minor visual glitches
  • 🐛 Fix deleting motion detection regions
  • 🐛 Object tags didn't disply right
  • 🐛 Module search pages
  • 🐛 Certain custom resource types could not be created in folders.
  • 🐛 Page editor robustness against missing keys
  • 🐛 Dashboard correctly shows the default value even if it hasn't been set yet.
  • 🐛 Message log page

Changed

  • ✨ -d now sets the kaithem data dir, -c removed. config.yaml now always in root of dir.

  • ✨ Module hashes use a different algorithm, the BIP0039 wordlist, and base32 instead of hex for display.

  • ✨ Use Argon2id for user passwords.

  • ✨ Use niquests instead of requests.

  • ✨ NVRChannel uses cv2.dnn for Py3.12 compatibility.

Added

  • ✨ Chandler "shell" command lets you run stuff in the system shell. Use with care!
  • make dev-count-lines command to roughly track codebase changes.
  • ✨ Leaving the chandler editor page triggers autosave if there were changes.

Removed

  • ⚰️ Video filters removed from Beholder
  • ⚰️ The module[resource] APIs are removed. Use kaithem.api.modules instead.

Line Counts

(Note, pygount doesn't detect languages perfectly, the HTML is atually only Mako and Jinja2)

┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━┓
┃ Language               ┃ Files ┃     % ┃  Code ┃     % ┃ Comment ┃    % ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━━━╇━━━━━━┩
│ Python                 │   122 │  29.4 │ 22517 │  62.1 │    3993 │ 11.0 │
│ RHTML                  │    62 │  14.9 │  5078 │  74.4 │      27 │  0.4 │
│ Markdown               │    33 │   8.0 │  4040 │  69.4 │      19 │  0.3 │
│ CSS+Lasso              │    17 │   4.1 │  3115 │  56.5 │     268 │  4.9 │
│ HTML+Django/Jinja      │    18 │   4.3 │  1997 │  77.3 │      24 │  0.9 │
│ HTML+Genshi            │    13 │   3.1 │  1843 │  69.1 │      62 │  2.3 │
│ HTML                   │    23 │   5.5 │  1387 │  77.9 │      55 │  3.1 │
│ JavaScript+Genshi Text │     3 │   0.7 │  1078 │  50.2 │     134 │  6.2 │
│ YAML                   │    11 │   2.7 │   822 │  74.7 │      83 │  7.5 │
│ Bash                   │    12 │   2.9 │   328 │  29.2 │     147 │ 13.1 │
│ JavaScript             │     2 │   0.5 │   300 │  56.3 │       8 │  1.5 │
│ Text only              │     1 │   0.2 │   109 │  90.1 │       0 │  0.0 │
│ JavaScript+Ruby        │     1 │   0.2 │     8 │ 100.0 │       0 │  0.0 │
│ JSON                   │     1 │   0.2 │     4 │  57.1 │       0 │  0.0 │
│ __unknown__            │    18 │   4.3 │     0 │   0.0 │       0 │  0.0 │
│ __empty__              │     1 │   0.2 │     0 │   0.0 │       0 │  0.0 │
│ __duplicate__          │    12 │   2.9 │     0 │   0.0 │       0 │  0.0 │
│ __binary__             │    65 │  15.7 │     0 │   0.0 │       0 │  0.0 │
├────────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────┤
│ Sum                    │   415 │ 100.0 │ 42626 │  64.1 │    4820 │  7.3 │
└────────────────────────┴───────┴───────┴───────┴───────┴─────────┴──────┘

0.81.0

30 Apr 04:23
Compare
Choose a tag to compare

0.81.0

Changed

  • 🔒 New enumerate_endpoints permission required for things that could otherwise reveal the existance or nonexistance of an object without actually giving access to it.

Removed

  • ⚰️ Most widgets other than DataSource and APIWidget are finally gone. That was decade old unmaintained code, one of the last remaining bits of antigue code.

Added

  • ✨ The picodash system replaces widgets with a much easier to use set of custom HTML elements. Documentation coming soon!
  • ✨ Nicer error pages
  • 🔨 Unit testing for the YAML upload/download, which used to be buggy.

Fixed

  • 🐛 Certain commands in chandler like sending a ding to a web player.
  • 🐛 Up/Dowload modules.