Releases: 9hm2/NeoTerm
NeoTerm v2.0.167 - Keyboard Shortcuts & Adaptive Theme Fixes
🔧 Critical Keyboard Fixes
This release resolves two major keyboard-related issues that significantly improve the user experience.
Fixed Issues
1. ⌨️ Keyboard Disappearing on Tab Switch with Shortcuts
Problem: When switching terminal tabs using keyboard shortcuts (Alt+1-9, Ctrl+Shift+Z, Ctrl+Shift+X), the on-screen keyboard would disappear and refuse to reappear until the Back button was pressed.
Solution: Implemented proper IME (Input Method Editor) connection restoration. Now when switching tabs via keyboard shortcuts, the system automatically:
- Restores focus to the terminal view
- Re-establishes the IME connection using
restartInput() - Ensures seamless keyboard availability across all tab switches
Impact: Keyboard shortcuts now work flawlessly without interrupting your workflow.
2. 🎨 HackersKeyboard Adaptive Theme Not Updating
Problem: The HackersKeyboard's adaptive theme feature wasn't synchronizing with terminal color scheme changes. This was especially problematic when:
- Switching between tabs with different profiles (each having unique color schemes)
- Changing the global color scheme in Customize settings
- Using profile-based sessions with custom themes
Solution: Implemented real-time color synchronization between NeoTerm and HackersKeyboard IME service:
- NeoTerm saves terminal colors (background, foreground) to SharedPreferences whenever colors change
- HackersKeyboard IME monitors these preferences and instantly applies adaptive theme updates
- Each tab's color scheme is respected - switching tabs updates keyboard colors automatically
- Works seamlessly with profile-based tabs and global color scheme changes
Impact: Your keyboard now perfectly matches your terminal's theme at all times, automatically adapting to each tab's unique color scheme.
Technical Details
Files Modified:
- app/src/main/java/io/neoterm/ui/term/NeoTermActivity.kt - Added IME restoration in onSelectionChanged()
- app/src/main/java/io/neoterm/ui/term/tabs.kt - Added updateKeyboardColorsForTab() method
- HackersKeyboard/src/main/java/io/neoterm/keyboard/pckeyboard/LatinIME.java - Added applyNeoTermAdaptiveTheme() method
Compatibility:
- Requires HackersKeyboard IME to be enabled for adaptive theme functionality
- Keyboard shortcuts work with any IME
- ARM64-v8a devices only
Installation
- Download the APK below
- Install (allow "Install from Unknown Sources" if needed)
- Enable HackersKeyboard in Android Settings → System → Languages & Input → Virtual Keyboard
- Select HackersKeyboard as your input method in NeoTerm
Full Changelog: v2.0.151...v2.0.167
🤖 Generated with Claude Code
NeoTerm v2.0.151 - Profile Settings Persistence & UI Performance
NeoTerm v2.0.151 - Profile Settings Persistence & UI Performance
🎯 What's Fixed
Profile Settings Persistence
- Fixed background color not persisting on tab switch - Terminal sessions now correctly maintain their background colors when switching between tabs
- Complete settings isolation - All settings (colors, fonts, extra keys) now properly apply for both profiled and non-profiled sessions
- Default profile system - Sessions without explicit profiles now use a dynamic default profile that always reflects current global settings
UI Performance
- Smooth tab switching - Eliminated UI freezes during tab switches by making settings application asynchronous
- Instant response - Tab switches now feel instant and fluid
🔧 Technical Changes
-
Default Profile System (
ProfileComponent.kt)- Added
getDefaultProfile()function that creates a hidden "DEFAULT" profile - This profile dynamically generates settings from current global preferences
- Ensures non-profiled sessions always have correct settings
- Added
-
Unified Settings Application (
tabs.kt)- Enhanced
applyAllSettings()to use default profile when no explicit profile exists - Modified
bindTerminalView()to always apply settings asynchronously (prevents UI freeze) - Settings now apply consistently whether tab has profile or not
- Enhanced
-
Enhanced Session Switching (
NeoTermActivity.kt)- Improved
onSelectionChangedto ensure settings apply on every tab switch - Added
checkAndApplySettingsChanges()to detect setting changes on activity resume
- Improved
✅ Benefits
- ✓ Background colors persist correctly across all tab switches
- ✓ All settings (color schemes, fonts, extra keys) apply consistently
- ✓ Smooth, lag-free UI during tab operations
- ✓ Profile isolation maintained - no settings leak between profiles
- ✓ Non-profiled sessions properly use global settings
📦 Installation
Download the APK below and install it on your Android device. Make sure to enable "Install from Unknown Sources" in your Android settings.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Version 2.0.125
Changes in 2.0.125
Fixed
- Asset extraction on fresh install - colors and fonts now load properly without needing to clear app data
- Changed extractAssetsDir from .takeWhile to .filter to process all files
- Fixed issue where existing files would stop asset extraction early
- Ctrl/Alt/Meta key visibility in adaptive keyboard theme
- Increased active state foreground blend from 40% to 60% for better visibility
- Active modifier keys are now clearly visible when pressed
- GitHub update checker configuration and version comparison
- Updated repository URL to https://github.com/9hm2/NeoTerm
- Implemented proper semantic version comparison (2.0.124 → 2000124)
- Fixed version comparison logic to compare full version strings instead of just patch numbers
Added
- Version-based asset management system
- Assets automatically update when app is updated
- Added CURRENT_ASSETS_VERSION constant (v2) in NeoPreference
- Force overwrites assets when version increases
- Developers can increment version to push new assets to users
- Automatic update checking on app startup
- Checks GitHub releases every 24 hours
- Shows update dialog with download, skip, and later options
- Respects user's skipped version preference
Technical Details
- ColorSchemeComponent and FontComponent now check asset version on initialization
- extractAssetsDir accepts forceOverwrite parameter for version-based updates
- UpdateChecker converts semantic versions to comparable integers for accurate comparison
- LatinKeyboardBaseView blendColors uses 60% foreground for active states
🤖 Generated with Claude Code
NeoTerm v2.0.111 - Bootstrap Setup & Package Management Fixes
Changes
- Fixed symlink creation (removed leading ./ prefix)
- Improved file selection with URI support
- Added bootstrap creator script with dpkg wrapper
- Package installation path fixes (com.termux → io.neoterm)
Install
Download and install NeoTerm-2.0.111-debug.apk
NeoTerm v2.0.107 - Custom Profile Icons & Session Improvements
New Features
- Custom Profile Icons: Add custom PNG icons to profiles (similar to font/color import)
- Icon Import: Import icons via Customize menu
- Profile Shortcuts: Shortcuts now use custom icons and work when app is not running
Improvements
- Auto-close: App automatically closes when last session is closed
- Profile Launcher: Fixed profile shortcut launch when app is in background
Changes
- Added IconComponent for managing custom profile icons
- Added icon selection in Profile Editor
- Updated ShortcutHelper to use profile-specific icons
- Improved session management and app lifecycle
🤖 Generated with Claude Code
NeoTerm v2.0.98 - HackersKeyboard & Context Menu Toggles
New Features
🎹 HackersKeyboard Integration
- Integrated HackersKeyboard as custom IME for terminal
- Multi-language support and layouts
- Better keyboard experience for terminal usage
🔒 Context Menu Power Options
- Keep Screen On: Toggle to prevent screen from turning off
- Wake Lock: Toggle to prevent device from sleeping
- Access via long-press → More menu
- Settings persist across app restarts
- Proper lifecycle management
Implementation Details
- SharedPreferences for persistent storage
- WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON for screen
- PowerManager.PARTIAL_WAKE_LOCK for wake lock
- Automatic settings restoration on app resume
Download
- NeoTerm-2.0.98-debug.apk - Debug build with all features
🤖 Generated with Claude Code
NeoTerm v2.0.48
What's New in v2.0.48
🎨 System UI Color Sync
- Toolbar & Notification Bar now automatically sync with your terminal color scheme
- Toolbar text, icons, and menu items adapt to terminal foreground color
- Notification bar background matches terminal background
- Notification bar icons/text automatically adjust for optimal contrast on light/dark backgrounds
🔄 Automatic Update Checker
- New automatic update checking system
- Checks for updates every 24 hours (non-intrusive)
- Beautiful changelog display with release notes
- Three options when update is available:
- Download: Get the latest version
- Skip this version: Never be reminded about this version again
- Later: Remind me next time
Technical Improvements
- Added Kotlin Coroutines support for better async operations
- GitHub API integration for update checking
- Intelligent color brightness detection
- Improved color scheme handling
🤖 Built with Claude Code
v2.0.41 - Advanced Text Selection with Scrolling
🎯 Advanced Text Selection System
✨ Major Improvements
- Unrestricted scrolling during text selection - Terminal scrolling works exactly like without selection
- Smart dual-mode behavior:
- 🎨 Dragging selection handles → Adjust selection boundaries + auto-scroll at screen edges
- 📜 Dragging anywhere else → Scroll terminal freely (selection stays anchored to text)
- 60 FPS auto-scroll when dragging handles near screen edge (16ms intervals)
- Both selection handles functional with accurate screen-coordinate detection
- Fling scrolling enabled during text selection for fast navigation
- Selection position preserved in buffer during scroll
🔧 Technical Details
- Handle detection: 3 character cells touch threshold
- Auto-scroll: 60 FPS (16ms intervals) for smooth performance
- Selection anchoring: Stays on same text when scrolling
- Screen-coordinate based handle detection for accuracy
- Separate code paths for handle dragging vs terminal scrolling
📱 How to Use
- Long press to enter text selection mode
- Drag handles to adjust selection (auto-scrolls at edges)
- Drag anywhere else to scroll terminal freely
- Fling/swipe to scroll quickly through large output
- Selection stays on the same text while scrolling
- Tap outside or use Copy/Paste menu to exit
✅ Benefits
- Copy from large terminal output easily
- Navigate through scrollback while selecting
- Smooth 60 FPS auto-scroll when adjusting selection
- Natural scrolling behavior during selection
- Both handles work correctly
📦 Installation
Download NeoTerm-2.0.41-debug.apk below and install on your Android device.
📊 Statistics
- Version Code: 74
- APK size: 33 MB
Full Changelog: d275093...ab128f9
🤖 Generated with Claude Code
NeoTerm v2.0.35
🎨 Color Scheme Fix
✅ Fixed
- Session switch color preservation: Fixed toolbar and status bar colors resetting to default when switching between sessions
- Previously, switching sessions would always reset the toolbar to the default blue color
- Now the color scheme is properly preserved when switching between tabs
- Toolbar and status bar maintain the configured color scheme throughout navigation
📱 Technical Details
- Updated
onSwitcherHiddencallback to preserve color scheme - Color scheme now updates correctly when tab switcher is hidden
- Only falls back to default color when no tabs exist
🔧 Other Improvements
- Better color consistency throughout the app
- Smoother visual experience when navigating between sessions
📦 Installation
Download NeoTerm-2.0.35-debug.apk below and install on your Android device.
📊 Statistics
- Version Code: 68
- APK size: 33 MB
Full Changelog: da432aa...d275093
NeoTerm v2.0.34
🔧 Bug Fix Release
✅ Fixed
- Dynamic shortcuts conflict: Fixed
IllegalArgumentExceptionwhen creating app shortcuts- The "New Session" shortcut is already defined as a static shortcut in XML
- Now only profile-based shortcuts are created dynamically
- Profile shortcuts now work correctly when long-pressing the app icon
📱 How to Use Profile Shortcuts
- Create profiles in Settings → Profile Manager
- Long press the NeoTerm app icon on your launcher
- You'll see:
- "New Session" (static shortcut - always available)
- Your profile shortcuts (e.g., "Ubuntu", "Zsh", etc.)
- Tap a profile shortcut to instantly launch a session with that profile
🔧 Technical Details
- Removed dynamic "New Session" shortcut creation (conflicts with static shortcut)
- Only create dynamic shortcuts for profiles (up to 3)
- Added detailed logging for debugging shortcut issues
- Updated README with quick start guide
📦 Installation
Download NeoTerm-2.0.34-debug.apk below and install on your Android device.
📊 Statistics
- Version Code: 67
- APK size: 33 MB
Full Changelog: bc40835...da432aa