Skip to content

Conversation

@utkarshdalal
Copy link
Owner

No description provided.

Mondyro and others added 5 commits November 16, 2025 01:32
## Major Features Added

### 1. Enhanced Profile Management System
- Added comprehensive sensitivity settings for both physical controllers and virtual (on-screen) controls
- Separate dead zone and sensitivity controls for sticks and D-pads
- Physical controller settings: stick dead zone, stick sensitivity, dpad dead zone
- Virtual control settings: stick dead zone, stick sensitivity, dpad dead zone
- New touchpad gesture settings (tap-to-click, two-finger right-click)
- Mouse/touch behavior modes (touchscreen mode, disable touchpad mouse)
- Game-specific profile locking system (profiles can be locked to specific containers/games)

### 2. New UI Dialogs (15 new Compose-based dialogs)
- UnifiedProfileEditorDialog: Complete profile editor with live preview and undo support
- UnifiedProfileCreationDialog: Unified creation flow for all profile types
- InGameProfileManagerDialog: In-game profile switching/creation
- ProfilePickerDialog, CloneProfileDialog, CreateBlankProfileDialog, CreateFromTemplateDialog
- ElementEditorDialog, ControllerBindingDialog: Control element editing
- ImportProfileDialog: File picker for importing .icp profiles
- ProfileSelectionCard: Settings card for profile management
- Sensitivity, gesture, and mouse behavior settings components

### 3. Critical Bug Fixes
- **Fixed sensitivity settings not being applied**: Physical stick sensitivity, virtual stick sensitivity, and dead zones are now properly applied during gameplay
- Added sensitivity parameter to ExternalController.processJoystickInput()
- Updated WinHandler to retrieve and pass sensitivity from profile
- Fixed InputControlsView to use profile settings instead of hardcoded constants
- **Fixed physical controller editor crash**: Corrected Orientation.fromInt(0) returning empty EnumSet
- **Fixed undo tracking**: Undo now remembers moves across drag sessions

### 4. Profile Name Validation
- Added validateProfileName() with comprehensive checks for filesystem-unsafe characters
- Added sanitizeProfileName() for auto-generated names
- Updated all profile creation dialogs to use validation
- Prevents special characters: / \ : * ? " < > |
- Enforces max length (100 characters) and other safety checks

### 5. Export/Import Functionality
- Added export button to UnifiedProfileEditorDialog toolbar
- Created ImportProfileDialog with file picker functionality use your downloads folder
- Added import/export to settings ProfileSelectionCard dropdown
- Exports to Downloads/Winlator/profiles/ with sanitized filenames
- Full support for sharing profiles between devices

### 6. Enhanced Reset to Default Dialog
- Added "All Buttons" checkbox to reset dialog
- Users can selectively reset: Left Stick, Right Stick, D-Pad, and All Buttons
- Preserves custom bindings for unselected controls

### 7. New Default Profiles
- Added controls-4.icp through controls-7.icp templates
- Updated existing profiles (controls-1, 2, 3) with new sensitivity fields
## Profile Editor Enhancements:
- Added redo functionality with undo/redo stack management
- Fixed undo/redo tracking to prevent phantom snapshots during operations
- Improved system UI hiding for true immersive fullscreen mode
- Clear undo/redo stacks on save, cancel, and dismiss to prevent confusion
- Better element movement detection and tracking

## Profile Creation UX:
- Auto-strip "Template" word from template names when creating profiles
- Show profile ID and element count in profile cards
- Enhanced profile card layout with better visual hierarchy
- Improved locked/global profile status display

## File Browser Improvements:
- Added permission checks for directory access
- Handle read permission errors gracefully with toast messages
- Filter out inaccessible directories
- Clear search query when navigating into folders

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add ControllerBindingPresets.kt with quick preset configurations for controller mappings
- Add PhysicalControllerConfigSection.kt for comprehensive controller binding management
- Improve ElementEditorDialog with debounced text updates to reduce excessive redraws
- Enhance UnifiedProfileEditorDialog with profile rename functionality and memory leak fixes
- Update ExternalController and InputControlsView for improved controller handling
# Conflicts:
#	app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt
#	app/src/main/java/app/gamenative/ui/screen/library/LibraryAppScreen.kt
#	app/src/main/java/com/winlator/container/ContainerData.kt
# Conflicts:
#	app/src/main/java/app/gamenative/ui/screen/library/appscreen/BaseAppScreen.kt
#	app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
#	app/src/main/java/com/winlator/container/ContainerData.kt
@coderabbitai
Copy link

coderabbitai bot commented Nov 21, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch custom-controller

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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.

3 participants