Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v3.6.0 #2258

Open
wants to merge 39 commits into
base: future3/main
Choose a base branch
from
Open

Release v3.6.0 #2258

wants to merge 39 commits into from

Conversation

AlvinSchiller and others added 2 commits February 12, 2024 00:07
* extract battmon docs into markdown

* Fix typo

* add link to ADS1015
@AlvinSchiller AlvinSchiller added future3 Relates to future3 development Release Informs about a Release candidate labels Feb 14, 2024
@AlvinSchiller AlvinSchiller added this to the v3.6 milestone Feb 14, 2024
@coveralls
Copy link

coveralls commented Feb 14, 2024

Pull Request Test Coverage Report for Build 11988113657

Details

  • 56 of 105 (53.33%) changed or added relevant lines in 4 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.06%) to 38.14%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/jukebox/components/controls/common/evdev_listener.py 0 1 0.0%
src/jukebox/jukebox/utils.py 1 6 16.67%
src/jukebox/components/controls/event_devices/init.py 52 95 54.74%
Totals Coverage Status
Change from base Build 8728942616: -0.06%
Covered Lines: 492
Relevant Lines: 1290

💛 - Coveralls

AlvinSchiller and others added 21 commits February 14, 2024 10:43
* Bump actions/download-artifact from 3 to 4

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v3...v4)

* Bump actions/upload-artifact from 3 to 4

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/[email protected])

* Bump geekyeggo/delete-artifact from 2 to 4

* add write permission for artifact deletion

* ignore fails for artifact deletion

* Revert "ignore fails for artifact deletion"

This reverts commit a759d89.

* Revert "add write permission for artifact deletion"

This reverts commit 1028402.

* remove cleanup stage for now
* remove duplicate rst doc file

* fix link
merge hotfix 3.5.2
* Add event device plugin

This implements an "event device" listener plugin,
that enables the user to configure the phoniebox to
respond to events from an "event device" (device under /dev/input).
This incluces eg button presses from an USB controller or keyboard.

* Adds documentation for the event device plugin

Includes a detailed how-to as well as example config

* Allow empty button config

This is an actual usecase in case someone wants to setup a device
and figure out the button ids by looking at the logs

* Update README.rst

* Improve README

- Remove duplicated section as suggested
- Add Zero Delay Arcade USB Encoder usecase

* Give more meaningfull name to listener thread variable

* Link to old documentation

* Remove README and fix typo

The documentation is now part of the markdown documentation

* Remove unecessary plain=1

* Remove indents in example code

There was some left over indentation from the old rtf format in the python code examples.

* Add example how to access evdev in docker

* Example for new Evdev config structure

This is tighly modeled after gpio.
In contrast to GPIO, this is a list of devices containing
each one or more input/output devices.
Eg a Joystick has keys but potentially also rumble or leds.

Currently only very simply input devices (buttons) are supported.
This structer should enable to extend this easily.

* Move evdev config to separate file

As suggested this should be a separate file, similar to the gpioz config

* Adapt evdev code to new config

Now the config for evdev is akin to GPIO.
The big difference is that multiple devices with each
multiple input/output devices are supported.

Note that the backend is still the old event device listener backend.
Thus to support more features, the backend would need to be
quite drastically overhauled.

* Update documentation for new evdev config format

* Fix wrong reference

* Fix bug to correctly check supported input device type

* Add more tests for evdev init

* Fix wrong attribute name

The attribute 'device_request' of EvDevKeyListener is now called 'device_name_request'

* Validate input config better

Fails if there is no device_name and setts proper default for 'exact'

* Add pyzmq installation for github action

This is required for some tests.

Following the instructions from issue #2050
Specifically: #2050 (comment)

* Revert "Add pyzmq installation for github action"

This reverts commit 75161b5.

As this was not working

* Mock `jukebox.publishing` in tests to avoid zmq

