Release notes
Changelog
All notable changes to MemDiver are documented here. Format follows Keep a Changelog.
[Unreleased]
Changed
Extras collapsed to two groups:
[experiment](frida-tools + memslicer) and[dev](pytest, pytest-asyncio, httpx).marimo,nicegui,mcp, andkaitaistructare now part of the base install — the[notebook],[nicegui],[ai],[formats], and[all]extras were removed.memdiver experimentnow surfaces an actionable install hint (pip install memdiver[experiment]) when the experiment extras are missing, instead of raising a bare ImportError.LICENSEfile replaced with the canonical Apache License 2.0 text (was previously MIT). Thepyproject.tomlclassifier was updated toLicense :: OSI Approved :: Apache Software Licenseto match.Install-hint messages in
memdiver app/memdiver mcpupdated to the new single-profile install story.
Added
pip install memdiver[experiment]extra, pinningfrida-tools>=12.0andmemslicerfor the dump-collection flow.GitHub Actions workflows:
ci.yml— pytest matrix (Python 3.11 / 3.12) on push / PR.publish.yml— OIDC trusted publishing to PyPI onv*tag push, plus TestPyPI dry-runs viaworkflow_dispatch. Includes anpm ci && npm run buildstep so the React bundle is baked into every wheel.
MANIFEST.in— ensuresLICENSE,README.md,CHANGELOG.md, algorithm patterns, and the fullfrontend/dist/tree ship in the sdist.frontend/dist/**/*added to[tool.setuptools.package-data]sopip install memdiverships a working web UI out of the box.Sphinx documentation site under
docs/(Read the Docs theme, MyST-parser), published to https://memoryslice.github.io/MemDiver/ via GitHub Pages. Covers quickstart, full user guide, ten-subsystem architecture walkthrough, eight algorithm reference pages, nine visualization pages,.mslv1.1.0 file-format spec, Oracle interface + examples, and a 12-module Python API reference generated viaautodoc+napoleon..github/workflows/docs.yml— strict Sphinx build on every push and PR, Pages deploy gated tomain(re-enabled after one-time repo Settings configuration)..github/workflows/docs-screenshots.yml— nightly Playwright refresh of the 11 baseline screenshots underdocs/_static/screenshots/, opening a pull request on visual drift.Logo pipeline:
docs/_static/{logo,logo_simple}.svg(both with<title>,<desc>,role="img"for accessibility),docs/_static/favicon.ico(multi-resolution 16/32/48),docs/_static/logo_readme.png(PyPI-safe 512×512 raster), regenerator atscripts/build_logo.py --check.Playwright screenshot harness under
docs/screenshots/—capture.py(deterministic Chromium driver with 10 flake-reduction techniques),seed_data.py(wraps the sixtests/fixtures/generate_*.pygenerators),captions.json(per-slug alt text + viewport), andgenerate_placeholders.pyfor fresh clones.docsextra (pip install memdiver[docs]) pinning Sphinx 7.4,sphinx-rtd-theme,myst-parser,sphinx-copybutton,sphinx-design,sphinxcontrib-mermaid,sphinx-argparse,cairosvg,pillow.cli.py— publicbuild_parser()alias exposed forsphinx-argparseand external tooling.Repo-root
__init__.py—__version__now resolves dynamically viaimportlib.metadata.version("memdiver")instead of the drifted hard-coded"0.1.0".pyproject.toml— canonical project URLs updated togithub.com/MemorySlice/MemDiver; added aDocumentationURL pointing at the GitHub Pages site.README overhaul — accurate capability counts (8 algorithms, 20 CLI subcommands, 12 FastAPI routers, 15 MCP tools), Apache-2.0 badge, MCP one-line wiring snippet, IMF research framing, thumbnail gallery linking into the docs site.
Deferred follow-ups
React i18n retrofit — NiceGUI was localized via
ui/locales.py+ui/locales/en.jsonin this pass; the React SPA still hardcodes user-facing strings (e.g.frontend/src/components/wizard/Wizard.tsx, panel labels, button text). Recommendreact-i18nextwith JSON namespaces sharing thelocales/convention. Out of scope for the remediation pass.user_regexconfidence calibration —algorithms/unknown_key/user_regex.py:48returnsmin(total / 10.0, 1.0), an arbitrary heuristic that inflates confidence on dense matches. Track a calibration task: parameterize the divisor via context, or compute confidence per-pattern from match density × pattern complexity.e2e dataset gate — 24 of 25 Playwright specs in
tests/e2e/specs/skip when no private dataset is mounted (test.skip(!datasetAvailable, ...)). CI cannot exercise the SPA without it. Track a task to either (a) build a minimal synthetic.mslfixture undertests/e2e/fixtures/synthetic_msl/or (b) tag specsrequires-datasetand document the CI strategy.
[0.5.1] — 2026-04-14
TLS polymorphic structures + FTUE tour framework (841 tests).
(packaging/ops) resolved — MemDiver is now PyPI-publishable.