Conversation
…s + transactional uninstall Three-file release diff (per the split-PR pattern): - ``packages/memtomem/pyproject.toml`` — ``version = "0.1.36"`` - ``uv.lock`` — workspace pin sync - ``CHANGELOG.md`` — ``[Unreleased]`` → ``[0.1.36] — 2026-05-06`` with the merged-since-v0.1.35 entries folded in by section. Headline: ``memtomem-server`` (the MCP server) now runs natively on Windows. Pre-#818 the server's two ``fcntl.flock`` callsites crashed on Windows even though ``mm`` was Windows-clean from #652 / 0.1.34; v0.1.36 closes that gap (#817/#818/#819/#820), so Windows MCP hosts (Claude Desktop / Code) can point at ``memtomem-server`` directly without WSL. Other notable shipped surfaces in this release: tags rename/delete/ merge service on Web + MCP (#688 PR1), JS unit-test layer for static modules (#641), CSRF/Origin/Host guard middleware in observe-only mode (#787 stage 1), full-content privacy redaction at the LTM trust boundary (#792), DNS-pinning to defeat rebinding in ``mem_fetch`` (#794), transactional ``mm uninstall`` via stage-then-rmtree (#757), ``--force`` clean refusal on Windows when a writer is alive (#730), NTFS-aware runtime dir resolution (#637), context editor 409 conflict dialog (#763), and ``mm index`` streaming progress (#656). Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Cuts the v0.1.36 release. Three-file diff (per the split-PR pattern):
packages/memtomem/pyproject.toml—version = "0.1.36"uv.lock— workspace pin syncCHANGELOG.md—[Unreleased]→[0.1.36] — 2026-05-06, with the merged-since-v0.1.35 entries folded in by sectionHeadline
memtomem-serverruns on Windows natively (#817/#818/#819/#820). Pre-#818 the twofcntl.flockcallsites inserver/__init__.pycrashedmemtomem-serveron Windows even though themmCLI was Windows-clean from #652 / 0.1.34. v0.1.36 swaps both ontoportalocker, POSIX-gates the SIGTERM handler (Windows has no equivalent — teardown via stdin-EOF + atexit), and closes the lock fd before unlinking the pid file on Windows (NTFS refuses to delete an open handle, WinError 32). Windows MCP hosts (Claude Desktop / Code) can now point atmemtomem-serverdirectly without WSL.Other shipped this release
Added
mm webstatic modules #641)mm indexstreams discovery + chunking progress throughclick.progressbar(fix(cli): drive mm index bar length from engine discovery event (#743) #748, closes feat(cli): convert mm index to stream + click.progressbar #656)Changed
Fixed
mm uninstalldeletion is transactional via stage-then-rmtree (closes uninstall: transactional wipe via staging dir + atomic rename (Q2 follow-up from #730) #757)mm uninstall --forcerefuses cleanly on Windows when a writer is alive (closes Windows: contract formm uninstall --forceagainst a live writer is undefined #730)mtime_nson resolve abort (fix(web/ctx): echo current mtime_ns on Settings resolve 409 abort #782)test_i18n.pyonly scans showToast/showConfirm — extend to textContent / innerHTML / HTML literals #698)role="button"+aria-labelon row-as-clickable surfaces (List-row a11y: search / sources / timeline rows lack role / aria-label #700, fix(web): role=button + aria-label on search result rows (#700) #808/fix(web): role=button + aria-label on Timeline rows (#700) #809/fix(web): role=button + aria-label on source-detail chunk cards (#700) #810)/api/sourcesresolvesmemory_dirpaths (closes /api/sources memory_dir not resolved (mismatches /api/memory-dirs/status — #668 follow-up) #675)mm initfilesystem ops wrap intofail_step(closes Wizard step audit:_step_memory_dirand_step_settingscrash on filesystem failure (refs #626) #664)hidden=trueon deactivation (closes Tabhiddenattribute not re-applied on deactivation inactivateTab()#699, Settings Runtime group header visible in prod despite all dev-tier children (empty expansion) #701)okSettings status (closes fix(web/ctx): Sync All toastssync_successfor non-okSettings statuses (error,aborted) #799, fix(web/ctx): Sync All silently skips Settings host-write target on default allow_host_writes=False #774)Security
mem_fetchto defeat rebinding (sec(indexing): pin DNS resolution in mem_fetch to defeat rebinding #794)Release mechanics
This is a behavior-change release (Windows server now starts at all on Windows; transactional uninstall changes failure shape; CSRF middleware logs new metrics). Per the v0.1.35 release-PR template:
test-v0.1.36a1tag from the merge sha → TestPyPI dry-run.pypienvironment for the test tag, smoke-test the wheel in an isolated worktree (freshuv tool install), then pushv0.1.36from the same sha.pypiagain ifpending_deploymentsis non-empty.gh release create v0.1.36with notes extracted from this CHANGELOG section.Test plan
uv run pytest packages/memtomem/tests/test_docs_guards.py -q— 11 passed (CHANGELOG schema)uv run ruff check packages/memtomem/src && uv run ruff format --check packages/memtomem/src— cleanlint,typecheck,test,notebooks,golden-path,js-unit,browser,CLAAssistantuv tool install memtomem==0.1.36fromhttps://test.pypi.org/simple/, confirmmm --versionprints0.1.36andmemtomem-serverstarts on Windows withoutModuleNotFoundError: No module named 'fcntl'uvx --refresh --from memtomem==0.1.36 mm --versionpolls clean🤖 Generated with Claude Code