Skip to content

Latest commit

 

History

History
180 lines (122 loc) · 10.2 KB

File metadata and controls

180 lines (122 loc) · 10.2 KB

Changelog

All notable changes to DevNote will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.5.1] — 2026-04-27

Fixed

  • 🐛 Markdown in chat answers now actually renders — marked.min.js was being blocked with HTTP 403 by the webview sandbox in v0.5.0 because it wasn't loaded via webview.asWebviewUri(...). Citations are clickable pills again, bold/italic/lists/code render correctly. (See AI engineering decisions log #26.)

Changed

  • 💬 Chat now lives in a dedicated tab (🏠 Home / 💬 Chat) instead of stacked inputs. Reverses v0.5.0 D16 after dogfooding showed the stacked pattern felt cramped. Full-height chat with sticky bottom input, ChatGPT/Claude muscle memory. Switch between Home and Chat via the tab bar — chat history is preserved across tab switches within a session.
  • Removed the left-border accent on assistant bubbles (cleaner look).
  • Chat empty state is intentionally minimal — just the header and the input pinned at the bottom. The "Ask your memory…" placeholder is enough onboarding; no extra copy or buttons.

Added

  • ■ Stop button — replaces the send button while answers are streaming. Click stop → bubble freezes at current text (partial answer preserved). Send button restores when streaming finishes or user stops.
  • 3-stage loading state — "Searching your notes…" → "Found N notes…" → "Generating answer…" — replaces the silent wait window between send and first token.

Notes

  • Stop is currently TS-side only (worker keeps streaming, output is discarded). Python-side stream cancellation deferred to v0.6+.
  • This is the first post-launch polish release in the Phase 2 arc — demonstrates the ship-then-iterate loop. D16 was reasonable at planning but real-use data overruled it.

[0.5.0] — 2026-04-26

Added

  • 💬 Chat with your memory — ask natural-language questions about your past notes, get grounded answers with citations
  • New 💬 chat input in the sidebar (stacked below the existing 🔍 search input)
  • Inline clickable citation pills ([Note 1]) in chat answers — click to open the source note in the existing preview view
  • Light multi-turn conversations: follow-up questions resolve pronouns from the last 4 turns ("when was that?")
  • Streaming token-by-token responses for snappy UX (~500ms time-to-first-token)
  • "New chat" button to clear the in-session conversation
  • Refusal path: when the answer isn't in your notes, DevNote replies "I don't find that in your notes" instead of guessing
  • Closes the Phase 2 AI-memory arc — DevNote now captures, searches, recalls, AND converses

Changed

  • Sidebar layout: search input + chat input now stack above the morphing list region (Recent Notes / Search Results / Chat)
  • Description in package.json updated to reflect chat capability

Notes

  • Chat uses gemini-2.5-flash (primary) with automatic fallback to gemini-2.5-flash-lite on overload/quota — same cascade pattern proven in v0.2.0 note generation
  • Conversations are NOT persisted across VS Code restarts — each session starts with a fresh chat. Persistent history is on the backlog for a future release.
  • Retrieval reuses v0.4.0's k=5 + threshold=0.70 — single source of truth across search and chat
  • Markdown renders only when the stream completes (typewriter effect during streaming, polished render at end)

[0.4.2] — 2026-04-19

Fixed

  • Search threshold re-calibrated for gemini-embedding-001: raised SEARCH_THRESHOLD from 0.35 to 0.70. The higher-dimensional (3072) embeddings produce a different similarity distribution where random/unrelated queries score 0.55–0.65 — the old 0.35 floor (calibrated for 768-dim text-embedding-004) let that noise through. With 0.70, only topically-relevant matches (typically 0.75–0.95) appear in results.

[0.4.1] — 2026-04-19

Fixed

  • Python detection on Windows: stdout race condition in checkPythonVersion was causing false "Python 3.10+ not found" errors even when 3.12+ was installed. Switched from 'exit' to 'close' event (guarantees stdio buffers drain before parsing) and made the version regex BOM-safe. Added console logs under [PythonSetup] prefix so users can diagnose detection issues via VS Code Developer Tools if needed.

[0.4.0] — 2026-04-18

Added

  • 🔍 Semantic search over all past notes — type a natural-language query, get results ranked by meaning (not keywords)
  • Search input above Recent Notes in the sidebar; morphing header shows mode
  • Similarity score badge on each result (e.g. 87% · 2h)
  • One-time Python environment setup flow on first search (venv + pip install)
  • One-time backfill indexing for existing notes (uses Gemini batch embedding API)
  • "Reset Python environment" button in Settings (power-user recovery)
  • "Re-index all notes" button in Settings (after embedding model changes)
  • TypeScript + Python hybrid architecture — Python worker runs as a child process, JSON-RPC over stdin/stdout

