Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
259 commits
Select commit Hold shift + click to select a range
921db17
feat: add Hindi language support to i18n module
tejasashinde Apr 13, 2026
53d7793
Create SECURITY.md
Yorji-Porji Apr 13, 2026
045023f
fix: save hook auto-mines transcript without MEMPAL_DIR (#840)
milla-jovovich Apr 14, 2026
4aa7e1e
release: v3.3.0 (#839)
igorls Apr 14, 2026
962776c
sync: merge main into develop after v3.3.0 release
igorls Apr 14, 2026
06c4289
ci: serve docs from develop only
igorls Apr 14, 2026
c877e46
Merge pull request #843 from MemPalace/sync/main-into-develop
igorls Apr 14, 2026
5a2f7db
Merge pull request #845 from MemPalace/fix/deploy-docs-develop-only
igorls Apr 14, 2026
c924d07
fix(status): paginate metadata fetch to support large palaces
vnguyen-lexipol Apr 14, 2026
267a644
refactor: route all chromadb access through ChromaBackend
igorls Apr 14, 2026
b060171
Merge pull request #852 from MemPalace/release/v4-prep
igorls Apr 14, 2026
001700c
fix: update stale org URLs in pyproject.toml and README (#787)
mvalentsev Apr 14, 2026
0f217f7
fix: harden hooks against shell injection, path traversal, and arithm…
Kesshite Apr 13, 2026
f7d703f
fix: add logging on rejected transcript paths and platform-native pat…
Kesshite Apr 13, 2026
1bff7d9
Increase visibility of fake website caution
gbhat618 Apr 14, 2026
79c9c0e
fix: use permissive validator for KG entity values (closes #455)
sha2fiddy Apr 14, 2026
3415e70
chore: bump plugin manifests to 3.3.0 and fix owner URL
igorls Apr 14, 2026
06240c7
ci: add version guard to catch tag/manifest drift
igorls Apr 14, 2026
162edf3
ci: let semver pre-release tags bypass strict manifest match
igorls Apr 14, 2026
97a4b0e
fix: ship CNAME in Pages artifact to pin custom domain
igorls Apr 14, 2026
ff6a907
Merge pull request #876 from MemPalace/fix/version-drift-874
igorls Apr 14, 2026
26e313e
Merge pull request #877 from MemPalace/fix/pages-cname
igorls Apr 14, 2026
43189b6
Merge pull request #853 from mvalentsev/fix/pyproject-urls
igorls Apr 14, 2026
625162e
docs: tighten SECURITY.md with real version policy and GHPVR-only cha…
igorls Apr 14, 2026
4de9e13
Merge pull request #810 from Yorji-Porji/patch-1
igorls Apr 14, 2026
73f038c
Merge pull request #878 from MemPalace/develop
igorls Apr 14, 2026
e8e93b5
fix: allow mining directories without local mempalace.yaml
mvanhorn Apr 7, 2026
a035293
fix: remove unused sys import
mvanhorn Apr 7, 2026
1ea00fb
fix: send missing-yaml warning to stderr and flag basename collisions
mvanhorn Apr 11, 2026
6378588
Merge pull request #604 from mvanhorn/fix/14-mine-no-yaml
igorls Apr 14, 2026
e1d24d8
Merge pull request #812 from Kesshite/fix/security-hook-injection
igorls Apr 14, 2026
da89a11
docs: name official domain and specific impostors in scam alert
igorls Apr 14, 2026
8630e7e
Merge pull request #869 from gbhat618/fake-website-visibility-increase
igorls Apr 14, 2026
4741bc0
Merge pull request #873 from sha2fiddy/feature/455/kg-sanitize-punctu…
igorls Apr 14, 2026
21793cf
perf: optimize regex compilation in entity extraction
google-labs-jules[bot] Apr 14, 2026
3ac75d0
feat: add MEMPAL_VERBOSE toggle — developers see diaries in chat (#871)
milla-jovovich Apr 14, 2026
6a5e73c
feat: add VSCode devcontainer matching CI environment
igorls Apr 14, 2026
c9b3245
Merge pull request #880 from MemPalace/perf-optimize-regex-compilatio…
igorls Apr 14, 2026
a3f4674
Merge pull request #881 from MemPalace/feat/devcontainer
igorls Apr 14, 2026
1fa0e57
fix: add missing self._lock to query_relationship, timeline, stats in…
shafdev Apr 14, 2026
df986fd
fix: replace invalid 'decision: allow' with {} in hooks
milla-jovovich Apr 14, 2026
0369227
Merge pull request #884 from shafdev/fix/kg-missing-lock
igorls Apr 14, 2026
205867a
Merge pull request #885 from MemPalace/fix/hook-invalid-decision
igorls Apr 14, 2026
3094c0b
fix: add missing self._lock to KnowledgeGraph.close()
milla-jovovich Apr 14, 2026
29bc868
Merge pull request #887 from MemPalace/fix/kg-close-lock
igorls Apr 14, 2026
8df7b9b
benchmarks: add --llm-backend ollama for non-Anthropic rerank
igorls Apr 15, 2026
ca0682a
benchmarks: apply ruff-format to llm_rerank (trivial line wrap)
igorls Apr 15, 2026
61d02e1
benchmarks: add v3.3.0 reproduction results + 50/450 split
igorls Apr 15, 2026
65bf1eb
docs: slim README and move corrections/notices to docs/HISTORY.md
igorls Apr 15, 2026
f20a1a3
docs(website): align mempalaceofficial.com with honest benchmarks
igorls Apr 15, 2026
bf3b9c5
docs: #875 follow-up — repo surfaces + reproduction URLs + CHANGELOG
igorls Apr 15, 2026
1076859
docs+tests: fix CI after README slim (#875)
igorls Apr 15, 2026
db4c52e
Merge pull request #895 from MemPalace/bench/v3.3.0-verification
igorls Apr 15, 2026
ced1fc9
Merge pull request #897 from MemPalace/docs/honest-benchmarks-and-readme
bensig Apr 15, 2026
d565718
fix: address i18n review issues from PR #718
mvalentsev Apr 13, 2026
f36d04e
docs(cli): clarify that 'mempalace init' requires <dir> (#210) (#862)
arnoldwender Apr 15, 2026
f20f45a
fix: make entity_registry.research() local-only by default (#811)
Kesshite Apr 15, 2026
54a386d
fix: return empty status instead of error on cold-start palace (#830)…
mvalentsev Apr 15, 2026
6a73eb2
fix(searcher): guard against empty ChromaDB query results (#195) (#865)
arnoldwender Apr 15, 2026
0aee6f3
fix(init): auto-add per-project files to .gitignore in git repos (#18…
arnoldwender Apr 15, 2026
b226251
fix(mcp): redirect stdout to stderr during import to protect JSON-RPC…
arnoldwender Apr 15, 2026
ecd44f7
fix(hooks): stop precompact hook from blocking compaction (#856, #858…
mvalentsev Apr 15, 2026
a15094c
feat: include created_at timestamp in search results (#846)
sha2fiddy Apr 15, 2026
e61dc2a
fix: add provenance header and speaker IDs to Slack transcript import…
Kesshite Apr 15, 2026
b524b31
fix: restrict file permissions on sensitive palace data (#814)
Kesshite Apr 15, 2026
966937d
test: add palace_graph tunnel helper coverage
fatkobra Apr 15, 2026
56b6a63
Merge pull request #908 from fatkobra/test/palace-graph-tunnels
igorls Apr 15, 2026
b214ace
refactor(entity_detector): make multi-language extensible via i18n JSON
igorls Apr 15, 2026
c722c91
test: document orphan-locale recovery for _temp_locale helper
igorls Apr 15, 2026
3bac365
Merge pull request #911 from MemPalace/refactor/entity-detector-i18n
igorls Apr 15, 2026
b87ada3
feat: add Russian language support to i18n module
mvalentsev Apr 13, 2026
d6bd7de
feat(i18n): add entity detection section to Russian locale
mvalentsev Apr 15, 2026
3e49522
fix(i18n): apply review feedback on ru.json (#760)
mvalentsev Apr 15, 2026
4b998de
feat(i18n): expand Russian entity stopwords with prepositions and con…
mvalentsev Apr 15, 2026
312b3b5
Merge pull request #758 from mvalentsev/fix/i18n-review-issues
igorls Apr 15, 2026
73a2f82
Merge pull request #760 from mvalentsev/feat/i18n-russian
igorls Apr 15, 2026
2e998db
feat: add italian i18n support
Archetipo95 Apr 15, 2026
69453b2
feat: add italian entity patterns
Archetipo95 Apr 15, 2026
ce3ae0a
Merge branch 'MemPalace:develop' into feat/add-i18n-hindi
tejasashinde Apr 15, 2026
33a98fb
Updated hi.json to support infra for entity,pronoun_patterns,dialogue…
tejasashinde Apr 15, 2026
3d13a72
feat(i18n): add Brazilian Portuguese locale with entity detection (cl…
mvalentsev Apr 15, 2026
4221589
fix(i18n): address review feedback on pt-br.json
mvalentsev Apr 15, 2026
10cdd93
feat(cli): add version display and version flag to CLI
almirus Apr 15, 2026
57b0b14
Merge pull request #156 from mvalentsev/feat/pt-br-entity-detection
igorls Apr 15, 2026
122ce38
Merge pull request #907 from Archetipo95/feat/italian-i18n-support
igorls Apr 15, 2026
0174b93
fix(i18n): resolve language codes case-insensitively (#927)
arnoldwender Apr 15, 2026
6caac50
fix(i18n): use Optional[str] for Python 3.9 compatibility
arnoldwender Apr 15, 2026
f895bc5
fix(entity_detector): script-aware word boundaries for combining-mark…
igorls Apr 16, 2026
d4c9424
Merge pull request #932 from MemPalace/fix/entity-detector-non-latin-…
igorls Apr 16, 2026
21da870
fix(i18n/hi): add boundary_chars and update action_pattern for Devana…
tejasashinde Apr 16, 2026
8bf940f
fix: use i18n candidate patterns for entity extraction in miner and p…
mvalentsev Apr 16, 2026
973bd62
fix: use pre-wrapped candidate patterns after #932 refactor
mvalentsev Apr 16, 2026
cde0f5b
remove unnecessary comment
mvalentsev Apr 16, 2026
88f5b5f
Add Indonesian language support
dominosaurs Apr 13, 2026
e083cd6
Create test_claude_plugin_hook_wrappers.py
fatkobra Apr 16, 2026
5fe0c1c
Update mempal-stop-hook.sh
fatkobra Apr 16, 2026
be9214a
Update mempal-precompact-hook.sh
fatkobra Apr 16, 2026
1dc55a7
test: make Claude plugin wrapper tests portable on Windows
fatkobra Apr 16, 2026
683e940
feat(i18n): add Traditional + Simplified Chinese entity detection
lmanchu Apr 16, 2026
939d4c1
feat: Update Indonesian translations
dominosaurs Apr 16, 2026
09fe2dd
fix: add explicit UTF-8 encoding to read_text() calls (#776)
mvalentsev Apr 16, 2026
542b53b
fix: replace Unicode checkmark with ASCII + for Windows encoding (#535)
jphein Apr 12, 2026
15ea385
fix: replace all non-ASCII progress markers for Windows encoding
jphein Apr 12, 2026
84e2aa1
perf: graph cache with write-invalidation in build_graph()
jphein Apr 12, 2026
1657a79
fix: clarify cache docs, skip caching empty graphs
jphein Apr 12, 2026
8adf35a
fix: add threading lock to graph cache, expand docstring
jphein Apr 12, 2026
4215be3
Merge pull request #773 from tejasashinde/feat/add-i18n-hindi
igorls Apr 16, 2026
29112fa
Merge pull request #778 from dominosaurs/feat/id-lang
igorls Apr 16, 2026
65f99ad
Merge pull request #928 from arnoldwender/fix/i18n-lang-case-insensitive
igorls Apr 16, 2026
c5e249b
Merge pull request #946 from mvalentsev/fix/utf8-read-text
igorls Apr 16, 2026
55a004f
Merge pull request #931 from mvalentsev/fix/i18n-entity-metadata
igorls Apr 16, 2026
2087869
release: v3.3.1
igorls Apr 16, 2026
fd89303
docs(changelog): backfill post-v3.3.0 PRs missed by initial boundary
igorls Apr 16, 2026
05ad2dc
release: bump plugin manifests to 3.3.1
igorls Apr 16, 2026
b552bcf
Merge pull request #958 from MemPalace/fix/release-3.3.1-plugin-manif…
igorls Apr 16, 2026
c88b8a2
style: fix ruff format for test_entity_detector.py
lmanchu Apr 16, 2026
9893fa2
new landing page
domiscd Apr 17, 2026
d8ac4c3
new landing page pt 2
domiscd Apr 17, 2026
44c525d
Merge remote-tracking branch 'upstream/develop' into feat/landing-pag…
domiscd Apr 17, 2026
c8727b3
chore(website): add Google Analytics
domiscd Apr 17, 2026
51919fe
Merge pull request #963 from domiscd/feat/landing-page-update
igorls Apr 17, 2026
0cb9ee5
fix(website): correct false claims and stale numbers in live docs
igorls Apr 17, 2026
596f3d3
Merge pull request #964 from MemPalace/fix/website-false-claims
igorls Apr 17, 2026
41bff26
Merge pull request #918 from almirus/develop
igorls Apr 17, 2026
6889c6f
Merge pull request #957 from MemPalace/release/3.3.1
igorls Apr 17, 2026
28d4f67
landing hero container
domiscd Apr 17, 2026
8c3d1ba
Merge remote-tracking branch 'upstream/develop' into feat/landing-pag…
domiscd Apr 17, 2026
89f0eb5
refactor(website): split Landing.vue into section components
domiscd Apr 17, 2026
e5f5009
(landing) added Closets section
domiscd Apr 17, 2026
9e8281a
(landing) svg icons animations
domiscd Apr 17, 2026
2e3e0b9
Update landing.css
domiscd Apr 17, 2026
e4a2cd4
Merge pull request #984 from domiscd/feat/landing-page-update
igorls Apr 17, 2026
41d45d9
docs: RFC 002 — source adapter plugin specification
bensig Apr 18, 2026
a17a8b7
refactor(backends): typed QueryResult/GetResult, PalaceRef, BaseBacke…
igorls Apr 18, 2026
560fdbd
Fix silent drop of .jsonl files in project miner
milla-jovovich Apr 18, 2026
d137d12
Raise MAX_FILE_SIZE cap from 10 MB to 500 MB
milla-jovovich Apr 18, 2026
6f33d52
Raise convo_miner MAX_FILE_SIZE cap 10 MB → 500 MB
milla-jovovich Apr 18, 2026
fed6993
Add tandem sweeper: message-level safety net for dropped transcripts
milla-jovovich Apr 18, 2026
29ce7c7
Harden sweeper for production: verbatim tool blocks, full session_id,…
igorls Apr 18, 2026
42b940d
fix(backends): address Copilot review on #995
igorls Apr 18, 2026
4a088ea
Address Copilot review: cursor tie-break, honest metrics, accurate co…
igorls Apr 18, 2026
24bf97b
fix(tests): avoid ONNX network download in update-length validation t…
Copilot Apr 18, 2026
74a31b7
Merge pull request #998 from MemPalace/fix/silent-transcript-drop
igorls Apr 18, 2026
61dd6e7
test(backends): fix Windows file-lock in cache-invalidation test
igorls Apr 18, 2026
7006a6b
feat(i18n): add entity detection to German locale
mvalentsev Apr 18, 2026
efaa39b
test(backends): dedup update-length-validation tests
igorls Apr 18, 2026
e17f219
feat(i18n): add entity detection to Spanish locale
mvalentsev Apr 18, 2026
118cbe4
feat(i18n): add entity detection to French locale
mvalentsev Apr 18, 2026
5189e0d
test(i18n): add entity section smoke tests and schema invariants
mvalentsev Apr 18, 2026
a3c7782
fix(searcher): guard against None metadata in CLI print path
jphein Apr 18, 2026
feba7e8
fix(miner): same None-metadata guard for status() histogram loop
jphein Apr 18, 2026
7690574
fix(searcher): guard API path + closet loop against None metadata too
jphein Apr 18, 2026
2b9f17c
Merge pull request #995 from MemPalace/refactor/rfc-001-cleanup
igorls Apr 18, 2026
552e992
refactor(sources): RFC 002 §9 scaffolding — BaseSourceAdapter, regist…
igorls Apr 18, 2026
d0c8ecd
fix: upgrade chromadb to >=1.5.4 for python 3.13/3.14 compatibility
Legion345 Apr 10, 2026
fa7fe1d
chromadb at <2 to guard against breaking changes in future major vers…
Legion345 Apr 11, 2026
3f0cfd5
fix(mcp): guard tool_status/list_wings/list_rooms/get_taxonomy agains…
jphein Apr 18, 2026
89904ed
fix(sources): address Copilot review on #1014
igorls Apr 18, 2026
a2da0d6
docs: use real ~/.claude/projects/ path in first-run help and README …
bensig Apr 18, 2026
49e9e04
fix: guard Layer3.search_raw against None doc/meta from ChromaDB (#1011)
bensig Apr 18, 2026
1b89b49
Merge pull request #999 from jphein/fix/searcher-none-metadata
bensig Apr 18, 2026
6426669
Merge pull request #1013 from MemPalace/fix/layer3-search-raw-none-gu…
bensig Apr 18, 2026
7af3bfa
Merge pull request #1010 from MemPalace/fix/chromadb-1-5-4-py-3-13-co…
igorls Apr 18, 2026
8a130fc
Merge pull request #1012 from MemPalace/docs/use-real-claude-projects…
igorls Apr 18, 2026
66090b2
Merge pull request #1014 from MemPalace/refactor/rfc-002-sources-scaf…
igorls Apr 18, 2026
109d7f2
Merge pull request #990 from MemPalace/docs/rfc-source-adapter-plugin…
igorls Apr 18, 2026
0c38dea
feat(backends): quarantine_stale_hnsw — recover from HNSW/sqlite drift
jphein Apr 18, 2026
9149456
fix(hooks): honor silent_save when stop_hook_active is set
jphein Apr 18, 2026
6a3a5c7
fix(hooks): write hook JSON to real stdout, bypassing mcp_server redi…
jphein Apr 18, 2026
5deb815
fix(hooks): address Copilot review feedback on #1021
jphein Apr 18, 2026
1531a25
test: add missing import os in test_hooks_cli
jphein Apr 18, 2026
2183d86
style(hooks): ruff format hooks_cli.py and test_hooks_cli.py
jphein Apr 19, 2026
a6b6e55
fix: PID file guard prevents stacking mine processes
jphein Apr 19, 2026
fe6b889
fix: broaden _mine_already_running catch — Windows os.kill raises pla…
jphein Apr 19, 2026
dfba247
fix: cross-platform PID check — os.kill(pid, 0) TERMINATES on Windows
jphein Apr 19, 2026
62439e1
Merge pull request #681 from jphein/fix/unicode-checkmark
bensig Apr 19, 2026
caf503f
Merge pull request #1000 from jphein/fix/quarantine-stale-hnsw
bensig Apr 19, 2026
32ec74d
Merge pull request #1023 from jphein/pr/pid-file-guard
bensig Apr 19, 2026
3004ac4
fix(miner): port None-metadata guard into paginated status loop
vnguyen-lexipol Apr 19, 2026
5d2da04
Merge remote-tracking branch 'upstream/develop' into fix/status-pagin…
vnguyen-lexipol Apr 19, 2026
0b316d4
test: normalize wrapper script path for bash on Windows
fatkobra Apr 19, 2026
2629ae5
fix(hooks): default silent_guard=True — config-read failure must not …
jphein Apr 19, 2026
d657626
style: ruff format — collapse AttributeError log call to single line
jphein Apr 19, 2026
5e94514
release: v3.3.2
igorls Apr 19, 2026
65b17a6
fix: address Copilot review on release/3.3.2
igorls Apr 19, 2026
54c314d
feat(i18n): add Belarusian
itfarrier Apr 19, 2026
04e11ae
Merge pull request #1045 from MemPalace/fix/copilot-review-release-3.3.2
igorls Apr 20, 2026
936f186
release: merge main into release/3.3.2 — keep 3.3.2 version bumps
igorls Apr 20, 2026
cf0477b
Merge pull request #1052 from MemPalace/merge/main-into-release-3.3.2
igorls Apr 20, 2026
87102fb
Merge pull request #1041 from MemPalace/release/3.3.2
bensig Apr 20, 2026
2a5914b
Merge pull request #945 from lmanchu/feat/zh-entity-detection
igorls Apr 21, 2026
6d42f61
Merge pull request #1001 from mvalentsev/feat/i18n-de-es-fr-entity
igorls Apr 21, 2026
1a180cd
Merge pull request #1051 from itfarrier/feat/i18n-belarusian
igorls Apr 21, 2026
4fb0ee5
Merge pull request #942 from fatkobra/fix-hooks-resolve-claude-plugin
igorls Apr 21, 2026
9f5b8f5
fix: add mempalace-mcp console entry point for pipx/uv compatibility
messelink Apr 9, 2026
be89e49
fix: use mempalace CLI in hook scripts instead of python3 -m
messelink Apr 9, 2026
67a0677
fix: use mempalace CLI in top-level hook scripts
messelink Apr 16, 2026
982d421
fix: update mempalace mcp command to use mempalace-mcp entry point
messelink Apr 16, 2026
9e53228
test: update test_cli assertions for mempalace-mcp entry point
messelink Apr 16, 2026
5522d34
Merge pull request #340 from messelink/fix/mcp-pipx-compat
igorls Apr 21, 2026
48eb627
fix(hooks): MEMPAL_PYTHON override for .sh hooks' internal python3 calls
igorls Apr 13, 2026
1b00f93
Merge pull request #833 from MemPalace/fix/hooks-python-resolution
igorls Apr 21, 2026
74e9cbc
feat: deterministic hook saves — zero data loss via silent Python API
jphein Apr 21, 2026
810f9a5
Merge pull request #851 from vnguyen-lexipol/fix/status-paginate-larg…
bensig Apr 22, 2026
02aafc0
Merge pull request #1021 from jphein/upstream-fix/silent-save-visibility
bensig Apr 22, 2026
23ee2a0
Merge pull request #673 from jphein/feat/deterministic-hook-save
bensig Apr 22, 2026
9b35d9f
Merge pull request #661 from jphein/perf/graph-cache
bensig Apr 22, 2026
4f00390
feat(website): apply Crystal Lattice brand — fonts, palette, hero copy
bensig Apr 23, 2026
818b7f4
Merge pull request #1118 from MemPalace/ben/crystal-lattice-brand
bensig Apr 23, 2026
df3ee28
fix: add wing param to diary_write/diary_read, derive from transcript…
jphein Apr 23, 2026
9947ad0
fix: treat empty string as no filter in mempalace_search wing/room (#…
KunalG67 Apr 23, 2026
102372b
release: v3.3.3
bensig Apr 23, 2026
4f799af
release(3.3.3): bump README version badge
bensig Apr 23, 2026
6d252a0
Merge pull request #1144 from MemPalace/chore/release-3.3.3-prep
igorls Apr 24, 2026
d158375
fix(hooks): derive project wing from non-macOS transcript paths (#1145)
igorls Apr 24, 2026
1fd16da
fix(mcp): diary_read(wing='') spans all wings for agent (#1145)
igorls Apr 24, 2026
6fcfd34
docs(changelog): log #1145 fixes in 3.3.3 section
igorls Apr 24, 2026
6aebf45
fix(entity): reduce noise in regex-based detection
igorls Apr 24, 2026
9e7fa1c
feat(init): scan manifests and git authors for real entity signal
igorls Apr 24, 2026
14d7444
fix(deps): add tomli fallback for Python <3.11
igorls Apr 24, 2026
c7bd2cd
feat(convo): parse Claude Code conversation dirs into project entities
igorls Apr 24, 2026
df6c7d0
feat(llm): pluggable provider abstraction for entity refinement
igorls Apr 24, 2026
10a743d
feat(llm): interactive entity refinement with batching and cancellation
igorls Apr 24, 2026
36a8f21
feat(init): wire --llm flag and convo_scanner into discover_entities
igorls Apr 24, 2026
70d4c54
fix(project-scanner): address review feedback
Copilot Apr 24, 2026
851ebeb
test(project-scanner): tighten git helper env handling
Copilot Apr 24, 2026
ec9084f
refactor(project-scanner): tidy manifest priority helpers
Copilot Apr 24, 2026
d4cc367
test(project-scanner): harden git helper execution
Copilot Apr 24, 2026
9486d8b
test(project-scanner): make gitdir fixtures portable
Copilot Apr 24, 2026
035fe6d
fix(llm): tighter refinement — word boundaries, JSON extraction, auth…
igorls Apr 24, 2026
b150d33
fix(mine): skip generated entities file
igorls Apr 24, 2026
4631d6a
feat(init): wire confirmed entities into the miner's known-entities r…
igorls Apr 24, 2026
1b1854e
fix(init): address registry review feedback
Copilot Apr 24, 2026
8ac98f0
Merge pull request #1147 from MemPalace/fix/3.3.3-followups
bensig Apr 24, 2026
bcd0791
fix(security): normalize MEMPALACE_PALACE_PATH env var with abspath+e…
arnoldwender Apr 24, 2026
02a88b0
test(config): make palace_path tests portable across POSIX and Windows
arnoldwender Apr 24, 2026
ae1c52e
test(config): drop tilde-absence assertion for Windows 8.3 compatibility
arnoldwender Apr 24, 2026
a851c7a
Merge pull request #1148 from MemPalace/feat/project-scanner-entity-d…
igorls Apr 24, 2026
61d6c3c
Merge pull request #1157 from MemPalace/feat/wire-entities-to-miner
igorls Apr 24, 2026
19ce58c
chore: rescue merged stacked PRs #1150 and #1157 into develop
igorls Apr 24, 2026
55c83e9
fix(init): case-insensitive project dedup across manifest and convo s…
igorls Apr 24, 2026
8a6ebbe
Merge pull request #1175 from MemPalace/chore/rescue-stacked-prs-into…
igorls Apr 24, 2026
f246d25
Merge pull request #1166 from arnoldwender/fix/security-palace-path-e…
igorls Apr 24, 2026
431e42a
docs(changelog): document init entity-detection overhaul in 3.3.3
igorls Apr 24, 2026
174ecaf
Update CHANGELOG.md
igorls Apr 24, 2026
7a75791
Merge pull request #1176 from MemPalace/docs/changelog-3.3.3-init-ove…
igorls Apr 24, 2026
94f1689
Merge pull request #1159 from MemPalace/develop
igorls Apr 24, 2026
fadc216
Merge remote-tracking branch 'upstream/main' into sync/upstream-main-…
arncore Apr 25, 2026
dab6764
feat(firestore): port backend to RFC 001 BaseBackend / BaseCollection
arncore Apr 25, 2026
998379e
chore(format): apply ruff format on 6 drift files to unblock lint CI
arncore Apr 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .claude-plugin/.mcp.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
{
"mempalace": {
"command": "python3",
"args": [
"-m",
"mempalace.mcp_server"
]
"command": "mempalace-mcp"
}
}
23 changes: 21 additions & 2 deletions .claude-plugin/hooks/mempal-precompact-hook.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
#!/bin/bash
# MemPalace PreCompact Hook — thin wrapper calling Python CLI
# All logic lives in mempalace.hooks_cli for cross-harness extensibility
INPUT=$(cat)
echo "$INPUT" | python3 -m mempalace hook run --hook precompact --harness claude-code
run_mempalace_hook() {
if command -v mempalace >/dev/null 2>&1; then
mempalace hook run "$@"
return $?
fi

if command -v python3 >/dev/null 2>&1 && python3 -c "import mempalace" >/dev/null 2>&1; then
python3 -m mempalace hook run "$@"
return $?
fi

if command -v python >/dev/null 2>&1 && python -c "import mempalace" >/dev/null 2>&1; then
python -m mempalace hook run "$@"
return $?
fi

echo "MemPalace hook error: could not find a runnable mempalace command or module" >&2
return 1
}

run_mempalace_hook --hook precompact --harness claude-code
23 changes: 21 additions & 2 deletions .claude-plugin/hooks/mempal-stop-hook.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
#!/bin/bash
# MemPalace Stop Hook — thin wrapper calling Python CLI
# All logic lives in mempalace.hooks_cli for cross-harness extensibility
INPUT=$(cat)
echo "$INPUT" | python3 -m mempalace hook run --hook stop --harness claude-code
run_mempalace_hook() {
if command -v mempalace >/dev/null 2>&1; then
mempalace hook run "$@"
return $?
fi

if command -v python3 >/dev/null 2>&1 && python3 -c "import mempalace" >/dev/null 2>&1; then
python3 -m mempalace hook run "$@"
return $?
fi

if command -v python >/dev/null 2>&1 && python -c "import mempalace" >/dev/null 2>&1; then
python -m mempalace hook run "$@"
return $?
fi

echo "MemPalace hook error: could not find a runnable mempalace command or module" >&2
return 1
}

run_mempalace_hook --hook stop --harness claude-code
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
"name": "mempalace",
"owner": {
"name": "milla-jovovich",
"url": "https://github.com/milla-jovovich"
"url": "https://github.com/MemPalace"
},
"plugins": [
{
"name": "mempalace",
"source": "./.claude-plugin",
"description": "AI memory system — mine projects and conversations into a searchable palace. 19 MCP tools, auto-save hooks, guided setup.",
"version": "3.0.14",
"version": "3.3.3",
"author": {
"name": "milla-jovovich"
}
Expand Down
8 changes: 2 additions & 6 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mempalace",
"version": "3.0.14",
"version": "3.3.3",
"description": "Give your AI a memory — mine projects and conversations into a searchable palace. 19 MCP tools, auto-save hooks, and guided setup.",
"author": {
"name": "milla-jovovich"
Expand All @@ -9,11 +9,7 @@
"commands": [],
"mcpServers": {
"mempalace": {
"command": "python3",
"args": [
"-m",
"mempalace.mcp_server"
]
"command": "mempalace-mcp"
}
},
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/hooks/mempal-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -euo pipefail
HOOK_NAME="${1:?Usage: mempal-hook.sh <hook-name>}"
INPUT_FILE=$(mktemp) || { echo "Failed to create temp file" >&2; exit 1; }
cat > "$INPUT_FILE"
cat "$INPUT_FILE" | python3 -m mempalace hook run --hook "$HOOK_NAME" --harness codex
cat "$INPUT_FILE" | mempalace hook run --hook "$HOOK_NAME" --harness codex
EXIT_CODE=$?
rm -f "$INPUT_FILE" 2>/dev/null
exit $EXIT_CODE
8 changes: 2 additions & 6 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mempalace",
"version": "3.0.14",
"version": "3.3.3",
"description": "Give your AI a memory — mine projects and conversations into a searchable palace. 19 MCP tools, auto-save hooks, and guided setup.",
"author": {
"name": "milla-jovovich"
Expand All @@ -21,11 +21,7 @@
"hooks": "./hooks.json",
"mcpServers": {
"mempalace": {
"command": "python3",
"args": [
"-m",
"mempalace.mcp_server"
]
"command": "mempalace-mcp"
}
},
"interface": {
Expand Down
25 changes: 25 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "MemPalace",
"image": "mcr.microsoft.com/devcontainers/python:3.11",
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"postCreateCommand": "bash .devcontainer/post-create.sh",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.debugpy",
"charliermarsh.ruff"
],
"settings": {
"python.defaultInterpreterPath": "/usr/local/bin/python",
"python.testing.pytestEnabled": true,
"python.testing.pytestArgs": ["tests/", "-v", "--ignore=tests/benchmarks"],
"ruff.importStrategy": "fromEnvironment",
"editor.formatOnSave": true,
"editor.defaultFormatter": "charliermarsh.ruff"
}
}
}
}
21 changes: 21 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail

echo "=== MemPalace Dev Container Setup ==="

pip install -e ".[dev]"

# Match CI's ruff pin (pyproject only sets a floor; without this contributors
# get a newer ruff locally than CI runs, causing phantom lint failures).
pip install "ruff>=0.4.0,<0.5"

pip install pre-commit
pre-commit install

echo ""
echo "=== Verification ==="
echo "python: $(python --version)"
echo "pytest: $(python -m pytest --version 2>&1 | head -1)"
echo "ruff: $(python -m ruff --version 2>&1 | head -1)"
echo ""
echo "Ready. Run: pytest tests/ -v --ignore=tests/benchmarks"
4 changes: 2 additions & 2 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Deploy Docs

on:
push:
branches: [main, develop]
branches: [develop]
paths:
- ".github/workflows/deploy-docs.yml"
- "website/**"
Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
path: website/.vitepress/dist

deploy:
if: github.ref_name == 'main' || github.ref_name == 'develop'
if: github.ref_name == 'develop'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
Expand Down
101 changes: 101 additions & 0 deletions .github/workflows/version-guard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Version Guard

on:
push:
tags: ['v*']
pull_request:
paths:
- 'pyproject.toml'
- 'mempalace/version.py'
- '.claude-plugin/marketplace.json'
- '.claude-plugin/plugin.json'
- '.codex-plugin/plugin.json'
- '.github/workflows/version-guard.yml'

jobs:
check-versions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Extract versions from all sources
id: versions
run: |
set -euo pipefail
py_version=$(grep -E '^__version__' mempalace/version.py | cut -d'"' -f2)
pyproject_version=$(grep -E '^version' pyproject.toml | head -1 | cut -d'"' -f2)
marketplace_version=$(jq -r '.plugins[0].version' .claude-plugin/marketplace.json)
plugin_version=$(jq -r '.version' .claude-plugin/plugin.json)
codex_version=$(jq -r '.version' .codex-plugin/plugin.json)

echo "py_version=$py_version" >> "$GITHUB_OUTPUT"
echo "pyproject_version=$pyproject_version" >> "$GITHUB_OUTPUT"
echo "marketplace_version=$marketplace_version" >> "$GITHUB_OUTPUT"
echo "plugin_version=$plugin_version" >> "$GITHUB_OUTPUT"
echo "codex_version=$codex_version" >> "$GITHUB_OUTPUT"

{
echo "## Detected versions"
echo ""
echo "| Source | Version |"
echo "| --- | --- |"
echo "| mempalace/version.py | \`$py_version\` |"
echo "| pyproject.toml | \`$pyproject_version\` |"
echo "| .claude-plugin/marketplace.json | \`$marketplace_version\` |"
echo "| .claude-plugin/plugin.json | \`$plugin_version\` |"
echo "| .codex-plugin/plugin.json | \`$codex_version\` |"
} >> "$GITHUB_STEP_SUMMARY"

- name: Verify all sources agree
env:
PY: ${{ steps.versions.outputs.py_version }}
PYPROJECT: ${{ steps.versions.outputs.pyproject_version }}
MARKETPLACE: ${{ steps.versions.outputs.marketplace_version }}
PLUGIN: ${{ steps.versions.outputs.plugin_version }}
CODEX: ${{ steps.versions.outputs.codex_version }}
run: |
set -euo pipefail
fail=0
check() {
local name="$1" value="$2" expected="$3"
if [[ "$value" != "$expected" ]]; then
echo "::error file=$name::version mismatch — expected $expected, got $value"
fail=1
fi
}
# All five must agree with each other (use version.py as the reference, per CLAUDE.md)
check "pyproject.toml" "$PYPROJECT" "$PY"
check ".claude-plugin/marketplace.json" "$MARKETPLACE" "$PY"
check ".claude-plugin/plugin.json" "$PLUGIN" "$PY"
check ".codex-plugin/plugin.json" "$CODEX" "$PY"
exit $fail

- name: Verify tag matches manifest (tag pushes only)
if: startsWith(github.ref, 'refs/tags/v')
env:
PY: ${{ steps.versions.outputs.py_version }}
run: |
set -euo pipefail
tag_version="${GITHUB_REF_NAME#v}"

# Semver pre-release tags (v3.4.0-rc1, v1.0.0-beta.2, ...) are treated
# as internal/staging and are not validated against the manifest. They
# do not flow to end users via `/plugin update`, which reads the
# manifest on the default branch.
if [[ "$tag_version" == *-* ]]; then
echo "Pre-release tag $GITHUB_REF_NAME — skipping strict manifest match."
{
echo ""
echo "> Pre-release tag detected: \`$GITHUB_REF_NAME\`."
echo "> Manifest ($PY) is not required to match. Pre-releases are not published via \`/plugin update\`."
} >> "$GITHUB_STEP_SUMMARY"
exit 0
fi

if [[ "$tag_version" != "$PY" ]]; then
echo "::error::tag $GITHUB_REF_NAME does not match manifest version $PY"
echo "Bump mempalace/version.py, pyproject.toml, and all plugin manifests before tagging a stable release."
echo "For an internal/staging tag, use a semver pre-release suffix (e.g. v${PY}-rc1)."
exit 1
fi
echo "Tag $GITHUB_REF_NAME matches manifest version $PY"
5 changes: 4 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.0
# Keep in lock-step with the ruff version pinned in .github/workflows/ci.yml
# (>=0.4.0,<0.5). Using a newer rev here produces a different formatter
# output than CI and breaks `ruff format --check` in the lint job.
rev: v0.4.10
hooks:
- id: ruff
args: [--fix]
Expand Down
Loading
Loading