Currently it is hard to install zmq (#2050) and for
CI pytest `zmq` is not available.
As the test do not really require `jukebox.publishing`
running, mocking it in the test avoids it being imported.

Thus the tests do not require `zmq` to be installed.

---------

Co-authored-by: pabera <[email protected]>
Co-authored-by: Vito Zanotelli <[email protected]>
Co-authored-by: s-martin <[email protected]>
* bugfix: Stop Back Action at audiofolder root level

This also allows to go back when folder is empty

Fixes #2224

* fix: Flake8 issue

* Remove some minor issues
* activated delete-artifacts again with v5

* deactivate failOnError for deletion
* fix docs

* add markdown action

* use different action

* change linter

* add checkout

* change globs

* change wildcard

* Aktualisieren von markdown_v3.yml

* fix ignore

* comment ignore

* change version

* use master

* new action used for linting

* Fix config

* Remove ignore

* Ignore docstring dir

* ignore GitHub

* Aktualisieren von markdown_v3.yml

* use dot true

* Aktualisieren von markdown_v3.yml

* Use new action

* Fix continue-on-error

* Remove unnecessary code

* Add markdownlint config

* Rename . markdownlint-cli2.yaml to .markdownlint-cli2.yaml

* Use config file

* Simplify globs

* Use globs and ignore in config file

* Ignore $ errors

* Ignore src and .github

* Use only config file

* Fix general glob

* Ignore inline html

* Disable MD010

* Fix language

* dont warn trailing punctuation

* fix warnings

* fix a warning

* reduce ignore

* fix warnings

* fail check, if markdownlint fails

* add runner script and hook

* Update documentation/builders/components/power/onoff-shim.md

Co-authored-by: Alvin Schiller <[email protected]>

* Update playlists-livestreams-podcasts.md

* add documentation for documentation with md

* get rid of docker

* fix comments

* incorporate comments

* Update documentation/developers/documentation.md

Co-authored-by: Alvin Schiller <[email protected]>

* check, if cmd does not exisr

---------

Co-authored-by: Alvin Schiller <[email protected]>
* docs: Manually upgrade to the latest version

* Fix typo

* Fix Typos

* Solve last issue

* fix: Align with comments

* fix: indentation was off

* fix: markdown lint

* fix: one small bugfix

* fix: remove last linting issues

* fix: adding info about missing upgrade feature
* Customize markdownlint

* Remove ignore in file

* Remove ignore in file
* use codeql v3

* make sure there's always an update
* Externalize libzmq build

* Update documentation

* Use dedicated build directory for libzmq

* improve: update make command to be more efficient

* Update docker/Dockerfile.libzmq

Co-authored-by: notapirate <[email protected]>

* fix: Remove unneccesary MD linting rule

* fix: Remove another markdown linter

* Remove uncessary file

* refactor: Rename docker.pulse.mpd.conf

---------

Co-authored-by: notapirate <[email protected]>
rewind() is documented to jump to the first song of the playlist.
Instead, it jumped to the second song as SONGPOS in
MPDClient.play(SONGPOS) is zero-indexed [1], so mpd.play(1) started
the second song.

[1] https://mpd.readthedocs.io/en/latest/protocol.html#the-queue
"The position is a 0-based index"

Related: #2294
* Try python 3.12

* Trigger py file for action

* Revert previous commit

* fix flake8 warnings for python 3.12

* fix e126

* fix e126

* ignoring e126 as it is too strict

* revert e126 attempts
* Fix CoverartCacheManager for songs with no art

Previously, an ERROR was logged for each song without cover art when the
Web UI was open.
This commit avoids the error, caches the no-cover-art result and saves a
roundtrip to mpd for all no-cover-art songs.

* refactor: Reducing code and simplifying some logical statements

* fix: flake8 error

* refactor: reducing complexity for cache filename

* refactor: introduce queuing for saving cache files

* fix: remove slugify

* feat: Use mutagen instead of MPD to retrieve cover art, include cache flush, and thread

* fix: flake8 error

* Update src/jukebox/components/playermpd/__init__.py

Co-authored-by: Christian Hoffmann <[email protected]>

---------

Co-authored-by: pabera <[email protected]>
* Update action versions

* Trigger python action

* Update Python action

* Use correct env variable

* Revert change for triggering action
* utils: Add get_config_action

This abstracts away the functionality to resolve a given config option
to an action in a pre-defined dict.

Co-authored-by: Christian Hoffmann <[email protected]>

* Fix PlayerMPD.prev/next() when stopped

* Avoid MPD-related crashes during all prev/next() calls.
* Explicitly handle prev() in stopped state, configurable via
  `playermpd.stopped_prev_action`.
* Explicitly handle next() in stopped state, configurable via
  `playermpd.stopped_next_action`.
* Explicitly handle next() when reaching the end of the playlist:
  jukebox-daemon will now ignore the action by default (similar to v2).
  It can also be configured to rewind the playlist instead by setting
  the new config option `playermpd.end_of_playlist_next_action: rewind`
  or to stop playing.

Fixes #2294
Fixes #2327

Co-authored-by: pabera <[email protected]>

---------

Co-authored-by: pabera <[email protected]>
@hoffie
Copy link
Contributor

hoffie commented Apr 14, 2024

@pabera Another thing which is worth mentioning after #2325 is that the new mutagen dependency will be missing by default. This crashes the player thread upon swipe:

Apr 14 22:25:23 phoniebox bash[1026]:   File "/home/phoniebox/RPi-Jukebox-RFID/src/jukebox/components/playermpd/coverart_cache_manager.py", line 1, in <module>
Apr 14 22:25:23 phoniebox bash[1026]:     from mutagen.mp3 import MP3
Apr 14 22:25:23 phoniebox bash[1026]: ModuleNotFoundError: No module named 'mutagen'

This fixes it and should probably be run after the update, either automatically (is there a process already?) or via documentation:
./.venv/bin/pip install -r requirements.txt

@pabera
Copy link
Collaborator

pabera commented Apr 14, 2024

Yes this is true. We should mention this in the release notes.

At the moment, we don't offer an update mechanism. We have thought about it and will try for the next version.

For the time being, we officially support New Install only (where the dependency will be installed).

AlvinSchiller and others added 7 commits April 17, 2024 23:41
* fix: Add cmake as requirement to support pyzmq build

* fix: Remove cmake and pin pyzmq<26 as cmake does not build well in RPI env
…stem (#2352)

* feat: Introduce Web App Settings

* feat: Allow to enable/disable Cover Art in Web App

* fix: handle Falsy mimetype and data even when APIC tag has been found my mutagen

* feat: Try to load cover from filesystem when not found in audio file

* fix: flake8 linting error

* docs: Add documentation for Cover Art

* feat: Allow show_covers setting to be managed in Web App

* fix: again flake8 linting errors
* add details about cards

* fix empty line

* Update documentation/developers/rfid/mfrc522_spi.md

Co-authored-by: Alvin Schiller <[email protected]>

---------

Co-authored-by: Alvin Schiller <[email protected]>
s-martin and others added 8 commits June 5, 2024 08:10
* specify specific pip version wich works with zmq install

* add INA219 sensor

* average measurement for more accurate results. Use supply voltage for measurement.

* Revert "specify specific pip version wich works with zmq install"

This reverts commit 48dd1bf.

* correct format

* Update src/jukebox/components/battery_monitor/batt_mon_i2c_ina219/__init__.py

Co-authored-by: s-martin <[email protected]>

* Update copyright notice

* Update license

* Update license

* Document the INA219

* add error handling and type safety

* Update batterymonitor.md

* Update __init__.py

* fix markdown lint for batterymonitor.md

* fix markdown lint batterymonitor.md

* Update documentation/builders/components/power/batterymonitor.md

Co-authored-by: s-martin <[email protected]>

* Update documentation/builders/components/power/batterymonitor.md

Co-authored-by: s-martin <[email protected]>

---------

Co-authored-by: Timm <[email protected]>
Co-authored-by: s-martin <[email protected]>
* Remove 64bit check in installer script

* Check presence of raspi.list in raspian check

* fix: update check for debian derived os. integrate checks

RPiOS: 32-bit = raspbian, 64-bit = debian

---------

Co-authored-by: Alvin Schiller <[email protected]>
* use correct raspi-config command for bookworm

* simplify _get_boot_file_path

* fix path

* revert last commit

* merge fixes

* merge fixes

---------

Co-authored-by: Alvin Schiller <[email protected]>
* feat: Add Idle Shutdown Timer support

This adds an optional idle shutdown timer which can be enabled
via timers.idle_shutdown.timeout_sec in the jukebox.yaml config.

The system will shut down after the given number of seconds if no
activity has been detected during that time. Activity is defined as:
- music playing
- active SSH sessions
- changes in configs or audio content.

Fixes: #1970

* refactor: Break down IdleTimer into 2 standard GenericMultiTimerClass and GenericEndlessTimerClass timers

* feat: Introducing new Timer UI, including Idle Shutdown

* refactor: Abstract into functions

* Adding Sleep timer / not functional

* Finalize Volume Fadeout Shutdown timer

* Fix flake8

* Fix more flake8s

* Fix small bugs

* Improve multitimer.py suggested by #2386

* Fix flake8

---------

Co-authored-by: pabera <[email protected]>
[maint] Ignore LICENSE file in markdown linter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
future3 Relates to future3 development Release Informs about a Release candidate
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants