Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Sirpixelalot/Rentool
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.7
Choose a base ref
...
head repository: Sirpixelalot/Rentool
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 13 commits
  • 51 files changed
  • 2 contributors

Commits on Nov 20, 2025

  1. Fix multiple UI and functionality bugs, update to version 1.7.1

    Bug Fixes:
    - Wire up imageMethod speed setting in ImageCompressor (Fast/Average/Slow compression)
    - Wire up createRpaAfter setting to automatically create RPA archives after compression
    - Add validation to prevent compression when all media types are disabled
    - Move progress polling to Dispatchers.IO to prevent UI freezing and ANRs
    - Fix compression stats to track real totals and handle failures correctly
    - Make file filtering case-insensitive for all extensions (.RPA, .RPYC, .RPY, etc.)
    
    Technical Improvements:
    - ImageCompressor now respects imageMethod setting for lossless compression effort
    - CompressionManager tracks actual file counts (X/Y files) instead of misleading 100%
    - Failed file compressions count original size (accurate reduction percentage)
    - Empty folders/disabled types treated as graceful success instead of failure
    - Progress updates show real progress with failed file counts
    - File picker now accepts uppercase extensions from Windows distributions
    - Python decompiler and RPA tool now case-insensitive for file extensions
    - All I/O operations moved off main thread (countRpycFiles, file reads, etc.)
    
    Version:
    - Updated versionCode to 10
    - Updated versionName to "1.7.1"
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 20, 2025
    Configuration menu
    Copy the full SHA
    a2f9e3d View commit details
    Browse the repository at this point in the history

Commits on Nov 22, 2025

  1. Add background operations with persistent notifications, update to ve…

    …rsion 1.7.2
    
    New Features:
    - Background Operations: Operations continue when app is minimized or screen is off
    - Persistent Notifications: Real-time progress updates in status bar showing file count, current file, and percentage
    - Foreground Service: OperationService manages all long-running operations (extract, compress, decompile, create)
    - Completion Notifications: Dismissible notifications remain visible after operations complete for easy review
    - Notification Permissions: Added POST_NOTIFICATIONS permission support for Android 13+
    - Thread Safety: All I/O operations moved to Dispatchers.IO for smooth UI performance
    
    Technical Implementation:
    - New OperationService foreground service with dataSync type
    - Progress polling every 500ms with notification updates
    - Initial progress written before service start for instant notification display
    - STOP_FOREGROUND_DETACH keeps completion notifications visible
    - Android 13+ notification permission handling in MainActivity
    - All operations (extraction, compression, decompilation, creation) integrated with service
    
    Documentation:
    - Updated README with comprehensive feature list and usage instructions
    - Added background operations technical details
    - Updated requirements and architecture sections
    - Added FFmpeg-Kit and Sora Editor credits
    
    Version:
    - Updated versionCode to 11
    - Updated versionName to "1.7.2"
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 22, 2025
    Configuration menu
    Copy the full SHA
    913e67c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    515d08d View commit details
    Browse the repository at this point in the history
  3. Add APK compression with keystore management, update to version 1.7.3

    Implemented comprehensive APK compression feature that allows users to compress Ren'Py APKs with proper signing. Added keystore management system for importing, exporting, and managing signing keys, with options for random key generation and saved keystores. Introduced Settings activity for theme and configuration management. Enhanced file picker to support both directory and APK file selection for compression operations.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 22, 2025
    Configuration menu
    Copy the full SHA
    4f80f0b View commit details
    Browse the repository at this point in the history
  4. Fix duplicate keystore name validation

    Added early validation to check for duplicate keystore names when creating a new key. Users now see an error immediately when clicking Continue instead of after the compression process completes.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 22, 2025
    Configuration menu
    Copy the full SHA
    79526d0 View commit details
    Browse the repository at this point in the history
  5. Add comprehensive ProGuard rules for minification support

    Added ProGuard rules to protect critical components when minifyEnabled is true:
    - Chaquopy Python bridge (reflection-based API)
    - Enum valueOf() methods for settings serialization
    - BouncyCastle crypto algorithms and providers
    - APKSig library for APK signing
    - FFmpeg-Kit native library bindings
    - Data classes and ViewModels
    
    Enables 41% APK size reduction (150MB -> 88MB) while maintaining full functionality.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 22, 2025
    Configuration menu
    Copy the full SHA
    2bda214 View commit details
    Browse the repository at this point in the history
  6. Enable minification for release builds

    Set minifyEnabled to true for release builds. Combined with ProGuard rules, this reduces APK size by 41% (150MB -> 88MB) while maintaining full functionality.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 22, 2025
    Configuration menu
    Copy the full SHA
    00dd3ae View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2025

  1. Add support for .arc archive format

    Added support for ARC-3.0 archive format (used by specific Ren'Py games) alongside standard RPA format. The .arc format uses the same internal structure as RPA-3.0 but with a different magic header.
    
    Changes:
    - Python: Added ARC-3.0 magic header recognition and parsing
    - File picker: Accept both .rpa and .arc files when filtering archives
    - UI: Display RPA icon for .arc files
    - UI text kept as "RPA" only (no explicit .arc mentions)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 23, 2025
    Configuration menu
    Copy the full SHA
    d328fa0 View commit details
    Browse the repository at this point in the history
  2. Add ProGuard rules for Sora Editor syntax highlighting

    Added ProGuard rules to preserve Sora Editor and TextMate language support classes, fixing syntax highlighting that was broken by minification. TextMate grammars are loaded dynamically using reflection and require these classes to remain unobfuscated.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 23, 2025
    Configuration menu
    Copy the full SHA
    98cc7f7 View commit details
    Browse the repository at this point in the history
  3. Add Try Harder mode option for decompiling obfuscated files

    Added optional "Try Harder Mode" for decompilation with user-facing controls:
    - New dialog before decompilation with checkbox to enable aggressive mode
    - Clear warning that it takes significantly longer
    - Recommended for use only when default decompilation fails
    - Python parameter passed through to unrpyc's try_harder option
    
    This gives users fine-grained control for handling heavily obfuscated .rpyc files.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 23, 2025
    Configuration menu
    Copy the full SHA
    2a9e18c View commit details
    Browse the repository at this point in the history
  4. Add pre-extraction storage validation to prevent device storage overflow

    Implemented storage validation that checks archive size before extraction to prevent massive file expansions from filling up device storage.
    
    Features:
    - Calculate total extracted size from RPA index before extraction starts
    - Check available device storage using StatFs
    - Block extraction if insufficient storage (show required vs available)
    - Warn if extraction >10GB or expansion ratio >20x (let user confirm)
    - Normal extractions proceed immediately without dialogs
    
    Python changes:
    - Added get_total_size() method to RenPyArchive class
    - Added get_extraction_info() wrapper function for Kotlin integration
    
    Kotlin changes:
    - Added validateAndExtract() to check storage before starting extraction
    - Added getAvailableSpace() to query device storage
    - Added formatSize() for human-readable size display
    - Modified extraction flow to validate before proceeding
    
    This prevents edge cases where archives expand massively (e.g., 1.5GB → 150GB) from crashing the app or filling device storage.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 23, 2025
    Configuration menu
    Copy the full SHA
    0b3a587 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2025

  1. Fix implicit PendingIntent security warning in OperationService

    Made PendingIntent fully explicit by setting the component property directly. This prevents potential intent interception and satisfies GitHub security scanning.
    
    Changes:
    - Added explicit component to notification Intent
    - Ensures only ProgressActivity can be launched from notification
    - Maintains FLAG_IMMUTABLE for additional security
    
    Resolves GitHub code scanning warnings at lines 171, 188, and 205.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 27, 2025
    Configuration menu
    Copy the full SHA
    bad6a66 View commit details
    Browse the repository at this point in the history

Commits on Nov 28, 2025

  1. Add Material 3 UI theme, decompile dialog improvements, and Android 1…

    …5+ compatibility
    
    UI Enhancements:
    - Migrate to Material 3 design system with dynamic color theming
    - Add smooth animations and transitions to cards and progress screens
    - Implement color-coded status indicators for operations
    - Add custom scrollbar indicator for main screen
    - Improve file picker UI with better visual hierarchy
    
    Decompile Options Dialog:
    - Add "Don't show again" checkbox to decompile options dialog
    - Add Settings option to re-enable decompile dialog
    - Store user preference in SharedPreferences
    
    Android 15+ Compatibility:
    - Add 16KB page alignment configuration for native libraries
    - Configure packaging to support Android 15+ devices with 16KB pages
    - Ensure compatibility with cancelled FFmpeg-Kit library
    
    Theme System:
    - Add ThemeUtils helper for centralized theme management
    - Support Light, Dark, and System theme modes
    - Fix theme switching to recreate activity properly
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Sirpixelalot and claude committed Nov 28, 2025
    Configuration menu
    Copy the full SHA
    92400ce View commit details
    Browse the repository at this point in the history
Loading