Skip to content

Releases: 9hm2/NeoTerm

NeoTerm v2.0.167 - Keyboard Shortcuts & Adaptive Theme Fixes

14 Oct 02:56

Choose a tag to compare

🔧 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

  1. Download the APK below
  2. Install (allow "Install from Unknown Sources" if needed)
  3. Enable HackersKeyboard in Android Settings → System → Languages & Input → Virtual Keyboard
  4. 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

13 Oct 19:05

Choose a tag to compare

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

  1. 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
  2. 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
  3. Enhanced Session Switching (NeoTermActivity.kt)

    • Improved onSelectionChanged to ensure settings apply on every tab switch
    • Added checkAndApplySettingsChanges() to detect setting changes on activity resume

✅ 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

13 Oct 15:15

Choose a tag to compare

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

13 Oct 12:52

Choose a tag to compare

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

11 Oct 16:00

Choose a tag to compare

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

11 Oct 01:28

Choose a tag to compare

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

10 Oct 14:56

Choose a tag to compare

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

10 Oct 03:58

Choose a tag to compare

🎯 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

  1. Long press to enter text selection mode
  2. Drag handles to adjust selection (auto-scrolls at edges)
  3. Drag anywhere else to scroll terminal freely
  4. Fling/swipe to scroll quickly through large output
  5. Selection stays on the same text while scrolling
  6. 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

10 Oct 00:39

Choose a tag to compare

🎨 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 onSwitcherHidden callback 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

10 Oct 00:31

Choose a tag to compare

🔧 Bug Fix Release

✅ Fixed

  • Dynamic shortcuts conflict: Fixed IllegalArgumentException when 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

  1. Create profiles in Settings → Profile Manager
  2. Long press the NeoTerm app icon on your launcher
  3. You'll see:
    • "New Session" (static shortcut - always available)
    • Your profile shortcuts (e.g., "Ubuntu", "Zsh", etc.)
  4. 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