What's Changed
- fix: Refuse note creates and updates whose path leaves the project by @phernandez in #1837
- feat(mcp): shared parameter types, refusals and resolver for bm_* tools by @phernandez in #1835
- feat(mcp): bm_read, bm_list, bm_find, bm_search, bm_context by @phernandez in #1836
- feat(mcp): add bm_write, bm_edit, bm_move and bm_delete by @phernandez in #1838
- feat(mcp): add bm_project, bm_project_delete and bm_schema by @phernandez in #1839
- feat(mcp): bm_man and manual pages for the 1.0 tools by @phernandez in #1844
- feat(cli): redesign bm doctor as a report with suggested fixes by @phernandez in #1799
- fix: clean up a superseded move's old file by @phernandez in #1847
- fix(core): defer note promotions that would roll back to a superseded version by @groksrc in #1825
- fix(mcp): refuse create_memory_project path mismatch by @phernandez in #1846
- refactor(mcp): migrate consumers and documentation to 1.0 tools by @phernandez in #1849
- fix(core): upgrade FastAPI and preserve read-cache identities by @phernandez in #1854
- fix(ci): shard full test suites and preserve local fast-test by @phernandez in #1856
- fix(ci): correct platform assertions and isolate wiki CLI tests by @phernandez in #1863
- fix(mcp): correct manual tool results and cover deferred writes by @phernandez in #1864
- fix(core): recover SQLite index rebuilds and large vector deletions by @phernandez in #1865
- fix(sync): catch up newly watched projects during ignored activity by @phernandez in #1866
- fix(mcp): align recovery guidance and manuals with bm tools by @phernandez in #1868
- docs(core): add unreleased 1.0 changes to the changelog by @phernandez in #1871
- fix(core): keep wiki projections moving past reserved identities by @phernandez in #1875
- fix(api): reject malformed memory JSON before writing notes by @phernandez in #1876
- feat: return the file paths a chat import wrote by @phernandez in #1878
- fix(core): preserve title ranking with metadata filters by @phernandez in #1882
- build(deps): make LiteLLM an explicit optional extra by @phernandez in #1883
- refactor(mcp): retire the redundant legacy tool surface by @phernandez in #1881
- fix(core): re-embed relation sources after forward-reference resolution by @remote-controlled-man in #1884
- fix(api): return 400 for malformed memory-context locators by @remote-controlled-man in #1885
- docs: add bm-agent(3) for the hosted agent tool by @phernandez in #1917
- fix(core): escape literal directory prefixes before moves by @phernandez in #1915
- fix(core): bound ChatGPT mapping graph traversal by @phernandez in #1916
- fix(core): avoid quadratic section heading suffix copies by @phernandez in #1920
- fix(core): enforce resolved project root ancestry by @phernandez in #1921
- fix(cli): skip file symlinks in legacy directory uploads by @phernandez in #1922
- fix(core): bound find-replace output before allocation by @phernandez in #1923
- fix(cli): create rclone credentials with private permissions by @phernandez in #1924
- fix(core): make atomic staging private before writing by @phernandez in #1925
- fix(core): bound Markdown directive whitespace scanning by @phernandez in #1926
- fix(core): bound CSV preview before wide-row padding by @phernandez in #1927
- fix(cli): validate normalized upload destinations before dispatch by @phernandez in #1928
- fix(core): preserve configured project root during moves by @phernandez in #1930
- fix(core): enforce project boundaries at import and storage sinks by @phernandez in #1931
- refactor(core): share project path validation contracts by @phernandez in #1932
- fix(mcp): require explicit project scope for note tools by @phernandez in #1934
- fix(core): reject YAML aliases and merge expansion in notes by @phernandez in #1933
- fix(core): match nested directory ignore rules by ancestry by @phernandez in #1929
- docs: bm-agent(3) takes a required project, like the note tools by @phernandez in #1936
- fix(mcp): honor project constraint in JSON project list by @phernandez in #1937
- fix(cli): prompt for cloud API key instead of requiring argv by @phernandez in #1938
- fix(core): cap ZIP import and search query input sizes by @phernandez in #1939
- fix(mcp): report a timed-out query as a ToolError by @phernandez in #1942
- feat(cli)!: bm tool mirrors the bm_* MCP tools by @phernandez in #1943
- fix(core): apply directory path rules to their files and skip a BOM in ignore files by @phernandez in #1949
- fix(core): normalize OpenAI-compatible embedding vectors by @phernandez in #1948
- refactor(mcp): remove retired tool modules nothing calls by @phernandez in #1944
- refactor(mcp): remove the retired write_note tool by @phernandez in #1947
- fix(sync): keep file events across watcher reloads by @phernandez in #1951
- docs(core): list only registered tools in section 3 of the manual by @phernandez in #1952
- feat(cli)!: remove legacy cloud sync and bisync by @phernandez in #1953
- fix(core): repair and report entities missing search rows by @phernandez in #1954
- fix(core): rank an exact title match first in title search by @phernandez in #1957
- test(mcp): port project management tests to bm_project by @phernandez in #1961
- refactor(mcp): fold schema tools into bm_schema by @phernandez in #1959
- refactor(mcp): port context and recent-activity tests to bm_context and bm_project by @phernandez in #1962
- refactor(mcp): remove read_note, edit_note, workspaces and chatgpt tool modules by @phernandez in #1964
- fix(core): own startup index tasks and remove flaky test causes by @phernandez in #1967
- refactor(mcp): port search tests to bm_search and remove search_notes by @phernandez in #1963
- refactor(cli)!: rebuild cat/grep/ls/find on bm_* tools and remove tail by @phernandez in #1960
- fix(integrations): make the OpenClaw plugin work on OpenClaw 2026.10 by @groksrc in #1966
- chore(ci): run coverage over the same four suites as just test by @phernandez in #1969
- docs(mcp): describe bm_agent run on nothing, a note, or a folder by @phernandez in #1970
- fix(sync): keep watching when one project directory is missing by @phernandez in #1971
- fix(core): make "a AND NOT b" search work on SQLite by @phernandez in #1972
- fix(mcp): tidy tool messages found in the 1.0 live test by @phernandez in #1974
- docs(core): changelog for v1.0.0 by @phernandez in #1977
- chore(core): release v1.0.0 by @phernandez in #1978
New Contributors
- @remote-controlled-man made their first contribution in #1884
Full Changelog: v0.24.1...v1.0.0