Changelog
All notable changes to the Flowbaby extension will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.7.5] - 2026-01-26
Added
- Evaluation Validity Hardening (Plan 113): KG-grounded validity guarantees for the benchmark harness ensuring trustworthy retrieval metrics:
- Multi-Positive Semantics: Benchmark explicitly uses filtered-style scoring where multiple correct answers per query are first-class—reports label metrics as
relevance_semantics: filteredto distinguish from exact-match - Label Shape Statistics: Score results now include positives-per-query distribution (min/max/mean/median/p95, percentage of 0/1/2+ positive queries) to detect unhealthy dataset characteristics
- Macro + Slice Reporting: Reports include both aggregate and macro-averaged metrics (per-query equal weighting) to prevent hub-dominance skew; slice breakdowns include query counts for context
- Split Discipline Enforcement: Dataset format supports train/validation/test splits with tooling that refuses invalid workflows—
validate_split_discipline()raisesSplitDisciplineErrorwhen test split is used for selection/tuning - Relationship-Fidelity Queries: Golden dataset expanded with queries specifically testing relationship extraction (q013-q015), tagged for separate slice tracking
- Benchmark Documentation: Comprehensive
README.mdcovering scorecard interpretation, macro vs aggregate guidance, positives-per-query guidance, and leakage prevention procedures
- Multi-Positive Semantics: Benchmark explicitly uses filtered-style scoring where multiple correct answers per query are first-class—reports label metrics as
Changed
- Golden Dataset Version: Bumped to 1.1.0 with new
relationship-fidelityslice definition and three new multi-positive queries - ScoreResult Contract: Extended with
relevance_semantics,label_shape_stats, andmacro_metricsfields using stable field names for diffability - Topic Contract: Extended with optional
splitfield (train/validation/test) for leakage discipline
[0.7.4] - 2026-01-24
Added
- Daemon Startup & Recovery Hardening (Plan 116): Comprehensive improvements to daemon lifecycle reliability, diagnostics, and observability:
- Reliability Contract: Stable reason codes (
DaemonUnavailableReason) for all daemon unavailability scenarios enabling programmatic error handling and telemetry aggregation - Bounded Startup: All startup paths now complete within a bounded deadline (30s default) with deterministic cleanup—no more stuck "starting" states
- Recovery Loop: Automatic recovery attempts (3 max) with exponential backoff when daemon startup fails; degraded mode entered after budget exhaustion
- Daemon-Only Routing: Memory operations (
retrieve,ingest,ingestSummary) now route exclusively through the daemon—no subprocess fallback eliminates reliability edge cases - Background Cognify via Daemon:
cognify()operations now use daemon-managed execution; subprocess auto-retry removed for simpler, more predictable behavior - Diagnostics Command: New
Flowbaby: Diagnose Daemoncommand provides comprehensive diagnostic report including current state, last failure details, recovery status, lock ownership, and remediation hints - Normal vs Debug Observability: State transitions and reason codes logged in normal mode; stderr excerpts and detailed retry logs only in debug mode
- Startup Robustness Verification Matrix: Engineering test harnesses covering immediate exit, hang, protocol errors, stdio issues, and runtime crash scenarios
- Reliability Contract: Stable reason codes (
Changed
-
Error Messages: Daemon unavailability errors now include actionable guidance (e.g., "Run 'Flowbaby: Diagnose Daemon' for details")
-
Background Operation Manager: Removed
AUTO_RETRY_COUNT,AUTO_RETRY_DELAY_MS, andforceSubprocessparameter—all cognify operations are daemon-only -
Windows Subprocess Tests: Updated to reflect daemon-only routing (Plan 115 subprocess spawn tests replaced with daemon routing tests)
-
Windows Refresh Hardening & Diagnostics (Plan 115): Improved reliability and observability for dependency refresh operations on Windows:
- Correlation Fields: All daemon start/stop, lock acquisition/release, refresh, and preflight logs now include
sessionId,extensionHostPid, andoperationIdfor multi-window contention diagnosis - Preflight Reason Codes: Preflight failures now emit a low-cardinality
reasonCode(always-on) enabling triage without debug logs. Stderr excerpts logged only when debug logging is enabled. - Windows Rename Hardening: Increased post-daemon-stop delay (300ms → 2000ms) and retry budget (maxAttempts=8, baseDelayMs=500, ~18s worst-case) to tolerate slow file-handle release and AV scanning
- Timing Context: Rename retry logs include
timeSinceDaemonStopand daemon stop duration for race condition diagnosis - Lock Contention Breadcrumbs: When lock acquisition fails, logs now include bounded snapshot of existing lock owner metadata (ownerPid, instanceId, lockAge, ownerPidAlive) to distinguish "another window owns the daemon" vs "stale lock"
- Correlation Fields: All daemon start/stop, lock acquisition/release, refresh, and preflight logs now include
-
Retrieval-First Benchmark Harness (Plan 112): Minimal, maintainable offline evaluation harness for Flowbaby's retrieval system:
- Deterministic Scorer: Multi-metric scorecard (Recall@K, Precision@K, MRR, MAP@K, nDCG@K) using
ir_measuresandpytrec_evalfor reliable, offline-only evaluation. - Golden Dataset: Initial 12-topic dataset covering mandatory risk slices (template-heavy, edge-sparse, technical, chat-shaped, relationship-heavy, no-context, short-factual, multi-hop).
- Stable ID Contract: Topic IDs mapped to canonical identifiers (uuid5-based) ensuring qrels remain valid across re-indexing and extraction churn.
- Run Exporter: Decoupled exporter step converts live Flowbaby retrieval results into benchmark-ready run files while filtering LLM-augmented content.
- Benchmark CLI: Command-line interface for scoring runs and generating markdown performance summaries.
- Artifact Provenance: Comprehensive run summaries tracking git SHA, dataset versions, and retrieval contract state.
- Deterministic Scorer: Multi-metric scorecard (Recall@K, Precision@K, MRR, MAP@K, nDCG@K) using
[0.7.3] - 2026-01-15
Added
-
Cognee Import Preflight Verification (Plan 108): Fail-fast preflight check prevents cryptic "No module named 'cognee'" errors by verifying the Python environment before bridge operations:
- Metadata-First Interpreter Selection: Bridge operations now prioritize
.flowbaby/bridge-env.jsonmetadata over explicit config, eliminating interpreter drift that causes missing module errors - Preflight Gate: All bridge calls pass through a preflight verification that checks cognee importability before spawning Python
- Actionable Remediation: Failures provide clear guidance (managed env → "Refresh Bridge Dependencies"; external env → pip install instructions)
- In-Memory Caching: 30-second cache prevents repeated verification during activation bursts; cache invalidates on interpreter/ownership/requirements changes
- Metadata-First Interpreter Selection: Bridge operations now prioritize
-
Diagnose Environment Command (Plan 108): New
Flowbaby: Diagnose Environmentcommand generates a shareable markdown report with:- Interpreter selection details (path, selection reason, ownership)
- Preflight verification status (cognee importability, version)
- Recommended actions for unhealthy environments
- Technical details in structured JSON format
-
Command Reference Documentation (Plan 109): Auto-generated
COMMANDS.mdprovides searchable reference of all Flowbaby commands:- Generated from
package.jsoncontributions for guaranteed accuracy npm run generate:commandsregenerates;npm run generate:commands:checkverifies sync- Includes command IDs, titles, categories, and keybindings
- Generated from
Changed
-
Interpreter Selection Priority (Plan 108): Interpreter resolution now follows metadata-first priority:
.flowbaby/bridge-env.jsonmetadata (single source of truth when present).flowbaby/venvheuristic (managed environment)- Explicit
Flowbaby.pythonPathsetting - System Python fallback
-
Preflight Cache Invalidation (Plan 108): Preflight verification cache now invalidates on requirements hash changes (in addition to pythonPath and ownership changes), ensuring refresh completion correctly triggers re-verification
-
Managed Venv Defaults (Plan 109): Setup flow now defaults to managed
.flowbaby/venvwithout showing a choice modal:- Removed modal asking whether to use existing
.venvor create.flowbaby/venv - Always creates managed environment for consistent, maintainable setup
- External ownership migration path remains available via
Flowbaby.diagnoseEnvironment
- Removed modal asking whether to use existing
-
Cloud Auth Terminology (Plan 109): Updated logging from legacy "API key status" to "Cloud auth readiness" for clarity in cloud-only mode
Fixed
-
Dashboard Setup Button (Plan 109): Dashboard "Setup Environment" button now correctly triggers
Flowbaby.initializeWorkspaceinstead of unregisteredFlowbaby.setupcommand -
Login Prompt Gating (Plan 109): Cloud login prompts are now gated on local environment health—when the Python environment is broken or requirements mismatched, users are offered "Refresh Dependencies" instead of "Login to Cloud"
-
Refresh Quiescence (Plan 108): Verified that dependency refresh correctly pauses background operations and stops the bridge daemon before venv mutation, preventing "import during install" races
[0.7.2] - 2026-01-15
Changed
- Backup Safety and User Confirmation (Plan 107): Pre-upgrade backup now requires explicit user consent and includes hardened detection to eliminate false-positive triggers:
- User Confirmation Modal: Backup is gated behind an information modal with "Proceed" / "Ignore" actions; closing the modal without choosing aborts the backup (fail-closed semantics)
- Pre-Backup Revalidation: A second
detectMigrationState()call occurs after user confirmation to detect race conditions (e.g., marker appearing during modal display) - Early Marker Write: Embedding schema marker is now written at the start of environment initialization (before
bridge-env.json) to prevent cross-window false positives - Mandatory Forensic Logging: All backup events log to
console.log(notdebugLog) with[BACKUP-TRIGGER]prefix for production visibility regardless of debug settings - Explicit Detection State Model:
detectMigrationState()now returns one of three explicit states (NOT_LEGACY,LEGACY_CONFIRMED,UNKNOWN_IO_ERROR) to prevent silent failures from triggering backups
Fixed
-
VS Code Insiders OAuth Login (Plan 106): OAuth callback now uses runtime URI scheme; fixes login redirect for VS Code Insiders users who were previously redirected to VS Code stable:
- Dynamic Callback URI: Callback scheme is derived from
vscode.env.uriSchemeat runtime instead of hardcodedvscode:// - Runtime Extension ID: Callback authority is derived from the runtime extension ID to avoid hardcoded identifiers
- Scheme Allowlist: Only
vscodeandvscode-insidersschemes are supported; unsupported editors (Cursor, VSCodium, etc.) receive explicit error guidance - Fail-Closed UX: Unsupported schemes fail immediately with actionable user messaging rather than silent fallback
- Dynamic Callback URI: Callback scheme is derived from
-
Cloud Auth Session Persistence (Plan 104): Fixed unexpected logouts after VS Code restart or idle periods by improving session refresh handling:
- Side-Effect-Free Auth State Query: New
getAuthState()method allows readiness evaluation without triggering logout on expired tokens - Bounded Activation Refresh: On startup, attempts session refresh within a 2-second budget to avoid blocking activation
- TTL-Aware Refresh Threshold: Sessions within 2 minutes of expiry are now proactively refreshed (was 24 hours)
- Refresh Coordinator: Singleflight pattern prevents concurrent refresh requests; 30-second throttling after failures
- Fail-Closed Semantics: Invalid refresh tokens (revoked/reused) immediately log out the user rather than retrying
- Activation Diagnostics: One-time startup log captures session state, remaining TTL, and refresh outcome for debugging
- Side-Effect-Free Auth State Query: New
[0.7.1] - 2026-01-13
Fixed
- Configured Python Adoption Marker (Plan 103): Prevent unexpected
.flowbabybackups when using a configured Python interpreter by ensuring the embedding schema marker is written during adoption.
Changed
-
Settings UX Reorganization (Plan 102): Flowbaby settings are now organized into two groups for clarity:
- Flowbaby: Core settings for everyday use (7 settings including enabled, cloud zone, synthesis model, session management, debug logging, and notification toggles)
- Flowbaby (Advanced): Tuning knobs for power users and support workflows (retrieval limits, ranking parameters, search tuning, Python path, log level)
- Settings are now ordered by importance with explicit
orderfields - Advanced settings include guidance labels ("Tuning", "Support-only", "Power-user") in descriptions
-
Hidden-but-Supported Settings (Plan 102): Three settings are now hidden from the Settings UI but remain fully functional when set via
settings.json:Flowbaby.bridgeMode: Bridge execution mode (daemonorspawn)Flowbaby.daemonIdleTimeoutMinutes: Daemon idle timeout (1–60 minutes)flowbaby.cloud.apiEndpoint: Cloud API endpoint override (developer use)- This reduces misconfiguration risk while preserving advanced troubleshooting capabilities
-
Centralized Configuration Layer (Plan 102): All settings reads now flow through a single TypeScript module (
src/config/flowbabyConfig.ts) to prevent configuration drift and ensure consistent behavior across the extension.
Removed
- Agent Access Configuration (Plan 102): The undeclared
Flowbaby.agentAccess.*configuration surface has been removed. Concurrency and rate limits are now hardcoded architectural constants (max 5 concurrent requests, 5 queue size, 30 requests/minute) per the architecture doc.
[0.7.0] - 2026-01-07
⚠️ Breaking Changes
-
API Contract v4.0.0 Cutover (Plan 098): This release requires
@groupzer0/flowbaby-api-contractv4.0.0 or later. The Cloud backend must be running contract v4.0.0 for authentication to work.- Auth requests now include
clientType: 'extension'to identify the extension surface - Refresh endpoint returns
RefreshResponse(notAuthResponse) with surface-specific union typing - New fail-closed behavior: if server returns unexpected surface variant (e.g., web response to extension client), extension forces logout and prompts re-auth
- New v4 error codes handled:
INVALID_AUDIENCE,AUDIENCE_MISMATCH,REFRESH_TRANSPORT_INVALID,REFRESH_REUSED
- Auth requests now include
-
Cloud-Only Mode (Plan 083): Flowbaby v0.7.0 is Cloud-only. Local API key configuration (
Flowbaby: Set API Key) has been removed. Users must login to Flowbaby Cloud for LLM-powered memory operations.- Removed commands:
Flowbaby.configureApiKey,Flowbaby.setApiKey,Flowbaby.clearApiKey - Removed settings:
Flowbaby.llm.provider,Flowbaby.llm.model,Flowbaby.llm.endpoint - Removed env var injection:
LLM_API_KEY,LLM_PROVIDER,LLM_MODELno longer injected into Python bridge - Legacy API keys stored in SecretStorage are automatically migrated with a one-time info message
- Removed commands:
-
Zone-Based Region Selection (Plan 094): The
flowbaby.cloud.preferredRegionsetting has been replaced byflowbaby.cloud.preferredZone:- New zones:
us(Americas),eu(Europe),apac(Asia-Pacific) - If you had
preferredRegionset, you must reconfigure with the newpreferredZonesetting - Backend selects the optimal AWS region within the chosen zone
- New zones:
Added
-
Daemon Lock Recovery & Observability (Plan 095): Automatic recovery from stale workspace daemon locks with improved diagnostics:
- Stale Lock Recovery: When daemon startup encounters an existing lock, automatically recovers if the lock owner process is dead or lock age exceeds 10 minutes (conservative threshold)
- Lock Owner Metadata: Writes
owner.jsoninsidedaemon.lock/withcreatedAt,extensionHostPid,instanceId, andworkspaceIdentifierfor safe staleness detection - Fresh Lock Guard: Prevents race condition where
cleanupStaleLock()could delete a freshly acquired lock before daemon PID file exists - Failure Path Cleanup: Lock is properly released if daemon startup fails after acquisition
- Lock Lifecycle Logging: Structured
[lock]breadcrumbs for acquire/release/recovery with decision reasons (e.g.,owner_pid_dead,lock_age_exceeded) for postmortem diagnostics - Security: Logs avoid absolute workspace paths and secrets; uses relative markers and PIDs only
-
Daemonized Graph Visualization (Plan 097): Graph visualization now runs in-process via daemon mode when enabled, eliminating visualize.py subprocess spawns:
- In-Process Visualization: New
handle_visualize()daemon handler callsvisualize.visualize_graph()directly, avoiding subprocess spawn overhead - Daemon-Wide Stdout Protection: New
stdout_to_stderr()context manager redirects all stdout to stderr during daemon handler execution, preventing third-party library prints from corrupting JSON-RPC framing - Spawn Fallback: When daemon mode is disabled, visualization falls back to subprocess spawn with identical result contract
- Windows File-Lock Fix: Running visualization in-process eliminates file descriptor inheritance issues that caused "file in use" errors on Windows
- In-Process Visualization: New
-
Automatic Backup of Incompatible
.flowbaby/on Upgrade (Plan 101): Users upgrading from v0.6.2 to v0.7.0 no longer encounter confusing embedding dimension errors. The extension automatically detects pre-0.7.0 workspaces and backs up existing data:- Automatic Detection: On activation, checks for pre-0.7.0
.flowbaby/directories (missingsystem/EMBEDDING_SCHEMA_VERSIONmarker) - Safe Backup: Renames
.flowbabyto.flowbaby-pre-0.7.0-backup-{timestamp}with Windows-safe naming (no colons) and collision resistance - Daemon Lock Safety: Stops daemon before rename to prevent Windows file lock failures
- Clear User Guidance: Info toast explains what happened, where backup is, and prompts reinitialization
- Fail-Closed Fallback: If backup fails (permissions/locks), shows manual remediation instructions instead of proceeding with incompatible storage
- Schema Marker: New v0.7.0 workspaces write
EMBEDDING_SCHEMA_VERSION=2marker to prevent repeated backup on subsequent activations
- Automatic Detection: On activation, checks for pre-0.7.0
-
Dashboard View Provider Tests (Plan 097): Comprehensive test coverage for the sidebar dashboard:
- Tests validate view type registration (
flowbaby.dashboardView), WebviewViewProvider interface compliance, and refresh command resilience - Single dashboard surface: Legacy
DashboardPanel(editor tab) removed; sidebar view is now canonical
- Tests validate view type registration (
-
Geographic Zone Selection (Plan 094): New
flowbaby.cloud.preferredZonesetting for zone-based region selection:- Three zones:
us(Americas),eu(Europe),apac(Asia-Pacific) - Dropdown in VS Code Settings with "Backend default (recommended)" option
- Backend authoritative for actual AWS region within zone
INVALID_ZONEerrors surface as user-facing configuration problems with remediation guidance- CI drift guard (
npm run check:zones) validates enum matches contract at build time - Supersedes Plan 091's
preferredRegiondropdown with simpler zone abstraction
- Three zones:
-
Preferred Region Dropdown (Plan 091): The
Flowbaby Cloud: Preferred Regionsetting now renders as a dropdown in VS Code Settings instead of a freeform text input:- Dropdown displays all supported Bedrock regions (us-east-1, us-west-2, eu-west-1, eu-central-1, ap-northeast-1, ap-northeast-2, ap-southeast-2, ap-south-1)
- First option "Backend default (recommended)" selects the backend's default region
- New
npm run check:regionsscript validates enum matches API contract allowlist at build time
-
Accurate Credit Consumption (Plan 090): Credits are now charged per successful Bedrock operation rather than at vend time, ensuring users only pay for completed operations:
- New
consume()method in FlowbabyCloudClient callsPOST /usage/consumeendpoint - Metering wired after successful retrieve operations (both synthesis and legacy paths)
- Metering wired after successful ingest operations (sync summary, sync conversation, and async cognify paths)
- Idempotent billing via
X-Idempotency-Keyheader prevents duplicate charges on retries - Fire-and-forget pattern: consume failures logged but never block user operations
- DIP-compliant metering abstraction (
IUsageMeter) keeps Cloud concerns isolated from core paths
- New
-
Bedrock Health Check Module (Plan 088): New
bedrock_health.pymodule provides deterministic Bedrock connectivity validation using configuration proven stable in Analysis 088:- Uses
TextOutPydantic response model (notresponse_model=strwhich is unstable) - Strict JSON instruction prompt achieving 20/20 clean responses in batch testing
- System-first message ordering for improved adherence
max_completion_tokens=2048to prevent Bedrock 400 validation errors- Actionable error messages with remediation guidance for auth, model, and network failures
- Uses
-
Cognee Probe Bypass (Plan 088): New
cognee_probe_bypass.pymodule prevents add-only ingestion failures caused by Cognee's internal LLM probe:- Sets
_first_run_done=Trueon Cognee's setup module to skiptest_llm_connection() - Bridge-side health check (
bedrock_health.py) serves as authoritative connectivity validation - Embedding validation deferred to first-use with clear error handling
- Sets
-
Cloud Readiness Service (Plan 087): Unified Cloud readiness state management with three-axis model (auth/vend/bridge) and throttled error display. Eliminates misleading login prompts when user is authenticated but vending fails.
- Structured readiness model:
AuthReadinessState,VendReadinessState,BridgeReadinessStatewithCloudOverallStatus(ready/login_required/degraded/error) - Error throttling: Vend failures surface via toast with 30s min interval and max 3 per 5 minutes to prevent notification spam
- Actionable remediation:
getRemediation()provides context-specific guidance based on current readiness state - Event-driven updates:
onDidChangeReadinessevent fires on state changes for UI responsiveness
- Structured readiness model:
-
Debug Logging for Cloud API Errors (Plan 087): When
flowbaby.debugis enabled, Cloud client now logs HTTP status codes and error codes (without secrets) to the "Flowbaby Cloud" output channel for improved diagnosability. -
Cloud API Endpoint Override Setting (Plan 084): New
flowbaby.cloud.apiEndpointsetting allows developers and testers to override the Flowbaby Cloud API endpoint for testing against staging, development, or local environments without modifying code. -
Flowbaby Cloud Credential Provider Wiring (Plan 081): Unified credential/provider architecture wired into extension activation and all Python bridge paths. Key changes:
- API Contract v2.1.0: Added
BedrockRegiontype withpreferredRegionfield onVendRequestfor region preference passthrough. - Region Preference Setting: New
flowbaby.cloud.preferredRegionsetting allows users to express region affinity (us-east-1, eu-west-1, me-south-1, ap-southeast-1). Backend remains authoritative for actual routing. - Activation Wiring: Credentials manager and provider singleton now initialize during extension activation (after Cloud auth) with proper dependency ordering.
- Bridge Environment Injection: All three bridge code paths (spawn-per-request, daemon-mode, background operations) now inject Cloud credentials into Python subprocess environment when authenticated.
- Security Guardrails: Verified no secret values (AWS keys, tokens, JWTs) are logged; existing redaction patterns remain adequate.
- API Contract v2.1.0: Added
-
Credential Single-Flight Guard (Plan 083 M1): Prevents concurrent
/vend/credentialsrequests during high-frequency operations. Multiple callers share a single in-flight refresh, reducing API load and preventing credential thrashing. -
Centralized Cloud Error → UX Mapping (Plan 083 M3): New
errorMapping.tsmodule provides consistent error messaging across all Cloud error scenarios:- Maps error codes to severity, actionable messages, and recovery actions
- Supports rate limiting, quota exceeded, session expiry, and network errors
- Provides
showCloudError()helper for consistent toast notifications
Changed
-
API Contract Package Migration (Plan 089): Migrated from repo-local contract copies to the canonical
@groupzer0/flowbaby-api-contract@3.1.0npm package. Contract types, constants, and helpers are now imported from the versioned package, eliminating copy/sync drift and ensuring extension/backend stay aligned via explicit semver'd dependency. Retired.github/workflows/sync-contract.ymlandextension/src/flowbaby-cloud/contract/local copy. -
Activation Prompt Gating (Plan 087): Post-init prompts now use
CloudReadinessService.needsLogin()instead of legacyllmReadyflag. Login prompts only appear when user genuinely needs to authenticate—not when already authenticated but vending is failing. -
Status Bar Driven by Cloud Readiness (Plan 087): Status bar icon and text now reflect the unified
CloudOverallStatusstate. When vend fails for an authenticated user, shows "degraded" state with appropriate guidance instead of misleading "login required". -
Vend Errors Now User-Visible (Plan 087): All three Python bridge code paths (
FlowbabyClient,PythonBridgeDaemonManager,BackgroundOperationManager) now surface vend failures via throttled toast notifications with actionable remediation guidance. -
Memory Storage Reliability Improvements (Plan 092): Enhanced resilience for memory ingestion operations with multiple fixes addressing transient failures:
- Credential Refresh Manager Integration: Daemon now restarts automatically when Cloud credentials are refreshed, preventing stale credential errors during long sessions
- Exclusive Daemon Locking: File-based lock mechanism prevents duplicate daemon instances, eliminating Kuzu DB lock contention errors
- Staging Auto-Retry:
ingestSummaryAsync()now automatically retries on transient errors (ECONNRESET, ETIMEDOUT, EPIPE, network errors) with configurable retry count and delay - Cognify Auto-Retry: Background cognify operations automatically retry via subprocess path when daemon fails, with retry count tracking and delay
-
Cloud API Endpoint Resolution (Plans 084, 099): Default Cloud API endpoint is now production (
api.flowbaby.ai). Endpoint resolution follows clear precedence: VS Code setting >FLOWBABY_CLOUD_API_URLenvironment variable > built-in default. Staging endpoint (api-staging.flowbaby.ai) available via override setting for development/testing. This enables reliable Cloud connectivity for v0.7.0 launch. -
Bootstrap Decoupled from Cloud Credentials (Plan 084): Python bridge initialization (
init.py) no longer requires Cloud credentials to succeed. Extension bootstrap (environment creation, workspace indexing) now completes without Cloud authentication, with only LLM-powered operations (memory ingestion, retrieval synthesis) gated on Cloud login. This fixes activation failures where users saw "Cloud login required" before they could even log in. -
Cloud Authentication Flow (Plans 077–081): The v0.7.0 Cloud integration now provides a complete OAuth → STS → Bridge credential flow, enabling managed AWS Bedrock inference without local API keys.
-
Status Bar UX (Plan 083 M6): Updated status bar for Cloud-only mode:
- Renamed
NeedsApiKeystatus toNeedsCloudLogin(backward-compatible alias preserved) - Status menu now shows "Flowbaby Cloud Status" instead of "Set API Key"
- Tooltip updated to "Cloud Login Required" instead of "LLM API Key Required"
- Renamed
-
Walkthrough Updated (Plan 083 M6): Getting Started walkthrough step changed from "Set Your API Key" to "Login to Flowbaby Cloud" with updated description.
Fixed
-
Graph Visualization "No Data" Despite Data Existing (Plan 091): Fixed issue where
Flowbaby: Visualize Memory Graphwould show "No graph data available" in the browser even when memories had been ingested. The visualization script now uses the shared environment wiring contract (bridge_env.apply_workspace_env()) to ensure it reads from the correct workspace-local database.- Added fail-closed empty-graph detection: the command now returns a clear error instead of a misleading success toast when the generated graph is empty
- Distinguishes between "no data ingested" and "data exists but read from wrong store" scenarios
- TypeScript command updated to show warnings for empty-graph errors
-
Bedrock Add-Only Ingest Failures (Plan 088): Fixed add-only memory ingestion failures caused by Cognee's internal LLM probe using unstable Bedrock structured-output configuration. The probe used
response_model=strwhich fails intermittently withInstructorRetryException. Now bypassed in favor of a deterministic bridge-side health check. -
Missing boto3 Dependency (Plan 088): Added
boto3to bridge requirements and verification. Existing workspaces that were missing boto3 (which caused silent litellm failures) can now be detected and remediated via dependency refresh. -
Misleading Login Prompts After Vend Failures (Plan 087): Fixed issue where users who were authenticated but experienced credential vending failures would be repeatedly prompted to log in. The extension now correctly distinguishes between "not logged in" and "logged in but vend failing" states, showing appropriate guidance for each.
-
Silent Credential Vending Failures (Plan 087): Fixed issue where credential vending failures were silently swallowed, leaving users confused about why operations were failing. Vend errors now surface with throttled toast notifications (max 3 per 5 minutes, 30s min interval) with context-specific error messages.
-
Cloud API Endpoint Hardcoding (Plan 084): Fixed hardcoded
api.flowbaby.devURL intypes.tsthat referenced a non-existent domain. Now correctly defaults to staging endpoint (api-staging.flowbaby.ai) with documented fallback to execute API gateway URL when needed. -
Cloud Error Code Preservation (Plan 083 M2): Fixed error masking in
flowbabyClient.ts,PythonBridgeDaemonManager.ts, andBackgroundOperationManager.tswhere Cloud errors were being converted to generic "login required" errors. Now preserves original error codes (RATE_LIMITED, QUOTA_EXCEEDED, SESSION_INVALID, etc.) for accurate UX. -
Cloud Login Commands Not Responding (Plan 085): Fixed UI entrypoints (first-run prompt buttons, status bar menu) that invoked unregistered command IDs (
FlowbabyCloud.*) instead of canonical registered commands (flowbaby.cloud.*). Clicking "Login to Cloud" or "Flowbaby Cloud Status" now reliably triggers the intended action. Status bar now updates automatically after login/logout without requiring an extension reload.
[0.6.2] - 2025-12-20
Added
- Copilot Synthesis Model Selection (Plan 075): New
Flowbaby.synthesis.modelIdsetting allows users to choose which Copilot model performs memory retrieval synthesis. Options include GPT-5 mini (default), GPT-4o, and GPT-4.1. Synthesis fails with a clear, actionable error if the selected model is unavailable—no silent fallback to a different model. - Settings Clarity (Plan 075): Updated settings descriptions to clearly distinguish:
Flowbaby.synthesis.modelId: Controls Copilot synthesis model for memory retrievalFlowbaby.llm.*: Controls Python bridge LLM for memory ingestion and graph operations (does NOT affect Copilot synthesis)
- Rebuild Tool Batch Processing & Resilience (Plan 076): The developer/tester rebuild CLI tool (
rebuild_workspace.py) now supports robust filesystem-based rebuild with:- Batch ingestion: Configurable batch size (
--batch-size) with rate limiting (--batch-delay) for API quota management - Checkpointing & resumability: JSON checkpoints with SHA-256 input fingerprinting allow resuming interrupted operations (
--resume) or starting fresh (--restart) - Preflight/dry-run mode:
--dry-runshows file counts, total size, and skip reasons without making changes - Fail-closed semantics: Destructive
reset-and-rebuildmode validates all inputs before resetting stores; aborts on encoding errors or permission issues - Concurrent writer detection: Refuses to run when daemon mode is active to prevent data corruption
- File size limits: Configurable maximum file size (
--max-file-size, default 10MB) with override (--allow-oversized)
- Batch ingestion: Configurable batch size (
Changed
- Extension Activation Refactor (Plan 062): Decomposed the 2066 LOC
extension.tsmonolith into three cohesive modules:extension.ts(267 LOC orchestrator),activation/registrations.ts(1175 LOC for commands, LM tools, chat participant), andactivation/init.ts(797 LOC for initialization, health checks, setup commands). No user-facing changes; architecture maintainability improvement only.
Fixed
- Windows daemon I/O reliability (post-Plan 076): Improved bridge daemon stdio handling on Windows to prevent stuck requests and unreliable background operations.
- Windows refresh tooling reliability: Improved
Flowbaby: Refresh Bridge Dependenciesbehavior on Windows where.flowbaby\\venvcan be locked (commonEPERMrename failures). The refresh/health flows now behave more predictably when a Python process is still holding file handles. - Workspace health check robustness (Windows + general): Fixed setup health checks to better detect and report environment readiness, reducing false negatives during initialization.
- Cross-platform VSIX verification:
npm run verify:vsixnow supports Windows environments withoutunzipby falling back to PowerShellExpand-Archive, preventing packaging regressions before publishing. - Notification Observability (Plan 075): Removed temporary diagnostic logging from toast notification code paths, keeping production logs clean while preserving notification functionality.
- Daemon Idle-Timeout KuzuDB Locks (Plan 061): Fixed aggressive SIGKILL escalation during idle-timeout shutdown that left KuzuDB
.pklfile locks orphaned. The daemon manager now uses a 3-phase graceful shutdown (5s graceful → 3s SIGTERM → SIGKILL as last resort), allowing Cognee/KuzuDB time to release locks cleanly. Added operational fallback: after 3 consecutive forced kills, daemon mode automatically suspends and falls back to spawn-per-request until manually re-enabled. - Memory Ingestion KuzuDB Lock Conflicts (Plan 062): Fixed
flowbaby_storeMemorytool failures with "Could not set lock on file" errors. Memory ingestion now routes through the daemon process (which holds the single KuzuDB connection) instead of spawning a separate subprocess that would conflict with the daemon's lock. BothingestSummary()andingestSummaryAsync()now use daemon-based ingestion when daemon mode is enabled, with fallback to subprocess when daemon is unavailable.
Changed
- Cognee Upgrade to 0.5.1 (Plan 059): Upgraded from Cognee 0.4.1 to 0.5.1 to enable filesystem-backed session caching. Cognee 0.5.0+ introduces
CACHE_BACKEND=fsvia diskcache (bundled), removing the implicit Redis dependency that caused connection failures in managed environments without Redis installed. - Filesystem Cache Backend Default: Managed environments now default to
CACHING=trueandCACHE_BACKEND=fs(filesystem session cache) instead of falling back to Redis. This eliminates Redis-related timeout errors and improves retrieval reliability out-of-the-box. - Environment Variable Precedence: Cache configuration now respects explicit user-provided environment variables (
CACHING,CACHE_BACKEND). Flowbaby-managed defaults are only applied when values are not already set. - Daemon Default Idle Timeout: Increased default idle timeout from 5 minutes to 30 minutes to reduce daemon restart frequency during normal development sessions.
Added
- Cache Configuration Logging: All bridge entry points (daemon, init, ingest, retrieve) now log cache configuration at startup for improved observability and troubleshooting.
- Automatic Schema Migration (Plan 060): Databases created with Cognee 0.4.x are automatically migrated to 0.5.x schema on initialization. The migration adds required columns for multi-tenant support (
datasets.tenant_idand 10dataset_databasecolumns) using additive-onlyALTER TABLEoperations. No data loss occurs.- Fail-Closed Safety: If schema migration fails, initialization fails cleanly rather than proceeding with an incompatible database.
- Receipt Generation: Migration attempts are logged to
.flowbaby/system/schema_migration_receipt.jsonfor auditability. - External Repair: Users with external Python environments can run
python bridge/migrate_cognee_0_5_schema.py <workspace> --dry-runto check schema status and apply migrations manually.
- Daemon Startup Hygiene (Plan 061): Added stale PID file cleanup and orphan process detection on daemon startup to prevent ghost daemon accumulation and ensure clean daemon lifecycle management.
[0.6.1] - 2025-12-13
Changed
- Switched the project and extension licensing from PolyForm Strict to MIT and prepared the repository for public open-source use, based on user feedback.
[0.6.0] - 2025-12-11
Changed
- Documentation refresh: Updated extension README and marketplace-facing documentation for clarity around setup, features, and troubleshooting. No functional code changes compared to 0.5.23.
[0.5.23] - 2025-12-11
Added
- Per-Workspace Python Bridge Daemon (Plan 054): Introduced a long-lived Python bridge daemon that eliminates per-request Python startup overhead (~2-3 seconds) by keeping Cognee imported and warm. Retrieval and capture requests now respond in ~300ms instead of 2-3s.
- New Configuration Options:
Flowbaby.bridgeMode: Choose betweendaemon(default, faster) orspawn(legacy per-request mode) for bridge executionFlowbaby.daemonIdleTimeoutMinutes: Configure how long the daemon stays alive after inactivity (default: 5 minutes)
- Daemon Lifecycle Management: The extension automatically starts, monitors, and restarts the daemon as needed. Graceful shutdown on workspace close.
- Automatic Fallback: If daemon mode fails repeatedly, the extension automatically falls back to spawn-per-request mode for reliability.
Changed
- Bridge Architecture: Retrieval and ingestion now route through the daemon manager when daemon mode is enabled, with transparent fallback to the existing spawn-per-request pattern.
Technical
- Added
PythonBridgeDaemonManagerTypeScript class for daemon lifecycle management - Added
daemon.pyPython script as the long-lived bridge process entrypoint - Added JSON-RPC 2.0 communication protocol over stdio for daemon IPC
- Added daemon health monitoring with automatic restart and exponential backoff
[0.5.22] - 2025-12-10
Fixed
- Data Integrity Check False Positives: Fixed initialization data-integrity check that was incorrectly reporting "Data mismatch: X SQLite entries but only Y vector tables" warnings. The previous implementation counted LanceDB directories (a fixed ~6 tables in Cognee 0.4.x) instead of actual row counts, producing false positives once SQLite rows exceeded the table count. The fix now compares SQLite document counts against actual LanceDB embedding row counts from the
DocumentChunk_texttable.
Added
- Shared Data Integrity Utilities: New
data_integrity_utils.pymodule provides shared helper functions (get_sqlite_document_count,get_lancedb_embedding_count,evaluate_data_health) used by bothinit.pyandrecover_data.pyfor consistent data integrity checking. - Improved Health Semantics: Data integrity warnings now use smarter thresholds—small workspaces (≤5 documents) with minor discrepancies are treated as healthy to avoid noise, while significant mismatches in larger workspaces trigger appropriate warnings.
Changed
- LanceDB Row Counting: The
lancedb_countfield in initialization JSON output now represents actual embedding row count rather than table directory count. This is a semantic change but maintains backward compatibility for consumers checking thehealthyfield.
[0.5.21] - 2025-12-10
Changed
- Retrieval Timeout Increased: Increased retrieval timeout from 15 seconds to 30 seconds to accommodate large workspaces and cold-start environments. Retrieval operations will now wait longer before timing out, reducing spurious failures in legitimate high-latency scenarios.
- Retrieval Diagnostics: Added phase markers (bridge call start/finish) and duration logging to retrieval operations for improved performance diagnostics and future bridge-daemon compatibility (Plan 054).
Added
- Capture Input Visibility: Added status bar message when capture input opens (
$(edit) Flowbaby capture: input box open at top — Enter to save, Esc to cancel) to draw attention to the input UI. - First-Time Capture Hint: One-time onboarding toast message for new users explaining that the capture input appears at the top of the window, stored in globalState to avoid repeated notifications.
- Improved Capture Prompt: Updated capture input prompt and placeholder text for better discoverability (
Flowbaby capture: type in the top input box (Esc cancels)).
[0.5.20] - 2025-12-10
Fixed
- Tool Registration Guards: Fixed over-aggressive guard logic that incorrectly set
setToolsRegistered(true)based on host inventory presence rather than actual registration outcomes. Guards now follow evidence-only semantics per architecture invariant 4.2. - All-or-Nothing Tool Set Registration: Tool registration now treats both
flowbaby_storeMemoryandflowbaby_retrieveMemoryas an atomic unit—the guard is only set if all tools register successfully or return known duplicate errors. - Copilot Tool Availability: Resolved issue where Flowbaby tools would not appear in GitHub Copilot's tool list after non-initial activations because guards were being set prematurely.
Added
- Duplicate Error Classifiers: Added
isKnownDuplicateToolError()andisKnownDuplicateParticipantError()helper functions to centralize error classification and provide forward-compatible matching for VS Code API changes. - Host Tool Snapshots: Added
createHostToolSnapshot()for compact diagnostic snapshots of registered tools (observational only, does not affect guard state per invariant 4.3.1). - Plan 056 Test Suite: Added comprehensive tests for guard behavior, duplicate-error classification, tool/participant independence (invariant 4.5.4), and evidence-only semantics.
Changed
- Participant Registration: Updated
registerFlowbabyParticipant()to use centralizedisKnownDuplicateParticipantError()classifier and moved guard setting to immediately after successful registration. - Guard Lifecycle: Registration guards are now completely independent—tool guard state does not affect participant guard state and vice versa, ensuring one subsystem's registration issues don't block the other.
[0.5.19] - 2025-12-07
Added
- Activation ledger now records workspace path, health/requirements state, registration guards, and deactivation details for every activation, enabling lifecycle reconstruction across test runs.
- Structured safePush diagnostics capture context fingerprints, host tool snapshots, and test-mode push probes so DisposableStore anomalies can be attributed to specific intents.
- Workspace initialization isolation from Plan 050 is preserved under repeated activations, with each workspace tracked independently so a broken workspace cannot contaminate others sharing the same window or host.
- Single-activation lifecycle model from Plan 051 is enforced via registration helpers and activation ledger state, ensuring that extension-owned registrations are routed through lifecycle-safe paths and never pushed into known-disposed contexts.
Changed
- Language model tool and chat participant registration skip when host inventory already contains Flowbaby assets, reducing duplicate registration noise in reused test hosts.
- Test-mode prompt handling now logs suppression reasons with activation metadata and avoids modal dialogs that block CI runs.
- Debug logging automatically enables in test mode to surface lifecycle and registration traces during automated suites.
[0.5.18] - 2025-12-07
Added
- Global Shortcut:
Ctrl/Cmd+Alt+Fnow works across VS Code views without focus restrictions, still prompting for capture input when no editor selection is available. - Session Toggle: New
Flowbaby.sessionManagement.enabledsetting (default on) lets users disable session IDs for stateless interactions. - Dependency Mismatch Notice: Early hash check marks the workspace as needing setup and prompts to refresh when bridge dependencies are out of date.
Changed
- Graph Retriever Debug Gating: Cognee graph completion debug logs now obey the
Flowbaby.debugLoggingsetting to reduce noisy output by default. - Workspace Isolation: Initialization status is tracked per workspace to avoid a broken workspace contaminating others in the same window.
[0.5.17] - 2025-12-05
Added
- Dependency Enforcement: Added strict verification of Python environment dependencies. The extension now blocks operations and prompts for updates if
requirements.txthashes do not match the installed environment. - Environment Guardrails: Added
FlowbabySetupServicechecks toFlowbabyContextProviderand command handlers to prevent crashes from stale dependencies. - Update Modals: Added user-friendly modals to guide users through updating managed or external environments.
Changed
- Verification Logic:
FlowbabySetupServicenow tracks verification state and only allows operations when the environment is fully verified.
[0.5.16] - 2025-12-05
Fixed
- Ingestion Crash: Fixed a critical
UnboundLocalErrorin the background ingestion process (cognify-onlymode) that caused crashes when API keys were missing. - Notification Throttling: Removed throttling for failure notifications to ensure users are always alerted to issues. Success notifications are now only suppressed by user setting, not by frequency.
[0.5.15] - 2025-12-05
Changed - Cognee Upgrade & Session Infrastructure
- Cognee 0.4.1 Upgrade: Upgraded managed Python environments to
cognee==0.4.1for improved stability and native session management support. - Session-Aware Retrieval: Added infrastructure to pass session IDs to the memory engine when available, laying the foundation for conversational memory.
- Workspace Caching: Enhanced workspace-local caching configuration (
CACHE_ROOT_DIRECTORY) to support future session features. - Isolation: Maintained strict workspace isolation and backward compatibility for all ingestion/retrieval workflows.
[0.5.14] - 2025-12-05
Added - Unified Session Context
- Implemented unified session context for chat threads. Flowbaby now maintains conversational continuity by passing a consistent
session_idto the memory engine for each chat thread. - Updated Python bridge to accept and map
__user_session_idto Cognee'ssession_id.
[0.5.13] - 2025-12-03
Changed - Maintenance Release
- Version bump only to align with latest internal planning and release numbering. No user-visible functionality changes beyond those already included in 0.5.12.
[0.5.12] - 2025-12-03
Fixed - Windows Installation and Stability
Windows Support Release - Resolves remaining Windows installation issues and makes the bridge fully reliable on Windows.
Improvements
- Background Ingestion on Windows: Switched background ingestion to use
pythonw.exewhen available, preventing stray console windows and improving stability for long-running operations. - Initialization Race Fix: Resolved a fresh workspace initialization race on Windows, ensuring the bridge environment and Kuzu databases are fully ready before marking setup as complete.
- Kuzu and DLL Handling: Added targeted Windows Kuzu tests and fixed Python detection / Kuzu DLL load issues, resulting in the first fully working end-to-end Windows configuration.
- Platform Prerequisites: Updated documentation to call out the Visual C++ Redistributable requirement on Windows, reducing installation surprises.
[0.5.11] - 2025-12-01
Added - Plan 047: Enhanced Setup Diagnostics
Diagnostics Release - Improves troubleshooting for environment setup failures by exposing detailed command execution logs and system errors.
Improvements
- Command Transparency: Setup logs now show the exact command, arguments, and working directory for every subprocess execution.
- System Error Codes: Failures now report specific Node.js system error codes (e.g.,
ENOENT,EACCES) instead of generic messages. - Full Stack Traces: Error logs include full stack traces to pinpoint the exact failure location in the code.
- Automatic Log Focus: The Flowbaby Output Channel is automatically revealed when a setup error occurs, ensuring immediate visibility of diagnostic information.
- Captured Output: Standard output from failed commands (which was previously swallowed) is now included in the error logs.
Windows Reliability Improvements
- Background Ingestion on Windows: Switched background ingestion to use
pythonw.exewhen available, preventing stray console windows and improving stability for long-running operations. - Initialization Race Fix: Resolved a fresh workspace initialization race on Windows, ensuring the bridge environment and Kuzu databases are fully ready before marking setup as complete.
- Kuzu and DLL Handling: Added targeted Windows Kuzu tests and fixed Python detection / Kuzu DLL load issues, resulting in the first fully working end-to-end Windows configuration.
- Platform Prerequisites: Updated documentation to call out the Visual C++ Redistributable requirement on Windows, reducing installation surprises.
[0.5.10] - 2025-02-18
Fixed - Plan 046: Windows Spawn Fix
Hotfix Release - Resolves "Environment creation failed" error on Windows when workspace path contains spaces.
Issues Resolved
- Environment Creation Failure: Fixed a regression in v0.5.9 where
Flowbaby: Initialize Workspacefailed immediately on Windows if the path contained spaces. - Root Cause: The manual quoting logic introduced in v0.5.9 conflicted with
spawn'sshell: truebehavior on Windows, leading to malformed commands. - Fix: Switched
FlowbabySetupService.runCommandto useshell: false, allowing Node.js to handle argument escaping natively and robustly across all platforms.
Technical Changes
- FlowbabySetupService: Removed
quoteIfNecessaryhelper and manual quoting. - Spawn Options: Changed
shell: truetoshell: falseforpythonandpipcommands. - Verification: Confirmed that
FlowbabyClientalready usesshell: falseand was unaffected.
[0.5.9] - 2025-12-01
Fixed - Plan 022: Windows Path Spaces Fix
Critical Fix - Resolves environment creation failures on Windows when the workspace path contains spaces.
Issues Resolved
- Environment Creation Failure: Fixed a bug where
Flowbaby: Initialize Workspacewould fail or create stray folders if the workspace path contained spaces (e.g.,C:\Users\My Name\Project). - Root Cause: Node.js
spawnwithshell: truedoes not automatically quote arguments on Windows, causing paths with spaces to be split into multiple arguments. - Fix: Implemented robust quoting logic in
FlowbabySetupServiceto ensure both the command and arguments are correctly quoted when they contain spaces.
Technical Changes
- FlowbabySetupService: Added
quoteIfNecessaryhelper inrunCommandto wrap paths in double quotes if they contain spaces and aren't already quoted. - Cross-Platform Safety: Verified that the quoting logic is safe for Windows (
cmd.exe) and Unix-like systems (/bin/sh), ensuring no regressions on macOS/Linux. - Test Coverage: Added unit tests to
FlowbabySetupService.test.tsto verify that commands and arguments are correctly quoted before being passed tospawn.
[0.5.8] - 2025-11-30
Fixed - Hotfix: Fresh Workspace Memory Operations
Hotfix Release - Fixes issues discovered when using memory tools on fresh workspaces without stored data.
Issues Resolved
-
DatasetNotFoundError on fresh workspace retrieval: When querying
@flowbabyor usingflowbaby_retrieveMemoryon a fresh workspace with no stored memories, the extension now gracefully returns empty results instead of throwingDatasetNotFoundError: No datasets found. This is the expected UX - the workspace simply has no memories yet. -
BackgroundOperationManager not initialized error: When using
flowbaby_storeMemorytool before full workspace setup, the extension now shows a helpful prompt to initialize the workspace instead of failing with a confusing "BackgroundOperationManager not initialized" error. -
Misleading success log on staging failure: The "✅ Memory staged" log message now only appears when staging actually succeeds. Previously it showed success before checking the result, then showed failure notification.
Technical Changes
Python Bridge (retrieve.py)
- Added: Detection for
DatasetNotFoundErrorin search exception handler - Behavior: Fresh workspaces with no data return
{"success": true, "results": [], "message": "No data has been ingested yet"}
Agent Commands (ingestForAgent.ts)
- Added: Try-catch wrapper around
BackgroundOperationManager.getInstance()call - Behavior: Returns helpful
NOT_INITIALIZEDerror with "Initialize Now" action button - UX: User sees clear path to fix instead of cryptic error
Store Memory Tool (storeMemoryTool.ts)
- Fixed: Success log message now appears after response check, not before
- Fixed: Failure log includes actual error message from response
[0.5.7] - 2025-11-30
Fixed - Hotfix: Smoke Test Issues from v0.5.6
Hotfix Release - Addresses five UX issues discovered during v0.5.6 smoke testing.
Issues Resolved
-
Ingestion failure notifications not showing: Failed memory ingestions via
flowbaby_storeMemorytool now show warning toast with "View Logs" option. (Note: success notifications can be disabled viaflowbaby.notifications.showIngestionSuccess, but failure notifications always show.) -
Chat participant icon missing:
@flowbabyicon now displays correctly in chat. Fixed icon path from non-existenticon.pngto actualflowbaby-icon-tightcrop.png. -
Missing API key causes infinite "working..." state: When API key is not configured,
@flowbabychat now shows helpful error message with link to configure instead of hanging indefinitely. -
API key setup notice auto-dismissing: Post-initialization API key prompt now uses modal dialog that stays until user explicitly dismisses it.
-
Status bar not updating after API key config: After setting API key via command, status bar now updates from yellow "API Key Required" to green "Ready" state.
Technical Changes
- Added failure notification to
StoreMemoryTool.invoke()for non-success responses - Fixed
participant.iconPathto use correct file path - Added API key check in chat participant before retrieval operations
- Changed post-init prompt to modal dialog (
{ modal: true }) - Added status bar update in
Flowbaby.setApiKeycommand handler
[0.5.6] - 2025-11-30
Fixed - Plan 045 Hotfix: Smoke Test Issues
Hotfix Release - Addresses three issues discovered during v0.5.5 smoke testing.
Issues Resolved
-
Progress notification stuck: "Initializing Flowbaby databases..." progress notification no longer blocks waiting for user input. Post-init API key prompt now shows after progress completes.
-
Post-init prompt timing: API key setup prompt now appears after initialization fully completes, not while progress is still showing.
-
Configure API Key command not found:
Flowbaby.configureApiKeycommand now works from Command Palette (was onlyFlowbaby.setApiKeybefore).
Technical Changes
- Moved post-init API key prompt outside
withProgresscallback to non-blocking.then()pattern - Added
Flowbaby.configureApiKeycommand as alias toFlowbaby.setApiKey - Added
getApiKeyState()method to FlowbabyClient for cached state access
[0.5.5] - 2025-11-30
Fixed - Plan 045: Fix Fresh Install API Key Blocking
Fresh Install Experience Release - Eliminates API key blocking issue that prevented new users from completing setup.
Problem Resolved
- Issue: Fresh installations failed with "LLM_API_KEY not found in environment" error
- Impact: New users couldn't complete Flowbaby setup without already having an API key configured
- Root Cause:
init.pyrequired API key before user had opportunity to set it
Changes
Python Bridge (init.py)
- Modified: API key validation now logs warning instead of returning error
- Added:
api_key_configuredandllm_readyfields to initialization response - Behavior: Initialization completes successfully, directories and databases created without API key
TypeScript Client (flowbabyClient.ts)
- Added:
ApiKeyStateinterface for centralized API key tracking - Added:
InitializeResultinterface with success status and API key state - Added:
hasApiKey()public method for pre-checking API key availability - Modified:
initialize()now returnsInitializeResultwith API key state
Status Bar (FlowbabyStatusBar.ts)
- Added:
NeedsApiKeystatus with distinct key icon and warning background - Behavior: Shows $(key) icon when initialized but API key not configured
Extension Activation (extension.ts)
- Added: Post-initialization API key prompt when no key configured
- Added: Graceful handling of
InitializeResultreturn type - Behavior: Shows "Set your API key to enable LLM operations" with action button
Graceful Degradation
- Added: Pre-check in
ingestForAgentandFlowbabyContextProvider.retrieveContext - Behavior: If no API key, prompts user with "Set API Key" action before attempting operation
- Message: "Flowbaby memory operations require an API key."
User Experience
- Fresh install now completes successfully
- Status bar shows key icon indicating API key needed
- User prompted to set API key after initialization
- Memory operations prompt for API key if not configured
- All existing functionality preserved when API key is set
[0.5.2] - 2025-11-29
Removed - Plan 044: Remove Non-Functional Auto-Ingest Setting
Configuration Cleanup Release - Removes experimental setting that never functioned.
Removed
- Setting:
Flowbaby.autoIngestConversationsremoved from VS Code settings - Code: Step 6 "feedback loop" code block removed from chat participant
- Rationale: Feature was introduced as experimental but never worked due to Cognee SDK limitations (file hashing bug). Keeping non-functional settings creates user confusion.
Impact
- Users who had this setting enabled will see no behavior change (it was already non-functional)
- Configuration surface is now cleaner and only exposes working features
- Any future auto-ingest or feedback-loop features will be redesigned under the current architecture (e.g., via structured summaries and Flowbaby tools) rather than reusing this removed pattern
[0.5.1] - 2025-11-28
Changed - Plan 043: Tool Descriptions and UX Improvements
Agent Integration & UX Polish Release - Enhances tool descriptions for better agent behavior and improves user experience.
Enhanced Tool Descriptions (Milestone 1)
- Updated:
flowbaby_storeMemoryandflowbaby_retrieveMemorytools now include comprehensive, structured instructions (~1,800 characters each) that encode the full Flowbaby memory contract - Benefit: Agents automatically understand when, how, and what to store/retrieve without requiring custom
.agent.mdfiles - Content: Descriptions include guidance on timing, query construction, what to capture, retrieval limits, and structure guidance
Configurable Success Notifications (Milestone 2)
- New Setting:
flowbaby.notifications.showIngestionSuccess(default:true) - Behavior: When
false, suppresses success toast notifications ("Memory staged...", "Flowbaby finished...") while preserving all error notifications - Use Case: Power users who find frequent success toasts distracting can disable them while still receiving critical error alerts
Keyboard Shortcut Change (Milestone 3)
- Changed: Default capture shortcut from
Ctrl+Alt+C/Cmd+Alt+CtoCtrl+Alt+F/Cmd+Alt+F - Rationale: Avoids potential conflicts with other extensions and common VS Code operations
- Migration: Users with custom keybindings should update to the new shortcut
Documentation
- Updated README.md with new keyboard shortcut references
- Added
flowbaby.notifications.showIngestionSuccessto Configuration table - Updated walkthrough step to reflect new shortcut
[0.5.0] - 2025-11-28
Changed - Plan 042: Comprehensive Lint Cleanup
Code Quality Release - Establishes consistent code quality standards across TypeScript, Python, and Markdown.
TypeScript ESLint (Milestone 1-5)
- Resolved: All 272 ESLint violations (12 errors, 260 warnings → 0 errors, 0 warnings)
- Updated: ESLint naming-convention rules to allow snake_case for Python bridge JSON contracts
- Fixed: 9
@typescript-eslint/no-explicit-anyby adding proper type definitions - Fixed: 9
@typescript-eslint/no-unused-varsby removing/prefixing unused variables - Fixed: 3
@typescript-eslint/no-var-requiresby converting to ES module imports - Auto-fixed: 47 curly braces and useless escape warnings
Python Linting (Milestone 6)
- Added:
rufflinter for Python bridge code (requirements-dev.txt) - Created:
extension/bridge/ruff.tomlconfiguration - Resolved: All Python lint errors (1322 → 0)
- Added:
npm run lint:pythonscript
Markdown Linting (Milestone 7)
- Updated:
.markdownlint.jsonwith appropriate rule exceptions - Verified: Zero markdownlint errors on user-facing documentation
- Added:
npm run lint:markdownscript
Developer Experience
- New:
npm run lint:all- Comprehensive lint check (TypeScript + Python + Markdown) - New:
npm run lint:python- Bridge code linting with ruff - New:
npm run lint:markdown- User-facing doc linting - New:
.github/workflows/lint.yml- CI lint enforcement on push/PR
[0.4.9]
Fixed - Plan 041: Capture Command UX Fixes
UX Improvement Release - Improves the Ctrl+Alt+C (Cmd+Alt+C on Mac) capture workflow for intuitive behavior.
Editor Selection Prioritization
- Fixed:
Ctrl+Alt+Ccapture command now correctly uses highlighted text from the active editor - Behavior: When text is selected in the editor, the input box pre-fills with that selection
- Benefit: Users can capture highlighted code or notes directly without manual copying
Cancellation Logic Fix
- Fixed: Pressing Escape now properly cancels the capture operation
- Previous: Escape would fall back to clipboard content, causing unintended captures
- Now: Escape shows "Capture cancelled" message and aborts without any ingestion
Clipboard Fallback (Power User Feature)
- Preserved: Submitting an empty input box (Enter with no text) still reads from clipboard
- Use Case: Power users can copy content to clipboard, press
Ctrl+Alt+C, then Enter to capture
Content Source Transparency
- Improved: Output channel now logs the source of captured content:
- "Capturing from Editor Selection (X chars)"
- "Capturing from User Input (X chars)"
- "Capturing from Clipboard (X chars)"
- Benefit: Users can verify what content was actually captured via Output > Flowbaby
Empty-All-Sources Handling
- Added: When no selection exists, input is empty, and clipboard is empty, shows "Nothing to capture" info message
- Benefit: Clear feedback instead of silent failure when there's nothing to capture
[0.4.8]
Fixed - Plan 040.1: First-Time Initialization Hotfix
Critical Hotfix - Resolves first-time workspace initialization failure introduced in v0.4.7 that required window reload.
FlowbabyClient Recreation After Environment Setup (M1)
- Bug: Fresh workspaces showed "No module named 'cognee'" error after clicking "Initialize" because FlowbabyClient was created at activation time with system Python before venv existed
- Root Cause: When
createEnvironment()succeeded, the existing client retained its stalepythonPath: "python3"instead of detecting the newly-created.flowbaby/venv - Fix: Recreate FlowbabyClient after successful environment creation to detect the new venv Python interpreter
- Benefit: Users can now use
@flowbabyimmediately after initialization without any window reload
Initialization Timeout Fix (M1.1)
- Bug: First-run database creation could timeout on slower machines because
initialize()used the default 10-second timeout - Fix: Increased
init.pytimeout from 10 seconds to 60 seconds - Benefit: First-run initialization (SQLite, Kuzu, LanceDB setup) completes successfully on slower systems
Initialization Logging (M2, M3)
- Added detailed progress logging throughout the initialization flow:
[Plan 040] Starting workspace initialization...[Setup] Virtual environment created successfully.[Setup] Starting dependency installation...[Setup] Dependency installation complete.[Plan 040] ✅ Environment created successfully[Plan 040] Recreating FlowbabyClient with new environment...[Plan 040] ✅ Flowbaby client initialized successfully
- Benefit: Users and support can trace initialization issues via Output > Flowbaby channel
User Experience Improvements
- No-reload workflow: First-time initialization now completes in a single process
- Clear progress: Setup notifications show venv creation → dependency install → database init
- Error transparency: Detailed logging aids troubleshooting when issues occur
[0.4.7]
Fixed - Plan 040: Initialization JSON Errors and No-Reload Workflow
User Experience Release - Enables frictionless first-run experience by fixing JSON parse errors, eliminating window reloads, and providing clearer health status messaging.
M1: Fix init.py Stdout Pollution (Critical)
- Bug: The cognee SDK prints "User X has registered" and other messages to stdout during database initialization, corrupting the JSON output and causing
JSON.parse()failures in the TypeScript client - Root Cause:
create_db_and_tables(),get_graph_engine(), and other cognee operations print directly to stdout - Fix: Added
suppress_stdout()context manager that captures all stdout/stderr during cognee operations and redirects to file logger - Contract:
init.pynow emits exactly one JSON line to stdout and nothing else
M2: Chain flowbabyClient.initialize() After Environment Setup
- Bug: The "Initialize Workspace" command only created the venv but did not initialize the Flowbaby client, forcing users to reload the window
- Fix: After successful environment creation, the command now chains into
flowbabyClient.initialize(), setsclientInitialized = true, and registers all providers/tools - Benefit: Users can immediately use
@flowbabyafter clicking "Initialize" without any page reload - Added: Structured error handling with user-facing notifications and Output channel logging for initialization failures
M3: Unify Health Check Logic for Fresh Workspaces
- Bug: Fresh workspaces with only
.flowbaby/logsdirectory were incorrectly marked as "BROKEN" instead of "FRESH" - Root Cause:
checkWorkspaceHealth()returnedBROKENif.flowbabyexisted butbridge-env.jsonwas missing - Fix: Missing
bridge-env.jsonnow correctly returnsFRESH(setup required), notBROKEN(repair required) - Benefit: Fresh workspaces show "Initialize" prompt instead of confusing "Repair Environment" prompt
- Updated: UX messaging now clearly distinguishes between "needs setup" (FRESH) and "needs repair" (BROKEN) states
M4: Increase Initialization Timeout
- Bug: First-run initialization could time out prematurely (15s) during database creation on slower machines or when downloading LanceDB embedding models
- Fix: Increased timeout from 15 seconds to 60 seconds for first-run initialization
- Benefit: Slow first-run initializations complete successfully without false timeout failures
User Experience Improvements
- No-reload workflow: Complete initialization from setup to ready state without any window reload
- Clear messaging: Distinct prompts for fresh workspaces ("Initialize") vs broken environments ("Repair")
- Error transparency: Initialization failures now show user-facing notifications with actionable guidance
[0.4.6]
Fixed - Plan 039: Initialization UX and Security Hardening
User Experience and Security Release - Resolves activation deadlock, improves initialization guidance, and implements security hardening from Plan 037 audit.
M1: Fix Activation Deadlock
- Bug: Extension activation could hang indefinitely when initialization failed, requiring VS Code restart
- Root Cause: Blocking
await vscode.window.showWarningMessage()in failure path preventedactivate()from returning - Fix: Replaced blocking
awaitwith non-blocking.then()callback pattern, ensuring activation completes within 2 seconds
M2: Register Flowbaby.initializeWorkspace Command
- New: Added
Flowbaby.initializeWorkspacecommand for workspace initialization - Change:
Flowbaby.setupEnvironmentretained as backward-compatible alias - Benefit: Consistent command naming within
Flowbaby.*namespace
M3: Proactive Health Check
- New:
checkWorkspaceHealth()method returnsFRESH | BROKEN | VALIDstatus - Change: Activation flow now checks workspace health before attempting client initialization
- Benefit: Targeted UX guidance based on actual workspace state (fresh vs corrupted vs ready)
- Added: Migration marker validation (
.migration-in-progresscheck) per architecture review R3
M4: Full Database Initialization
- Verified:
init.pyalready performs complete database priming (SQLite, Kuzu, LanceDB) for fresh workspaces - No changes required: Existing implementation meets acceptance criteria
M5: Remove .env API Key Support (Security - F2)
- Breaking Change: Removed workspace
.envfile API key loading - Migration: Users must use
Flowbaby: Set API Keycommand for secure SecretStorage - Rationale: Plaintext API keys in
.envfiles are credential exposure risk - Files Updated:
flowbabyClient.ts,init.py,ingest.py,retrieve.py,list_memories.py,validate_memories.py
M6: Audit Logging (Security - F7)
- New:
AuditLoggerclass for security event tracking - Format: JSON-lines structured logging to
.flowbaby/logs/audit.jsonl - Events Logged: API key changes, memory clear operations, environment initialization
- Benefit: Security audit trail for credential and data operations
M7: Safe Memory Clear with Soft-Delete (Security - F8)
- Change:
clearMemory()now moves data to.flowbaby/.trash/{timestamp}/instead of permanent deletion - Benefit: Recovery possible for accidentally cleared memories
- New:
purgeTrash()method for permanent trash cleanup - Audit: All clear operations logged via AuditLogger
M8: Version and Release Artifacts
- Version: 0.4.5 → 0.4.6
- Changelog: Updated with Plan 039 changes
Breaking Changes
- API Key Source: Workspace
.envfiles no longer used for API key resolution. UseFlowbaby: Set API Keycommand or setLLM_API_KEYenvironment variable.
Security Improvements
- Credentials now stored in VS Code SecretStorage (encrypted)
- Security-relevant operations logged to audit trail
- Data deletion uses soft-delete with recovery option
[0.4.5]
Fixed - Plan 034: Initialization Bugs and Background Notification Issues
Maintenance Release - Resolves 3 critical bugs affecting new workspace initialization and background processing notifications.
Database Initialization for Fresh Workspaces
- Bug: Fresh workspaces threw
sqlite3.OperationalError: no such table: principalsduring user registration - Root Cause: Database table creation was implicitly part of
prune_system(). Fresh workspaces (where pruning is skipped) never called table creation - Fix: Explicitly call
create_db_and_tables()fromcognee.infrastructure.databases.relationalin the fresh workspace initialization path
Lance Namespace Import Error
- Bug:
ModuleNotFoundError: No module named 'lance_namespace'prevented vector engine loading - Root Cause: The
lance-namespace==0.2.0package on PyPI is broken/incomplete - missing thelance_namespacetop-level module - Fix: Pinned
lance-namespace==0.0.21inrequirements.txt(verified working version)
Background Notification False Positives
- Bug: "Flowbaby processing failed" notifications appeared despite successful ingestion in logs
- Root Cause:
ingest.pywrote status stubs to.cognee/background_ops/(legacy path) whileBackgroundOperationManager.tslooked for stubs in.flowbaby/background_ops/ - Fix: Updated
ingest.pyto write status stubs to.flowbaby/background_ops/
Technical Notes
- All fixes maintain backward compatibility with existing workspaces
- Legacy
.cognee/background_opsstubs will be ignored (no functional impact) - No migration required from v0.4.4
[0.4.4]
Fixed - Plan 033: Complete Environment Variable Hotfix
Hotfix - Completes the v0.4.3 environment variable fix that missed init.py, preventing "still initializing" hang and .cognee folder creation.
Root Cause
v0.4.3 correctly fixed ingest.py and retrieve.py to set SYSTEM_ROOT_DIRECTORY and DATA_ROOT_DIRECTORY before importing Cognee SDK. However, init.py was missed, causing:
- Creation of orphan
.cogneefolder in workspace root - Missing
.flowbaby/datadirectory - "Flowbaby is still initializing..." hang on first activation
- Retrieval failures ("no relevant memories found")
Fix Applied
- Set
SYSTEM_ROOT_DIRECTORYandDATA_ROOT_DIRECTORYenvironment variables beforeimport cogneeininit.py(lines 178-215) - Changed legacy
.cogneedirectory creation to.flowbabyfor marker files (line 263) - Conducted bridge-wide import audit - all 8 scripts now follow the "env vars before import" invariant
- Fixed additional non-compliant scripts:
list_memories.py,validate_memories.py,recover_data.py
Bridge-Wide Invariant (Documented)
All bridge entrypoints must now follow this sequence:
- Compute
.flowbaby/systemand.flowbaby/datapaths - Create directories with
Path.mkdir(parents=True, exist_ok=True) - Set
os.environ['SYSTEM_ROOT_DIRECTORY']andos.environ['DATA_ROOT_DIRECTORY'] - Only then
import cognee
This invariant is enforced because Cognee SDK uses pydantic-settings with @lru_cache, reading environment variables at import time.
Test Coverage Added
test_sets_env_vars_before_cognee_import- verifies env var valuestest_creates_flowbaby_dirs_not_cognee_dirs- filesystem regression testtest_env_vars_contain_flowbaby_path- path validation
[0.4.3]
Fixed - Hotfix: Cognee SDK Environment Variable Names
Critical Hotfix - Fixes storage directory misconfiguration causing FileNotFoundError: Storage directory does not exist: '.cognee_data'.
Root Cause
v0.4.2 used incorrect environment variable names (COGNEE_SYSTEM_ROOT_DIRECTORY, COGNEE_DATA_ROOT_DIRECTORY). The Cognee SDK's BaseConfig uses pydantic-settings which reads environment variables matching the exact field names—no COGNEE_ prefix.
Fix Applied
- Changed
COGNEE_SYSTEM_ROOT_DIRECTORY→SYSTEM_ROOT_DIRECTORYiningest.pyandretrieve.py - Changed
COGNEE_DATA_ROOT_DIRECTORY→DATA_ROOT_DIRECTORYiningest.pyandretrieve.py
Impact
- Background cognify operations now correctly use workspace-local
.flowbaby/paths - New data files appear in
.flowbaby/data/instead of~/.cognee_data
[0.4.2]
Fixed - Plan 032: Activation and Background Processing Bugs
Maintenance Release - Resolves 6 bugs affecting extension activation, database generation, log rotation, and branding consistency.
Chat Agent Registration (#1)
- Bug: @flowbaby chat participant only appeared after extension fully initialized, requiring user to reload window
- Root Cause:
registerFlowbabyParticipant()was called insideif (initialized)block, delaying UI registration - Fix: Moved chat participant registration BEFORE
flowbabyClient.initialize()with graceful degradation - handler shows "⏳ Flowbaby is still initializing..." message while backend completes setup
Cognee SDK Storage Pathing (#2)
- Bug: Database files created in
~/.cognee_datainstead of workspace-local.flowbaby/data - Root Cause: Cognee SDK may cache paths on import; environment variables were set after import in bridge scripts
- Fix:
- Added explicit
.flowbaby/datadirectory creation ininit.pyalongside.flowbaby/system - Restructured
ingest.pyandretrieve.pyto setCOGNEE_SYSTEM_ROOT_DIRECTORYandCOGNEE_DATA_ROOT_DIRECTORYenvironment variables BEFOREimport cognee - Safety check
workspace_has_data()already existed and continues to prevent accidental data loss
- Added explicit
Log Rotation Fix (#3)
- Bug: Python RotatingFileHandler writing to
.log.1instead of.logafter rotation - Root Cause: TypeScript
BackgroundOperationManagerwas opening log file descriptor and passing it to spawned Python process; TypeScript holding the fd prevented Python from rotating properly - Fix: Removed
logFdfile descriptor passing inspawnCognifyProcess(). Pythonbridge_logger.pynow handles all log rotation independently using its own RotatingFileHandler
Branding Consistency (#4)
- Bug: Toast notifications showed "⚠️ Cognify failed" and "✅ Cognify finished" instead of Flowbaby branding
- Fix: Updated all user-facing toast messages in
BackgroundOperationManager.ts:'✅ Cognify finished'→'✅ Flowbaby processing finished''⚠️ Cognify failed'→'⚠️ Flowbaby processing failed'- Updated corresponding internal log messages for consistency
Technical Notes
- Plan 032 follows architectural guidance from Plan 031 and maintains backward compatibility
- No migration required from v0.4.1; users can update seamlessly
- Log file location unchanged:
.flowbaby/logs/flowbaby.log
[0.4.1]
Fixed - Plan 031: Background API Key and Logging Consolidation
Critical Hotfix - Resolves v0.4.0 regressions affecting background ingestion and logging.
Background Ingestion API Key Fix
- Root Cause:
BackgroundOperationManager.spawnCognifyProcess()was not injectingLLM_API_KEYfrom SecretStorage into the spawned process environment, causingMISSING_API_KEYerrors for users who relied on the "Flowbaby: Set API Key" command. - Fix: Added
resolveApiKey()andgetLLMEnvironment()methods toBackgroundOperationManager, mirroring the working implementation inFlowbabyClient. These methods now properly inject API keys from:- Workspace
.envfile (highest priority) - VS Code SecretStorage (
flowbaby.llmApiKey) - System environment variable (
LLM_API_KEY)
- Workspace
- Scope: Applies to
spawnCognifyProcess()(background cognify) andrunPythonJson()(add-only retry).
Logging Consolidation
- Unified Log File: All Python bridge logs now write to
.flowbaby/logs/flowbaby.log(was split betweenbridge.logandingest.log). - Updated Logger:
bridge_logger.pyupdated to use.flowbaby/logs/flowbaby.logpath andflowbaby.*logger names. - View Logs Action: "View Logs" notification action now opens the consolidated log file.
Test Infrastructure
- rdflib Dependency: Added early detection for missing
rdfliblibrary in test environment with actionable error message inconftest.py. - Updated Tests:
test_logging_overhaul.pyupdated to use new log paths.
Documentation
- README.md: Fixed Windows path example to use
.flowbabyinstead of.cognee. - extension.ts: Fixed incorrect pip install instruction - changed "pip install flowbaby" to "pip install cognee" (flowbaby is the VS Code extension name, not a Python package).
[0.4.0]
⚠️ BREAKING CHANGES
This release rebrands the extension from "RecallFlow Chat Memory" to "Flowbaby" with significant breaking changes:
Branding Changes
- Extension renamed:
cognee-chat-memory→flowbaby - Publisher changed:
flowbaby→flowbaby - Display name:
RecallFlow Chat Memory→Flowbaby
Command Changes
- All
cognee.*commands renamed toFlowbaby.* - Example:
cognee.captureMessage→Flowbaby.captureMessage
Settings Changes
- All
cogneeMemory.*settings renamed toFlowbaby.* - Example:
cogneeMemory.enabled→Flowbaby.enabled - Action Required: Update your settings.json if you have custom configurations
Chat Participant Changes
@flowbaby-memory→@flowbaby
Tool Changes (for Agent Developers)
flowbaby_storeMemory→flowbaby_storeMemoryflowbaby_retrieveMemory→flowbaby_retrieveMemory#flowbabyStoreSummary→#flowbabyStoreSummary- Action Required: Update your
.agent.mdfiles
Workspace Storage Changes
- All extension data now stored under
.flowbaby/(was.cognee/,.cognee_data/,.cognee_system/) - Action Required: Re-set your API key via
Flowbaby: Set API Keycommand - Note: Previous workspace memories are not migrated
Logging Consolidation
- Single log file:
.flowbaby/logs/flowbaby.log - Removed redundant
ingest.log
Migration Steps
- Uninstall the old extension
- Install Flowbaby v0.4.0
- Run
Flowbaby: Set API Keyto configure your LLM API key - Update any custom keybindings from
cognee.*toFlowbaby.* - Update any agent definitions to use new tool names
[0.3.17]
Fixed - Plan 028: Post-v0.3.16 Bug Fixes and Developer Experience
- Duplicate Output Channels: Fixed issue where multiple "Flowbaby Memory" output channels were created. Implemented singleton pattern in
outputChannels.ts. - Status Bar Unclickable: Fixed status bar command registration timing issue. Commands are now registered early in activation with try/catch error handling.
Added
- Debug Logging Channel: New opt-in debug output channel for troubleshooting. Enable via
Flowbaby.debugLoggingsetting and use "Flowbaby: Show Debug Logs" command. - Isolated Python Environment: venv moved from
.venvto.flowbaby/venvto prevent conflicts with project virtual environments and Python language servers (e.g., Pylance/Jedi). - venv Conflict Detection: When an existing
.venvis detected, users are offered a choice between the isolated.flowbaby/venv(recommended) or using the existing.venv(advanced). - Global API Key via SecretStorage: New "Flowbaby: Set API Key" command stores API keys securely via VS Code's SecretStorage API. Keys are shared across all workspaces.
- API Key Priority: Resolution order is now workspace
.env> SecretStorage (global) > system environment variable. - Global LLM Configuration: New settings
Flowbaby.llm.provider,Flowbaby.llm.model, andFlowbaby.llm.endpointfor configuring LLM providers without per-workspace.envfiles. - Clear API Key Command: New "Flowbaby: Clear API Key" command to remove stored SecretStorage key.
Changed
- Python Interpreter Detection: Priority order updated to: explicit setting >
.flowbaby/venv>.venv(legacy) > system python3. - Documentation: Updated README and SETUP docs to reflect new setup flow, removed global pip install requirement, documented new features and troubleshooting steps.
[0.3.16]
Fixed - Plan 027: Migration Marker Data Loss Bug
- Critical P0 Bug Fix: Fixed a bug that caused 96% data loss when the cognee Python package was reinstalled. The migration marker was being written to the volatile venv location instead of the workspace-local
.flowbaby/system/directory. - Root Cause:
get_relational_config()was called BEFOREcognee.config.system_root_directory(), returning the venv path instead of the configured workspace path. - Reordered Initialization: Workspace directories are now configured FIRST, and the marker path is derived directly from the workspace path (never querying SDK config).
- Safety Check: Added
workspace_has_data()function that refuses to prune if existing LanceDB or Kuzu data is detected, preventing accidental data loss. - Prominent Warnings: Added visual warning separators (
====) before any prune operation to make the action obvious in logs. - Data Integrity Health Check: Added
get_data_integrity_status()function to compare SQLite vs LanceDB counts for consistency monitoring.
Testing
- Added
extension/bridge/tests/test_init_migration.pywith 15 test cases covering marker location, safety checks, and integrity status.
[0.3.15]
Fixed - Plan 026: Path Canonicalization and Retrieval Scoring
- Path Canonicalization: All 5 Python bridge scripts (
ingest.py,retrieve.py,init.py,list_memories.py,validate_memories.py) now strictly canonicalize workspace paths at entry. This fixesIngestionError 415when opening workspaces with relative paths (e.g.,code .). - UI Initialization: Fixed a "chicken-and-egg" bug where the Status Bar and Setup Service were only created after successful initialization. They now appear immediately, ensuring the "Setup Required" indicator is visible in fresh workspaces.
- Synthesized Answer Scoring: Fixed confusing display of synthesized graph answers (which have a raw score of 0.00). The bridge now detects this sentinel, assigns a high ranking score, and attaches a
confidenceLabel="synthesized_high"metadata field. - Qualitative UI Labels: The UI now displays "High relevance (synthesized)" for graph completions instead of overloading the numeric score or showing 0.00.
[0.3.14]
Added - Plan 025: Simplified Python Environment Setup
- Managed Python Environment: Flowbaby now automatically creates and manages a dedicated
.venvvirtual environment in your workspace, eliminating manual setup steps. - One-Click Setup: New "Initialize Workspace" command handles Python version checks (3.8+), virtual environment creation, and dependency installation in a single click.
- Status Bar Indicator: Added a status bar item showing environment health (Ready, Setup Required, Refreshing, Error) with quick access to repair actions.
- Dependency Management: New "Refresh Dependencies" command safely updates the bridge environment, coordinating with background operations to prevent conflicts.
- Smart Precedence: Automatically detects existing
.venvor configured Python paths, but prioritizes the managed environment for reliability. - Enhanced Walkthrough: The "Get Started" walkthrough now guides users through the automated setup process with context-aware completion steps.
- Robust Metadata: Tracks environment state and version compatibility in
.flowbaby/bridge-env.jsonto ensure stability across updates.
[0.3.13]
Added - Plan 024: Configurable Search Parameters
- Configurable Search Depth (
searchTopK): Added newFlowbaby.searchTopKsetting (default 10, range 1–100) to control how many candidates the Flowbaby search engine returns before ranking. - Higher Context Token Budget: Increased
Flowbaby.maxContextTokensdefault from 2000 to 32000 and maximum to 100000 to better support large-context models. - Bridge Safeguards:
retrieve.pynow clampsmax_tokensinto the [100, 100000] window, normalizestop_kso it is never lower thanmax_results, and hard-clampstop_kto 100 to prevent runaway latency. - Normalization & Logging: When a user-provided
top_kis raised to meetmax_resultsor clamped to the ceiling, the bridge logs a structured warning with both requested and effective values for easier debugging. - Client Logging & Truncation:
CogneeClientlogs the configuredsearchTopKvalue on each retrieval and passes it through to the bridge. Output-channel payloads remain truncated to keep the VS Code UI responsive.
[0.3.12]
Fixed - Plan 022: Retrieval Filtering and Truncation
- Retrieval Filtering: Fixed aggressive filtering of "no_relevant_context" responses. The bridge now uses an exact match check instead of a substring match, preventing valid answers that quote the sentinel value from being discarded.
- Client Truncation: Increased
CogneeClientstdout buffer from 2KB to 1MB. This fixes JSON parse errors when retrieval results exceed the default buffer size. - Error Logging: Improved error reporting to capture and log both stdout and stderr when JSON parsing fails, aiding in debugging bridge issues.
- Telemetry: Added
filtered_countto retrieval telemetry to track how many items are filtered by the bridge.
[0.3.11]
Fixed - Plan 021: Retrieval Display for Synthesized Answers
- Retrieval Display Bug: Fixed a regression where synthesized answers (score 0.0) were silently filtered out by the client-side safety check.
- Sentinel-Aware Filter: Updated
CogneeContextProviderto explicitly allow results withscore === 0.0(sentinel for synthesized answers) while maintaining strict filtering for low-confidence noise (e.g., 0.001 - 0.009). - Logging: Added debug logging to indicate when synthesized answers are included in retrieval results.
[0.3.10]
Fixed - Plan 023: Retrieval Scoring Hotfix
- Retrieval Regression: Fixed an issue where valid
GRAPH_COMPLETIONanswers (synthesized strings) were discarded because they lacked a semantic score and hit the strictscore <= 0.01filter introduced in v0.3.9. - Logic Update:
retrieve.pynow bypasses the strict score filter for synthesized answers (which default to score 0.0) while maintaining the filter forNO_RELEVANT_CONTEXTresponses.
[0.3.9]
Added - Plan 021: Logging Infrastructure Overhaul
Structured Bridge Logging - Python bridge scripts now use a shared logging utility that emits structured JSON-lines to both the VS Code Output Channel and a persistent workspace log file (.flowbaby/logs/bridge.log).
- Rotating Log File:
bridge_logger.pywrites untruncated diagnostics with 5MB rotation (3 backups) so retrieval and ingestion history is never lost. - Detailed Retrieval Telemetry:
retrieve.pylogs candidate lists, semantic scores, recency/status multipliers, filtering reasons, and final selections for each query. - Ingestion Metrics:
ingest.pyreports character counts and stage durations, making performance bottlenecks obvious. - Consistent Formatting: All bridge scripts (
init.py,validate_memories.py,list_memories.py) now produce structured JSON logs for easier parsing and UI rendering. - VS Code Output Contract: Stderr handler keeps Output Channel entries lightweight (~2KB) while retaining full fidelity in file logs.
Testing
- Added
extension/bridge/tests/test_logging_overhaul.pycovering log file creation, ingestion metrics, retrieval scoring telemetry, and stderr formatting.
[0.3.8]
Added - Plan 021: Memory Visibility and Trust
Zero-Hallucination Retrieval - Implemented strict filtering to prevent irrelevant memories from polluting context:
- Strict Score Threshold: Retrieval results with distance scores > 0.01 are now filtered out by default.
- Explicit "No Context" Signal: Bridge now returns
NO_RELEVANT_CONTEXTsignal when no memories meet the threshold, preventing hallucinated "matches". - Validation Tools: New commands for inspecting memory state:
Flowbaby: Validate Memories- Runs integrity checks on stored memories.Flowbaby: List Memories- Dumps raw memory content for debugging.
Fixed:
- Integration Test Stability: Fixed path resolution errors in integration tests by correctly injecting
extensionPathinto the mock context. All 149 tests now pass. - Branding Cleanup: Removed "formerly Cognee" references from extension description and UI strings for a cleaner "Flowbaby" identity.
[0.3.7]
Fixed - Plan 019: Flowbaby Rebranding Gaps
- Publisher Identity: Marketplace publisher ID now set to
flowbabywith author updated to "Flowbaby Team" so the extension no longer appears under the legacy Cognee brand. - Language Model Tools: Renamed tool identifiers and reference names to
flowbaby_storeMemory/flowbaby_retrieveMemoryso Configure Tools, chat autocomplete, and.agent.mddefinitions all reflect the Flowbaby brand. - Documentation Alignment:
README.mdandAGENT_INTEGRATION.mdnow show the correct tool names and usage examples, preventing confusion for agent developers. - Test Coverage: Integration tests updated to ensure the new tool identifiers register correctly with GitHub Copilot chat and that UI instructions stay in sync.
[0.3.6]
Added - Plan 019: Retrieval Fabrication and Silent Failure Fix
Rebranding to Flowbaby - The extension has been renamed to "Flowbaby" to better reflect its purpose as a memory and recall layer for AI agents.
- User-Facing Changes:
- Extension name: "Flowbaby Chat Memory"
- Commands:
Flowbaby: Capture to Memory,Flowbaby: Toggle Memory, etc. - Output Channel: "Flowbaby Agent Activity"
- Chat Participant:
@flowbaby-memory - Tools: "Store Memory in Flowbaby", "Retrieve Flowbaby Memory"
- Tool Renaming:
flowbaby_storeMemory→flowbaby_storeMemory,flowbaby_retrieveMemory→flowbaby_retrieveMemory
- Backward Compatibility:
- Internal configuration keys (
Flowbaby.*) remain unchanged - File paths (
.flowbaby/) remain unchanged - Python package (
cognee) remains unchanged
- Internal configuration keys (
Fixes & Improvements:
- Retrieval Fabrication Fix: Changed default semantic score for unscored results from 0.7 to 0.0. This prevents empty or irrelevant results from appearing with artificially high confidence scores.
- Silent Failure Detection:
- Implemented log rotation for background processes (
.flowbaby/logs/ingest.log) - Redirected
stdout/stderrof background processes to log files to capture crashes - Added "zombie" detection for processes that exit without writing a status stub
- Implemented log rotation for background processes (
- Proactive Prevention: Enforced 100k character limit on ingestion payloads to prevent bridge crashes and memory exhaustion.
- UX Enhancements: Added timestamps to
Flowbaby: Show Background Operationsquick pick items for better visibility.
[0.3.5]
Added - Plan 018: Metadata Infrastructure and Ranking
Intelligent Ranking & Filtering - Retrieval now prioritizes memories based on recency and status:
- Recency-Aware Ranking: New exponential decay algorithm prioritizes fresh memories. Configurable via
Flowbaby.ranking.halfLifeDays(default: 7 days). - Status Filtering: Memories can be marked as
Active,Superseded, orDecisionRecord.Supersededmemories are hidden by default to reduce noise.DecisionRecordmemories receive a relevance boost.
- Metadata-Rich Storage: Summaries now embed structured metadata (topicId, status, timestamps) directly in the text, enabling robust tracking even without graph metadata support.
Technical Implementation:
- Enriched Text Fallback: Implemented "Enriched Text" pattern to store metadata within summary text, bypassing Cognee 0.3.4 DataPoint limitations.
- Migration Script: New
migrate_summaries.pyscript automatically upgrades legacy memories to the new schema. - Safe Migration: Uses file locking (
.flowbaby/maintenance.lock) to pause background operations during migration. - Updated Tool Definitions:
flowbaby_storeMemoryandflowbaby_retrieveMemorytools updated with clearer descriptions and privacy guarantees ("Data stays in this workspace").
Fixed
- Ranking Quality: Addressed issue where old, less relevant memories cluttered retrieval results.
- Status Visibility: Superseded plans and decisions no longer confuse agents.
[0.3.4]
Release
This release packages the async cognify() optimization (Plan 017) with no functional changes from v0.3.3. Version bumped to v0.3.4 for clean release tracking.
All features, improvements, and technical details remain as documented in v0.3.3 below. This is a packaging-only release to formalize the deployment.
[0.3.3]
Added - Plan 017: Async cognify() Optimization
Universal Async Memory Ingestion - ALL ingestion flows (agent tools, manual capture, headless commands) now return in <10 seconds:
- Staged Messaging: Every ingestion surface shows: "Memory staged – processing will finish in ~1–2 minutes. You'll get a notification when it's done."
- Background Processing: Knowledge graph construction (
cognee.cognify()) runs in detached subprocess while agents continue working - Completion Notifications:
- Success (info): "✅ Cognify finished" with workspace name, summary digest, elapsed time, entity count, "View Status" action
- Failure (warning): "⚠️ Cognify failed" with workspace name, summary digest, remediation guidance, "Retry"/"View Logs" actions
- Independent Throttling: Success and failure notifications throttled separately (≤1 per 5 min per workspace per outcome type)
- Background Status Command: New
cognee.backgroundStatuscommand shows all in-flight/completed operations with quick-pick UI
Technical Implementation:
- Split
ingest.pyinto 3 modes:--mode sync(diagnostic),--mode add-only(fast staging <10s),--mode cognify-only(background graph construction) - BackgroundOperationManager service with:
- Dual-ledger persistence (
.flowbaby/background_ops.json+ VS Code globalState) - Concurrency limits: max 2 concurrent + FIFO queue of 3 pending operations
- Detached subprocess spawning with PID tracking
- Activation reconciliation (reattach live PIDs, mark stale entries
unknown) - Deactivation cleanup (SIGTERM with 5s grace + SIGKILL)
- Atomic status stub writes prevent corruption on crashes
- Dual-ledger persistence (
- Updated client methods:
ingestSummaryAsync()andingestAsync()for summary and conversation ingestion - Comprehensive bridge test suite (15+ tests) covering all modes, error handling, backward compatibility
Performance Impact:
- Agent blocking time: 73s → <10s (86% reduction)
- Manual capture blocking time: 73s → <10s (86% reduction)
- Background processing: 60-90s (unchanged, runs asynchronously)
- Result: Agents can store 3 memories in 30s instead of 219s
User Experience Changes:
- Manual capture (
Ctrl+Alt+C) now shows staged toast instead of blocking - Agent tools (
#cogneeStoreSummary) return immediately with operationId - All users receive completion notification when background processing finishes
- Output channel shows full audit trail:
[BACKGROUND]markers for start/success,[ERROR]for failures
Backward Compatibility:
- Sync mode (
--mode sync) preserves legacy behavior for diagnostic/test use - Conversation mode (positional args) continues to work with sync mode
- All existing tests pass unchanged
Fixed - Plan 016.1: Tool Lifecycle and Bridge Timeouts Hotfix
Bug Fixes:
- Tool Lifecycle UI Desync: Fixed issue where Configure Tools dialog showed stale enablement state when toggling tools on/off. Tools now register unconditionally at extension activation; VS Code's Configure Tools UI is the sole authorization mechanism (no redundant workspace setting).
- Bridge Timeout Opacity: Added comprehensive diagnostic logging to Python bridge scripts (ingest.py, retrieve.py) with
[PROGRESS],[WARNING], and[ERROR]markers. Users now see step-by-step progress in Output channel when bridge operations are slow or fail. - Redundant Authorization: Removed
Flowbaby.agentAccess.*workspace settings entirely. Simplified authorization model: users enable/disable tools via Configure Tools UI only.
Breaking Changes:
- Removed settings:
Flowbaby.agentAccess.enabled,Flowbaby.agentAccess.maxResultsDefault,Flowbaby.agentAccess.maxTokensDefault,Flowbaby.agentAccess.maxConcurrentRequests,Flowbaby.agentAccess.rateLimitPerMinute - Status bar "Cognee Agent Access" indicator removed (Configure Tools dialog provides feedback)
- Error code
ACCESS_DISABLEDno longer returned (tools always registered)
Technical Details:
- Bridge scripts emit structured error payloads with error codes:
LLM_API_ERROR,COGNEE_SDK_ERROR,PYTHON_ENV_ERROR,ONTOLOGY_LOAD_ERROR - TypeScript client (cogneeClient.ts) parses stderr for diagnostic markers and surfaces at appropriate log levels (INFO/ERROR/WARN)
- Fixed sys module import shadowing bug in retrieve.py
- Test suite updated to reflect new authorization model
User Impact:
- Simpler authorization: single source of truth (Configure Tools)
- Better debugging: diagnostic logs visible in Output > "Flowbaby" channel
- Faster resolution of bridge issues: progress markers identify exactly where operations block
[0.3.2]
Fixed - Plan 016.1: Tool Lifecycle and Bridge Timeouts Hotfix
Bug Fixes:
- Tool Lifecycle UI Desync: Fixed issue where Configure Tools dialog showed stale enablement state when toggling tools on/off. Tools now register unconditionally at extension activation; VS Code's Configure Tools UI is the sole authorization mechanism (no redundant workspace setting).
- Bridge Timeout Opacity: Added comprehensive diagnostic logging to Python bridge scripts (ingest.py, retrieve.py) with
[PROGRESS],[WARNING], and[ERROR]markers. Users now see step-by-step progress in Output channel when bridge operations are slow or fail. - Redundant Authorization: Removed
Flowbaby.agentAccess.*workspace settings entirely. Simplified authorization model: users enable/disable tools via Configure Tools UI only.
Breaking Changes:
- Removed settings:
Flowbaby.agentAccess.enabled,Flowbaby.agentAccess.maxResultsDefault,Flowbaby.agentAccess.maxTokensDefault,Flowbaby.agentAccess.maxConcurrentRequests,Flowbaby.agentAccess.rateLimitPerMinute - Status bar "Cognee Agent Access" indicator removed (Configure Tools dialog provides feedback)
- Error code
ACCESS_DISABLEDno longer returned (tools always registered)
Technical Details:
- Bridge scripts emit structured error payloads with error codes:
LLM_API_ERROR,COGNEE_SDK_ERROR,PYTHON_ENV_ERROR,ONTOLOGY_LOAD_ERROR - TypeScript client (cogneeClient.ts) parses stderr for diagnostic markers and surfaces at appropriate log levels (INFO/ERROR/WARN)
- Fixed sys module import shadowing bug in retrieve.py
- Test suite updated to reflect new authorization model
User Impact:
- Simpler authorization: single source of truth (Configure Tools)
- Better debugging: diagnostic logs visible in Output > "Flowbaby" channel
- Faster resolution of bridge issues: progress markers identify exactly where operations block
[0.3.1]
Added - Plan 015: Agent Ingestion Command
- Agent Ingestion API:
Flowbaby.ingestForAgentcommand enables GitHub Copilot agents and third-party extensions to store structured summaries in Cognee- TypeScript schema validation with detailed error messages
- Workspace-global access model with prominent privacy warnings
- Structured JSON request/response with camelCase field naming
- Auto-generation of missing IDs (topicId, timestamps)
- Fast-fail validation before bridge invocation
- Agent Access Control: New
Flowbaby.agentAccess.enabledsetting (default: false)- Workspace-global trust model (all extensions granted access when enabled)
- Prominent warning in settings UI about privacy implications
- Access enforcement at command handler level
- Audit Logging: Comprehensive logging for all agent ingestion attempts
- Real-time logs in
Output>Cognee Agent Activitychannel - Structured JSON audit log at
.flowbaby/agent_audit.log - Privacy-preserving topic digests (8-char SHA-256 hash)
- Tracks timestamp, agent name, result, error codes, duration
- Real-time logs in
- Agent Integration Documentation: Complete API guide at
extension/AGENT_INTEGRATION.md- TypeScript examples (minimal and full payloads)
- Error handling patterns with error codes
- Security model explanation
- Best practices for topic ID generation and ingestion timing
- Troubleshooting guide
- Bridge Contract Documentation:
extension/bridge/INGEST_CONTRACT.mddefines stable ingestion schema- JSON payload specification (required/optional fields)
- Error codes reference (ACCESS_DISABLED, INVALID_PAYLOAD, etc.)
- Example payloads (minimal, full, invalid)
- Performance characteristics
- Testing instructions
- Test Agent Extension: Reference implementation at
test-agent/- Validates all ingestion scenarios (valid, invalid, access control)
- Automated test suite with pass/fail reporting
- Can be used as template for custom agent development
Added - Plan 016: Agent Retrieval and UI-Visible Extension Tools
- Agent Retrieval API:
Flowbaby.retrieveForAgentcommand enables agents to query Cognee knowledge graph- Structured JSON request/response with
CogneeContextRequest/CogneeContextResponsetypes - Returns metadata-rich entries (topic, topicId, planId, score, decisions, timestamps)
- Concurrency limiting (max 2 in-flight requests, configurable up to 5)
- Rate limiting (max 10 requests/minute, configurable up to 30)
- Graceful degradation for legacy memories (null metadata fields)
- Structured JSON request/response with
- CogneeContextProvider Service: Centralized retrieval infrastructure with architectural guardrails
- FIFO request queueing with concurrency enforcement
- Per-minute rate limiting with sliding window
- Structured error responses (ACCESS_DISABLED, RATE_LIMIT_EXCEEDED, QUEUE_FULL, BRIDGE_TIMEOUT, INVALID_REQUEST)
- Settings clamping with safe upper bounds (prevents misconfiguration)
- UI-Visible Language Model Tools: Both tools appear in VS Code's "Configure Tools" dialog
flowbaby_storeMemory(#cogneeStoreSummary) - Store conversation summariesflowbaby_retrieveMemory(#cogneeRetrieveMemory) - Retrieve relevant memories- Tools support
#autocomplete in chat and.agent.mdfront-matter references - Atomic lifecycle: both tools register/unregister together when
agentAccess.enabledtoggles - Icon support for visual identity (
$(database)and$(search))
- Custom Agent Integration: Full support for custom
.agent.mdfiles- Tools reference name format:
tools: ['cogneeStoreSummary', 'cogneeRetrieveMemory'] - Confirmation messages for transparency (optional, depends on user trust settings)
- Retrieve tool returns BOTH narrative markdown AND verbatim JSON payload
- Tools reference name format:
- @flowbaby Participant Refactor: Now uses shared
CogneeContextProvider- Consistent retrieval behavior across participant and tools
- Leverages centralized concurrency/rate limiting
- Enhanced metadata display (topicId, planId, score when available)
- Transparency Indicators: All agent activity is auditable
- Output channel logs every retrieval/ingestion with timestamps, query hashes, result counts
- Status bar indicator shows "Cognee Agent Access: Enabled" with spinner during operations
- Click behavior opens Output channel for inspection
- Enhanced Documentation:
AGENT_INTEGRATION.mdextended with retrieval examples, tool integration guide, error code referenceREADME.mdincludes "Using Cognee Tools with Custom Agents" section with.agent.mdexamples- Complete TypeScript interfaces in
types/agentIntegration.ts
- Agent Access Settings: Additional configuration for retrieval behavior
Flowbaby.agentAccess.maxResultsDefault(default: 5)Flowbaby.agentAccess.maxTokensDefault(default: 4000)Flowbaby.agentAccess.maxConcurrentRequests(default: 2, max: 5)Flowbaby.agentAccess.rateLimitPerMinute(default: 10, max: 30)
Changed
- Minimum VS Code Version: Requires VS Code 1.106+ for
canBeReferencedInPrompt/toolReferenceNamesupport - Extension Activation: CogneeContextProvider initialization happens after CogneeClient setup
- Participant Behavior: @flowbaby now routes through CogneeContextProvider (no breaking changes to user experience)
Added - Test Coverage Enhancements (from previous release)
Added - Test Coverage Enhancements
- Summary Workflow Integration Tests: 14 new automated tests in
summaryWorkflow.integration.test.ts- 7 workflow tests validate complete "summarize → generate → store" flow
- 7 snapshot tests guard against README/template drift
- Tests cover trigger detection, no-history errors, cancellation, large conversations
- Template Consistency Validation: Round-trip preservation tests ensure format → parse cycle stability
- Mixed-Mode Test Coverage: Validates enriched vs legacy memory handling in integration context
- Section Heading Stability: Tests enforce that headings match DATAPOINT_SCHEMA.md exactly
Fixed
- Manual Test Isolation: Added
@pytest.mark.manualdecorator to manual scripts to prevent CI failures - Pytest Configuration: Registered
manualmarker inpytest.inifor proper test filtering - QA Documentation: Updated with environment-specific test execution guidance
Improved
- Test Suite Reliability: Default
pytestruns now succeed (37 passed, 1 skipped) - VS Code Test Coverage: 77 total tests passing (up from 63), no regressions
- Documentation Accuracy: Snapshot tests catch template/README divergence automatically
[0.3.0]
Added - Plan 014: Structured Conversation Summaries
- Conversation Summary Generation: Create structured summaries via
@flowbaby summarize this conversation- Adjustable turn count scope (default: last 15 turns)
- Interactive scope adjustment before generation
- LLM-powered summary extraction with Plan 014 schema
- User confirmation required before storage
- Enriched Summary Schema: Structured format with Topic, Context, Decisions, Rationale, Open Questions, Next Steps, References, and Time Scope
- Metadata-Rich Retrieval: Summaries include status badges (📋 Status, 📅 Created, 🏷️ Plan ID), structured content sections, and temporal awareness
- Mixed-Mode Support: Seamless handling of both enriched summaries (Plan 014+) and legacy raw-text memories
- In-Chat Help: Type
@flowbaby helpor invoke with no query to see usage guide - Bridge Contract Documentation:
DATAPOINT_SCHEMA.mdandRETRIEVE_CONTRACT.mddefine stable schemas for downstream consumers
Changed
- Retrieval Display: Now shows structured metadata badges and organized content sections for enriched summaries
- Python Bridge:
retrieve.pyreturns structured JSON with parsed metadata instead of raw text - CogneeClient:
retrieve()method returnsRetrievalResult[]with typed fields (topicId, status, createdAt, decisions, etc.)
Improved
- Summary Quality: Structured format improves retrieval precision by surfacing key decisions and rationale
- Temporal Context: Created timestamps enable recency-aware reasoning (foundation for Plan 015 ranking)
- Status Tracking: Active/Superseded status field enables decision lifecycle tracking (foundation for Plan 015 compaction)
- User Control: Explicit summary creation and confirmation flow ensures intentional memory capture
- Backward Compatibility: All legacy raw-text memories remain accessible; retrieval transparently handles both formats
Technical
- Enriched Text Storage: Summaries stored as markdown with embedded metadata per §4.4.1 (Cognee 0.3.4 constraint)
- Template Versioning:
<!-- Template: v1.0 -->tag enables future format migrations - Regex-Based Parsing: Deterministic section heading patterns for metadata extraction
- TypeScript Tests: 59/59 passing with updated RetrievalResult mocks
- Python Tests: 16/16 passing with enriched text formatting and contract validation
[0.2.3]
Fixed
- Display truncation in chat participant - users can now see full retrieved memory content (up to 2000 chars)
- Query logging truncation increased from 50 to 200+ characters for better debugging
- Ingestion timeout increased from 30s to 120s to reduce false-positive failures
- Error messages now distinguish timeout (may still succeed) from true ingestion failure
- Added comprehensive ingestion performance metrics (Python-side duration, step-level timing)
- Added process exit vs timeout logging for diagnosing bridge-level latency
Improved
- Transparent memory display with character count indicators aligns with discoverability goals (Epic 0.2.2.3)
- Clear truncation indication when memories exceed 2000 chars (shows "showing X of Y chars")
- Query length now shown in debug logs when queries exceed 200 chars
- Ingestion timeout errors now explain background processing may still succeed
- Extension logs include both Node-side and Python-side duration metrics for correlation
- Step-level metrics (load_env, init_cognee, config_llm, dataset_ontology, add, cognify) enable bottleneck identification
[0.2.2]
Fixed
- Display truncation in chat participant - users can now see full retrieved memory content (up to 2000 chars)
- Query logging truncation increased from 50 to 200+ characters for better debugging
Improved
- Transparent memory display with character count indicators aligns with discoverability goals (Epic 0.2.2.3)
- Clear truncation indication when memories exceed 2000 chars (shows "showing X of Y chars")
- Query length now shown in debug logs when queries exceed 200 chars
[0.2.1]
Breaking Changes
- Environment:
LLM_API_KEYis now required in workspace.env. Previously supportedOPENAI_API_KEYfallback removed to align with Cognee 0.4.0 conventions.
Fixed
- Ingestion failures and 30s timeouts caused by Cognee using site-packages storage instead of workspace-local directories
- Silent parameter fallback code that masked configuration errors
- File-not-found errors during ingestion due to cross-context storage mismatches
Changed
- All Cognee system and data directories now scoped to workspace (
.flowbaby/system/,.flowbaby/data/) - Removed fallback parameter retries; signature mismatches now surface as clear errors
- Enhanced error logging with structured details (exception type, parameters, context)
[0.2.0]
Added
- Debug Configuration: VS Code launch.json for F5 Extension Development Host debugging
- Visible Build Logging: esbuild now shows compilation progress and errors (logLevel: 'info')
- Developer Documentation: Enhanced SETUP.md and README.md with debugging workflow and troubleshooting guidance
Fixed
- Extension Activation Failure: Missing .vscode/launch.json prevented Extension Development Host from loading the extension
- Silent Build Errors: Build failures were hidden with logLevel: 'silent', now visible for rapid debugging
Implementation 008 Features (from v0.1.0 foundation)
Added
- Keyboard Shortcut Capture (Ctrl+Alt+C / Cmd+Alt+C): Selective conversation capture via keyboard shortcut + input box workflow
- @flowbaby Chat Participant: Explicit memory-augmented chat participant for context retrieval and informed responses
- Command Palette Capture: Alternative capture method via "Cognee: Capture to Memory" command
- Toggle Memory Command: Quick on/off toggle via "Cognee: Toggle Memory" command
- Clear Memory Command: Delete workspace memory via "Cognee: Clear Workspace Memory" command (with confirmation)
- OWL/Turtle Ontology: Chat-specific ontology file (
ontology.ttl) with 8 classes and 12 object properties for grounded entity extraction - Conversational Ingestion Format: Simplified natural prose format for better LLM extraction quality
- Step 6 Feedback Loop (Experimental): Optional automatic capture of @flowbaby conversations (disabled by default due to Cognee 0.4.0 bug)
- Graceful Degradation: Retrieval failures show warning but participant continues without context
- Configuration Setting:
Flowbaby.autoIngestConversationsfor experimental feedback loop control
Changed
- User Workflow: Shifted from automatic global capture to selective, user-controlled keyboard shortcut capture
- Participant Model:
@flowbabyrequires explicit invocation; no passive injection into other participants - Ontology Integration: Updated
ingest.pyto useontology_file_pathparameter with RDFLib validation and graceful fallback - Ingestion Format: Changed from bracketed metadata format to conversational prose for improved extraction
Improved
- Automatic Python Interpreter Detection: Extension now auto-detects workspace
.venvvirtual environment, eliminating need for manualFlowbaby.pythonPathconfiguration in most cases - Enhanced Error Messages: Python errors (missing packages, API key issues) now visible in Output Channel with actionable troubleshooting hints
- Workspace-Relative Execution: Bridge scripts run from workspace context for reliable path resolution
- Context Display: Retrieved memories formatted with clear markdown previews ("📚 Retrieved N memories")
- Performance Logging: Retrieval timing logged to Output Channel for monitoring (<1000ms P95 target)
- Error logs sanitize sensitive data (API keys, tokens) before display
- Configuration documentation clarifies when manual Python path setting is needed
- Structured error extraction from Python subprocess stdout
- Better diagnostics for missing dependencies and environment issues
Fixed
- Generic "exit code 1" errors replaced with specific failure reasons
- Missing
cogneepackage now clearly diagnosed instead of silent failure - Python interpreter mismatch no longer requires manual configuration for standard
.venvsetups - Keyboard shortcut comment typo in code (Ctrl+Shift+M → Ctrl+Alt+C)
Known Issues
- Cognee 0.4.0 File Hashing Bug: Intermittent ingestion failures for repeated identical content affect Step 6 auto-ingestion; workaround via
Flowbaby.autoIngestConversations=false(default) - Manual Capture Workflow: Keyboard shortcut requires copy-paste; cannot extract message from chat UI directly (VS Code API limitation)
- Explicit Participant Invocation: Must type
@flowbaby; cannot inject context into other participants (API limitation)
Technical Implementation
- 6-step participant flow: retrieval → format display → augment prompt → generate response → capture conversation (conditional)
- RDFLib ontology parsing with graceful fallback to no-ontology mode
- Asynchronous fire-and-forget ingestion (non-blocking)
- Comprehensive integration test suite (27 passing tests)
- VS Code Chat API v1.105+ compatibility
0.1.0
Added
- Initial release of Flowbaby extension
- Automatic capture of GitHub Copilot chat conversations
- Automatic context retrieval from Cognee memory before responses
- Workspace-isolated memory with separate knowledge graphs per workspace
- Chat-specific ontology defining User, Question, Answer, Topic, Concept, Problem, Solution, and Decision entities
- Hybrid graph-vector search combining relationship traversal with semantic similarity
- Recency and importance weighting for intelligent context relevance scoring
- Configurable settings:
Flowbaby.enabled- Toggle memory on/offFlowbaby.maxContextResults- Maximum results to retrieve (1-10)Flowbaby.maxContextTokens- Token budget for context (100-10000)Flowbaby.recencyWeight- Prioritize recent conversations (0-1)Flowbaby.importanceWeight- Prioritize marked conversations (0-1)Flowbaby.pythonPath- Custom Python interpreter pathFlowbaby.logLevel- Debug verbosity (error/warn/info/debug)
- Comprehensive integration test suite with 6 test cases
- Python bridge scripts for Cognee library communication
- Output Channel logging for debugging and monitoring
Technical Implementation
- Uses Cognee 0.3.4 with dataset-based logical isolation
- SHA1-hashed workspace identifiers for stable and unique dataset naming
- Global marker file pattern prevents data loss during concurrent initialization
- Stateless ontology configuration applied per ingestion operation
- TypeScript extension with Python subprocess bridge architecture
- esbuild-based compilation for optimized bundle size
Known Limitations
- Requires workspace folder (doesn't work in single-file mode)
- Currently captures conversations through Chat Participant API
- Python and Cognee must be installed separately (not bundled)
- First conversation in new workspace has no context (memory starts empty)
- macOS and Linux tested; Windows support may require additional configuration