Commit graph

18248 commits

Author SHA1 Message Date
Solomon Peachy
ecb8014a06 FS#13766: Updated Vietnamese Translation (Chu Khanh Hanh)
Change-Id: I3cf9cf9814a549e49eecd7bed0e364c2b2b1439b
2026-01-25 08:59:10 -05:00
Solomon Peachy
b056191e89 Translation updates:
* German (Wilfried Winkler)
 * Korean (Hoseok Seo)
 * Polish (Adam Rak)
 * Slovak (Matej Golian)
 * US English (Myself)

Change-Id: Ief4de3c8f6aa88aba6ffae9969d22763a1969743
2026-01-24 17:44:36 -05:00
William Wilgus
6035b1fc1b [lua][BUGFIX] splash_scroller FS#13753, 13754 unicode + default font/fg/bg
FS#13753 - Rocklua error splash don't display part or full filename when
it is non-ASCII
FS#13754 - Rocklua error splash don't reset gui settings (bg, fg and font)

when using signed char unicode codepoints can show up as < '0'
code was looking to remove control chars < ' ' which also removed
unicode code points in the process

Change-Id: I48074a7854f2bee195ca554e1f86505fe5567db6
2026-01-24 09:19:19 -05:00
William Wilgus
2b6029ae8d rliimg add flip image example (#FS13745) Try #2
FS#13745 - Add transpose (like in python pillow module) and smooth resizing in rocklua

most of this is supplied 'require image'

flipping an image is built-in to the image generator function

add image flip example to rliimg

pushed the wrong script

Change-Id: I2c512a70ed26b0457e46f2f2a187d3365783af67
2026-01-24 01:43:58 -05:00
William Wilgus
b3683c84d8 [FIX Yellow] kbd_helper.c unsigned / signed
Change-Id: I10382b5ad930d350945da950a5d829c000e18f31
2026-01-23 23:00:12 -05:00
William Wilgus
a0bd28a408 rliimg add flip image example (#FS13745)
FS#13745 - Add transpose (like in python pillow module) and smooth resizing in rocklua

most of this is supplied 'require image'

flipping an image is built-in to the image generator function

add image flip example to rliimg

Change-Id: Ia53933c9ad09d2a5b92af45eb7a1140b64b6ae01
2026-01-23 22:43:08 -05:00
William Wilgus
1194a968bd [BUGFIX] pluginlib kbd_helper.c buffer ovfl
sizeof is in bytes len counts as a ucschar
should also be added to total_len

yep buffer ovfl

Change-Id: Ibebb8574e6dbab0ca78d1cdfeb04cbbda38f05e9
2026-01-23 21:58:32 -05:00
William Wilgus
163c3723bc announce_status re-fix splashf voice prompts, add missing lang entry
%s thru an ID2P() won't be voiced

Change-Id: Ibce1e818a6ae35c388f75182c3a8226371b420b3
2026-01-23 21:05:44 -05:00
William Wilgus
c80723b539 announce_status plugin command line arguments + force_enque_next
I had commented out 'talk_force_enqueue_next()' in the voice prompts
pretty sure it was because really long prompts just keep droning on
problem being as soon as the plugin returns in some cases the prompt
gets cut off by the parent calling shutup on us

so it is now a setting (on by default)

Now allows command line arguments
so you can announce whatever prompt you want whenever / wherever you want
(checkout open plugins for a way to create a plugin with command line arguments)
you can then add this .opx shortcut to your shortcuts or quick screen

and as before you can use a hotkey which also will allow command line args..

Change-Id: Id8883c0a4e85e1cb813959ab72e89817f388a397
2026-01-23 11:02:36 -05:00
William Wilgus
3c6b9bb458 FS#13748 - The imageviewer plugin decodes the file infinitely when opening a empty JPEG file.
Couldn't reproduce this on most of my devices or the sims
turns out the bug depends on uninitialized memory being FF
and the file empty

Uninitialized memory fixed what I saw at least..

Change-Id: Ie267af0a20685003ee28ff42d008dd7942a7c6fc
2026-01-22 23:59:00 -05:00
William Wilgus
1c3e9c181e [Fix Red] openplugins -- import and export thru settings save / restore settings
Change-Id: Ief990b282459637a2f5974b46a6250a52b444cc0
2026-01-22 11:19:44 -05:00
William Wilgus
045d148697 openplugins -- import and export thru settings save / restore settings
saves openplugin entries to the config file for later import to the database

lang_english_to_id() allows entries to be transfered between builds

Change-Id: I47e01c5f75f8b0e69c203828e21759ef24bf125d
2026-01-22 10:41:50 -05:00
William Wilgus
e75ffe5f72 lua add rb_poly.lua vector drawing and memoization demo
just playing around with using lots of ram (and processing power)
in lua threw this together vector draws Rb logo and flips rotates and zoom

Change-Id: Ie1fe16a9a50271657f2ab7b9a39bf71e6db90d2c
2026-01-21 08:54:16 -05:00
William Wilgus
530cad0c7a FS#13718 - The image_save library (rocklua) can't correctly save an image with an odd resolution.
the image save script apparently does not like odd numbers for width

local bytesleft = linebytes - (bytesperpixel * w )

this should actually be pxleft since the image loop below returns pixels not bytes

tested on 1 bit 2 bit, 16 bit and 32 bit images in sim

Change-Id: Ic186c095c29d318dcfb7d76b83e07c75f1460584
2026-01-21 08:15:56 -05:00
Solomon Peachy
b9ce049876 debug: show touchscreen info in the hw debug screen on hibylinux targets
Also add this debug screen to the hiby r1 / r3proii targets.

Change-Id: Ia255571838baef9900f6b6a3c395c10b872f5f5a
2026-01-17 22:48:29 -05:00
Christian Soffke
f0d99391de plugins: random folder advance: misc improvements
fixes:
- traverse_dir was called recursively using two
  MAX_PATH local buffers => possible stack overflow
- The import function inserted additional, incorrect,
  entries when the whole line buffer was filled
- "Dirs not found" message overlapped number
  of folders when generating folder list
- Final number of scanned folders wasn't displayed
- Wouldn't stop inserting when maximum number
  of files in playlist was already reached
- Prevent buffer overflow when importing
- Don't write to fd after opening failed
- Use whole buffer with read_line, instead
  of subtracting 1. Remove hard coded sizes
- CRs don't need to be removed in import function
  (already handled by read_line)

features:
- Use insert context for *much* faster insertion
  of large # of folders, and nicer progress display
- Use UI viewport
- Add progress indicator when saving or loading
- Display number of folders in edit list title
- Go back to plugin's main menu from edit list
- Only ask to save changes if list is dirty
- Warn before erasing modified playlist
- Flag successfully created playlist as modified
- Make folder scan wait for dircache
- Shorten menu item names
- Put "Play Shuffled" menu item first
- Remember selection when returning from submenus
- Go to WPS after ACTION_TREE_WPS
- Exit menu when pressing Back
- Perform an initial scan, if no data file exists
  yet, when "Play Shuffled" or "Edit" is selected

Change-Id: I7df76f8fb8387888ce491d8b74b01b481e9997d3
2026-01-16 16:49:38 +01:00
Christian Soffke
d395520cd0 fix yellow 2e9c2da
Eliminate static pointer

Change-Id: Id26363771439dbd1f08c661ae2ff4277e0e8f288
2026-01-14 17:49:42 +01:00
Christian Soffke
2e9c2dafb2 fix use of out-of-scope stack memory in 18dfd8f691
when calling do_menu recursively

Change-Id: I949cf1cedd80746a7e29b67804470365987046f3
2026-01-14 17:11:50 +01:00
Christian Soffke
c296c2781a fix regression 18dfd8f691
The WPS, or certain screens accessed directly from it,
may have displayed a title when they shouldn't have.

Change-Id: I655f58aa7c4ff3ff996d9798fdbe06c14f09c27b
2026-01-14 15:33:56 +01:00
Christian Soffke
58616e685d gui: yesno: don't force redraw when leaving screen
Change-Id: Ic37ee29318535952e9420c2f58e24bbb27183120
2026-01-13 20:07:03 -05:00
Christian Soffke
18dfd8f691 Reduce list title glitches when switching between menus
Each time viewportmanager_theme_enable (or _undo) is called,
the SBS title is reset, even if the theme remains enabled.
Thus switching from one menu to another, if do_menu is called
again, briefly results in an empty title before the correct
one is displayed. Even unchanged titles will unnecessarily
flash for a moment. Other theme elements that are drawn using
conditions based on the title, may also appear glitchy.

This patch adds a way to make the status bar title persist by
copying it to a static buffer. Persistent titles are not reset
by toggle_theme (although scrolling will be stopped in
viewportmanager_theme_undo), so that the theme can immediately
display the appropriate title in do_menu, simplelist_show_list,
the yesno screen, or plugins that want to keep the theme enabled.

Change-Id: I1ec8f233b730321793eb7d3cad51496ee1b35440
2026-01-13 20:06:33 -05:00
Christian Soffke
399230e9ec Use SBS title in delete confirmation screens
When deleting files or directories, you will now see
the path's basename in the previously empty title of
an SBS, making it a bit easier to immediately know
whether you've selected the correct item.

Matching titles were also added everywhere else that
confirm_delete_yesno is used.

The full path of the item is still displayed below,
and continues to scroll, so that themes without a
title, such as the default cabbiev2, will look the
same.

Change-Id: I32422cfbbf6e680f58456237380176617789cac3
2026-01-13 20:05:43 -05:00
Solomon Peachy
7518b8c309 debug: only show usb_charging_maxcurrent() if HAVE_USBSTACK is defined.
HAVE_USB_CHARGING_ENABLE isn't enough, as the ihp3xx targets have an odd
combination of USB charging but rely on an external ATA bridge.

Change-Id: I2cba5f218971ac23cde8dca34faa06bbb44a2448
2026-01-13 19:28:54 -05:00
Solomon Peachy
4850684149 Fix red introduced in 41d5ca3c48
Later GCC versions are apparently more permissive than older versions
when it comes to variable declarations not part of a block (ie {} that
immediately follows a case statement.

This resulted in every non-simulator device target failing to build,
along with sim build on older compilers.  I should have caught this in
the review; mea culpa.

Change-Id: Id32e085e34601cca7be273ed45711a4b8ee182a0
2026-01-13 17:28:36 -05:00
Aidan MacDonald
cd20bc7d16 debug_menu: show USB charging current limit on battery screen
Change-Id: I5cbcdba5724616e85cde1cf9e422c8ccdb34592b
2026-01-13 17:00:00 -05:00
Arin Kim
41d5ca3c48 skin: add new %pP tag (playlist progress as percentage)
This new tag returns the position in the playlist as a percent. The main usecase for this is to use it as a bar tag, allowing themes to visually present playlist progress.

Change-Id: I0eb001e7458d97b8a0db39f3980d9c283bc8806b
2026-01-13 16:59:00 -05:00
Solomon Peachy
1c429e2209 settings: double internal size of "path list" from 80 to 160 bytes
* Autoresume path list
 * Database scan path list

Gives us a bit more headroom

Change-Id: Icb78d6f46dd39658334ddc3d8dc44863b0e138b4
2026-01-13 15:07:22 -05:00
Solomon Peachy
2db798ff6d FS#13755: Updated Moldavian and Romanian translations (Mihai Alexandru Vasiliu)
Change-Id: I631393e17de68ea80e5f9b7ccc8793d1273b07d5
2026-01-12 08:26:16 -05:00
Mauricio Garrido
752467dee4 3ds: Various fixes, optimizations.
This commit does the following changes:

- Fix mkdir implementation not reporting EEXIST error.
- Fix database build feature.
- Small speed-up when parsing directories and files.
- Fix buffering thread hogging cpu and preventing other threads to run.
- Fix sdl plugins not compiling by re-adding ctru specific cflags in sdl.make.

Change-Id: I507c0dcc85cdbcc607ab9c9c6d0b42e6a80caa5a
2026-01-09 20:54:44 -05:00
Solomon Peachy
0abfb3ff78 voice: Include a simple string enumeration in voicestrings.zip
This maps the numerical IDs contained within the binary .vstrings files
to their logical LANG_* and VOICE_* names.

While not strictly needed to produce voice files, it adds the final
piece to be able to use vstrings files to produce the same voice files
as the existing 'make voice' flow that directly parses the language files.

The 'make voice' flow intentionally divert a few of the generated clips
into standalone files:

 * "invalid voice file"
 * <spoken language name>
 * <short pause>

For this to be possible, we need to know which specific entries in
vstrings map to the ones we care about, and without this enumeration
(which can change on a per-target or even per-build basis) this is
effectively impossible.

The produced lang-enum.txt is simple, with one entry per line of the
format: number:name

Note that nothing uses this new file yet; that will come in subsequent
commits.

Change-Id: Iec3fccbb6d503dd7e2d529aad318009a489b1d77
2026-01-09 20:47:34 -05:00
William Wilgus
032a38df4e lua -- remove direct rb-> libc calls infavor of macro substitution WIP
there are no functional changes in this patch
it just makes it easier to build lua in core app
or plugin form

-Update moved some things around messing up compilation on Native targets
due to *errno

Change-Id: I0921df62d72a87516ad95c68e986b5931c35345e
2026-01-08 22:32:23 -05:00
William Wilgus
ded29fd751 lua plugin remove strfrtime in favor of strfrtm.lua
saves 2.2k on the bin

also supplies gmtime, and a test script to check the returned time/dates

Change-Id: Ib83b11d89bdf44a50830ff51c72ac6395b675603
2026-01-08 21:39:54 -05:00
Aidan MacDonald
d791d26b6b apps: remove lc_open_from_mem() from plugin API
No plugin uses it and it doesn't work on hosted targets,
which limits its utility.

Change-Id: I5f29eec4dd11ffceb7be3e4d26e536483058055f
2026-01-05 13:42:23 -05:00
Aidan MacDonald
3d281c2ea3 apps: cleanly disable codec buffering when not supported
Move HAVE_CODEC_BUFFERING to config.h, and disable all
related code on targets that don't support the feature,
ie. hosted targets that can't implement lc_open_from_mem().

Change-Id: I0d2a43900cd05b1a80c3cee519f8ad7b26e39fe7
2026-01-05 13:15:49 -05:00
Nyx Guan
012245c51f tagtree/tagcache add new clause operator contains_oneof
new operators @~, *~
contains_oneof and not_contains_oneof

genre @~ "metal|core"
black metal, death metal, grindcore, mathcore

genre ~ "jazz" & genre *~ "rock|pop|fusion"
included: jazz, free jazz, cool jazz, etc.
excluded: jazz rock, jazz pop, jazz fusion

Change-Id: If9590c8607b58373a98f5c9ea537f54df78d5a2f
2026-01-04 22:55:40 -05:00
Solomon Peachy
b31becd4bc lang: Actually remove the deleted translations from SOURCES
Change-Id: I3cca83c2c999cbd99361606ef3fafc341d5b1395
2026-01-04 17:43:41 -05:00
Solomon Peachy
87f135b349 Retire the Afrikaans and Walliser German "translations"
They have not been touched in over 20 years, and have effectively
bitrotted to the point where they are effectively untranslated.

Any interest in these translations would have to effectively start from
scratch anyway, so let's stop pretending the status quo is useful.

Change-Id: I13e1ae920883f5babb232f0592076be24c8122d4
2026-01-04 17:25:51 -05:00
Marc Aarts
1f97ae73a5 Use user preferred touchscreen mode in 'Main Menu Config' plugin instead of defaulting to 'button' mode.
Motivation:

1. 'Absolute point' mode works fine in this plugin.
2. This plugin is part of the Rockbox menus. If the user setting is not 'button' mode, it is unexpected to have only this menu work in a different mode compared to all other menus.

Change-Id: Iec91d3cd875e8a80e835a4a58d87a6ec84529def
2026-01-03 20:25:13 -05:00
Sebastian Leonhardt
a0bd48bfd7 Creative ZENV: fix keymap
(remove overlooked reference to BUTTON_MENU)


Change-Id: I63e8f19726dc04c57e45fa4ad704fe83951ed987
2026-01-03 20:03:24 -05:00
Aidan MacDonald
ea49358cc6 playlist: fix missing cleanup on OOM in playlist_resume()
Introduced by 3892773bd7, my fault for hitting merge
too quickly...

Change-Id: I18bbc3259a67664753a608a0175c59ee5a4241e0
2026-01-04 00:05:16 +00:00
mojyack
3892773bd7 playlist: fix deadlock when calling playlist_restore() on certain timing
for example:
<audio> audio_thread
<audio> -audio_playback_handler
<audio> --audio_start_playback
<audio> ---audio_fill_file_buffer
<audio> ----playlist_peek
<main>  -playlist_resume { playlist_write_lock(playlist) }
<main>  --alloc_tempbuf
<main>  ---core_alloc_ex
<main>  ----buflib_alloc_ex
<main>  -----buflib_compact_and_shrink
<main>  ------playback.c:shrink_callback
<main>  -------audio_queue_send(Q_AUDIO_STOP)
<main>  (waiting for audio queue reply)
<audio> -----get_track_filename { playlist_write_lock(playlist) }
<audio> (waiting for playlist lock)

resolve this by not locking playlist until temporary buffer is allocated

Change-Id: I55a856780d17455b13e2515e096095ae0e9c86c2
2026-01-03 18:56:57 -05:00
Solomon Peachy
247d2020fa Mechanical correction for Ukrainian translation
Change-Id: Iaf1476e81c6145cd33ec35267027cb172732f5a5
2026-01-03 14:03:57 -05:00
Solomon Peachy
ae1bcbf913 FS#13743 - Small fix for Ukrainian translation (Pavlo Rudy)
Change-Id: I250bd30cfceaf7c210626c18697ede2ccd90d5bd
2026-01-03 14:02:08 -05:00
Mauricio Garrido
09a31fff91 3ds: Enable plugins for the 3ds platform.
This commit enables plugins for the 3ds platform.
And adds 3ds specific pad configurations for each plugin.

Change-Id: Ie28fef4da32ed4cd2caa6c9fa3b2fe312ee009ef
2025-12-31 21:13:34 -05:00
Roman Artiukhin
7d067ca798 imageviewer: jpegp: improve downscale quality
Use simple area-averaging for smoother images.

Change-Id: I7ac2db05262500041286404c97a615e4b3a43194
2025-12-31 21:11:51 -05:00
Solomon Peachy
cc9ce232ab Translation updates:
* Latvian (Renalds Belaks)
 * Hungarian (Gyúróczki Norbert)

Change-Id: I85b15a925000ac5f8e63b368a7d0938224693a6c
2025-12-31 06:58:48 -05:00
Solomon Peachy
a8ff5597bd FS#13739: Updated Vietnamese Translation (Chu Khanh Hanh)
Change-Id: I5bc0086e9a6c144203456dcd5652e3dd1e9f8bda
2025-12-30 23:18:04 -05:00
Sebastian Leonhardt
6552554939 Creative ZEN: split ZEN V keymaps off from other ZEN targets
The ZEN V target is the only one which has volume buttons,
but lacks the menu and shortcut buttons.
IMO an independant keymap will make maintenance easier.

Change-Id: Ide79fab629b13eae94946561d99052e570c0e4f2
2025-12-29 23:20:06 +01:00
Petr Mikhalicin
19a49220b1 plugin lrcplayer: Fix late rewinding at lrcplayer
If you try to rewind music at lrcplayer it
1. returns back to old time
2. play for some time (1-2 seconds)
3. only after that returns for new time

According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call

Change-Id: Id3755bfe4deeb7cd5d889ad7d8e1dec45061fa5c
2025-12-29 12:58:47 -05:00
Solomon Peachy
716f45e291 Another correction for the Dutch translation
Change-Id: Ia20ba715264464be17516220933675eef2e825bd
2025-12-29 12:57:19 -05:00