Skip to content

v1.1.2 - Long term update and cleanup

Latest

Choose a tag to compare

@morpheuslord morpheuslord released this 26 Sep 07:44
5e60d88

What's Changed

Rewrite framework as an object-oriented package
Replace the flat, procedural scripts (main.py + config/*.py + dinstaller/)
with a modular, object-oriented quadrainspect package.

Core:

  • registry.py: a command registry of first-class Command objects; dispatch
    and help tables are derived from one source, replacing the duplicated
    match/switch blocks that were spread across every module.
  • shell.py: a single InteractiveShell REPL base owning prompt, dispatch,
    help, graceful quit and Ctrl-C/EOF handling.
  • app.py: frame (interactive) and argument modes are driven by one shared
    MenuEntry list instead of two hand-maintained match blocks.
  • runner.py: centralised subprocess execution using argument lists
    (shell=False), closing the command-injection holes from the old
    string-formatted shell=True calls; cwd= replaces os.chdir juggling.
  • exceptions.py: a typed QuadraInspectError hierarchy; the REPL reports
    expected failures cleanly instead of crashing or swallowing them.
  • platform.py, session.py, console.py, net.py: OS abstraction, workspace/
    target state, shared console + logging, and dependency-free downloads.

Tools:

  • Each integrated tool (apkleaks, apkeditor, andropass, backdoor, mobfs,
    rms, installer, addins, updater) is now a focused class built on a
    Tool/OneShotTool/InteractiveTool hierarchy with dependency injection via
    ToolContext.
  • Add-ons are declarative AddOn objects; the updater self-updates via git.

Packaging & docs:

  • Adopt uv: pyproject.toml with a console script and tools/dev extras, a
    committed uv.lock, and a .gitignore.
  • Add a pytest suite (23 tests) covering the core and menu wiring.
  • Rewrite the README around the uv workflow and the new architecture.
  • main.py is kept as a thin backward-compatible shim.

Add complete-install option (dependencies + tools + add-ons)
Provide a single "install everything" path in addition to the piecemeal
install_tools command.

  • FullInstaller (tools/full_installer.py): a one-shot tool that runs the
    integrated-tool Installer and then installs every add-on. Exposed as
    'START full_install' (frame mode) and '--command full-install' (argument
    mode) via one shared MenuEntry.
  • AddinsManager.install_all(): installs every add-on best-effort, so a
    missing dependency or unsupported platform on one add-on is logged and
    skipped without aborting the rest; add an addons accessor.
  • install.sh / install.bat: bootstrap scripts that install uv (if missing),
    install all Python dependencies (core + tools extra), and then run the
    complete tool/add-on install in one command. Support --deps-only.
  • Tests: full-installer ordering, best-effort install_all, and both-mode
    menu exposure.
  • README: document the quick-install scripts and the full_install command.

New Contributors

Full Changelog: 1.1.1...1.1.2