-
-
Notifications
You must be signed in to change notification settings - Fork 33
enigma 2.7 #335
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
enigma 2.7 #335
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Autosave mappings * Add config option * Checkstyle + update javadoc * Checkstyle * disable by default --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* add option for counting fallback items * refactor GenerationParameters to its own class * add count fallback checkbox to stats dialog * add options in menu for changing stat icon settings * fix checkstyle * fix issues * rework config and add more options * fix bugs - included types not properly taken into account during on-change reloads - fix pointless newlines in detailed tooltips - fix incomplete stats being shown in dialog * fix style * clean up overly verbose StatsDialog code * clean up StatsSection Co-authored-by: Will <supersaiyansubtlety@gmail.com> * fix generation parameters for stat icons and ensure consistency * checkstyle * remove redundant checks for synthetic and improve flow of synthetic check * revert behaviour changes * remove redundant check --------- Co-authored-by: Will <supersaiyansubtlety@gmail.com>
* add a search bar to the structure panel * implement keybinds for structure panel * change keybind to t * focus tree for navigation when opening structure with ctrl + t * proper borders (thanks @supersaiyansubtlety!)
* fix cli tests on windows * convert Argument to record, eliminate ComposedArgument * seal Command * make Command implementations singletons * inline Main.COMMAND init * simplify Command::checkArgumentCount * make Main::getCommands return ImmutableMap
* add option for counting fallback items * refactor GenerationParameters to its own class * add count fallback checkbox to stats dialog * add options in menu for changing stat icon settings * fix checkstyle * fix issues * rework config and add more options * refactor menu bar code * break out stats menu * checkstyle * fully break view menu, add default constructor, properly update state in StatsMenu * break out file menu; fix format translations * checkstyle * fix collab menu translations, pass jarOpen and ConnectionState to updateState * apply suggestions Co-authored-by: Will <supersaiyansubtlety@gmail.com> * naming changes * button group FAIL * fix scale menu weirdness * fix name --------- Co-authored-by: Will <supersaiyansubtlety@gmail.com>
* call setupTheme in TestPackageRename; fixes NPE
* initial named args implementation * move arg retrieval, validation, and mapping into Argument class * ignore empty path strings * add missing type param * use MAPPING_OUTPUT instead of OUTPUT_FOLDER arg in InvertMappingsCommand * add clarifying comment * add DecompileCommand::run override accepting enum * add ArgsParser * add ArgsParserTest * make ArgsParserTest DRYer * add ArgMapTest with valid input tests * reject unreconized named args * improve missing required args exception * add invalid args tests * javadoc Command's type params * add missing Command type params * javadoc * fix strings according to code review Co-authored-by: ix0rai <ix0rai64@gmail.com> * fix string format arg order Co-authored-by: ix0rai <ix0rai64@gmail.com> * minor test improvements --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* Add auto save toggle * Checkstyle * restore new code after merge --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* start setting up GrepMappingsCommand * add MemberTypeIndex add MethodEntry::streamParameters and cache params implement GrepMappingsCommand * support array types in MemberTypeIndex * support filtering void, primitive, and array types eliminate MemberTypeIndex * fix GrepMappingsCommand::getName implement grep results limit * rethrow NumberFormatException for LIMIT arg * extract new Argument type descriptions * add GrepMappingsTest with first test implemented improve some javadocs and descriptions * test finding methods * reorder grep-mappings args * format grepped type names like code make GrepMappingsTest DRYer and more specific add field grep tests add stubs for more test * index params in EntryIndex fix check for whether an entry is mapped check LocalVariableEntry's to find params instead of iterating over method's params (fixes finding constructor params) add param tests to GrepMappingsTest * improve findsTypeFilteredParamNames and findsParamNames * add findsEverythingAndLimitable to GrepMappingsTest * add findsNothing to GrepMappingsTest * add PredicateParser with a few initial tests * add more PredicateParserTests * checkstyle * fix throwing wrong exception on excess close parentheses add more PredicateParser tests * setup access predicate arguments * implement access filtering (untested) * register grep command and indent its description * improve limit arg explanation * strengthen GrepMappingsTest assertions add test mappings in preparation for access tests * don't cache MethodEntry's params if method isn't indexed * complete GrepMappingsTest * javadoc PredicateParser * javadoc ArgsParser * rename grep-mappings -> search-mappings * prep for result sorting fix stack overflow for getting type name of inner class * implement SearchMappingsCommand sort move boolean arg defaulting out of Argument (FillClassMappingsCommand handles its own fill-all default) * fix PARTS_ALPHABETIZER add findsARrayType test add sort tests * improve formatting for unpackaged outer classes when sorting by name * rename PACKAGE_DEPTH_SORTER -> PACKAGES_DEPTH_SORTER * make result order tests stricter * minor test cleanup * add test for #161 (accidentally added with param indexing) * move new test input class to z-prefixed package to avoid breaking SearchMappingsTest mappings * remove now-redundant check from MappingsChecker Co-authored-by: ix0rai <ix0rai64@gmail.com> * run theme setup on swing thread (fixes crash) * use wait method to eliminate possible inconsistencies * centralize string null check in Argument::from * filter empty strings in Argument::ofString * try matching raw bytecode descriptors in addition code-style type names * fix limit excess printing math * make depth arg case-insensitive --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* use proguard.gradle.ProGuardTask instead of custom JavaExec task * remove unecessary qualification * use libraryjars instead of libraryJarFilters * remove unused variable * more minor cleanup * clean up generateVersionFile * copy improved task name method from QEP PR
* fix inheritance tree missing scrollbar and missing translations in editor popup menu * checkstyle
* Update ClassSelectorPopupMenu.java * Checkstyle
* fix #295 * focus editor on tab press and close * add full class name tooltip to table titles * checkstyle * minor tweaks * fix disabling background tab close button when cursor is over tab title
* auto save improvements * Checkstyle
* Update StatsMenu.java * Use SwingUtilities.invokeLater * use runAsync in invokeLater in StatsMenu * checkstyle * extract method --------- Co-authored-by: supersaiyansubtlety <supersaiyansubtlety@gmail.com>
* change default KeyBinds.EDITOR_SHOW_CALLS to ctrl + alt + c because ctrl + c is copy on windows use InputMap instead of KeyListener in EditorPanel and eliminate EditorPopupMenu::handleKeyEvent simplify EditorPanel ctrl + click to navigate logic * add all KeyBind combinations in InputUtil::putKeybindAction fix inverted EditKeyBindDialog::isNewCombination * putKeybindAction -> putKeyBindAction * use InputMap instead of key listener in EnigmaQuickFindDialogue * separate MULTILINE_DIALOG_SAVE from KeyBinds.DIALOG_SAVE use InputMap instead of key listener in JavadocDialog * use InputMap instead of key listener in ClassSelector * use InputMap instead of key listener in ChangeDialog * use InputMap instead of key listener in SearchDialog * use InputMap instead of key listener in StructureDocker * use InputMap instead of key listener in ConvertingTextField * use InputMap instead of key listener in EditorTabbedPane * javadoc and deprecate KeyBind::matches * merge InputUtil into GuiUtil
* make stat icon updates sequencial; fixes 271 * allow many concurrerent asynchronous calls per call to Gui::reloadStats, but batch by call and wait for prior call batches before starting the next call batch * allow Gui::reloadStats to cancel ClassSelectorClassNode::reloadStats' iconUpdateWorker * use stream to create currentReloads * AtomicBoolean params -> Supplier<Boolean> * javadoc return Future instead of RunnableFuture add overload for a method to avoid breakage * make ProjectStatsResult.stats a ConcurrentHashMap because of a rare ConcurrentModificationException * use newSingleThreadExecutor instead of chaining CompletableFutures
* use local syntaxpain version convert EnigmaQuickFindDialog to EnigmaQuickFindToolBar add an EnigmaQuickFindToolBar as a child in EditorPanel - EditorPanel keybinds are useable with quickfind open - quickfind doesn't cover any part of EditorPanel's editor * add KeyBinds.QUICK_FIND_DIALOG_CLOSE retranslate EditorPanel's EnigmaQuickFindToolBar implement EnigmaQuickFindToolBar translation (copied from old QuickFindDialog::translate) add QuickFindDialog persistentCheckBox and closeButton * make EnigmaQuickFindToolBar.persistentCheckBox selected state persistent * keep EnigmaQuickFindToolBar.persistentCheckBox in sync with Config.persistentEditorQuickFind * make EDITOR_QUICK_FIND keybind configurable * checkstyle * syntaxpain version 0.2.0 * appease the villainous grammar checker Co-authored-by: ix0rai <ix0rai64@gmail.com> --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
…#308) * Fix for static initializers * Bug fixes * Migrate to JavaParser * Add lambda support * Switch to RAW language level so its language level agnostic * Checkstyle * Checkstyle * Gracefully handle parsing errors * Bug fixes * Don't assume lambda method names will match JVM format * Use LineIndexer * Skip tokens that don't have a range * Checkstyle * Bug fix * Handle more edge cases * Minor code cleanup * checkstyle * Fix issue with method overloads --------- Co-authored-by: supersaiyansubtlety <supersaiyansubtlety@gmail.com>
* fix NPE when closing the last tab * forward ClosableTabTitlePane title label clicks * checkstyle
* add POC tooltip to EditorPanel editor that shows full name of entry under cursor * update tooltip content when mouse moves, but can't get JToolTip to resize+move * replace EditorPanel's use of JToolTip and TooltipManager with JWindow and timers, respectively * check if same token instead of same entry when updating tooltip * replace complex Optional composition with consumer methods * extract BaseEditorPanel without tooltip, navigator, or listeners * display entries' entire outer source class in their tooltips * always set tooltipEditor classhandle instead of setting source when it's the same class (editor bounds were 0x0 when setting source) navigate to tooltip target entry declaration when showing tooltip * add javaparser dep matching #308 * implement source trimming for classes using javaparser * minor improvements * minor cleanup * make trimFactor a param instead of a field * implement source trimming for methods * match declarations only by range and extract findDeclaration * inline variable * implement field source trimming stop excluding curly braces from method and class sources * fix tooltip source trimming for static record fields add "No source available" label when there's no classhandle * update TODOs centralize target name reporting * extract TooltipEditorPanel * trim param tooltip target source to parent method refine error messages * fail early when target declaration token is missing add local source trimming * fix tooltip source trimming for constructors * minor refactor * show record component parent instead of just component; matches param showing parent method * when excluding implements from record component parent, find token instead of assuming offset * close and destroy tooltip when source changes * silently ignore missing declaration tokens (until #252 is fixed) * restore quickFindToolbar to ui stop closing tooltip's class handles as tabs may still need them; remove ClassHandleListener instead rename TooltipEditorPanel -> DeclarationSnippetPanel extract EditorTooltip add test input for easier manual tooltip testing * restore EditorPanel popupMenu functionality * improve caret pos logic in BaseEditorPanel::setSource * replace source with message if the declaration token could be found * implement source snippet unindenting * replace entry simple name label with formatted parent name label * add 'From: ' prefix to parent label left-align tooltip rows * add javadocs to tooltip * allow disabling tooltip * make tooltip optionally interactable implement dragging to move tooltip * prevent hiding tooltip when cursor is over a token or the tooltip * fix parent label for top-level classes and add missing dot separator for package format labels use GridBagLayout for param javadocs (currently takes up extra space) * allow clicking entries withing tooltip to populate tooltip with that entry's information * fix calculation for offsetting multiline snippet pos to un-trimmed pos allow clicking parent entries in tooltips to populate tooltip when ctrl+clicking entries in tooltips, open entry tab * minor improvements, add TODOs * resolve references when finding tooltip targets * customize tooltip target highlighting * update TODOs regarding records * polish tooltip positioning fix exception when consumeMousePosition... methods where passed a component that wasn't showing fix several cases where the tooltip would hide when it shouldn't or hiden't when it should * increase padding at outer edges of tooltip rows add tooltip border * use a JPanel with a GridBagLayout instead of a Box as the content pane for EditorTooltip; allows elements to expand to fill their space double-pack in EditorTooltip's declarationSnippet source set listener to eliminate extra space, because swing </3 * reject some TODOs * ctrl+click on parent package label to naviage to package * fix tooltip separators improve "No source available" message formatting * respect tooltip ineractable config for parent package clicking add z_ prefix to tooltip test input to avoid changing SearchMappingsTest * use global focus listener to ensure tooltip is closed when neither it nor its editor has focus * move consumeMousePosition... methods to GuiUtil * rename EditorTooltip -> EntryTooltip use GridBagConstraintsBuilder in EntryTooltip respect scale config in EntryTooltip * use GridBagConstraintsBuilder in initEditorPane * make tooltip focusable; enables copying tooltip content * fix hiding tooltip immediately after re-populating it simplify tooltip focus and hiding logic * remove tooltip to editor click forward as it didn't work consistently remove unecessary insteractable tooltip click listener * add EntryTooltip.repopulated field for workaround * deobfuscate parent package * focus class selector when navigating to parent package from tooltip * scroll to class selector path when navigating from entry tooltip parent * move Config.persistentEditorQuickFind to EditorConfig.persistentQuickFind * rename config getter methods to match their ids and update Config javadoc * fix another tooltip focus issue * fix bug preventing RecordGetterFindingVisitor from finding inner records' getters make RecordGetterFindingVisitor's getter map accessible fix DeclarationSnippetPanel for record component getters * rename RecordGetterFindingVisitor -> RecordIndexingVisitor expand RecordGetterFindingVisitor to provide maps of record classes to their fields and methods make EntryTooltip show record field javadocs for record classes make EntryTooltip show record field javadocs for record getters if they don't have their own javadocs * clear things in visitEnd instead of visit clear fields and methods * fix for java 17 * tighten RecordIndexingVisitor encapsulation * make navigating to a record component getter with no explicit declaration navigate to its field instead * add nullable annotation * only set BaseEditorPanel.editor text once * fix typo * tweak moveMaintainingAnchor * close entry tooltip on key press * close tooltip on KEY_TYPED instead of KEY_PRESSED so ctrl+c can copy * add javaparser to lib list in README * cleanup createSnippet * fix swapped un/bounded names * make LineIndexer::getIndex return -1 for out-of-bounds positions, add LineIndexerTest * rename EditorTooltipSection -> EntryTooltipSection * limit EntryTooltip size * put main tooltip content in a scroll pane * focus snippet editor ui on source set remove main content scroll pane border * checkstyle * replace AtomicInteger gridY's with primitive ints * hard cap tooltip width at 600px (scaled) * expand parent package path when navigating from tooltip * explicitly check if source is bounded when setting 'Unable to locate declaration' message show <init> for constructor simple names * improve constructor name check * use 'inherited from' label for tooltip labels for entries that resolved to a parent * dispatch key events that close the entry tooltip to the previously focused component * close entry tooltip with global mouse listener * add gui for entry tooltip config * deduplicate check box sync logic * javadoc createSyncedCheckBox * javadoc syncStateWithConfig override * move tooltip management to EnitorPanel.TooltipManager add/remove EntryTooltip's global listeners on open/close reset TooltipManager on key presses * minor refactor * make 'tooltips' consistently plural in user-facing strings * dispatch KEY_PRESSED events that close entry tooltips (with exception for ctrl+c) * rework moveMaintainingAnchor when tooltip shrunk * move FeaturesSection.enableClassTreeStatIcons to StatsSection move FeaturesSection.autoSaveMappings to EditorConfig eliminate FeaturesSection * ensure RecordIndexingVisitor is cleared in visitEnd * make several tooltip string translatable * make a snippet string translatable
* OUT OF MEMORY when trying to run all tests add JavaClassProvider which provied java.* classes add CombinedJarIndex which indexes main jar and libraries added missing translation for "progress.jar.indexing.libraries" * make methods that trace back to non-jar methods non-renamable * checkstyle * filter out unreferenced classNames for LibrariesJarIndex and CombinedJarIndex * add ReferenceIndex::getFieldsReferencedBy keep lib classes whose fields or methods are referenced in the main jar * exclude java/io/PrintStream from JavaClassProvider check if method is indexed in EnigmaProject::isLibraryMethodOverride * update asm (AnalyzerExceptions persist) * use ClasspathClassProvider instead of JavaClassProvider to avoid AnalyzerExceptions; BREAK #274 * stop excluding Object from InheritanceIndex and update tests; fix #91 * update TODO * try finding child node instead of assuming it's first * add clarifying comment to UN_ANALYZABLE_CLASS_NAMES Co-authored-by: ix0rai <ix0rai64@gmail.com> * add jar index javadocs --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* EditorPanel: reset instead of re-add entries to NavigatorPanel - fix #256 - also fixes an issue where an entry could be in a navigator panel multiple times under the same TokenType * fix an issue that could cause NavigatorPanel entries to get out of order when their types were updated * remove unused NavigatorPanel::updateTokenType * properly pad status label with leading zeros * simplify collection types
* add Version * add EnigmaPlugin::supportsEnigmaVersion add current version part constants to Enigma extract individual part comparators in Version * check EnigmaPlugin::supportsEnigmaVersion and throw if false * improve error message * add TestConsistentVersions * tweak whitespace * minor tweaks * Integer::toString instead of Integer::parseInt * improve javadoc * remove redundant word from javadoc * javadoc Version * add missing 'the passed' * add copyAndBumpEnigma task * rename copyAndBumpEnigma -> syncBumpAndJarEngima Sync instead of Copy to ensure old output is deleted run jar task in bumped copy * add DummyEnigmaPlugin test input * got runDummyPluginAgainstBumpedEnigma working well enough to tell that the inlined constant approach doesn't work * add EnigmaVersionMarked annotation * make EnigmaVersionMarked annotation work * remove EnigmaVersionMarked remove default EnigmaPlugin::supportsEnigmaVersion implementation * add PreHandlingDummyEnigmaPlugin * update runDummyPluginAgainstBumpedEnigma task -> runRecommendedImplPluginAgainstBumpedEnigma * improve bumped jar filtering * add runPreHandlingPluginAgainstCurrentEnigma task * catch AbstractMethodError when calling supportsEnigmaVersion * check runPreHandlingPluginAgainstCurrentEnigma for expected output and rename -> testPreHandlingPluginAgainstCurrentEnigma * check runRecommendedImplPluginAgainstBumpedEnigma for expected output and rename -> testRecommendedImplPluginAgainstBumpedEnigma * make test depende on dummy plugin tests * exclude enigma-cli build dir from bumped copy * add AnyVersionEnigmaPlugin for test plugins * add reminder to update Enigma's version int constants * rename DummyEnigmaPlugin -> RecommendedImplEnigmaPlugin * add Version methods instead of exposing Comparators * remove unused import * improve comments, rename task * add error messages to TestConsistentVersions * remove commented code * replace getAsFile() with asFile --------- Co-authored-by: ix0rai <ix0rai64@gmail.com>
* update gradle and dependencies * fix deprecations * replace @nullable and @nonnull with jspecify annotations - add jspecify dependency - find-and-replace - full project optimise imports in intellij * fix checkstyle issues * fix broken tests * fix checkstyle issues, issues from merge, and newly added files * remove wildcard import in enigma-swing buildscript --------- Co-authored-by: supersaiyansubtlety <supersaiyansubtlety@gmail.com> * update files merged in * checkstyle * create empty directories for excluded sub-projects * fix gradle deprecation warnings --------- Co-authored-by: supersaiyansubtlety <supersaiyansubtlety@gmail.com>
supersaiyansubtlety
approved these changes
Nov 15, 2025
Co-authored-by: Will <supersaiyansubtlety@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backend
affects the enigma backend
cli
affects the enigma command-line interface
enhancement
New feature or request
user interface
affects the enigma ui
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Warning
do not squash-merge!
EntryIndex(search-mappingscommand #282)<unknown>for non-parameter entries in the LVTctrl + t)ctrl + shift + twill open with the search selectedsearch-mappingscommand (search-mappingscommand #282)parameter=value) instead of positionally (Named command args #280)PrintStatsCommand(Print stats gen params #297)InvertMappingsCommandusingOUTPUT_FOLDERinstead ofMAPPING_OUTPUT, meaning it didn't support alternate formatsInvertMappingsCommand's arguments skipping an indexENIGMA_PROFILEargument not verifying it was a fileComposeMappingsCommandnot properly declaring its optional argsDecompileCommandusing theOUTPUT_JARarg instead of an output directoryCommandComposedArgument, makeArgumenta record instead of an enumCommonArgumentsMain's map of commands immutableCLASSis not configured as an editable type (Fix being able to rename classes when disabled #299)EDITOR_SHOW_CALLSwas changed toctrl + alt + c, as the old keybind ofctrl + cwould both copy text and show callsObject, such as the ability to map aStringmethod with no args astoStringwithout the conflict detector noticingsupportsEnigmaVersionmethod to define which versions it is compatible withAbstractMethodErrors due to the unimplemented method will be caught and reported with an error messageeditor.tomlenableClassTreeStatIconstomain#statsmain#features8.1.1->9.2.2(move to gradleup version)33.2.1->33.5.02.10.1->2.13.29.7.1->9.92.6.2->2.7.0(they're just like us fr)1.11.0->1.11.25.10.3->6.0.11.3.0->1.3.18.7->9.2.00.1.5->0.2.0jspecify:1.0.0javaxto use jspecifyjavaparser:3.27.0TODO:
CHANGELOG.md