Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Ultrahand Overlay Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 4: Line 4:
|description=The fully craft-able overlay executor. Create directories, manage files, and customize configurations effortlessly using simple ini files.
|description=The fully craft-able overlay executor. Create directories, manage files, and customize configurations effortlessly using simple ini files.
|author=ppkantorski
|author=ppkantorski
|lastupdated=2025/06/08
|lastupdated=2025/06/12
|type=Overlays
|type=Overlays
|version=1.9.0
|version=1.9.2
|license=Mixed
|license=Mixed
|download=https://github.com/ppkantorski/Ultrahand-Overlay/releases
|download=https://github.com/ppkantorski/Ultrahand-Overlay/releases
Line 81: Line 81:


==Changelog==
==Changelog==
'''1.9.0'''
'''Version 1.9.2'''
# Title ID polling bug fixes in <code>libultrahand</code> (cleanup of the foreground fix implementation).
* Restoring of debug logging.
#* Before it was using old / outdated service calls for pulling the title ID.
** This caused issues in rare test cases, using the <code>USING_LOGGING_DIRECTIVE</code> set to 0 (off).
#* This issue appears to have caused crashes on certain switch environments according to users.
** Debug logging needs to be consolidated more (later).
# Various code optimizations in <code>libultrahand</code>.
* Opacity bug fix.
#* Rendering is slightly faster now than v1.8.9.
** This caused wallpapers to hit opacity before the rest of the items, making screenshots look weird. All fixed now.
#* Removal of <code>chrono</code> for libnx alternatives.
* Jump menu navigation from clicking up at the top of the list bug fix.
# <code>nx-ovlloader</code>/<code>nx-ovlloader+</code> have been re-compiled.
** This caused multiple &quot;up&quot; clicks to get stuck on the last item on the list initially for the second <code>up</code> click. Also fixed.
'''1.8.9'''
* Slight refinement to the <code>up</code> / <code>down</code> jump menu navigation.
# Significantly improved rendering has been applied to <code>libultrahand</code>'s custom <code>libtesla</code> fork.
* Threshold for successive clicks has been set from 150ms to 100ms for smoother navigation.
#* This now allows for 60fps wallpapers on stock CPU clock speeds.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.1...v1.9.2 Full Changelog: v1.9.1...v1.9.2]
#* CPU <code>714 MHz</code> under-clock without wallpapers should now render at 60fps as well.
 
#* CPU <code>612 MHz</code> under-clock is not quite at 60fps yet, but on various pages it can get pretty close.
'''Version 1.9.1'''
# A new bug fix for input isolation failing (foreground bug) on changing titles has also been applied to <code>libtesla</code>.
* Significant rendering improvements in <code>libultrahand</code> / <code>libtesla</code> (again).
#* This should prevent overlays compiled with <code>libultrahand</code> from losing their input focus on the menu when a game starts up.
** Faster string rendering (with safeguards) as well as rendering of other objects.
# Various optimizations to <code>drawTable</code> (the table drawing method).
** Faster glyph lookup (for drawing strings).
** Safe optimizations to critical rendering components (considerable improvements).
** 60fps now works on 918 MHz CPU with wallpapers.
** 60fps also works with 714 MHz CPU without wallpapers.
*** 612 Mhz CPU without wallpapers is now very close to 60fps with it rendering 60fps on certain menus.
* Bug fixes for left to right scrolling text (long ListItem text) not returning to its original position before restarting.
* Rewrite of the <code>List</code> class in <code>libtesla</code> to properly allow jump menu navigation.
** When at the top of the menu and <code>up</code> is pressed, the cursor will now automatically go to the bottom most item.
** When at the bottom of the menu and <code>down</code> is pressed, the cursor will now automatically go back to the top.
** When <code>L</code> is pressed, the cursor will jump to the top of the menu.
** When <code>R</code> is pressed, the cursor will jump to the bottom of the menu.
*** All jump menu implementations works on menus with ListItems and tables, or even just tables.
** Complete rewrite of the table scrolling implementation for smoother scrolling and less potential issues.
* Fixes to table drawing implementations.
** All tables are now <code>;scrollable=true</code> by default with proper scrolling implemented.
*** This property will eventually be removed, as well as the other scrollable properties.
* Download commands now have a 10s timeout.
* <code>Software Update</code> now removes the version label if it cannot pull the latest version details from GitHub.
** This will prevent people thinking an older version of the overlay is the latest.
* Slight cleanup of debug <code>logging</code>.
* Beta for [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.1.1 nx-ovlloader+ v1.1.1] is now live (not linked to <code>Update</code> for now for testing).
 
What's Changed:
* Tweak for dist target by [https://github.com/impeeza @impeeza] in [https://github.com/ppkantorski/Ultrahand-Overlay/pull/232 *232]
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/215e878...v1.9.1 Full Changelog: 215e878...v1.9.1]
 
'''Version 1.9.0'''
* Title ID polling bug fixes in <code>libultrahand</code> (cleanup of the foreground fix implementation).
** Before it was using old / outdated service calls for pulling the title ID.
** This issue appears to have caused crashes on certain switch environments according to users.
* Various code optimizations in <code>libultrahand</code>.
** Rendering is slightly faster now than v1.8.9.
** Removal of <code>chrono</code> for libnx alternatives.
* <code>nx-ovlloader</code>/<code>nx-ovlloader+</code> have been re-compiled.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/becd070...v1.9.0 Full Changelog: becd070...v1.9.0]
 
Update:
* Slight bug fixes with <code>libcurl</code> initializations (revert of changes).
* <code>setNextOverlay</code> bug fix for overlay filename launch arguments. - 06/07/2025 10:30 PM PST
* Bug fix for text extending off the screen causing crashes (like in lang file <code>es.json</code>). - 06/08/2025 6:07 AM PST
* A more elegant solution will be applied later to speed up the rendering a pinch.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.0...215e878 Full Changelog: v1.9.0...215e878]
 
'''Version 1.8.9'''
* Significantly improved rendering has been applied to <code>libultrahand</code>'s custom <code>libtesla</code> fork.
** This now allows for 60fps wallpapers on stock CPU clock speeds.
** CPU <code>714 MHz</code> under-clock without wallpapers should now render at 60fps as well.
** CPU <code>612 MHz</code> under-clock is not quite at 60fps yet, but on various pages it can get pretty close.
* A new bug fix for input isolation failing (foreground bug) on changing titles has also been applied to <code>libtesla</code>.
** This should prevent overlays compiled with <code>libultrahand</code> from losing their input focus on the menu when a game starts up.
* Various optimizations to <code>drawTable</code> (the table drawing method).
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.8...v1.8.9 Full Changelog: v1.8.8...v1.8.9]
 
Update:
Update:
* Slight cleanup of <code>libtesla</code>.
* Slight cleanup of <code>libtesla</code>.
* Revert of some of the cleanup changes. (bug fix for scrolling text)
* Revert of some of the cleanup changes. (bug fix for scrolling text)
'''1.8.8'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.9...becd070 Full Changelog: v1.8.9...becd070]
# New <code>Key Combo</code> implementation for launching any overlay.
 
#* Located in the overlay settings menu (<code>Y</code> on an overlay).
'''Version 1.8.8'''
#* This lets you set any overlay to any key combination (excluding your Ultrahand <code>Key Combo</code>).
* New <code>Key Combo</code> implementation for launching any overlay.
#* When setting an already used combo, combos set for overlays with the same combo are removed.
** Located in the overlay settings menu (<code>Y</code> on an overlay).
#* Very useful for quickly launching any overlay without invoking the <code>Ultrahand Overlay</code> menu.
** This lets you set any overlay to any key combination (excluding your Ultrahand <code>Key Combo</code>).
# Default theme table info color has been changed.
** When setting an already used combo, combos set for overlays with the same combo are removed.
#* For changes to apply to the default theme, users must re-apply the default theme in the theme selector on the settings menu.
** Very useful for quickly launching any overlay without invoking the <code>Ultrahand Overlay</code> menu.
# Fixes for <code>slot</code> commands to render the updated footers instead of a checkmark.
* Default theme table info color has been changed.
# Long tap on commands now invoke the <code>ScriptOverlay</code>.
** For changes to apply to the default theme, users must re-apply the default theme in the theme selector on the settings menu.
#* This makes all options of the menu fully accessible now via touch.
* Fixes for <code>slot</code> commands to render the updated footers instead of a checkmark.
# Bug fix for new packages and overlays not initially being listed with names until the menu reloads.
* Long tap on commands now invoke the <code>ScriptOverlay</code>.
# Slight code optimizations.
** This makes all options of the menu fully accessible now via touch.
'''1.8.7'''
* Bug fix for new packages and overlays not initially being listed with names until the menu reloads.
# Bug fixes for <code>file_source</code> toggles.
* Slight code optimizations.
#* There were issues with <code>file_source</code> not being properly resolved with subsequent clicks to <code>file_source</code> toggles.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.7...v1.8.8 Full Changelog: v1.8.7...v1.8.8]
#* Issues should now be resolved.
 
# Sorting related bug fixes for command grouping <code>split5</code>.
'''Version 1.8.7'''
# New method <code>flag</code> for generating empty text files with the name of files/folders within a directory
* Bug fixes for <code>file_source</code> toggles.
#* Called <code>flag &lt;input_path_wildcard_pattern&gt; &lt;output_dir&gt;</code>.
** There were issues with <code>file_source</code> not being properly resolved with subsequent clicks to <code>file_source</code> toggles.
#* Might not be particularly useful in most cases, but it is essential for proper management of active contents mods within <code>Mod Alchemist</code>.
** Issues should now be resolved.
# Tweaks / improvements to <code>dangerous pattern</code> detection.
* Sorting related bug fixes for command grouping <code>split5</code>.
#* Patterns with multiple <code>*</code> next to each other (i.e. <code>**</code> or <code>***</code>, etc) are now considered dangerous and will return a failed command for <code>move</code> and <code>delete</code>.
* New method <code>flag</code> for generating empty text files with the name of files/folders within a directory
#* <code>null*</code> and <code>*null</code> are also considered to be dangerous patterns (failed placeholder replacements).
** Called <code>flag &lt;input_path_wildcard_pattern&gt; &lt;output_dir&gt;</code>.
#* Cleanup of failed placeholder replacements to return <code>null</code> instead of empty values when necessary.```
** Might not be particularly useful in most cases, but it is essential for proper management of active contents mods within <code>Mod Alchemist</code>.
# <code>ScriptOverlay</code> (minus on a command) related bug fixes.
* Tweaks / improvements to <code>dangerous pattern</code> detection.
# Slight corrections to <code>compare</code> as well as <code>split</code> and <code>slice</code> placeholder methods.
** Patterns with multiple <code>*</code> next to each other (i.e. <code>**</code> or <code>***</code>, etc) are now considered dangerous and will return a failed command for <code>move</code> and <code>delete</code>.
# Slight code optimizations.
** <code>null*</code> and <code>*null</code> are also considered to be dangerous patterns (failed placeholder replacements).
** Cleanup of failed placeholder replacements to return <code>null</code> instead of empty values when necessary.```
* <code>ScriptOverlay</code> (minus on a command) related bug fixes.
* Slight corrections to <code>compare</code> as well as <code>split</code> and <code>slice</code> placeholder methods.
* Slight code optimizations.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/06f9666...v1.8.7 Full Changelog: 06f9666...v1.8.7]
 
'''Version 1.8.6'''
* Tables now render live values with placeholder replacements.
** Values will poll / update once every second.
* New <code>back</code> command implementation for simulating <code>Back</code> / <code>KEY_B</code> button press.
* <code>filter</code> commands now accept wildcard patterns for more advanced filtering of source inputs.
* New command grouping (<code>;grouping=</code>) option <code>split5</code>. (similar to <code>split3</code> except it works on the folder containing the file/folder).
** '''Side-note:''' All command grouping modes will eventually be renamed to avoid confusion.
* Title ID placeholders <code>{title_id}</code> now work within source function definitions.
* <code>pxhtxt2ips</code> conversions now create an empty title ID text file within the folder where the IPS mod is generated.
** This feature is necessary for proper management of active mods within <code>Mod Alchemist</code>.
** The title ID is read from the comments within the <code>.pchtxt</code> file (already necessary for pxhtxt2cheat conversions).
** All IPS mods must be regenerated for this file to be generated. Otherwise IPS mods will not register within the <code>Active</code> tabs on <code>Mod Alchemist</code>.
* Various menu traversal related bug fixes.
* Various bug fixes within <code>libultrahand</code>.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.5...v1.8.6 Full Changelog: v1.8.5...v1.8.6]


'''1.8.6'''
# Tables now render live values with placeholder replacements.
#* Values will poll / update once every second.
# New <code>back</code> command implementation for simulating <code>Back</code> / <code>KEY_B</code> button press.
# <code>filter</code> commands now accept wildcard patterns for more advanced filtering of source inputs.
# New command grouping (<code>;grouping=</code>) option <code>split5</code>. (similar to <code>split3</code> except it works on the folder containing the file/folder).
#* '''Side-note:''' All command grouping modes will eventually be renamed to avoid confusion.
# Title ID placeholders <code>{title_id}</code> now work within source function definitions.
# <code>pxhtxt2ips</code> conversions now create an empty title ID text file within the folder where the IPS mod is generated.
#* This feature is necessary for proper management of active mods within <code>Mod Alchemist</code>.
#* The title ID is read from the comments within the <code>.pchtxt</code> file (already necessary for pxhtxt2cheat conversions).
#* All IPS mods must be regenerated for this file to be generated. Otherwise IPS mods will not register within the <code>Active</code> tabs on <code>Mod Alchemist</code>.
# Various menu traversal related bug fixes.
# Various bug fixes within <code>libultrahand</code>.
Update:
Update:
* Slight bug fix with menu traversal.
* Slight bug fix with menu traversal.
'''1.8.5'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.6...06f9666 Full Changelog: v1.8.6...06f9666]
 
'''Version 1.8.5'''
* Critical bug fixes for decimal to hex conversions.
* Critical bug fixes for decimal to hex conversions.
* Updates to all <code>devkitpro</code> related libraries.
* Updates to all <code>devkitpro</code> related libraries.
'''1.8.4'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/2f3a5b6...v1.8.5 Full Changelog: 2f3a5b6...v1.8.5]
# Various bug fixes to <code>isDangerousCombination</code> (dangerous pattern detection). Certain wildcard patterns were being flagged with the old implementation that should not be.
 
#* This fixes <code>exeFS Groups</code>'s <code>Enable All</code> and <code>Disable All</code> commands in <code>Mod Alchemist</code>.
'''Version 1.8.4'''
# Bug fixes for the <code>ScriptOverlay</code> (minus on a command) where <code>./</code> placeholders were not being properly replaced with the package folder for commands.
* Various bug fixes to <code>isDangerousCombination</code> (dangerous pattern detection). Certain wildcard patterns were being flagged with the old implementation that should not be.
# Various logging related bug fixes. (default log is currently set to  <code>sdmc:/switch/.packages/log.txt</code> when <code>logging</code> is enabled)
** This fixes <code>exeFS Groups</code>'s <code>Enable All</code> and <code>Disable All</code> commands in <code>Mod Alchemist</code>.
# Tweaks to <code>decimalToHex</code> implementations in <code>libultra</code> to manually specify byte group size (byte_group_size 2 = XX, byte_group_size 4 = XXXX, byte_group_size 6 = XXXXXX, etc). This should resolve problems related to a decimal value of 0. Default byte_group_size is 2, then will be assumed according to the decimal value if greater.
* Bug fixes for the <code>ScriptOverlay</code> (minus on a command) where <code>./</code> placeholders were not being properly replaced with the package folder for commands.
#* <code>hex-by-custom-decimal-offset &lt;file_path&gt; &lt;custom_pattern&gt; &lt;offset&gt; &lt;decimal_data&gt; [byte_group_size]</code>
* Various logging related bug fixes. (default log is currently set to  <code>sdmc:/switch/.packages/log.txt</code> when <code>logging</code> is enabled)
#* <code>hex-by-custom-rdecimal-offset &lt;file_path&gt; &lt;custom_pattern&gt; &lt;offset&gt; &lt;rdecimal_data&gt; [byte_group_size]</code>
* Tweaks to <code>decimalToHex</code> implementations in <code>libultra</code> to manually specify byte group size (byte_group_size 2 = XX, byte_group_size 4 = XXXX, byte_group_size 6 = XXXXXX, etc). This should resolve problems related to a decimal value of 0. Default byte_group_size is 2, then will be assumed according to the decimal value if greater.
#* <code>hex-by-decimal &lt;file_path&gt; &lt;decimal_data_to_replace&gt; &lt;decimal_data_replacement&gt; [byte_group_size] [optional_occurrence]</code>
** <code>hex-by-custom-decimal-offset &lt;file_path&gt; &lt;custom_pattern&gt; &lt;offset&gt; &lt;decimal_data&gt; [byte_group_size]</code>
#* <code>hex-by-rdecimal &lt;file_path&gt; &lt;decimal_data_to_replace&gt; &lt;decimal_data_replacement&gt; [byte_group_size] [optional_occurrence]</code>
** <code>hex-by-custom-rdecimal-offset &lt;file_path&gt; &lt;custom_pattern&gt; &lt;offset&gt; &lt;rdecimal_data&gt; [byte_group_size]</code>
#* <code>{decimal_to_hex(decimal, byte_group_size)}</code> or <code>{decimal_to_hex(decimal)}</code>
** <code>hex-by-decimal &lt;file_path&gt; &lt;decimal_data_to_replace&gt; &lt;decimal_data_replacement&gt; [byte_group_size] [optional_occurrence]</code>
Sidenote: For usage of <code>optional_occurrence</code>, <code>byte_group_size</code> must be specified.
** <code>hex-by-rdecimal &lt;file_path&gt; &lt;decimal_data_to_replace&gt; &lt;decimal_data_replacement&gt; [byte_group_size] [optional_occurrence]</code>
** <code>{decimal_to_hex(decimal, byte_group_size)}</code> or <code>{decimal_to_hex(decimal)}</code>
* Sidenote: For usage of <code>optional_occurrence</code>, <code>byte_group_size</code> must be specified.<br />
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.3...v1.8.4 Full Changelog: v1.8.3...v1.8.4]
 
Update:
Update:
* Pull Request [https://github.com/ppkantorski/Ultrahand-Overlay/issues/5 #5] got deleted in <code>libultrahand</code> for some reason, so <code>respect @disabled flag pchtxt</code> functionality has been restored.
* Pull Request [https://github.com/ppkantorski/Ultrahand-Overlay/issues/5 *5] got deleted in <code>libultrahand</code> for some reason, so <code>respect @disabled flag pchtxt</code> functionality has been restored.
* Fixes to various hex method calls (some got broken with the update). - 06/26/2025 6:04 PM PST
* Fixes to various hex method calls (some got broken with the update). - 06/26/2025 6:04 PM PST
'''1.8.3'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.4...2f3a5b6 Full Changelog: v1.8.4...2f3a5b6]
# New toggle option <code>Dynamic Logo</code> in <code>UI Settings &gt; Miscellaneous</code> for enabling / disabling the dynamic logo effect.
 
# Various fixes to <code>libultrahand</code>.
'''Version 1.8.3'''
#* Launch combo is read from the <code>tesla.ini</code> if <code>ultrahand.ini</code> does not exist for overlays compiled with libultrahand. (bug fix)
* New toggle option <code>Dynamic Logo</code> in <code>UI Settings &gt; Miscellaneous</code> for enabling / disabling the dynamic logo effect.
#* Fix for converting pchtxt's with embedded comments as well as a couple other tweaks.
* Various fixes to <code>libultrahand</code>.
#* Subtle UI corrections / improvements.
** Launch combo is read from the <code>tesla.ini</code> if <code>ultrahand.ini</code> does not exist for overlays compiled with libultrahand. (bug fix)
# The memory indicator on the <code>System</code> page now shows the true memory (no longer -8MB) and has custom coloring.
** Fix for converting pchtxt's with embedded comments as well as a couple other tweaks.
#* New theme colors <code>healthy_ram_text_color</code>, <code>neutral_ram_text_color</code>, and <code>bad_ram_text_color</code>.
** Subtle UI corrections / improvements.
#** Healthy is &gt;= 9MB.
* The memory indicator on the <code>System</code> page now shows the true memory (no longer -8MB) and has custom coloring.
#** Neutral is &lt; 9MB, &gt;= 3MB.
** New theme colors <code>healthy_ram_text_color</code>, <code>neutral_ram_text_color</code>, and <code>bad_ram_text_color</code>.
#** Bad is &lt; 3MB.
*** Healthy is &gt;= 9MB.
# Various minor tweaks.
*** Neutral is &lt; 9MB, &gt;= 3MB.
#* The pre-generated package.ini now has symbols on some of the <code>Reboot To</code> commands and the <code>Shutdown</code> command.
*** Bad is &lt; 3MB.
#* The <code>ultra.ini</code> theme that is installed when updating has been updated to use white text color.
* Various minor tweaks.
#* The <code>ultra-blue.ini</code> theme that is installed when updating is now the old <code>ultra.ini</code> theme color.
** The pre-generated package.ini now has symbols on some of the <code>Reboot To</code> commands and the <code>Shutdown</code> command.
'''1.8.2'''
** The <code>ultra.ini</code> theme that is installed when updating has been updated to use white text color.
# New <code>Page Swap</code> toggle for swapping the overlays and packages page locations.
** The <code>ultra-blue.ini</code> theme that is installed when updating is now the old <code>ultra.ini</code> theme color.
#* Located in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Page Swap</code>.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d448e61...v1.8.3 Full Changelog: d448e61...v1.8.3]
#* This feature will draw the packages menu on the left and the overlays menu on the right when enabled.
 
