Skip to content

gesture upstream rebase 2024 08 17#5

Closed
craigcomstock wants to merge 896 commits intomasterfrom
gesture-upstream-rebase-2024-08-17
Closed

gesture upstream rebase 2024 08 17#5
craigcomstock wants to merge 896 commits intomasterfrom
gesture-upstream-rebase-2024-08-17

Conversation

@craigcomstock
Copy link
Copy Markdown
Owner

  • Sends broadcast on app open to notify addon termux receivers
  • Add selection mode cursor controller
  • Selection mode fling
  • Stop selection mode on enter
  • Optimize handle view
  • add permission ACCESS_NETWORK_STATE
  • Add .cxx folder to gitignore
  • Unified UI colors across the app. Dark sidebar and dark app theme for dark Alert Dialogs
  • Made Black UI an option to configure
  • Include bootstrap zips as shared libraries
  • Bump version to 0.76
  • Do not set LD_LIBRARY_PATH by default
  • bootstraps: update to v18
  • do not allow to backup data by Google
  • Bump version to 0.77
  • Bump version to 0.78
  • Fix gradle deprecation warning
  • Cleanup after requiring Android 7.0
  • Update Android gradle plug-in
  • Bump version to 0.82
  • Do not limit cursor movement to scroll region
  • Remove outdated tests
  • extra keys: handle actions UP & CANCEL separately
  • extra keys: improve handling of DnD mode
  • Bump version to 0.84
  • update gradle wrapper
  • Add selection mode cursor controller
  • Selection mode fling
  • Stop selection mode on enter
  • Optimize handle view
  • remove SDK_INT conditionals
  • Optimize handleView move.
  • confict
  • terminal emulator: clear scrollback buffer when resetting to initial state
  • Update Android Gradle plug-in
  • terminal emulator: clear scrollback buffer when resetting to initial state
  • Update Android Gradle plug-in
  • Bump version to 0.85
  • Update gradle wrapper
  • properly set bootclasspath environment variable
  • Handle magnet links with termux-url-opener
  • Start stderr BackgroundJob Thread
  • Add PendingIntent in TermuxService to return data from execution
  • Create new terminal sessions with directory of active session
  • Bump version to 0.86
  • Bump version to 0.88
  • Avoid trailing slash in CWD (fixes New session not expanding \W in bash prompt correctly termux/termux-app#1413)
  • Allow the user to disable virtual key emulation.
  • Prevent kill by Samsung Dex on plug/unplug.
  • Bump version to 0.90
  • CI: switch to Github Actions
  • CI: add configuration for running terminal emulator unit tests
  • CI: update workflow labels
  • update readme
  • CI: fix job name in run_tests.yml
  • update issue templates
  • update readme
  • update bootstrap archives
  • update bootstrap archives
  • Fix SAF provider does not show in pickers termux/termux-app#1424: Support ACTION_OPEN_DOCUMENT_TREE
  • Fix DocumentProvider does not allow createDocument() termux/termux-app#1350: Support createDocument(...)
  • Fix deletable flags in DocumentProvider
  • Bump version to 0.92
  • Update Robolectric from 4.3 to 4.3.1
  • Update Android gradle plug-in
  • Add android.useAndroidX=true to gradle.properties
  • Update gradle wrapper
  • update bootstraps
  • set ndk version in build.gradle
  • Grab fragment when extracting URLs for selection
  • Add tests for URL fragment
  • Bump version to 0.94
  • Remove irrelevant message from bootstrap installation error
  • Update Android Gradle plugin to 3.6.3
  • Verify Gradle
  • show result in pull request
  • Avoid specifying ndk version
  • Fix build by specifying ndkVersion
  • update bootstraps
  • Fix CI build and see result in pull request (fix CI build and see result in pull request termux/termux-app#1565)
  • Handle all exceptions when loading termux.properties (Handle all exceptions when loading termux.properties termux/termux-app#1590)
  • update bootstraps
  • update bootstraps again
  • update bootstraps again
  • Support auto detection of dark theme
  • Set orientation of HandleView in show (Set orientation of HandleView in show termux/termux-app#1477)
  • update ndk version
  • fix ndk version for terminal-emulator module
  • Update notification icon to match launcher icon
  • Improvements to extra keys (Improvements to extra keys termux/termux-app#1479)
  • Add Log file to view intent Explicitly add Log files to View intent termux/termux-app#1497
  • Join lines that fills the width when selecting urls
  • Provide a service for executing commands by third-party applications
  • minor refactoring: RunCommand => RunCommandService
  • RunCommandService: update information about usage
  • Use vector drawables for text selection handle
  • extra keys: make popup & pressed button no longer transparent
  • version 0.95
  • update ndk version
  • fix am on Android R
  • get rid of Android 5 legacy stuff
  • add DEX2OATBOOTCLASSPATH environment variable
  • export COLORTERM=truecolor
  • Fix selection rendering with alternate cursor styles
  • Invert selected text instead of highlighting
  • update notification icon
  • Receive "RUN_COMMAND_ARGUMENTS" extra for "RUN_COMMAND_ACTION" intent as a string array extra instead of a string extra since TermuxService expects it that way.
  • Changed static string "EXTRA_EXECUTE_IN_BACKGROUND" access to public
  • update bootstrap archives
  • version 0.96
  • move sdk version configs to gradle.properties (move sdk version configs to gradle.properties termux/termux-app#1685)
  • Android Studio 4.0.1 (Android Studio 4.0.1 termux/termux-app#1687)
  • Gradle 6.5.1 (Gradle 6.5.1 termux/termux-app#1686)
  • update WcWidth.java, add note about c version
  • update bootstrap archives
  • version 0.98 (v0.97 is non-release, so updating from 0.96 to 0.98)
  • terminal emulator: flush remaining process output data when terminating session
  • Update drawerlayout library
  • fix RUN_COMMAND permission description
  • linter: fix wakelock log tag
  • extra keys: use TextUtils.join instead of String.join
  • CI: do builds for android-10 branch
  • readme: fix a copy-paste typo (Fixed a small error termux/termux-app#1720)
  • terminal view: provide a workaroud for issue with some keyboards
  • update bootstrap archives
  • gradle 6.6.1
  • version 0.99
  • add gradle distribution sha256
  • Revert "add gradle distribution sha256"
  • TerminalEmulator: fix bug in DECRQM handling
  • Fix issue where termux crashes occasionally in android >= 8 because "startForeground()" function is not being called before running "startForegroundService()" in RunCommandService.
  • Add support for "$PREFIX/" and "~/" prefix in "RUN_COMMAND" intent extras for paths.
  • Fix issue where termux session does not come to foreground automatically in android >= 10 unless user manually clicks termux notification for "RUN_COMMAND" intents and "Termux:Tasker" plugin actions that have background mode "false" because of new restrictions of starting activities from background. This is done by adding "android.permission.SYSTEM_ALERT_WINDOW" permission in AndroidManifest.xml so that the user may optionally grant "Draw Over Apps" permission to termux to fix the issue.
  • Update RunCommandService docs.
  • Add @OverRide annotation to onStartCommand() function of RunCommandService.
  • update bootstrap archives
  • fix bootstrap archive checksum for arm
  • version 0.100
  • update bootstrap archives again
  • version 0.101
  • update .gitattributes
  • Add an "Autofill password" context menu action
  • version 0.102
  • update bootstrap archives
  • add READ_LOGS permission
  • add permission WRITE_SECURE_SETTINGS
  • update bootstrap archives
  • version 0.103
  • copy FUNDING.yml from termux-packages repo
  • don't add $PREFIX/bin/applets to $PATH
  • update readme
  • update readme
  • update bootstrap archives
  • Revert "update readme"
  • update bootstrap archives
  • Don't exclude hidden files from document provider (Unabl to open files with names starting with . "hidden files" using Android Access Framework (TurboEdit) termux/termux-app#1220)
  • version 0.104
  • Fix github links for terminal-{emulator,view} jcenter packages
  • Update plugins and gradle to latest versions
  • Update ndk to r22
  • app: disable test for "ProtectedPermissions"
  • terminal-view: silence warning from use of SHOW_AS_ACTION_ALWAYS
  • app: set importantForAutofill="no" for extra keys input field
  • terminal-view: mv code to get properties to its own function
  • terminal-view: add "ctrl-space-workaround" property
  • F-Droid URL for Termux:Styling
  • terminal-emulator: tests: avoid error about methods not being mocked
  • terminal-emulator: tests: change spaces to tabs for consistency
  • update bootstrap archives
  • remove restrictions from viewable file types
  • version 0.105
  • when num lock is off, have numpad keys works as their numlock-off functions (arrows/home/end/pgup/pgdn/insert/delete)
  • only send PF1 for num lock when in application mode
  • fix TerminalView possiblePropLocations IOBE
  • terminal-view: fix array indexing
  • version 0.106
  • readme: still need to clarify that app is "not maintained"
  • Implement full screen and add FullScreenWorkAround to fix ExtraKeysView not displaying properly and inconsistently between various devices
  • Remove height offset workarounds / config * Use WindowInsetsListener to get nav bar height and use that instead for calculating adjusted height for extra keys view
  • readme: remove links to Google Play and Nethunter stores
  • icon: add regular png icon for compatibility with some launchers
  • documents provider: fix application icon reference
  • add basic metadata for F-Droid.
  • terminal-emulator: bump library version
  • terminal-view: bump library version
  • app: enable split apk builds
  • github actions: include split apks to artifact archive
  • github actions: use hardcoded list of debug apks
  • github actions: debug_build.yml is fixed now?
  • github actions: update actions/upload-artifact to v2
  • introduce a property for configuring default working directory
  • TermuxPreferences: get rid of unnecessary switch()'es
  • export app version in environment variable
  • update bootstrap archives
  • ExtraKeysView: Handle multiple and popup SpecialButtons
  • ExtraKeysView: Use Set instead of List for special buttons keys
  • ExtraKeysView: SpecialButtons use Button instead of ToggleButton
  • version 0.107
  • update bootstrap archives
  • publish termux-view and terminal-emulator on Github Packages
  • github actions: add workflow for publishing terminal-view/terminal-emulator on Github Packages
  • github actions: test run for publishing maven packages
  • Revert "app: enable split apk builds"
  • update bootstrap archives
  • version 0.108
  • Fix "Duplicate finish request for ActivityRecord" errors
  • Add logcat errors in RunCommandService
  • Fix path expansion in RunCommandService
  • Fix workdir logic in RunCommandService
  • Fix current working directory default value
  • Update RunCommandService documentation
  • Fix NoClassDefFoundError exceptions for TermuxActivity
  • Request android.permission.DUMP permission
  • Request android.permission.REQUEST_INSTALL_PACKAGES permission
  • Partial refactor of the mess that is TerminalView
  • Restore keyboard input into terminal view when toggling extra-keys slider input with VOL_UP+q
  • Define TermuxConstants class to store all shared constants of Termux app and its plugins
  • Move terminal input related classed to com.termux.app.input package
  • Fix potential null exceptions
  • Move Termux Properties to com.termux.app.settings.properties package
  • Update TermuxConstants
  • Remove function that reads the "termux.properties" files from RunCommandService
  • Disable TerminalView logging.
  • Make TerminalView agnostic of "termux.properties" files.
  • Rename com.termux.app.input package to com.termux.app.terminal
  • Update TermuxConstants
  • Fix typo in TermuxPropertyConstants
  • Move Termux Preferences to com.termux.app.settings.preferences package
  • Implement GUI based Termux settings manager and a centralized logging framework
  • Fix hardcoded value in strings.xml
  • Remove moved files
  • Prefix DEFAULT_LOG_TAG even when a tag is passed while logging
  • Update TerminalView and TerminalViewClient javadocs
  • Update TermuxConstants
  • Move terminal io related classed to com.termux.app.terminal.io package
  • Move DialogUtils to com.termux.app.utils package
  • Refactor TermuxActivity
  • Allow users to adjust termux toolbar height with termux.properties
  • Updated TermuxPreferenceConstants
  • Update TermuxConstants
  • Added SharedPreferenceUtils
  • Update TermuxConstants
  • Move general static functions from TermuxSharedProperties to SharedProperties class
  • Update TermuxConstants
  • Update SharedPreferenceUtils
  • Update TermuxConstants
  • Update TermuxConstants
  • Fix dependencies ordering
  • Refactor TermuxService
  • Fix old bug where termux app would crash if sessions list ListView was not notified of new sessions
  • Update TermuxConstants
  • Add support for session actions for foreground session commands
  • Refactor RunCommandService
  • Added TERMUX_SERVICE#ACTION_SERVICE_EXECUTE Intent Logging
  • Reordered TermuxService.actionAcquireWakeLock()
  • Added plugin_error_notifications_enabled preference
  • Allow mPropertiesList to be null for SharedProperties
  • Add commonmark-spec markdown support with markwon library
  • Add ShareUtils
  • Update Logger
  • Update TermuxUtils to add support for getting device and termux info as markdown
  • Add ReportActivity and ReportInfo
  • Added NotificationUtils to build and manage notifications
  • Added ExectionCommand
  • Update TermuxConstants
  • Fully integrate ExectionCommand into RunCommandService
  • Partially integrate ExectionCommand into TermuxService and BackgroundJob
  • Add logging for termux bootstrap package installation and setup of storage symlinks
  • Change log level to warn from error when termux.properties file is missing
  • Move activities and fragments to respective packages
  • Fix xml files naming convention
  • Fix string resources naming convention
  • Fix typos
  • Fix variable prefix for intent extra
  • Fix typos
  • Add SettingsActivity to launcher shortcuts
  • Fixed keep screen on default value
  • Add ShellUtils to define shell related utils since they don't belong in BackgroundJob
  • Add the TermuxSession class for linking a TerminalSession to an ExecutionCommand.
  • Remove BackgroundJob
  • Update TermuxConstants
  • Update TextDataUtils.getTruncatedCommandOutput() to support truncation from start or end and for (truncated) prefix
  • Update ExecutionCommand to make current and previous state private to prevent direct modification
  • Add the TermuxTask class for linking a Process to an ExecutionCommand.
  • Provide better errmsg if executable passed to RunCommandService is null or empty
  • Fix unintentional wordwrap of ExecutionCommand arguments markdown
  • Use NotificationUtils to handle TermuxService and RunCommandService notifications
  • Set compileSdkVersion (NOT targetSdkVersion) to 29 so that Build.VERSION_CODES.Q checks can be made
  • Warn users if Draw over other apps permission is missing
  • Add hide-soft-keyboard-on-startup property
  • Update TermuxConstants
  • Remove leftover log entry from TermuxSessionClient
  • Add support for sending back background and foreground command results for RUN_COMMAND intent and foreground command results for Termux:Tasker
  • Update TermuxConstants
  • Use TermuxConstants for getting urls instead of using hardcoded strings
  • Disable markdown text selection for now since it stops URL clicks from working
  • Fix terminal-emulator constructor used in tests
  • Send PendingIntent back for pre-execution errors generated for RUN_COMMAND intent
  • Add support for disabling soft keyboard completely with the "soft_keyboard_enabled" SharedPreferences key
  • Move com.termux.models to com.termux.app.models package
  • Add PackageUtils and fix ReportActivity
  • Renamed TextDataUtils to DataUtils
  • Get TERMUX_VERSION while building shell environment via Termux package context
  • Move StreamGobbler to shell package
  • Move get*LogStringEntry() functions to logger class
  • Update gradle version to 4.1.3
  • Move ShellUtils to shell package
  • Move FileUtils to file package and define more file util functions
  • Use FileUtils for bootstrap and shared storage symlinks setup
  • Use FileUtils for clearing TMPDIR and move clearing function to ShellUtils from TermuxService
  • Update TermuxConstants
  • Fix RUN_COMMAND Intent plugin api url
  • Fix Logger function modifier order
  • Add crash_report_notifications_enabled shared preferences
  • Fix SettingsActivity shortcut not showing on android 7 and fixed shortcut actions and categories
  • Update TermuxConstants
  • Implement crash handler and reporting
  • Disable obfuscation of termux-app in release builds without disabling optimizations and shrinking
  • Allow users to report an issue from terminal transcript by selection "Report Issue" from context menu
  • Fix potential TransactionTooLargeException when sharing text
  • Replace "if(" with "if ("
  • Add TermuxTaskerAppSharedPreferences to handle termux-tasker shared preferences
  • Create termux-shared library package for all termux constants and shared utils
  • Add termux-shared library to github workflow so that its published
  • Updated RunCommandService javadocs.
  • Micro optimization for StreamGobbler
  • Update TermuxConstants
  • Add support for reporting issues to the termuxreports@groups.io email
  • Improve TermuxSession and TermuxTask
  • Replace "if(" with "if ("
  • Fix issue where TermuxService was stopped and Termux notification canceled, if background tasks were still running but all sessions had been closed.
  • Assure "Process completed" string is written to terminal before session is finished
  • Rename termux terminal view and session client classes
  • Add support for stdin for background TermuxTasks
  • Fix typos
  • The TermuxConstants class has been updated to v0.19.0. Check its Changelog section for info on changes.
  • Add support for stdin for background RUN_COMMAND intent and TERMUX_SERVICE.ACTION_SERVICE_EXECUTE commands
  • Fix TermuxActivityBroadcastReceiver wrongly designed intent actions and extras
  • Added APT package info when generating "Report Issue" text
  • Replace "if(" with "if ("
  • Bump to v0.109
  • update bootstrap archives
  • Revert "Bump to v0.109"
  • Move TermuxTerminalSessionClientBase to com.termux.shared.terminal package
  • Add TermuxTerminalViewClientBase to com.termux.shared.terminal package and extend that in TermuxTerminalViewClient
  • Add ".sh" extension to apt_info_script file
  • Bump to v0.109
  • Prevent DebuggingPreferencesFragment and TerminalIOPreferencesFragment from being removed during minification
  • Add support to include source jar files for libraries published by termux
  • Add support for allowing IDE to show documentation in .gradle files
  • Bump to v0.110
  • Fix termux-reset
  • Fix cases where bootstrap was not reinstalled even if PREFIX was broken
  • Bump gradle to v7.0
  • Bump to v0.111
  • Revert "Bump to v0.111"
  • Fix the bootstrap reinstallation logic for when PREFIX is a symlink
  • Bump to v0.111
  • Update README
  • Update LICENSE
  • Update LICENSE
  • Update LICENSE
  • Bump to v0.112
  • Replace jcenter() with mavenCentral()
  • Update README
  • Update README
  • Update README.md
  • Disable error flashes when clearing TMPDIR directory on termux app exit
  • Fix NullPointerExceptions for cases when TermuxActivity tries to access TermuxService when it doesn't hold a reference
  • Bump ndk to v22.1.7171670
  • Update README.md
  • Update LICENSE.md
  • Update README.md
  • Move Build.ID and Build.DISPLAY to Software section of device info markdown
  • Update report issue message to ask users to provide details on what they were doing that caused the Termux app crash
  • Fix issues where soft keyboard was not shown in some cases when hardware keyboard was attached
  • Fix issues where soft keyboard was not shown in some cases when hardware keyboard was attached v2
  • Bump compileSdkVersion (NOT targetSdkVersion) to 30
  • Create KeyboardUtils
  • Update KeyboardUtils will null checks and add setSoftKeyboardVisibility()
  • Allow users to enable/disable keyboard instead of just show/hide with keyboard toggle buttons
  • Preserve the termux.properties literal string values internally that were being converted to boolean on load time
  • Allow users to disable soft keyboard automatically if hardware keyboard is connected
  • Moved Termux app settings into dedicated "directory" in Termux Settings and added About page
  • Changed TermuxAppSharedPreferences function naming convention
  • Add support for APK signing certificate SHA-256 digest and detecting APK release type and add them to App Info reports
  • Add generic functions to show a message in dialog and exit app with an error message
  • Ensure we read/write to/from current SharedPreferences
  • Add in-app Donation link in Termux Settings for non google playstore releases
  • Add support for setting Termux:Tasker log level from TermuxSettings
  • Generate potentially long running reports in background threads instead of main UI thread
  • Update .gitattributes
  • Normalize gradlew.bat
  • Allow users to enable terminal cursor blinking with termux.properties
  • Log invalid values stored in termux.properties file during load time
  • update bootstrap archives
  • Updates to terminal cursor blinking
  • Release terminal beep SoundPool resources on activity stop to attempt to prevent exception
  • Implement TermuxActivity callbacks in TermuxTerminalViewClient and TermuxTerminalSessionClient
  • Bump to v0.113
  • Do not close soft keyboard when toolbar text input view is focused on
  • update bootstrap archives
  • bump bootstraps again
  • Add pluginIntent field to ExecutionCommand
  • Fix issue where soft keyboard would not show in some cases
  • Remove hardcoded wiki.termux.com url from HelpActivity
  • Fix issue where soft keyboard overlaps extra keys or terminal in some cases
  • Allow users to adjust terminal transcript rows with termux.properties
  • Allow users to set terminal cursor style with termux.properties
  • Fix issue where terminal cursor blinking would not automatically start again if termux activity was restarted after exiting it with double back press
  • Fix issue where if termux installer failed with an exception after prefix directory was already created, then try again would load a broken environment.
  • Change default extra keys style
  • Allow users to disable terminal session change toast
  • Bump to v0.114
  • Remove left over lines from gradle.properties
  • Rename variable
  • Redo fix execution commands exceptions not being logged or sent back to plugins
  • 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.
  • Move from github packages to jitpack.io for hosting termux library packages
  • Move ReportActivity to termux-shared so that other termux plugins can use it too
  • Move to com.termux domain for termux libraries published with jitpack
  • Move storage permission logic to PermissionUtils and add disable battery optimizations code
  • Fix suppressed exceptions not being logged and long logcat message being truncated
  • Implement Errno system
  • Fix minor typos and potential errors
  • Bump gradle wrapper to v7.1
  • Bump gradle to 4.2.1
  • 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
  • Make TermuxTask and TermuxSession agnostic to termux environment
  • Show crash notification when bootstrap installation or setup storage failures
  • Fixed issue where back button would not exit the activity if bootstrap installation failed and users dismissed the error dialog,
  • Add termux settings button to left drawer too since apparently people can't find the one in context menu
  • Fix issue where cursor blinker wouldn't automatically start after session change
  • Fix issue where cursor blinker wouldn't automatically start after terminal reset if it was disabled before reset
  • Fix issues with TermuxActivityRootView margin adjustment
  • Allow users to disable terminal margin adjustment
  • Add termux.properties property for opening terminal transcript urls on click
  • Compile Url match regex once and not on every use
  • Do not start login shell and load ~/.profile if starting a failsafe session
  • Move Termux app specific logic out of PermissionUtils
  • Move Android specific utils from TermuxUtils to AndroidUtils
  • Divide dialog utils
  • Move Termux app specific logic out of NotificationUtils
  • Change license for non-termux utils to MIT
  • Update LICENSE.md
  • Bump gradle dependencies versions
  • update bootstrap archives
  • Add comment about mkshrc validity when loading /system/bin/sh for failsafe session
  • Move Termux app specific logic out of CrashHandler
  • Fx issues where crash throwable message wasn't been added to crash log
  • Bump to v0.115
  • Revert "Bump to v0.115"
  • Revert some unneeded changes to Logger done in 679e0de
  • Bump to v0.115
  • Revert "Bump to v0.115"
  • Export JITPACK_NDK_VERSION for jitpack
  • Bump to v0.115
  • Bump to v0.116
  • Update README.md
  • Enable split apks for debug builds
  • Fix typo in dccd155
  • Fixed grammar in the README.md file...
  • Bump gradle dependencies versions
  • Fix java.lang.AbstractMethodError: androidx.window.sidecar.SidecarInterface$SidecarCallback.onDeviceStateChanged
  • Update .gitignore
  • Add app and device info too for crash notification shown when bootstrap installation or setup storage fails
  • Fix issue where RUN_COMMAND intent was failing for coreutils/busybox applets
  • Fix issue where a colour tint/highlight would be added to the terminal
  • Attempt to fix bootstrap installation failure that may be caused by invalid mkdirs return value
  • Revert "Allow users to disable terminal margin adjustment"
  • Allow users to disable terminal margin adjustment from termux settings
  • Trigger termux library builds on jitpack on releases
  • Bump to v0.117
  • Update trigger_library_builds_on_jitpack.yml
  • Ensure termux files directory is accessible before bootstrap installation and provide better info when running as secondary user/profile
  • installer: fix permissions for lib/apt/apt-helper
  • extra keys: avoid scheduled executor leak
  • Ensure failsafe session can still be opened if files directory is not accessible and fix comment
  • Ensure that markdown code formatting is not broken for ResultSender if data itself contains any backticks
  • Bump gradle to 4.2.2
  • Fix app packaging warning
  • Automatically attach debug APKs when a release is created
  • Add PASTE extra key for pasting text from clipboard
  • Fix comment
  • readme: update urls to https (Update URLs to HTTPS termux/termux-app#2190)
  • Update strings.xml
  • Fix issue where wrong IME inputType would be set if termux was returned to from another app with text input view mode selected
  • add "join the discord" badge
  • update the discord badge link to updated one
  • Add Gemini to the list of protocols
  • github: convert issue templates to forms
  • bug-report template: format text a bit
  • update bootstrap archives
  • terminal: invert text color under block cursor
  • terminal: set default cursor color to white
  • Fixed: Fix markdown link generation
  • Changed: Use millisecond timestamps for reports
  • Fixed: RunCommandService notification was not being cleared if an error was raised
  • Changed!: StreamGobbler needs to be passed log level parameter
  • Added: Support for MessageDialogUtils.showMessage() to receive positive and negative button OnClickListeners
  • Fixed: Catch exception when requesting permissions, like if request code is negative
  • Added: Support for reading and writing serialized objects to files and deleting files older than x days in FileUtils
  • Added!: Support for delete intent for Notification.Builder in NotificationUtils
  • Fixed: New plugin error or crash notifications overriding content of old ones
  • Added|Fixed!: Added support to save reports to files and fixed large reports generating TransactionTooLargeException
  • Added: Bootstrap error and report issue (optionally) will contain primary termux files stat info and logcat dump
  • Added: Add warning reports with (partial) screenshots of error reports instead of text will likely be automatically closed/deleted
  • Added: Add warning that hax support is not provided and asking questions will likely result in issue automatically closed or even ban
  • Fixed: Stdin not being logged for background execution commands
  • Added: Add labels for ExecutionCommand for termux internal commands
  • Changed: Use extended version of Logger functions for logging execution commands
  • Fixed: Fix NullPointerException when running bell/vibrate on Samsung devices on android 8 and handled deprecated code
  • Changed!: Changes introduced to disable/change logging in 60f37bd now also apply to stdin and plugin command results
  • Changed: Bump gradle library dependency versions
  • Changed: Bump compileSdkVersion to 31
  • Changed: Bump gradle to 7.2
  • Added!: Convert extra-keys to agnosticism
  • Fixed: Use default values if extra-keys or extra-keys-style termux.properties values are empty
  • Added: Add shift key support in extra keys and terminal with SHIFT or SHFT
  • Fixed: Ensure FN extra key is read by the terminal
  • Revert "Changed: Bump compileSdkVersion to 31"
  • Changed: Add selinux context info to termux files info of debug output
  • Changed: Renamed typo TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION to TERMUX_ACTIVITY.EXTRA_FAILSAFE_SESSION
  • Changed|Fixed: Drawer extra-keys button will toggle instead of just opening
  • Added: Allow users to disable hardware keyboard shortcuts
  • Added: Allow users to adjust terminal horizontal and vertical margin
  • Fixed|Added: Fix extra-keys shift key not uppercasing for all soft keyboards and added docs for keyboard key characters mapping
  • Fixed: Fix terminal cursor blinker not stopping when typing a character in non-gboard keyboards
  • Fixed|Changed: Fix TermuxFileReceiverActivity incorrect handling of intent extras
  • Added: Add SharedPrefernces controllers for all current published termux plugin app
  • Added: Add constants for termux-float in TermuxConstants
  • Added: Add more SharedPrefernces for termux-float and use multi-process for log level
  • Added: Add termux-float log level settings in termux app settings
  • Changed: Use multi-process SharedPrefernces for log level of plugin apps
  • Added: Add support for ~/.termux/termux.float.properties
  • Fixed: Ensure custom log level doesn't log if its off or null
  • Added/Fixed: Add support to consider empty String values as null for SharedPreferences
  • Changed: Split long resource string on multiple lines
  • Changed/Fixed: Ensure bootstrap installation creates prefix and prefix staging directory before extraction
  • Added: Add isTermuxAppInstalled() and isTermuxAppAccessible() functions to TermuxUtils
  • Added: Add constants and functions for termux-widget in TermuxConstants and TermuxPreferenceConstants
  • Added: Add log level setting in Termux Settings for termux-widget
  • Changed: Disable shrinkResources for testing reproducible builds
  • Fixed: Fix typos and refactor
  • Added: Allow users to disable auto capitalization of extra keys text
  • Changed: Make sure full path is included in FileUtilsErrnos
  • Added: Add SharedPreferences KEY_LAST_PENDING_INTENT_REQUEST_CODE for termux-tasker
  • Changed: Make allowed custom log level added in 60f37bd to be more restrictive
  • Added: Add TERMUX_IS_DEBUG_BUILD, TERMUX_APK_RELEASE and TERMUX_APP_PID to termux shell environment
  • Changed: Show system chooser if failed to find activity to handle url
  • Changed: Only show system chooser if ActivityNotFoundException is thrown when opening url
  • Changed!: Change TERMUX_IS_DEBUG_BUILD env variable name to TERMUX_IS_DEBUGGABLE_BUILD and change GITHUB_DEBUG_BUILD release type to just GITHUB
  • Added: Add TERMUX_API_VERSION to termux shell environment
  • Update README.md
  • Update README.md
  • Changed!: Do not wait for the user to press enter for failed terminal session commands if plugin expects the result back
  • Added: Add MIN_VALUE_EXTRA_SESSION_ACTION and MAX_VALUE_EXTRA_SESSION_ACTION to TermuxConstants
  • Changed: Minor refactor and comment updates of ReportActivity and ReportInfo
  • Added: Add getDefaultIfUnset() to DataUtils and update comment
  • Added: Add TextIOActivity and TextIOInfo
  • Update README.md
  • Update README.md
  • Added: Request android.permission.PACKAGE_USAGE_STATS permission
  • Support clicking directly on a URL to open it
  • Fix calculation of row number for selection and URL clicking
  • Update LICENSE.md
  • Changed: Store termux-widget token synchronously to the SharedPreferences file on creation
  • Added: Add Theme.MaterialComponents.DayNight.TermuxPrimaryActivity theme can be used by activities for day and night mode
  • Added: Add functions to PackageUtils to check/modify app Component states
  • Added: Add constants for launcher activities of termux plugins
  • Added: Add FileUtils.isPathInDirPaths()
  • Added: Add TermuxFileUtils.getExpandedTermuxPaths() and TermuxFileUtils.getUnExpandedTermuxPaths()
  • Fixed: Do not allow external apps to modify termux properties files with ContentProvider
  • Changed: Only allow ContentProvider access if allow-external-apps is set to true
  • bootstrap archives: update to 2021.10.03-r1
  • chore: Fix Discord server ID in shields.io badge
  • termux-shared: add android.permission.VIBRATE to manifest
  • bootstrap archives: update to 2021.12.02-r1
  • Fixed: Fix copy&paste error in areHardwareKeyboardShortcutsDisabled
  • bootstrap archives: update to 2022.01.02-r1
  • Changed: Move to semantic versioning for app and library versions and add commit hash and github to APK file names
  • Changed: Bump dependency versions
  • Fixed: Fix bootstrap checksum check if it contained leading zeros
  • Changed: Bump bootstrap to v2022.01.07-r1
  • Docs: Update README.md
  • Fixed: Fix bootstrap checksum check if it contained leading zeros
  • Changed: Bump to v0.118.0
  • Changed: Move termux apps properties file list to TermuxConstants and do not follow symlinks
  • Fixed: Fix NullPointerException when getting spanned markdown like for notification
  • Changed: Do not show toast if text null or empty
  • Added: Add support for getting external app info
  • Added: Add generic function TermuxUtils to get app info for termux app, its installed plugin apps and external apps
  • Added: Add info of installed plugin apps when report issue report is generated with debug mode enabled
  • Added: Add info of Termux API calling app in plugin command error reports and refactor notification functions
  • Added: Add info of all Termux plugins in bootstrap error reports and refactor notification functions
  • Changed!: Move ReportInfo parameters from constructor to functions
  • Fixed: Fix issue where menu wouldn't show when text on bottom row of terminal was selected
  • Fixed: Fix ArrayIndexOutOfBoundsException thrown because length was less than 0 when selecting text from terminal buffer
  • Fixed: Fix CSI Delete Ps Column(s) (DECDC)
  • Fixed: Use android.util.Log for terminal-emulator logging if TerminalSessionClient is null like when running tests
  • Fixed: Log exception instead of crashing app on NumberFormatException for invalid termcap/terminfo string requested
  • Changed: Move UrlUtils to TermuxUrlUtils
  • Added: Add comment for why clearing of $TMPDIR may be skipped on termux exit
  • Added: Add uid to app info
  • Changed: Use cached PackageInfo while getting version code and name for app
  • Changed: Get user handle for package instead of process user handle when getting profile user serial number
  • Added: Add UrlUtils
  • Changed!: Move Termux specific classes to com.termux.shared.termux package
  • Update LICENSE.md as per 5252fbb
  • Changed: Fix typos is PackageUtils
  • Added: Add ActivityUtils with functions to start activities for result
  • Added: Add ReflectionUtils and add dependency for org.lsposed.hiddenapibypass:hiddenapibypass
  • Changed|Fixed: Add java docs to PermissionUtils and fix permission checking
  • Added: Add support for MANAGE_EXTERNAL_STORAGE when targeting targetSdkVersion 30
  • Added: Add Logger.logInfoAndShowToast() and log messages even if not showing toast due to null Context
  • Added: Add Error.logErrorAndShowToast() and provide non-static logging functions to be used when Error may not be null
  • Added: Add functions to get dirname and basename in FileUtils
  • Fixed: Remove all trailing slashes when normalizing path
  • Changed: Fix minor typos in FileUtils and FileUtilsErrno
  • Added: Add FileUtils.regularOrDirectoryFileExists()
  • Added: Add support in SharedProperties to modify properties loaded from disk before they are mapped to internal values
  • Changed: Automatically use default properties file and client for TermuxSharedProperties.getTermuxInternalPropertyValue()
  • Changed|Deprecated: Deprecate use-black-ui termux property and replace it with night-mode
  • Fixed: Fix termux-open failing to open files with "#" and remove hardcoded "content" and "file" strings
  • Fixed: Fix TermuxService failing to execute files with "#"
  • Fixed: Fix TermuxFileReceiverActivity failing to open files with "#" and remove hardcoded "content" and "file" strings and fix indentation
  • Fixed: Get file basename from Uri path when opening files in termux if failed to get it ContentResolver and EXTRA_TITLE
  • Changed!: Rename FileUtils readStringFromFile() to readTextFromFile() and writeStringToFile() to writeTextToFile()
  • Added: Add UriScheme and move UriUtils to com.termux.shared.net package
  • Changed!: Move to package-by-feature hierarchy for classes not using it since termux-shared is growing too big and layers are getting out of hand
  • Changed!: Rename TermuxTask to AppShell since its not part of termux-app or com.termux.shared.termux package
  • Changed!: Remove TermuxConstants reference from Logger and set DEFAULT_LOG_TAG at application startup
  • Changed: Remove TermuxConstants reference from PackageUtils
  • Changed: Return Error instead of boolean for ActivityUtils.startActivityForResult()
  • Added: Add ActivityUtils.startActivity() and catch uncaught exceptions in TermuxActivity
  • Added: Add support to request Settings.ACTION* permissions to be requested via Service context
  • Changed: Use PermissionUtils to request disabling battery optimizations in TermuxService
  • Fixed: Do not use colon character ":" in log tag since it is invalid and breaks logcat command filterspecs argument
  • Changed: Store app wide night mode in NightMode.APP_NIGHT_MODE so that libraries can use it directly without having to load or get it from termux properties
  • Fixed: Fix ArrayIndexOutOfBoundsException when setting zero width terminal character
  • Fixed: Catch rare RuntimeException while loading bell
  • Fixed: Fix termux background command logging at verbose level if CUSTOM_LOG_LEVEL was not passed
  • Changed: Make ExtraKeysView private functions public and variables protected
  • Changed: Rename ActivityUtilsErrno to ActivityErrno
  • Fixed: Remove unused imports
  • Changed: Replace extra-keys Button with MaterialButton
  • Fixed: Add uncommitted string resource changes
  • Changed: Remove redundant double quotes from string resources
  • Changed: Add uncommitted changes from 361bfb3
  • Fixed: Add accidentally removed import in 5252fbb
  • Fixed: Fix FileUtils labels
  • Added: Add annotations and modifiers
  • Added: Store pid in ExecutionCommand for sessions and tasks
  • Fixed: Fix termux app restarting on samsung dex version < 3.0 when switching modes
  • Changed: Rename UriUtils getUriFilePath() to getUriFilePathWithFragment()
  • Fixed: Do not open null or empty file paths passed to TermuxOpenReceiver
  • Update: Remove duplicate log tag prefix from TermuxOpenReceiver
  • Changed: Change ShareUtils.openSystemAppChooser() to public
  • Changed: Rename ShareUtils openURL() to openUrl()
  • Added: Add support for shared day/night theming across termux apps
  • Added: Add explicit exported attribute for app components as required by Android 12
  • Docs: Add notice that users should upgrade to v0.118.0 ASAP
  • Fixed: Fix termux session shortcuts not working after TermuxActivity recreation
  • Changed: Do not recreate TermuxActivity enabled in 6631599 when TermuxService starts a session
  • Docs: Add notice that termux is broken on Android 12
  • Fixed: Fix AppShell failsafe env
  • Docs: Fix issue link
  • Fixed: Fix terminal sessions being re-added if "New Session" shortcut or termux-reload-settings was used
  • Fixed: Fix issue where a colour tint/highlight would be added to the terminal on activity re-creation
  • Fixed: Change extra keys and terminal input view background to black
  • Fixed: Rename TermuxActivity isOnResumeAfterOnCreate to mIsOnResumeAfterOnCreate as per variable naming convention
  • Fixed: Fix app crash if failed to start TermuxService while in background due to android bg restrictions
  • Fixed: Fix typo from 43858df
  • Fixed: Fix typo from 43858df
  • Docs: Update matrix invite links
  • Docs: Add building bootstrap link
  • Added: Add support for getting feature flag values and show MONITOR_PHANTOM_PROCS value in about page
  • Update README.md
  • Changed: Use application context for SharedProperties
  • Changed: Load termux.properties into a single static app wide TermuxAppSharedProperties class
  • Changed|Deprecated: Move from shell command background mode to command runner
  • Added: Add ic_info and ic_settings
  • Docs: Add termux apps vulnerability disclosure post links to README
  • Fixed: Fix PermissionUtils.requestPermissions() not requesting multiple permissions correctly
  • Fixed: Suppress warnings for requiring android 11 to request MANAGE_EXTERNAL_STORAGE permission and call Environment.isExternalStorageManager()
  • Added: Add TERMUX_API_APT_* constants
  • Fixed: Do not add double heading if callingPackageName passed to TermuxUtils.getAppInfoMarkdownString() is a plugin app
  • Added: Add support for getting termux app and plugin app info only in TermuxUtils.getAppInfoMarkdownString()
  • Added: Add multi process support in TermuxAppSharedPreferences since plugin apps may need to read values modified by termux app process
  • Added: Add support for onPreLogCrash() and onPostLogCrash() in CrashHandler so that CrashHandlerClient can decide which exceptions to log and add custom logic
  • Changed: Move com.termux.app.utils.CrashUtils to com.termux.shared.termux.crash.TermuxCrashUtils so that plugins trigger plugin notifications too
  • Added: Add support for ACTION_NOTIFY_APP_CRASH in receiver registered by TermuxActivity to notify users of plugin app crashes
  • Changed: Check crash log file whenever TermuxActivity is resumed instead of only on app startup
  • Fixed: Fix typos
  • Changed: Share terminal transcript with ShareUtils
  • Changed: Use thread to setup settings components
  • Added: Add ~/storage symlinks for documents, podcasts and audiobooks
  • Fixed: Add media-* symlinks to Android/media for all storages and external-0 symlink to Android/media of primary storage
  • Fixed: Fix wrong input type selected if toolbar is switched back to extra keys after tapping terminal if in text input mode
  • Added: Allow users to adjust $TMPDIR clear mechanism on termux exit
  • Fixed: Fix pull request APKs commit hash
  • Added: Log intents received by and
  • Fixed: Fix Settings.ACTION_* permission requests result callback
  • chore(gitignore): Remove unused ignore rules for crashlytics (Remove crashlytics termux/termux-app#2683)
  • Changed: Maintain terminal session name in ExecutionCommand.sessionName in addition to TerminalSession.mSessionName
  • Added|Changed: Add support to switch to existing session instead of creating duplicate session for RUN_COMMAND intent
  • Changed: Bump bootstrap to v2022.04.21-r1
  • Added: ArgumentTokenizer to com.termux.shared.shell
  • Added: termux-am-library to integrate am with Termux.
  • Added: LocalFilesystemSocket as an Interface to UNIX sockets in the filesystem. The UID of connecting programs is automatically checked against the processes UID and connections where the UID doesn't match are automatically rejected and logged. Changed: LocalSocketListener now uses sockets in the filesystem.
  • Changed: Set termux-am-library to a tag instead of following the main branch.
  • Changed: Allow connections from root o sockets.
  • Changed: Moved the am socket to PREFIX/var/run/am-socket
  • Changed: Updated the termux-am-library dependency, because the repo is now part of the Termux github organization.
  • Changed: Set socket dir to /data/data/com.termux/files/api/
  • Changed: Move com.termux.app.utils.PluginUtils to com.termux.shared.termux.plugins.TermuxPluginUtils
  • Changed: Rename TermuxCrashUtils sendPluginCrashReportNotification() to sendCrashReportNotification()`
  • Changed|Fixed: Do not add empty stacktraces entry to Error log and markdown String
  • Changed: Add label parameter to ExecutionCommand getArgumentsLogString() and getArgumentsMarkdownString() functions for external usage
  • Fixed: Do not stop the app if UncaughtExceptionHandler implemented by CrashHandler receives an exception on a non main thread
  • Added: Add functions that can be used by non main threads to set CrashHandler as the UncaughtExceptionHandler
  • Added: Add functions to DataUtils to get generic, space and tab indented strings
  • Fixed: Log and add to Error the current file type in FileUtils.deleteFile() in addition to allowed file types
  • Added: Add FileType.SOCKET support and add FileUtils.deleteSocketFile() function
  • Fixed: Allow Object class object to be passed to ReflectionUtils.invokeField()
  • Added|Changed: Add Logger.logErrorPrivate*() functions which do not log errors that may contain potentially private info unless log level is debug or higher
  • Added: Add TERMUX_APPS_DIR_PATH and TERMUX_APP.APPS_DIR_PATH and create them at application startup.
  • Added: Add functions to UserUtils to get user name for user id from PackageManager and Libcore
  • Added: Add function to ProcessUtils to get app process name for a pid from ActivityManager
  • Added: Allow users to disable termux-am server
  • Added|Changed|Fixed: Refactor local socket server implementation and make client handling abstract
  • Changed: Refactor am socket server
  • Fixed: Fix proguard removing JNI used methods for release builds
  • Changed: Bump bootstrap to v2022.04.22-r1
  • Added: Add support for TERMUX_APP_PACKAGE_MANAGER and TERMUX_APP_PACKAGE_VARIANT to build APKs with different package manager configurations
  • Changed: Write only our open collective to FUNDING.yml
  • Changed: Use double quotes instead of single quotes for all gradle dependencies
  • Changed: Bump down minSdkVersion from 24 to 21 to restart supporting android 5/6 for the time being
  • Changed: Enable desugaring support to enable support for new language APIs like Java 8 on old android versions
  • Changed: Bump termux-am-library to 2.0.0 that uses minSdkVersion 21
  • Changed: Use float dp parameter instead of int for ViewUtils.dpToPx() to not lose precision
  • Added: Add ViewUtils.pxToDp()
  • Changed: Add general compatibility fixes for minSdkVerion 21
  • Fixed: Fixed extra keys not showing properly on Android 5
  • Fixed: Fix broken javadocs links
  • Changed: Export correct PATH and also export LD_LIBRARY_PATH for Android 5/6 since packages won't use DT_RUNPATH
  • Added: Add ResourceUtils to get resource ids from names
  • Added|Fixed: Add TermuxNotificationUtils.getTermuxOrPluginAppNotificationBuilder() helper function and fix notification icon drawable resource id issue on Android 5
  • Added: Add message to bootstrap error if user installed termux on portable/external/removable sd card since its not supported on some devices
  • Fixed: Catch UnsatisfiedLinkError for local-socket library
  • Added: Enable TERMUX_PACKAGE_VARIANT apt-android-5 builds
  • Changed: Bump android-5 bootstraps to v2022.04.28-r6
  • Changed: Bump android-7 bootstraps to v2022.04.28-r5
  • Changed: Export correct PATH and also export LD_LIBRARY_PATH for apt-android-5 variant instead of on Android 5/6
  • Added: Add TERMUX_DEVS key SHA-256 digest to official signing keys list
  • Fixed: Do not setup plugin and crash notification channel on API < 24 since NotificationManager.IMPORTANCE_HIGH requires API 24
  • Changed: Change termux support email from termuxreports@groups.io to support@termux.dev
  • Fixed: Fix Settings.ACTION_* permission requests for non-activity contexts
  • Changed: Change TERMUX_APP.APPS_DIR_PATH basename from termux-app to com.termux
  • Changed: Do not modify code points for virtual or soft keyboard events
  • Added: Add support to get termux app package context with code classloader for plugin usage
  • Added: Add support for plugin apps to set TERMUX_APP_PACKAGE_VARIANT and TERMUX_APP_PACKAGE_MANAGER from Termux app APK BuildConfig.TERMUX_PACKAGE_VARIANT
  • Added|Changed!: Rename SESSION_NAME and SESSION_CREATE_MODE to SHELL_NAME and SHELL_CREATE_MODE and add support for ShellCreateMode to AppShells
  • Added|Changed: Add termux site url and change donate url to https://termux.dev/donate
  • Removed: Remove Termux game, root, science, unstable and x11 repo links since they have all been merged with https://github.com/termux/termux-packages
  • Changed: Update funding link to https://termux.dev/donate
  • Changed: Update termux twitter to https://twitter.com/termuxdevs
  • Changed: Ensure AppShell executable is not null before trying to execute it
  • Changed: Ensure TermuxSession executable is null if its empty so that login shell can start
  • Added: Add SELinuxUtils to get process and file paths security contexts
  • Added: Add functions to PackageUtils to get seInfo and seInfoUser of package
  • Added: Add functions to PackageUtils to get base APK path of package
  • Added: Add package APK_PATH, SE_PROCESS_CONTEXT, SE_FILE_CONTEXT and SE_INFO when generating app info markdown string
  • Fixed: Fix duplicate logging of file word in FileUtils.copyOrMoveFile()
  • Added|Changed!: Implement new design for shell environment generation and add support for MIT licensed shell environment client
  • Added: Add TermuxShellManager to manage all termux app wide shells
  • Added: Add support in AppShell and TermuxSession for caller to add/override additional environment variables not added by IShellEnvironment.setupShellCommandEnvironment()
  • Changed: All ExecutionCommands not managed by TermuxShellManager should have id -1
  • Added: Add UnixShellEnvironment.LOGIN_SHELL_BINARIES variable for common/supported login shell binaries searched and add fish and sh shell as additional backups
  • Added|Changed!: Add TermuxAppShellEnvironment and TermuxAPIShellEnvironment to export Termux and Termux:API app variables in TermuxShellEnvironment
  • Changed: Update TERMUX_APP__AM_SOCKET_SERVER_ENABLED environment variable value if termux-am-socket server state changes
  • Added: Add ShellCommandShellEnvironment and TermuxShellCommandShellEnvironment to export ExecutionCommand variables
  • Added: Init TermuxShellEnvironment at app startup
  • Added: Write termux shell environment to /data/data/com.termux/files/usr/etc/termux/termux.env on app startup and package changes
  • Added: Add SettingsProviderUtils to get Setting global, secure and system namespace values
  • Added: Add PhantomProcessUtils to get phantom processes related settings values
  • Added: Add MAX_PHANTOM_PROCESSES and DEVICE_CONFIG_SYNC_DISABLED value to device info output like shown in Termux About page
  • Added|Changed: Added TermuxTerminalSessionServiceClient and renamed TermuxTerminalSessionClient to TermuxTerminalSessionActivityClient
  • Fixed: Fix ExecutionCommand.pid not being set for first and background terminal sessions since TermuxTerminalSessionClientBase was still being used instead of TermuxTerminalSessionActivityClient
  • Added: Allow users to disable termux file view and share receivers
  • Changed: Do not re-set component state if current state equals new state in PackageUtils.setComponentState()
  • Fixed: Fix message dialog button text not showing in day mode due to white text
  • Fixed: Catch exceptions if failed to bypass hidden API restrictions
  • Changed: Use black or white cursor color based on terminal background instead of always white if colors.properties didn't have cursor color set
  • Fixed: Fix CSI parameters parsing like for SGR sequences that start with a ; or have sequential ; characters
  • Fixed: Ensure CSI parameter value is not greater than 9999 as per vt510
  • Fixed: Fix termux.properties reload not working if the properties file didn't exist at app startup
  • Fixed: Fix bootstrap not installing on app install
  • Added: Add SCROLL extra key to toggle auto scrolling of terminal to bottom on terminal text updates and termux activity return
  • Fixed: Fix shared terminal transcript joining back lines
  • Added: Start termux app docs support at https://termux.dev/docs/apps/termux as per termux/termux.github.io@612fa084 and termux/termux.github.io@f9c8d848
  • Added: Add check for if Termux has been granted Display Over Apps Permission if starting activities and services with termux-am-socket on Android 10+
  • Added: Add multi language i18n support for docs per termux/termux.github.io@f234d089e
  • rename dev_keystore.jks to testkey_untrusted.jks
  • readme: add notes about test keystore
  • Added|Changed: Add AppSharedPreferences to hold SharedPreferences of apps and inherit termux app prefrences from it
  • Changed: Update phantom process links
  • Changed: Use ShareUtils to copy and paste text and prevent potential NPE
  • Added: Add support for Share selected text of terminal in long hold MORE menu so that users don't have to copy and paste to move text between apps
  • Added: Add KEY_LAST_PENDING_INTENT_REQUEST_CODE to TermuxAPIAppSharedPreferences
  • Update actions/checkout to v3
  • Update actions/upload-artifact to v3
  • feat(KeyHandler): respect modifiers with PgUp and PgDn
  • Fix GitHub spelling
  • Create dependabot.yml
  • update WcWidth.java to Unicode 15.0.0
  • WcWidth.c: fix typo
  • WcWidth.c: fix 2nd typo
  • Fix GitHub spelling
  • ci: use termux/upload-release-actions to attach debug builds to new releases
  • Added: Add monochrome icon
  • Changed: Bump robolectric to 4.9.2
  • Changed: Bump Robolectric to 4.10
  • docmodified the links in file
  • Revert "docmodified the links in file"
  • Changed(README.md): Improved some links to Hyperlinks
  • Changed: Add PGUP and PGDN extra keys to repetitive keys so that long holding them triggers page scrolling instead of having to repeatedly press the key to change pages
  • Fixed: Fix SHIFT+PAGE_UP and SHIFT+PAGE_DOWN behaviour to scroll 1 line of scrollback history instead of scrolling command history or changing pages
  • update readme
  • update readme
  • Changed: Only show github action builds for pushes to master branch and not of other branches and pull requests
  • Fixed: Fix toggle toolbar not working due to accidental comment of function in a56ed57
  • Fixed: Allow numbers and hyphens in domain extension for url selector
  • Fixed: Fix headings in README.md
  • Changed: Remove info from README.md that fornwall is inactive and issue No more exec from data folder on targetAPI >= Android Q termux/termux-app#1072 needs extra attention
  • Fixed: Fix dependabot commit format to use convetional commit format
  • Changed: Bump actions/checkout from 3 to 4
  • Chore: Add vim swap files to .gitignore
  • Changed: Update README with info on how to install termux for android 5 and 6
  • Changed: Put GitHub debug keystore information in README in dropdown
  • Changed!: Update commit messages guidelines in README to be more clear and remove Docs as a valid type
  • Changed: Update Twitter to X (Twitter) in README
  • Changed: Bump actions/download-artifact from 3 to 4 (Changed: Bump actions/download-artifact from 3 to 4 termux/termux-app#3736)
  • Changed: Bump actions/upload-artifact from 3 to 4 (Changed: Bump actions/upload-artifact from 3 to 4 termux/termux-app#3735)
  • Changed: Bump gradle/wrapper-validation-action from 1 to 2
  • Changed: Bump termux/upload-release-action from 4.1.0 to 4.2.0
  • Fixed: Limit max combining characters in TerminalRow to 15 characters to prevent buffer overflows
  • Reverted: Revert "ci: use termux/upload-release-actions to attach debug builds to new releases"
  • Changed: Bump gradle/wrapper-validation-action from 2 to 3
  • Added: Request SET_ALARM permission to allow broadcasting an intent to set an alarm or timer in an alarm clock app
  • Changed: Update information regarding Google Play in README
  • Added: Add support for GitHub action builds for github-releases/** branches
  • Fixed: Use current bg color when scrolling with horizontal margins
  • Fixed: Improve handling of empty ';' SGR sequences
  • Make Shift-PgUp and Shift-PgDn scroll by pages rather than lines
  • Added drawing layer above terminal.
  • added gesture.conf, list of gesture data for various characters
  • move gesture.conf to gesture for use as R.raw.gesture and add in most everything needed, mostly works on square android watch!
  • disable terminal toolbar always, dont need it with gestures around
  • fixup gesture raw resource name
  • add prefix gesture (swipe bottom left to top right) and then up or down gestures for font increase/decrease since we took away ability to pinch zoom in terminal view
  • Fixed font size up/down gesture so that up/down is not sent to terminal
  • sorry, i want termux-app to be home/default/launcher
  • fixup gesture loading so we use resource if storage is not available
  • trying to debug focus/redraw issues on timex familyconnect senior watch
  • further debugging, nearly there, seem to be getting the wrong mClient so updates going the wrong place
  • refactor to remove gesture stuff as much as possible from termuxactivity class
  • improve gesture conf loading and more no-update-display debugging, near sessions maybe
  • change to interstitial homeactivity like simple-sms-messenger does which seems to work
  • revert logging in classes unaffected by gesture code
  • remove logging, cleanup bits in termuxactivity for gesture version
  • fixup gesture view to take whole screen. I had made it smaller to test out responsiveness that I fixed with an interstitial activity
  • trying to get termux-app to sleep on a timeout. does not for me right now as-is.
  • Fixed build problem: Unable to make field private final java.lang.String java.io.File.path accessible
  • adjust iterate script to build the app
  • comment out logging that is way too noisy, delete these after reviewing why I added them, scroll problems maybe, or layers
  • silence some noisy gesture logging

…it since termux-shared is growing too big and layers are getting out of hand
…T_LOG_TAG at application startup

Plugin apps must do the same
…and breaks logcat command filterspecs argument
…t libraries can use it directly without having to load or get it from termux properties
…minal character

java.lang.ArrayIndexOutOfBoundsException: length=64; index=-1
at com.termux.terminal.TerminalRow.setChar(TerminalRow.java:127)
at com.termux.terminal.TerminalBuffer.setChar(TerminalBuffer.java:413)
at com.termux.terminal.TerminalEmulator.emitCodePoint(TerminalEmulator.java:2329)
at com.termux.terminal.TerminalEmulator.processCodePoint(TerminalEmulator.java:617)
at com.termux.terminal.TerminalEmulator.processByte(TerminalEmulator.java:513)
at com.termux.terminal.TerminalEmulator.append(TerminalEmulator.java:480)
at com.termux.terminal.TerminalSession$MainThreadHandler.handleMessage(TerminalSession.java:339)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
java.lang.RuntimeException: Unable to resume activity {com.termux/com.termux.app.TermuxActivity}: android.content.res.Resources$NotFoundException: File res/raw/bell.ogg from drawable resource ID #0x7f0f0001
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3480)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3520)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1554)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6247)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
     Caused by: android.content.res.Resources$NotFoundException: File res/raw/bell.ogg from drawable resource ID #0x7f0f0001
        at android.content.res.ResourcesImpl.openRawResourceFd(ResourcesImpl.java:308)
        at android.content.res.Resources.openRawResourceFd(Resources.java:1272)
        at android.media.SoundPool.load(SoundPool.java:247)
        at com.termux.app.terminal.TermuxTerminalSessionClient.getBellSoundPool(TermuxTerminalSessionClient.java:257)
        at com.termux.app.terminal.TermuxTerminalSessionClient.onResume(TermuxTerminalSessionClient.java:82)
        at com.termux.app.TermuxActivity.onResume(TermuxActivity.java:290)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1270)
        at android.app.Activity.performResume(Activity.java:6861)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3457)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3520)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1554)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6247)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
     Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
        at android.content.res.AssetManager.openNonAssetFdNative(Native Method)
        at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:467)
        at android.content.res.ResourcesImpl.openRawResourceFd(ResourcesImpl.java:306)
        at android.content.res.Resources.openRawResourceFd(Resources.java:1272)
        at android.media.SoundPool.load(SoundPool.java:247)
        at com.termux.app.terminal.TermuxTerminalSessionClient.getBellSoundPool(TermuxTerminalSessionClient.java:257)
        at com.termux.app.terminal.TermuxTerminalSessionClient.onResume(TermuxTerminalSessionClient.java:82)
        at com.termux.app.TermuxActivity.onResume(TermuxActivity.java:290)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1270)
        at android.app.Activity.performResume(Activity.java:6861)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3457)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3520)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1554)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6247)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
agnostic-apollo and others added 28 commits June 5, 2024 19:13
Currently the Termux terminal emulator prints "HI" in red with:

```sh
printf "\e[31;m HI \e[0m"
```

This is not how other terminals (tested on xterm, gnome-terminal,
alacritty and the mac built in terminal) handle it, since they parse
""\e[31;m" as "\e[31;0m", where the "0" resets the colors.

This change aligns with other terminals, as well as improves performance
by avoiding allocating a new int[] array for each byte processed by
`parseArg()`, and most importantly simplifies things by removing the
`mIsCSIStart` and `mLastCSIArg` state, preparing for supporting ':'
separated sub parameters such as used in
https://sw.kovidgoyal.net/kitty/underlines/
In other terminals, such as gnome-terminal, Shift-PgUp and Shift-PgDn
scroll the screen by a full page, rather than a single line. Adjust
termux to match.
… everything needed, mostly works on square android watch!
…wn gestures for font increase/decrease since we took away ability to pinch zoom in terminal view
…t out responsiveness that I fixed with an interstitial activity
…ng why I added them, scroll problems maybe, or layers
craigcomstock pushed a commit that referenced this pull request Nov 11, 2025
…`6.1` to fix crash on Android 16 QPR1

```
Build fingerprint: 'google/shiba_beta/shiba:16/BP31.250502.008/13497110:user/release-keys'
Revision: 'MP1.0'
ABI: 'arm64'
Executable: /system/bin/app_process64
Cmdline: com.termux
pid: 22617, tid: 22617, name: com.termux  >>> com.termux <<<
uid: 10323
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
esr: 0000000092000006 (Data Abort Exception 0x24)
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x000000000000000c
Cause: null pointer dereference
    x0  0000000070b6f798  x1  0000000002159228  x2  000000000000000c  x3  00000000ebad6073
    x4  00000000ebad6074  x5  00000000ebad6075  x6  00000000ebad6076  x7  00000000ebad6077
    x8  00000000ebad6078  x9  00000000ebad6079  x10 00000000ebad607a  x11 00000000ebad607b
    x12 00000000ebad607c  x13 00000000ebad607d  x14 00000000ebad607e  x15 00000000ebad607f
    x16 0000007feda203f0  x17 0000007976776a9c  x18 0000007cd0e44000  x19 b400007b850b8be0
    x20 0000000000000000  x21 b400007b850b8ca0  x22 0000000000000000  x23 00000000021592b8
    x24 000000006413b378  x25 0000000070b99ee0  x26 0000000070b9fc78  x27 0000000000000000
    x28 0000000000000053  x29 0000000070b99ee0
    lr  0000007976776a98  sp  0000007feda203f0  pc  0000007976776b0c  pst 0000000080001000
    esr 0000000092000006
26 total frames
backtrace:
      #00 pc 00000000000c8b0c  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (org.lsposed.hiddenapibypass.HiddenApiBypass.getDeclaredMethods+780)
      #1 pc 00000000000c8dc4  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (org.lsposed.hiddenapibypass.HiddenApiBypass.setHiddenApiExemptions+68)
      #2 pc 00000000000ae560  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.reflection.ReflectionUtils.bypassHiddenAPIReflectionRestrictions+448)
      #3 pc 00000000000a342c  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.android.SELinuxUtils.getContext+108)
      #4 pc 00000000000c0b60  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.termux.shell.command.environment.TermuxAppShellEnvironment.setTermuxAppEnvironment+3216)
      #5 pc 000000000009eafc  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.app.TermuxApplication.onCreate+1596)
      ...
      termux#22 pc 0000000000105c98  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+104) (BuildId: ea93df5e792bbd2e0cbb71b2a7599aaa)
      termux#23 pc 000000000013121c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+908) (BuildId: ea93df5e792bbd2e0cbb71b2a7599aaa)
      termux#24 pc 000000000000459c  /system/bin/app_process64 (main+1212) (BuildId: a237cfae6965d7f0b950e5955c73432c)
      termux#25 pc 000000000006bb88  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+120) (BuildId: eecb0fc2ec8128ec92c091c0160586d1)
```

Related commit LSPosed/AndroidHiddenApiBypass@9efadf06
Related commit https://android-review.googlesource.com/c/platform/libcore/+/3380841
Related commit https://cs.android.com/android/_/android/platform/libcore/+/0dc31afe

Closes termux#4556
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SAF provider does not show in pickers New session not expanding \W in bash prompt correctly DocumentProvider does not allow createDocument()