Added
- Chat session management (#256) — list, view, export, and save past notebook chats.
- CLI:
nlm chats list <notebook>,nlm chats get <notebook> [conversation_id],nlm chats export <notebook> [conversation_id] --format md|json --output file, andnlm chats to-note <notebook> <conversation_id> [--turn N] [--title ...]. - MCP tools:
chat_list,chat_get,chat_export. - Transcripts are fetched from NotebookLM's server (a newly-documented
khqZzRPC, seedocs/API_REFERENCE.md), so past chats are visible even from a fresh CLI invocation or MCP session — not just chats made earlier in the same process. - Documented in
SKILL.md,AGENTS_SECTION.md'scommand_reference.md,docs/CLI_GUIDE.md,docs/MCP_GUIDE.md,README.md, andAGENTS.md.
- CLI:
Fixed
- Preserve profile email across token updates (#266) —
AuthManager.save_profile()now preserves the existing stored profile email frommetadata.jsonwhenemail=Noneis passed during background CSRF updates, token refreshes, andsave_tokens_to_cache()calls. - Chat session tools now respect the configured default profile —
services/chats.pyno longer hardcodes profile"default"; it now falls back toget_config().auth.default_profilelike the rest of the CLI/MCP client resolution, sochat_list/chat_get/chat_exportandnlm chats ...work correctly for accounts usingnlm login switch. nlm chats to-note/save_chat_to_notenow creates the note correctly — it was callingnotes_service.create_note()with the wrong signature (notebook=/profile=keyword args instead of the required(client, notebook_id, content, title)), which raised aTypeErrorat runtime. Never shipped, caught before release via live testing.chat_list/chat_get/chat_exportare now hideable viaNOTEBOOKLM_DISABLED_GROUPS— added to thechattool group intool_groups.py, which previously covered onlynotebook_query/chat_configure/notebook_query_start/notebook_query_status.- Tool count corrected to 43 across all docs —
label,notebook_query_start, andnotebook_query_statuswere registered MCP tools missing frommcp/tools/__init__.py's__all__and fromdocs/MCP_GUIDE.md(which also separately lackedsource_renameandnotebook_share_batch). Fixed the export list and documented every tool; updated the stale "40 tools" (and one "39 tools") count in README.md, the desktop extension manifest,SKILL.md, anddocs/MCP_CLI_TEST_PLAN.md. Added a regression test (test_groups_cover_every_registered_tool) so a new tool shipping without atool_groups.pyentry fails CI instead of silently drifting.