Skip to content

Commit

Permalink
Release 2.3 (#1476)
Browse files Browse the repository at this point in the history
* implemented shutdownwithreducingvolume

* implemented shutdownwithreducingvolume

* fixed type

* activation of shutdown button class in gpio_control

* update to next version number

* fixed date for 2.2 release

* go back for commit to master

* update to next release

* Minor changes

* Add version number to startup script

* Improve reading artist (#1166)

* Improve reading artist

Implement #1164

* Fix syntax

* Fix syntax

* More idiomatic check

* Feature/gpio debugging (#1165)

* change logging

* functionCall in case of invalid read of btn

* adjust behavior to fix strange behavior in case of button press is not stead
y

* Set Own Repo

* Fix volume of startup sound (#1169)

Fixes #1167

* missing savepos-command in "playerstopafter"

As there is a savepos-command in "playerstop" this should also be included in "playerstopafter".

* Update buster-install-default.sh (#1181)

Added spacing

* Revert "Set Own Repo"

This reverts commit 6d504e5.

* Add base functionality for Bluetooth headphone integration

* Add Discussions link to Readme

* Update Mopidy Iris to 3.54.2 (#1161)

* Integrate bluetooth headphone toggle into Web Interface

* Fix bugs and default configuration after testing

* (maint) Minor typos, whitespace issues (#1214)

* Add GPIO function call for bluetooth audio toggle

* Create codeql-analysis.yml

* Update codeql-analysis.yml

* Change path to gpio_settings.ini

* Add mopidy extensions versions to script

* Fixes bug in folder tree, related to special chars

Resolving #469 by simplifying collapse IDs in folder tree.
Make use of integers for collapse IDs rather than folder names to avoid
problem with any kind of non-allowed characters as ID value.

Simplifies corresponding code as no character replacement is required
for collapse IDs anymore.

* 2021 calendar

* 2021 calendar

* Added stop on removal functionality example (#1209)

See #1049

* feat: GPIO Buttons over USB Encoder (#1249)

* feat: Buttons USB Encoder

Closes #1156

* change usb to uppercase USB

* added support for pc/sc readers

* Web App settings for swipe or place rifd (#1130)

* web app settings for #1122

* web app settings for #1122

* Include @Toqqi's review comments

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

* fix: let function_calls.py work with python 3.5 (#1253)

* Shortcuts volume commands of playout control (#1235)

* Shortcuts volume commands of playout control

* Moves debug control out of shorcutted block

* Fixes indentation

* Ensure ALSA is installed (#1255)

* Ensure ALSA is installed

* Fixed typo

* Added alsa to tests also

* Update README.md

* Preparing new file structure

* Increase functional robustness and adapt file locations

* Add Readme

* Improve performance in player.php by avoiding system calls

* removed old code

* Added chapter exts and minduration to global conf

* Removed the old variables from .sh script

* Fixed Socket Read for long content

* Improved Error-Handling with folders that have wrong permission.

* shutdownreducingvolume webUI

* Updated settings.php

* configured lang.php-files

* Update inc.setShutdownReduceVolume.php

* Updated inc.setShutdownReduceVolume.php

* Renamed to ShutdownVolumeReduction

* Changed at queue name to "r"

* shutdown also in at queue "r"

* enabled debug.log

* separate at queue for the shutdown

* Fixed: disabling the planned shutdown

* fix2 for disabling shutdown

* fix3: disabling "at" for the scheduled volume change

* added 4 controls for RFID

* updated description

* Add Readme

* Fix some formatting issues in Readme

* Change default to be w/o LED

* Spotify url conversion (http to mopidy format) (#1203)

* Added spotify url conversion

* Improved and translated error message

* Fix typos

* Fix typo

* Revert missing lines in htdocs/lang-*

* Re-enable start-up sound

* feat: keep USB Button Encoder settings during update

* Fix tabbed indentation to whitespace

* fix: handle list of keycodes in buttons usb encoder (#1285)

* fix: handle keycode lists in buttons usb encoder

* fix: sort key before joining to guarantee order

* Add documentation Complete Install Guide

* Correct typos in Complete Install Guide

* FF and Rewind added to GPIO_SETTINGS.ini (#1291)

* FF and Rewind added to GPIO_SETTINGS.ini

* Update gpio_settings.ini

* updating install information

* -Added addtional output formats matching the printed Card Numbers for the RDM6300 Reader
-Added XOR Checksum for the RDM6300 Output format (Wiegand26)
-Tried to Address the dependencie Topic of #1105 (untested)

* refactoring gpio-control to class

* Webplayer: Time Played Interpolation, Improvements (#1200)

* add mission date of 2.2 release (#1160)

* update to next version number

* fixed date for 2.2 release

* go back for commit to master

* Set Own Repo

* Revert "Set Own Repo"

This reverts commit 6d504e5.

* Interpolate played time to improve UX feeling (something is happening/playing)

* Solved problems of parallel put and get request of player.php

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

* implementing stop on removal for RC522 (see #1097); implementation proposed by @Toqqi in 786ecf4: (#1122)

Description from @Toqqi:
I used the signal python library to detect when a RC522 RFID reader stops reading in a card ID for one second.
This then triggers the playerpauseforce action in playout_controls.sh.

I then configured the second swipe action to be "resume playback" to achieve the play/pause effect when moving an RFID card to/from the reader.

* - Fixed unecessary code line
- improved comment

* fixed logging

* Update gpio_control.py (#1310)

BugFix functionCallTwoBtns

* Added read-for-card status LED GPIO control

Adds a status LED GPIO control that lights up the LED if the phoniebox
is ready (finished startup scripts, checked via systemctl). Type called
`StartupScriptsStatusLED`.

Comparison to MPDStatusLED:
MPDStatusLED lights up the LED if MPD is started which is (on a RPi
zero seconds) before the phoniebox is actually ready for its first card.
Therefore, another status LED indicating whether startup completely
finished appears useful.

* Added example/test config for status LED

Add an example config for the startup script status LED using GPIO 14
(UART TX). This combines a side effect of flashing once when RPi is
powered on and staying one once startup script finished.
Same config added to the gpio test config.

* Fix missing import (#1312)

* Added switchable audio iFaces

Adds a feature to switch between two audio iFaces (e.g.
speaker/headphone). Audio iFaces to swap are stored in files
`settings/Audio_iFace_Name_[01]` and need to be set manually, if feature
should be activated. The correlating volumes are stored in files
`Audio_Volume_Level_[01]`. Currently active iFace "ID" (0 or 1) is
stored in file `settings/Audio_iFace_Active` (default 0).

Scenario: You have equipped your Pi with a sound card that provides a
separate output (and volume control) for speaker and headphone, like the
WM8960 Hi-Fi HAT. This feature enables you to switch between the two
output. It can be triggered by RFID card or (not implemented) via GPIO
(button or switched jack). Compare discussion in #786.

Many room for extension of features:
- setting audio iFaces via WebUI
- display current audio iFace in WebUI + trigger for switch
- trigger switch via GPIO (not needed in my case :-))
- generalisation for more than two audio iFaces (simple to implement if
needed)
- multi volume control in WebUI and via RFID (not sure if handy)

* Drops MPDStatusLED in favour of general StatusLED

For backward compatibility `gpio_control.generate_device` accepts both
`device_type` "StatusLED" as well as "MPDStatusLED".
To be reduced to only "StatusLED" at some point.

* Fix unit test and remove Python 3.5 check (#1319)

* Update test_gpio_control.py

* Update test_gpio_control.py

* Remove Python 3.5 in Actions

* Remove stretch

See #1163

* (bugfix) stop on removal, incorporate switch (#1324)

The merge of #1122 missed @Toqqi comment
#1122 (comment)
which provided an update
(Toqqi@4e1a6fc) that incorporates the global switch, merged with #1130.

Now, "stop on removal" is an option and no must.

* Bugfix #1320  of arne123/RPi-Jukebox-RFID/tree/gpio-control_to_class (#1323)

* Bugfix of arne123/RPi-Jukebox-RFID/tree/gpio-control_to_class

This update form @arne123 fixes #1320 .
There was still a Bug in the Import of the class function. and here is my commit.

* Bugfix #1328  i2c_lcd.py

Removed string function to remove newline. Type error because trake_time contains binary.

Therefore using subprocess.check_output setting to remove newline with  universal_newlines

This fixes issue  #1328

* fix flake8 warnings (#1332)

* Align folder naming scheme (#1340)

* Use gpio_settings.ini for LED configuration (#1342)

* fix: move path append command back up (#1346)

Script can only be executed if sys.path.append(".") is executed before imports.
This bug (#1249 (comment))
was introduced with change #1332.

* Fix for Issue 1347: fix regexp (#1354)

* Update README.md

* Update README.md

* Ignore settings/PhonieboxInstall.conf (#1360)

* organizeFiles: I added a small script for conveniently organizing audio folders, linking them to RFID cards, finding audio folders that are currently not bound to any RFID card, and fixing broken links.

* organizeFiles script: advanced features regarding linking folders to RFID cards

* cli-player.py: script to play audio folders from command line

* organizeFiles.py: small fix

* minor

* Extended commands (e.g. for special Cards) to play random (surprise!) cards/folders or tracks.

* Fix spelling error in en-UK (#1367)

* added documentation as requested.

* Delete SPOTIFY-INTEGRATION.md (#1366)

* Delete SPOTIFY-INTEGRATION.md

#1238

* Updated Links to Spotify FAQ

* Fix typos (#1370)

* Update README.md (#1375)

Due to sloppy reading and not realizing where this documentation was located it took me a while to figure out what this folder was referring to. I thought I would clarify.

* move helper scripts

* README for helper scripts

* Update phoniebox-rfid-reader.service.stretch-default.sample (#1388)

* Update phoniebox-rfid-reader.service.stretch-default.sample

reducing cpu-load

* Update phoniebox-rfid-reader.service.stretch-default.sample

* Update documentation (#1386)

* Add headless install to complete installation guide as an option

* Reorganize structure

* Fix anchor link

* Correcting a few more issues

* Remove instructions to install Phoniebox with Desktop

* Clean-up and partial repair of the GPIO component (#1397)

* Edit GPIO sanmple configs: Removed misleading attribute hold_time for all ("Simple-")Buttons that do not have hold_repeat configured at all (today, hold_time will be ignored if hold_repeat is unset).
I kept the hold_time where hold_repeat was explicitely set to False so it could be re-enabled when needed.

* Fixed ShutdownButton: shutdown_button.py needs additional config parameters time_pressed, iteration_time and led_pin which gpio_control.py did not read and pass (has been added).
Instead, it read hold_repeat and hold_time which is not used by ShutdownButton (has been removed).

* Deprecated config options replaced: Button and ShutdownButton do not evaluate pull_up any more, instead they use pull_up_down today.

* Tested and repaired shutdown_button class:
- fixed import of SimpleButton (as in shutdown_button.py and two_button_control.py) since it threw an error under python 3.
- removed input params hold_repeat and hold_time since they are not used by any instance of ShutdownButton.
- configure LED GPIO port on init (LED flah function threw an error since GPIO was still uninitalized)
- renamed "status" to "cancelled" for better understanding
- enforce final LED switch off if action was cancelled early (might have stayed on if button was released during flashing)

* Create future1.md

* Workflows for Future3

* Bringing back prior (and new) button long-press actions (+extended documentation) (#1406)

* Added an optional countermeasure against button bouncing effects
(can be switched on via the config);
Enhanced verbosity of Button status on console output.

* Updated ShutdownButton:
- Optimized control logic (iteration_time was formerly forced to 200ms ignoring the config value)
- Renamed time_pressed to hold_time to match the corresponding name in SimpleButton base class
- Pass-through of antibounce feature
- Enhanced verbosity of ShutdownButton status on console output.

* Introduced support for different modes on button hold:
Changed hold_repeat flag (True/False) to hold_mode (textual). "hold_repeat = True" is "hold_mode = Repeat" now.
Added new hold_mode "Postpone" (as possible in earlier PhonieBox versions)

* Added new hold_mode "SecondFunc" for a different action after hold_time (as possible in earlier PhonieBox versions)

* Added new hold_mode "SecondFuncRepeated" for repeated executions of a different action after hold_time

* Updated TwoButtonControl:
- Pass-through of all relevant SimpleButton base parameters
- Enhanced verbosity of TwoButtonControl status on console output
- Updated VolumeControl.py (though this file is completely superfluous / redundant IMHO)

* Added more detailed GPIO component documentation to README.MD
Fixed several typos and issues in several ini files

* Added more functions that can be called by GPIO controls like buttons.
Extended documentation, e.g. more example configurations.

* Added auto-conversion of old/deprecated syntax within gpiocontrol.ini entries.
Removed special (and redundant) handling for controls if (and only if) the corresponding config sections is named "VolumeControl"

* Added the __init__.py I just forgot...

* Align path of requirements.txt

* Fix in future3 github workflow

* Update README.md (#1452)

I struggled with this for the 4th time on new phoniebox installations and most pinout graphs for these card leave the cable for IRQ out and although you can read a card on python phoniebox does not read anything. With the cable in place on that pin it works like a charm from the beginning.

* Add lsof (#1457)

* Update buster-install-default.sh

* Add lsof and other missing packages

* fix-alsa on buster-lite (#1467)

* Update buster-install-default.sh

* update test for alsa-utils

* omit inapropriate version evdev==0.7.0 (#1468)

see https://pypi.org/project/evdev/

* Adding a boot volume settings to be set in startup script after reboot (#1177)

* Adding boot volume value to config and startup script #1169

* Adding boot volume value to config and startup script #1169

* startup changing to boot volume

* comment in web app changed to boot

* Prepare Readme for 2.3

* facilitate transition to bullseye (#1469)

* facilitate transition to bullseye

in order to easily support the debian upgrade path (replace `buster` with `bullseye` in `/etc/apt/sources.list` and `/etc/apt/sources.list.d/*`)
this change helps transition from `php7.3` on buster to `php7.4` on bullseye
and use python3 for python which is valid on bullseye

* Update buster-install-default.sh

* Update buster-install-default.sh

* small changes: head -n and file prefix (#1423)

* replace head -1 by head -n 1 since this notation is depricated

* replace head -1 by head -n 1 since this notation is depricated

* playout_controls: my mopidy version need "file://" prefix

* Update README.md

* Update README.md

* Update README.md

* Update version-number

Co-authored-by: manajoe <[email protected]>
Co-authored-by: Felix Bachmair <[email protected]>
Co-authored-by: veloxidSchweiz <[email protected]>
Co-authored-by: Schneelocke <[email protected]>
Co-authored-by: Micz Flor <[email protected]>
Co-authored-by: StefanMinke <[email protected]>
Co-authored-by: jrn <[email protected]>
Co-authored-by: Schneelocke <[email protected]>
Co-authored-by: ChrisSoc <[email protected]>
Co-authored-by: ChrisSoc <pi@exaberry>
Co-authored-by: miohna <[email protected]>
Co-authored-by: miohna <[email protected]>
Co-authored-by: jeripeierSBB <[email protected]>
Co-authored-by: Dominik Ach <[email protected]>
Co-authored-by: Florian Bachmann <[email protected]>
Co-authored-by: ChisSoc <[email protected]>
Co-authored-by: Patrick Beer <[email protected]>
Co-authored-by: Stefan Caliandro <[email protected]>
Co-authored-by: arne123 <[email protected]>
Co-authored-by: damaev <[email protected]>
Co-authored-by: DCH <[email protected]>
Co-authored-by: Varac <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Co-authored-by: T0bi79 <[email protected]>
Co-authored-by: Tobias L. Maier <[email protected]>
Co-authored-by: Kiriakos Antoniadis <[email protected]>
Co-authored-by: Michael Weinrich <[email protected]>
Co-authored-by: bart1 <[email protected]>
Co-authored-by: Patrick Beer <[email protected]>
Co-authored-by: T0bi79 <[email protected]>
Co-authored-by: sebrep <[email protected]>
Co-authored-by: t0b3 <[email protected]>
Co-authored-by: TRO <[email protected]>
  • Loading branch information
1 parent 305325d commit 2425890
Show file tree
Hide file tree
Showing 95 changed files with 3,800 additions and 984 deletions.
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/components/controls/buttons_usb_encoder/ @jeripeierSBB
/scripts/installscripts/buster-install-default.sh @jeripeierSBB
/scripts/installscripts/buster-install-default-with-autohotspot.sh @jeripeierSBB
10 changes: 1 addition & 9 deletions .github/ISSUE_TEMPLATE/bug_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,5 @@ Can be found in the output of `sudo lsusb -v` when it is connected via USB.
### Other notable hardware

<!--
i.e. post your GPIO pin settings from `RPi-Jukebox-RFID/scripts/gpio-buttons.py`:
```
GPIO Buttons:
volU = Button(22,pull_up=True,hold_time=0.3,hold_repeat=True)
volD = Button(27,pull_up=True,hold_time=0.3,hold_repeat=True)
frwd = Button(17,pull_up=True)
prev = Button(24,pull_up=True)
halt = Button(23,pull_up=True)
```
i.e. post your GPIO pin settings from `RPi-Jukebox-RFID/settings/gpio_settings.ini`:
-->
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/future3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
name: Future3 Development Issue
about: For developing issues on Future3 (Version 3 pre-development)
title: "ISSUE SUMMARY on Future3"
labels: future3, bug, needs triage
---

## Issue in Future3
67 changes: 67 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches: [ develop ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ develop ]
schedule:
- cron: '16 18 * * 0'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
language: [ 'javascript', 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

steps:
- name: Checkout repository
uses: actions/checkout@v2

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
5 changes: 4 additions & 1 deletion .github/workflows/dockerimage.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Test Install Scripts on Docker

on: [push]
on:
push:
branches-ignore:
- 'future3/**'

jobs:

Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Python Checks and Tests

on: [push]
on:
push:
branches-ignore:
- 'future3/**'

jobs:
build:
Expand All @@ -9,7 +12,7 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: [3.5, 3.6, 3.7]
python-version: [3.6, 3.7, 3.8]

steps:
- uses: actions/checkout@v1
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/pythonpackage_future3.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Python Checks and Tests

on:
push:
branches:
- 'future3/**'
paths:
- '**.py'
- '**.py.*'
pull_request:
branches:
- 'future3/**'
paths:
- '**.py'
- '**.py.*'

jobs:
build:

runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.6, 3.7, 3.8]

steps:
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev
python -m pip install --upgrade pip
pip install wheel
pip install spidev
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --filename=*.py,*.py.*
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --filename=*.py,*.py.*
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ settings/version
htdocs/config.php
scripts/deviceName.txt
scripts/gpio-buttons.py
settings/PhonieboxInstall.conf

shared/*
playlists/*
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ The original contributor will be notified of the revert.
be resolved within one business day.

## Guidelines ##
* Currently Phoniebox runs on Raspian **Buster** and **Stretch**. Therefore all Python code should work with **Python 3.5**. Some existing code may still be Python 2, but new code has to be compatible with Python 3.5 and old code that is changed should then be ported to Python 3.5.
* For GPIO all code should work with RPi.GPIO. gpiozero is currently not intended to use.
* Currently Phoniebox runs on Raspian **Buster** . Therefore all Python code should work with **Python 3.7**.
* For GPIO all code should work with **RPi.GPIO**. gpiozero is currently not intended to use.

## Additional Resources

Expand Down
32 changes: 25 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,44 @@

A contactless jukebox for the Raspberry Pi, playing audio files, playlists, podcasts, web streams and spotify triggered by RFID cards. All plug and play via USB, no soldering iron needed. Update: if you must, it now also features a howto for adding GPIO buttons controls.

![The 2020 Phoniebox Calendar](docs/2020-Phoniebox-Calendar.jpg "The 2020 Phoniebox Calendar")
## The Phoniebox Calendar 2021 is here!!!

Another bunch of wonderful designs! 2021 is the third Phoniebox calendar. If you are interested, you can see the [2019 and 2020 calendars in the docs folder](https://github.com/MiczFlor/RPi-Jukebox-RFID/tree/develop/docs). Download [the printable PDF of 2021 here](https://mi.cz/static/2021-Phoniebox-Calendar.pdf).

![The 2021 Phoniebox Calendar](docs/2021-Phoniebox-Calendar.jpg "The 2021 Phoniebox Calendar")

The year 2020 also has a clear *:star: community hero :star:*: @s-martin has been doing outstanding work for the Phoniebox community:sparkles:. Thanks to you and may 2021 be a wonderful year for you.

## Important updates / news

* **Discussions forums** we use Github's Discussions feature for a more forum style. Please ask general questions in [Discussions](https://github.com/MiczFlor/RPi-Jukebox-RFID/discussions), bugs and enhancements should still be in [Issues](https://github.com/MiczFlor/RPi-Jukebox-RFID/issues).

* **Gitter Community** we got ourselves a gitter community; chat us up at https://gitter.im/phoniebox

* **Phoniebox [2.2](https://github.com/MiczFlor/RPi-Jukebox-RFID/milestone/4?closed=1) released (2020-11-23)**
* **Phoniebox [2.3](https://github.com/MiczFlor/RPi-Jukebox-RFID/milestone/6?closed=1) released (2021-08-12)**

The [2.2](https://github.com/MiczFlor/RPi-Jukebox-RFID/milestone/4?closed=1) release was pushed through the doors with many contributors (some of which in alphabetical order): @andreasbrett @BerniPi @juhrmann @Luegengladiator @MarkusProchaska @MarlonKrug @patrickweigelt @princemaxwell @RalfAlbers @s-martin @themorlan @veloxidSchweiz @xn--nding-jua. [List of all contributors](https://github.com/MiczFlor/RPi-Jukebox-RFID/graphs/contributors)
The [2.3](https://github.com/MiczFlor/RPi-Jukebox-RFID/milestone/6?closed=1) release was pushed through the doors with many contributors: [List of all contributors](https://github.com/MiczFlor/RPi-Jukebox-RFID/graphs/contributors)

## What's new in version 2.2?
## What's new in version 2.3?

* Improved [installation guide](docs/INSTALL_COMPLETE_GUIDE.md)
* Holding buttons feature fixed #1406
* Bluetooth buttons and headphones toggle #1262
* fixed stop on removal for RC522 #1122
* USB Encoder buttons support for anyone who dors not want to solder...
* Improved robustness and better documentation for [GPIO control](components/gpio_control/README.md)
* Auto convert wrong Spotify URLs to a format Mopidy understands
* Support for PC/SC-readers
* Removed support for Raspian Stretch
* Lots of fixed bugs and minor improvements...

**What's still hot?**
* :fire: **Fixed location of gpio_settings.ini** for [GPIO control](components/gpio_control/README.md)
* Added support for files with embedded chapters metada (like m4a) enhancement
* Added customizable poweroff command bash enhancement
* Finally fixed resume function...
* Lots of fixed bugs and minor improvements...
* Status LED, Rotary Button, Volume Up/Down, custom music directory for +Spotify, Startup sound volume

**What's still hot?**
* The constantly improved **one-line install script** handles both **Classic** and **+Spotify** when [setting up your Phoniebox](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/INSTALL-stretch#one-line-install-command)
* integrated improved [GPIO control](components/gpio_control/README.md)
* integrated selection of RFID readers and uses [multiple readers](https://github.com/MiczFlor/RPi-Jukebox-RFID/pull/1012#issue-434052529) simultaneously
Expand Down Expand Up @@ -55,7 +73,7 @@ The [2.2](https://github.com/MiczFlor/RPi-Jukebox-RFID/milestone/4?closed=1) rel

[One line install script](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/INSTALL-stretch#one-line-install-command) for Raspbian `buster` available.

* **MUST READ for users of [Phoniebox +Spotify Edition](docs/SPOTIFY-INTEGRATION.md)**
* **MUST READ for users of [Phoniebox +Spotify Edition](https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Spotify-FAQ)**
* This install script combines the two versions *Classic* and *+ Spotify*.
* *Phoniebox Classic* supports local audio, web radio, podcasts, YouTube (download and convert), GPIO and/or RFID

Expand Down
Loading

0 comments on commit 2425890

Please sign in to comment.