# Fixes to <code>libultrahand</code> for preventing screenshots from occurring during capture event initializations.
'''Version 1.8.2'''
#* This is particularly useful for isolating actual capture button events from initializations within projects like [https://github.com/HookedBehemoth/bitmap-printer bitmap-printer] / [https://github.com/J-D-K/PNGShot PNGShot].
* New <code>Page Swap</code> toggle for swapping the overlays and packages page locations.
#** If using <code>bitmap-printer</code>, it is currently recommended to use a version built with pull request [https://github.com/HookedBehemoth/bitmap-printer/pull/25 #25] or else there will be dragons (unwanted screenshots in the <code>Bitmaps</code> directory generated every time a <code>libultrahand</code> compiled overlays is opened).
** Located in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Page Swap</code>.
#** If using <code>PNGShot</code>, it is currently recommended to use a version built with pull request [https://github.com/J-D-K/PNGShot/pull/5 #5], however builds from latest source code on the repo should now work as well without producing unwanted screenshots.
** This feature will draw the packages menu on the left and the overlays menu on the right when enabled.
#* '''Notice:'''
* Fixes to <code>libultrahand</code> for preventing screenshots from occurring during capture event initializations.
#** All projects built with <code>libultrahand</code> will need to be recompiled with latest <code>libultrahand</code> for this fix to apply.
** This is particularly useful for isolating actual capture button events from initializations within projects like [https://github.com/HookedBehemoth/bitmap-printer bitmap-printer] / [https://github.com/J-D-K/PNGShot PNGShot].
*** If using <code>bitmap-printer</code>, it is currently recommended to use a version built with pull request [https://github.com/HookedBehemoth/bitmap-printer/pull/25 *25] or else there will be dragons (unwanted screenshots in the <code>Bitmaps</code> directory generated every time a <code>libultrahand</code> compiled overlays is opened).
*** If using <code>PNGShot</code>, it is currently recommended to use a version built with pull request [https://github.com/J-D-K/PNGShot/pull/5 *5], however builds from latest source code on the repo should now work as well without producing unwanted screenshots.
** '''Notice:'''
*** All projects built with <code>libultrahand</code> will need to be recompiled with latest <code>libultrahand</code> for this fix to apply.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.1...v1.8.2 Full Changelog: v1.8.1...v1.8.2]
 
Update:
Update:
* Fixes for returning to overlay menu after exiting overlay with <code>Page Swap</code>. - 11/05/2024 3:06 AM PST
* Fixes for returning to overlay menu after exiting overlay with <code>Page Swap</code>. - 11/05/2024 3:06 AM PST
* Touch selection fixes for left / right page with <code>Page Swap</code>. - 11/05/2024 3:33 AM PST
* Touch selection fixes for left / right page with <code>Page Swap</code>. - 11/05/2024 3:33 AM PST
* Dangerous pattern tweak for wildcard patterns within the <code>Album</code> folder. - 11/05/2024 6:42 PM PST
* Dangerous pattern tweak for wildcard patterns within the <code>Album</code> folder. - 11/05/2024 6:42 PM PST
'''1.8.1'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.2...d448e61 Full Changelog: v1.8.2...d448e61]
# New package header <code>;show_version=</code> is an optional <code>true</code>/<code>false</code> option for forcing the menu to show the package version instead of the current section title under the package title. (<code>false</code> by default)
 
# Various bug fixes.
'''Version 1.8.1'''
#* Fix to <code>Software Update</code> command and <code>Memory Expansion</code> to download <code>nx-ovlloader</code>/<code>nx_ovlloader+</code> v1.0.8 instead of v1.0.9 if AMS version is &lt; 1.8.0.
* New package header <code>;show_version=</code> is an optional <code>true</code>/<code>false</code> option for forcing the menu to show the package version instead of the current section title under the package title. (<code>false</code> by default)
#* Fix for forwarder footers being updated when they should not be.
* Various bug fixes.
#* Fix for table with <code>null</code> value replacements not correctly aligning <code>Not available</code> / <code>UNAVAILABLE_SELECTION</code> text properly.
** Fix to <code>Software Update</code> command and <code>Memory Expansion</code> to download <code>nx-ovlloader</code>/<code>nx_ovlloader+</code> v1.0.8 instead of v1.0.9 if AMS version is &lt; 1.8.0.
#* Fix for combo labels not being converted to their icon counterparts upon initialization.
** Fix for forwarder footers being updated when they should not be.
'''1.8.0'''
** Fix for table with <code>null</code> value replacements not correctly aligning <code>Not available</code> / <code>UNAVAILABLE_SELECTION</code> text properly.
** Fix for combo labels not being converted to their icon counterparts upon initialization.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.0...v1.8.1 Full Changelog: v1.8.0...v1.8.1]
 
'''Version 1.8.0'''
<ol>
<ol>
<li><p>Introduction of new <code>true</code> / <code>false</code> command options <code>;mini=</code> and <code>;selection_mini=</code> for usage of &quot;mini&quot; ListItems.</p>
<li><p>Introduction of new <code>true</code> / <code>false</code> command options <code>;mini=</code> and <code>;selection_mini=</code> for usage of &quot;mini&quot; ListItems.</p>
Line 244: Line 319:
<li><code>set-footer</code> for <code>null</code> values will now return a failed command.</li></ul>
<li><code>set-footer</code> for <code>null</code> values will now return a failed command.</li></ul>
</li>
</li>
'''1.8.1'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/367a0bb...v1.8.0 Full Changelog: 367a0bb...v1.8.0]</ol>
<li><p>Complete rework of the <code>Script Overlay</code> (<code>-</code> / <code>minus</code> on a command).</p>
<ul>
<li>Users can now preview command blocks and execute would be executed commands on the <code>Script Overlay</code>.</li>
<li>All command objects are now compatible.</li></ul>
</li>
<li><p>Package header routing has now been implemented.</p>
<ul>
<li>This will make it easier for users to tell where they are within the menu when navigating through packages.</li></ul>
</li>
<li><p>Ultrahand's overlay development libraries have now been moved to [https://github.com/ppkantorski/libultrahand libultrahand].</p>
<ul>
<li>Numerous improvements have been made within <code>libultrahand</code> to make recompiling overlays easier.</li>
<li>Users can also use these libraries for their own overlay development, or to rebuild other Tesla overlays with Ultrahand features.
<ul>
<li>A number of overlays have been rebuilt as examples. (see [https://github.com/ppkantorski/libultrahand?tab=readme-ov-file#build-examples Build Examples])</li></ul>
</li></ul>
</li>
<li><p>Introduction of new theme colors.</p>
<ul>
<li><code>default_overlay_color</code> for specifying the default title color for overlays compiled with <code>libultrahand</code>.</li>
<li><code>default_script_color</code> for specifying the default title color for the <code>Script Overlay</code>.</li></ul>
</li>
<li><p>Various fixes to track-bars.</p>
<ul>
<li>Users can now also click <code>A</code> to apply track-bar settings.</li>
<li>Users can hold <code>R</code> on top of an unlocked track bar to enable changing pages <code>left</code> / <code>right</code> (using D-Pad).</li>
<li>Fixes to rapid left / right clicks.</li>
<li>Fixes to text alignments.</li>
<li>Color swap for cursor over locked / unlocked trackbars.</li>
<li>Various touch related bug fixes.</li></ul>
</li>
<li><p>New table drawing options and various improvements to table rendering.</p>
<ul>
<li><code>;wrapping_mode=</code> can be set to <code>none</code>, <code>char</code>, or <code>word</code> for tables. (default is <code>none</code>)</li>
<li><code>;wrapping_indent=</code> can be set to <code>true</code> or <code>false</code> for drawing an indent on the wrapped lines.
<ul>
<li>'''Notice:''' Wrapping modes will only be applied to the '''section''' text on the table.</li></ul>
</li></ul>
</li>
<li><p>Software update command now updates <code>nx-ovlloader</code> / <code>nx-ovlloader+</code> as well as the included themes.</p>
<ul>
<li>[https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.9 nx-ovlloader+] has been updated for HOS 19.0.0 support.
<ul>
<li>'''Notice:''' This update is required for proper reading of device FUSE data.</li></ul>
</li></ul>
</li>
<li><p>Fixes for drawing the overlays / packages menu for newly added overlays / packages.</p></li>
<li><p>Various UI corrections / improvements and code optimizations.</p>
<ul>
<li>Wallpapers now consume half the system memory they used to.</li>
<li>Text width computations are now fixed. This should allow Ultrahand to display other fonts and languages more properly.</li></ul>
</li></ol>


'''Full Changelog''': [https://github.com/ppkantorski/Ultrahand-Overlay/compare/aabb4e7...v1.7.9 aabb4e7...v1.7.9]
'''Version 1.7.9'''
# Complete rework of the <code>Script Overlay</code> (<code>-</code> / <code>minus</code> on a command).
#* Users can now preview command blocks and execute would be executed commands on the <code>Script Overlay</code>.
#* All command objects are now compatible.
# Package header routing has now been implemented.
#* This will make it easier for users to tell where they are within the menu when navigating through packages.
# Ultrahand's overlay development libraries have now been moved to [https://github.com/ppkantorski/libultrahand libultrahand].
#* Numerous improvements have been made within <code>libultrahand</code> to make recompiling overlays easier.
#* Users can also use these libraries for their own overlay development, or to rebuild other Tesla overlays with Ultrahand features.
#** A number of overlays have been rebuilt as examples. (see [https://github.com/ppkantorski/libultrahand?tab=readme-ov-file#build-examples Build Examples])
# Introduction of new theme colors.
#* <code>default_overlay_color</code> for specifying the default title color for overlays compiled with <code>libultrahand</code>.
#* <code>default_script_color</code> for specifying the default title color for the <code>Script Overlay</code>.
# Various fixes to track-bars.
#* Users can now also click <code>A</code> to apply track-bar settings.
#* Users can hold <code>R</code> on top of an unlocked track bar to enable changing pages <code>left</code> / <code>right</code> (using D-Pad).
#* Fixes to rapid left / right clicks.
#* Fixes to text alignments.
#* Color swap for cursor over locked / unlocked trackbars.
#* Various touch related bug fixes.
# New table drawing options and various improvements to table rendering.
#* <code>;wrapping_mode=</code> can be set to <code>none</code>, <code>char</code>, or <code>word</code> for tables. (default is <code>none</code>)
#* <code>;wrapping_indent=</code> can be set to <code>true</code> or <code>false</code> for drawing an indent on the wrapped lines.
#** '''Notice:''' Wrapping modes will only be applied to the '''section''' text on the table.
# Software update command now updates <code>nx-ovlloader</code> / <code>nx-ovlloader+</code> as well as the included themes.
#* [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.9 nx-ovlloader+] has been updated for HOS 19.0.0 support.
#** '''Notice:''' This update is required for proper reading of device FUSE data.
# Fixes for drawing the overlays / packages menu for newly added overlays / packages.
# Various UI corrections / improvements and code optimizations.
#* Wallpapers now consume half the system memory they used to.
#* Text width computations are now fixed. This should allow Ultrahand to display other fonts and languages more properly.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/aabb4e7...v1.7.9 Full Changelog: aabb4e7...v1.7.9]


Update:
Update:
* Bug fix for <code>nx-ovlloader+</code> / <code>nx-ovlloader</code> latest release URL. (was set to v1.0.8 instead of latest) - 10/19/2024 4:57 AM PST
* Bug fix for <code>nx-ovlloader+</code> / <code>nx-ovlloader</code> latest release URL. (was set to v1.0.8 instead of latest) - 10/19/2024 4:57 AM PST
** If you already updated to v1.7.9 with the &quot;Software Update&quot; menu, you may want to click update 2x. (first update will pull the fixed ovlmenu, second update will pull the correct loader)
** If you already updated to v1.7.9 with the &quot;Software Update&quot; menu, you may want to click update 2x. (first update will pull the fixed ovlmenu, second update will pull the correct loader)
* Cleanup of package header route labels. - 10/19/2024 6:25 AM PST
* Cleanup of package header route labels. - 10/19/2024 6:25 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.9...367a0bb Full Changelog: v1.7.9...367a0bb]


'''1.7.8'''
'''Version 1.7.8'''
<ol>
<ol>
<li><p>Fix for display underscanning in libtesla.</p>
<li><p>Fix for display underscanning in libtesla.</p>
Line 323: Line 377:
off:
off:
backlight auto off
backlight auto off
</pre></li>
Copy</pre></li>
<li><p>New placeholder function <code>math</code> to resolve mathematical expressions.</p>
<li><p>New placeholder function <code>math</code> to resolve mathematical expressions.</p>
<ul>
<ul>
Line 353: Line 407:
</li>
</li>
<li><p>Various subtle UI tweaks.</p></li></ol>
<li><p>Various subtle UI tweaks.</p></li></ol>
*Update:
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/73b10bd...v1.7.8 Full Changelog: 73b10bd...v1.7.8]
** Placeholder replacement bug fix. - 09/30/2024 3:06 AM PST
 
'''1.7.7'''
Update:
# New table scrolling implementation.
* Placeholder replacement bug fix. - 09/30/2024 3:06 AM PST
#* <code>;scrollable=</code> is a <code>true</code>/<code>false</code> table parameter for initializing a table with a scrollable property (<code>false</code> by default).
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.8...aabb4e7 Full Changelog: v1.7.8...aabb4e7]
#* <code>;top_pivot=</code> is a <code>true</code>/<code>false</code> table parameter for making the top of the table have a selectable property (<code>false</code> by default).
 
#* <code>;bottom_pivot=</code> is a <code>true</code>/<code>false</code> table parameter for making the bottom of the table have a selectable property (<code>false</code> by default).
'''Version 1.7.7'''
#* A variety of modifications were made to properly handle table scrolling (for touch / click both above and below scrollable tables).
* New table scrolling implementation.
# Tables can now use <code>list_file_source</code> for reading raw text files directly into a table and displaying the text line by line.
** <code>;scrollable=</code> is a <code>true</code>/<code>false</code> table parameter for initializing a table with a scrollable property (<code>false</code> by default).
#* Called <code>list_file_source &lt;PATH_TO_TEXT_FILE&gt;</code>
** <code>;top_pivot=</code> is a <code>true</code>/<code>false</code> table parameter for making the top of the table have a selectable property (<code>false</code> by default).
#* Text is drawn in the section portion and can utilize <code>;section_text_color=</code> for alternative coloring.
** <code>;bottom_pivot=</code> is a <code>true</code>/<code>false</code> table parameter for making the bottom of the table have a selectable property (<code>false</code> by default).
# Various UI related tweaks and fixes.
** A variety of modifications were made to properly handle table scrolling (for touch / click both above and below scrollable tables).
*Update:
* Tables can now use <code>list_file_source</code> for reading raw text files directly into a table and displaying the text line by line.
**Slight table scrolling bug fix. (was miscounting the last step) - 09/15/2024 3:30 AM PST
** Called <code>list_file_source &lt;PATH_TO_TEXT_FILE&gt;</code>
'''1.7.6'''
** Text is drawn in the section portion and can utilize <code>;section_text_color=</code> for alternative coloring.
# New symbol placeholder variables.
* Various UI related tweaks and fixes.
#* '''<code>{A}</code>, <code>{B}</code>, <code>{X}</code>, <code>{Y}</code>, <code>{L}</code>, <code>{R}</code>, <code>{ZL}</code>, <code>{ZR}</code>''': Button symbols for A, B, X, Y, L, R, ZL, and ZR.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d016b6f...v1.7.7 Full Changelog: d016b6f...v1.7.7]
#* '''<code>{DUP}</code>, <code>{DDOWN}</code>, <code>{DLEFT}</code>, <code>{DRIGHT}</code>''': Directional pad (D-Pad) buttons symbols.
#* '''<code>{LS}</code>, <code>{RS}</code>''': Symbols for the left stick (LS) and right stick (RS) click buttons.
#* '''<code>{PLUS}</code>, <code>{MINUS}</code>''': Symbols for the Plus and Minus buttons.
#* '''<code>{UP_ARROW}</code>, <code>{DOWN_ARROW}</code>, <code>{LEFT_ARROW}</code>, <code>{RIGHT_ARROW}</code>''': Arrow symbols pointing up, down, left, and right.
#* '''<code>{RIGHT_UP_ARROW}</code>, <code>{RIGHT_DOWN_ARROW}</code>, <code>{LEFT_UP_ARROW}</code>, <code>{LEFT_DOWN_ARROW}</code>''': Diagonal arrow symbols indicating direction combinations.
#* '''<code>{POWER}</code>''': Power button symbol.
#* '''<code>{HOME}</code>''': Home button symbol.
#* '''<code>{CAPTURE}</code>''': Capture button symbol.
#* '''<code>{REFRESH_SYMBOL}</code>''': Refresh symbol.
#* '''<code>{WARNING_SYMBOL}</code>''': Warning symbol.
#* '''<code>{INFO_SYMBOL}</code>''': Information symbol.
# New progress symbol throbber implementation. (for commands in progress that do not utilize the progress percentage)
# Toggle-related bug fixes. (bug was introduced in v1.7.5)
#* This should resolve issues a number of issues with toggles not retaining their state after being clicked.
# Storage capacity in <code>Device Info</code> has been corrected. (was previously showing free space instead of the amount of space being consumed)
# Slight UI corrections.
# Various code optimizations.
*Update:
** String formatted combo symbols replacements for tables. - 09/10/2024 09:08 PM PST
** Slight tweak to throbber implementation (slightly more optimized). - 09/10/2024 09:46 PM PST
** Arrow symbols fix. (some were mis-mapped) - 09/11/2024 09:00 AM PST
'''1.7.5'''
# Introduction of new <code>Swipe to Open</code> feature (an alternative to <code>Key Combo</code> for opening Ultrahand).
#* This feature is now on by default, but can be toggled off in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Swipe to Open</code>.
#* To trigger a swipe launch, swipe your finger from off the screen inwards ~1.5cm from the side where the menu is being drawn (left by default or right) in &lt; 150ms.
#* '''Note:''' It should be relatively hard to trigger by accident even if you play touch sensitive games, but still easy enough to launch any time you try.
# Introduction of new placeholder variable <code>{title_id}</code> for returning the title ID of the currently running game / application.
#* Will return <code>null</code> if a game / application is not open.
#* This placeholder should allow some more complex packages to be made.
# Root package folder <code>exit_package.ini</code> will now have command <code>exit</code> only ran when Ultrahand (and any other running overlay) is completely closed.
# More bug fixes and code optimizations.
#* Clean-up of progress percentage implementation.
#* Reduction of string copying for various string functions. (faster commands, less memory)
*Update:
** Slight tweak to <code>Swipe to Open</code>. - 09/09/2024 03:19 AM PST
** <code>lang.zip</code> translations update. - 09/09/2024 05:24 AM PST
** Bug fix for update languages (menu was triggering unnecessary reload). - 09/09/2024 05:36 AM PST
'''1.7.4'''
# Introduction of <code>exit_package.ini</code> (similar to <code>boot_package.ini</code> but with command name <code>exit</code> instead of <code>boot</code>).
#* <code>Exit Commands</code> are now a toggle-able option for package settings. (on by default)
#** The <code>Boot Package</code> toggle has been renamed to <code>Boot Commands</code>.
#* <code>exit_package.ini</code> can go in <code>/switch/.packages/</code> or be used in <code>/switch/.packages/&lt;YOUR_PACKAGE_NAME&gt;/</code>.
#* When present in package root path, exit commands will be ran every time you close Ultrahand.
#* When present in an Ultrahand package, exit commands will be ran every time you close the package.
# Temperature widget calls are now read directly from <code>i2c</code> instead of <code>ts</code>/<code>tc</code> services.
#* This should help prevent any conflicts that may have arrises from usage with <code>ts</code>/<code>tc</code> in prior versions.
# Refinement of tap and hold functions.
#* Holding on a package/overlay for &gt; 0.3s, &lt;= 1.0s then releasing will trigger the Settings key.
#* Holding on a package/overlay for &gt; 1.0s then releasing will trigger the Star key (favorites key).
# Introduction of <code>Right-side Mode</code>. (located in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects</code>)
#* This feature will draw the Ultrahand menu on the right side of the screen instead of the left.
# Updating Ultrahand will now auto-reload the newly installed version when returning to the main menu after.
# New table command options <code>;start_gap=</code> and <code>;end_gap=</code> (same as <code>;gap=</code>) for manual aligning of tables.
# More details have been added to the [https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference Commands Documentation].
# Various UI tweaks / corrections.
# Various bug fixes and code optimizations / cleanups.
Changelog''': [https://github.com/ppkantorski/Ultrahand-Overlay/compare/28e239f...v1.7.4 28e239f...v1.7.4]


Update:
Update:
*Slight table scrolling bug fix. (was miscounting the last step) - 09/15/2024 3:30 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.7...73b10bd Full Changelog: v1.7.7...73b10bd]
'''Version 1.7.6'''
* New symbol placeholder variables.
** '''<code>{A}</code>, <code>{B}</code>, <code>{X}</code>, <code>{Y}</code>, <code>{L}</code>, <code>{R}</code>, <code>{ZL}</code>, <code>{ZR}</code>''': Button symbols for A, B, X, Y, L, R, ZL, and ZR.
** '''<code>{DUP}</code>, <code>{DDOWN}</code>, <code>{DLEFT}</code>, <code>{DRIGHT}</code>''': Directional pad (D-Pad) buttons symbols.
** '''<code>{LS}</code>, <code>{RS}</code>''': Symbols for the left stick (LS) and right stick (RS) click buttons.
** '''<code>{PLUS}</code>, <code>{MINUS}</code>''': Symbols for the Plus and Minus buttons.
** '''<code>{UP_ARROW}</code>, <code>{DOWN_ARROW}</code>, <code>{LEFT_ARROW}</code>, <code>{RIGHT_ARROW}</code>''': Arrow symbols pointing up, down, left, and right.
** '''<code>{RIGHT_UP_ARROW}</code>, <code>{RIGHT_DOWN_ARROW}</code>, <code>{LEFT_UP_ARROW}</code>, <code>{LEFT_DOWN_ARROW}</code>''': Diagonal arrow symbols indicating direction combinations.
** '''<code>{POWER}</code>''': Power button symbol.
** '''<code>{HOME}</code>''': Home button symbol.
** '''<code>{CAPTURE}</code>''': Capture button symbol.
** '''<code>{REFRESH_SYMBOL}</code>''': Refresh symbol.
** '''<code>{WARNING_SYMBOL}</code>''': Warning symbol.
** '''<code>{INFO_SYMBOL}</code>''': Information symbol.
* New progress symbol throbber implementation. (for commands in progress that do not utilize the progress percentage)
* Toggle-related bug fixes. (bug was introduced in v1.7.5)
** This should resolve issues a number of issues with toggles not retaining their state after being clicked.
* Storage capacity in <code>Device Info</code> has been corrected. (was previously showing free space instead of the amount of space being consumed)
* Slight UI corrections.
* Various code optimizations.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/3801fca...v1.7.6 Full Changelog: 3801fca...v1.7.6]


* Software update menu bug fix. - 09/07/2024 6:23 AM PST
Update:
* <code>Right-side Mode</code> touch fixes. - 09/07/2024 7:48 AM PST
* String formatted combo symbols replacements for tables. - 09/10/2024 09:08 PM PST
* Slight tweak to throbber implementation (slightly more optimized). - 09/10/2024 09:46 PM PST
* Arrow symbols fix. (some were mis-mapped) - 09/11/2024 09:00 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.6...d016b6f Full Changelog: v1.7.6...d016b6f]


'''1.7.3'''
'''Version 1.7.5'''
# Long tap (touch &gt; 0.5s) of an overlay / package on the main menu will now open the overlay / package settings menu upon release.
* Introduction of new <code>Swipe to Open</code> feature (an alternative to <code>Key Combo</code> for opening Ultrahand).
# Fuse data is now reloaded / re-dumped upon boot.
** This feature is now on by default, but can be toggled off in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Swipe to Open</code>.
#* New <code>true</code> / <code>false</code> option <code>disable_reload</code> is now stored in <code>fuse.ini</code> for manual disabling of the fuse data reload function.
** To trigger a swipe launch, swipe your finger from off the screen inwards ~1.5cm from the side where the menu is being drawn (left by default or right) in &lt; 150ms.
# More corrections and improvements to the wallpaper swapping feature.
** '''Note:''' It should be relatively hard to trigger by accident even if you play touch sensitive games, but still easy enough to launch any time you try.
# Interpreter relevant bug fixes (especially with handing large <code>boot_package.ini</code> files).
* Introduction of new placeholder variable <code>{title_id}</code> for returning the title ID of the currently running game / application.
#* These fixes should make opening <code>OC Toolkit</code> faster as well as fix the <code>Backup</code> and <code>Restore</code> functions when used with wallpapers.
** Will return <code>null</code> if a game / application is not open.
# Few additional minor bug fixes.
** This placeholder should allow some more complex packages to be made.
* Root package folder <code>exit_package.ini</code> will now have command <code>exit</code> only ran when Ultrahand (and any other running overlay) is completely closed.
* More bug fixes and code optimizations.
** Clean-up of progress percentage implementation.
** Reduction of string copying for various string functions. (faster commands, less memory)
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/0ef1c3a...v1.7.5 Full Changelog: 0ef1c3a...v1.7.5]


'''Important:''' Fuse data has new key names, so you may need to reboot once or delete <code>sdmc:/config/ultrahand/fuse.ini</code> after updating from v1.7.2.
Update:
* Slight tweak to <code>Swipe to Open</code>. - 09/09/2024 03:19 AM PST
* <code>lang.zip</code> translations update. - 09/09/2024 05:24 AM PST
* Bug fix for update languages (menu was triggering unnecessary reload). - 09/09/2024 05:36 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.5...3801fca Full Changelog: v1.7.5...3801fca]


'''Full Changelog''': [https://github.com/ppkantorski/Ultrahand-Overlay/compare/9ff96ba...v1.7.3 9ff96ba...v1.7.3]
'''Version 1.7.4'''
* Introduction of <code>exit_package.ini</code> (similar to <code>boot_package.ini</code> but with command name <code>exit</code> instead of <code>boot</code>).
** <code>Exit Commands</code> are now a toggle-able option for package settings. (on by default)
*** The <code>Boot Package</code> toggle has been renamed to <code>Boot Commands</code>.
** <code>exit_package.ini</code> can go in <code>/switch/.packages/</code> or be used in <code>/switch/.packages/&lt;YOUR_PACKAGE_NAME&gt;/</code>.
** When present in package root path, exit commands will be ran every time you close Ultrahand.
** When present in an Ultrahand package, exit commands will be ran every time you close the package.
* Temperature widget calls are now read directly from <code>i2c</code> instead of <code>ts</code>/<code>tc</code> services.
** This should help prevent any conflicts that may have arrises from usage with <code>ts</code>/<code>tc</code> in prior versions.
* Refinement of tap and hold functions.
** Holding on a package/overlay for &gt; 0.3s, &lt;= 1.0s then releasing will trigger the Settings key.
** Holding on a package/overlay for &gt; 1.0s then releasing will trigger the Star key (favorites key).
* Introduction of <code>Right-side Mode</code>. (located in <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects</code>)
** This feature will draw the Ultrahand menu on the right side of the screen instead of the left.
* Updating Ultrahand will now auto-reload the newly installed version when returning to the main menu after.
* New table command options <code>;start_gap=</code> and <code>;end_gap=</code> (same as <code>;gap=</code>) for manual aligning of tables.
* More details have been added to the [https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference Commands Documentation].
* Various UI tweaks / corrections.
* Various bug fixes and code optimizations / cleanups.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/28e239f...v1.7.4 Full Changelog: 28e239f...v1.7.4]


Update:
Update:
* Software update menu bug fix. - 09/07/2024 6:23 AM PST
* <code>Right-side Mode</code> touch fixes. - 09/07/2024 7:48 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.4...0ef1c3a Full Changelog: v1.7.4...0ef1c3a]
'''Version 1.7.3'''
* Long tap (touch &gt; 0.5s) of an overlay / package on the main menu will now open the overlay / package settings menu upon release.
* Fuse data is now reloaded / re-dumped upon boot.
** New <code>true</code> / <code>false</code> option <code>disable_reload</code> is now stored in <code>fuse.ini</code> for manual disabling of the fuse data reload function.
* More corrections and improvements to the wallpaper swapping feature.
* Interpreter relevant bug fixes (especially with handing large <code>boot_package.ini</code> files).
** These fixes should make opening <code>OC Toolkit</code> faster as well as fix the <code>Backup</code> and <code>Restore</code> functions when used with wallpapers.
* Few additional minor bug fixes.
* '''Important:''' Fuse data has new key names, so you may need to reboot once or delete <code>sdmc:/config/ultrahand/fuse.ini</code> after updating from v1.7.2.<br>
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/9ff96ba...v1.7.3 Full Changelog: 9ff96ba...v1.7.3]


Update:
* Slight table text alignment correction. - 09/05/2024 6:10 AM PST
* Slight table text alignment correction. - 09/05/2024 6:10 AM PST
* Various services cleanup. - 09/05/2024 9:35 PM PST
* Various services cleanup. - 09/05/2024 9:35 PM PST
Line 453: Line 520:
** <code>Reboot To</code> bug fix introduced from prior modification. - 09/05/2024 10:40 PM PST
** <code>Reboot To</code> bug fix introduced from prior modification. - 09/05/2024 10:40 PM PST
** Another bug fix (for toggling on widgets). - 09/06/2024 3:30 AM PST
** Another bug fix (for toggling on widgets). - 09/06/2024 3:30 AM PST
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.3...28e239f Full Changelog: v1.7.3...28e239f]


'''1.7.2'''
'''Version 1.7.2'''
# Continued expansion of <code>Device Info</code> to now include local IP, eMMC storage, CPU/GPU/SOC Speedo + IDDQ and more.
* Continued expansion of <code>Device Info</code> to now include local IP, eMMC storage, CPU/GPU/SOC Speedo + IDDQ and more.
#* Fuse related data is auto-dumped to <code>sdmc:/config/ultrahand/fuse.ini</code> if <code>fuse.ini</code> is missing.
** Fuse related data is auto-dumped to <code>sdmc:/config/ultrahand/fuse.ini</code> if <code>fuse.ini</code> is missing.
#* Special thanks to Masagrator.
** Special thanks to Masagrator.
# Slight reorganization of <code>Settings Menu</code>.
* Slight reorganization of <code>Settings Menu</code>.
# More renderer related tweaks and bug fixes. (faster pixel rendering / more FPS)
* More renderer related tweaks and bug fixes. (faster pixel rendering / more FPS)
# Package settings menu now includes a toggle for <code>Boot Package</code> and <code>Error Logging</code>.
* Package settings menu now includes a toggle for <code>Boot Package</code> and <code>Error Logging</code>.
#* Error logging will now only occur for packages when <code>Error Logging</code> is set to an <code>On</code> state. (off by default)
** Error logging will now only occur for packages when <code>Error Logging</code> is set to an <code>On</code> state. (off by default)
#* Logs will be generated within the package folder in <code>log.txt</code>.
** Logs will be generated within the package folder in <code>log.txt</code>.
#* Root package / root boot package logging will only work with command <code>logging</code>.
** Root package / root boot package logging will only work with command <code>logging</code>.
#* Calls of <code>logging</code> command will always bypass <code>Error Logging</code> and log errors and commands to the designated <code>log.txt</code>.
** Calls of <code>logging</code> command will always bypass <code>Error Logging</code> and log errors and commands to the designated <code>log.txt</code>.
# New placeholder variables <code>{cpu_speedo}</code>, <code>{cpu_iddq}</code>, <code>{gpu_speedo}</code>, <code>{gpu_iddq}</code>, <code>{soc_speedo}</code> and <code>{soc_iddq}</code>.
* New placeholder variables <code>{cpu_speedo}</code>, <code>{cpu_iddq}</code>, <code>{gpu_speedo}</code>, <code>{gpu_iddq}</code>, <code>{soc_speedo}</code> and <code>{soc_iddq}</code>.
# New progress indicator bar for visualizing download, unzip, and copy percentages.
* New progress indicator bar for visualizing download, unzip, and copy percentages.
#* New theme color settings <code>progress_color</code> and <code>progress_alpha</code>.
** New theme color settings <code>progress_color</code> and <code>progress_alpha</code>.
# Return of <code>shutdown controllers</code> for manually powering off all connected bluetooth controllers.
* Return of <code>shutdown controllers</code> for manually powering off all connected bluetooth controllers.
#* This feature still does not work with <code>Mission Control</code>. Just a heads up.
** This feature still does not work with <code>Mission Control</code>. Just a heads up.
# New language variables.
* New language variables.
#* Alternate languages may still need translations done to the updated <code>.json</code> files.
** Alternate languages may still need translations done to the updated <code>.json</code> files.
# Updates to libraries <code>devkitA64</code> and <code>libnx</code>.
* Updates to libraries <code>devkitA64</code> and <code>libnx</code>.
# Numerous code optimizations for smaller compilation size and slightly faster commands.
* Numerous code optimizations for smaller compilation size and slightly faster commands.
# Various bug fixes.
* Various bug fixes.


'''Full Changelog''': [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d959363...v1.7.2 d959363...v1.7.2]
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d959363...v1.7.2 Full Changelog: d959363...v1.7.2]


Update:
Update:
* Pre-release period is over. Things appear to be stable. - (09/03/2024 12:27 PM PST)
* Pre-release period is over. Things appear to be stable. - (09/03/2024 12:27 PM PST)
* Number of memory related bug fixes.
* Number of memory related bug fixes.
Line 489: Line 556:
** Tighter/stricter timing for swapping wallpapers to prevent more ''random'' crashes. - (09/03/2024 6:28 AM PST)
** Tighter/stricter timing for swapping wallpapers to prevent more ''random'' crashes. - (09/03/2024 6:28 AM PST)
* Placeholder replacement order of operations bug fix. - (09/03/2024 6:00 PM PST)
* Placeholder replacement order of operations bug fix. - (09/03/2024 6:00 PM PST)
'''1.7.1'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.2...9ff96ba Full Changelog: v1.7.2...9ff96ba]
# Expanded <code>System</code> page to include various device related information.
 
#* This table currently includes device firmware, bootloader version, hardware type, memory information, and storage information.
'''Version 1.7.1'''
#* Special thanks to ComplexNarrative.
* Expanded <code>System</code> page to include various device related information.
# New command placeholder variables <code>{ram_vendor}</code>, <code>{ram_model}</code>, <code>{ams_version}</code>, and <code>{hos_version}</code>.
** This table currently includes device firmware, bootloader version, hardware type, memory information, and storage information.
# Expansion of <code>refresh</code> command to include <code>wallpaper</code> for the ability to reload <code>wallpaper.rgba</code>,
** Special thanks to ComplexNarrative.
#* Called <code>refresh wallpaper</code>.
* New command placeholder variables <code>{ram_vendor}</code>, <code>{ram_model}</code>, <code>{ams_version}</code>, and <code>{hos_version}</code>.
# Improved scrolling implementation. (proper time-synced speed interpolation)
* Expansion of <code>refresh</code> command to include <code>wallpaper</code> for the ability to reload <code>wallpaper.rgba</code>,
# Complete recalibration of character width map.
** Called <code>refresh wallpaper</code>.
#* This should result in more proper table alignments when using tables with info sections aligned to the right.
* Improved scrolling implementation. (proper time-synced speed interpolation)
# Multiple memory related bug fixes.
* Complete recalibration of character width map.
#* More memory leaks have been fixed, which should result in less heap overloads / crashes.
** This should result in more proper table alignments when using tables with info sections aligned to the right.
# Language replacements are now performed on every ListItem and CategoryHeader upon initialization.
* Multiple memory related bug fixes.
#* This fixed entries like, for example, <code>Reboot To</code> and <code>Shutdown</code> from not being properly translated.
** More memory leaks have been fixed, which should result in less heap overloads / crashes.
#* Language json's may still need some translations for the new words that have been included.
* Language replacements are now performed on every ListItem and CategoryHeader upon initialization.
# Removal of <code>shutdown controllers</code> for space conservation. (commented out)
** This fixed entries like, for example, <code>Reboot To</code> and <code>Shutdown</code> from not being properly translated.
#* Did not want to remove this function, but because it only works with Nintendo controllers (and not Mission Control) it does seem somewhat redundant since the <code>sync button</code> on Nintendo controllers effectively turns off the controller as well.
** Language json's may still need some translations for the new words that have been included.
#* If it is highly desirable, I may include this command again in future revisions. But for size stability, I could not get it to fit properly this time around.
* Removal of <code>shutdown controllers</code> for space conservation. (commented out)
# Numerous code optimizations and bug fixes.
** Did not want to remove this function, but because it only works with Nintendo controllers (and not Mission Control) it does seem somewhat redundant since the <code>sync button</code> on Nintendo controllers effectively turns off the controller as well.
** If it is highly desirable, I may include this command again in future revisions. But for size stability, I could not get it to fit properly this time around.
* Numerous code optimizations and bug fixes.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/6961b2e...v1.7.1 Full Changelog: 6961b2e...v1.7.1]<br />
 
Update:
* Placeholder bug fix for new variables + bug fix for <code>refresh</code> command. - 08/28/2024 4:40 PM PST
* Placeholder bug fix for new variables + bug fix for <code>refresh</code> command. - 08/28/2024 4:40 PM PST
* TrackBar highlight width adjustment / fix. - 08/29/2024 5:05 AM PST
* TrackBar highlight width adjustment / fix. - 08/29/2024 5:05 AM PST
* Rename hardware model <code>Nx</code> to <code>Icosa</code> and <code>x1</code> to <code>X1</code>. (correction) - 08/29/2024 5:28 AM PST
* Rename hardware model <code>Nx</code> to <code>Icosa</code> and <code>x1</code> to <code>X1</code>. (correction) - 08/29/2024 5:28 AM PST
'''1.7.0'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.1...d959363 Full Changelog: v1.7.1...d959363]
 
'''Version 1.7.0'''
* New memory expansion option (located inSettings > System).
* New memory expansion option (located inSettings > System).
** This function requires internet the first time it is ran, otherwise you can place nx-ovlloader.zip and nx-ovlloader+.zip in sdmc:/config/ultrahand/expansion/. (see [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.8 here] for the .zips)
** This function requires internet the first time it is ran, otherwise you can place nx-ovlloader.zip and nx-ovlloader+.zip in sdmc:/config/ultrahand/expansion/. (see [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.8 here] for the .zips)
Line 532: Line 606:
** Downloads bug fix. (was broken fi missing path sdmc:/config/ultrahand/downloads/ in v1.6.9)
** Downloads bug fix. (was broken fi missing path sdmc:/config/ultrahand/downloads/ in v1.6.9)
* Compilation libraries have been updated (excluding devkitA64 which has been left at r25.1-1).
* Compilation libraries have been updated (excluding devkitA64 which has been left at r25.1-1).
'''1.6.9'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.9...v1.7.0 Full Changelog: v1.6.9...v1.7.0]
# Dropdown and forwarder commands can now use custom labels/footers by using <code>footer=</code> with a value other than <code>null</code> in the package's <code>config.ini</code>.
 
# Custom name and version labels for overlays and packages can now be set in <code>/config/ultrahand/overlays.ini</code> and <code>/config/ultrahand/packages.ini</code> by using options <code>custom_name=</code> and <code>custom_version=</code>.
Update:
#* Overlays will only be renamed when displayed on the menu. Direct modification of the overlay is still required for any re-naming of the overlay modules themselves.
* Expanded memory toggle bug fix. 08/24/24 9:00 AM PST
#* Packages will now assume names in the following priorities.<br />
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.0...6961b2e Full Changelog: v1.7.0...6961b2e]
 
