* Fix: resolve class/package name conflicts on case-insensitive filesystems
**RenameVisitor**
- Added package-level conflict detection for case-insensitive filesystems:
when two packages differ only by case (e.g. com.Example vs com.example),
rename the conflicting one and loop until the new name is also unique
- Added class-level conflict detection (same pattern): when two classes in
the same package differ only by case (e.g. Sink vs sink), rename the
conflicting one to prevent file overwrite on Windows export
**Tests**
- Added TestCaseSensitivePkgChecks: verifies package rename when packages
differ only by case; fixed smali data (2.smali changed Bar→Foo to create
a genuine path conflict under case-insensitive FS)
- Added TestCaseSensitiveClassInPkgChecks + smali fixtures: verifies class
rename when two classes in a named package differ only by case
(com.example.User vs com.example.user)
* Apply suggestions from code review
Co-authored-by: skylot <118523+skylot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: skylot <118523+skylot@users.noreply.github.com>
---------
Co-authored-by: john <johnwsa@qq.com>
Co-authored-by: skylot <118523+skylot@users.noreply.github.com>
* fix: handle null bounds in WindowLocation to prevent NPE on dialog dispose
The equals(), hashCode(), and toString() methods in WindowLocation
could throw NullPointerException when bounds is null. This happens
when a dialog window is disposed before its bounds are fully
initialized (e.g., on macOS when closing the search dialog).
Use Objects.equals()/Objects.hashCode() for null-safe comparisons
and add a null guard in toString().
Fixes#2571
* additional null checks and null annotations
---------
Co-authored-by: easonysliu <easonysliu@tencent.com>
Co-authored-by: Skylot <118523+skylot@users.noreply.github.com>
* fix(gui): use UI thread for refreshStackFrameList in debugger view
* call `resetAllDebuggingInfo` also from UI thread
---------
Co-authored-by: Skylot <118523+skylot@users.noreply.github.com>
* snapshot 219
* revert non-working string searcher
* fix(gui): fix illegal ':' character in path when exporting resources.arsc/res
* fix(gui): use resource short name when exporting a folder via context menu
* fix(gui): use new resource class for files in arsc (#2771)
* fix(gui): limit tabs title length, fix tooltips (#2771)
* resolve issues with script code area after merge
---------
Co-authored-by: Jan S. <jpstotz@users.noreply.github.com>
Co-authored-by: Skylot <118523+skylot@users.noreply.github.com>
* fix(core): prevent resource name collisions by reading the same resource multiple times
* fix(core): prevent resource names getting longer by every rename operation
* initialize HashSet size properly
* formatting