fix: resolve 4 high-impact issues — closure capture, unwrap safety, L…#2
Merged
Merged
Conversation
…SP, formatter - Fix BUG-005: mutable closure capture now works correctly. Lambda closures use Arc<Mutex<Environment>> so mutations persist across calls (e.g., counters, accumulators). Previously all calls saw the original snapshot. - Harden time.rs: replace 17 unwrap() calls on chrono's and_hms_opt/ from_ymd_opt with proper error propagation via ok_or_else(). Prevents panics on edge-case date/time inputs in production paths. - Fix LSP hover: the documentation map was built but never used — the function always returned a generic string. Now reads the document, extracts the word under cursor, and returns matching builtin/module docs. Added 80+ hover entries covering all builtins, modules, and GenZ kit. - Fix LSP completions: added missing modules (npc, jwt, mysql, exec) and 50+ missing functions across fs, time, math, io, term, db modules. - Upgrade formatter: fix brace-counting-in-strings bug that could corrupt indentation. Now uses string/comment-aware brace counting. Added --check flag for CI (exit code 1 if unformatted). Added 7 new tests. All tests pass: 584 Rust tests, 600 Forge integration tests. https://claude.ai/code/session_01QjYU96i7h5vUizDu6L5ZAj
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 595d862993
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…et indentation
P1: LSP hover now reads from the in-memory document store (populated by
didOpen/didChange) instead of always reading from disk. This ensures hover
works correctly on unsaved editor buffers. Falls back to disk for files
not yet opened in the editor.
P2: Formatter count_braces now includes [ and ] alongside { and }, fixing
a bug where lines starting with ] produced negative trailing_closes
(closes=0 minus leading_closes=1 = -1), causing indent to increase instead
of decrease.
https://claude.ai/code/session_01QjYU96i7h5vUizDu6L5ZAj
3 tasks
This was referenced Apr 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…SP, formatter
Fix BUG-005: mutable closure capture now works correctly. Lambda closures use Arc<Mutex> so mutations persist across calls (e.g., counters, accumulators). Previously all calls saw the original snapshot.
Harden time.rs: replace 17 unwrap() calls on chrono's and_hms_opt/ from_ymd_opt with proper error propagation via ok_or_else(). Prevents panics on edge-case date/time inputs in production paths.
Fix LSP hover: the documentation map was built but never used — the function always returned a generic string. Now reads the document, extracts the word under cursor, and returns matching builtin/module docs. Added 80+ hover entries covering all builtins, modules, and GenZ kit.
Fix LSP completions: added missing modules (npc, jwt, mysql, exec) and 50+ missing functions across fs, time, math, io, term, db modules.
Upgrade formatter: fix brace-counting-in-strings bug that could corrupt indentation. Now uses string/comment-aware brace counting. Added --check flag for CI (exit code 1 if unformatted). Added 7 new tests.
All tests pass: 584 Rust tests, 600 Forge integration tests.
https://claude.ai/code/session_01QjYU96i7h5vUizDu6L5ZAj
Summary
What does this PR do?
Changes
Testing
cargo testpassesforge testpassesRelated Issues
Closes #