Notechondria
Version: 0.1.16 Build Date: 2026-04-09T00:00
What's Changed
MCP Server (Model Context Protocol)
-
Added
mcpDjango app implementing the MCP 2025-03-26 specification over Streamable HTTP transport (JSON-RPC 2.0). -
MCP endpoint at
POST /mcp/supportsinitialize,ping,tools/list, andtools/callmethods. -
21 MCP tools covering all user-facing operations:
- Profile:
get_profile,update_profile - Notes:
list_notes,get_note,create_note,update_note,delete_note,search_notes - Courses:
list_courses,get_course,create_course,update_course,delete_course - Activity:
get_heatmap,get_recent_activity - Planner:
list_events,create_event,update_event - Versions:
list_note_versions,snapshot_note - Attachments:
list_attachments
- Profile:
API Key Authentication
-
Added
api_key_hashandapi_key_prefixfields to theCreatormodel (migration 0027). -
New
ApiKeyAuthenticationDRF backend authenticates requests withAuthorization: Bearer ntc_<32hex>headers. -
POST /api/v1/auth/rotate-api-key/generates a new API key (returns plaintext once; only SHA-256 hash is stored). -
api_key_prefixexposed in the settings GET response so the frontend can display a masked key. -
API key auth registered globally in
REST_FRAMEWORK.DEFAULT_AUTHENTICATION_CLASSES.
Bug fixes (from previous session)
-
Fixed GitHub OAuth binding 400 error: added
"bind"to intent choices in both OAuth serializers. -
Optimized
/front-pageand/notesAPI performance: eliminated N+1 excerpt queries, annotated subscriber counts, deduplicated serialization. -
Fixed avatar CORS: R2 media URLs rewritten to same-origin
/media/paths with a proxy view fallback. -
Added
SendIdentityCodeApiViewfor email-based identity verification before password/email changes. - Applied blur backdrop to change-email and change-password dialogs.
- Removed duplicated metabolite name labels in splash screen (all 3 apps).
-
Added missing
from django.conf import settingsimport innotes/api.py.
Files Changed
backend/mcp/__init__.py-- New MCP Django appbackend/mcp/apps.py-- App config with tool auto-registrationbackend/mcp/protocol.py-- JSON-RPC 2.0 dispatch and MCP protocol handlerbackend/mcp/views.py-- Streamable HTTP transport view (POST/GET/DELETE)backend/mcp/urls.py-- URL routing for/mcp/backend/mcp/tools.py-- 21 MCP tool implementationsbackend/mcp/tests.py-- 39 tests covering auth, protocol, and all toolsbackend/mcp/migrations/__init__.py-- Migrations packagebackend/creators/models.py-- Addedapi_key_hash,api_key_prefixto Creatorbackend/creators/migrations/0027_creator_api_key.py-- Migration for API key fieldsbackend/creators/authentication.py--ApiKeyAuthenticationDRF backendbackend/creators/api.py-- AddedRotateApiKeyApiView,api_key_prefixin settings,"bind"intent, identity code verificationbackend/notechondria/settings.py-- Addedmcpto INSTALLED_APPS,ApiKeyAuthenticationto DRF auth classesbackend/notechondria/api_urls.py-- Addedrotate-api-key/,send-identity-code/URL routesbackend/notechondria/urls.py-- Added/mcp/route at root, media proxybackend/notechondria/urls_test.py-- Added/mcp/route for test runnerbackend/notechondria/api_views.py-- Addedmedia_serveproxy view for R2 CORS fixbackend/notes/api.py-- Addedsettingsimport, optimized queries, R2 URL rewritefrontend/editor_app/lib/core/client.dart-- AddedsendIdentityCode, updatedchangePassword/changeEmailRequestsignaturesfrontend/editor_app/lib/modules/settings.dart-- Identity verification flow, blur dialogsfrontend/editor_app/lib/app_shell.dart-- Wired new callback signaturesfrontend/editor_app/lib/components/avatar.dart-- Error logging for failed image loadsfrontend/*/lib/components/splash_screen.dart-- Removed duplicate metabolite name labels (all 3 apps)docs/versions/0.1.16.md-- This version documentVERSION-- Bumped from 0.1.15 to 0.1.16