Changed

  • Note sync now also embeds the note locally (best-effort — failures toast a gentle warning and defer indexing to the next search)
  • Sidebar idle state: Recent Notes section gains a 🔍 search input above it
  • Description updated in package.json to reflect semantic search capability

Requires

  • Python 3.10+ installed on your machine (DevNote will prompt on first search if missing)

Notes

  • Embeddings use gemini-embedding-001 (Google AI Studio, 3072-dim, L2-normalized) via the google-genai>=0.8.0 SDK
  • Older SDK (google-generativeai==0.8.3) used v1beta endpoint which no longer serves embedContent for AI Studio keys; migration required for first release

[0.3.0] — 2026-04-16

Added

  • Recent Notes — your past notes now appear in the sidebar below Generate Doc, stored locally and viewable instantly without leaving VS Code
  • Local SQLite storage (sql.js) — every synced note is saved to devnote.db on your machine, forming the foundation for future search and memory features
  • Click any past note to preview it inline from local storage (no network needed)
  • "Open in Notion" link in the preview for sharing and mobile access
  • "Clear all memory" button in Settings with confirmation popup and optional backup export
  • Empty state for new users: "Your notes will appear here once you generate your first one."

Changed

  • Idle state now shows the Recent Notes list below the Generate Doc button
  • Preview state now supports historical notes (read-only, no Save/Discard)
  • Settings panel has a new "Clear all memory" section at the bottom
  • NotionService.push() now returns page ID and URL for local storage

[0.2.1] — 2026-04-14

Fixed

  • Republish to force Open VSX to re-extract the README. v0.2.0 hit an Open VSX CDN propagation issue where readme.md returned a 403 on the extension page. No code changes.

[0.2.0] — 2026-04-14

Added

  • Persistent sidebar panel — DevNote now lives in the activity bar with a dedicated brain icon
  • First-time setup wizard inside the sidebar — no more separate command palette flow
  • Real-time progress indicators for generation and Notion sync
  • Draft recovery — unsynced notes persist across VS Code restarts and show as a banner
  • Inline duplicate handling (Append / Replace / Cancel) directly in the sidebar
  • Back navigation in the form, preview, and setup screens that preserves user input
  • Gear icon for accessing settings any time after initial setup
  • Automatic Gemini model fallback (gemini-2.5-flashgemini-2.5-flash-lite) when the primary model is overloaded or rate-limited

Changed

  • All user interaction now happens in the sidebar instead of via input boxes and webview tabs
  • Ctrl+Alt+D now opens the sidebar and auto-triggers note generation
  • "Save Note" no longer makes a second Gemini call to restructure the markdown — the local serializer feeds Notion directly, halving API usage and avoiding a redundant failure point
  • Sync success state now stays visible until you click "Back to Generate Doc" instead of auto-dismissing after a few seconds
  • Error states now surface the underlying Gemini/Notion error message so quota, network, and auth issues are diagnosable at a glance, with friendly summaries for the common 503 overload and 429 quota cases

Removed

  • Ctrl+Alt+M keybinding (sync is automatic on Save Note)
  • DevNote: Sync to Notion command (replaced by sidebar Save Note button)
  • DevNote: Set Gemini API Key command (replaced by sidebar settings)
  • DevNote: Set Notion Token command (replaced by sidebar settings)
  • Local custom_memory_note.md safety file (drafts now persist in extension state)
  • Separate webview preview tab (preview is in the sidebar)

Migration

  • Existing users with a leftover custom_memory_note.md from v0.1.x will see it auto-converted to a draft on first sidebar open

[0.1.1] — 2026-04-12

Added

  • "Save Note" in the preview panel now auto-syncs to Notion — no need to run the sync command separately in the happy path
  • Duplicate title detection: if a Notion page with the same title already exists, a popup asks you to Append, Replace, or Cancel
  • New brand icon — a neural-circuit brain representing "AI memory for developers"

Changed

  • Ctrl+Alt+M is now primarily a retry/manual sync command for cases when auto-sync fails or you cancel the duplicate popup
  • All Notion sync error messages now explicitly tell you to retry with Ctrl+Alt+M

[0.1.0] — 2026-04-12

Added (initial release)

  • Two-command flow: Ctrl+Alt+D to create notes, Ctrl+Alt+M to sync to Notion
  • Git branch diff capture (primary) with uncommitted changes fallback
  • Auto-detect base branch (main or master)
  • Gemini AI note generation via @google/generative-ai SDK
  • Local note storage as custom_memory_note.md (gitignored)
  • Notion API integration for structured note sync
  • Webview preview panel before save
  • API key management via VS Code SecretStorage (Gemini + Notion)
  • Error handling — never delete local file unless Notion sync succeeds
  • Four commands: DevNote: Create Dev Note, DevNote: Sync to Notion, DevNote: Set Gemini API Key, DevNote: Set Notion Token
  • Configuration setting: devnote.notionDatabaseId