#792·Recaf

4.X primary TODO list.

Author: Col-ECreated May 19, 2024Updated Sep 16, 2026
  • Welcome
    • First time configuration based on what the user intends to do #702
  • In-application help
    • In-application tutorials with basic code samples #709
      • Can express as a custom workspace type with an identifier of which tutorial is open
      • Different tutorials could add different popup notifications to UI controls to explain their usage
  • External help
    • Write user documentation for 4.X
    • Write developer documentation for 4.X
  • Menu Bar
    • Plugins menu
  • Workspace explorer
    • Support embedded resources
      • Viewing
      • Editing
      • Exporting
    • Make modified classes visually distinct #680
    • Add keybind support for renaming #820 (and possibly other actions)
  • Workspace summary
    • Android manifest summarization #720
    • Known obfuscation detection summarization
    • Minecraft mod summarization (Forge/Fabric) #667
      • Main mod classes
      • Pull in target MC version as a supporting resource
      • Automatic mapping support
  • Class views
    • Hex view
    • Low level view
    • Kotlin metadata side-tab
    • Option to show fields/methods tab open by default #752
  • Decompilers
    • Fallback (port from 3x)
  • File views
    • HTML (As XML)
    • Markdown
  • Change/history viewer
    • Change viewer UI between original state and modified state
      • Class support
      • File support
    • Support exporting as .repatch file format so Recaf can apply the patch again later
  • Search
  • Plugins
    • Plugin manager UI
    • Link to plugin development guide to make it easy to start
    • Create plugin templates
  • Config
    • Investigate what would improve the layout beyond our automated setup. Its laid out in a bit of a "jumbled" way at the moment.
    • Font size sliders
      • This is sadly a bit tricky with our theme setup. There are a lot of small edge cases in the theme that rely on exact sizes. I found that a more reasonable solution was to just implement a generic window scaling. It'll apply when restarting Recaf.
    • Organize into sane ordering (vs alphabetic of key names)
  • Context menus
    • Organize into sane ordering
    • Creation of new content
      • Files
      • Classes #113
    • Additional actions
      • Classes
        • Generate method overrides (prompt to show which methods can be overriden)
      • Packages / Directories
        • Export (we have single-file export, but not package/dir exports)
  • Assembler
    • Tab completion for opcodes
    • Tab completion for type refs
    • Tab completion for field/method refs
    • Option to change variable table handling #851
      • Automatically generate variables when variable data exists
      • Never write variable data
      • Always write variable data
    • Add missing JVM attribute support
      • Invisible annotations, type annotations, etc #760
  • Android support (Replace our dependency on Google's R8 with our own implementation that better adapts to our model in Recaf)
    • Migrate away from R8 to dex and add assembler support for Dalvik bytecode #857
  • Call graph UI
    • Port 3X UI to 4X
    • Add UI to method context menus
  • Mapping
    • Correlation mapping: See fabric's matcher for details
      • The backing structure similarity logic can be useful in other places too
  • Improved instrumentation
    • Fetch META-INF/MANIFEST.MF for application info
    • Option to copy remote java.class.path paths to a local workspace without attaching (If all paths are found)
    • Option to run arbitrary payloads (Pass over a Runnable instance and invoke it in a safe manner, reporting back results)
  • Simulation
    • Rewrite a smaller version of SSVM and integrate it to support:
      • Simulate (for yielding a result)
      • Optimize (for using the simulation to optimize code patterns)
      • Done via Evaluator class + adjacent APIs.