App Details
WARNING: This will overwrite Tesla Menu if already installed. Includes ppkantorski's nx-ovlloader fork.
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 files and directories on your SD card.
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.
Support the dev on Ko-fi: https://ko-fi.com/ppkantorski
Screenshots
Changelog
v2.2.5
Stability Update
List of changes:
1. Critical bug fix causing crashes on the packages / package menu when not on Wi-Fi.
2. unpackDeviceInfo sequencing correction.
3. Added curl_global_cleanup to exitServices (to cleanup curl global resources on app exit).
4. Buffer initialization correction for download / unzip functions.
v2.2.4
List of changes:
1. OverlayFrame titles now auto-scroll when too long or covered by the widget (just like subtitles).
2. Copy, move, and delete wildcard commands now support -filter (path to a text file containing a list of files / folders to be filtered from pattern resolution).
3. -filter now properly resolves ./ and ../ paths and no longer require hardcoded sdmc:/ in the file / folder paths.
4. Fixed script overlay for track bars.
v2.2.3
List of changes:
1. Improvements to the List class in libultrahand.
- No more pointer caching (less memory usage, faster openings / list to list transitions, more consistent behavior).
- Proper "wall" handling for initial clicks that select the first / last ListItems (no instant wrap around until subsequent clicks).
- Theme variable trackbar_color is now scrollbar_color + new color scrollbar_wall_color (triggered when tapping ends of the list).
- Updates to ultra.ini and ultra-blue.ini themes (as well as default).
- Themes will need to be re-applied for changes to be applied.
- Fixes to the "immediate focus" implementation introduced in v2.2.2.
2. New package command header ;footer= and ;footer_highlight=.
- ;footer= allows users to pre-define a default footer value for a package command (to be used, stored, and set when no footer exists in the config.ini for the package.
- ;footer_highlight= is a true / false parameter that will draw the footer with the highlight color when on.
- footer_highlight is also a new key to be used in the config.ini for manually configuring the footer highlight for the command.
3. Hold mode ;mode=hold is no longer a command mode and can now be set for default, option, and slot commands via ;hold=true.
- The default generated package.ini now uses this command header.
- Users may want to delete their /switch/.packages/package.ini and have Ultrahand re-generate it if they are still using the old package.ini.
- Side-note:- If using ;mode=hold, users will need to update their commands to leverage ;hold=true instead.
4. Fixes to the placeholder parsing implementation.
- Proper handling and resolution sequencing of unresolved placeholders.
- Placeholder methods before the _source definitions are now carried over to the rest of the commands (rather than reset).
5. Touch improvements to track-bars.
6. Optimizations to command menu drawings.
7. Various corrections, bug fixes, and improvements.
v2.2.2
Stability Update
List of changes:
1. Proper fix for default combo initializations (on fresh installs).
- Launch combo is first checked and loaded from /config/tesla/config.ini.
- If the Tesla combo does not exist, and no combo in /config/ultrahand/config.ini exists, users can use the default Tesla combo (L+DDOWN+RS) or the default Ultrahand combo (ZL+ZR+DDOWN) for initializing their default combo.
- Once initialized, Ultrahand will assume the combo the user used until changed in the Settings menu.
2. Bug fix for returning from an overlay while touch is still in progress (multiple cursors).
- If foreground is in focus and a button is clicked while touch is in progress, input will now be prevented (with button click feedback).
3. Bug fix for returning to the overlay menu after using an overlay launch combo and exiting the overlay (KEY_B click).
- Before the jumpToItem implementation would kick in on the next launch of Ultrahand after closing the overlay, causing the cursor to shift unnecessarily to the last open overlay title on the overlay menu.
4. Bug fix for widget settings not auto-loading on first fresh install launch.
v2.2.1
List of changes:
1. New command mode ;mode=hold for triggering a "hold A to execute" type response (similar to default).
- The pre-generated package.ini now utilizes ;mode=hold for its shutdown command.
2. New commands set-ini-val-matching-key, remove-ini-key-matching-key, and path_exists.
- set-ini-val-matching-key will set an ini value to all ini sections that include the matching pattern key.
- Called set-ini-val-matching-key .
- remove-ini-key-matching-key will remove all key value pairs from an ini from sections that include a matching pattern key.
- Called remove-ini-key-matching-key .
- path_exists will return command success or failure based upon if the path provided exists or not.
- Called path_exists .
- Can be quite useful when chained within try: blocks.
3. Placeholder replacement improvements for chaining with a source command.
- In addition to ini_file (like before), users can now use the full catalogue of placeholders and chain them with their _source method definition.
- Various improvements to placeholder replacements.
4. Slight refinements to list_file_source to include newlines when chained with tables.
- Slight formatting improvements for tables on the ScriptOverlay.
5. New package Memory Kit: https://github.com/ppkantorski/Memory-Kit (latest revision of the old Memory Config: https://github.com/ppkantorski/Ultrahand-Overlay/tree/main/examples/Memory%20Config package example; Ultrahand v2.2.1+ only).
- This package includes the mesosphere.bin memory hack: https://github.com/Craftyawesome/Atmosphere/tree/memory-hack (1.85 MB + stripped).
- Keep in mind that the stripped version will break the web browser, which will cause crashes on certain games and apps that utilize the web browser.
- The 1.85 MB version however should not have any issues.
- Regular users should not- touch the Configure Commands tab as it is strictly available for development and testing of memory configurations for the libultrahand.
6. Improvement to haptics (stronger and more consistent feedback).
7. Bug fix for combos on forced AMS v1.10+ support overlays.
- Combos were not working properly for overlays with forced support.
- Forced AMS v1.10+ support is not recommended, but can still be used with manual patching overlay binaries.
- It is highly recommended that all overlays get recompiled for proper AMS v1.10+ support.
8. New unsupported warning notification displayed when trying to launch an unsupported overlay.
9. All pages now get drawn with the cursor automatically set (no cursor flickering into view).
10. Bug fix for sluggish table scrolling after triggering a jump / wrap to bottom.
11. Bug fix for exit sound + haptics kicking in when combo launching an overlay during a notification.
12. Bug fix for degrees symbol on Chinese fonts.
13. Slight optimizations to stbtt_FindGlyphIndex_impl.
14. Various additional tweaks, bug fixes and corrections.
v2.2.0
List of changes:
1. New overlay heap size configurations with automatic reloads (in the System Settings menu).
- Default heap size for HOS 21+ is now set to 4MB (displayed as nx-ovlloader-).
- Although rare, some overlays may not work properly on 4MB (without a fix implemented).
- To fix some of these overlays, they should be using socketInitialize instead of socketInitializeDefault (if utilized).
- Overlays should also not be utilizing a full 1280x720p framebuffer when on 4MB.
- Default heap size for HOS 20 is now set to 6MB (displayed as nx-ovlloader).
- Default heap size for HOS 19 and lower is now set to 8MB (displayed as nx-ovlloader+).
- Users can also add a 4th higher option by adding to /config/ultrahand/config.ini a new section memory with key custom_overlay_memory_MB and an integer value (2MB intervals greater than 8MB only).
- After adding that entry, a 4th memory option will appear (displayed as nx-ovlloaderĂ—).
- If Ultrahand deems there is not enough memory (at least 5.3 MB free after potential changes), then changes will not be applied.
2. Users can now completely exit the overlay system from the System Settings menu.
- This will recover all memory consumed by nx-ovlloader / Ultrahand Overlay.
- Users can then use Ultrahand-Reload.nro from homebrew launcher (now bundled with nx-ovlloader) to restart / reset nx-ovlloader without rebooting.
3. Commands move, copy, delete, and dot-clean memory optimizations.
- Larger deletes, moves, and copies than v2.1.8 are now possible (even on a 4MB heap).
- dot-clean now also removes all .DS_Store files for the specified directory (and subdirectories).
4. Now bundled with nx-ovlloader v2.0.0: https://github.com/ppkantorski/nx-ovlloader/releases/tag/v2.0.0 (which includes the new helper module nx-ovlreloader: https://github.com/ppkantorski/nx-ovlreloader).
- nx-ovlloader+ compilation has been discontinued (no longer necessary).
- The nx-ovloader+ zip on v2.0.0 is the same as nx-ovlloader.
- It is provided for now during a grace period to ensure users can easily update from the system settings menu.
- In the future after nx-ovlloader v2.0.0, if not on Ultrahand Overlay v2.2.0+, update methods might- be broken.
- Side-note:- Users no longer need the /config/ultrahand/expansion/ folder and can safely delete it after updating.
5. Software updates now have the option to download a temporary update.ini command file (if provided on release) for micro managing the installation / update process.
- Software updates instructions have also been slightly reworked for easier management.
6. Command exec now can be called with any package ini file (in addition to boot_package.ini like before).
- Users can call this with exec [ULTRAHAND_INI_FILE_PATH].
- ULTRAHAND_INI_FILE_PATH in this case is an optional parameter, the path to the package ini file containing the command entry.
- When not provided, it will assume commands from boot_package.ini (just like before).
7. Slight improvements to notifications (new tsl::notification->showNow implementation).
- This allows instant display of the notification without waiting for the last notification to transition.
- Packages can also use showNow via notify-now or notification-now (called the same way as notify / notification).
8. Sound effects now work on 6MB+ overlay heap sizes (disabled on 4MB).
9. Improvements to TrackBar touch.
10. Improvements to touch haptics (now to trigger on touch).
11. Improvements rounded rects and circles (slightly more refined AA).
12. Changes to socket initialization for improved memory usage (enables downloads on 4MB and improved memory).
13. Bug fix for haptics becoming disabled after sleep.
14. Bug fix for ;display_title= in packages interfering with proper returns to the last selected list item on the menu (as seen with returning from Alchemist).
15. Various tweaks, optimizations, bug fixes, and corrections.