<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tangara-fw/src/tangara/ui, branch main</title>
<subtitle>Tangara firmware</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/'/>
<entry>
<title>Show firmware version on boot splash screen. Fixes #405.</title>
<updated>2025-08-26T23:42:03+00:00</updated>
<author>
<name>leper</name>
<email>leper@noreply.codeberg.org</email>
</author>
<published>2025-08-26T23:42:03+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=043d5e3f75bc7f605f6da0fd254a343306678f8b'/>
<id>043d5e3f75bc7f605f6da0fd254a343306678f8b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>add single touch shourtcuts for touch wheel</title>
<updated>2025-04-22T20:23:47+00:00</updated>
<author>
<name>Tab_theFox</name>
<email>tab_thefox@noreply.codeberg.org</email>
</author>
<published>2025-03-23T16:45:19+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=dc5676229d19f317b97df6a3d3582bbb02df33df'/>
<id>dc5676229d19f317b97df6a3d3582bbb02df33df</id>
<content type='text'>
This allows you to use the touch wheel for quick playback control:
- bottom quadrant for play/pause
- left and right quadrant for track skip back / forward
- top quadrant to seek back 25 seconds (handy when listening
  to a podcast)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows you to use the touch wheel for quick playback control:
- bottom quadrant for play/pause
- left and right quadrant for track skip back / forward
- top quadrant to seek back 25 seconds (handy when listening
  to a podcast)
