Skip to content

Releases: termux/termux-app

v0.118.0

07 Jan 22:35
Compare
Choose a tag to compare

[v0.118.0] - 2022-01-07 22.35

Changelog

Added

  • Allow users to directly open URL links in terminal transcript when clicked or tapped. The user can add terminal-onclick-url-open=true entry to termux.properties file to enable opening of URL links in terminal transcript when clicked or tapped. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Implemented by @trygveaa in #2146. (af16e79b, 1a5a66d0)

  • Allow users to disable auto capitalization of extra keys text. The user can add extra-keys-text-all-caps=false entry to termux.properties file to disable auto capitalization of extra keys text for both normal and popup buttons. The default value is true. Running termux-reload-settings command will also update the behaviour instantaneously if changed. (5c72c3ca)

  • Allow users to adjust terminal horizontal and vertical margin. The terminal-margin-horizontal key can be used to adjust the terminal left/right margin and the terminal-margin-vertical can be used to adjust the terminal top/bottom margin. This will also affect drawer. The user can set an integer value between 0 and 100 as dp units. The default value is still 3 for horizontal and 0 for vertical margin. So adding an entry like terminal-margin-horizontal=10 to termux.properties file will allow users to set a horizontal margin of 10dp. After updating the value, either restart termux or run termux-reload-settings for changes to take effect.

    This was added since for some users text on edges would not be shown on the screen or they had screen protectors/cases that covered screen edges (Of course, that would require fixing every single app and android system UI itself, so kinda stupid to use). Moreover, horizontal margin of like 10dp may be helpful with peek-and-slide for people having gesture navigation enabled on android 10+ since they won't be to touch at exactly the edge of the screen to trigger peek (#1325).
    Closes #2210

    (63504f0a)

  • Allow users to disable hardware keyboard shortcuts. The user can add disable-hardware-keyboard-shortcuts=true entry to termux.properties file to disable hardware keyboard shortcuts. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Note that for ctrl+alt+p to work, you need to unset shortcut.rename-session = ctrl + n. https://wiki.termux.com/wiki/Terminal_Settings. Closes #1825. (829cc398, fcc0d362)

  • Request android.permission.PACKAGE_USAGE_STATS permission. The permission can be granted from Android Settings -> System -> Usage Access. Closes #2269. (865f29d4)

  • Add TERMUX_API_VERSION to termux shell environment. This can be used to check if Termux:API is installed and enabled for cases where users try to run termux-api commands and it hangs. (0cf3cef7)

  • Add TERMUX_IS_DEBUGGABLE_BUILD, TERMUX_APK_RELEASE and TERMUX_APP_PID to termux shell environment.

    The TERMUX_IS_DEBUGGABLE_BUILD env variable will be set to 1 if termux APK is a debuggable APK and 0 otherwise. Note that the dev_keystore.jks shipped with termux app and plugin source code can also be used to create a release APK even though its mainly used for Github Debug Builds, in which case value will be 0.

    The TERMUX_APK_RELEASE will be set to GITHUB, F_DROID or GOOGLE_PLAY_STORE depending on release type. It will be set to UNKNOWN if signed with a custom key.

    The TERMUX_APP_PID will be set to the process of the main app process of the termux app package (com.termux), assuming its running when shell is started, like for termux-float. This variable is included since pidof com.termux does not return anything for release builds. It does work for debug builds and over adb/root. However, you still won't be able to get additional process info with ps, like that of threads, even with the pid and will need to use adb/root. However, kill $TERMUX_APP_PID will work from termux-app and termux-float.

    These variables can be used by termux devs and users for custom logic in future depending on release type.

    (da07826a, 7b10a35f)

  • Add support for ~/.termux/termux.float.properties. (bc779d2f)

  • ! Convert extra-keys to agnosticism by moving them to termux-shared library so that they can be imported and used by other apps for their own needs as long as they comply with GPLv3 license. Almost everything is customizable and has no dependency on termux specific logic. (2a74d43c)

  • Add support for SHIFT or SHFT extra-keys. Closes #1038. (2a74d43c, 91172409)

  • Add support for PASTE extra-keys for pasting text from clipboard. (7d76e8b1)

  • Add support to long hold on CTRL, ALT, SHIFT and FN to lock those control keys. They will not be released when you press another key and will only be released by pressing the respective control key again. Closes #2049, Closes #1861. 2a74d43c)

  • Add support for com.termux.execute.background_custom_log_level and com.termux.RUN_COMMAND_BACKGROUND_CUSTOM_LOG_LEVEL. Check the commit and https://github.com/termux/termux-tasker#custom-log-level for details. (60f37bde, e889d84d, 1259a212, 197979fd)

  • Add warning that hax support is not provided and asking questions will likely result in issue automatically closed or even ban. (6409019a)

  • Add warning reports with (partial) screenshots of error reports instead of text will likely be automatically closed/deleted. (7047bbef)

  • Add termux-api log level settings in termux app settings. (582e5693)

  • Add termux-float log level settings in termux app settings. (d55c1001)

  • Add termux-widget log level settings in termux app settings. (4953b126)

  • Add isTermuxAppInstalled() and isTermuxAppAccessible() functions to TermuxUtils. The TermuxUtils.isTermuxAppInstalled() function can be used by external apps to check if termux app is installed and enabled. The TermuxUtils.isTermuxAppAccessible() function can be used by termux plugin apps to check if termux app is installed, enabled, accessible as per sharedUserId and TERMUX_PREFIX_DIR_PATH is accessible and has read, write and execute permission. (e5c05489)

  • Bootstrap error and report issue (optionally) will contain primary termux files stat info and logcat dump

    Users have been reporting issues with bootstrap installation (and login file access) failure on email and github but "most" have been useless since they don't follow instructions to debug the issue and report back. The real reason may depend on device. One could be that /data/data/com.termux does not exist on the device in which case termux won't work on the device, at least without root. Other reasons could be wrong ownership or selinux context, selinux denials or attempting to install on external sd card (as reported by a user) where likely files dir was different from /data/data/com.termux/files.

    This commit will save dev and possibly user time and automatically generate the required info to debug such issues. The ls command will generate stat info for all the major termux directories and files so that existence or ownership issues can be shown. It will also run logcat command to take a dump (last 3000 lines) in case other failures are being logged, like selinux denials as per avc entries. It will also show if app is installed on external sd card. This info will automatically be shown on bootstrap install failure report.

    Moreover, users can generate termux files stat info and logcat dump manually too with terminal's long hold options menu More -> Report Issue option and selecting YES in the prompt shown to add debug info. This can be helpful for reporting and debugging other issues. If the report generated is too large, then Save To File option in context menu (3 dots on top right) of ReportActivity can be used and the file viewed/shar...