'''Version 1.6.9'''
* Dropdown and forwarder commands can now use custom labels/footers by using <code>footer=</code> with a value other than <code>null</code> in the package's <code>config.ini</code>.
* Custom name and version labels for overlays and packages can now be set in <code>/config/ultrahand/overlays.ini</code> and <code>/config/ultrahand/packages.ini</code> by using options <code>custom_name=</code> and <code>custom_version=</code>.
** Overlays will only be renamed when displayed on the menu. Direct modification of the overlay is still required for any re-naming of the overlay modules themselves.
** Packages will now assume names in the following priorities.<br />
i. Priority 0: Custom names and versions written in <code>packages.ini</code>.<br />
i. Priority 0: Custom names and versions written in <code>packages.ini</code>.<br />
ii. Priority 1: Package name stated in the header in the <code>package.ini</code> file for the Ultrahand package.<br />
ii. Priority 1: Package name stated in the header in the <code>package.ini</code> file for the Ultrahand package.<br />
iii. Priority 2: If none of the above, it will assume the name based upon the Ultrahand package folder.
iii. Priority 2: If none of the above, it will assume the name based upon the Ultrahand package folder.
#* If left empty, custom name and version parameters will be unused.
** If left empty, custom name and version parameters will be unused.
# New option for table <code>;header_indent=</code> for drawing a single header indent on left side of the line.
* New option for table <code>;header_indent=</code> for drawing a single header indent on left side of the line.
#* This is meant to be used on one line &quot;header-like&quot; tables.
** This is meant to be used on one line &quot;header-like&quot; tables.
# New table text color options for <code>info_text_color</code> and <code>section_text_color</code>.
* New table text color options for <code>info_text_color</code> and <code>section_text_color</code>.
#* <code>text</code> : Ultrahand theme text color used for default text.
** <code>text</code> : Ultrahand theme text color used for default text.
#* <code>header</code> : Ultrahand theme text color used for headers.
** <code>header</code> : Ultrahand theme text color used for headers.
#* <code>on_value</code> : Ultrahand theme color for <code>On</code> values / values.
** <code>on_value</code> : Ultrahand theme color for <code>On</code> values / values.
#* <code>off_value</code> : Ultrahand theme color for <code>Off</code> values / version labels.
** <code>off_value</code> : Ultrahand theme color for <code>Off</code> values / version labels.
# Key combo string representations in packages will now return their symbolic representation.
* Key combo string representations in packages will now return their symbolic representation.
# Software update menu will now pull an indicator for the latest Ultrahand Overlay version from the GitHub API.
* Software update menu will now pull an indicator for the latest Ultrahand Overlay version from the GitHub API.
# Themes <code>classic.ini</code> and <code>ultra.ini</code> will now be auto-downloaded when opening the Theme manager if they do not exist.
* Themes <code>classic.ini</code> and <code>ultra.ini</code> will now be auto-downloaded when opening the Theme manager if they do not exist.
# Downloads are now stored in a temporary state until completion. After completion, they are then moved into place.
* Downloads are now stored in a temporary state until completion. After completion, they are then moved into place.
#* This should help with failed downloads and files being removed/replaced after a failed download to an existing filepath.
** This should help with failed downloads and files being removed/replaced after a failed download to an existing filepath.
# The packages menu commands section now utilizes the same core logic as the packages themselves. (code optimization)
* The packages menu commands section now utilizes the same core logic as the packages themselves. (code optimization)
# Improvements to <code>Reboot To</code> pre-generated command in root package. (<code>/switch/.packages/package.ini</code>)
* Improvements to <code>Reboot To</code> pre-generated command in root package. (<code>/switch/.packages/package.ini</code>)
#* If you are missing this feature, you may need to delete <code>/switch/.packages/package.ini</code>.
** If you are missing this feature, you may need to delete <code>/switch/.packages/package.ini</code>.
# Various subtle UI positioning corrections and bug fixes.
* Various subtle UI positioning corrections and bug fixes.
#* Bug fix for cursor jumping/sliding after using hotkeys (with a d-pad down button) in games.
** Bug fix for cursor jumping/sliding after using hotkeys (with a d-pad down button) in games.
'''1.6.8'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/cc7afad...v1.6.9 Full Changelog: cc7afad...v1.6.9]
# Introduction of <code>ini_file_source</code> function and expansion of <code>ini_file</code> function.
 
#* Dropdown selections can now use <code>ini_file_source &lt;PATH_TO_INI&gt;</code> which will return a list of ini section name.
'''Version 1.6.8'''
#* Introduction of new placeholder index replacements selections<code>{ini_file(&lt;INDEX&gt;)}</code> / <code>{ini_file_source(*)}</code> for returning section names. (regular usage of <code>ini_file</code> placeholder calls will still function the same way, as well as <code>ini_file_source</code>)
* Introduction of <code>ini_file_source</code> function and expansion of <code>ini_file</code> function.
# Named step-trackbars can now use standard <code>json_source</code>, <code>json_file_source</code>, and <code>ini_file_source</code> source functions and placeholder replacements.
** Dropdown selections can now use <code>ini_file_source &lt;PATH_TO_INI&gt;</code> which will return a list of ini section name.
# Expansion of <code>filter</code> to non-path type entries in dropdown selections.
** Introduction of new placeholder index replacements selections<code>{ini_file(&lt;INDEX&gt;)}</code> / <code>{ini_file_source(*)}</code> for returning section names. (regular usage of <code>ini_file</code> placeholder calls will still function the same way, as well as <code>ini_file_source</code>)
#* Called <code>filter &lt;NAME_OF_ENTRY&gt;</code>.
* Named step-trackbars can now use standard <code>json_source</code>, <code>json_file_source</code>, and <code>ini_file_source</code> source functions and placeholder replacements.
# Expansion of <code>exit</code> command to exit directly to the overlays menu or packages menu.
* Expansion of <code>filter</code> to non-path type entries in dropdown selections.
#* Called <code>exit overlays</code> / <code>exit packages</code>.
** Called <code>filter &lt;NAME_OF_ENTRY&gt;</code>.
# Expansion of <code>refresh</code> command.
* Expansion of <code>exit</code> command to exit directly to the overlays menu or packages menu.
#* <code>refresh theme</code>: reload/refresh the current current loaded theme (<code>/config/ultrahand/theme.ini</code>)
** Called <code>exit overlays</code> / <code>exit packages</code>.
#* <code>refresh package</code>: reload/refresh the current working package (redraws menu)
* Expansion of <code>refresh</code> command.
# Introduction of <code>compare</code> function to compare two text file lists and output a duplicate files list.
** <code>refresh theme</code>: reload/refresh the current current loaded theme (<code>/config/ultrahand/theme.ini</code>)
#* Called <code>compare &lt;PATH_TO_TXT_1&gt; &lt;PATH_TO_TXT_2&gt; &lt;OUTPUT_TXT_PATH&gt;</code>.
** <code>refresh package</code>: reload/refresh the current working package (redraws menu)
# New option <code>-copy_filter</code> / <code>-cp_filter</code> for <code>move</code> / <code>mv</code> commands utilizing <code>-src</code> + <code>-dest</code>.
* Introduction of <code>compare</code> function to compare two text file lists and output a duplicate files list.
#* Called <code>move -src &lt;SRC_TXT&gt; -dest &lt;DEST_TXT&gt; -copy_filter &lt;FILTER_TXT&gt;</code>.
** Called <code>compare &lt;PATH_TO_TXT_1&gt; &lt;PATH_TO_TXT_2&gt; &lt;OUTPUT_TXT_PATH&gt;</code>.
#* This will run a copy instead of move for files in the filter list text file.
* New option <code>-copy_filter</code> / <code>-cp_filter</code> for <code>move</code> / <code>mv</code> commands utilizing <code>-src</code> + <code>-dest</code>.
# Introduction of new placeholder function <code>split</code> for splitting strings.
** Called <code>move -src &lt;SRC_TXT&gt; -dest &lt;DEST_TXT&gt; -copy_filter &lt;FILTER_TXT&gt;</code>.
#* Called <code>{split(&lt;STRING&gt;,&lt;PATTERN&gt;,&lt;INDEX&gt;)}</code>.
** This will run a copy instead of move for files in the filter list text file.
#* For example, if the string is <code>Test - String</code>, the pattern is <code>&quot; - &quot;</code>, and the index is <code>0</code>, the output would be <code>Test</code>.
* Introduction of new placeholder function <code>split</code> for splitting strings.
# Updates to the pre-generated <code>/switch/.packages/package.ini</code> root package file to include <code>Reboot To</code> (for booting directly into <code>/bootloader/hekate_ipl.ini</code> boot entries.
** Called <code>{split(&lt;STRING&gt;,&lt;PATTERN&gt;,&lt;INDEX&gt;)}</code>.
#* '''Notice:''' Users may need to delete <code>/switch/.packages/package.ini</code> for it to generate a new one.
** For example, if the string is <code>Test - String</code>, the pattern is <code>&quot; - &quot;</code>, and the index is <code>0</code>, the output would be <code>Test</code>.
# Various optimizations to the command interpreter, file manipulation logging, bulk execution implementations, and to <code>move</code> / <code>mv</code> operations.
* Updates to the pre-generated <code>/switch/.packages/package.ini</code> root package file to include <code>Reboot To</code> (for booting directly into <code>/bootloader/hekate_ipl.ini</code> boot entries.
# Additional tweaks to the dangerous pattern detection function.
** '''Notice:''' Users may need to delete <code>/switch/.packages/package.ini</code> for it to generate a new one.
# Update to [https://github.com/ppkantorski/Mod-Alchemist Mod Alchemist] now at v0.4.7.
* Various optimizations to the command interpreter, file manipulation logging, bulk execution implementations, and to <code>move</code> / <code>mv</code> operations.
#* Bug fixes for toggling content mods with duplicate files (utilizing <code>-copy_filter</code> and <code>compare</code>).
* Additional tweaks to the dangerous pattern detection function.
* Update to [https://github.com/ppkantorski/Mod-Alchemist Mod Alchemist] now at v0.4.7.
** Bug fixes for toggling content mods with duplicate files (utilizing <code>-copy_filter</code> and <code>compare</code>).
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.7...v1.6.8 Full Changelog: v1.6.7...v1.6.8]
 
Update:
Update:
* Filter bug fix. (affected <code>Reboot To</code>) - 07/22/2024 2:53 PM PST
* Filter bug fix. (affected <code>Reboot To</code>) - 07/22/2024 2:53 PM PST
* Addition of <code>-filter &lt;FILTER_TXT&gt;</code> command option for <code>move</code>, <code>copy</code>, and <code>delete</code>. - 07/22/2024 8:35 PM PST
* Addition of <code>-filter &lt;FILTER_TXT&gt;</code> command option for <code>move</code>, <code>copy</code>, and <code>delete</code>. - 07/22/2024 8:35 PM PST
** This allows for filtering of bulk executions (<code>-src</code> / <code>-dest</code>).
** This allows for filtering of bulk executions (<code>-src</code> / <code>-dest</code>).
'''1.6.7'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.8...cc7afad Full Changelog: v1.6.8...cc7afad]
 