</pre>
</div>
</content>
</entry>
<entry>
<title>ailurux/button-media-controls (#264)</title>
<updated>2025-03-19T04:25:20+00:00</updated>
<author>
<name>ailurux</name>
<email>ailurux@noreply.codeberg.org</email>
</author>
<published>2025-03-19T04:25:20+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=c9ce88a457c9ed7124709a667d202a666f72bffa'/>
<id>c9ce88a457c9ed7124709a667d202a666f72bffa</id>
<content type='text'>
Splits the control scheme into separate schemes for the side buttons and touchwheel, allowing them to be configured independently of each other. At least one input must be used for navigation, and there are guards to prevent locking oneself out of any input. If the input scheme is invalid, a pop up will show alerting the user.

Different behaviours can be bound to the side buttons for when the device is locked or unlocked. This PR also adds a mode for these buttons that controls media playback (prev/next on up/down, pressing both buttons toggles play/pause).

There are some changes to the way inputs handle locking. Rather than the input devices tracking the current locked mode, different input devices are created on lock depending on the mode that is configured.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/264
Co-authored-by: ailurux &lt;ailurux@noreply.codeberg.org&gt;
Co-committed-by: ailurux &lt;ailurux@noreply.codeberg.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Splits the control scheme into separate schemes for the side buttons and touchwheel, allowing them to be configured independently of each other. At least one input must be used for navigation, and there are guards to prevent locking oneself out of any input. If the input scheme is invalid, a pop up will show alerting the user.

Different behaviours can be bound to the side buttons for when the device is locked or unlocked. This PR also adds a mode for these buttons that controls media playback (prev/next on up/down, pressing both buttons toggles play/pause).

There are some changes to the way inputs handle locking. Rather than the input devices tracking the current locked mode, different input devices are created on lock depending on the mode that is configured.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/264
Co-authored-by: ailurux &lt;ailurux@noreply.codeberg.org&gt;
Co-committed-by: ailurux &lt;ailurux@noreply.codeberg.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request 'Support padding the left side of the display with black columns' (#302) from display_padding into main</title>
<updated>2025-03-19T03:31:18+00:00</updated>
<author>
<name>cooljqln</name>
<email>cooljqln@noreply.codeberg.org</email>
</author>
<published>2025-03-19T03:31:18+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=34e7ce869b8d451e0586e96cc4dabbff8efb56d3'/>
<id>34e7ce869b8d451e0586e96cc4dabbff8efb56d3</id>
<content type='text'>
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/302
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/302
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow manually unmounting the SD card</title>
<updated>2025-03-05T07:57:46+00:00</updated>
<author>
<name>ayumi</name>
<email>ayumi@noreply.codeberg.org</email>
</author>
<published>2025-02-15T01:25:27+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=9fdf94e9cee5a5180ffefc2b8314f7a9879ebbc6'/>
<id>9fdf94e9cee5a5180ffefc2b8314f7a9879ebbc6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Change UI thread interval from 0ms minimum to 16ms (reduces UI CPU).</title>
<updated>2025-02-27T05:31:59+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-27T05:31:59+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=91c487b656533efe36ea154e357dc1e2b99a3025'/>
<id>91c487b656533efe36ea154e357dc1e2b99a3025</id>
<content type='text'>
Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
After this change, the UI thread is measured at about 0.1% CPU. I'm
not sure what the current consumption impact is, but it's gotta be
a power saving, even if slim?

Following manual testing with the device after flashing this change,
the UI responsiveness and music playback does not appear to be
negatively affected. The UI actions that were tested were:

- Scrolling through items on the root menu
- Scrolling through settings
- Scrolling through All Tracks with long-press on the bottom of
  the scroll wheel (Page Down) on a device with ~20k songs
- Repeatedly hitting 'next track'
- Forcing a DB update, and scrolling through All Tracks while
  updating the database.

The device was configured with the following settings when tested:
- TTS enabled
- Wired headphones
- Bluetooth enabled but not connected
- No DB auto-update
- Playing music

Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
On a stock (v1.2.2) build, `tasks` reported:

```
 → tasks
name            core    free stack      run time
IDLE1           1       1.0 KiB         99.6%
IDLE0           0       1.1 KiB         86.5%
ui              any     10.1 KiB        13.7%
console_repl    1       5.6 KiB         0.5%
Tmr Svc         any     1.4 KiB         0.0%
audio_dec       any     19.4 KiB        0.0%
main            0       2.0 KiB         0.0%
lvglDraw        any     2.9 KiB         0.0%
btController    0       2.1 KiB         0.0%
esp_timer       0       3.4 KiB         0.0%
BTC_TASK        1       2.6 KiB         0.0%
worker_1        any     30.1 KiB        0.0%
worker_3        any     5.7 KiB         0.0%
worker_2        any     29.5 KiB        0.0%
worker_0        any     25.7 KiB        0.0%
BTU_TASK        1       3.2 KiB         0.0%
hciT            1       1.5 KiB         0.0%
ipc0            0       1.0 KiB         0.0%
ipc1            1       1.0 KiB         0.0%
audio_conv      any     3.4 KiB         0.0%
```

Following this change, the UI thread decreased from 13% in idle to
0.1% usage, as reported by `tasks`:

```
 → tasks
name            core    free stack      run time
IDLE1           1       1.0 KiB         99.8%
IDLE0           0       1.1 KiB         99.4%
console_repl    any     6.4 KiB         0.5%
ui              any     10.1 KiB        0.1%
btController    0       2.1 KiB         0.0%
Tmr Svc         any     1.4 KiB         0.0%
esp_timer       0       3.4 KiB         0.0%
audio_dec       any     19.4 KiB        0.0%
ipc1            1       1.0 KiB         0.0%
ipc0            0       1.0 KiB         0.0%
hciT            1       1.5 KiB         0.0%
BTU_TASK        1       3.2 KiB         0.0%
worker_3        any     20.7 KiB        0.0%
worker_2        any     29.4 KiB        0.0%
BTC_TASK        1       2.5 KiB         0.0%
worker_1        any     30.1 KiB        0.0%
worker_0        any     5.7 KiB         0.0%
lvglDraw        any     2.9 KiB         0.0%
main            0       2.0 KiB         0.0%
audio_conv      any     3.4 KiB         0.0%
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
After this change, the UI thread is measured at about 0.1% CPU. I'm
not sure what the current consumption impact is, but it's gotta be
a power saving, even if slim?

Following manual testing with the device after flashing this change,
the UI responsiveness and music playback does not appear to be
negatively affected. The UI actions that were tested were:

- Scrolling through items on the root menu
- Scrolling through settings
- Scrolling through All Tracks with long-press on the bottom of
  the scroll wheel (Page Down) on a device with ~20k songs
- Repeatedly hitting 'next track'
- Forcing a DB update, and scrolling through All Tracks while
  updating the database.

The device was configured with the following settings when tested:
- TTS enabled
- Wired headphones
- Bluetooth enabled but not connected
- No DB auto-update
- Playing music

Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
On a stock (v1.2.2) build, `tasks` reported:

```
 → tasks
name            core    free stack      run time
IDLE1           1       1.0 KiB         99.6%
IDLE0           0       1.1 KiB         86.5%
ui              any     10.1 KiB        13.7%
console_repl    1       5.6 KiB         0.5%
Tmr Svc         any     1.4 KiB         0.0%
audio_dec       any     19.4 KiB        0.0%
main            0       2.0 KiB         0.0%
lvglDraw        any     2.9 KiB         0.0%
btController    0       2.1 KiB         0.0%
esp_timer       0       3.4 KiB         0.0%
BTC_TASK        1       2.6 KiB         0.0%
worker_1        any     30.1 KiB        0.0%
worker_3        any     5.7 KiB         0.0%
worker_2        any     29.5 KiB        0.0%
worker_0        any     25.7 KiB        0.0%
BTU_TASK        1       3.2 KiB         0.0%
hciT            1       1.5 KiB         0.0%
ipc0            0       1.0 KiB         0.0%
ipc1            1       1.0 KiB         0.0%
audio_conv      any     3.4 KiB         0.0%
```

Following this change, the UI thread decreased from 13% in idle to
0.1% usage, as reported by `tasks`:

```
 → tasks
name            core    free stack      run time
IDLE1           1       1.0 KiB         99.8%
IDLE0           0       1.1 KiB         99.4%
console_repl    any     6.4 KiB         0.5%
ui              any     10.1 KiB        0.1%
btController    0       2.1 KiB         0.0%
Tmr Svc         any     1.4 KiB         0.0%
esp_timer       0       3.4 KiB         0.0%
audio_dec       any     19.4 KiB        0.0%
ipc1            1       1.0 KiB         0.0%
ipc0            0       1.0 KiB         0.0%
hciT            1       1.5 KiB         0.0%
BTU_TASK        1       3.2 KiB         0.0%
worker_3        any     20.7 KiB        0.0%
worker_2        any     29.4 KiB        0.0%
BTC_TASK        1       2.5 KiB         0.0%
worker_1        any     30.1 KiB        0.0%
worker_0        any     5.7 KiB         0.0%
lvglDraw        any     2.9 KiB         0.0%
main            0       2.0 KiB         0.0%
audio_conv      any     3.4 KiB         0.0%
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Wire up the nvs pad to the display pad</title>
<updated>2025-02-20T05:00:04+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2025-02-20T05:00:04+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=4ddeeee0f2ca1bfd70b7045446fc719afe357431'/>
<id>4ddeeee0f2ca1bfd70b7045446fc719afe357431</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TTS: Implement and wire up a TTS toggle in Display Settings (#251)</title>
<updated>2025-02-11T00:23:35+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-11T00:23:35+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=569ed6c0cc440572b37a06200b6706badcdf8e45'/>
<id>569ed6c0cc440572b37a06200b6706badcdf8e45</id>
<content type='text'>
This change introduces the ability to enable or disable the spoken interface/TTS from the on-device settings, either via the UI or the Lua console. This closes out the implementation of issue #245.

The TTS setting is only visible in Display settings if voice samples are present in `/.tangara-tts/` on the SD card.

Playback of new TTS voice samples is inhibited when TTS is disabled. By default, the setting is enabled, as the device will only play back TTS voices if samples are present on disk.

If you need samples to test TTS on your device, feel free to grab the voice samples I have at https://codeberg.org/tursiae/tangara-tts-samples. There's about 80-85% coverage of the UI, with the remainder to be added soonish.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/251
Co-authored-by: Tursiae &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change introduces the ability to enable or disable the spoken interface/TTS from the on-device settings, either via the UI or the Lua console. This closes out the implementation of issue #245.

The TTS setting is only visible in Display settings if voice samples are present in `/.tangara-tts/` on the SD card.

Playback of new TTS voice samples is inhibited when TTS is disabled. By default, the setting is enabled, as the device will only play back TTS voices if samples are present on disk.

If you need samples to test TTS on your device, feel free to grab the voice samples I have at https://codeberg.org/tursiae/tangara-tts-samples. There's about 80-85% coverage of the UI, with the remainder to be added soonish.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/251
Co-authored-by: Tursiae &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add centre button haptic feedback on touch, and setting to disable/lessen haptics (#246)</title>
<updated>2025-02-07T02:44:24+00:00</updated>
<author>
<name>ailurux</name>
<email>ailuruxx@gmail.com</email>
</author>
<published>2025-02-07T02:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=48495ddafe2ed59611c9491470f192b790e6146d'/>
<id>48495ddafe2ed59611c9491470f192b790e6146d</id>
<content type='text'>
This adds a way for feedback devices to respond to events from outside of LVGL's event system, being passed from input device to feedback device through a vector. This was done so that touch events and long-press triggers can now give feedback through haptics.

This PR also adds haptic modes, saved in nvs similarly to input and locked input modes, to disable or change the haptic effect behaviour based on which mode is selected.

Finally, this also fixes a bug in which some click events would not trigger haptics, at the expense of re-introducing the (undesired?) behaviour of clicking a button that transitions to a new screen causing a double click.

Relevant issues this should close: #195, #233, and (partially?) #120

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/246
Co-authored-by: ailurux &lt;ailuruxx@gmail.com&gt;
Co-committed-by: ailurux &lt;ailuruxx@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds a way for feedback devices to respond to events from outside of LVGL's event system, being passed from input device to feedback device through a vector. This was done so that touch events and long-press triggers can now give feedback through haptics.

This PR also adds haptic modes, saved in nvs similarly to input and locked input modes, to disable or change the haptic effect behaviour based on which mode is selected.

Finally, this also fixes a bug in which some click events would not trigger haptics, at the expense of re-introducing the (undesired?) behaviour of clicking a button that transitions to a new screen causing a double click.

Relevant issues this should close: #195, #233, and (partially?) #120

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/246
Co-authored-by: ailurux &lt;ailuruxx@gmail.com&gt;
Co-committed-by: ailurux &lt;ailuruxx@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add optional support for changing volume while locked</title>
<updated>2025-02-02T04:48:42+00:00</updated>
<author>
<name>Tess Eisenberger</name>
<email>github@teisen.be</email>
</author>
<published>2025-02-02T00:15:17+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=1d485c97b0c03577a40b34fb762c76e98f417fa4'/>
<id>1d485c97b0c03577a40b34fb762c76e98f417fa4</id>
<content type='text'>
This adds a new Controls setting for adjusting the behavior
when locked, and an option for allowing volume control.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds a new Controls setting for adjusting the behavior
when locked, and an option for allowing volume control.
</pre>
</div>
</content>
</entry>
</feed>