v0.117 (F-Droid only)

08 Jul 08:26
Compare
Choose a tag to compare

0.117 - 2021-07-08

Changelog

Added

  • Enable split apks for debug builds. APKs for each architecture and a universal APK that is compatible for all architectures will now be available from Github Actions page from the workflow runs labeled Build. The APKs will be available as zips under the Artifact section named termux-app-*. Architecture specific APKs can be used by users with low disk space since F-Droid releases are universal (since it doesn't support split APKs #1904) and their install+bootstrap installation size is ~180MB instead of ~120MB if an architecture specific APK is used. This should also reduce bandwidth usage and download time for debug builds users if they download an architecture specific zip instead of the universal one. Related #2153. (dccd155, b90d594)

  • Add app and device info too for crash notification shown when bootstrap installation or setup storage fails. (56c3826)

  • Trigger termux library builds on jitpack on releases. (d49fd6b)

Changed

  • Allow users to disable terminal margin adjustment from termux settings. Previously in v0.115 (3213502) support was added with disable-terminal-margin-adjustment termux.properties property to disable terminal margin adjustment in case in causes screen flickering or other issues on some devices. It has now been removed in (7aefd94) and moved to Termux Settings since if it causes issues at startup and users can't access termux.properties file from the terminal, they will have to use SAF or root to access it, which will require an external app. Users can set the value from the Termux Settings -> Termux -> Terminal View -> Terminal Margin Adjustment toggle. The Termux Settings can be accessed from left drawer in termux and from the android launcher shortcut for Termux Settings, usually accessible by long holding on Termux icon. (e0ad9ff)

Fixed

  • Fix java.lang.AbstractMethodError: androidx.window.sidecar.SidecarInterface$SidecarCallback.onDeviceStateChanged. The crash was reported for Microsoft Surface Duo, which would affect some Samsung and other devices as well, mainly dual screens/foldables. It was caused by androidx:window library that has been used by termux-shared since v0.115 having a typo in its proguard rules which didn't stop the removal of the required method for release builds (not debug) by proguard. For people who are getting the crash in v0.115 and v0.116 should set disable-terminal-margin-adjustment=true in termux.properties created as per instructions here and then start termux again and see if it fixes the issue. If you had termux installed before updating, you should be able to directly access the ~/.termux/termux.properties file with SAF. The property will not work in v0.117 as mentioned in Changed section above. (4361c5e)

  • Fix issue where a colour tint/highlight would be added to the terminal. This would happen when soft keyboard was to be disabled or hidden at startup and a hardware keyboard was attached and user started typing on hardware keyboard without tapping on the terminal first. (c6b4114)

  • Fix issue where RUN_COMMAND intent was failing for coreutils/busybox applets. (cce6dfe)

  • Attempt to fix bootstrap installation failure that may be caused by invalid mkdirs return value. (dc8bdfe)

Github Build APK. Check Installation for more info on Github Build APKs.

v0.116 (F-Droid only)

01 Jul 06:21
Compare
Choose a tag to compare

0.116 - 2021-07-01

Changelog

Fixed

  • Jitpack library publishing failed for initial v0.115 release so 886e52d was done to fix it and v0.115 was re-released but jitpack kept building pre-fix initial release as per commit Date in build.log, likely due to one time download. So releasing v0.116 so that it gets picked up. Users can import library based on entries like the following. The one mentioned in b7b12eb are invalid.

  • implementation 'com.termux.termux-app:termux-shared:0.116'

  • implementation 'com.termux.termux-app:termux-shared:master-SNAPSHOT'

  • implementation 'com.termux.termux-app:termux-shared:e547c15481'

  • implementation 'com.github.termux.termux-app:termux-shared:0.116'

Note that the first time someone imports a new version, it will take some time to build and you may get errors like Unable to resolve dependency for ':app@debug/compileClasspath'. It will take a few minutes for builds to be downloadable even after build.log shows them to have succeeded, run Sync Project with Gradle Files again to try to redownload. You can check builds and their logs at https://jitpack.io/#termux/termux-app and the API at e.g https://jitpack.io/api/resolve/com.termux/termux-app/master-SNAPSHOT.

Github Build APK. Check Installation for more info on Github Build APKs.

v0.115 (F-Droid only)

01 Jul 03:40
Compare
Choose a tag to compare

[0.115] - 2021-07-01

Changelog

Added

  • Add support to send back or store RUN_COMMAND intent command results in files and provide way to fix argument splitting sent with am command caused by commas , in arguments itself. Native support has been added inside termux to store results of both foreground and background commands inside files, that also sends back internal errmsgs as long as result files extras are valid. This can be used to run synchronous commands from inside termux, with other apps that have Run commands in Termux environment (com.termux.permission.RUN_COMMAND) like Tasker, from pc over adb or inside adb shell if you have a rooted device, or from pc if you have setup termux sshd. The RUN_COMMAND intent can only be sent by the termux user itself, by an app that has the permission or by the root user. The shell user of adb cannot send it. A script will be provided at a later time that will automatically detect these cases to easily run RUN_COMMAND intent commands which will also automatically create temp directories and do cleanup. This can also be useful inside termux itself, like if you want to start a new foreground session and to automatically store its output to a log file when you exit. Support can also be added for this to be done for termux-boot and termux-widget as well but will require updates for them. Check the commit message for full details and examples for this since too long to be added here. (2aafcf8)

  • Add termux settings button to left drawer too since apparently people can't find the one in context menu. (59877a0)

  • Allow users to disable terminal margin adjustment. The user can add disable-terminal-margin-adjustment=true entry to termux.properties file to disable terminal view margin adjustment that is done to prevent soft keyboard from covering bottom part of terminal view on some devices. Margin adjustment may cause screen flickering on some devices and so should be disabled. The default value is false. So adding the entry disable-terminal-margin-adjustment=true to termux.properties file will disable margin adjustment. Exit termux and restart for changes to take affect after updating value. In case e5a9b99 did not fix screen flickering issues for #2127, then this can be used to disable it. Closes #2127.

  • Show crash notification when bootstrap installation or setup storage failures. Sometimes users report that bootstrap installation failed on their devices but provide no details. Since they don't check logcat for the exception or exception is one time only, we can't know what happened. Although, reasons are likely root ownership files. The notification will show the full stacktrace including suppressed ones for why failure occurred and hopefully be easier to find the problems and we can get reports too. (e408fdc)

  • Updated bootstrap to 2021.06.30-r1. (5670128)

Changed

  • Move from github packages to https://jitpack.io for hosting termux library packages. Github Package hosting is considered a private repository since it requires github APIs keys if a hosted library needs to be imported as a dependency. Importing from private repositories is not allowed as per F-Droid policy so termux plugin apps can't import termux libraries as dependencies so hence we move to Jitpack. Usage details for importing termux libraries in your own app as dependencies are in the commit message. (b7b12eb, 69e5dee, 886e52d)

  • Change license for non-termux utils from GPLv3 to MIT so that they can be used by other termux plugin apps or apps that may be released under a different license. Termux is already using a lot of libraries that are not GPL and such general utils shouldn't be restrictive anyways. Moreover, TermuxConstants and TermuxPropertyConstants should be MIT licensed as well so that other non-FOSS or non-GPLv3 apps can use them, like for RUN_COMMAND intent. Any code not listed in exceptions of LICENSE.md files is still under GPLv3, mainly termux specific code and it will and should remain that way. All code in files whose license is changed was authored by me (@agnostic-apollo) as far as I can tell, but if any code in them is not that I missed, let me know, so that changes can be made since I can't and won't change the license of code authored by someone else. If some other objection is raised, let me know too. Future contributors should check the LICENSE.md files and see if they are okay with contributing code as MIT and if they are not, then they should create separate file/package in termux-shared. Check termux-app/LICENSE.md and termux-app/termux-shared/LICENSE.md for exceptions. (70e1acc, 4926516)

  • Implement Errno system. This commit adds onto 679e0de. Now Error class has been implemented which will used to return errors, including suppressed throwables. Requirement for Context object has been removed from FileUtils so that they can be called from anywhere in code instead of having to pass around Context objects. Previously, string.xml was used to store error messages in case multi language support had to be added in future since error messages are displayed to users and not just for dev usage. However, now this will have to handled in java code if needed, based on locale. (4494bc6)

  • The ExecutionCommand has been updated and command result variables have been moved to ResultData and result configuration to ResultConfig since the later two should be agnostic of what type of command there are for. They don't necessarily have to be for terminal/shell commands and can be used for plugin APIs, etc. The ResultData instead of a String errmsg now stores a list of Error objects. This is necessary since multiple errors may be picked up while a command is run, like say working directory is invalid and an error is returned by FileUtils and while sending the result to the caller, the ResultSender returns an additional error because result configuration like result directory or result output format was invalid. In these situations PluginUtils will show a notification to the user with info of each error thrown. In addition to above, in ResultData, the stdout and stderr are converted to StringBuilder instead of a String so that data can appended to each from various places in code. This commit also adds onto 679e0de and 4494bc6. (2aafcf8)

  • Move ReportActivity to termux-shared so that other termux plugins can use it too. (7f36d7b)

  • Move storage permission logic to PermissionUtils and add disable battery optimizations code. Option to disable battery optimizations will be added in termux settings later. (80b495e)

  • Make TermuxTask and TermuxSession agnostic to termux environment. Those classes shouldn't be tied to termux environment like variables, interpreters and working directory since commands may need to be executed with a different environment like android's or with a different logic. (53c1a49)

  • Move termux related file utils from FileUtils to TermuxFileUtils. (4494bc6)

  • Move Termux app specific logic out of PermissionUtils. (12f910c)

  • Move Android specific utils from TermuxUtils to AndroidUtils. (6bca378)

  • Divide DialogUtils. (553913c)

  • Move Termux app specific logic out of NotificationUtils. (1c7f916)

  • Move Termux app specific logic out of CrashHandler. (23a900c)

Fixed

  • Fix issues with TermuxActivityRootView margin adjustment. Margin adjustment was causing screen flickering due to invalid values being calculated in landscape and split screen mode. Attempts to fix issue #2127. (e5a9b99)

  • Redo fix for execution commands exceptions not being logged or sent back to plugin. The f62febb commit mentioned that it solved the bug where Termux:Tasker would hang indefinitely if Runtime.getRuntime().exec raised an exception, like for invalid or missing interpreter errors and Termux:Tasker wasn't notified of it. Now the errmsg will be used to send any exceptions back to Termux:Tasker and other 3rd party calls. . This however was still broken due to local design changes made to TermuxTask after testing was already done. This commit should solve that problem. Moreover, now a notification will be shown if execution commands fail to start that are run by plugins that don't expect the result back, like with termux-widget, termux-boot or RUN_COMMAND intent. This should make it easier for users to debug problems, since otherwise logcat needs to be looked. But logcat would still need to be looked if commands/scripts fail after they have started due to internal errors. Notifications can be disabled from Termux Settings by disabling the Plugin Error Notifications toggle. (5f2ccca)

  • Fix issue where terminal cursor blinking would not automatically start again if termux activity is started after device display timeout with double tap and not power button. Fixes #2138. (f77c886)

  • Fix issue where cursor blinker wouldn't automatically start after session change. (d3c34ad)

  • Fix issue where cursor blinker wouldn't automatically start after terminal reset if it was disabled before reset. (00f805f)

  • Fix suppressed exceptions not being logged and long logcat message being truncated. If an exception is thrown, the exception message might not contain the full errors. Individual failures may get added to suppressed throwables which can be extracted from the exception obj...

v0.114 (F-Droid only)

10 Jun 22:32
Compare
Choose a tag to compare

0.114 - 2021-06-11

Changelog

Added

  • Allow users to adjust terminal transcript rows with termux.properties. The terminal-transcript-rows key can be used to adjust the terminal transcript rows. The user can set an integer value between 100 and 50000. The default value is still 2000. So adding an entry like terminal-transcript-rows=10000 to termux.properties file will allow users to scroll back ~10000 lines of command output. After updating the value, termux must be restarted. You can also run termux-reload-settings command so that termux loads the updated value, but only new sessions will use the updated value, existing sessions will not be affected. Be advised that using large values may have a performance impact depending on your device capabilities, so use at your own risk. Closes #2071. (0b4bbaf)

  • Allow users to set terminal cursor style with termux.properties. The terminal-cursor-style key can be used to set the terminal cursor style. The user can set a string value to block for , underline for _ or bar for | cursor style. The default value is still block. So adding an entry like terminal-cursor-style=bar to termux.properties file will allow users to change to the bar cursor style. After updating the value, termux must be restarted. You can also run termux-reload-settings command so that termux loads the updated value, but only new sessions will use the updated value, existing sessions will not be affected unless you Reset them from terminal's long hold options menu More -> Reset or restart termux activity after double back press to exit. Closes #2075. (f545ebf)

  • Allow users to disable terminal session change toast. The user can add disable-terminal-session-change-toast=true entry to termux.properties file to disable terminal session change toast. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Closes #2118. (7ac62c9)

  • Updated bootstrap to 2021.06.04-r1. (7620800)

Changed

  • Change default extra keys style. If a user does not define a custom value in termux.properties file, then by default 2 rows will be shown with all arrow keys (up/down/left/right) for ease of terminal use. (fd80cda)

Fixed

  • Do not close soft keyboard when toolbar text input view is focused on. Fixes #2077. (e08e3b5)

  • Fix issue where soft keyboard would not show in some cases. Fixes #2111, Fixes #2112. (1ad038e)

  • Fix issue where soft keyboard overlaps extra keys or terminal in some cases. Check TermuxActivityRootView javadocs for the details. This affected people who had set enforce-char-based-input=true in termux.properties and Gboard clipboard suggestions covered part of extra keys/terminal, but only when text is copied and clipboard suggestions and number keys row toggles are enabled in its settings. Reports have been received for other keyboards as well, like for SwiftKey number key rows overlapping, but hopefully it should be fixed now. If not, then report it. Related #538 and #1539. (e7dd0ee)

  • Remove hardcoded wiki.termux.com url from HelpActivity. (7ef9255)

  • Fix issue where terminal cursor blinking would not automatically start again if termux activity was restarted after exiting it with double back press. (e119d34)

  • Fix issue where if termux installer failed with an exception after prefix directory was already created, then try again would load a broken environment. (19c690d)

Github Build APK. Check Installation for more info on Github Build APKs.

v0.113 (F-Droid only)

16 May 18:51
Compare
Choose a tag to compare

0.113 - 2021-05-16

Changelog

Added

  • Allow users to enable/disable keyboard instead of just show/hide with KEYBOARD toggle buttons. This soft-keyboard-toggle-behaviour key can be used to change the behaviour. The default behaviour is show/hide. The user can add a line soft-keyboard-toggle-behaviour=enable/disable in ~/termux.properties file to change default behaviour of keyboard toggle buttons to enable/disable. In this mode, tapping the keyboard toggle button will disable (and hide) the keyboard and tapping on the terminal view will not open the keybaord automatically, until the keyboard toggle button is pressed again manually. This applies to split screen and floating keyboard as well. The keyboard can also be enabled from Termux Settings -> Termux -> Terminal I/O -> Soft Keyboard Enabled toggle. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Also fixes #1098. (e4e638b)
  • Allow users to disable soft keyboard automatically if hardware keyboard is connected. Users can enable this behaviour by enabling the Termux Settings -> Termux -> Terminal I/O -> Soft Keyboard Only If No Hardware toggle. (90c9a7b)
  • Allow users to enable terminal cursor blinking with termux.properties. This terminal-cursor-blink-rate key can be used to enable terminal cursor blinking. The user can set an int value between 100 and 2000 which will be used as blink rate in millisecond. The default value is 0, which disables cursor blinking. So adding an entry like terminal-cursor-blink-rate=600 to ~/termux.properties file will make the cursor attempt to blink every 600ms. Running termux-reload-settings command will also update the cursor blinking rate instantaneously if changed.
    This will have a performance impact, so use wisely and at your own risk. Note that you can also change the cursor color by adding cursor property to ~/colors.properties file, like cursor=#FFFFFF for a white cursor. Closes #153. (31298b8, 89a1e02)
  • Add in-app Donation link in Termux Settings for non google playstore releases. We require donations due to bintray shutdown to pay for termux apt repository hosting costs. Related issue termux-packages#6348. (6de3713)
  • Moved Termux app settings into dedicated "directory" in Termux Settings and added About page to show info of all termux apps installed and important links. (d42514d)
  • Added support for showing APK release type in App Info reports and About page. (1e30022)
  • Add support for setting Termux:Tasker log level from Termux Settings. (339b2a2)
  • All invalid values stored in termux.properties file during load time will be logged. (f8ccbb4)
  • Updated bootstrap to 2021.05.16-r1. (6524a61)

Fixed

  • Disable error flashes when clearing TMPDIR directory on termux app exit. (b268b6e)
  • Fixed NullPointerException on com.termux.app.TermuxService.wantsToStop(). Fixes #2026. (42ad372)
  • Attempt to fix issues where soft keyboard was not shown in some cases when hardware keyboard was attached. The extra keys and drawer KEYBOARD toggle button and ctrl+alt+k hardware keyboard shortcut will all behave the same now and may help in showing soft keyboard forcefully. Related issues #1995. (Requires testers). (4d1851e, 39c69db)
  • Release terminal beep SoundPool resources on activity stop to attempt to prevent exception. (58d5770)
  • Generate potentially long running reports in background threads instead of main UI thread. (2f82825)

Github Build APK. Check Installation for more info on Github Build APKs.

v0.112 (F-Droid only)

22 Apr 15:03
Compare
Choose a tag to compare

0.112 - 2021-04-22

Fixed

  • Reverted the versioning logic change done in a6ae656 since that caused F-Droid bot and Github Packages to fail to pick up new releases. The versions must be bumped directly in build.gradle file in future and not through other files like gradle.properties. Thanks to @jspricke for notifying us. (0aa5a12)

Github Build APK. Check Installation for more info on Github Build APKs.

v0.111 (F-Droid only)

21 Apr 09:11
Compare
Choose a tag to compare

0.111 - 2021-04-21 (RE-RELEASED)

Changed

  • Bumped gradle wrapper to 7.0. (1d06ff9)

Fixed

  • Fixed termux-reset not working properly since v0.109. (d6eb5e3)
  • Fixed cases where bootstrap was not reinstalled even if PREFIX was broken, i.e if it was empty or only contained the tmp directory. (107927f, b34f60b)

Github Build APK. Check Installation for more info on Github Build APKs.

v0.110 (F-Droid only)

15 Apr 00:24
Compare
Choose a tag to compare

0.110 - 2021-04-15

Added

  • Add support to include source jar files for libraries published by termux so that developers that import the libraries can see javadocs and comments. (3306c3c)

Fixed

  • Fix Termux Settings crash for release builds. Fixes #2005 (cde0bd2)

v0.109 (F-Droid only)

13 Apr 14:07
354fe19
Compare
Choose a tag to compare

Change Log:

  • Updated bootstrap archives.
  • Lots of fixes and improvements (see expandable list below).
Full change log

Added

  • Added SettingsActivity (Termux Settings) which can be accessed by Long pressing terminal view -> More -> Settings. This will allow GUI based management of settings in future, like keyboard key mapping, etc. Currently supports controlling log level, plugin errors and softkeyboard state. (d39972b)

  • Add SettingsActivity to launcher shortcuts. (2b3f681, 325a6f7)

  • Added ReportActivity and ReportInfo to be used as base for showing reports to users. Currently supports plugin errors, app crashes and issue reports. (9d36e9a)

  • Added centralized Logging framework to the entire app and terminal-view and terminal-emulator libraries which has 4 levels, Off, Normal (default), Debug, Verbose which can be used by users via logcat to debug problems. Users can set the log level from Termux Settings -> Debugging -> Log Level. Terminal view key logging can now also be enabled with the Terminal View Key Logging toggle without having to recompile the app. Support for writing to files in addition to writing to logcat will/can be added in future. (d39972b)

  • Added logging for termux bootstrap package installation and setup of storage symlinks. (92b804d).

  • Requested android.permission.DUMP permission so that users can use dumsys commands without root after running adb shell pm grant com.termux android.permission.DUMP. (356a442)

  • Requested android.permission.REQUEST_INSTALL_PACKAGES permission to allow users to access Android/obb on android 11 after explicitly granting Termux the permission by going to Termux App Info in Android Settings -> Advance -> Install unknown apps. (93a5bf8)

  • Added support to warn users if Draw over other apps permission is missing when attempting to start Termux foreground session from the background with plugin commands, like for RUN_COMMAND intent. Check android background restrictions for more info. Now, the Termux foreground session will not even be attempted to be started if permission is missing since it would fail randomly otherwise and users would report bugs for it. (d3ddb21)

  • Added hide-soft-keyboard-on-startup termux.properties property which when set to true will automatically hide the soft keyboard on Termux startup to solve issues for when users use hardware keyboard and soft keyboard wastes screen space. Fixes #1978. (1ef8eb9)

  • Added support for disabling soft keyboard completely for when users use hardware keyboard. Users can toggle the state from Termux Settings -> Keyboard I/O -> Soft Keyboard toggle. (2a8d5e2)

  • Added support for adjusting termux toolbar height with terminal-toolbar-height termux.properties property. The user can set a float value between 0.4 and 3.0 which will be used as the scaling factor for the default height. The default scaling factor is 1. So adding an entry like terminal-toolbar-height=2.0 to termux.properties file will make the toolbar height twice its original height. Fixes #1857. (ff0440d)

  • Added executable and working directory validation for RUN_COMMAND intent. The working directory will also also be created if its under TermuxConstants.TERMUX_FILES_DIR_PATH. (b4995ef)

  • Added support for session actions for foreground session commands received via RUN_COMMAND intent or termux-tasker. (ec7568d)

  • Added support for sending back background and foreground command results for RUN_COMMAND intent and foreground command results for Termux:Tasker. Check RUN_COMMAND Intent Wiki for more info. (a2209dd)

  • Added support to notify users of errors via flashes and notifications for plugin commands, like for allow-external-apps not set to true when RUN_COMMAND intent is received. Clicking the notification will open the ReportActivity to show the report. The flashes and notifications can be controlled with the Termux Settings -> Debugging -> Plugin Error Notifications toggle. (8612a1d, 31371b5)

  • Added support for stdin for background RUN_COMMAND intent, TERMUX_SERVICE.ACTION_SERVICE_EXECUTE and Termux:Tasker (will require update) commands. This will allow users to pass (bash, python, etc) scripts or other data via stdin to the executable. Arguments would still be passed to the executable and not the script. (192b208, f1034c2)

  • Added crash reporting so that whenever the Termux app crashes, the crash report (stacktrace, app and device info) will be logged to ~/crash_log.md file in markdown format. When the user will reopen the app, a notification will be shown which when clicked will show the crash report content in ReportActivity. The activity will have important links like email (termuxreports@groups.io), reddit, github issues of termux app and packages at which the user can optionally report an issue if necessary after copying the crash report text. The ~/crash_log.md file will be moved to ~/crash_log-backup.md so that a notification is not shown again on next startup and can be viewed again via SAF, etc. The notifications can be controlled with the Termux Settings -> Debugging -> Crash Report Notifications toggle. (69e4b57, cf5bb69)

  • Added support to allow users to report an issue based on terminal transcript with Long pressing terminal view -> More -> Report Issue. Selecting the option will open the ReportActivity with the terminal transcript, app device and APT info with important links like email (termuxreports@groups.io), reddit, github issues of termux app and packages at which the user can optionally report an issue after copying the report text. The report text will be in markdown format so that it is more readable and will take a few seconds to generate. (939338a, df4d8ac, 6293f5f)

  • Added termux-shared library. This defines shared constants and utils of Termux app and its plugins. This allows for removal of all hardcoded paths in Termux app. The termux plugins should use this in future as well. (682ce08)

  • Added TermuxConstants class to store all shared constants of Termux app and its plugins. This also has info on what changes need to be made if forking Termux app and changing its package name. (14c4986, 0225a8b)

  • Added TermuxPropertyConstants class that defines shared constants of SharedProperties used by Termux app and its plugins. Also added TermuxSharedProperties class that acts as manager for handling termux properties. (7b4acb5)

  • Added TermuxPreferenceConstants class that defines shared constants of the SharedPreferences used by Termux app and its plugins. Also added TermuxSharedPreferences class that acts as manager for handling termux preferences. (93b506a, 9e82561)

  • Added SharedProperties class which is an implementation similar to android's SharedPreferences interface for reading from .properties files which also maintains an in-memory cache for the key/value pairs. Write support is currently not there since .properties files also have comments and escapes, so in-place editing would be required to update values. For this apron library could be looked into. (7b4acb5)

  • Added ExecutionCommand to stores all data related to an execution command. This allows easier management and passing of execution command data between classes and management of it, like post processing and failure management. (bccc35b, 31371b5, 1b5e5b5)

  • Added ShellUtils to provide utilities for shell related stuff, since they don't belong in BackgroundJob which has been removed. (dff2794, 249f7c6, 8598b92)

  • Added the TermuxSession class for linking a TerminalSession to an ExecutionCommand and to maintain info for foreground Termux sessions. (78a99fd, 0cd7cb8)

  • Added the TermuxTask class for linking a Process to an ExecutionCommand and to maintain info for background Termux tasks. It also supports synchronous command execution as well to run shell commands and scripts from anywhere for internal use by termux app and its plugins. (f62febb, 0cd7cb8)

  • Added StreamGobbler class which has been imported from libsuperuser and partially modified to read stdout and stderr of background commands. (f62febb)

  • Added interface methods to TerminalViewClient in terminal-view library so that it becomes agnostic of termux.properties files. (10d6eaa)

  • Added MarkdownUtitls to provide utilities for markdown support in the app, like for error and crash reports. It uses the commonmark-spec via the markwon library. (131f481)

  • Added ShareUtils to provide utilities for sharing data from termux apps. It will also try to prevent android.os.TransactionTooLargeException exceptions when sharing large data. (c28990a)

  • Added TermuxUtils to provide utilities for termux app specific operations, like getting termux app info, device info, report info, Context object of each termux plugin app, etc. (c9e18e5, 3491956, 69e4b57, 15eb56d)

  • Added NotificationUtils to provide utilities to build and manage notifications. (20d20f4)

  • Added PackageUtils to provide utilities to get various package related info. This will be used to get info based on app Context objects instead of using BuildConfig which wouldn't have been available across termux plugins. (15eb56d)

  • Added FileUtils to provide utilities to safely manage files. Also added support to get detailed UNIX file attributes by porting classes from android's libcore/ojluni. (d4fc34c)

Changed

  • Refactored TermuxActivity. Dedicated classes and functions have been cre...