Revision history for Nimala::Raku-LSP

1.0.0  2026-11-10T15:30:46+01:00
    - VS Code Extension Overhaul: Modular TypeScript architecture, native TestController with streaming TAP output parsing, LanguageStatusItem, snippets, tasks, Workspace Trust API integration, and single-file esbuild bundling (~305 KB VSIX)
    - Live RakuDoc & Pod6 Preview: Side-by-side synchronized live documentation preview with Pod::To::HTML detection, error diagnostics, and offline fallback
    - Companion Debug-Test CodeLens: Added debug-test lenses (▶ Debug All Tests, ▶ Debug Subtest) lazily resolving to nimala.debugTest
    - Dynamic File Watcher Registration: Watcher pattern covering all 10 Raku extensions (**/*.{raku,rakumod,rakutest,rakudoc,nqp,p6,pm6,pod6,t,t6}) with dynamic server capability negotiation
    - Security Advisory: Prominently documented across README, LSP guide, and extension documentation that LSP executes BEGIN blocks and use statements in opened files
    - MoarVM & Runtime Compatibility: Tested with Rakudo/MoarVM 2026.09; Rakudo 2024.07 runs with documented limitations (debug adapter may hit a MoarVM panic, RakuAST analysis misses signature parameters), resolved BreakpointRegistry and SourceLines symbol export collision
    - rakubrew: The MoarVM line-drift probe cache key honours RAKUBREW_VERSION instead of always using the global version
    - Test Suite Stability & Benchmarks: Resolved parallel test timing race conditions under CPU load (bounded-expression-eval, moarvm-variables, document-line-offsets)
    - Packaging & Distribution Hygiene: Hardened dist.ini pruning rules to exclude unneeded binary assets (Raku-LSP.jpeg), development documentation, and agent tooling from release tarballs

0.14.2  2026-11-03T17:24:00Z
    - Workspace Symbol Storage & Overlay: SQLite-backed SymbolDB with open-buffer overlay tables for instant symbol lookups and live unsaved edits
    - Parser & Worker Hardening: Tier 1 error tolerance on malformed constructs, asynchronous native worker RakuAST caching, and non-blocking diagnostics
    - Intelligence, Navigation & Completion: Hardened multi-phase type-aware completion pipeline, cursor context resolution, and cross-file references
    - Formatting & Refactoring: Hardened formatter, refactoring providers (extract method, inline variable, move symbol), semantic tokens delta synchronization, and inlay hints
    - Protocol & Lifecycle Concurrency: Repeated initialize request returns JSON-RPC error -32600 (InvalidRequest); pull-model workspace/configuration handling; owner-only log permissions (0700/0600)
    - Architecture & Test Hygiene: Removed dead in-process native tier (Nimala::Raku-LSP::Parser::Native, augment class Document); eliminated runtime Protocol::Types imports; converted fixed sleeps to deadline polling via WaitUntil

0.14.1  2026-10-27T20:00:00Z
    - DAP Session Actor Decomposition: Refactored monolithic Session actor by extracting Launcher, BreakpointRequests, and ClientCoordinates components with strict actor-confinement
    - Stop Lifecycle & Handle Ownership: Unified stop state ownership in Handles; single exit path via Stepping.leave-stop; atomic handle invalidation on resume or disconnect
    - Safe Remote Invocations & Budget: Enforced invoke gate with global per-stop invocation budget; retained timed-out asynchronous MoarVM invokes until resolution to prevent reply-order corruption
    - Client Protocol Completeness: Added support for loadedSources, modules, goto, readMemory, and disassemble for full client compatibility
    - Stepping & Scanning Performance: Optimized statement sweep stepping, probe key caching, and source lines inspection throughput
    - Debuggee Process & Terminal Console: Decoupled DebuggeeProcess lifecycle, added integrated terminal console support (runInTerminal), and enabled reverse requests
    - Wire Tracing & Error Visibility: Standardized error containment with Trace.attempt(), truthful thread resume reporting, and unified remote read caching

0.14.0  2026-10-20T13:30:00Z
    - DAP Protocol Completeness: Added support for setVariable, restartFrame, terminate, restart, pause, stepInTargets, gotoTargets, goto, modules, loadedSources, readMemory, disassemble, and completions
    - DAP Architecture & Decoupling: Refactored DAP server into modular actor components (Session, LaunchConfig, SourceLines, BreakpointRegistry, ThreadState, ThreadRegistry, StopHandler, ValueRenderer, Evaluator, and typed Remote client), fully decoupled from LSP runtime
    - DAP Execution & Stepping Control: Thread step context, caller escalation, concurrent stepOut escalation, sweep stepping across multi-threaded MoarVM targets, and exception breakpoints (setExceptionBreakpoints, exceptionInfo)
    - DAP Evaluation & Crash Safety: Hardened bounded expression parser with single-invoke protection, per-frame invoke caching, safe injected helper routines (_nimala_gist, _nimala_raku, _nimala_elems) with XDG-cache materialization, orphan process containment, and port collision retry
    - DAP Transport & Wire Optimization: Single-pass reply decoding, per-stop read caching, adaptive TCP_QUICKACK for large payloads, and cursor buffering
    - LSP Modularization & Concurrent Dispatch: Split monolithic LSP handler into dedicated roles (Lifecycle, Sync, Intelligence, Navigation, Hierarchy, Formatting, Refactoring, SemanticTokens, EditorFeatures, Diagnostics, CodeLens) with concurrent JSON-RPC dispatch, token-based cancellation, and workDoneProgress handshake
    - LSP Text Model & Immutable Snapshots: Introduced immutable Document snapshots for lock-free worker processing, UTF-16 byte buffer splicing, fast-path position conversion, and offloaded notification indexing
    - Isolated RakuAST Worker: Isolated native RakuAST parsing to an external worker subprocess shipped as a precompiled module (NativeWorker), guaranteeing non-blocking editor keystroke latency
    - Persistent Core Docs & References: Migrated bundled core documentation to SQLite (resources/core-docs.db), added SQLite-backed workspace symbol references indexing, and unified URI handling via Nimala::URI
    - Test Suite & Benchmark Modernization: Built deterministic MockMoarVM (port 0), relative timing bounds (HostTiming), real debuggees for semantic tests, unified TestClient across benchmarks and smoke tests, and pure-Raku benchmark tooling

0.13.0  2026-09-18T14:30:00Z
    - SQLite-Backed Symbol Storage: Unified SQLite database at .nimala/symbols.db (WAL mode) replacing in-memory RadixTree, IntervalTree, and legacy CBOR file caching (.nimala/cache/)
    - SQL-Indexed Range & Prefix Search: Substring and prefix symbol queries and range-based enclosing scope searches delegated directly to indexed SQL tables (symbols, vendor_symbols, files, role_consumers)
    - Out-of-Process Vendor Symbol Indexing: Vendor module symbols persisted directly into SQLite vendor_symbols table
    - Atomic Transactions & Schema Versioning: Immediate file-level update transactions with automatic invalidation and schema version checks
    - Dependencies: Added DBIish (with DBDish::SQLite), removed CBOR::Simple

0.12.0  2026-09-07T11:35:00Z
    - Scope/Routine Breakpoint Sweep Stepping: Statement-level breakpoint sweep stepping for DAP next and stepIn to guarantee line-accurate stepping under MoarVM bytecode instrumentation without line drift
    - MoarVM Line-Drift Feature Probe & Cache: Automated runtime detection probe for MoarVM bytecode drift with persistent disk caching (~/.cache/nimala/moarvm-features.json) and zero-overhead fallback
    - Injected Debug Helper Module: Nimala::Raku-DAP::InjectedHelper loaded via -M at debuggee launch with pre-warmed, exception-guarded routines (_nimala_gist, _nimala_raku, _nimala_elems) preventing instrumentation deadlocks
    - Safe Expression Invocations: Two-phase MoarVM Invoke (36) wire protocol support with strict routine whitelisting, enabling .gist, .Str, .raku, and .elems in DAP evaluate expressions and rich variable representation
    - Native MoarVM Remote Debug Protocol: Direct DAP-to-MoarVM wire protocol client communicating over TCP with 24-byte greeting handshake, pure-Raku MessagePack framing, and precompilation store linking
    - TCP Transport: Asynchronous TCP socket server with generic stream framing (Content-Length) for LSP and DAP connections alongside standard STDIO


0.11.0  2026-09-02T10:45:00Z
    - Dynamic Multi-Root Workspace: workspace/didChangeWorkspaceFolders notification handling with dynamic folder addition, asynchronous background indexing, path-based index pruning, and duplicate workspace root prevention
    - Bidirectional Progress Notifications: $/progress client-to-server notification handling with token-based active progress registry, atomic cancel tokens, and reactive $.progress-supply event stream
    - RAII Progress Management: ProgressScope class for automatic, thread-safe work-done progress lifecycle handling, percentage calculation, and resource cleanup
    - Client Progress Helper API: progress-begin, progress-report, progress-end, and create-work-done-progress convenience methods on Nimala::Raku-LSP::Client
    - LSP 3.18 Useful Milestone Complete: Achieved 100% full implementation coverage across all "Very Useful" and "Useful" LSP 3.18 specification methods (72/88 methods implemented)


0.10.0  2026-09-01T22:35:00Z
    - Inline Completion: textDocument/inlineCompletion for LSP 3.18 multi-line ghost-text suggestions (control flow, routines, classes, Pod6 docs, and test blocks) with automatic indentation alignment
    - Workspace Configuration: workspace/didChangeConfiguration notification handling with centralized dot-path query resolver (get-config), initializationOptions seeding, and debounced refresh triggering
    - Lazy Refactoring Resolution: codeAction/resolve for on-demand calculation of workspace edits (extract method/variable/constant, convert to postfix if, inline variable, generate accessor, and implement role methods)
    - Server-Initiated Refreshes: workspace/inlineValue/refresh notification dispatch on project index changes

0.9.0  2026-08-31T15:00:00Z
    - LSP 3.17+ / 3.18 Pull Diagnostics: textDocument/diagnostic, workspace/diagnostic, and workspace/diagnostic/refresh with in-memory resultId delta-caching
    - Server-initiated refresh batching: workspace/codeLens/refresh, workspace/inlayHint/refresh, workspace/semanticTokens/refresh, workspace/foldingRange/refresh (500ms debounced)
    - Interactive client dialogs & navigation: window/showMessageRequest (action buttons) and window/showDocument (editor file focus and docs.raku.org browser links)
    - Inline Values: textDocument/inlineValue for live debugger evaluation (lexical variables, attributes, and safe parameterless methods)
    - Linked Editing Range: textDocument/linkedEditingRange for synchronized editing of Pod6 blocks, heredoc terminators, and loop labels

0.8.0  2026-08-30T12:00:00Z
    - 2-phase CodeLens support: textDocument/codeLens and codeLens/resolve for workspace references, role implementations, and test runners
    - Request & progress cancellation: thread-safe CancellationToken, $/cancelRequest returning -32800, and window/workDoneProgress/cancel
    - Hybrid reference search: in-memory RadixTree pre-filtering with parallel AST resolution
    - MOP-based vendor module indexing: dynamic symbol and routine discovery for installed dependencies
    - Deep method chaining & generic unwrapping: type inference through chained calls (Array[T], Hash[K,V], Promise[T])
    - Asynchronous background indexing: non-blocking workspace scanning with progress reporting and bundled offline core POD documentation
    - UTF-16 code units & binary search line index: precise cursor positioning for emojis and multi-byte surrogate pairs
    - Hardened protocol integrity & diagnostics safety: STDIO chunked streaming, stdout leak isolation, and 5s timeout guard for syntax checks

0.7.0  2026-08-27T12:00:00Z
    - Protocol types upgrade: automated generation from official LSP 3.18 metaModel schema
    - Function breakpoints: DAP named function breakpoints with condition evaluation (setFunctionBreakpoints)

0.6.0  2026-08-26T12:00:00Z
    - Document links: textDocument/documentLink for module use/need imports and web documentation URLs

0.5.0  2026-08-09T12:00:00Z
    - InlayHint documentation: dynamic markdown resolution via inlayHint/resolve
    - Declaration navigation: textDocument/declaration support
    - Module completion: path auto-completion inside use and need statements
    - Grammar enhancements: parser support for 'also is' / 'also does' traits and regex character classes (<[...]>)
    - Self resolution in roles: accurate symbol and type resolution for self inside composed roles
    - Architecture: explicit dependency injection across handler roles

0.4.0  2026-08-02T12:00:00Z
    - 4-phase completion pipeline: MRO depth tagging (00_..06_), type-aware filtering, and Any fallback
    - Namespace & metaclass completion: relative namespace labels (A::B::) and .^ metaclass method completion
    - Hover documentation: MRO-based POD extraction and #| doc-comment support
    - Type definition & implementation: textDocument/typeDefinition (with docs.raku.org integration) and textDocument/implementation for roles/classes
    - Document highlight: textDocument/documentHighlight for scoped identifier occurrences
    - Loop parameter type inference: inferred types for for-loop iteration variables

0.3.0  2026-08-01T12:00:00Z
    - Completion quality improvements: scope-aware ranking, deduplication, and filtering
    - Method return type inference: automatic deduction of return types for routine declarations
    - Debounce synchronization: explicit synchronization hooks for index update debouncing
    - DAP stability: thread-safe socket timing and lock stabilization for debugger sessions

0.2.0  2026-07-29T12:00:00Z
    - Persistent CBOR caching: high-performance index and AST serialization in .nimala/cache/
    - DAP enrichment proxy: sequence partitioning, debug-hook state machine, and frame variable scoping

0.1.0  2026-07-25T12:00:00Z
    - Formatting capabilities: textDocument/rangeFormatting and textDocument/onTypeFormatting
    - Selection range: textDocument/selectionRange hierarchical expansion (word -> expression -> statement -> block -> symbol)

0.0.1  2026-07-04T12:00:00Z
    - Initial release