'''Version 1.6.7'''
<ol>
<ol>
<li><p>New optional command parameters for <code>copy</code>/<code>cp</code>, <code>move</code>/<code>mv</code>, and <code>delete</code>/<code>del</code> commands for transfer logging and bulk executions.</p>
<li><p>New optional command parameters for <code>copy</code>/<code>cp</code>, <code>move</code>/<code>mv</code>, and <code>delete</code>/<code>del</code> commands for transfer logging and bulk executions.</p>
Line 619: Line 705:
<li>Now utilizes the new command options for managing &quot;Contents&quot; mods.</li></ul>
<li>Now utilizes the new command options for managing &quot;Contents&quot; mods.</li></ul>
</li></ol>
</li></ol>
'''1.6.6'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.6...v1.6.7 Full Changelog: v1.6.6...v1.6.7]
# Major memory leak has been fixed.
 
#* This issue was present for a while now, but until <code>Mod Alchemist</code> was never as concerning. Since <code>Mod Alchemist</code> can draw extremely long menus, memory overflow problems became more apparent.
'''Version 1.6.6'''
#* Has been resolved and should result in better memory handling across all Ultrahand packages/commands.
* Major memory leak has been fixed.
# Slight tweaks to the displayed version label formatting for overlays and packages.
** This issue was present for a while now, but until <code>Mod Alchemist</code> was never as concerning. Since <code>Mod Alchemist</code> can draw extremely long menus, memory overflow problems became more apparent.
# Failed interpreter spawning bug fix.
** Has been resolved and should result in better memory handling across all Ultrahand packages/commands.
#* Commands would occasionally get locked in an &quot;in-progress&quot; mode when there were memory related problems when trying to spawn the interpreter thread. When memory related problems occur, the command will return a failed command state instead (red &quot;X&quot;).
* Slight tweaks to the displayed version label formatting for overlays and packages.
'''1.6.5'''
* Failed interpreter spawning bug fix.
# Introduction of root-layer boot package implementation for executing commands upon startup.
** Commands would occasionally get locked in an &quot;in-progress&quot; mode when there were memory related problems when trying to spawn the interpreter thread. When memory related problems occur, the command will return a failed command state instead (red &quot;X&quot;).
#* Command <code>[boot]</code> located within <code>/switch/.packages/boot_package.ini</code> (if it exists) will be now be auto-ran once on startup.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/1c08f0f...v1.6.6 Full Changelog: 1c08f0f...v1.6.6]
#* This feature can be useful for Switch Android users if they wanted to remove the auto-generated Android folders (for instance).
 
# Introduction of new command <code>pchtxt2cheat</code> (called <code>pchtxt2cheat /path/to/file.pchtxt</code>).
'''Version 1.6.5'''
#* This function will convert <code>pchtxt</code> files and load them into the correct directory for the game's cheat.
* Introduction of root-layer boot package implementation for executing commands upon startup.
#* '''Important:''' The game's title ID must be present somewhere within the pchtxt for this function to work.
** Command <code>[boot]</code> located within <code>/switch/.packages/boot_package.ini</code> (if it exists) will be now be auto-ran once on startup.
# Various bug fixes to <code>pchtxt2ips</code>'s IPS generation.
** This feature can be useful for Switch Android users if they wanted to remove the auto-generated Android folders (for instance).
# Expansion of <code>shutdown</code> command to turn off all bluetooth controllers.
* Introduction of new command <code>pchtxt2cheat</code> (called <code>pchtxt2cheat /path/to/file.pchtxt</code>).
#* This function is called <code>shutdown controllers</code>.
** This function will convert <code>pchtxt</code> files and load them into the correct directory for the game's cheat.
#* '''Notice:''' I have heard that this command may fail (return a red X) with <code>MissionControl</code> due to conflicting services, so just a heads up.
** '''Important:''' The game's title ID must be present somewhere within the pchtxt for this function to work.
# Source function <code>file_source</code> can now be chained (called one after another) for combining multiple sources into a single list.
* Various bug fixes to <code>pchtxt2ips</code>'s IPS generation.
# Source function definitions can now also utilize an <code>ini_file</code> placeholder replacement (with the <code>ini_file</code> specified before the definition).
* Expansion of <code>shutdown</code> command to turn off all bluetooth controllers.
# Various bug fixes to <code>file_source</code> toggles.
** This function is called <code>shutdown controllers</code>.
#* Subsequent clicks to <code>file_source</code> toggles are now handled properly with alternating path replacements according to the last line <code>move {file_source} /destination/path/</code> (must be present for <code>file_source</code> toggles).
** '''Notice:''' I have heard that this command may fail (return a red X) with <code>MissionControl</code> due to conflicting services, so just a heads up.
# Various bug fixes to <code>ini_file</code> placeholder replacements.
* Source function <code>file_source</code> can now be chained (called one after another) for combining multiple sources into a single list.
#* Failed replacements now return <code>null</code> again instead of <code>Not available</code> (the <code>UNAVAILABLE_SELECTION</code> language variable).
* Source function definitions can now also utilize an <code>ini_file</code> placeholder replacement (with the <code>ini_file</code> specified before the definition).
#* When a value is <code>null</code> on a table info section, it is now auto replaced with <code>UNAVAILABLE_SELECTION</code>.
* Various bug fixes to <code>file_source</code> toggles.
# Language selections in the <code>Settings Menu</code> now state their full names in their translated language with their abbreviations listed as footers.
** Subsequent clicks to <code>file_source</code> toggles are now handled properly with alternating path replacements according to the last line <code>move {file_source} /destination/path/</code> (must be present for <code>file_source</code> toggles).
#* This included updates to all <code>/config/ultrahand/lang/</code> files.
* Various bug fixes to <code>ini_file</code> placeholder replacements.
# Additional key combo <code>LS+RS</code> has been added to the combos list.
** Failed replacements now return <code>null</code> again instead of <code>Not available</code> (the <code>UNAVAILABLE_SELECTION</code> language variable).
#* This includes a correction to the <code>LS</code> button icon.
** When a value is <code>null</code> on a table info section, it is now auto replaced with <code>UNAVAILABLE_SELECTION</code>.
# Commands <code>mirror_copy</code> and <code>mirror_delete</code> can now accept wildcard patterns.
* Language selections in the <code>Settings Menu</code> now state their full names in their translated language with their abbreviations listed as footers.
# Introduction of new Ultrahand Package [https://github.com/ppkantorski/Mod-Alchemist <code>Mod Alchemist</code>] designed for managing, converting, and installing game mods. (formerly the <code>Mod Master</code> example package)
** This included updates to all <code>/config/ultrahand/lang/</code> files.
#* '''Notice:''' This package requires Ultrahand Overlay v1.6.5+.
* Additional key combo <code>LS+RS</code> has been added to the combos list.
** This includes a correction to the <code>LS</code> button icon.
* Commands <code>mirror_copy</code> and <code>mirror_delete</code> can now accept wildcard patterns.
* Introduction of new Ultrahand Package [https://github.com/ppkantorski/Mod-Alchemist <code>Mod Alchemist</code>] designed for managing, converting, and installing game mods. (formerly the <code>Mod Master</code> example package)
** '''Notice:''' This package requires Ultrahand Overlay v1.6.5+.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.4...v1.6.5 Full Changelog: v1.6.4...v1.6.5]
 
Update:
Update:
* Bug fix for the root-layer boot package implementation. - 07/07/2024 7:09 AM PST
* Bug fix for the root-layer boot package implementation. - 07/07/2024 7:09 AM PST
Line 664: Line 756:
* IPS generation bug fix. - 07/09/2024 06:16 AM PST
* IPS generation bug fix. - 07/09/2024 06:16 AM PST
** Offsets were improperly being applied during <code>pchtxt2ips</code> generation. Corrections have been made.
** Offsets were improperly being applied during <code>pchtxt2ips</code> generation. Corrections have been made.
'''1.6.4'''
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.5...1c08f0f Full Changelog: v1.6.5...1c08f0f]
# Optimizations to the <code>;on_every_tick=</code> implementation for track-bars.
 
#* Faster on every tick command execution.
'''Version 1.6.4'''
# New table option additions <code>;section_text_color=</code> and <code>;info_text_color=</code>.
* Optimizations to the <code>;on_every_tick=</code> implementation for track-bars.
#* Both section and info text color are optional parameters that can be set to:
** Faster on every tick command execution.
#** <code>default</code> (normally <code>default</code> when unspecified)
* New table option additions <code>;section_text_color=</code> and <code>;info_text_color=</code>.
#** <code>warning</code> (new built-in theme color <code>warning_text_color</code>)
** Both section and info text color are optional parameters that can be set to:
#** or any specified RGB888 hex color string
*** <code>default</code> (normally <code>default</code> when unspecified)
# Forwarder package versions and title colors are now inherited from the layer 0 package (package.ini) if left unspecified within the forwarder package.
*** <code>warning</code> (new built-in theme color <code>warning_text_color</code>)
#* Users no longer need to specify forwarder package versions and colors on every forwarder package ini.
*** or any specified RGB888 hex color string
# Bottom buttons and settings menu touch functions now utilize theme colors <code>click_color</code> and <code>click_alpha</code> for drawing highlights on the touch regions.
* Forwarder package versions and title colors are now inherited from the layer 0 package (package.ini) if left unspecified within the forwarder package.
# Various touch interaction bug fixes. (touching &quot;OK&quot; on top of a track-bar, bottom regions for touch adjusted to language text size, etc.)
** Users no longer need to specify forwarder package versions and colors on every forwarder package ini.
# Slight tweaks to pixel blender for drawn strings during hiding.
* Bottom buttons and settings menu touch functions now utilize theme colors <code>click_color</code> and <code>click_alpha</code> for drawing highlights on the touch regions.
'''1.6.3'''<br/>
* Various touch interaction bug fixes. (touching &quot;OK&quot; on top of a track-bar, bottom regions for touch adjusted to language text size, etc.)
List of changes:<br/>
* Slight tweaks to pixel blender for drawn strings during hiding.
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/0eeef44...v1.6.4 Full Changelog: 0eeef44...v1.6.4]
 
'''Version 1.6.3'''
 
List of changes:
<ol>
<ol>
<li><p>'''IMPORTANT:''' Tables in v1.6.3 no longer utilize <code>;header=</code> pattern and no longer draw headers. Tables also no longer require a <code>$</code> in the command name.</p>
<li><p>'''IMPORTANT:''' Tables in v1.6.3 no longer utilize <code>;header=</code> pattern and no longer draw headers. Tables also no longer require a <code>$</code> in the command name.</p>
Line 745: Line 842:
<li><p>Page left / right traversal now works with joysticks in addition to the d-pad.</p></li>
<li><p>Page left / right traversal now works with joysticks in addition to the d-pad.</p></li>
<li><p>Various bug fixes and command optimizations.</p></li></ol>
<li><p>Various bug fixes and command optimizations.</p></li></ol>
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.2...v1.6.3 Full Changelog: v1.6.2...v1.6.3]<br />
Update:
Update:
* Alignment correction for track-bar sliders and up / down bounce effect for track-bar cursors. (06/14/24 3:45 AM PST)
* Alignment correction for track-bar sliders and up / down bounce effect for track-bar cursors. (06/14/24 3:45 AM PST)
* Named step-bar tick indicator color and position correction. (06/14/24 3:53 AM PST)
* Named step-bar tick indicator color and position correction. (06/14/24 3:53 AM PST)
'''1.6.2'''<br/>
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.3...0eeef44 v1.6.3...0eeef44]
 
'''Version 1.6.2'''<br/>
List of changes:<br/>
List of changes:<br/>
# New methods <code>list_file</code> and <code>list_file_source</code> for reading lines from a text file.
* New methods <code>list_file</code> and <code>list_file_source</code> for reading lines from a text file.
#* They are defined <code>list_file &lt;path_to_text_file&gt;</code> / <code>list_file_source &lt;path_to_text_file&gt;</code>.
** They are defined <code>list_file &lt;path_to_text_file&gt;</code> / <code>list_file_source &lt;path_to_text_file&gt;</code>.
#* Their behavior is similar to a regular list with placeholders <code>{list_file(&lt;index&gt;)}</code> and <code>{list_file_source(&lt;index&gt;)}</code>.
** Their behavior is similar to a regular list with placeholders <code>{list_file(&lt;index&gt;)}</code> and <code>{list_file_source(&lt;index&gt;)}</code>.
# Bug fixes for nested package dropdown selections.
* Bug fixes for nested package dropdown selections.
# Opaque screenshots will now be turned on by default upon initialization.
* Opaque screenshots will now be turned on by default upon initialization.
#* To disable, enter the <code>Miscellaneous</code> menu and click the toggle item.
** To disable, enter the <code>Miscellaneous</code> menu and click the toggle item.
# Bug fixes for Tesla combo persistence.
* Bug fixes for Tesla combo persistence.
# Addition of a couple more default Tesla combos as well as fixes for reading alternate user specified combos.
* Addition of a couple more default Tesla combos as well as fixes for reading alternate user specified combos.
# Settings menu code revision. (for smaller compilation)
* Settings menu code revision. (for smaller compilation)
# Various <code>libtesla</code> alignment corrections.
* Various <code>libtesla</code> alignment corrections.
 
Update:
Update:
* Widget alignment correction. (05/26/2024 2:44 AM PST)
* Widget alignment correction. (05/26/2024 2:44 AM PST)
* Couple additional key combos (added by request). (05/26/2024 3:32 AM PST)
* Couple additional key combos (added by request). (05/26/2024 3:32 AM PST)
* Slight footer alignment correction. (05/26/2024 5:08 AM PST)
* Slight footer alignment correction. (05/26/2024 5:08 AM PST)
'''1.6.1'''
 
# New command mode <code>;mode=slot</code> for slot commands.
'''Version 1.6.1'''
#* <code>slot</code> commands are similar to <code>default</code>, but with the ability to set footers (similar to an <code>option</code> command).
* New command mode <code>;mode=slot</code> for slot commands.
# Various placeholder replacement bug fixes.
** <code>slot</code> commands are similar to <code>default</code>, but with the ability to set footers (similar to an <code>option</code> command).
#* Preservation of <code>null</code> arg with default to <code>Not available</code> upon final replacement.
* Various placeholder replacement bug fixes.
#* Placeholder replacements now no longer contribute to command success/failure. (determined now solely by commands themselves.)
** Preservation of <code>null</code> arg with default to <code>Not available</code> upon final replacement.
#* <code>{file_name}</code> replacements no longer include file extensions.
** Placeholder replacements now no longer contribute to command success/failure. (determined now solely by commands themselves.)
# Hex edits will now be unprocessed for <code>null</code> arguments and still return successful. (bug fix)
** <code>{file_name}</code> replacements no longer include file extensions.
# New placeholder <code>{timestamp(&lt;strftime&gt;)}</code> for logging time as a variable.
* Hex edits will now be unprocessed for <code>null</code> arguments and still return successful. (bug fix)
#* <code>strftime</code> are datetime formats like <code>&quot;%Y-%m-%d&quot;</code>.
* New placeholder <code>{timestamp(&lt;strftime&gt;)}</code> for logging time as a variable.
# Nested layers bug fix (for nested layers beyond layer 1).
** <code>strftime</code> are datetime formats like <code>&quot;%Y-%m-%d&quot;</code>.
# Package forwarder bug fixes.
* Nested layers bug fix (for nested layers beyond layer 1).
# Slight tweaks to libtesla.
* Package forwarder bug fixes.
'''1.6.0'''
* Slight tweaks to libtesla.
# More improvements to UI and libtesla.
 
#* Rending related bug fixes and optimizations.
'''Version 1.6.0'''
#* Pixel blender bug fix (for transparency layer blending).
* More improvements to UI and libtesla.
#* Improvements to string/character length computations.
** Rending related bug fixes and optimizations.
#* Slightly improved cursor and menu layout.
** Pixel blender bug fix (for transparency layer blending).
# New themes values <code>selection_bg_alpha</code> and <code>table_bg_alpha</code> for blended transparency.
** Improvements to string/character length computations.
#* Updates to <code>default</code> + <code>ultra</code> themes.
** Slightly improved cursor and menu layout.
# New effect option <code>Opaque Screenshots</code> (located in Settings &gt; UI Settings &gt; Miscellaneous) for removing overlay transparency from screenshots for Ultrahand.
* New themes values <code>selection_bg_alpha</code> and <code>table_bg_alpha</code> for blended transparency.
# Slight improvements to the <code>unzip</code> command method. (boundary case bug fixes)
** Updates to <code>default</code> + <code>ultra</code> themes.
'''1.5.9'''
* New effect option <code>Opaque Screenshots</code> (located in Settings &gt; UI Settings &gt; Miscellaneous) for removing overlay transparency from screenshots for Ultrahand.
# More improvements and optimizations to the tables implementation.
* Slight improvements to the <code>unzip</code> command method. (boundary case bug fixes)
#* New option <code>;background=</code> which is a <code>true</code>/<code>false</code> value for drawing the table background.
 
#* New configurable theme color <code>table_bg_color</code> for configuring table background colors.
'''Version 1.5.9'''
# More refinements and optimizations to libTesla.
* More improvements and optimizations to the tables implementation.
#* Slightly faster rendering + cleanup of various implementations.
** New option <code>;background=</code> which is a <code>true</code>/<code>false</code> value for drawing the table background.
# Update to <code>default</code> and [https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/themes/ultra.ini ultra] themes.
** New configurable theme color <code>table_bg_color</code> for configuring table background colors.
# Bug fix for Ultrahand starting opened after shutting down within an overlay. (only present in v1.5.8)
* More refinements and optimizations to libTesla.
# Bug fix for nested package pages.
** Slightly faster rendering + cleanup of various implementations.
'''1.5.8'''
* Update to <code>default</code> and [https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/themes/ultra.ini ultra] themes.
# Numerous across the board optimizations and bug fixes. (Significant memory/speed improvements from v1.5.7.)
* Bug fix for Ultrahand starting opened after shutting down within an overlay. (only present in v1.5.8)
#* Improved code structure and memory consumption.
* Bug fix for nested package pages.
#* Optimized menu item sorting. (for drawing the <code>overlays</code> / <code>packages</code> menu)
'''Version 1.5.8'''
#* Improved themes loading implementation.
* Numerous across the board optimizations and bug fixes. (Significant memory/speed improvements from v1.5.7.)
#* New hiding overlay implementation. (animations + widget throttling correction)
** Improved code structure and memory consumption.
#* <code>set-ini-value</code> now will create folders if necessary when initializing new ini's.
** Optimized menu item sorting. (for drawing the <code>overlays</code> / <code>packages</code> menu)
#* Bug fixes for <code>move</code> and <code>delete</code> commands.
** Improved themes loading implementation.
#* CURL global initialization. (fix for random crashes using download function)
** New hiding overlay implementation. (animations + widget throttling correction)
#* Bug fixes for default key combo initialization. (for fresh setups)
** <code>set-ini-value</code> now will create folders if necessary when initializing new ini's.
# New table implementation for drawing information.
** Bug fixes for <code>move</code> and <code>delete</code> commands.
#* Table commands must start with <code>$</code> in the command name and include <code>;mode=table</code>.
** CURL global initialization. (fix for random crashes using download function)
#* Additional options for configuring tables:
** Bug fixes for default key combo initialization. (for fresh setups)
#** <code>;header=</code> is a <code>true</code>/<code>false</code> option for drawing the section header with the table.
* New table implementation for drawing information.
#** <code>;alignment=</code> is a string value <code>left</code>, <code>right</code>, or <code>center</code> for controlling the value column alignment. (default value is <code>right</code>).
** Table commands must start with <code>$</code> in the command name and include <code>;mode=table</code>.
#** <code>;offset=</code> is an integer value for configuring the values column offset with a <code>left</code> / <code>center</code> alignment. (default value is <code>160</code>)
** Additional options for configuring tables:
#** <code>;spacing=</code> is an integer value for configuring the newline spacings for drawing the table. (default value is <code>0</code>)
*** <code>;header=</code> is a <code>true</code>/<code>false</code> option for drawing the section header with the table.
#** <code>;gap=</code> is an integer value for configuring the post-table gap. (default value is <code>3</code>)
*** <code>;alignment=</code> is a string value <code>left</code>, <code>right</code>, or <code>center</code> for controlling the value column alignment. (default value is <code>right</code>).
#* Placeholders are fully functional for drawing tables with parsed values. (json, hex, list, etc.)
*** <code>;offset=</code> is an integer value for configuring the values column offset with a <code>left</code> / <code>center</code> alignment. (default value is <code>160</code>)
#* New theme color options <code>table_section_text_color</code> and <code>table_info_text_color</code>.
*** <code>;spacing=</code> is an integer value for configuring the newline spacings for drawing the table. (default value is <code>0</code>)
# New unzip + copy progress indicator.
*** <code>;gap=</code> is an integer value for configuring the post-table gap. (default value is <code>3</code>)
# Progress animation. (see <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Progress Animation</code>)
** Placeholders are fully functional for drawing tables with parsed values. (json, hex, list, etc.)
# Various subtle UI improvements and corrections.
** New theme color options <code>table_section_text_color</code> and <code>table_info_text_color</code>.
'''1.5.7'''
* New unzip + copy progress indicator.
* Progress animation. (see <code>Settings &gt; UI Settings &gt; Miscellaneous &gt; Effects &gt; Progress Animation</code>)
* Various subtle UI improvements and corrections.
 
'''Version 1.5.7'''
* List of changes:
* List of changes:
** New function remove-ini-key for removing key/value pairs from a specified INI section.
** New function remove-ini-key for removing key/value pairs from a specified INI section.
Line 835: Line 941:
** hex-by-custom-rdecimal-offset bug fix. (05/10/2024 4:59 PM PST)
** hex-by-custom-rdecimal-offset bug fix. (05/10/2024 4:59 PM PST)
** More slight optimizations + bug fixes with hexing. (05/10/2024 11:14 PM PST)
** More slight optimizations + bug fixes with hexing. (05/10/2024 11:14 PM PST)
'''1.5.6'''
 
'''Version 1.5.6'''
* List of changes:
* List of changes:
** Package path shortcuts implementation, called ./ for package path within command ini's.
** Package path shortcuts implementation, called ./ for package path within command ini's.
Line 871: Line 978:
** Wildcard pattern bug fix + move files/folders bug fix. (05/07/2024 8:55 PM PST)
** Wildcard pattern bug fix + move files/folders bug fix. (05/07/2024 8:55 PM PST)
*** This may have affected this line from executing properly delete /switch/.packages/*/config.ini. You may still want to run this command once if you used v1.5.6 earlier than the first update.
*** This may have affected this line from executing properly delete /switch/.packages/*/config.ini. You may still want to run this command once if you used v1.5.6 earlier than the first update.
** More last minute wildcard pattern bug fixes. 😅 (05/07/2024 11:19 PM PST)
** More last minute wildcard pattern bug fixes. (05/07/2024 11:19 PM PST)
'''1.5.5'''
 
'''Version 1.5.5'''
* List of changes:
* List of changes:
** Implementation of new package forwarders for extended Ultrahand packages.
** Implementation of new package forwarders for extended Ultrahand packages.
Line 887: Line 995:
* Update:
* Update:
** Nested package implementation bug fix. (05/05/2024)
** Nested package implementation bug fix. (05/05/2024)
'''1.5.4'''
 
'''Version 1.5.4'''
*List of changes:
*List of changes:
**Better memory management and utilization of smart pointers. (potential memory leaks resolved hopefully)
**Better memory management and utilization of smart pointers. (potential memory leaks resolved hopefully)
Line 896: Line 1,005:
**Menu traversing related bug fixes.
**Menu traversing related bug fixes.
**Various bug fixes.
**Various bug fixes.
'''1.5.3'''
 
'''Version 1.5.3'''
*List of changes:
*List of changes:
**Removal of <sys/stat.h>/<cstdio> and implementation of <fstream> in every function.
**Removal of <sys/stat.h>/<cstdio> and implementation of <fstream> in every function.
Line 903: Line 1,013:
**Reduction of compilation size.
**Reduction of compilation size.
**Various bug fixes and improvements.
**Various bug fixes and improvements.
'''1.5.2'''
 
'''Version 1.5.2'''
*List of changes:
*List of changes:
**Numerous menu related memory leak bug fixes.
**Numerous menu related memory leak bug fixes.
Line 909: Line 1,020:
**Various improvements to download, json, ini, and path functions.
**Various improvements to download, json, ini, and path functions.
**Bug fixes for refresh function as well as exec boot.
**Bug fixes for refresh function as well as exec boot.
'''1.5.1'''
 
'''Version 1.5.1'''
*List of changes:
*List of changes:
**Full touch support is now included.
**Full touch support is now included.
Line 927: Line 1,039:
**New command exit for exiting Ultrahand directly.
**New command exit for exiting Ultrahand directly.
**Interpreter optimizations and stability bug fixes. (final update 04/25/2024)
**Interpreter optimizations and stability bug fixes. (final update 04/25/2024)
'''1.5.0'''
 
'''Version 1.5.0'''
* Introduction of new pchtxt2ips method, called pchtxt2ips <PCHTXT_FILE_PATH> <OUTPUT_FOLDER>.
* Introduction of new pchtxt2ips method, called pchtxt2ips <PCHTXT_FILE_PATH> <OUTPUT_FOLDER>.
** This allows the easy conversion of .pchtxt files into .ips binaries.
** This allows the easy conversion of .pchtxt files into .ips binaries.
Line 934: Line 1,047:
* Bug fix for starring / favoriting hidden overlays and packages.
* Bug fix for starring / favoriting hidden overlays and packages.
* libnx has been updated.
* libnx has been updated.
'''1.4.9'''
 
'''Version 1.4.9'''
*List of changes:
*List of changes:
**Numerous refinements to the UI and libTesla.
**Numerous refinements to the UI and libTesla.
Line 944: Line 1,058:
*Update:
*Update:
**Slight default logo color tweak.
**Slight default logo color tweak.
'''1.4.8'''
 
'''Version 1.4.8'''
*List of changes:
*List of changes:
**Improved toggles implementation.
**Improved toggles implementation.
Line 959: Line 1,074:
**Another bug fix for option command selection footers. - 11/25/23 10:06 PM PST
**Another bug fix for option command selection footers. - 11/25/23 10:06 PM PST
**libTesla bug fixes (widget drawing related fixes). - 11/26/23 7:00 AM PST
**libTesla bug fixes (widget drawing related fixes). - 11/26/23 7:00 AM PST
'''1.4.7'''
 
'''Version 1.4.7'''
*Numerous code optimizations and revisions across the board for all methods.
*Numerous code optimizations and revisions across the board for all methods.
**These ranged from bug fixes to stricter/cleaner memory management within functions.
**These ranged from bug fixes to stricter/cleaner memory management within functions.
Line 977: Line 1,093:
**More libTesla optimizations. (faster menu). - 11/22/23 6:47 AM PST
**More libTesla optimizations. (faster menu). - 11/22/23 6:47 AM PST
**New clear command clear hex_sum_cache for clearing the hexSumCache. - 11/22/23 7:22 AM PST
**New clear command clear hex_sum_cache for clearing the hexSumCache. - 11/22/23 7:22 AM PST
'''1.4.6'''
 
'''Version 1.4.6'''
*Addition of a toggle-able User Guide (drawn by default on the Packages Menu).
*Addition of a toggle-able User Guide (drawn by default on the Packages Menu).
*Reboot directly to Hekate menu now implemented within the reboot command.
*Reboot directly to Hekate menu now implemented within the reboot command.
Line 993: Line 1,110:
**Update:
**Update:
*Slight indentation cleanups.
*Slight indentation cleanups.
'''1.4.5'''
 
'''Version 1.4.5'''
*New function try: for executing blocks/lines of code with error catching.
*New function try: for executing blocks/lines of code with error catching.
**Commands in the chain are still executed normally without try:.
**Commands in the chain are still executed normally without try:.
Line 1,003: Line 1,121:
*If any of the lines within the command that involve sourcing, hexing, downloading, or unzipping fail, it will return a red cross symbol instead of a checkmark.
*If any of the lines within the command that involve sourcing, hexing, downloading, or unzipping fail, it will return a red cross symbol instead of a checkmark.
*Various bug fixes.
*Various bug fixes.
'''1.4.4'''
 
'''Version 1.4.4'''
*Theme manager is now built into the Settings Menu (PLUS / +).
*Theme manager is now built into the Settings Menu (PLUS / +).
**Themes will have their own custom name and be placed within /config/ultrahand/themes/<THEME>.ini.
**Themes will have their own custom name and be placed within /config/ultrahand/themes/<THEME>.ini.
Line 1,016: Line 1,135:
*Bug fixes for download functions, json_source functions, and Package Info drawing.
*Bug fixes for download functions, json_source functions, and Package Info drawing.
*Updates, fixes and expansions to OC Toolkit (now v0.2.9).
*Updates, fixes and expansions to OC Toolkit (now v0.2.9).
'''1.4.3'''
 
'''Version 1.4.3'''
* Key combo initialization bug fix (primarily for people not coming from Tesla Menu).
* Key combo initialization bug fix (primarily for people not coming from Tesla Menu).
** This bug made an initialized /config/ultrahand/config.ini file not write hotkeys to the ini without Tesla config files.
** This bug made an initialized /config/ultrahand/config.ini file not write hotkeys to the ini without Tesla config files.
Line 1,030: Line 1,150:
** smoothing effect has been added to scrolling (for cleaner animation)
** smoothing effect has been added to scrolling (for cleaner animation)
** Toggles for "On" and "Off" for Ultrahand Packages now use the active language.
** Toggles for "On" and "Off" for Ultrahand Packages now use the active language.
'''1.4.2'''
 
'''Version 1.4.2'''
* Built with latest libnx for official HOS 17.0.0 support.
* Built with latest libnx for official HOS 17.0.0 support.
** Temperatures are now working on HOS 17.0.0.
** Temperatures are now working on HOS 17.0.0.
Line 1,040: Line 1,161:
* JSON placeholder replacement functions have been rewritten/improved.
* JSON placeholder replacement functions have been rewritten/improved.
* Various bug fixes and improvements.
* Various bug fixes and improvements.
'''1.4.1'''
 
'''Version 1.4.1'''
*Ini parsing and formatting related bug fixes.
*Ini parsing and formatting related bug fixes.
**This fixes issues like the first key in your keyCombo not working in libTesla.
**This fixes issues like the first key in your keyCombo not working in libTesla.
Line 1,063: Line 1,185:
**Backend for implementation has been written and is currently commented out.
**Backend for implementation has been written and is currently commented out.
*Various updates to languages files (still a WIP).
*Various updates to languages files (still a WIP).
'''1.4.0'''
 
'''Version 1.4.0'''
* Improvements to UI (battery, configurable clock, sensor, drawspace, etc.)
* Improvements to UI (battery, configurable clock, sensor, drawspace, etc.)
* International languages implementation.
* International languages implementation.
Line 1,077: Line 1,200:
** After inspection, this actually resulted a in ~0.4MB file size reduction.
** After inspection, this actually resulted a in ~0.4MB file size reduction.
* Sidenote: HOS 17.0.0 messed up temperature readings with libnx. This should be easily fixed once libnx is updated for 17.0.0.
* Sidenote: HOS 17.0.0 messed up temperature readings with libnx. This should be easily fixed once libnx is updated for 17.0.0.
'''1.3.9'''
 
'''Version 1.3.9'''
*Star-ing overlays is now done by pressing X instead of PLUS.
*Star-ing overlays is now done by pressing X instead of PLUS.
*Pressing PLUS on main menu now invokes the Ultrahand Settings menu (a page to control some settings in the config.ini).
*Pressing PLUS on main menu now invokes the Ultrahand Settings menu (a page to control some settings in the config.ini).
Line 1,085: Line 1,209:
**Clean versions restricts all displayed version labels into a X.X.X format.
**Clean versions restricts all displayed version labels into a X.X.X format.
*Various bug fixes.
*Various bug fixes.
'''1.3.8'''
 
'''Version 1.3.8'''
*Introduction of Pages: Now, you can define pages using empty commands [@PAGE1] and [@PAGE2], where PAGE1 and PAGE2 are labels for the page. Note that only two of these empty @-commands can be referenced in a package. You can navigate between PAGE1 and PAGE2 using the left and right buttons on the DPAD.
*Introduction of Pages: Now, you can define pages using empty commands [@PAGE1] and [@PAGE2], where PAGE1 and PAGE2 are labels for the page. Note that only two of these empty @-commands can be referenced in a package. You can navigate between PAGE1 and PAGE2 using the left and right buttons on the DPAD.
*New Command remove-ini-section: I've added a new command called remove-ini-section <ini_file_path> <section_name>. This command allows you to quickly remove a section from an INI file.
*New Command remove-ini-section: I've added a new command called remove-ini-section <ini_file_path> <section_name>. This command allows you to quickly remove a section from an INI file.
Line 1,093: Line 1,218:
**Bug Fixes: Addressed various bug fixes, including a memory leak issue on the main menu.
**Bug Fixes: Addressed various bug fixes, including a memory leak issue on the main menu.
*New updates to OC Toolkit.
*New updates to OC Toolkit.
'''1.3.7'''
 
'''Version 1.3.7'''
*Hex offset caching has been implemented for faster hexing read/write calls.
*Hex offset caching has been implemented for faster hexing read/write calls.
*Various additional improvements to hex functions.
*Various additional improvements to hex functions.
Line 1,101: Line 1,227:
*New ;color= header definition in package.ini for choosing colors for your package title.
*New ;color= header definition in package.ini for choosing colors for your package title.
**Colors: red, green(default), blue, yellow, orange, purple, pink, white, ultra(wip)
**Colors: red, green(default), blue, yellow, orange, purple, pink, white, ultra(wip)
'''1.3.6'''
 
'''Version 1.3.6'''
*Added the ability to define functions in boot_package.ini other than boot.
*Added the ability to define functions in boot_package.ini other than boot.
*Enabled referencing and execution of global functions defined in boot_package.ini from your script using exec <COMMAND>.
*Enabled referencing and execution of global functions defined in boot_package.ini from your script using exec <COMMAND>.
Line 1,108: Line 1,235:
*Menu related bug fix (memory leak). Opening and closing selection overlay with dictionaries was not unloading the dictionary. Issue has been resolved.
*Menu related bug fix (memory leak). Opening and closing selection overlay with dictionaries was not unloading the dictionary. Issue has been resolved.
*If a command has the footer "Not available" it will no longer function.
*If a command has the footer "Not available" it will no longer function.
'''1.3.5'''
 
'''Version 1.3.5'''
*Introduction of boot_package.ini (commands that will run when your package is opened). This file is placed in the same folder as your package.ini file.
*Introduction of boot_package.ini (commands that will run when your package is opened). This file is placed in the same folder as your package.ini file.
*Introduction of new hex_file advanced function for reading/parsing hex data from files.
*Introduction of new hex_file advanced function for reading/parsing hex data from files.
Line 1,117: Line 1,245:
**ini_file <ini_file_path> is how it is defined.
**ini_file <ini_file_path> is how it is defined.
**{ini_file(section, key)} is how it will be called.
**{ini_file(section, key)} is how it will be called.
'''1.3.4'''
 
'''Version 1.3.4'''
* List of changes:
* List of changes:
** Empty commands now define grouping sections.
** Empty commands now define grouping sections.
Line 1,149: Line 1,278:
*update:
*update:
**Bug fix for selected footer after entering command groups. - 10/3/2023 4:48 PM
**Bug fix for selected footer after entering command groups. - 10/3/2023 4:48 PM
'''1.3.3'''
 
'''Version 1.3.3'''
* List of changes:
* List of changes:
** Fixed dropdown toggles. (Setup double click prevention to ensure commands are properly parsed.)
** Fixed dropdown toggles. (Setup double click prevention to ensure commands are properly parsed.)
Line 1,160: Line 1,290:
* Basic Option Example:
* Basic Option Example:
** Package: /switch/.packages/Test/package.ini
** Package: /switch/.packages/Test/package.ini
'''1.3.2'''
 
'''Version 1.3.2'''
* Bug fixes with interpreter allocating too much memory.
* Bug fixes with interpreter allocating too much memory.
** This affected unzip and download in certain test cases, but is no longer an issue.
** This affected unzip and download in certain test cases, but is no longer an issue.
Line 1,168: Line 1,299:
** Config menu has now been fixed. (09/26/23 11:21 PM)
** Config menu has now been fixed. (09/26/23 11:21 PM)
** Multiple menu related bug fixes. (09/27/23 2:25 AM)
** Multiple menu related bug fixes. (09/27/23 2:25 AM)
'''1.3.1'''
 
'''Version 1.3.1'''
* json_data (the non source version) is now json_file.
* json_data (the non source version) is now json_file.
* json is now a new non-source version of json_source for storing data within the package.ini.
* json is now a new non-source version of json_source for storing data within the package.ini.
Line 1,178: Line 1,310:
** Sections can be defined using ;mode=toggle and on: followed by the on commands and off: followed by the off commands.
** Sections can be defined using ;mode=toggle and on: followed by the on commands and off: followed by the off commands.


'''1.3.0'''
'''Version 1.3.0'''
*config.ini is now package.ini for Ultrahand packages.
*config.ini is now package.ini for Ultrahand packages.
*source is now file_source
*source is now file_source
Line 1,190: Line 1,322:
**Priority value is a number from 0 to 9999
**Priority value is a number from 0 to 9999


'''1.2.1'''
'''Version 1.2.1'''
* hide_overlay_versions and hide_package_versions are now true or false options within /config/ultrahand/config.ini.
* hide_overlay_versions and hide_package_versions are now true or false options within /config/ultrahand/config.ini.
* hex-by-custom-offset is now a new command for using custom string pattern offsets for more advanced hex-editing scenarios.
* hex-by-custom-offset is now a new command for using custom string pattern offsets for more advanced hex-editing scenarios.
Line 1,196: Line 1,328:
* Several bug fixes.
* Several bug fixes.


'''1.2.0'''
'''Version 1.2.0'''
* Commands now state "DONE" after pressed.
* Commands now state "DONE" after pressed.
* Bug fix for "set-ini-value". Issue was that for a new entry, it would inject the new entry into every section.
* Bug fix for "set-ini-value". Issue was that for a new entry, it would inject the new entry into every section.
* Simple fix, but since its bound to affect someone's project eventually, I'm updating the release.
* Simple fix, but since its bound to affect someone's project eventually, I'm updating the release.


'''1.1.9'''
'''Version 1.1.9'''
* Bug Fixes: Static menu variable and rootFrame handling.
* Bug Fixes: Static menu variable and rootFrame handling.
* These bug fixes potentially resolve the menu handling issue that occasionally can occur for some testers.
* These bug fixes potentially resolve the menu handling issue that occasionally can occur for some testers.
* Overall it should be more stable with static implementations of the particular variables I modified.
* Overall it should be more stable with static implementations of the particular variables I modified.


'''1.1.8'''
'''Version 1.1.8'''
* Introduction of footers for commands.
* Introduction of footers for commands.
* Testing potential bug fix for handling menu input.
* Testing potential bug fix for handling menu input.
* This issue is not very common, but occasionally the menu can get locked into a weird orientation, preventing you from moving to packages or overlays at times. Its hard to figure out the exact trigger, but I've attempted to address the issue here. Pre-release will be dropped after more testing. If you see this bug on this version, do let me know in issues.
* This issue is not very common, but occasionally the menu can get locked into a weird orientation, preventing you from moving to packages or overlays at times. Its hard to figure out the exact trigger, but I've attempted to address the issue here. Pre-release will be dropped after more testing. If you see this bug on this version, do let me know in issues.


'''1.1.7'''
'''Version 1.1.7'''
* Download and unzip files implementation has been added.
* Download and unzip files implementation has been added.
* Command to download:
* Command to download:
Line 1,218: Line 1,350:
** unzip <SOURCE_FILE> <DESTINATION_FOLDER>
** unzip <SOURCE_FILE> <DESTINATION_FOLDER>
* CURL has made it a bit beefier as you can tell, but the potential benefits are pretty great for having these commands handy. Lots of new packages can be made for updating and installing software.
* CURL has made it a bit beefier as you can tell, but the potential benefits are pretty great for having these commands handy. Lots of new packages can be made for updating and installing software.
* update: slight bug fix for handling more URLs (07/07/2023)
* update: slight bug fix for handling more URLs (07/07/2023)
* update: bug fix for unzip and createDirectories (07/08/2023)
* update: bug fix for unzip and createDirectories (07/08/2023)
'''1.1.6'''
 
'''Version 1.1.6'''
* Move commands now create directory if the directory does not exist.
* Move commands now create directory if the directory does not exist.
* Bug fix for exiting main menu that can sometimes occur when exiting (locked users in the menu until an item is selected).
* Bug fix for exiting main menu that can sometimes occur when exiting (locked users in the menu until an item is selected).
* Multiple filters are now implemented. filter, filter_on, filter_off calls will store your filter path into a list.
* Multiple filters are now implemented. filter, filter_on, filter_off calls will store your filter path into a list.
'''1.1.5'''
 
'''Version 1.1.5'''
* Bug fix for those who specify their default menu mode instead of resorting to last_menu.
* Bug fix for those who specify their default menu mode instead of resorting to last_menu.
* Several cosmetic improvements.
* Several cosmetic improvements.
* Easier transition from Tesla Menu by copying combo from sdmc:/config/tesla/config.ini if it exists and the combo is not within sdmc:/config/ultrahand/config.ini.
* Easier transition from Tesla Menu by copying combo from sdmc:/config/tesla/config.ini if it exists and the combo is not within sdmc:/config/ultrahand/config.ini.
   
  * update: more cosmetic improvements after initial release (only difference)
* update: more cosmetic improvements after initial release (only difference)
 
'''1.1.4'''
'''Version 1.1.4'''
* Ultrahand is now a replacement for ovlmenu.ovl.
* Ultrahand is now a replacement for ovlmenu.ovl.
* Ultrahand packages are now relocated to sdmc:/switch/.packages/.
* Ultrahand packages are now relocated to sdmc:/switch/.packages/.
Line 1,238: Line 1,371:
* Right on the menu takes you to your packages and commands.
* Right on the menu takes you to your packages and commands.
* More improvements to come.
* More improvements to come.
'''1.1.3'''
 
'''Version 1.1.3'''
* Introduction of more selection command features.
* Introduction of more selection command features.
* Multi-wildcard statements.
* Multi-wildcard statements.
* New functions 'mirror_copy' and 'mirror_delete' for implementing mirror functions on directory contents.
* New functions 'mirror_copy' and 'mirror_delete' for implementing mirror functions on directory contents.
* All copy functions now create destination directories.
* All copy functions now create destination directories.
'''1.1.2'''
 
'''Version 1.1.2'''
* Selection (wild card commands) toggles are now implemented.
* Selection (wild card commands) toggles are now implemented.
* Simple one line filter added. (see updated examples).
* Simple one line filter added. (see updated examples).
'''1.1.1'''
 
'''Version 1.1.1'''
*Introduction of wildcard commands (new command-type).
*Introduction of wildcard commands (new command-type).
'''1.10.0'''
 
'''Version 1.10.0'''
* Pre-release: Testing new hex editing functions.
* Pre-release: Testing new hex editing functions.
* New commands "hex-by-offset", "hex-by-swap", "hex-by-decimal", "hex-by-rdecimal"
* New commands "hex-by-offset", "hex-by-swap", "hex-by-decimal", "hex-by-rdecimal"
* Still needs more testing to confirm full functionality, but since it appears to be compiling properly ill leave it here for now for testing.
* Still needs more testing to confirm full functionality, but since it appears to be compiling properly ill leave it here for now for testing.
'''1.0.9'''
 
'''Version 1.0.9'''
* Implemented safeguards so you don't delete or move your entire SD card or essential files. Still have more features to implement for this version, it should be better than using 1.0.8 but since I made changes that need review I am still calling it pre-release for now.
* Implemented safeguards so you don't delete or move your entire SD card or essential files. Still have more features to implement for this version, it should be better than using 1.0.8 but since I made changes that need review I am still calling it pre-release for now.
* Update: More advanced pattern searching. Multiple wildcards. 2:42 AM PST 06/08/2023
* Update: More advanced pattern searching. Multiple wildcards. 2:42 AM PST 06/08/2023
* Update: Updated safeguards for more advanced patterns. 3:16 AM PST 06/08/2023
* Update: Updated safeguards for more advanced patterns. 3:16 AM PST 06/08/2023
'''1.0.8'''
 
'''Version 1.0.8'''
*Added new feature "new-ini-entry" and restored original example config.ini generated if no config is present.
*Added new feature "new-ini-entry" and restored original example config.ini generated if no config is present.
'''v1.0.7'''
 
'''Version 1.0.7'''
*Improvements to menu. Version handling for user packages.
*Improvements to menu. Version handling for user packages.
'''v1.6'''
 
'''Version 1.6'''
* More improvements, "edit-ini" commands have now been labeled "set-ini". You can also press X on an individual command and see and execute individual lines within.
* More improvements, "edit-ini" commands have now been labeled "set-ini". You can also press X on an individual command and see and execute individual lines within.
** Update: Faster copying. - 05/31/23 4:19PM PST
** Update: Faster copying. - 05/31/23 4:19PM PST
** Update: Even faster copying. - 05/31/23 4:35PM PST
** Update: Even faster copying. - 05/31/23 4:35PM PST
** Update: Slight size reduction. - 06/01/23 6:34PM PST
** Update: Slight size reduction. - 06/01/23 6:34PM PST
'''v1.0.5'''
 
'''Version 1.0.5'''
* Too many bug fixes with statement logic.
* Too many bug fixes with statement logic.
* Ability to execute individual commands from a package have been added (press X on package).
* Ability to execute individual commands from a package have been added (press X on package).
Line 1,272: Line 1,414:
** Update: Fixed copy directory not copying subdirectories. - 05/29/23 05:59 PM PST
** Update: Fixed copy directory not copying subdirectories. - 05/29/23 05:59 PM PST
** Update: Edit ini key or value now. - 05/29/23 09:40 PM PST
** Update: Edit ini key or value now. - 05/29/23 09:40 PM PST
'''v1.0.4'''
 
'''Version 1.0.4'''
*Slight tweaks to libtesla. This is pre-release, but it is still commits ahead of 1.0.3 and stable.
*Slight tweaks to libtesla. This is pre-release, but it is still commits ahead of 1.0.3 and stable.
**Update: Got new features as well as pattern searching implemented. New documentation coming soon. 05/29/23 9:11 AM PST
**Update: Got new features as well as pattern searching implemented. New documentation coming soon. 05/29/23 9:11 AM PST
'''v1.0.3'''
 
'''Version 1.0.3'''
* Improvements to code structure, menu layout, new commands (reset, shutdown), etc.
* Improvements to code structure, menu layout, new commands (reset, shutdown), etc.
** Update: Copy function now can rename to file as well as copy to directory. This makes it simulate "cp" a bit better. - 05/27/23 7:37 AM PST
** Update: Copy function now can rename to file as well as copy to directory. This makes it simulate "cp" a bit better. - 05/27/23 7:37 AM PST
Line 1,281: Line 1,425:
** Update: Fixed even more edit-ini bugs. Should be working. - 05/27/23 3:27 PM PST
** Update: Fixed even more edit-ini bugs. Should be working. - 05/27/23 3:27 PM PST
** Update: Fixed one last edit-ini bug for handling command. Testing safer reboot method. - 05/27/23 9:40 PM PST
** Update: Fixed one last edit-ini bug for handling command. Testing safer reboot method. - 05/27/23 9:40 PM PST
'''v1.0.2'''
 
'''Version 1.0.2'''
* Folders have now been added.
* Folders have now been added.
* Future plans: cleaner UI, separation for "Packages" and "Commands" sections with titles.
* Future plans: cleaner UI, separation for "Packages" and "Commands" sections with titles.
** Update: Fixed a bug that occurred with linking folders. - 05/28/23 05:59 PM
** Update: Fixed a bug that occurred with linking folders. - 05/28/23 05:59 PM
'''v1.0.1'''
 
'''Version 1.0.1'''
* New feature 'parse-ini'.
* New feature 'parse-ini'.
* Update: Delete directory bug fix. - 05/28/23 8:11 AM PST
* Update: Delete directory bug fix. - 05/28/23 8:11 AM PST
'''v1.0'''
 
'''Version 1.0'''
* First Release.
* First Release.
**Update: Improved structure and examples for testing. - 05/25/23 5:52 PM PST
**Update: Improved structure and examples for testing. - 05/25/23 5:52 PM PST

Revision as of 04:31, 14 June 2025

Ultrahand Overlay
General
Authorppkantorski
TypeOverlays
Version1.9.2
LicenseMixed
Last Updated2025/06/12
Links
Download
Website
Source
Support Author

Ultrahand Overlay is a Tesla Menu replacement built from the ground up off of libtesla that provides powerful C/C++ commands through the usage of its own custom interpretive programming language (similar to Shell/BASH). It is a versatile tool that enables you to create and share custom command-based packages, providing enhanced functionality for managing settings, files and directories on your Nintendo Switch.

With Ultrahand, you have the flexibility to customize and shape your file management system according to your needs, empowering you with greater control over your system configurations.

Features

Ultrahand Overlay currently offers the following features:

  • Create Directories:
    • Effortlessly create directories on your SD card by specifying the directory path. Ultrahand will handle the creation process for you.
  • Copy Files or Directories:
    • Easily copy files or directories from one location to another on your SD card. Just provide the source and destination paths, and Ultrahand will seamlessly handle the copying process.
  • Delete Files or Directories:
    • Simplify file and directory deletion on your SD card. By specifying the path of the file or directory you want to delete, Ultrahand promptly removes it, making the deletion process hassle-free.
  • Move Files or Directories:
    • Seamlessly move files or directories between locations on your SD card. Provide the source path and the destination directory path, and Ultrahand takes care of the moving process, ensuring smooth relocation.
  • Download Files:
    • Download files to your SD card with ease. Efficiently retrieve files from repositories or URLs to your desired location. Whether you need to download/update homebrew or transfer files between locations, this feature simplifies the process, making repository management a breeze.
  • Unzip Files:
    • Extract compressed zip files on your SD card by unzipping archived files, preserving their original structure. Whether you have downloaded zip archives or received compressed files, this command simplifies the process of extracting them, making it effortless to access the contents within.
  • Modify INI Files:
    • Edit INI files on your SD card with ease. Take full control over your configurations by updating existing key-value pairs, adding new entries, or creating new sections within the INI file using Ultrahand.
  • Hex Edit Files:
    • Perform hexadecimal editing of files on your SD card. Edit the binary data directly, allowing for precise control over your data. Ultrahand's Hex Edit Files feature enables you to analyze, modify, and customize files in their raw form.
  • Convert Mods:
    • Convert pchtxt mods into ips or cheats format.
  • System Commands:
    • There are a variety of system commands that users can utilize. These include functions to shutdown, reboot, reboot directly into Hekate entries/modes, manipulate the screen's backlight, and turn off all bluetooth controllers.
  • Run Commmands On Boot:
    • Users can also utilize their own /switch/.packages/boot_package.ini file (with a command section boot) to run a series of commands once upon device boot-up.

Installation

Your Nintendo Switch must have the necessary homebrew environment set up, running HOS (Horizon Operating System) version 16.0.0 or above.

  • Make sure you have nx-ovlloader installed.
  • Download the latest Ultrahand ovlmenu.ovl and place it within "/switch/.overlays/".
    • Warning: This will overwrite Tesla Menu if already installed.
  • After installing Ultrahand Overlay, a new folder named "ultrahand" will be created within the root config folder on your SD card (/config/ultrahand/) along with a config.ini file containing various Ultrahand settings.
  • Launch Ultrahand similarly to Tesla Menu with your specified hotkey. A new folder will be made ("/switch/.packages/") with a preset package.ini file for your base menu commands.
  • Place your custom "package.ini" package file in your Ultrahand package directory ("/switch/.packages/<PACKAGE_NAME>/"). This file will contains the commands for your custom Ultrahand package.
  • Your commands will now show up on the packages menu within Ultrahand.

See Ultrahand Packages for a comprehensive list of known packages.

For additional assistance with custom packages, feel free to checkout the Ultrahand Overlay Wiki.

Controls

A - Execute any command

Minus - View/execute the individual command lines written in the ini for execution

Plus (main menu) - Enter the settings menu

X - Click on top of an overlay/package to star them

Y - Click top of an overlay/package to configure additional settings

Screenshots

ultrahandoverlaynx-01.png

ultrahandoverlaynx-02.png

ultrahandoverlaynx-03.png

Compatibility

HOS 16.0.0+.

Changelog

Version 1.9.2

  • Restoring of debug logging.
    • This caused issues in rare test cases, using the USING_LOGGING_DIRECTIVE set to 0 (off).
    • Debug logging needs to be consolidated more (later).
  • Opacity bug fix.
    • This caused wallpapers to hit opacity before the rest of the items, making screenshots look weird. All fixed now.
  • Jump menu navigation from clicking up at the top of the list bug fix.
    • This caused multiple "up" clicks to get stuck on the last item on the list initially for the second up click. Also fixed.
  • Slight refinement to the up / down jump menu navigation.
  • Threshold for successive clicks has been set from 150ms to 100ms for smoother navigation.
  • Full Changelog: v1.9.1...v1.9.2

Version 1.9.1

  • Significant rendering improvements in libultrahand / libtesla (again).
    • Faster string rendering (with safeguards) as well as rendering of other objects.
    • Faster glyph lookup (for drawing strings).
    • Safe optimizations to critical rendering components (considerable improvements).
    • 60fps now works on 918 MHz CPU with wallpapers.
    • 60fps also works with 714 MHz CPU without wallpapers.
      • 612 Mhz CPU without wallpapers is now very close to 60fps with it rendering 60fps on certain menus.
  • Bug fixes for left to right scrolling text (long ListItem text) not returning to its original position before restarting.
  • Rewrite of the List class in libtesla to properly allow jump menu navigation.
    • When at the top of the menu and up is pressed, the cursor will now automatically go to the bottom most item.
    • When at the bottom of the menu and down is pressed, the cursor will now automatically go back to the top.
    • When L is pressed, the cursor will jump to the top of the menu.
    • When R is pressed, the cursor will jump to the bottom of the menu.
      • All jump menu implementations works on menus with ListItems and tables, or even just tables.
    • Complete rewrite of the table scrolling implementation for smoother scrolling and less potential issues.
  • Fixes to table drawing implementations.
    • All tables are now ;scrollable=true by default with proper scrolling implemented.
      • This property will eventually be removed, as well as the other scrollable properties.
  • Download commands now have a 10s timeout.
  • Software Update now removes the version label if it cannot pull the latest version details from GitHub.
    • This will prevent people thinking an older version of the overlay is the latest.
  • Slight cleanup of debug logging.
  • Beta for nx-ovlloader+ v1.1.1 is now live (not linked to Update for now for testing).

What's Changed:

Version 1.9.0

  • Title ID polling bug fixes in libultrahand (cleanup of the foreground fix implementation).
    • Before it was using old / outdated service calls for pulling the title ID.
    • This issue appears to have caused crashes on certain switch environments according to users.
  • Various code optimizations in libultrahand.
    • Rendering is slightly faster now than v1.8.9.
    • Removal of chrono for libnx alternatives.
  • nx-ovlloader/nx-ovlloader+ have been re-compiled.
  • Full Changelog: becd070...v1.9.0

Update:

  • Slight bug fixes with libcurl initializations (revert of changes).
  • setNextOverlay bug fix for overlay filename launch arguments. - 06/07/2025 10:30 PM PST
  • Bug fix for text extending off the screen causing crashes (like in lang file es.json). - 06/08/2025 6:07 AM PST
  • A more elegant solution will be applied later to speed up the rendering a pinch.
  • Full Changelog: v1.9.0...215e878

Version 1.8.9

  • Significantly improved rendering has been applied to libultrahand's custom libtesla fork.
    • This now allows for 60fps wallpapers on stock CPU clock speeds.
    • CPU 714 MHz under-clock without wallpapers should now render at 60fps as well.
    • CPU 612 MHz under-clock is not quite at 60fps yet, but on various pages it can get pretty close.
  • A new bug fix for input isolation failing (foreground bug) on changing titles has also been applied to libtesla.
    • This should prevent overlays compiled with libultrahand from losing their input focus on the menu when a game starts up.
  • Various optimizations to drawTable (the table drawing method).
  • Full Changelog: v1.8.8...v1.8.9

Update:

Version 1.8.8

  • New Key Combo implementation for launching any overlay.
    • Located in the overlay settings menu (Y on an overlay).
    • This lets you set any overlay to any key combination (excluding your Ultrahand Key Combo).
    • When setting an already used combo, combos set for overlays with the same combo are removed.
    • Very useful for quickly launching any overlay without invoking the Ultrahand Overlay menu.
  • Default theme table info color has been changed.
    • For changes to apply to the default theme, users must re-apply the default theme in the theme selector on the settings menu.
  • Fixes for slot commands to render the updated footers instead of a checkmark.
  • Long tap on commands now invoke the ScriptOverlay.
    • This makes all options of the menu fully accessible now via touch.
  • Bug fix for new packages and overlays not initially being listed with names until the menu reloads.
  • Slight code optimizations.
  • Full Changelog: v1.8.7...v1.8.8

Version 1.8.7

  • Bug fixes for file_source toggles.
    • There were issues with file_source not being properly resolved with subsequent clicks to file_source toggles.
    • Issues should now be resolved.
  • Sorting related bug fixes for command grouping split5.
  • New method flag for generating empty text files with the name of files/folders within a directory
    • Called flag <input_path_wildcard_pattern> <output_dir>.
    • Might not be particularly useful in most cases, but it is essential for proper management of active contents mods within Mod Alchemist.
  • Tweaks / improvements to dangerous pattern detection.
    • Patterns with multiple * next to each other (i.e. ** or ***, etc) are now considered dangerous and will return a failed command for move and delete.
    • null* and *null are also considered to be dangerous patterns (failed placeholder replacements).
    • Cleanup of failed placeholder replacements to return null instead of empty values when necessary.```
  • ScriptOverlay (minus on a command) related bug fixes.
  • Slight corrections to compare as well as split and slice placeholder methods.
  • Slight code optimizations.
  • Full Changelog: 06f9666...v1.8.7

Version 1.8.6

  • Tables now render live values with placeholder replacements.
    • Values will poll / update once every second.
  • New back command implementation for simulating Back / KEY_B button press.
  • filter commands now accept wildcard patterns for more advanced filtering of source inputs.
  • New command grouping (;grouping=) option split5. (similar to split3 except it works on the folder containing the file/folder).
    • Side-note: All command grouping modes will eventually be renamed to avoid confusion.
  • Title ID placeholders {title_id} now work within source function definitions.
  • pxhtxt2ips conversions now create an empty title ID text file within the folder where the IPS mod is generated.
    • This feature is necessary for proper management of active mods within Mod Alchemist.
    • The title ID is read from the comments within the .pchtxt file (already necessary for pxhtxt2cheat conversions).
    • All IPS mods must be regenerated for this file to be generated. Otherwise IPS mods will not register within the Active tabs on Mod Alchemist.
  • Various menu traversal related bug fixes.
  • Various bug fixes within libultrahand.
  • Full Changelog: v1.8.5...v1.8.6

Update:

Version 1.8.5

Version 1.8.4

  • Various bug fixes to isDangerousCombination (dangerous pattern detection). Certain wildcard patterns were being flagged with the old implementation that should not be.
    • This fixes exeFS Groups's Enable All and Disable All commands in Mod Alchemist.
  • Bug fixes for the ScriptOverlay (minus on a command) where ./ placeholders were not being properly replaced with the package folder for commands.
  • Various logging related bug fixes. (default log is currently set to sdmc:/switch/.packages/log.txt when logging is enabled)
  • Tweaks to decimalToHex implementations in libultra to manually specify byte group size (byte_group_size 2 = XX, byte_group_size 4 = XXXX, byte_group_size 6 = XXXXXX, etc). This should resolve problems related to a decimal value of 0. Default byte_group_size is 2, then will be assumed according to the decimal value if greater.
    • hex-by-custom-decimal-offset <file_path> <custom_pattern> <offset> <decimal_data> [byte_group_size]
    • hex-by-custom-rdecimal-offset <file_path> <custom_pattern> <offset> <rdecimal_data> [byte_group_size]
    • hex-by-decimal <file_path> <decimal_data_to_replace> <decimal_data_replacement> [byte_group_size] [optional_occurrence]
    • hex-by-rdecimal <file_path> <decimal_data_to_replace> <decimal_data_replacement> [byte_group_size] [optional_occurrence]
    • {decimal_to_hex(decimal, byte_group_size)} or {decimal_to_hex(decimal)}
  • Sidenote: For usage of optional_occurrence, byte_group_size must be specified.
  • Full Changelog: v1.8.3...v1.8.4

Update:

  • Pull Request *5 got deleted in libultrahand for some reason, so respect @disabled flag pchtxt functionality has been restored.
  • Fixes to various hex method calls (some got broken with the update). - 06/26/2025 6:04 PM PST
  • Full Changelog: v1.8.4...2f3a5b6

Version 1.8.3

  • New toggle option Dynamic Logo in UI Settings > Miscellaneous for enabling / disabling the dynamic logo effect.
  • Various fixes to libultrahand.
    • Launch combo is read from the tesla.ini if ultrahand.ini does not exist for overlays compiled with libultrahand. (bug fix)
    • Fix for converting pchtxt's with embedded comments as well as a couple other tweaks.
    • Subtle UI corrections / improvements.
  • The memory indicator on the System page now shows the true memory (no longer -8MB) and has custom coloring.
    • New theme colors healthy_ram_text_color, neutral_ram_text_color, and bad_ram_text_color.
      • Healthy is >= 9MB.
      • Neutral is < 9MB, >= 3MB.
      • Bad is < 3MB.
  • Various minor tweaks.
    • The pre-generated package.ini now has symbols on some of the Reboot To commands and the Shutdown command.
    • The ultra.ini theme that is installed when updating has been updated to use white text color.
    • The ultra-blue.ini theme that is installed when updating is now the old ultra.ini theme color.
  • Full Changelog: d448e61...v1.8.3

Version 1.8.2

  • New Page Swap toggle for swapping the overlays and packages page locations.
    • Located in Settings > UI Settings > Miscellaneous > Effects > Page Swap.
    • This feature will draw the packages menu on the left and the overlays menu on the right when enabled.
  • Fixes to libultrahand for preventing screenshots from occurring during capture event initializations.
    • This is particularly useful for isolating actual capture button events from initializations within projects like bitmap-printer / PNGShot.
      • If using bitmap-printer, it is currently recommended to use a version built with pull request *25 or else there will be dragons (unwanted screenshots in the Bitmaps directory generated every time a libultrahand compiled overlays is opened).
      • If using PNGShot, it is currently recommended to use a version built with pull request *5, however builds from latest source code on the repo should now work as well without producing unwanted screenshots.
    • Notice:
      • All projects built with libultrahand will need to be recompiled with latest libultrahand for this fix to apply.
  • Full Changelog: v1.8.1...v1.8.2

Update:

  • Fixes for returning to overlay menu after exiting overlay with Page Swap. - 11/05/2024 3:06 AM PST
  • Touch selection fixes for left / right page with Page Swap. - 11/05/2024 3:33 AM PST
  • Dangerous pattern tweak for wildcard patterns within the Album folder. - 11/05/2024 6:42 PM PST
  • Full Changelog: v1.8.2...d448e61

Version 1.8.1

  • New package header ;show_version= is an optional true/false option for forcing the menu to show the package version instead of the current section title under the package title. (false by default)
  • Various bug fixes.
    • Fix to Software Update command and Memory Expansion to download nx-ovlloader/nx_ovlloader+ v1.0.8 instead of v1.0.9 if AMS version is < 1.8.0.
    • Fix for forwarder footers being updated when they should not be.
    • Fix for table with null value replacements not correctly aligning Not available / UNAVAILABLE_SELECTION text properly.
    • Fix for combo labels not being converted to their icon counterparts upon initialization.
  • Full Changelog: v1.8.0...v1.8.1

Version 1.8.0

  1. Introduction of new true / false command options ;mini= and ;selection_mini= for usage of "mini" ListItems.

    • ;mini=true will enable mini mode for the ListItem. (false by default)
    • ;selection_mini=true will enable mini mode for the dropdown selection ListItems. (for * commands; false by default)
  2. Introduction of new command volume to control the system master volume level, called volume <PERCENTAGE> where <PERCENTAGE> is an integer value from 0 to 150.

    • Users can create a volume level slider similarly to a brightness level slider.

      [Volume Level]
      ;mode=trackbar
      ;min_value=0
      ;max_value=150
      ;units=%
      ;on_every_tick=true
      volume {value}
      
    • Side-note: Max volume scale has been capped at 150%. Will only scale the current active system volume level (not modify it).
  3. Package forwarder commands will now update footer labels when modified from within the forwarder package.

  4. Option footers will now be automatically loaded from the config.ini upon command success instead of returning a checkmark.

  5. Expansion of timestamp placeholder argument to include %f for fractional seconds.

    • Basic timer example:

      [Timer]
      ;mode=option
      ini_file ./config.ini
      try:
      set-ini-val ./config.ini Timer stop {timestamp(%s.%f)}
      set-footer {math({ini_file(Timer,stop)}-{ini_file(Timer,start)})}s
      remove-ini-key ./config.ini Timer start
      try:
      set-ini-val ./config.ini Timer start {timestamp(%s.%f)}
      set-footer ●
      
  6. Various code / compiler optimizations for smaller compilation size.

  7. Various bug fixes and subtle UI corrections.

    • Max value bug fix for regular track-bars.
    • Fixes to math placeholder operation parsing.
    • set-footer for null values will now return a failed command.

Version 1.7.9

  1. Complete rework of the Script Overlay (- / minus on a command).
    • Users can now preview command blocks and execute would be executed commands on the Script Overlay.
    • All command objects are now compatible.
  2. Package header routing has now been implemented.
    • This will make it easier for users to tell where they are within the menu when navigating through packages.
  3. Ultrahand's overlay development libraries have now been moved to libultrahand.
    • Numerous improvements have been made within libultrahand to make recompiling overlays easier.
    • Users can also use these libraries for their own overlay development, or to rebuild other Tesla overlays with Ultrahand features.
      • A number of overlays have been rebuilt as examples. (see Build Examples)
  4. Introduction of new theme colors.
    • default_overlay_color for specifying the default title color for overlays compiled with libultrahand.
    • default_script_color for specifying the default title color for the Script Overlay.
  5. Various fixes to track-bars.
    • Users can now also click A to apply track-bar settings.
    • Users can hold R on top of an unlocked track bar to enable changing pages left / right (using D-Pad).
    • Fixes to rapid left / right clicks.
    • Fixes to text alignments.
    • Color swap for cursor over locked / unlocked trackbars.
    • Various touch related bug fixes.
  6. New table drawing options and various improvements to table rendering.
    • ;wrapping_mode= can be set to nonechar, or word for tables. (default is none)
    • ;wrapping_indent= can be set to true or false for drawing an indent on the wrapped lines.
      • Notice: Wrapping modes will only be applied to the section text on the table.
  7. Software update command now updates nx-ovlloader / nx-ovlloader+ as well as the included themes.
    • nx-ovlloader+ has been updated for HOS 19.0.0 support.
      • Notice: This update is required for proper reading of device FUSE data.
  8. Fixes for drawing the overlays / packages menu for newly added overlays / packages.
  9. Various UI corrections / improvements and code optimizations.
    • Wallpapers now consume half the system memory they used to.
    • Text width computations are now fixed. This should allow Ultrahand to display other fonts and languages more properly.

Update:

  • Bug fix for nx-ovlloader+ / nx-ovlloader latest release URL. (was set to v1.0.8 instead of latest) - 10/19/2024 4:57 AM PST
    • If you already updated to v1.7.9 with the "Software Update" menu, you may want to click update 2x. (first update will pull the fixed ovlmenu, second update will pull the correct loader)
  • Cleanup of package header route labels. - 10/19/2024 6:25 AM PST
  • Full Changelog: v1.7.9...367a0bb

Version 1.7.8

  1. Fix for display underscanning in libtesla.

    • Overlays will need to be rebuilt with this fix for them to also have no issues with display underscan. (see Edizon as an example)
  2. New command expansion for backlight called backlight auto (which takes parameter on / off) for controlling the auto screen brightness feature.

    • backlight auto on will turn on the auto brightness feature.
    • backlight auto off will turn off the auto brightness feature.
    • Example toggle:
    [Auto Brightness]
    ;mode=toggle
    on:
    backlight auto on
    off:
    backlight auto off
    Copy
  3. New placeholder function math to resolve mathematical expressions.

    • Called {math(MATH_EXPRESSION)} where MATH_EXPRESSION is a mathematical expression like 1+1(5+4)/9, etc.
    • Can also be called {math(MATH_EXPRESSION, true)} where true forces the output to always be an integer.
    • Users can use +-/*% as well as brackets ( and ) within their mathematical expressions.
  4. New placeholder function random to generate a random integer.

    • Called {random(START_VALUE,END_VALUE)}.
  5. New placeholder function length to compute the length of a provided string.

    • Called {length(STRING)}.
    • Any white spaces on the left and right of the string will be trimmed.
  6. Placeholder replacement order of operations fix.

    • Users can use nested placeholders called in any sequence now.
  7. Removal of old progress animation UI setting.

    • Mostly unused, and a bit out dated in terms of design preferences. I think it is better for now to remove this feature.
  8. Bug fix for touch with trackbars.

    • Issue was that sliding to the left of the slidable area caused the value to become the max value for the slider.
    • This should no longer be an issue.
  9. Various subtle UI tweaks.

Update:

Version 1.7.7

  • New table scrolling implementation.
    • ;scrollable= is a true/false table parameter for initializing a table with a scrollable property (false by default).
    • ;top_pivot= is a true/false table parameter for making the top of the table have a selectable property (false by default).
    • ;bottom_pivot= is a true/false table parameter for making the bottom of the table have a selectable property (false by default).
    • A variety of modifications were made to properly handle table scrolling (for touch / click both above and below scrollable tables).
  • Tables can now use list_file_source for reading raw text files directly into a table and displaying the text line by line.
    • Called list_file_source <PATH_TO_TEXT_FILE>
    • Text is drawn in the section portion and can utilize ;section_text_color= for alternative coloring.
  • Various UI related tweaks and fixes.
  • Full Changelog: d016b6f...v1.7.7

Update:

Version 1.7.6

  • New symbol placeholder variables.
    • {A}{B}{X}{Y}{L}{R}{ZL}{ZR}: Button symbols for A, B, X, Y, L, R, ZL, and ZR.
    • {DUP}{DDOWN}{DLEFT}{DRIGHT}: Directional pad (D-Pad) buttons symbols.
    • {LS}{RS}: Symbols for the left stick (LS) and right stick (RS) click buttons.
    • {PLUS}{MINUS}: Symbols for the Plus and Minus buttons.
    • {UP_ARROW}{DOWN_ARROW}{LEFT_ARROW}{RIGHT_ARROW}: Arrow symbols pointing up, down, left, and right.
    • {RIGHT_UP_ARROW}{RIGHT_DOWN_ARROW}{LEFT_UP_ARROW}{LEFT_DOWN_ARROW}: Diagonal arrow symbols indicating direction combinations.
    • {POWER}: Power button symbol.
    • {HOME}: Home button symbol.
    • {CAPTURE}: Capture button symbol.
    • {REFRESH_SYMBOL}: Refresh symbol.
    • {WARNING_SYMBOL}: Warning symbol.
    • {INFO_SYMBOL}: Information symbol.
  • New progress symbol throbber implementation. (for commands in progress that do not utilize the progress percentage)
  • Toggle-related bug fixes. (bug was introduced in v1.7.5)
    • This should resolve issues a number of issues with toggles not retaining their state after being clicked.
  • Storage capacity in Device Info has been corrected. (was previously showing free space instead of the amount of space being consumed)
  • Slight UI corrections.
  • Various code optimizations.
  • Full Changelog: 3801fca...v1.7.6

Update:

  • String formatted combo symbols replacements for tables. - 09/10/2024 09:08 PM PST
  • Slight tweak to throbber implementation (slightly more optimized). - 09/10/2024 09:46 PM PST
  • Arrow symbols fix. (some were mis-mapped) - 09/11/2024 09:00 AM PST
  • Full Changelog: v1.7.6...d016b6f

Version 1.7.5

  • Introduction of new Swipe to Open feature (an alternative to Key Combo for opening Ultrahand).
    • This feature is now on by default, but can be toggled off in Settings > UI Settings > Miscellaneous > Effects > Swipe to Open.
    • To trigger a swipe launch, swipe your finger from off the screen inwards ~1.5cm from the side where the menu is being drawn (left by default or right) in < 150ms.
    • Note: It should be relatively hard to trigger by accident even if you play touch sensitive games, but still easy enough to launch any time you try.
  • Introduction of new placeholder variable {title_id} for returning the title ID of the currently running game / application.
    • Will return null if a game / application is not open.
    • This placeholder should allow some more complex packages to be made.
  • Root package folder exit_package.ini will now have command exit only ran when Ultrahand (and any other running overlay) is completely closed.
  • More bug fixes and code optimizations.
    • Clean-up of progress percentage implementation.
    • Reduction of string copying for various string functions. (faster commands, less memory)
  • Full Changelog: 0ef1c3a...v1.7.5

Update:

  • Slight tweak to Swipe to Open. - 09/09/2024 03:19 AM PST
  • lang.zip translations update. - 09/09/2024 05:24 AM PST
  • Bug fix for update languages (menu was triggering unnecessary reload). - 09/09/2024 05:36 AM PST
  • Full Changelog: v1.7.5...3801fca

Version 1.7.4

  • Introduction of exit_package.ini (similar to boot_package.ini but with command name exit instead of boot).
    • Exit Commands are now a toggle-able option for package settings. (on by default)
      • The Boot Package toggle has been renamed to Boot Commands.
    • exit_package.ini can go in /switch/.packages/ or be used in /switch/.packages/<YOUR_PACKAGE_NAME>/.
    • When present in package root path, exit commands will be ran every time you close Ultrahand.
    • When present in an Ultrahand package, exit commands will be ran every time you close the package.
  • Temperature widget calls are now read directly from i2c instead of ts/tc services.
    • This should help prevent any conflicts that may have arrises from usage with ts/tc in prior versions.
  • Refinement of tap and hold functions.
    • Holding on a package/overlay for > 0.3s, <= 1.0s then releasing will trigger the Settings key.
    • Holding on a package/overlay for > 1.0s then releasing will trigger the Star key (favorites key).
  • Introduction of Right-side Mode. (located in Settings > UI Settings > Miscellaneous > Effects)
    • This feature will draw the Ultrahand menu on the right side of the screen instead of the left.
  • Updating Ultrahand will now auto-reload the newly installed version when returning to the main menu after.
  • New table command options ;start_gap= and ;end_gap= (same as ;gap=) for manual aligning of tables.
  • More details have been added to the Commands Documentation.
  • Various UI tweaks / corrections.
  • Various bug fixes and code optimizations / cleanups.
  • Full Changelog: 28e239f...v1.7.4

Update:

Version 1.7.3

  • Long tap (touch > 0.5s) of an overlay / package on the main menu will now open the overlay / package settings menu upon release.
  • Fuse data is now reloaded / re-dumped upon boot.
    • New true / false option disable_reload is now stored in fuse.ini for manual disabling of the fuse data reload function.
  • More corrections and improvements to the wallpaper swapping feature.
  • Interpreter relevant bug fixes (especially with handing large boot_package.ini files).
    • These fixes should make opening OC Toolkit faster as well as fix the Backup and Restore functions when used with wallpapers.
  • Few additional minor bug fixes.
  • Important: Fuse data has new key names, so you may need to reboot once or delete sdmc:/config/ultrahand/fuse.ini after updating from v1.7.2.
  • Full Changelog: 9ff96ba...v1.7.3

Update:

  • Slight table text alignment correction. - 09/05/2024 6:10 AM PST
  • Various services cleanup. - 09/05/2024 9:35 PM PST
    • Temperature calls now only initialize the temperature service when the temperature widgets are enabled.
    • Reboot To bug fix introduced from prior modification. - 09/05/2024 10:40 PM PST
    • Another bug fix (for toggling on widgets). - 09/06/2024 3:30 AM PST
  • Full Changelog: v1.7.3...28e239f

Version 1.7.2

  • Continued expansion of Device Info to now include local IP, eMMC storage, CPU/GPU/SOC Speedo + IDDQ and more.
    • Fuse related data is auto-dumped to sdmc:/config/ultrahand/fuse.ini if fuse.ini is missing.
    • Special thanks to Masagrator.
  • Slight reorganization of Settings Menu.
  • More renderer related tweaks and bug fixes. (faster pixel rendering / more FPS)
  • Package settings menu now includes a toggle for Boot Package and Error Logging.
    • Error logging will now only occur for packages when Error Logging is set to an On state. (off by default)
    • Logs will be generated within the package folder in log.txt.
    • Root package / root boot package logging will only work with command logging.
    • Calls of logging command will always bypass Error Logging and log errors and commands to the designated log.txt.
  • New placeholder variables {cpu_speedo}{cpu_iddq}{gpu_speedo}{gpu_iddq}{soc_speedo} and {soc_iddq}.
  • New progress indicator bar for visualizing download, unzip, and copy percentages.
    • New theme color settings progress_color and progress_alpha.
  • Return of shutdown controllers for manually powering off all connected bluetooth controllers.
    • This feature still does not work with Mission Control. Just a heads up.
  • New language variables.
    • Alternate languages may still need translations done to the updated .json files.
  • Updates to libraries devkitA64 and libnx.
  • Numerous code optimizations for smaller compilation size and slightly faster commands.
  • Various bug fixes.

Update:

  • Pre-release period is over. Things appear to be stable. - (09/03/2024 12:27 PM PST)
  • Number of memory related bug fixes.
  • Corrections to memory ID (got messed up upon initial release).
  • Couple logging related bug fixes.
  • Copy buffer has been increased to 4x and properly linked.
  • Live wallpaper swapping bug fix. - (09/03/2024 3:21 AM PST)
  • More live wallpaper swapping bug fixes. - (09/03/2024 4:15 AM PST)
    • Tighter/stricter timing for swapping wallpapers to prevent more random crashes. - (09/03/2024 6:28 AM PST)
  • Placeholder replacement order of operations bug fix. - (09/03/2024 6:00 PM PST)
  • Full Changelog: v1.7.2...9ff96ba

Version 1.7.1

  • Expanded System page to include various device related information.
    • This table currently includes device firmware, bootloader version, hardware type, memory information, and storage information.
    • Special thanks to ComplexNarrative.
  • New command placeholder variables {ram_vendor}{ram_model}{ams_version}, and {hos_version}.
  • Expansion of refresh command to include wallpaper for the ability to reload wallpaper.rgba,
    • Called refresh wallpaper.
  • Improved scrolling implementation. (proper time-synced speed interpolation)
  • Complete recalibration of character width map.
    • This should result in more proper table alignments when using tables with info sections aligned to the right.
  • Multiple memory related bug fixes.
    • More memory leaks have been fixed, which should result in less heap overloads / crashes.
  • Language replacements are now performed on every ListItem and CategoryHeader upon initialization.
    • This fixed entries like, for example, Reboot To and Shutdown from not being properly translated.
    • Language json's may still need some translations for the new words that have been included.
  • Removal of shutdown controllers for space conservation. (commented out)
    • Did not want to remove this function, but because it only works with Nintendo controllers (and not Mission Control) it does seem somewhat redundant since the sync button on Nintendo controllers effectively turns off the controller as well.
    • If it is highly desirable, I may include this command again in future revisions. But for size stability, I could not get it to fit properly this time around.
  • Numerous code optimizations and bug fixes.
  • Full Changelog: 6961b2e...v1.7.1

Update:

  • Placeholder bug fix for new variables + bug fix for refresh command. - 08/28/2024 4:40 PM PST
  • TrackBar highlight width adjustment / fix. - 08/29/2024 5:05 AM PST
  • Rename hardware model Nx to Icosa and x1 to X1. (correction) - 08/29/2024 5:28 AM PST
  • Full Changelog: v1.7.1...d959363

Version 1.7.0

  • New memory expansion option (located inSettings > System).
    • This function requires internet the first time it is ran, otherwise you can place nx-ovlloader.zip and nx-ovlloader+.zip in sdmc:/config/ultrahand/expansion/. (see here for the .zips)
    • nx-ovlloader.zip (base memory) and nx-ovlloader+.zip (expanded memory) are recompilations of WerWolv's nx-ovlloader 1.0.6/1.0.7.
    • Notice: This feature will utilize an extra 2 MB of system memory for overlays and will require a reboot after being toggled for changes to apply.
  • New wallpapers implementation. (requires memory expansion)
    • Wallpapers must be formatted in .rgba and be exactly 448x720 pixels in resolution.
    • Place .rgba formatted wallpapers into sdmc:/config/ultrahand/wallpapers/, then they will show up in the Wallpaper Manager in the Settings Menu.
    • Sidenote: For full 60 FPS in Ultrahand with wallpapers, overclock CPU >=1581.0 MHz.
  • Numerous optimizations to the libTesla renderer.
    • Multi-thread rendering (requires expanded memory).
    • Reduced big-O complexity.
    • Sidenote: With stock clocks and no wallpaper, users should expect to now get ~60 FPS in menu.
  • Various improvements to tables, track-bars and the track-bar highlight/select cursor.
  • Time-synced controller scrolling implementation, time-synced click saturation effect, and a variety of corrections within libTesla.
  • Mod .pchtxt's now utilize @stop properly when generating IPS mods. (helpful for developers)
  • New Polish language implementation and slight bug fixes to the languages menu.
  • Various bug fixes.
    • Fix for missing pre-generated root package. (was missing in v1.6.9)
    • Downloads bug fix. (was broken fi missing path sdmc:/config/ultrahand/downloads/ in v1.6.9)
  • Compilation libraries have been updated (excluding devkitA64 which has been left at r25.1-1).
  • Full Changelog: v1.6.9...v1.7.0

Update:

Version 1.6.9

  • Dropdown and forwarder commands can now use custom labels/footers by using footer= with a value other than null in the package's config.ini.
  • Custom name and version labels for overlays and packages can now be set in /config/ultrahand/overlays.ini and /config/ultrahand/packages.ini by using options custom_name= and custom_version=.
    • Overlays will only be renamed when displayed on the menu. Direct modification of the overlay is still required for any re-naming of the overlay modules themselves.
    • Packages will now assume names in the following priorities.

i. Priority 0: Custom names and versions written in packages.ini.
ii. Priority 1: Package name stated in the header in the package.ini file for the Ultrahand package.
iii. Priority 2: If none of the above, it will assume the name based upon the Ultrahand package folder.

    • If left empty, custom name and version parameters will be unused.
  • New option for table ;header_indent= for drawing a single header indent on left side of the line.
    • This is meant to be used on one line "header-like" tables.
  • New table text color options for info_text_color and section_text_color.
    • text : Ultrahand theme text color used for default text.
    • header : Ultrahand theme text color used for headers.
    • on_value : Ultrahand theme color for On values / values.
    • off_value : Ultrahand theme color for Off values / version labels.
  • Key combo string representations in packages will now return their symbolic representation.
  • Software update menu will now pull an indicator for the latest Ultrahand Overlay version from the GitHub API.
  • Themes classic.ini and ultra.ini will now be auto-downloaded when opening the Theme manager if they do not exist.
  • Downloads are now stored in a temporary state until completion. After completion, they are then moved into place.
    • This should help with failed downloads and files being removed/replaced after a failed download to an existing filepath.
  • The packages menu commands section now utilizes the same core logic as the packages themselves. (code optimization)
  • Improvements to Reboot To pre-generated command in root package. (/switch/.packages/package.ini)
    • If you are missing this feature, you may need to delete /switch/.packages/package.ini.
  • Various subtle UI positioning corrections and bug fixes.
    • Bug fix for cursor jumping/sliding after using hotkeys (with a d-pad down button) in games.
  • Full Changelog: cc7afad...v1.6.9

Version 1.6.8

  • Introduction of ini_file_source function and expansion of ini_file function.
    • Dropdown selections can now use ini_file_source <PATH_TO_INI> which will return a list of ini section name.
    • Introduction of new placeholder index replacements selections{ini_file(<INDEX>)} / {ini_file_source(*)} for returning section names. (regular usage of ini_file placeholder calls will still function the same way, as well as ini_file_source)
  • Named step-trackbars can now use standard json_sourcejson_file_source, and ini_file_source source functions and placeholder replacements.
  • Expansion of filter to non-path type entries in dropdown selections.
    • Called filter <NAME_OF_ENTRY>.
  • Expansion of exit command to exit directly to the overlays menu or packages menu.
    • Called exit overlays / exit packages.
  • Expansion of refresh command.
    • refresh theme: reload/refresh the current current loaded theme (/config/ultrahand/theme.ini)
    • refresh package: reload/refresh the current working package (redraws menu)
  • Introduction of compare function to compare two text file lists and output a duplicate files list.
    • Called compare <PATH_TO_TXT_1> <PATH_TO_TXT_2> <OUTPUT_TXT_PATH>.
  • New option -copy_filter / -cp_filter for move / mv commands utilizing -src + -dest.
    • Called move -src <SRC_TXT> -dest <DEST_TXT> -copy_filter <FILTER_TXT>.
    • This will run a copy instead of move for files in the filter list text file.
  • Introduction of new placeholder function split for splitting strings.
    • Called {split(<STRING>,<PATTERN>,<INDEX>)}.
    • For example, if the string is Test - String, the pattern is " - ", and the index is 0, the output would be Test.
  • Updates to the pre-generated /switch/.packages/package.ini root package file to include Reboot To (for booting directly into /bootloader/hekate_ipl.ini boot entries.
    • Notice: Users may need to delete /switch/.packages/package.ini for it to generate a new one.
  • Various optimizations to the command interpreter, file manipulation logging, bulk execution implementations, and to move / mv operations.
  • Additional tweaks to the dangerous pattern detection function.
  • Update to Mod Alchemist now at v0.4.7.
    • Bug fixes for toggling content mods with duplicate files (utilizing -copy_filter and compare).
  • Full Changelog: v1.6.7...v1.6.8

Update:

  • Filter bug fix. (affected Reboot To) - 07/22/2024 2:53 PM PST
  • Addition of -filter <FILTER_TXT> command option for movecopy, and delete. - 07/22/2024 8:35 PM PST
    • This allows for filtering of bulk executions (-src / -dest).
  • Full Changelog: v1.6.8...cc7afad

Version 1.6.7

  1. New optional command parameters for copy/cpmove/mv, and delete/del commands for transfer logging and bulk executions.

    a. File manipulation logging: -log_src / -log_dest (outputs a text list for source file and destination file locations)

    • copy <source_file_path> <destination_file_path> -log_src <src_output_txt_file_path> -log_dest <dest_output_txt_file_path>
    • move <source_file_path> <destination_file_path> -log_src <src_output_txt_file_path> -log_dest <dest_output_txt_file_path>
    • delete <source_file_path> -log_src <src_output_txt_file_path>

    b. Bulk execution: -src / -dest (utilizes text lists to perform transfer operations on all entries)

    • copy -src <src_input_txt_file_path> -dest <dest_input_txt_file_path>
    • move -src <src_input_txt_file_path> -dest <dest_input_txt_file_path>
    • delete -src <src_input_txt_file_path>
  2. Improvements and fixes to file_source toggle functions.

  3. Improved handling of null placeholder replacements.

  4. Corrections to isDangerousCombination (the dangerous pattern combination detection function).

    • The following paths are now ultra-protected (unable to delete or move files from):
      • sdmc:/Nintendo/Contents/
      • sdmc:/Nintendo/save/
      • sdmc:/emuMMC/RAW1/Nintendo/Contents/
      • sdmc:/emuMMC/RAW1/Nintendo/save/
    • Slight improvements to dangerous pattern detection.
  5. Updates to Mod Alchemist (now v0.4.6, requires Ultrahand v1.6.7+).

    • Now utilizes the new command options for managing "Contents" mods.

Version 1.6.6

  • Major memory leak has been fixed.
    • This issue was present for a while now, but until Mod Alchemist was never as concerning. Since Mod Alchemist can draw extremely long menus, memory overflow problems became more apparent.
    • Has been resolved and should result in better memory handling across all Ultrahand packages/commands.
  • Slight tweaks to the displayed version label formatting for overlays and packages.
  • Failed interpreter spawning bug fix.
    • Commands would occasionally get locked in an "in-progress" mode when there were memory related problems when trying to spawn the interpreter thread. When memory related problems occur, the command will return a failed command state instead (red "X").
  • Full Changelog: 1c08f0f...v1.6.6

Version 1.6.5

  • Introduction of root-layer boot package implementation for executing commands upon startup.
    • Command [boot] located within /switch/.packages/boot_package.ini (if it exists) will be now be auto-ran once on startup.
    • This feature can be useful for Switch Android users if they wanted to remove the auto-generated Android folders (for instance).
  • Introduction of new command pchtxt2cheat (called pchtxt2cheat /path/to/file.pchtxt).
    • This function will convert pchtxt files and load them into the correct directory for the game's cheat.
    • Important: The game's title ID must be present somewhere within the pchtxt for this function to work.
  • Various bug fixes to pchtxt2ips's IPS generation.
  • Expansion of shutdown command to turn off all bluetooth controllers.
    • This function is called shutdown controllers.
    • Notice: I have heard that this command may fail (return a red X) with MissionControl due to conflicting services, so just a heads up.
  • Source function file_source can now be chained (called one after another) for combining multiple sources into a single list.
  • Source function definitions can now also utilize an ini_file placeholder replacement (with the ini_file specified before the definition).
  • Various bug fixes to file_source toggles.
    • Subsequent clicks to file_source toggles are now handled properly with alternating path replacements according to the last line move {file_source} /destination/path/ (must be present for file_source toggles).
  • Various bug fixes to ini_file placeholder replacements.
    • Failed replacements now return null again instead of Not available (the UNAVAILABLE_SELECTION language variable).
    • When a value is null on a table info section, it is now auto replaced with UNAVAILABLE_SELECTION.
  • Language selections in the Settings Menu now state their full names in their translated language with their abbreviations listed as footers.
    • This included updates to all /config/ultrahand/lang/ files.
  • Additional key combo LS+RS has been added to the combos list.
    • This includes a correction to the LS button icon.
  • Commands mirror_copy and mirror_delete can now accept wildcard patterns.
  • Introduction of new Ultrahand Package Mod Alchemist designed for managing, converting, and installing game mods. (formerly the Mod Master example package)
    • Notice: This package requires Ultrahand Overlay v1.6.5+.
  • Full Changelog: v1.6.4...v1.6.5

Update:

  • Bug fix for the root-layer boot package implementation. - 07/07/2024 7:09 AM PST
    • The issue was the commands appeared to be executing every time the overlay is spawned. Now it is fully isolated to run once on boot.
  • Wildcard pattern bug fix. - 07/07/2024 9:00 PM PST
    • The issue was that in certain cases, folder patterns were still returning files. Should be resolved now.
  • Slight optimizations to transfer memory. - 07/07/2024 9:34 PM PST
    • Freed up a little more memory to prevent some potential memory related bugs.
  • Json replacement failure fall back value bug fix. - 07/08/2024 1:10 AM PST
    • This includes fall back null related bug fixes as well as fixes to table drawing with null values.
  • Transfer memory correction. - 07/09/2024 05:07 AM PST
    • Issues noticed after freeing up a bit too much of the transfer memory, so corrections needed to be made.
  • IPS generation bug fix. - 07/09/2024 06:16 AM PST
    • Offsets were improperly being applied during pchtxt2ips generation. Corrections have been made.
  • Full Changelog: v1.6.5...1c08f0f

Version 1.6.4

  • Optimizations to the ;on_every_tick= implementation for track-bars.
    • Faster on every tick command execution.
  • New table option additions ;section_text_color= and ;info_text_color=.
    • Both section and info text color are optional parameters that can be set to:
      • default (normally default when unspecified)
      • warning (new built-in theme color warning_text_color)
      • or any specified RGB888 hex color string
  • Forwarder package versions and title colors are now inherited from the layer 0 package (package.ini) if left unspecified within the forwarder package.
    • Users no longer need to specify forwarder package versions and colors on every forwarder package ini.
  • Bottom buttons and settings menu touch functions now utilize theme colors click_color and click_alpha for drawing highlights on the touch regions.
  • Various touch interaction bug fixes. (touching "OK" on top of a track-bar, bottom regions for touch adjusted to language text size, etc.)
  • Slight tweaks to pixel blender for drawn strings during hiding.
  • Full Changelog: 0eeef44...v1.6.4

Version 1.6.3

List of changes:

  1. IMPORTANT: Tables in v1.6.3 no longer utilize ;header= pattern and no longer draw headers. Tables also no longer require a $ in the command name.

    • To define a header, use an empty package command (like how they are defined normally).
  2. Introduction of 3 track-bar command mode implementations.
    i. Regular track-bar is called utilizing ;mode=trackbar.

    • ;min_value= sets the minimum integer value
    • ;max_value= sets the maximum integer value
    • ;units= sets the display units
    • ;unlocked= is an optional true/false parameter for unlocked track-bars (locked by default)
      • At least one track-bar must first be clicked (A) for all track-bars to be editable (unless unlocked).
    • ;on_every_tick= is an optional true/false parameter for executing listed commands on every track-bar tick (off by default)
      • By default, commands are executed the moment the interactions with the slider stop.

    ii. Step track-bar is called utilizing ;mode=step_trackbar.

    • ;steps= is an optional integer parameter for directly specifying the number of steps utilized with the step track-bar.

    iii. Named step track-bar is called utilizing ;mode=named_step_trackbar.

    • Requires a list_source definition or a list_file_source definition (for loading the names).
    • Does not use ;min_value=;max_value=;units=, nor ;steps=.

    All track-bars commands can be used with placeholders {value} for returning the value and {index} for returning the index. Both value and index are also stored within the package config.ini file according to the track-bar entry.

  3. Introduction of 5 new placeholder commands.
    i. {slice(<ANY_STRING>,<START_INDEX>,<END_INDEX>)} slices any string according to a start and end index.
    ii. {decimal_to_hex(<DECIMAL>)} converts a decimal string into a hex string.
    iii. {ascii_to_hex(<ASCII>)} converts an ascii string into a hex string.
    iv. {hex_to_rhex(<HEX>)} inverts the endian of a hex string.
    v. {hex_to_decimal(<HEX>)} converts a hex string into a decimal string.

    Bug fix: All variable placeholders no longer require a specified order for operations.

  4. Optimized input handling for smoother / faster menu item traversal.

  5. New theme colors and updates to theme ultra.ini.
    i. header_text_color is the text color for category headers.
    ii. header_separator_color is the separator rectangle color for category headers.
    iii. star_color is the color of the favorites star when unselected.
    iv. selection_star_color is the color of the favorites star when selected.
    v. bottom_button_color is the color of the buttons displayed at the bottom of the window.
    vi. bottom_separator_color is the color of the separator drawn near the bottom of the window.
    vii. bottom_text_color is the color of the text drawn at the bottom of the window next to the buttons.
    viii. trackbar_slider_color is the color of the trackbar slider.
    ix. trackbar_slider_malleable_color is the color of the trackbar slider when it is in a modifiable mode (unlocked / press A).
    x. trackbar_slider_border_color is the color of the thin border around the slider.
    xi. trackbar_full_color is the color of the trackbar for the filled portion.
    x. trackbar_empty_color is the color of the trackbar for the empty portion.
    xi. default_package_color is the default color for package titles (used if none is specified in the package header).

    IMPORTANT: All colors with word seperator are now spelt correctly separator. (grammer typo fix)

  6. Expansion of backlight command.

    • In addition to on and off, backlight can now take an integer percentage value for precise backlight modifications.
    • backlight <PERCENTAGE>
  7. Bug fix for refresh command.

    • refresh should now behave on the level / page it is called upon.
  8. Improved touch scrolling implementation. (cursor no longer is redrawn as touch scrolling is initiated)

  9. Updated libnx from v4.6.0 to v4.7.0.

  10. Page left / right traversal now works with joysticks in addition to the d-pad.

  11. Various bug fixes and command optimizations.

Update:

  • Alignment correction for track-bar sliders and up / down bounce effect for track-bar cursors. (06/14/24 3:45 AM PST)
  • Named step-bar tick indicator color and position correction. (06/14/24 3:53 AM PST)
  • v1.6.3...0eeef44

Version 1.6.2
List of changes:

  • New methods list_file and list_file_source for reading lines from a text file.
    • They are defined list_file <path_to_text_file> / list_file_source <path_to_text_file>.
    • Their behavior is similar to a regular list with placeholders {list_file(<index>)} and {list_file_source(<index>)}.
  • Bug fixes for nested package dropdown selections.
  • Opaque screenshots will now be turned on by default upon initialization.
    • To disable, enter the Miscellaneous menu and click the toggle item.
  • Bug fixes for Tesla combo persistence.
  • Addition of a couple more default Tesla combos as well as fixes for reading alternate user specified combos.
  • Settings menu code revision. (for smaller compilation)
  • Various libtesla alignment corrections.

Update:

  • Widget alignment correction. (05/26/2024 2:44 AM PST)
  • Couple additional key combos (added by request). (05/26/2024 3:32 AM PST)
  • Slight footer alignment correction. (05/26/2024 5:08 AM PST)

Version 1.6.1

  • New command mode ;mode=slot for slot commands.
    • slot commands are similar to default, but with the ability to set footers (similar to an option command).
  • Various placeholder replacement bug fixes.
    • Preservation of null arg with default to Not available upon final replacement.
    • Placeholder replacements now no longer contribute to command success/failure. (determined now solely by commands themselves.)
    • {file_name} replacements no longer include file extensions.
  • Hex edits will now be unprocessed for null arguments and still return successful. (bug fix)
  • New placeholder {timestamp(<strftime>)} for logging time as a variable.
    • strftime are datetime formats like "%Y-%m-%d".
  • Nested layers bug fix (for nested layers beyond layer 1).
  • Package forwarder bug fixes.
  • Slight tweaks to libtesla.

Version 1.6.0

  • More improvements to UI and libtesla.
    • Rending related bug fixes and optimizations.
    • Pixel blender bug fix (for transparency layer blending).
    • Improvements to string/character length computations.
    • Slightly improved cursor and menu layout.
  • New themes values selection_bg_alpha and table_bg_alpha for blended transparency.
    • Updates to default + ultra themes.
  • New effect option Opaque Screenshots (located in Settings > UI Settings > Miscellaneous) for removing overlay transparency from screenshots for Ultrahand.
  • Slight improvements to the unzip command method. (boundary case bug fixes)

Version 1.5.9

  • More improvements and optimizations to the tables implementation.
    • New option ;background= which is a true/false value for drawing the table background.
    • New configurable theme color table_bg_color for configuring table background colors.
  • More refinements and optimizations to libTesla.
    • Slightly faster rendering + cleanup of various implementations.
  • Update to default and ultra themes.
  • Bug fix for Ultrahand starting opened after shutting down within an overlay. (only present in v1.5.8)
  • Bug fix for nested package pages.

Version 1.5.8

  • Numerous across the board optimizations and bug fixes. (Significant memory/speed improvements from v1.5.7.)
    • Improved code structure and memory consumption.
    • Optimized menu item sorting. (for drawing the overlays / packages menu)
    • Improved themes loading implementation.
    • New hiding overlay implementation. (animations + widget throttling correction)
    • set-ini-value now will create folders if necessary when initializing new ini's.
    • Bug fixes for move and delete commands.
    • CURL global initialization. (fix for random crashes using download function)
    • Bug fixes for default key combo initialization. (for fresh setups)
  • New table implementation for drawing information.
    • Table commands must start with $ in the command name and include ;mode=table.
    • Additional options for configuring tables:
      • ;header= is a true/false option for drawing the section header with the table.
      • ;alignment= is a string value leftright, or center for controlling the value column alignment. (default value is right).
      • ;offset= is an integer value for configuring the values column offset with a left / center alignment. (default value is 160)
      • ;spacing= is an integer value for configuring the newline spacings for drawing the table. (default value is 0)
      • ;gap= is an integer value for configuring the post-table gap. (default value is 3)
    • Placeholders are fully functional for drawing tables with parsed values. (json, hex, list, etc.)
    • New theme color options table_section_text_color and table_info_text_color.
  • New unzip + copy progress indicator.
  • Progress animation. (see Settings > UI Settings > Miscellaneous > Effects > Progress Animation)
  • Various subtle UI improvements and corrections.

Version 1.5.7

  • List of changes:
    • New function remove-ini-key for removing key/value pairs from a specified INI section.
      • remove-ini-key <path_to_ini> <desired_section> <desired_key>
    • Unzip / copy progress indicator for background commands in progress. (similar to the download progress indicator)
      • WARNING: cp / copy now behaves more like the Shell / Bash version of cp, where it copies contents from the specified directory directly to the specified directory. it no longer forces a copy of the folder, requiring a potential rename.
    • Buffer s and heap memory are now configurable from /config/ultrahand/config.ini. (see new package Memory Config)
      • This was added for additional configurations during testing.
      • When properly set, functions may gain a speed improvement. But configure with caution.
    • Across the board optimizations and code revisions for faster functions with reduced memory.
      • Numerous revisions and improvements to libultra.
    • Various minor bug fixes.
  • Update:
    • Copy folder related bug fix. (05/10/2024 6:51 AM PST)
    • hex-by-custom-rdecimal-offset bug fix. (05/10/2024 4:59 PM PST)
    • More slight optimizations + bug fixes with hexing. (05/10/2024 11:14 PM PST)

Version 1.5.6

  • List of changes:
    • Package path shortcuts implementation, called ./ for package path within command ini's.
      • i.e. /switch/.packages/<NAME_OF_PACKAGE>/ can now be called as ./
      • When fully utilized, this allows users to rename Ultrahand packages without any path conflicting.
    • Basic toggles called without sourcing can now take a default state.
      • ;mode=toggle?on for defaulting to on when never clicked
      • ;mode=toggle?off for defaulting to off when never clicked (current default functionality for ;mode=toggle)
    • backlight command now requires a on / off state. (bug fix)
      • Here is a simple way to use can the backlight function as a toggle.
      • [Backlight]
      • ;mode=toggle?on
      • on:
      • backlight on
      • off:
      • backlight off
    • Numerous optimizations for a variety of the *_funcs.hpp methods. (faster menu drawing and commands)
    • New scroll bar implementation has been corrected.
    • Returning from a hidden overlay now takes you back to the hidden overlay menu.
    • Reduced memory imprint of ovlmenu.ovl.
    • Creation of libultra (restructuring of project into a custom library).
      • This allows users to potentially build their own Ultrahand Overlays when utilized with my libtesla fork.
      • To use, users simply need to copy the libs folder into their project, then import and use libtesla as they would normally.
  • Update:
    • Hidden package / overlay settings bug fix + setIniFile bug fix. (05/07/2024 5:49 AM PST)
      • If you did use v1.5.6 before this update, you might want to run this command once (just to be safe).
      • [Clear INIs]
      • delete /config/ultrahand/packages.ini
      • delete /config/ultrahand/overlays.ini
      • delete /config/ultrahand/theme.ini
      • delete /config/ultrahand/config.ini
      • delete /config/.packages/config.ini
      • delete /switch/.packages/*/config.ini
    • Path shortcut fix for json_file_source + fix for commands grouped together with a package forwarder. (05/07/2024 4:04 PM PST)
    • Wildcard pattern bug fix + move files/folders bug fix. (05/07/2024 8:55 PM PST)
      • This may have affected this line from executing properly delete /switch/.packages/*/config.ini. You may still want to run this command once if you used v1.5.6 earlier than the first update.
    • More last minute wildcard pattern bug fixes. (05/07/2024 11:19 PM PST)

Version 1.5.5

  • List of changes:
    • Implementation of new package forwarders for extended Ultrahand packages.
      • To use forwarders, use command mode ;mode=forwarder with * in the command name.
      • Forwarder package is defined with package_source <PATH_TO_FORWARDED_INI>.
      • Additional commands listed along side package_source are executed upon click.
    • UI related bug fixes and tweaks.
      • Scroll bar implementation has been modified.
      • Page alignment has been slightly adjusted.
      • Adjustments to spacing of info sections.
    • Touch implementation has been cleaned up a bit more.
      • Fix for unmapped toggle commands (and others).
    • Various minor menu traversing related bug fixes.
  • Update:
    • Nested package implementation bug fix. (05/05/2024)

Version 1.5.4

  • List of changes:
    • Better memory management and utilization of smart pointers. (potential memory leaks resolved hopefully)
    • Interpreter thread now is initialized when command is ran.
    • Root package commands now accept dropdown commands (similar to the current package command implementation).
    • Removal of last_menu setting from /config/ultrahand/config.ini. (no longer needed)
    • Setting key combo from the Settings Menu now also updates /config/tesla/config.ini. (for persistence reasons with libTesla overlays)
    • Menu traversing related bug fixes.
    • Various bug fixes.

Version 1.5.3

  • List of changes:
    • Removal of <sys/stat.h>/<cstdio> and implementation of <fstream> in every function.
    • More improvements to make every function to make them thread safe (json, hex, ini, etc.)
    • Slight restructuring of various sections of code.
    • Reduction of compilation size.
    • Various bug fixes and improvements.

Version 1.5.2

  • List of changes:
    • Numerous menu related memory leak bug fixes.
    • Revision to the background thread implementation.
    • Various improvements to download, json, ini, and path functions.
    • Bug fixes for refresh function as well as exec boot.

Version 1.5.1

  • List of changes:
    • Full touch support is now included.
      • You can now touch the logo/widget section to enter the settings menu.
    • Multi-threading implementation for the interpreter.
      • Package commands (except boot_package for now) now operate on a background thread, allowing users to hide the overlay during long tasks. This includes background downloads.
    • Introduction of new theme coloring variables. (mostly for commands in progress)
    • New ;system= command headers, called ;system=erista or ;system=mariko.
      • These headers will only draw commands onto the menu depending upon what system they are being displayed on.
    • New file path grouping types (will be better documented later with the revision of Mod Master, now planned for v1.5.2).
    • Pressing L jumps back to the first item on the menu.
    • Various bug fixes in download_funcs as well as libTesla.
  • Update:
    • Download progress implementation.
    • Pressing R cancels / kills a command in progress.
    • Many bug fixes.
    • New command exit for exiting Ultrahand directly.
    • Interpreter optimizations and stability bug fixes. (final update 04/25/2024)

Version 1.5.0

  • Introduction of new pchtxt2ips method, called pchtxt2ips <PCHTXT_FILE_PATH> <OUTPUT_FOLDER>.
    • This allows the easy conversion of .pchtxt files into .ips binaries.
  • Download commands now show a downloading indicator (footer) to help users understand when a file is downloading.
  • Failed replacements now return null instead of -1. Failed json replacements now return Not available (UNAVAILABLE_SELECTION variable).
  • Bug fix for starring / favoriting hidden overlays and packages.
  • libnx has been updated.

Version 1.4.9

  • List of changes:
    • Numerous refinements to the UI and libTesla.
      • (cleanup alignments, rounded corner cursor, corrections to footer draw locations, listItem size, etc.)
    • Expansion of the configurable themes.
      • New variables for customizing background color, various text colors, logo color, and dynamic logo color.
      • New themes light.ini and light-v2.ini (light mode themes) as well as updates for the rest.
    • Introduction of DEFAULT_CHAR_WIDTH variable within the language json for more precise mapping of character width in alternate languages.
  • Update:
    • Slight default logo color tweak.

Version 1.4.8

  • List of changes:
    • Improved toggles implementation.
      • Toggles no longer require a source and use the pre-generated config.ini for storing state information.
      • Sidenote: Dropdown selection toggles still may require revisions to their implementation some time down the line.
    • Failed variable replacements now return a value.
      • Currently set to -1 for failed replacements, but may be revised to something more unique in the next update.
    • Various bug fixes as well as code optimizations.
      • This included a footer bug fix (was present in v1.4.6 but missing from v1.4.7).
      • More memory related optimizations across a variety of functions.
    • Updates to OC Toolkit (now at v0.3.6).
      • Sys-clk Settings are now configurable from the Tools menu.
  • Update:
    • Another bug fix for option command selection footers. - 11/25/23 10:06 PM PST
    • libTesla bug fixes (widget drawing related fixes). - 11/26/23 7:00 AM PST

Version 1.4.7

  • Numerous code optimizations and revisions across the board for all methods.
    • These ranged from bug fixes to stricter/cleaner memory management within functions.
    • Especially helpful for downloading command failure related bugs.
  • New commands:
    • backlight toggles on/off the screen
    • hex-by-custom-decimal-offset, hex-by-custom-rdecimal-offset (similar to hex-by-custom-offset but accepts decimal representations of hex for replacement.
    • mariko:, erista: define code blocks that will execute based upon if the device is mariko or erista.
  • Update:
    • Bug fix for mariko: and erista: calls.
    • More memory related optimizations. - 11/19/23 6:21 AM PST
    • Default Tesla combo bug fix. - 11/20/23 2:40 PM PST
    • Overlay sorting bug fix for overlays with _ within overlayNames. - 11/20/23 8:08 PM PST
    • Last minute memory related optimizations. - 11/21/23 3:40 AM PST
    • Rewrite of Studious Pancake's functions for IsErista and IsMariko. (bug fix) - 11/21/23 5:02 PM PST
    • Bug fix for Not available commands in alternate languages. - 11/22/23 6:47 AM PST
    • More libTesla optimizations. (faster menu). - 11/22/23 6:47 AM PST
    • New clear command clear hex_sum_cache for clearing the hexSumCache. - 11/22/23 7:22 AM PST

Version 1.4.6

  • Addition of a toggle-able User Guide (drawn by default on the Packages Menu).
  • Reboot directly to Hekate menu now implemented within the reboot command.
    • Called reboot hekate or reboot HEKATE (similar to reboot ums).
  • Initialization / auto-generation of /config/tesla/config.ini for legacy compatibility.
    • This is primarily for preserving hide/show hot keys within overlays.
    • You are not required to ever touch nor modify /config/tesla/config.ini.
    • Modifications within Ultrahand will automatically carry over.
  • Default Tesla launch combo (L+DDOWN+RS) now works upon first run in addition to Ultrahand's default launch combo (ZL+ZR+DDOWN).
    • The combo that is clicked first will be the combo that Ultrahand assumes.
    • Combo can then be updated from the Settings Menu.
  • Version Labels is now a subcategory within Miscellaneous in addition to Menu Items.
    • Users can show/hide the User Guide from within Miscellaneous.
  • Various bug fixes and implementation modifications.
    • Update:
  • Slight indentation cleanups.

Version 1.4.5

  • New function try: for executing blocks/lines of code with error catching.
    • Commands in the chain are still executed normally without try:.
    • Subsequent try: statements blocks will be executed in order until success is reached throughout an entire block.
    • (See updated examples Easy Installer and OC Toolkit.)
  • New highlight color added to themes for "clicking".
    • This color will only be applied when the selection background is set to not be drawn.
    • When selection background is disabled, clicking backgrounds will also be disabled.
  • If any of the lines within the command that involve sourcing, hexing, downloading, or unzipping fail, it will return a red cross symbol instead of a checkmark.
  • Various bug fixes.

Version 1.4.4

  • Theme manager is now built into the Settings Menu (PLUS / +).
    • Themes will have their own custom name and be placed within /config/ultrahand/themes/<THEME>.ini.
  • Themes have been expanded to include variables selection_text_color, selection_bg_color, disable_selection_bg and disable_colorful_logo.
    • disable_selection_bg is set to true by default. This significantly improves the speed of rendering the UI, resulting in a smoother experience moving around (especially noticeable in the Script Overlay).
  • Addition of several extra Key Combo button combinations on the Settings Menu. (ZL+ZR+PLUS, L+R+PLUS, PLUS+MINUS)
  • Numerous libTesla bug fixes and optimizations.
    • These ranged from improper cropping of certain menu items to correcting draw locations.
    • Additional improvements to text scrolling.
    • Half float data-type implementations.
  • Update: 11/6/23 2:13 AM PST
  • Bug fixes for download functions, json_source functions, and Package Info drawing.
  • Updates, fixes and expansions to OC Toolkit (now v0.2.9).

Version 1.4.3

  • Key combo initialization bug fix (primarily for people not coming from Tesla Menu).
    • This bug made an initialized /config/ultrahand/config.ini file not write hotkeys to the ini without Tesla config files.
    • Default key combo is now ZL+ZR+DDOWN if no key combo is found and will be auto generated with the config.ini.
  • ListItem scrolling is now time synchronized in libTesla.
    • When you under clock your device and see a long command name, this is especially noticeable.
    • Previous behavior would scroll the text from left to right very slowly when clock speeds go down, then faster when they speed up.
    • With time synchronized animation, behavior is standardized, creating an overall smoother experience on the menu. (better resource management)
  • Various (minor) fixes and improvements.
  • Update: 11/02/2023 10:49 PM PST
    • Credits are now an addition in Ultrahand packages, called ;credits= (similar to ;about=).
      • Slight cleanup of scrolling implementation.
    • smoothing effect has been added to scrolling (for cleaner animation)
    • Toggles for "On" and "Off" for Ultrahand Packages now use the active language.

Version 1.4.2

  • Built with latest libnx for official HOS 17.0.0 support.
    • Temperatures are now working on HOS 17.0.0.
  • Addition of UI Settings menu. (within Settings Menu PLUS/+).
    • Widget for clock, temperature, and battery is now easily toggleable.
    • Version Labels has been moved into it's own subgroup.
  • Software Update is now its own subgroup with overlay info for Ultrahand as well as language update options.
    • Ultrahand Overlay information is now displayed in the Software Update section.
  • JSON placeholder replacement functions have been rewritten/improved.
  • Various bug fixes and improvements.

Version 1.4.1

  • Ini parsing and formatting related bug fixes.
    • This fixes issues like the first key in your keyCombo not working in libTesla.
    • Also improves formatting structure when adding in entries into ini files.
  • Expanded themes and UI improvements.
    • Themes (/config/ultrahand/theme.ini) now have options trackbar_color, highlight_color_1, highlight_color_2.
    • The /config/ultrahand/config.ini also lets you control visibility of clock, temperatures, and battery.
    • libTesla dynamic color effects are now synced to time instead of being driven by clock-speed. You will notice that even when under-clocking the color effects are always full speed.
  • RebootToPayload functions via Studious Pancake (AMS 1.6.0+).
    • The reboot command has now been expanded with payload / Hekate functionality. This was done in preparation for HOS 17.0.0.
      • reboot ini <ENTRY_NAME> or reboot ini <ENTRY_INDEX>
      • reboot boot <ENTRY_NAME> or reboot boot <ENTRY_INDEX>
      • reboot /path/to/payload.bin
      • reboot UMS
      • reboot
    • sidenote: Reboot by id is coming soon. All of these functions have been coded to work on both Mariko and Erista.
  • Software updates for Ultrahand can now be performed from the Settings menu (PLUS / +).
  • Launch arguments for overlays are now passable from /config/ultrahand/overlays.ini.
    • You can press Y on an overlay to enter the Overlay settings menu, then enable/disable launch arguments.
    • Launch arguments must be set by hand within /config/ultrahand/overlays.ini otherwise are initialized empty.
  • Temperature now include both SOC and PCB temperature, but 17.0.0 implementation for temperature is currently still pending on libnx. (soon).
    • Backend for implementation has been written and is currently commented out.
  • Various updates to languages files (still a WIP).

Version 1.4.0

  • Improvements to UI (battery, configurable clock, sensor, drawspace, etc.)
  • International languages implementation.
    • Language files go in /config/ultrahand/lang/*.json
    • NOTE: Help is still needed to get some of these translations down. Language files are subjected to updates, but feel free to modify them yourself for your language.
  • Expanded settings menu.
    • key combo is now configurable from the Settings menu (PLUS)
  • Start of themes implementation (text_color, clock_color, battery_color).
    • Themes are stored in /config/ultrahand/theme.ini.
  • Improved overlay sorting. (done by Overlay name instead of Overlay file name).
  • Multiple bug fixes.
  • Faster command interpreter. (update 10/20/23 9:23 PM PST)
    • After inspection, this actually resulted a in ~0.4MB file size reduction.
  • Sidenote: HOS 17.0.0 messed up temperature readings with libnx. This should be easily fixed once libnx is updated for 17.0.0.

Version 1.3.9

  • Star-ing overlays is now done by pressing X instead of PLUS.
  • Pressing PLUS on main menu now invokes the Ultrahand Settings menu (a page to control some settings in the config.ini).
  • Pressing Y on top of an overlay / package pulls up the Menu settings for that particular item.
  • New hidden overlays/packages page for storing hidden overlays/packages (will be drawn at the bottom when populated).
  • New option clean_version_labels in /config/ultrahand/config.ini (can be set on Ultrahand Settings menu).
    • Clean versions restricts all displayed version labels into a X.X.X format.
  • Various bug fixes.

Version 1.3.8

  • Introduction of Pages: Now, you can define pages using empty commands [@PAGE1] and [@PAGE2], where PAGE1 and PAGE2 are labels for the page. Note that only two of these empty @-commands can be referenced in a package. You can navigate between PAGE1 and PAGE2 using the left and right buttons on the DPAD.
  • New Command remove-ini-section: I've added a new command called remove-ini-section <ini_file_path> <section_name>. This command allows you to quickly remove a section from an INI file.
  • Package Info Section: You can now include a Package Info section within your package.ini file by using [Package Info] as an empty command. If there's no reference to [Package Info], the package info section will not be displayed.
  • Package title colors now accept custom RGB888 hex representations (i.e. #FFFFFF for white).
  • NOTE: RGB888 hex color format will be downscaled to RGB444 for libTesla compatibility.
    • Bug Fixes: Addressed various bug fixes, including a memory leak issue on the main menu.
  • New updates to OC Toolkit.

Version 1.3.7

  • Hex offset caching has been implemented for faster hexing read/write calls.
  • Various additional improvements to hex functions.
  • New true/false property hide for packages.ini and overlays.ini to toggle visiblity.
  • New command logging to enable/disable command logging (now off by default).
  • New command clear for deleting Ultrahand relavent files (so far only clear log works).
  • New ;color= header definition in package.ini for choosing colors for your package title.
    • Colors: red, green(default), blue, yellow, orange, purple, pink, white, ultra(wip)

Version 1.3.6

  • Added the ability to define functions in boot_package.ini other than boot.
  • Enabled referencing and execution of global functions defined in boot_package.ini from your script using exec <COMMAND>.
  • Introduced a new refresh command to redraw the current menu page.
  • Various bug fixes as well as improvements to OC Toolkit.
  • Menu related bug fix (memory leak). Opening and closing selection overlay with dictionaries was not unloading the dictionary. Issue has been resolved.
  • If a command has the footer "Not available" it will no longer function.

Version 1.3.5

  • Introduction of boot_package.ini (commands that will run when your package is opened). This file is placed in the same folder as your package.ini file.
  • Introduction of new hex_file advanced function for reading/parsing hex data from files.
  • Introduction of command tags, i.e. [COMMAND?Tag]. Tags are not printed, but are helpful for making similar named commands unique (which is essential).
  • New example package OC Toolkit for advanced modifications of kip files. (WIP)
  • Update:
  • Ive added a new function ini_file to read data from ini files.
    • ini_file <ini_file_path> is how it is defined.
    • {ini_file(section, key)} is how it will be called.

Version 1.3.4

  • List of changes:
    • Empty commands now define grouping sections.
    • Empty commands with a * at the start of them define group commands. Commands defined after will show up in a dropdown menu.
    • To end the identification of a group command, a group section must be defined.
    • New command set-footer.
    • Various bug fixes.
  • Basic example:
[Section 1]
[*Test]
;mode=option
list_source '(test1, test2, test3)'
set-footer {list_source(*)}

[*Timings]
;mode=option
list_source '(1, 2, 3, 4, 5, 6)'
set-footer {list_source(*)}

[*Commands Group]
[*Test2]
json_source '[{"key_1":"entry 1", "key_2":"entry 2", "key_3":"entry 3"}, {"key_1":"entry a", "key_2":"entry b", "key_3":"entry c"}]' key_1

[Section 1]
[*Test3]
;mode=option
list_source '(test4, test5, test6)'
set-footer {list_source(*)}
  • update:
    • Bug fix for selected footer after entering command groups. - 10/3/2023 4:48 PM

Version 1.3.3

  • List of changes:
    • Fixed dropdown toggles. (Setup double click prevention to ensure commands are properly parsed.)
    • New option command mode for selections. (useful for developing configurators scripts.)
    • New auto-generated config.ini for each package.ini within the package folder. Settings will be parsed from package.ini if provided as a comment.
      • mode: this can be set to default, option, or toggle.
      • grouping: this can be set to default or split (split splits commands into groups based upon subfolders)
      • footer: null by default. When used with option mode, it can be dynamically read on the menu.
    • DONE is now replaced by a checkmark.
  • Basic Option Example:
    • Package: /switch/.packages/Test/package.ini

Version 1.3.2

  • Bug fixes with interpreter allocating too much memory.
    • This affected unzip and download in certain test cases, but is no longer an issue.
    • Easy Installer and other download packages should now work properly again.
  • UPDATE: (stable)
    • Root menu commands (/switch/.packages/package.ini) now behave the same way as package menu commands.
    • Config menu has now been fixed. (09/26/23 11:21 PM)
    • Multiple menu related bug fixes. (09/27/23 2:25 AM)

Version 1.3.1

  • json_data (the non source version) is now json_file.
  • json is now a new non-source version of json_source for storing data within the package.ini.
  • list_source has been fixed. Items defined in list can be called by {list_source(<INDEX>)}.
  • list is now a new non-source version of list_source. Items defined in list can be called by {list(<INDEX>)}.
  • Re-built interpreter and SelectionMenu/SubMenu.
  • Introduction of selection modes ;mode=.
  • Drop of _on and _off functions.
    • Sections can be defined using ;mode=toggle and on: followed by the on commands and off: followed by the off commands.

Version 1.3.0

  • config.ini is now package.ini for Ultrahand packages.
  • source is now file_source
  • source_on is now file_source_on
  • source_off is now file_source_off
  • json_source is now json_file_source
  • New function json_source for defining JSONs directly within the package.ini file.
    • Example: json_source '[{"key1":"value1"}, {"key1":"value2"}]' key1
  • Menu item sorting are now implemented differently.
    • New files /config/ultrahand/overlays.ini and /config/ultrahand/packages.ini for manually specifying priority and storing information.
    • Priority value is a number from 0 to 9999

Version 1.2.1

  • hide_overlay_versions and hide_package_versions are now true or false options within /config/ultrahand/config.ini.
  • hex-by-custom-offset is now a new command for using custom string pattern offsets for more advanced hex-editing scenarios.
  • New wildcard source command type list_source implementation for specifying list variables within package inis.
  • Several bug fixes.

Version 1.2.0

  • Commands now state "DONE" after pressed.
  • Bug fix for "set-ini-value". Issue was that for a new entry, it would inject the new entry into every section.
  • Simple fix, but since its bound to affect someone's project eventually, I'm updating the release.

Version 1.1.9

  • Bug Fixes: Static menu variable and rootFrame handling.
  • These bug fixes potentially resolve the menu handling issue that occasionally can occur for some testers.
  • Overall it should be more stable with static implementations of the particular variables I modified.

Version 1.1.8

  • Introduction of footers for commands.
  • Testing potential bug fix for handling menu input.
  • This issue is not very common, but occasionally the menu can get locked into a weird orientation, preventing you from moving to packages or overlays at times. Its hard to figure out the exact trigger, but I've attempted to address the issue here. Pre-release will be dropped after more testing. If you see this bug on this version, do let me know in issues.

Version 1.1.7

  • Download and unzip files implementation has been added.
  • Command to download:
    • download <FILE_URL> <DESTINATION_FILE_OR_FOLDER>
  • Command to unzip:
    • unzip <SOURCE_FILE> <DESTINATION_FOLDER>
  • CURL has made it a bit beefier as you can tell, but the potential benefits are pretty great for having these commands handy. Lots of new packages can be made for updating and installing software.
  • update: slight bug fix for handling more URLs (07/07/2023)
  • update: bug fix for unzip and createDirectories (07/08/2023)

Version 1.1.6

  • Move commands now create directory if the directory does not exist.
  • Bug fix for exiting main menu that can sometimes occur when exiting (locked users in the menu until an item is selected).
  • Multiple filters are now implemented. filter, filter_on, filter_off calls will store your filter path into a list.

Version 1.1.5

  • Bug fix for those who specify their default menu mode instead of resorting to last_menu.
  • Several cosmetic improvements.
  • Easier transition from Tesla Menu by copying combo from sdmc:/config/tesla/config.ini if it exists and the combo is not within sdmc:/config/ultrahand/config.ini.
* update: more cosmetic improvements after initial release (only difference)

Version 1.1.4

  • Ultrahand is now a replacement for ovlmenu.ovl.
  • Ultrahand packages are now relocated to sdmc:/switch/.packages/.
  • Ultrahand specific settings are now stored in sdmc:/config/ultrahand/config.ini.
  • Left on the menu takes you to your overlays.
  • Right on the menu takes you to your packages and commands.
  • More improvements to come.

Version 1.1.3

  • Introduction of more selection command features.
  • Multi-wildcard statements.
  • New functions 'mirror_copy' and 'mirror_delete' for implementing mirror functions on directory contents.
  • All copy functions now create destination directories.

Version 1.1.2

  • Selection (wild card commands) toggles are now implemented.
  • Simple one line filter added. (see updated examples).

Version 1.1.1

  • Introduction of wildcard commands (new command-type).

Version 1.10.0

  • Pre-release: Testing new hex editing functions.
  • New commands "hex-by-offset", "hex-by-swap", "hex-by-decimal", "hex-by-rdecimal"
  • Still needs more testing to confirm full functionality, but since it appears to be compiling properly ill leave it here for now for testing.

Version 1.0.9

  • Implemented safeguards so you don't delete or move your entire SD card or essential files. Still have more features to implement for this version, it should be better than using 1.0.8 but since I made changes that need review I am still calling it pre-release for now.
  • Update: More advanced pattern searching. Multiple wildcards. 2:42 AM PST 06/08/2023
  • Update: Updated safeguards for more advanced patterns. 3:16 AM PST 06/08/2023

Version 1.0.8

  • Added new feature "new-ini-entry" and restored original example config.ini generated if no config is present.

Version 1.0.7

  • Improvements to menu. Version handling for user packages.

Version 1.6

  • More improvements, "edit-ini" commands have now been labeled "set-ini". You can also press X on an individual command and see and execute individual lines within.
    • Update: Faster copying. - 05/31/23 4:19PM PST
    • Update: Even faster copying. - 05/31/23 4:35PM PST
    • Update: Slight size reduction. - 06/01/23 6:34PM PST

Version 1.0.5

  • Too many bug fixes with statement logic.
  • Ability to execute individual commands from a package have been added (press X on package).
  • More slight tweaks and capabilities packed into the functions.
    • Update: Fixed editINI adding new lines by mistake. - 05/29/23 05:16 PM PST
    • Update: Fixed copy directory not copying subdirectories. - 05/29/23 05:59 PM PST
    • Update: Edit ini key or value now. - 05/29/23 09:40 PM PST

Version 1.0.4

  • Slight tweaks to libtesla. This is pre-release, but it is still commits ahead of 1.0.3 and stable.
    • Update: Got new features as well as pattern searching implemented. New documentation coming soon. 05/29/23 9:11 AM PST

Version 1.0.3

  • Improvements to code structure, menu layout, new commands (reset, shutdown), etc.
    • Update: Copy function now can rename to file as well as copy to directory. This makes it simulate "cp" a bit better. - 05/27/23 7:37 AM PST
    • Update: Fixed edit-ini bugs. - 05/27/23 2:21 PM PST
    • Update: Fixed even more edit-ini bugs. Should be working. - 05/27/23 3:27 PM PST
    • Update: Fixed one last edit-ini bug for handling command. Testing safer reboot method. - 05/27/23 9:40 PM PST

Version 1.0.2

  • Folders have now been added.
  • Future plans: cleaner UI, separation for "Packages" and "Commands" sections with titles.
    • Update: Fixed a bug that occurred with linking folders. - 05/28/23 05:59 PM

Version 1.0.1

  • New feature 'parse-ini'.
  • Update: Delete directory bug fix. - 05/28/23 8:11 AM PST

Version 1.0

  • First Release.
    • Update: Improved structure and examples for testing. - 05/25/23 5:52 PM PST

External links

Advertising: