-
Notifications
You must be signed in to change notification settings - Fork 1
Phase 4: Security, Architecture, and Enhanced Examples #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
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
…anced examples - Add SECURITY.md with vulnerability reporting policy (GitHub Advisories + email, 48h response, coordinated disclosure) - Add documentation linting CI (.github/workflows/docs-lint.yml) with markdownlint and link checking - Add docs/ARCHITECTURE.md (917 lines) with compiler pipeline, runtime execution, Godot integration, and extension points - Add comprehensive example tutorials: - examples/hello/README.md (211 lines) - Basic FerrisScript, _ready() hook, print function - examples/move/README.md (308 lines) - Delta time, framerate independence, self.position access - examples/bounce/README.md (503 lines) - Global variables, mutability, conditionals, state management - Update README.md with dedicated Examples section linking to tutorials - Update CHANGELOG.md with Phase 4 deliverables - Add docs/PHASE_4_COMPLETION_REPORT.md with metrics, time tracking, and learnings Total: 2,207+ lines added across 10 files Achieves: 100% GitHub Community Standards (adds SECURITY.md)
- Remove duplicate ARCHITECTURE.md from root (keep only in /docs per DOCUMENTATION_ORGANIZATION.md) - Update all references to point to docs/ARCHITECTURE.md - Fix VERSION_PLANNING.md links to use relative paths from /docs - Clarify in hello example that 'cargo run --example hello' doesn't work - Update to use 'cargo test --package ferrisscript_compiler test_compile_hello' instead - Add explanation that .ferris files are scripts, not Rust examples - Update Phase 4 completion report with fixes and correct validation commands
Owner
Author
|
@copilot Are you able to resolve the documentation linting issues that are fixable and leaving anything that needs user interaction? |
Copilot AI
added a commit
that referenced
this pull request
Oct 2, 2025
Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com>
Copilot AI
added a commit
that referenced
this pull request
Oct 2, 2025
Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com>
…ting issues (#4) * Initial plan * Fix documentation linting errors - add blank lines around lists, headings, and code blocks Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Add documentation linting fixes summary Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Update DOCS_LINT_FIXES with instructions for applying to PR #3 Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Add comprehensive guide for applying linting fixes to PR #3 Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Fix markdown linting errors in documentation files Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Add comprehensive task completion summary Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Add branch documentation and final summary Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Clean up markdown formatting in documentation files Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> * Fix all remaining markdown linting errors except 404s - Fixed MD029: Indented code blocks to keep them part of list items - Fixed MD036: Converted emphasis to proper headings or plain text - Fixed MD056: Added missing table columns for section headers - All markdown linting errors now resolved (0 errors) Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: dev-parkins <6394929+dev-parkins@users.noreply.github.com>
- Fix broken link in examples/hello/README.md (LANGUAGE_REFERENCE.md -> ARCHITECTURE.md) - Add package.json with npm scripts for documentation linting - Add scripts/lint-docs.ps1 for PowerShell-based linting - Add .vscode/tasks.json with 6 documentation tasks + 2 cargo tasks - Add scripts/README.md documenting all linting options - Update .gitignore to exclude node_modules - Update PHASE_4_COMPLETION_REPORT.md with post-PR fixes section Enables developers to run CI checks locally before pushing: - npm run docs:check (full validation) - .\scripts\lint-docs.ps1 (PowerShell) - VS Code tasks via Ctrl+Shift+P This addresses CI link check finding 1 broken link and provides requested local tooling for documentation quality assurance.
…inting issues - Add CONTRIBUTING.md section on documentation quality checks - Add DEVELOPMENT.md section on pre-commit documentation validation - Create scripts/pre-push.ps1 for optional git pre-push hook - Create scripts/install-git-hooks.ps1 for easy hook installation - Fix all remaining markdownlint issues (bug_report.md, PULL_REQUEST_TEMPLATE.md) - Update package.json with cross-platform npm scripts - Update scripts/README.md to reflect simplified npm commands - Auto-fix markdown formatting across all documentation Benefits: - Developers can catch doc issues before pushing (saves CI time) - Optional pre-push hook validates markdown when .md files change - Clear documentation on how to run checks locally - All markdown now passes markdownlint validation - Consistent formatting across entire documentation Run locally with: npm run docs:lint (check formatting) npm run docs:fix (auto-fix issues) .\scripts\lint-docs.ps1 (full validation with links)
Link Fixes: - Fix FAQ.md relative link to PULL_REQUEST_TEMPLATE.md (../.github/ path) - Fix VERSION_PLANNING.md roadmap link (docs/v0.1.0-ROADMAP.md -> v0.1.0-ROADMAP.md) Cross-Platform Support: - Add scripts/lint-docs.sh (bash version of PowerShell script) - Add scripts/pre-push.sh (bash pre-push hook) - Add scripts/install-git-hooks.sh (bash installer) - Update lint-docs.ps1 with verbose link checking output Features of bash scripts: - Full parity with PowerShell versions - Verbose output showing which files are checked - Dead link detection and reporting - File count statistics - Proper exit codes - --fix flag support - Error handling and graceful degradation Documentation: - Add DOCS_LINTING_SUMMARY.md (comprehensive guide) All scripts now work on: - Windows (PowerShell) - Linux/macOS (bash) - Git Bash on Windows (bash) CI link check should now pass with 0 errors.
- Enhanced PowerShell lint script to properly detect errors - Fixed output string handling for pattern matching - Now detects both [✖] and ERROR: patterns correctly - Updated .markdown-link-check.json ignore patterns - Added mailto: (can't be verified) - Added GitHub settings URLs (require authentication) - Added shields.io status page (CORS issues) - Fixed relative path errors (6 files, 7 links): - docs/DEVELOPMENT.md: 2x ARCHITECTURE.md (removed ../) - docs/ARCHITECTURE.md: 1x CONTRIBUTING.md (added ../) - docs/archive/v0.0.1/RELEASE_NOTES_v0.0.1.md: 3x root files (added ../../../) - examples/bounce/README.md: 2x docs (updated to v0.1.0-ROADMAP.md) - examples/move/README.md: 2x docs (updated to v0.1.0-ROADMAP.md) - Auto-fixed markdown formatting in DOCS_LINT_FINAL_STATUS.md Result: All 53 markdown files pass both markdownlint and markdown-link-check Local linting now matches CI behavior exactly
dev-parkins
added a commit
that referenced
this pull request
Oct 3, 2025
- Marked all Phase 4 documentation items as complete (PR #3) - Community docs: CONTRIBUTING, CODE_OF_CONDUCT, templates - User docs: FAQ, TROUBLESHOOTING - Security: SECURITY.md - Architecture: ARCHITECTURE.md - Examples: Enhanced tutorials - Linting: Documentation CI integration - Marked clippy warning fix as complete
dev-parkins
added a commit
that referenced
this pull request
Oct 3, 2025
* fix: resolve clippy collapsible_match warning in runtime - Collapsed nested if let statements in lib.rs:405 - Removed temporary documentation file (TASK_COMPLETE_SUMMARY.md) - All tests passing (96 tests) - Clippy clean with -D warnings * docs: update v0.0.2 checklist to mark Phase 4 complete - Marked all Phase 4 documentation items as complete (PR #3) - Community docs: CONTRIBUTING, CODE_OF_CONDUCT, templates - User docs: FAQ, TROUBLESHOOTING - Security: SECURITY.md - Architecture: ARCHITECTURE.md - Examples: Enhanced tutorials - Linting: Documentation CI integration - Marked clippy warning fix as complete * docs: add development learnings and best practices - Captured clippy warning resolution insights - Documented Phase 4 completion summary - Added project structure organization rules - Included development commands reference - Established versioning strategy notes This document serves as a living record of development insights. * fix: correct tarpaulin timeout format Changed timeout from integer 300 to duration string '5m' to match tarpaulin's expected configuration format * feat: add test coverage infrastructure - Added tarpaulin.toml configuration - Configured HTML, LCOV, and stdout reports - Created coverage scripts (PowerShell and Bash) - Added coverage outputs to .gitignore - Target: 80% coverage for v0.0.2 Note: cargo-tarpaulin installation in progress * docs: migrate from tarpaulin to llvm-cov for coverage - Added COVERAGE_SETUP_NOTES.md documenting Windows file locking issues - Updated coverage scripts to use cargo-llvm-cov instead of tarpaulin - llvm-cov provides better Windows compatibility - Both PowerShell and Bash scripts updated - Installation of llvm-tools-preview and cargo-llvm-cov in progress * docs: add comprehensive test coverage analysis - Created TEST_COVERAGE_ANALYSIS.md with manual gap analysis - Identified 96 existing tests across workspace - Documented 10 high-priority test gaps to address - Listed 8 medium and multiple low-priority improvements - Estimated current coverage at 65-70% line coverage - Updated LEARNINGS.md with coverage tooling challenges - Documented that coverage tools have Windows compatibility issues - Plan: Manual analysis locally, tarpaulin in Linux CI Target for v0.0.2: 80% line coverage via edge case testing * test: add 20 high-priority edge case tests Added comprehensive edge case tests based on manual coverage analysis: Lexer Tests (10 new, all passing): - Comments-only files - Large numbers (max/min/small values) - Very long identifiers (1000 chars) - Unicode identifiers - Mixed comments and code - Empty string literals - Multiple dots (potential float parsing edge case) - Consecutive operators Runtime Tests (10 new, all passing): - Division by zero (documents current behavior) - Integer overflow handling (large arithmetic) - Deeply nested expressions (100 levels) - Recursion depth (100 levels with countdown) - Short-circuit AND evaluation - Short-circuit OR evaluation - Variable shadowing (function-level) - Empty function bodies - Early returns from nested blocks - Large arrays of expressions (50 statements) Test Coverage Impact: - Total tests: 96 → 116 (+20, +20.8%) - All new tests passing - Estimated coverage improvement: +5-10% line coverage - Tests document current runtime limitations and behaviors Discoveries from testing: - Large integer literals parsed as f32 (lexer limitation) - Bare blocks {} not yet supported in parser - Global mutable variables need more work - Division by zero produces undefined behavior (not proper error) - Recursion works well up to 100+ levels - Deep expression nesting handled correctly These tests establish baseline behavior and identify areas for future improvement in error handling and edge case support. * docs: document edge case testing insights in LEARNINGS.md Added detailed section on edge case test implementation covering: - Lexer limitations (large literal parsing as f32) - Parser limitations (no bare block support) - Runtime behavior discoveries (division by zero, overflow) - Global mutable variable limitations - Runtime strengths (deep nesting, recursion) - Testing strategy insights These learnings will guide future improvements to error handling, lexer refinement, and parser feature additions. * perf: add criterion benchmarks and establish baseline metrics Added comprehensive benchmarking infrastructure using criterion.rs: Compiler Benchmarks: - Lexer: 384 ns (small) to 3.74 μs (large) - Parser: 600 ns (small) to 7.94 μs (large) - Type checker: 851 ns (small) to 3.58 μs (medium) - Full pipeline: ~3.6 μs for medium function Runtime Benchmarks: - Simple arithmetic: ~1.05 μs per function call - Control flow (if/else): ~1.31 μs - Loop iterations: ~180 ns per iteration (steady-state) - Recursion: ~925 ns per call (consistent across depths) - Variable operations: ~370-510 ns per operation - Integer arithmetic: ~850 ns per operation - Float arithmetic: ~830 ns per operation - Boolean logic: ~450 ns per operation Performance Analysis: - Compilation: ~278K functions/sec - Execution: ~16K function calls per frame at 60 FPS - Scaling: Linear across all components - Bottleneck: Function call overhead (~1 μs) Documentation: - Created BENCHMARK_BASELINE.md with detailed metrics - Includes performance summary and optimization targets - Documents reproducibility and future optimization plans - Provides Godot integration performance considerations Verdict: Current performance is excellent for game scripting workloads. Over 16,000 function calls per frame at 60 FPS is more than sufficient for typical Godot 4 scripting scenarios. * docs: update v0.0.2 checklist with code quality completion Marked completed items from feature/code-quality-improvements: Testing: - ✅ Manual test coverage analysis (TEST_COVERAGE_ANALYSIS.md) - ✅ 20 new edge case tests (96 → 116 tests, +20.8%) - ✅ Coverage improvement: 65-70% → 70-75% estimated - ✅ Documented Windows coverage tooling challenges Performance: - ✅ Criterion benchmarks for all compiler + runtime components - ✅ Baseline metrics established (BENCHMARK_BASELINE.md) - ✅ Performance analysis: 16K+ calls/frame at 60 FPS - ✅ Identified optimization targets Next steps: - CI-based coverage reporting (Linux tarpaulin) - Continue toward 80%+ coverage - Profile and optimize hot paths * docs: comprehensive coverage documentation and checklist updates
dev-parkins
added a commit
that referenced
this pull request
Oct 5, 2025
Complete v0.0.2 changelog following Keep a Changelog format: Added: - Community infrastructure (CONTRIBUTING, CODE_OF_CONDUCT, templates) - Enhanced error messages (38 errors with context, hints, suggestions) - Test coverage expansion (96→116 tests, 70-75% coverage) - API documentation (395+ lines of rustdoc) - GitHub project setup (labels, badges, branch protection) - VS Code syntax highlighting (TextMate grammar, 11 snippets) - Comprehensive testing guide (655 lines) - Version planning (v0.0.3-v0.1.0 roadmaps) - Development scripts (coverage.sh, coverage.ps1) - 10,000+ lines of documentation across 50+ files Changed: - Issue template clarifications - README updates (test count, coverage metrics) - Clippy compliance (zero warnings) Fixed: - Installation instructions (case-sensitive paths) - README corruption (removed 255 duplicate lines) - Documentation linting (100% resolution) - Dead links in syntax highlighting docs PRs: #3-19 (17 PRs merged) Deferred items documented in V0.0.2_DEFERRAL_ANALYSIS.md
dev-parkins
added a commit
that referenced
this pull request
Oct 5, 2025
* docs: Create v0.0.2 deferral analysis - Systematic review of 47 incomplete checklist items - Defer 12 items to v0.0.3 (Editor Experience) - Defer 8 items to v0.0.4 (Godot API Expansion) - Defer 27 items to v0.0.5+ (Long-term improvements) - Document rationale and version alignment for each item Reference: docs/v0.0.2/V0.0.2_DEFERRAL_ANALYSIS.md * docs: Add comprehensive v0.0.2 CHANGELOG entry Complete v0.0.2 changelog following Keep a Changelog format: Added: - Community infrastructure (CONTRIBUTING, CODE_OF_CONDUCT, templates) - Enhanced error messages (38 errors with context, hints, suggestions) - Test coverage expansion (96→116 tests, 70-75% coverage) - API documentation (395+ lines of rustdoc) - GitHub project setup (labels, badges, branch protection) - VS Code syntax highlighting (TextMate grammar, 11 snippets) - Comprehensive testing guide (655 lines) - Version planning (v0.0.3-v0.1.0 roadmaps) - Development scripts (coverage.sh, coverage.ps1) - 10,000+ lines of documentation across 50+ files Changed: - Issue template clarifications - README updates (test count, coverage metrics) - Clippy compliance (zero warnings) Fixed: - Installation instructions (case-sensitive paths) - README corruption (removed 255 duplicate lines) - Documentation linting (100% resolution) - Dead links in syntax highlighting docs PRs: #3-19 (17 PRs merged) Deferred items documented in V0.0.2_DEFERRAL_ANALYSIS.md * build: Update all crates to version 0.0.2 - Workspace root: 0.0.1 → 0.0.2 - ferrisscript_compiler: 0.0.1 → 0.0.2 - ferrisscript_runtime: 0.0.1 → 0.0.2 - ferrisscript_godot_bind: 0.0.1 → 0.0.2 Prepares for v0.0.2 release * docs: Add v0.0.2 release notes User-facing summary highlighting: - Enhanced error messages (38 errors with context/hints) - VS Code syntax highlighting extension - Comprehensive testing guide (655 lines) - Community infrastructure (CONTRIBUTING, CODE_OF_CONDUCT, templates) - API documentation (395+ lines rustdoc) - Improved test coverage (116 tests, 70-75%) Includes upgrade guide and metrics summary * docs: Document platform and type system validation Windows validation complete: - ✅ All 116 tests passing - ✅ Clippy clean (0 warnings) - ✅ Clean build across all crates - ✅ 31 type checker tests passing Type system assessment: - ✅ Robust basic type checking - ✅ Excellent error messages (38 enhanced) -⚠️ 1 known limitation (return type inference - deferred to v0.0.3) Cross-platform status: - Windows: ✅ Validated - Linux/macOS:⚠️ Will validate via CI (low risk) Tasks 7 & 8 complete * docs: Archive v0.0.2 phase-specific documentation Moved to docs/archive/v0.0.2/: - Planning docs (roadmap, checklist, status reconciliation) - Phase completion reports (Phases 2-5C) - Execution plans (error messages, edge cases) - Technical analyses (deferral, validation, benchmarks, coverage) - Workflow documents (quick-start, documentation workflow) Kept in docs/v0.0.2/: - TESTING.md (evergreen reference for future versions) Organizational benefits: - Clean repository structure - Clear separation of historical vs. reference docs - Positions for v0.0.3 development - Maintains historical record for retrospectives Archive includes comprehensive README documenting v0.0.2 achievements * docs: Document v0.0.3 branching strategy and CI optimization Added to v0.0.3-roadmap.md (new section: Development Workflow): Branching Strategy: - Staged workflow: feature → develop → main - Protected branches with clear PR flow - Integration testing on develop before production - Batch releases for better organization CI Optimization: - Full CI on main/develop only - Minimal CI on feature branches (lint + unit tests) - Manual trigger available when needed - Path filters for docs-only changes Expected Benefits: - 60-95% CI time savings (depending on change type) - 70% cost reduction in CI minutes - Faster feedback (2-3 min vs 10-15 min) - Better integration testing before production Migration Plan: - Phase 1: Setup (with first v0.0.3 feature) - Phase 2: Adoption (throughout v0.0.3) - Phase 3: Optimization (end of v0.0.3) Developer Experience: - Clear workflow examples - Faster PR checks - Easier to understand contribution flow * docs: Fix markdown linting issues in RELEASE_NOTES.md Auto-fixed with markdownlint --fix: - Added blank lines around fenced code blocks - Added blank lines around headings - Added blank lines around lists All markdown linting now passes for RELEASE_NOTES.md * docs: Document Phase 6 quality check results All quality gates passed: - ✅ 116 tests (200 assertions) all passing - ✅ Clippy clean (0 warnings) - ✅ All crates build successfully (v0.0.2) - ✅ Code formatting correct - ✅ Documentation linting clean Quality Score: 10/10 Release Readiness: APPROVED ✅ Task 11 complete * docs: Add release tag and GitHub release instructions Comprehensive guide for user after PR merge: Step-by-step process: 1. Update local repository 2. Create annotated git tag (v0.0.2) 3. Push tag to remote 4. Create GitHub release (CLI or web interface) 5. Verify release page 6. Optional post-release actions Includes: - PowerShell commands for Windows - Troubleshooting section - Timeline estimates (10-15 minutes) - Verification checklist - Notes on artifacts and versioning Task 12 complete * docs: Mark v0.0.2 complete in planning documentation Updates to docs/planning/README.md: v0.0.2 section: - Status: ✅ COMPLETE (100%) - Released: January 5, 2025 - Final metrics added (17 PRs, 116 tests, 70-75% coverage) - Archive location noted - All deliverables marked complete v0.0.3 section: - Marked as 🔜 NEXT - Status: 🟢 READY TO START - Prerequisites satisfied (v0.0.2 complete) - Added branching strategy and CI optimization deliverables Header updated: - Last Updated: January 5, 2025 - Current Status summary added (v0.0.1, v0.0.2 released) Task 13 complete * docs: Add Phase 6 comprehensive summary Complete Phase 6 Release Preparation & v0.0.2 Closeout summary: Executive Summary: - v0.0.2 fully prepared for release - 100% quality gate compliance - All closeout activities complete Deliverables: 1. Core release prep (versions, CHANGELOG, RELEASE_NOTES) 2. Quality validation (Windows validated, all tests passing) 3. v0.0.2 closeout (deferral analysis, archival) 4. v0.0.3 preparation (branching strategy, CI optimization) 5. Release instructions (tag creation guide) Metrics: - 11 commits in Phase 6 - 6 new files created - 5 files modified (CHANGELOG +276, RELEASE_NOTES +143) - 30+ files archived - 4-5 hours duration Learnings: - Systematic deferral framework - Documentation archival strategy - Proactive v0.0.3 planning - Grouped commits for single PR Next Steps: - User: Merge PR, create release tag, GitHub release - v0.0.3: Setup develop branch, CI optimization, start development Task 14 complete - Phase 6 COMPLETE ✅ * docs: Fix markdown linting in deferral analysis Renumbered all list items to start from 1 in each section: - Bug Fixes & Edge Cases (9 items) - Documentation Improvements (2+2 items) - Code Quality (2+7 items) - Tooling Improvements (5 items) - Release Preparation (7 items) - GitHub Project Management (5+6 items) Resolves 46 MD029/ol-prefix errors * docs: Fix broken links after archival Updated links in docs/planning/README.md and docs/v0.0.2/README.md to point to archived documents: - v0.0.2-roadmap.md → ../archive/v0.0.2/planning/v0.0.2-roadmap.md - Phase completion reports → ../archive/v0.0.2/phases/PHASE_* All links now resolve correctly * fix: Update compiler benchmarks for current API Updated all parser::parse() and type_checker::check() calls to include the source parameter required by the current API: - parser::parse(&tokens, source) - type_checker::check(&ast, source) All benchmarks now compile and run correctly with v0.0.2 API * docs: Clarify purpose of v0.1.0 planning documents Added cross-references and purpose statements to distinguish: - v0.1.0-ROADMAP.md: Comprehensive feature specification - v0.1.0-release-plan.md: Final release execution plan These documents are complementary, not duplicates. Prevents documentation drift by clarifying distinct roles. * docs: Add spacing for improved readability in release preparation and quality check documents * docs: Address PR review comments - Fix all date references from January 5, 2025 to October 5, 2025 - Add version/roadmap tracking to PLATFORM_AND_TYPE_SYSTEM_VALIDATION.md recommendations - Add integration status note to V0.0.2_DEFERRAL_ANALYSIS.md - Clarify that deferral analysis is the authoritative source for tracking Resolves all PR comments about dates and feature tracking * docs: Fix broken links after docs/v0.0.2 directory removal - Fixed EDGE_CASE_ERROR_HANDLING_PLAN.md link in examples/README.md (→ archive/phases/) - Fixed v0.0.2-CHECKLIST.md link in docs/planning/README.md (→ archive/) - Fixed TEST_COVERAGE_ANALYSIS.md and BENCHMARK_BASELINE.md links (→ archive/) - Updated TESTING.md references to point to CONTRIBUTING.md after deletion - Updated CHANGELOG.md references to use archive paths - Fixed VERSION_PLANNING.md references to use archive paths - Updated scripts/README.md BENCHMARK_BASELINE.md link All documentation now correctly references archived v0.0.2 files. Resolves CI markdown link check failures. * docs: Integrate v0.0.2 deferred items into roadmaps - Add v0.0.3 deferred items: Testing edge cases, documentation improvements, code quality, CI/CD enhancements, tooling, GitHub project management, and Godot console colorization - Add v0.0.4 deferred items: GODOT_INTEGRATION.md, UI screenshots, end-to-end tests, GDScript performance comparison - Add v0.0.5 deferred items: Type system improvements, testing/coverage goals, CI enhancements, release automation, community features - Add v0.0.6 deferred items: Performance optimization (memory leaks, variable lookup, profiling, bottlenecks), property-based testing - Add v0.1.0 deferred items: Error recovery, unicode identifiers policy, GitHub Projects/Sponsors, security infrastructure (CodeQL, dependency scanning) Resolves PR #20 comment about roadmap integration. All 47 deferred items from V0.0.2_DEFERRAL_ANALYSIS.md are now explicitly tracked in appropriate version roadmaps.
dev-parkins
added a commit
that referenced
this pull request
Oct 7, 2025
Implement fixes for three issues discovered during manual testing: **Issue #1 - Statement Keywords in Expression Context (FIXED)** - Problem: Statement-only keywords (fn, let, while, return) were appearing in expression context where they are syntactically invalid - Solution: Added filtering in provider.ts to exclude statement-level keywords from expression completions - File: extensions/vscode/src/completion/provider.ts - Test: Test 5 - Context-Aware Completion **Issue #2 - Boolean Literal Filtering (DOCUMENTED)** - Problem: User expected 'false' when typing 'tr' - Solution: This is correct VS Code behavior (prefix filtering). Updated documentation to clarify expected behavior. - File: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md - Test: Test 7 - Boolean Literal Completion **Issue #3 - Type Completion After Typing Characters (FIXED)** - Problem: No type completions when typing 'let pos: V' (types only showed immediately after colon) - Solution: Updated context detection regex from /:\s*$/ to /:\s*\w*$/ to handle partial type names - File: extensions/vscode/src/utils/context.ts - Test: Test 10 - Godot Type Completion **Documentation Added**: - PHASE_4_TESTING_ANALYSIS.md: Detailed analysis of all three issues - PHASE_4_FIXES_VALIDATION.md: Quick validation guide for testing fixes - Updated PHASE_4_MANUAL_TESTING.md: Corrected expected results **Validation**: Extension compiles successfully. Ready for manual testing. Related: PR #37
dev-parkins
added a commit
that referenced
this pull request
Oct 8, 2025
* feat(vscode): Add code completion provider for FerrisScript (Phase 4)
Implement context-aware completion for keywords, types, and functions in VS Code extension.
Features:
- Keyword completion: let, mut, fn, if, else, while, return, true, false
- Type completion: i32, f32, bool, String, Vector2, Node, void
- Function completion: print with parameter hints
- Context-aware suggestions:
- Type position (after ':') shows only types
- Statement start shows statement-level keywords
- Expression context shows all keywords + functions
- Snippet support for structured code insertion
Technical Implementation:
- TypeScript-based extension infrastructure (tsconfig, npm scripts)
- CompletionItemProvider using VS Code API
- Regex-based context detection
- Comprehensive documentation with examples
- Manual testing guide for validation
Documentation:
- PHASE_4_VS_CODE_COMPLETION.md: Full implementation plan
- PHASE_4_MANUAL_TESTING.md: Testing guide with 10 test scenarios
- Extension README and CHANGELOG updated
- v0.0.3 roadmap documents aligned
- LEARNINGS.md updated with Phase 4 insights
References:
- Phase 4 Document: docs/planning/v0.0.3/PHASE_4_VS_CODE_COMPLETION.md
- Testing Guide: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Roadmap: docs/planning/v0.0.3/README.md
- v0.0.3 Roadmap: docs/planning/v0.0.3/v0.0.3-roadmap.md
Phase: 4 of 9 in v0.0.3 (Editor Experience Alpha)
Status: Complete - Ready for manual testing and PR
* style(docs): Fix markdown linting in Phase 4 documentation
* fix(vscode): Address Phase 4 feedback - version, linting, docs
Fixes:
- Update extension version to 0.0.3 (aligns with completed work)
- Remove redundant activationEvents (VS Code auto-generates from contributes)
- Create extensions/vscode/.gitignore (exclude node_modules, out/, *.vsix)
- Exclude extensions/vscode/node_modules from markdown linting
Documentation:
- Add TYPE_SYNC.md: comprehensive type synchronization guide
- Documents manual sync requirements
- Proposes validation scripts (v0.0.4)
- Proposes type generation automation (v0.1.0+)
- Plans LSP-based dynamic types (v0.0.5)
- Update v0.0.3-roadmap.md: add Post-v0.0.3 Recommendations section
- Type synchronization timeline
- Build automation (local dev, CI/CD, release)
- VSIX distribution strategy
- Update README.md:
- Add VSIX installation instructions
- Add type completion maintenance section
- Document extension activation behavior
- Add architecture notes
- Update CHANGELOG.md: promote v0.0.3 Phase 4 to released
Rationale:
- TypeScript compilation working (error was VS Code cache issue)
- activationEvents removed per VS Code best practices (1.75+)
- node_modules properly excluded from git and linting
- Comprehensive documentation for future type synchronization
- Clear roadmap for build automation and VSIX distribution
* docs(prompt): Add Phase 4 learnings and GitHub CLI best practices
GitHub CLI Documentation:
- Create GITHUB_CLI_PR_CREATION.md with 3 solutions for backtick escaping
- Recommend --body-file approach as standard (avoids shell interpretation)
- Document PowerShell/Bash differences and workarounds
- Include PR template examples and automation helpers
- Provide lessons learned from Phase 4 PR creation issue
Prompt Improvements Documentation:
- Create PROMPT_IMPROVEMENTS_PHASE4.md analyzing Phase 4 execution
- Document 6 issues that needed correction:
1. GitHub CLI backtick escaping (PR corruption)
2. Version misalignment (0.1.0 vs 0.0.3)
3. Missing .gitignore (node_modules tracked/linted)
4. Redundant activationEvents (deprecated VS Code practice)
5. TypeScript error communication gap (cache issue)
6. Reactive documentation (type sync, build automation, VSIX)
- Provide 7 prompt improvement recommendations:
1. GitHub CLI best practices (--body-file)
2. Version alignment verification
3. Standard project files checklist
4. Proactive maintenance documentation
5. VS Code extension best practices (2024+)
6. Discrepancy investigation protocol
7. Automation decision framework
- Define success metrics and validation approach
Rationale:
- Phase 4 revealed patterns where Copilot was reactive vs proactive
- Backtick issue was most visible problem (corrupted PR description)
- Documentation improvements prevent repeat issues in future phases
- Framework helps decide when to automate vs document vs roadmap
Impact:
- Future phases should anticipate maintenance needs proactively
- PR creation will use reliable --body-file approach
- Standard files (.gitignore, package.json) created upfront
- Version context verified before setting versions
References:
- Phase 4 execution: 3 commits, 6 feedback items, 1 PR failure
- Phase 5 target: 2 commits, ≤2 feedback items, 0 failures
- Phase 6+ goal: 1 commit, 0 corrections, 100% smooth
* exclude markdownlint rule M037
* docs: Apply Phase 4 prompt improvements
Implement 7 prompt improvements identified during Phase 4 execution to
keep them contextually close to when the work was done.
Changes:
1. **Temp Directory Approach** (GitHub CLI PR Creation):
- Added /temp/ to .gitignore for temporary PR body files
- Updated GITHUB_CLI_PR_CREATION.md examples to use temp/pr-body.txt
- Updated PROMPT_IMPROVEMENTS_PHASE4.md examples to use temp/
- No cleanup needed since directory is gitignored
2. **Type Sync Documentation Relocation**:
- Moved extensions/vscode/TYPE_SYNC.md to
docs/planning/v0.0.3/VSCODE_TYPE_SYNCHRONIZATION.md (git mv)
- Updated v0.0.3 roadmap reference
- Updated vscode README link
- Better reflects that type sync is v0.0.3 planning concern, not
ongoing vscode extension documentation
3. **VS Code Best Practices Dating**:
- Added 'Best Practices (As-of October 2025, VS Code 1.75+)' section
to extensions/vscode/README.md
- Documents current best practices with version context:
* No explicit activationEvents (auto-generated in 1.75+)
* Use @vscode/vsce for packaging
* TypeScript 5.x+ targeting ES2020+
* ESLint with TypeScript integration
* @vscode/test-electron for testing
- Includes version-specific notes (1.75+, 1.70+, 1.60+)
- Provides future change monitoring guidance
4. **Automation Framework Roadmap**:
- Added items 6 (Automation Decision Framework) and 7 (GitHub CLI
Helper Script) to v0.1.0-ROADMAP.md
- Item 6: 4-phase automation approach (validation → local dev →
CI/CD → release) with 8-12 days total effort
- Item 7: Standardized PR creation helper script with 1 day effort
- Both items provide clear path from Phase 4 learnings to v0.1.0+
implementation
5. **Metrics Clarification**:
- Clarified that success metrics in PROMPT_IMPROVEMENTS_PHASE4.md
measure Phase 5 workstream execution quality, not prompt work itself
- Added purpose statement: metrics compare Phase 5 (with improvements)
against Phase 4 baseline to validate prompt improvements reduce
rework
- Metrics track: commits needed, feedback items, PR failures,
proactive documentation
Related:
- PR #37 (Phase 4 implementation)
- docs/archive/prompt/development/GITHUB_CLI_PR_CREATION.md
- docs/archive/prompt/development/PROMPT_IMPROVEMENTS_PHASE4.md
* docs(roadmap): Improve formatting and clarify benefits for development workflows
* fix: Resolve Phase 4 VS Code completion issues
Implement fixes for three issues discovered during manual testing:
**Issue #1 - Statement Keywords in Expression Context (FIXED)**
- Problem: Statement-only keywords (fn, let, while, return) were appearing
in expression context where they are syntactically invalid
- Solution: Added filtering in provider.ts to exclude statement-level
keywords from expression completions
- File: extensions/vscode/src/completion/provider.ts
- Test: Test 5 - Context-Aware Completion
**Issue #2 - Boolean Literal Filtering (DOCUMENTED)**
- Problem: User expected 'false' when typing 'tr'
- Solution: This is correct VS Code behavior (prefix filtering). Updated
documentation to clarify expected behavior.
- File: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Test: Test 7 - Boolean Literal Completion
**Issue #3 - Type Completion After Typing Characters (FIXED)**
- Problem: No type completions when typing 'let pos: V' (types only
showed immediately after colon)
- Solution: Updated context detection regex from /:\s*$/ to /:\s*\w*$/
to handle partial type names
- File: extensions/vscode/src/utils/context.ts
- Test: Test 10 - Godot Type Completion
**Documentation Added**:
- PHASE_4_TESTING_ANALYSIS.md: Detailed analysis of all three issues
- PHASE_4_FIXES_VALIDATION.md: Quick validation guide for testing fixes
- Updated PHASE_4_MANUAL_TESTING.md: Corrected expected results
**Validation**: Extension compiles successfully. Ready for manual testing.
Related: PR #37
* docs: Update Phase 4 testing results and remove compiled output
**Testing Updates**:
- Completed test results summary (all tests pass with 1 minor note)
- Clarified Test 10: Vector2/void prefix filtering is expected behavior
- Clarified Test 9: return statement expands but not auto-suggested (minor)
- Extension version corrected to 0.0.3
- Test date: October 7, 2025
**Git Cleanup**:
- Removed extensions/vscode/out/ from git tracking
- Folder is properly gitignored but was committed earlier
- Files still exist locally for development use
**Test Results Summary**:
- 10/10 tests pass (Test 9 has minor note)
- All core functionality working as expected
- Context-aware completion verified
- Type completion with partial names verified
- Statement keyword filtering verified
Ready for PR approval and merge.
* docs: Implement Tier 1 improvements from Phase 4 learnings
Implement high-value, low-effort improvements (8 min investment, ~2 hrs
saved in Phase 5):
**Tier 1 - Immediate Implementation**:
1. **Context Detection Testing Guide** (5 min)
- New: docs/CONTEXT_DETECTION_TESTING.md
- Test matrix template for context-aware features
- Covers exact positions, partial input, negative cases
- Includes FerrisScript examples and validation checklist
- Prevents 1-2 hours debugging edge cases later
2. **VS Code Prefix Filtering Documentation** (2 min)
- New: docs/PREFIX_FILTERING_BEHAVIOR.md
- Documents VS Code's automatic prefix filtering behavior
- Prevents confusion about 'missing' completions
- Includes examples, testing practices, troubleshooting
- Saves 15-20 minutes explaining behavior later
3. **.gitignore Setup Checklist** (1 min)
- New: docs/GITIGNORE_SETUP_CHECKLIST.md
- Checklist for proper .gitignore before first commit
- Tech-specific templates (Node.js, Rust, Python, Go)
- Recovery steps if files already committed
- Saves 5-10 minutes cleanup later
**Tier 2/3 - Added to Roadmaps**:
4. **VS Code Extension Testing Infrastructure** (Tier 2)
- Added to v0.1.0-ROADMAP.md item #8
- Context detection unit tests (1 hour)
- Completion provider integration tests (2 hours)
- CI integration (30 minutes)
5. **Completion Ranking Optimization** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #9
- Improve auto-suggestion ordering
- 2-4 hours investigation + implementation
- Target: v0.1.0+ after core features
6. **Semantic Completion** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #10
- Context-aware suggestions based on types
- Requires compiler integration
- Target: v0.2.0+ (1-2 days research + 2-3 days implementation)
7. **Language Server Protocol Integration** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #11
- Full LSP: go-to-def, find refs, rename, hover, diagnostics
- Major milestone requiring architectural planning
- Target: v0.2.0+ (1-2 weeks)
**Documentation Fixes**:
- Auto-fixed markdownlint issues across all Phase 4 docs
- Fixed duplicate 'Future Investigation' heading → 'Long-Term Exploration'
- All linting now passes
**References**:
- docs/planning/v0.0.3/PHASE_4_LESSONS_LEARNED.md
- Tier 1 ROI: 8 min → ~2 hours saved
Related: Phase 4 completion testing and issue resolution
dev-parkins
added a commit
that referenced
this pull request
Oct 8, 2025
* feat: v0.0.3 infrastructure - branching workflow and CI optimization (#22)
* feat: implement v0.0.3 branching workflow and CI optimization
- Create develop branch for integration testing
- Add quick-check CI for feature branches (2-3 min)
- Add path filters to skip CI for docs-only changes
- Update CONTRIBUTING.md with new workflow documentation
- Update PR templates to reference develop as base branch
- Prepare for branch protection setup on main/develop
Benefits:
- 60-70% CI time savings on feature branches
- 95% savings on docs-only PRs
- Integration testing before production release
- Clearer development workflow
Refs: docs/planning/v0.0.3-roadmap.md (Development Workflow)
Refs: docs/archive/v0.0.2/V0.0.2_DEFERRAL_ANALYSIS.md (CI optimization)
* fix: replace approximate PI value with non-constant float in test
Changed test value from 3.14 to 3.5 to avoid clippy::approx_constant warning.
The test is verifying float value coercion, not mathematical constants.
* docs: move comprehensive testing guide for v0.0.2
* chore: improve CI behavior documentation for branch workflows
* feat: rename code scanning workflow with SonarQube integration
* fix: resolve all clippy lint warnings in tests
- Replace 3.14 with 3.5 in lexer test (avoids approx_constant lint)
- Replace assert_eq! with assert! for boolean comparisons in parser tests
- Remove assert!(true) placeholder in godot_bind tests (replace with comment)
* fix(ci): pin Rust toolchain version for consistency
* fix: prevent duplicate CI runs and improve clippy documentation
- Remove feature/** from push triggers to prevent duplicate runs when PR exists
- Simplify quick-check condition to only run on pull_request events
- Update CONTRIBUTING.md to use full clippy command (--all-targets --all-features)
- Fix rust-toolchain action configuration in quick-check job
This resolves the issue where pushing to a feature branch with an open PR
would trigger both push and pull_request events, running CI twice.
* fix(docs): update relative links in TESTING.md for accuracy
* fix: exclude docs/archive folder from markdown link checking
Archive documentation may contain outdated or moved links that don't need
to be validated in CI. This change adds a step to find markdown files
while excluding the archive folder, target directory, and node_modules.
Also excludes target/ and node_modules/ to avoid checking build artifacts.
* fix: properly exclude all archive subdirectories from link checking
The previous pattern './docs/archive/*' only matched files directly in the
archive folder, not in subdirectories like 'docs/archive/v0.0.2/phases/'.
Changed to '*/docs/archive/*' to match any path containing docs/archive,
which properly excludes all 43 markdown files in the archive directory tree.
This resolves the Status: 400 errors from archived documentation with
relative links that no longer resolve correctly.
* fix: run markdown-link-check directly with explicit file filtering
The github-action-markdown-link-check action was running its own find
command that ignored our filtered file list, causing it to check archive
files despite our exclusion logic.
Changed approach:
- Install markdown-link-check directly via npm
- Run find with explicit archive exclusion in the command
- Remove dependency on third-party action for better control
This ensures archive files are truly excluded from link checking.
* docs: update workflows README for v0.0.3 infrastructure changes
Comprehensive update to reflect all CI optimizations:
New Features Documented:
- Quick Check job (2-3 min fast PR feedback)
- Path filters for docs-only changes (95% savings)
- Three-branch workflow (main/develop/feature)
- Archive exclusion in link checking
Updated Sections:
- Available Workflows: Added quick-check, updated all triggers
- Job Details: Complete rewrite with v0.0.3 conditions
- Performance Metrics: New timing table with 70% savings analysis
- Event Flow Examples: 5 new examples covering all scenarios
- Troubleshooting: Added v0.0.3-specific issues
Benefits Highlighted:
- 60-70% faster PR feedback (2-3 min vs 10-15 min)
- 95% savings on docs PRs (CI skipped entirely)
- 70% overall CI cost reduction
- Prevented duplicate runs on feature branches
All documentation now matches actual ci.yml and docs-lint.yml behavior.
* feat(errors): implement comprehensive error code system (E001-E418) (#27)
* feat(errors): implement comprehensive error code system (E001-E418)
Phase 1 of v0.0.3 - Error Code System
- Add ErrorCode enum with 55 variants across 5 categories:
* Lexical errors (E001-E003)
* Syntax errors (E100-E113)
* Type errors (E200-E219)
* Runtime errors (E400-E418)
* Internal errors (E900-E999)
- Implement error code formatting infrastructure
- Update all compiler errors with structured codes:
* Lexer: 6 errors → E001-E003
* Parser: 14 errors → E100-E113
* Type Checker: 19 errors → E200-E219
* Runtime: 24 errors → E400-E418
- Create comprehensive ERROR_CODES.md documentation (63 codes)
- Add 9 error code validation tests
- Fix documentation links in planning documents
All 222 tests passing. Quality gates: clippy ✓, fmt ✓, docs lint ✓
Related: Milestone #2 - v0.0.3 Development
* chore: cleanup Phase 1 - remove test file and mark checklist complete
- Remove accidentally committed test.ferris file
- Update PHASE_1_ERROR_CODES.md status to Complete
- Mark all checklist items as completed with notes
- Add completion date (October 6, 2025)
* feat(errors): update Phase 1 error code documentation to reflect completion and add validation details
* chore: fix clippy warnings and update dependencies
Quality Improvements:
- Fix useless vec! usage in error_code_validation.rs (use arrays)
- Replace deprecated criterion::black_box with std::hint::black_box
- Fix godot 0.4 API change (GString now passed by reference)
Dependency Updates:
- Update criterion from 0.5 to 0.7 (latest stable)
- Update godot from 0.1 to 0.4 (latest stable)
- Update Cargo.lock with latest compatible versions
All 222 tests passing. Strict clippy check passed:
cargo clippy --workspace --all-targets --all-features -- -D warnings
This ensures zero tech debt from warnings and keeps dependencies current.
* chore: reorder import statements in runtime benchmarks
* docs: standardize quality gates and update branching workflow (#28)
Quality Gate Standardization:
- Update all docs to use strict clippy command consistently
* cargo clippy --workspace --all-targets --all-features -- -D warnings
* Catches issues in tests, benchmarks, examples, all features
- Document cargo fmt requirement before declaring work 'done'
- Add documentation linting to quality checklists
Branching Workflow Updates:
- Update CONTRIBUTING.md to show feature → develop workflow
- Update merge strategy documentation (feature → develop, develop → main)
- Clarify branch naming conventions
Phase 1 Learnings Documentation:
- Document technical discoveries from error code implementation
- Add deferred investigations (semantic errors, runtime checks)
- Identify future opportunities (LSP integration, telemetry, i18n)
- Record best practices (strict clippy, test actual behavior)
- Document tooling improvements and validation strategies
Files Modified:
- CONTRIBUTING.md: Feature branch workflow, merge strategy, quality gates
- docs/DEVELOPMENT.md: Strict clippy commands, quality checklist
- .github/prompts/workstream-execution.prompt.md: Quality gate commands
- docs/planning/v0.0.3/LEARNINGS.md: Phase 1 discoveries and opportunities
Ensures consistent quality standards and accurate workflow documentation
for all future contributions.
* feat(compiler): add error suggestions for typos (Phase 2) (#29)
* feat(compiler): add error suggestions for typos (Phase 2)
Implement 'Did you mean?' suggestions using Levenshtein distance algorithm:
- Variable name suggestions (E201)
- Function name suggestions (E202)
- Type name suggestions (E203)
Features:
- Adaptive thresholds based on identifier length
- Short identifiers (≤4 chars): ≤1 edit distance
- Medium identifiers (5-8 chars): ≤2 edit distance
- Long identifiers (>8 chars): ≥70% similarity
- Rank suggestions by edit distance (top 3 max)
- Add 20 comprehensive integration tests
New module: crates/compiler/src/suggestions.rs
- levenshtein(): Edit distance calculation
- similarity(): Percentage similarity (0-100)
- is_similar_identifier(): Adaptive threshold logic
- find_similar_identifiers(): Suggest corrections
Documentation: docs/planning/v0.0.3/PHASE_2_ERROR_SUGGESTIONS.md
Tests: 222 passing (100% success rate)
Closes #2 (Phase 2 milestone)
* feat(suggestions): implement typo suggestion system using Levenshtein distance
* fix(pr-template): ensure branch pattern matches for PR template application
* docs: Mark Phase 2 complete and update all documentation
- Updated PHASE_2_ERROR_SUGGESTIONS.md status to Complete
- Marked all acceptance criteria as complete
- Added comprehensive learnings to LEARNINGS.md for Phase 2
- Updated README.md phase tracker (Phase 1 & 2 complete)
- Updated v0.0.3-roadmap.md with Phase 2 completion
- Fixed pr-template.yml to match all branches for PR events
Phase 2 Achievements:
- Implemented Levenshtein distance algorithm
- Added suggestions for E201 (variables), E202 (functions), E203 (types)
- 20+ comprehensive integration tests
- All tests passing, strict clippy compliance
- Deferred keyword suggestions to Phase 2B (requires lexer changes)
Learnings captured:
- Adaptive thresholds essential for accuracy
- Integration tests more valuable than unit tests for UX features
- Simple error formats (did you mean X?) win over complex context
- Generic utilities reduce code duplication
* Feature/v0.0.3 error docs (#32)
* docs: add Phase 3 planning document (Error Documentation & Recovery)
- Created PHASE_3_ERROR_DOCS_RECOVERY.md with comprehensive plan
- Hybrid URL approach: GitHub default, env var for custom docs site
- Scope: doc URLs, parser recovery, multi-error reporting
- Updated README.md with Phase 3 link and deliverables
- Deferred: doc website to Phase 9 or v0.0.4
Rationale for hybrid URLs:
- Works immediately with GitHub
- Future-proof with FERRIS_DOCS_BASE env var
- Zero infrastructure needed now
- Easy migration when docs.ferrisscript.dev launches
* feat: Add documentation URLs to error messages (Phase 3A)
Implemented documentation URLs in all compiler error messages:
- Added ErrorCode::get_docs_url() method with hybrid URL strategy:
- Default: GitHub docs (works immediately)
- Custom: FERRIS_DOCS_BASE env var for future docs site
- Modified format_error_with_code() to append docs URL:
- Adds '= note: see <URL> for more information' line
- Appears in all error types (lexical, syntax, type)
- Added comprehensive test coverage:
- Unit tests for URL generation (default & custom)
- Integration tests verify URLs in error messages
- Tests for type errors and undefined variables
Testing:
- All existing tests pass (209 tests)
- New tests added for URL functionality (5 tests)
- cargo clippy: no warnings
- cargo fmt: code formatted
This completes Phase 3A: Documentation URLs
Next: Phase 3C - Parser recovery
* docs: Add ferrisscript.dev infrastructure setup checklist
Added comprehensive documentation for website infrastructure:
NEW FILES:
- docs/WEBSITE_INFRASTRUCTURE.md: Complete setup checklist
- Domain acquisition status (ferrisscript.dev acquired ✅)
- Hosting setup guide (Netlify/Vercel/GitHub Pages)
- DNS/CNAME configuration steps
- Documentation framework options (Docusaurus/mdBook/VitePress)
- HTTPS verification steps (.dev requires SSL)
- URL structure and deployment strategy
UPDATED FILES:
- PHASE_3_ERROR_DOCS_RECOVERY.md: Expanded deferred section
- Added detailed 5-step infrastructure checklist
- Marked domain as acquired
- Work can proceed in parallel with features
- LEARNINGS.md: Added infrastructure opportunity section
- Documents hybrid URL strategy benefits
- Timeline and remaining work
- No compiler changes needed (env var ready)
- README.md: Updated Phase 3 status
- Marked Phase 3A as complete ✅
- Added infrastructure note with domain status
Infrastructure work is deferred (can work between features).
GitHub URLs work fine now, custom site enhances developer experience.
No blocking path - all systems operational.
* docs: Update infrastructure and error documentation with hybrid URL system
* feat: Fix GitHub anchor links and add cross-references (Phase 3B)
Fixed critical bug in documentation URL generation:
- GitHub markdown anchors are slugified (e.g., #e001-invalid-character)
- Updated get_docs_url() to properly generate anchors from descriptions
- Fixed URL generation to match actual ERROR_CODES.md headers
Added cross-references to ERROR_CODES.md:
- Added 'See Also' sections to 10+ key error codes
- Cross-references link compile-time ↔ runtime error pairs
- Cross-references link related errors within same category
- All internal links use proper GitHub anchor format
Testing:
- Updated tests to validate correct anchor format
- Verified URLs match actual ERROR_CODES.md structure
- All 270+ tests passing
Examples:
- E001: https://github.com/.../ERROR_CODES.md#e001-invalid-character ✅
- E201: https://github.com/.../ERROR_CODES.md#e201-undefined-variable ✅
- E200: https://github.com/.../ERROR_CODES.md#e200-type-mismatch ✅
Cross-reference examples:
- E201 → E401 (compile vs runtime undefined variable)
- E202 → E415, E402 (undefined function variants)
- E215 → E407 (field not found variants)
This completes Phase 3B: ERROR_CODES.md enhancements
* feat: Add Jekyll infrastructure for GitHub Pages documentation site
- Configure Jekyll with Cayman theme (_config.yml)
- kramdown markdown processor with GFM support
- GitHub Pages plugins (relative-links, optional-front-matter, etc.)
- baseurl: /FerrisScript for proper GitHub Pages routing
- Navigation structure for all documentation sections
- Create documentation landing page (index.md)
- Quick links to ERROR_CODES, architecture, FAQ, development guide
- Error code lookup by category (lexical, syntax, type, runtime)
- Version status showing v0.0.3 progress
- Professional navigation structure
- Add local Jekyll testing support
- Gemfile with github-pages gem and plugins
- Enable local testing: bundle install && bundle exec jekyll serve
- Test at localhost:4000/FerrisScript
- Configure Jekyll build exclusions (.gitignore)
- Exclude _site/, .jekyll-cache/, vendor/, Gemfile.lock
- Keep repository clean from build artifacts
- Update WEBSITE_INFRASTRUCTURE.md with Jekyll deployment status
- Mark Phase 1 (Jekyll) as complete
- Document current GitHub Pages URL
- Preserve future migration options (Docusaurus, mdBook, VitePress)
Live site: https://dev-parkins.github.io/FerrisScript
This enables professional documentation hosting with proper markdown
rendering, anchor links, and navigation for ERROR_CODES.md and all
existing documentation.
Part of Phase 3B: ERROR_CODES.md enhancements (improved accessibility)
* docs: Improve documentation clarity with additional spacing in error and planning sections
* docs: Mark Phase 3A and 3B as complete in planning documents
Update phase tracking to reflect completion of:
- Phase 3A: Documentation URLs with hybrid strategy
- Phase 3B: ERROR_CODES.md enhancements and Jekyll infrastructure
Key achievements documented:
- Hybrid URL strategy (GitHub + custom site support)
- GitHub anchor bug fix with proper slugification
- Cross-references added to 10+ error codes
- Jekyll site live at dev-parkins.github.io/FerrisScript
- Professional landing page and navigation
- All 270+ tests passing
Remaining phases (3C-E) for future PRs:
- Phase 3C: Parser error recovery
- Phase 3D: Multi-error reporting
- Phase 3E: Diagnostic collection infrastructure
* docs: Fix theme parameter for jekyll pages (#33)
* fix: Update _config.yml plugins list for remote theme (#34)
* feat: Update to Hacker theme and fix URLs for GitHub Pages
- Change Jekyll theme from Cayman to Hacker (pages-themes/hacker@v0.2.0)
- Remove .html extensions from all internal links in index.md for GitHub Pages compatibility
- Update error code URL generation to use GitHub Pages URLs instead of GitHub blob URLs
- Old: https://github.com/dev-parkins/FerrisScript/blob/main/docs/ERROR_CODES.md#...
- New: https://dev-parkins.github.io/FerrisScript/ERROR_CODES/#e400-cannot-assign-to-immutable-variable
- Update all tests to match new URL format
- All tests passing (11 error_code tests)
GitHub Pages automatically strips .html extensions, so links now work correctly:
- ERROR_CODES instead of ERROR_CODES.html
- ARCHITECTURE instead of ARCHITECTURE.html
- FAQ instead of FAQ.html
- etc.
This ensures error messages in the compiler link directly to the live GitHub Pages documentation.
* ✨ New Feature: Phase 3C - Parser Error Recovery (#35)
* feat(parser): add error recovery infrastructure (Phase 3C-1)
Add panic-mode error recovery fields and methods to Parser:
Infrastructure added:
- panic_mode: bool field to track recovery state
- errors: Vec<String> field to collect multiple errors
- synchronize() method: skip to next safe point (;, }, fn, let)
- record_error() helper: collect errors, suppress cascading
Synchronization strategy:
- Conservative: suppress all errors while in panic mode
- Sync points: semicolon, right brace, fn keyword, let keyword
- Clear panic mode when sync point found
- Handle EOF gracefully (no infinite loops)
Implementation notes:
- Fields initialized in Parser::new()
- Methods are unused (dead code warnings expected)
- Will be used in Phase 2 (modify error handling)
- All 122 existing tests still pass
Part of Phase 3C: Parser Error Recovery
Related: docs/planning/v0.0.3/PHASE_3C_EXECUTION_PLAN.md
* feat: Implement Phase 3C - Parser error recovery with panic-mode synchronization
- Add panic_mode flag and errors collection to Parser struct
- Implement synchronize() method with sync points: semicolon, right brace, fn, let
- Implement record_error() for collecting errors without stopping parser
- Add get_errors() public API for accessing collected diagnostics
- Fix critical infinite loop bug (advance before synchronize)
- Add 23 recovery-specific tests (13 unit + 10 integration)
- Update documentation (LEARNINGS.md, README.md, CHANGELOG.md)
- Fix markdownlint configuration (disable MD025 for docs/index.md)
Changes enable parser to continue after syntax errors and collect multiple
diagnostics in a single pass, matching modern compiler standards (Rust,
TypeScript, Swift). Foundation for Phase 3D multi-error reporting.
Test Coverage:
- All 263 tests passing (0 failures)
- Zero clippy warnings (strict mode)
- Properly formatted code
Closes #TBD
Part of Phase 3: Error Documentation & Recovery
* docs: Enhance workstream execution prompt with Phase 3C learnings (#36)
* docs: enhance workstream execution prompt with Phase 3C learnings
Main Prompt Enhancements:
- Add explicit date verification to pre-flight checks
- Enhance TODO list discipline with marking instructions
- Make LEARNINGS.md required deliverable for all phases
- Generalize version references (v0.0.2 → v[VERSION])
- Expand link checking workflow with key navigation files
- Update Role & Expertise with learning capture requirements
- Add comprehensive LEARNINGS.md section with template
- Expand Common Pitfalls with date accuracy and LEARNINGS
- Restructure Final Notes with four discipline subsections
- Add deferral recommendations section to prompt file
- Add FerrisScript branch naming conventions (bugfix/, feature/, docs/)
- Add conventional commits format with examples
Prompts Folder Consolidation (Option A):
- Simplify README.md (280 → 100 lines): Keep purpose, when to use, quick start
- Simplify PR_TEMPLATE_SYSTEM.md (308 → 80 lines): Reference card only
- Delete QUICK_REFERENCE.md (230 lines): Fully redundant with main prompt
- Net result: -69% supplementary docs, +4% main prompt (1,066 lines)
Incorporate deferred work into version roadmaps:
- v0.0.4: Prompt testing, link checking automation (high priority)
- v0.0.5: Pre-flight script, LEARNINGS generator, LSP quick fixes
- v0.1.0+: Phase-specific prompts, telemetry, localization
Addresses feedback from Phase 3C execution:
- Dates often incorrect (defaulting to January)
- TODO list updates inconsistent
- Version-specific references in generic template
- LEARNINGS.md updates not emphasized enough
- Link checking coverage unclear
- Deferred work recommendations integrated into roadmaps
- Fragmented documentation across multiple files (consolidated)
* fix: clean up formatting and improve clarity in documentation files
* docs: move Prompts Folder Consolidation Analysis for improved Copilot usability
* docs: Add type promotion research and post-v0.1.0 roadmaps
- Created TYPE_PROMOTION_RESEARCH.md with comprehensive analysis:
- Analyzed 6 game engines (Godot, Unity, Unreal, Bevy, Lua, JavaScript)
- Compared 4 type promotion strategies
- Documented performance implications and FFI considerations
- Confirmed current i32/f32 approach is correct and Godot-compatible
- Updated academic paper references with actual links
- Created v0.2.0-roadmap.md (PROPOSED):
- Extended type system (i64, f64, i16, u8, u16)
- Language feature completion (deferred from v0.1.0)
- Enhanced LSP capabilities
- Explicit type casting
- Created v0.3.0-roadmap.md (PROPOSED):
- Checked arithmetic methods (overflow detection)
- Saturating arithmetic (clamp to min/max)
- Wrapping/overflowing methods
- LSP integration for overflow warnings
- Aligned roadmap placement with v0.1.0 goals:
- Respects v0.1.0 focus on Godot release and developer experience
- Type system enhancements deferred to post-v0.1.0 releases
- No blocking issues for Godot compatibility
Rationale:
- Explicit design philosophy over automatic promotion
- Maximizes static language potential
- Provides clear roadmap for future enhancements
* docs: Add markdown syntax highlighting research and v0.4.0 roadmap
- Created MARKDOWN_SYNTAX_HIGHLIGHTING_RESEARCH.md:
- Analyzed 5 syntax highlighting solutions (Linguist, Prism, Highlight.js, Shiki, Rust fallback)
- Detailed comparison matrix with effort, maintenance, and accuracy
- Recommended implementation timeline across 4 phases
- Short-term: Use Rust fallback (zero effort, works now)
- Medium-term: Submit to GitHub Linguist (v0.1.0-v0.2.0)
- Long-term: Shiki for docs site (v0.4.0+)
- Reuses VS Code TextMate grammar (no duplicate work)
- Created v0.4.0-roadmap.md (PROPOSED):
- Focus: Documentation site, compiler warnings, tooling enhancements
- Official documentation website (VitePress/Astro/Docusaurus)
- Shiki syntax highlighting integration
- GitHub Linguist submission
- Compiler intelligence (overflow warnings, unused variables, dead code)
- Enhanced LSP features (inlay hints, semantic highlighting)
- API documentation generator
- Interactive playground (stretch goal)
- Roadmap placement aligned with project priorities:
- v0.1.0: LSP and Godot integration (current focus)
- v0.2.0: Extended type system
- v0.3.0: Arithmetic safety
- v0.4.0: Documentation site and developer experience
Rationale:
- Professional documentation critical for adoption
- Syntax highlighting enhances developer experience
- Leverage existing TextMate grammar (Shiki approach)
- Start simple (Rust fallback), upgrade incrementally
* docs: Enhance syntax highlighting research with Rouge lexer and GitHub Pages guidance
- Add Rouge lexer as Option 5 for GitHub Pages/Jekyll support
- Include Ruby lexer implementation example for Rouge
- Expand comparison matrix to 7 columns (GitHub.com, GitHub Pages, Docs Site, Effort, Maintenance, Accuracy, Timeline)
- Add comprehensive decision guide with 6 scenarios mapping use cases to solutions
- Add quick decision table for easy reference
- Update implementation roadmap Phase 3 with GitHub Pages considerations
- Update v0.4.0 roadmap Task #2 with GitHub Pages alternatives (Highlight.js vs Rouge)
This research now covers all major platforms:
- GitHub.com markdown (Linguist)
- GitHub Pages/Jekyll (Rouge lexer)
- Custom documentation sites (Shiki, Prism.js, Highlight.js)
Incorporates community research on Rouge lexer implementation and GitHub Pages architecture.
* docs: Add prompt optimization research for request efficiency
- Create PROMPT_OPTIMIZATION_RESEARCH.md analyzing GitHub Copilot premium request optimization
- Key insight: Optimize for requests per feature, not tokens per request
- Analyze 8 optimization strategies with impact ratings and estimated savings
- High-impact strategies: clarification minimization, plan+execute fusion, deterministic completion
- Medium-impact strategies: self-validation loop, error recovery, context pre-loading
- Expected outcome: Reduce from 2-4 requests per feature to 1-1.5 requests (50-75% savings)
- Provide 3-phase implementation roadmap (high-impact → risk mitigation → polish)
- Define success metrics: quantitative (requests per feature) and qualitative (user experience)
Also fix markdown linting issues in MARKDOWN_SYNTAX_HIGHLIGHTING_RESEARCH.md:
- Convert emphasized text to proper headings (MD036)
- Option A and Option B are now proper level 4 headings
* feat(prompts): Implement Groups 1-2 of premium request optimizations
Group 1: Foundation + High-Impact Core
- Add Ambiguity Resolution Strategy section
- Self-resolve low-risk ambiguities with documented assumptions
- Only ask for high-risk decisions (API changes, security, data loss)
- Expected savings: 1 request per feature (50% reduction)
- Add Definition of Done section
- Explicit completion checklist (code, docs, validation, output)
- Clear DO NOT/ALWAYS lists for completion behavior
- Required completion marker: '✅ Workstream Execution Complete'
- Expected savings: 0.5-1 request per feature
- Enhance Context Pre-Loading section
- Full FerrisScript project identity and structure
- Code and documentation conventions
- Branch naming, commit format, quality standards
- Test commands and CI/CD pipeline details
- Version discovery (removed hardcoded versions, use docs/planning/)
- Expected savings: 0.25-0.5 request per feature
Group 2: Execution Flow Changes
- Update Execution Planning section
- Default: Brief plan (≤5 bullets) + immediate execution
- No approval required for clear requirements
- Fallback to explicit planning only if genuinely unclear
- Expected savings: 1 request per feature (50% reduction)
- Add Forward Progress Mandate section
- Always make forward progress unless critically ambiguous
- Make reasonable inferences, document assumptions
- Only stop for high-risk ambiguities
- Example scenarios with old vs new behavior
- Expected savings: 0.5 request per feature
- Add Self-Correction + Validation Loop section
- 4-phase validation: syntax, tests, quality, links
- Full license to fix code issues (no attempt limits)
- Only stop when: validation passes, exhausted reasonable fixes, or tool is broken
- Tool failure limit: 3 crashes (tool itself broken, not code)
- Expected savings: 0.5-1 request per feature
Total Expected Impact: Reduce from 2-4 requests/feature to 1-1.5 requests/feature (50-75% savings)
Fixes based on review:
- Remove hardcoded version numbers (v0.0.3, v0.1.0), use dynamic discovery from docs/planning/
- Clarify validation retry logic: unlimited code fix attempts, only limit tool crashes
* feat(prompts): Implement Group 3 - Polish and Optional Features
Group 3a: Hierarchical Output Structure (Strategy 5)
- Add 'Required Output Structure' section with 7 standardized sections
- Section 1: Executive Summary (goal, context, approach, assumptions)
- Section 2: Implementation (files created/modified, key changes, code highlights)
- Section 3: Documentation (created/updated, link validation results)
- Section 4: Testing (tests added, execution results, coverage impact)
- Section 5: Validation (build status, linting status, acceptance criteria)
- Section 6: Post-Execution Notes (decisions, assumptions, recommendations, limitations)
- Section 7: Completion Marker (deliverables summary, validation status, next action)
- Benefits: Easy to scan, no ambiguity, evidence provided, reduces follow-up questions
- Expected savings: 0.25 request per feature
Group 3b: Execution Mode Toggle (Strategy 6)
- Add 'Execution Modes' section with 3 modes: full, plan, execute
- Mode 'full' (default): Plan + Execute + Document + Test in one pass
- Mode 'plan': Only create execution plan, no implementation (exploratory)
- Mode 'execute': Skip planning, proceed directly to implementation
- Mode detection: Auto-detect from user language or explicit mode parameter
- Usage: /prompt #file:workstream-execution.prompt.md mode=[mode]
- Benefits: Flexibility for different scenarios, control over premium request usage
- Expected savings: 0 (flexibility feature, not optimization)
Total Group 3 Impact: +0.25 requests savings + improved UX clarity
Note: Both sections in same file, staged together. Hierarchical Output Structure
is higher priority (improves clarity), Execution Mode Toggle is optional (adds flexibility).
All 8 optimization strategies now implemented:
✅ Strategy 1: Clarification Minimization (HIGH - Group 1)
✅ Strategy 2: Plan + Execute Fusion (HIGH - Group 2)
✅ Strategy 3: Deterministic Completion (MEDIUM-HIGH - Group 1)
✅ Strategy 4: Self-Correction + Validation (MEDIUM - Group 2)
✅ Strategy 5: Hierarchical Output Structure (LOW-MEDIUM - Group 3)
✅ Strategy 6: Execution Mode Toggle (LOW - Group 3)
✅ Strategy 7: Error Recovery Directive (MEDIUM - Group 2)
✅ Strategy 8: Context Pre-Loading (MEDIUM-HIGH - Group 1)
Total Expected Impact: 50-75% reduction in premium requests (from 2-4 to 1-1.5 per feature)
* fix(prompts): Clarify version planning discovery logic
Clarify that active roadmap is the LOWEST version number, not highest:
- Roadmaps are built outwards (plan future while working on earliest version)
- Example: v0.2.0, v0.3.0, v0.4.0 exist → active work is v0.2.0 (lowest = current)
- Higher-numbered roadmaps are forward planning, not current work
- Add explicit 'Why lowest' explanation to prevent misinterpretation
This ensures Copilot correctly identifies the current active version when
multiple roadmaps exist in docs/planning/.
* feat(vscode): Phase 4 - Code Completion Provider (v0.0.3) (#37)
* feat(vscode): Add code completion provider for FerrisScript (Phase 4)
Implement context-aware completion for keywords, types, and functions in VS Code extension.
Features:
- Keyword completion: let, mut, fn, if, else, while, return, true, false
- Type completion: i32, f32, bool, String, Vector2, Node, void
- Function completion: print with parameter hints
- Context-aware suggestions:
- Type position (after ':') shows only types
- Statement start shows statement-level keywords
- Expression context shows all keywords + functions
- Snippet support for structured code insertion
Technical Implementation:
- TypeScript-based extension infrastructure (tsconfig, npm scripts)
- CompletionItemProvider using VS Code API
- Regex-based context detection
- Comprehensive documentation with examples
- Manual testing guide for validation
Documentation:
- PHASE_4_VS_CODE_COMPLETION.md: Full implementation plan
- PHASE_4_MANUAL_TESTING.md: Testing guide with 10 test scenarios
- Extension README and CHANGELOG updated
- v0.0.3 roadmap documents aligned
- LEARNINGS.md updated with Phase 4 insights
References:
- Phase 4 Document: docs/planning/v0.0.3/PHASE_4_VS_CODE_COMPLETION.md
- Testing Guide: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Roadmap: docs/planning/v0.0.3/README.md
- v0.0.3 Roadmap: docs/planning/v0.0.3/v0.0.3-roadmap.md
Phase: 4 of 9 in v0.0.3 (Editor Experience Alpha)
Status: Complete - Ready for manual testing and PR
* style(docs): Fix markdown linting in Phase 4 documentation
* fix(vscode): Address Phase 4 feedback - version, linting, docs
Fixes:
- Update extension version to 0.0.3 (aligns with completed work)
- Remove redundant activationEvents (VS Code auto-generates from contributes)
- Create extensions/vscode/.gitignore (exclude node_modules, out/, *.vsix)
- Exclude extensions/vscode/node_modules from markdown linting
Documentation:
- Add TYPE_SYNC.md: comprehensive type synchronization guide
- Documents manual sync requirements
- Proposes validation scripts (v0.0.4)
- Proposes type generation automation (v0.1.0+)
- Plans LSP-based dynamic types (v0.0.5)
- Update v0.0.3-roadmap.md: add Post-v0.0.3 Recommendations section
- Type synchronization timeline
- Build automation (local dev, CI/CD, release)
- VSIX distribution strategy
- Update README.md:
- Add VSIX installation instructions
- Add type completion maintenance section
- Document extension activation behavior
- Add architecture notes
- Update CHANGELOG.md: promote v0.0.3 Phase 4 to released
Rationale:
- TypeScript compilation working (error was VS Code cache issue)
- activationEvents removed per VS Code best practices (1.75+)
- node_modules properly excluded from git and linting
- Comprehensive documentation for future type synchronization
- Clear roadmap for build automation and VSIX distribution
* docs(prompt): Add Phase 4 learnings and GitHub CLI best practices
GitHub CLI Documentation:
- Create GITHUB_CLI_PR_CREATION.md with 3 solutions for backtick escaping
- Recommend --body-file approach as standard (avoids shell interpretation)
- Document PowerShell/Bash differences and workarounds
- Include PR template examples and automation helpers
- Provide lessons learned from Phase 4 PR creation issue
Prompt Improvements Documentation:
- Create PROMPT_IMPROVEMENTS_PHASE4.md analyzing Phase 4 execution
- Document 6 issues that needed correction:
1. GitHub CLI backtick escaping (PR corruption)
2. Version misalignment (0.1.0 vs 0.0.3)
3. Missing .gitignore (node_modules tracked/linted)
4. Redundant activationEvents (deprecated VS Code practice)
5. TypeScript error communication gap (cache issue)
6. Reactive documentation (type sync, build automation, VSIX)
- Provide 7 prompt improvement recommendations:
1. GitHub CLI best practices (--body-file)
2. Version alignment verification
3. Standard project files checklist
4. Proactive maintenance documentation
5. VS Code extension best practices (2024+)
6. Discrepancy investigation protocol
7. Automation decision framework
- Define success metrics and validation approach
Rationale:
- Phase 4 revealed patterns where Copilot was reactive vs proactive
- Backtick issue was most visible problem (corrupted PR description)
- Documentation improvements prevent repeat issues in future phases
- Framework helps decide when to automate vs document vs roadmap
Impact:
- Future phases should anticipate maintenance needs proactively
- PR creation will use reliable --body-file approach
- Standard files (.gitignore, package.json) created upfront
- Version context verified before setting versions
References:
- Phase 4 execution: 3 commits, 6 feedback items, 1 PR failure
- Phase 5 target: 2 commits, ≤2 feedback items, 0 failures
- Phase 6+ goal: 1 commit, 0 corrections, 100% smooth
* exclude markdownlint rule M037
* docs: Apply Phase 4 prompt improvements
Implement 7 prompt improvements identified during Phase 4 execution to
keep them contextually close to when the work was done.
Changes:
1. **Temp Directory Approach** (GitHub CLI PR Creation):
- Added /temp/ to .gitignore for temporary PR body files
- Updated GITHUB_CLI_PR_CREATION.md examples to use temp/pr-body.txt
- Updated PROMPT_IMPROVEMENTS_PHASE4.md examples to use temp/
- No cleanup needed since directory is gitignored
2. **Type Sync Documentation Relocation**:
- Moved extensions/vscode/TYPE_SYNC.md to
docs/planning/v0.0.3/VSCODE_TYPE_SYNCHRONIZATION.md (git mv)
- Updated v0.0.3 roadmap reference
- Updated vscode README link
- Better reflects that type sync is v0.0.3 planning concern, not
ongoing vscode extension documentation
3. **VS Code Best Practices Dating**:
- Added 'Best Practices (As-of October 2025, VS Code 1.75+)' section
to extensions/vscode/README.md
- Documents current best practices with version context:
* No explicit activationEvents (auto-generated in 1.75+)
* Use @vscode/vsce for packaging
* TypeScript 5.x+ targeting ES2020+
* ESLint with TypeScript integration
* @vscode/test-electron for testing
- Includes version-specific notes (1.75+, 1.70+, 1.60+)
- Provides future change monitoring guidance
4. **Automation Framework Roadmap**:
- Added items 6 (Automation Decision Framework) and 7 (GitHub CLI
Helper Script) to v0.1.0-ROADMAP.md
- Item 6: 4-phase automation approach (validation → local dev →
CI/CD → release) with 8-12 days total effort
- Item 7: Standardized PR creation helper script with 1 day effort
- Both items provide clear path from Phase 4 learnings to v0.1.0+
implementation
5. **Metrics Clarification**:
- Clarified that success metrics in PROMPT_IMPROVEMENTS_PHASE4.md
measure Phase 5 workstream execution quality, not prompt work itself
- Added purpose statement: metrics compare Phase 5 (with improvements)
against Phase 4 baseline to validate prompt improvements reduce
rework
- Metrics track: commits needed, feedback items, PR failures,
proactive documentation
Related:
- PR #37 (Phase 4 implementation)
- docs/archive/prompt/development/GITHUB_CLI_PR_CREATION.md
- docs/archive/prompt/development/PROMPT_IMPROVEMENTS_PHASE4.md
* docs(roadmap): Improve formatting and clarify benefits for development workflows
* fix: Resolve Phase 4 VS Code completion issues
Implement fixes for three issues discovered during manual testing:
**Issue #1 - Statement Keywords in Expression Context (FIXED)**
- Problem: Statement-only keywords (fn, let, while, return) were appearing
in expression context where they are syntactically invalid
- Solution: Added filtering in provider.ts to exclude statement-level
keywords from expression completions
- File: extensions/vscode/src/completion/provider.ts
- Test: Test 5 - Context-Aware Completion
**Issue #2 - Boolean Literal Filtering (DOCUMENTED)**
- Problem: User expected 'false' when typing 'tr'
- Solution: This is correct VS Code behavior (prefix filtering). Updated
documentation to clarify expected behavior.
- File: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Test: Test 7 - Boolean Literal Completion
**Issue #3 - Type Completion After Typing Characters (FIXED)**
- Problem: No type completions when typing 'let pos: V' (types only
showed immediately after colon)
- Solution: Updated context detection regex from /:\s*$/ to /:\s*\w*$/
to handle partial type names
- File: extensions/vscode/src/utils/context.ts
- Test: Test 10 - Godot Type Completion
**Documentation Added**:
- PHASE_4_TESTING_ANALYSIS.md: Detailed analysis of all three issues
- PHASE_4_FIXES_VALIDATION.md: Quick validation guide for testing fixes
- Updated PHASE_4_MANUAL_TESTING.md: Corrected expected results
**Validation**: Extension compiles successfully. Ready for manual testing.
Related: PR #37
* docs: Update Phase 4 testing results and remove compiled output
**Testing Updates**:
- Completed test results summary (all tests pass with 1 minor note)
- Clarified Test 10: Vector2/void prefix filtering is expected behavior
- Clarified Test 9: return statement expands but not auto-suggested (minor)
- Extension version corrected to 0.0.3
- Test date: October 7, 2025
**Git Cleanup**:
- Removed extensions/vscode/out/ from git tracking
- Folder is properly gitignored but was committed earlier
- Files still exist locally for development use
**Test Results Summary**:
- 10/10 tests pass (Test 9 has minor note)
- All core functionality working as expected
- Context-aware completion verified
- Type completion with partial names verified
- Statement keyword filtering verified
Ready for PR approval and merge.
* docs: Implement Tier 1 improvements from Phase 4 learnings
Implement high-value, low-effort improvements (8 min investment, ~2 hrs
saved in Phase 5):
**Tier 1 - Immediate Implementation**:
1. **Context Detection Testing Guide** (5 min)
- New: docs/CONTEXT_DETECTION_TESTING.md
- Test matrix template for context-aware features
- Covers exact positions, partial input, negative cases
- Includes FerrisScript examples and validation checklist
- Prevents 1-2 hours debugging edge cases later
2. **VS Code Prefix Filtering Documentation** (2 min)
- New: docs/PREFIX_FILTERING_BEHAVIOR.md
- Documents VS Code's automatic prefix filtering behavior
- Prevents confusion about 'missing' completions
- Includes examples, testing practices, troubleshooting
- Saves 15-20 minutes explaining behavior later
3. **.gitignore Setup Checklist** (1 min)
- New: docs/GITIGNORE_SETUP_CHECKLIST.md
- Checklist for proper .gitignore before first commit
- Tech-specific templates (Node.js, Rust, Python, Go)
- Recovery steps if files already committed
- Saves 5-10 minutes cleanup later
**Tier 2/3 - Added to Roadmaps**:
4. **VS Code Extension Testing Infrastructure** (Tier 2)
- Added to v0.1.0-ROADMAP.md item #8
- Context detection unit tests (1 hour)
- Completion provider integration tests (2 hours)
- CI integration (30 minutes)
5. **Completion Ranking Optimization** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #9
- Improve auto-suggestion ordering
- 2-4 hours investigation + implementation
- Target: v0.1.0+ after core features
6. **Semantic Completion** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #10
- Context-aware suggestions based on types
- Requires compiler integration
- Target: v0.2.0+ (1-2 days research + 2-3 days implementation)
7. **Language Server Protocol Integration** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #11
- Full LSP: go-to-def, find refs, rename, hover, diagnostics
- Major milestone requiring architectural planning
- Target: v0.2.0+ (1-2 weeks)
**Documentation Fixes**:
- Auto-fixed markdownlint issues across all Phase 4 docs
- Fixed duplicate 'Future Investigation' heading → 'Long-Term Exploration'
- All linting now passes
**References**:
- docs/planning/v0.0.3/PHASE_4_LESSONS_LEARNED.md
- Tier 1 ROI: 8 min → ~2 hours saved
Related: Phase 4 completion testing and issue resolution
* Phase 5: VS Code Hover & Problem Panel (v0.0.3) (#38)
* feat(vscode): Phase 5 - Hover Tooltips & Problem Panel (v0.0.3)
Implements comprehensive IDE features for FerrisScript VS Code extension:
Hover Tooltips:
- Keyword hover with descriptions, syntax, and examples (9 keywords)
- Type hover with type information and usage (7 types)
- Function hover with signatures and parameters (print)
- Markdown-formatted content with syntax-highlighted code blocks
Error Diagnostics:
- DiagnosticCollection for compiler error integration
- Error parser for FerrisScript error format (E001-E499 codes)
- Problem panel integration with inline red squiggles
- Save-triggered diagnostics with compiler auto-detection
- Graceful degradation when compiler not available
File Icons:
- Custom SVG icon for .ferris files (Rust-inspired crab + Godot accent)
- Icon theme registration in VS Code
Documentation & Testing:
- PHASE_5_VS_CODE_HOVER.md: Complete execution plan (10 criteria, 9 phases)
- PHASE_5_MANUAL_TESTING.md: 15 comprehensive test cases
- Updated README with Phase 5 features prominently
- Updated CHANGELOG with detailed Phase 5 additions
- Updated v0.0.3 planning documents (README, roadmap, LEARNINGS)
Technical Implementation:
- src/hover/: provider.ts, keywords.ts, types.ts, functions.ts
- src/diagnostics/: provider.ts, parser.ts
- resources/icons/: ferrisscript.svg, icon theme JSON
- Updated extension.ts with hover and diagnostic provider registration
All code compiles successfully. Extension ready for manual testing.
Related to #2 (v0.0.3 milestone)
* fix(vscode): Phase 5 - Icon theme and diagnostic provider improvements
Issues Fixed:
1. Icon theme applying to all file types (removed default file mapping)
2. Diagnostic provider error handling (improved stderr capture, logging)
3. Testing documentation (updated for CLI limitation)
Key Changes:
- extensions/vscode/resources/icons/ferrisscript-icon-theme.json
* Removed 'file' property that applied icon to all files
* Now only maps .ferris extension to custom icon
- extensions/vscode/src/diagnostics/provider.ts
* Fixed runCompiler() method error capture
* Added console logging for debugging
* Improved user notifications when compiler not found
* Graceful degradation when CLI unavailable
- docs/planning/v0.0.3/PHASE_5_MANUAL_TESTING.md
* Updated setup instructions (removed compiler requirement)
* Marked Tests 8-11 as 'Not Testable (CLI not implemented)'
* Updated Test 12 to verify graceful degradation
- extensions/vscode/README.md
* Added CLI requirement warning for diagnostic features
- docs/planning/v0.0.3/PHASE_5_FIXES_VALIDATION.md
* New: Comprehensive documentation of issues and fixes
Root Cause: FerrisScript has no standalone CLI executable (only library crates).
Diagnostic provider infrastructure is complete and ready for future CLI.
Testing: Icon fix needs user verification. Hover features working (Tests 1-7 pass).
* test(vscode): Phase 5 manual testing results
Test Results:
- Tests 1-7: ✅ All hover features passing
- Tests 8-11: ⏭️ N/A (require CLI - not implemented)
- Test 12: ✅ Graceful degradation verified
- Test 13: ⚠️ Icon theme cache issue identified
- Test 14: ✅ Hover performance excellent (~50ms)
- Test 15: ⏳ Pending icon fix verification
Pass Rate: 9/15 (5 N/A, 1 cache issue)
Issues Documented:
1. Icon Theme Cache - VS Code caching old configuration
- Code fix is correct (JSON has no 'file' property)
- Requires manual cache clear by user
- Created ICON_THEME_FIX_VERIFICATION.md with steps
2. Diagnostic Features - Expected limitation
- Infrastructure complete and ready
- Awaiting CLI implementation (future phase)
Acceptance Criteria:
- 6/10 fully met (all hover features)
- 3/10 awaiting CLI (diagnostic features)
- 1/10 cache issue (icon theme)
Files Updated:
- PHASE_5_MANUAL_TESTING.md: Added test results, summary, issues
- ICON_THEME_FIX_VERIFICATION.md: New troubleshooting guide
Next: User clears icon cache, verifies fix, completes Test 15
* fix(vscode): Add missing package.json fields for VSIX packaging
Fixed Issues:
1. Missing activationEvents property (required when main property exists)
- Added: workspaceContains:**/*.ferris activation event
- VS Code auto-infers onLanguage:ferrisscript from contributes
2. Incorrect .vscodeignore configuration
- Removed: out/ from ignore (needed for compiled JS)
- Added: src/, tsconfig.json, .eslintrc.json (source files)
- Fixed: Now ships compiled JS, not TypeScript source
3. Missing icon.png
- Copied: assets/ferrisscript-logo.png → extensions/vscode/icon.png
- Extension marketplace icon now present
4. Missing LICENSE
- Copied: LICENSE → extensions/vscode/LICENSE
- Satisfies vsce package requirements
Result: Successfully packaged as ferrisscript-0.0.3.vsix (48 files, 879.95KB)
Installation: Extension installed via 'code --install-extension ferrisscript-0.0.3.vsix'
This should resolve the icon theme caching issue - fresh VSIX package = fresh install.
* fix(vscode): Remove icon theme - fundamental misunderstanding of VS Code icon system
Issue: Icon theme replaced ALL file icons, not just .ferris files
Root Cause: Icon themes are COMPLETE icon sets (like Seti, Material Icons)
- Must define icons for hundreds of file types
- Cannot add single file icon without defining all others
- When selected, replaces ALL file icons in VS Code
Resolution: Removed iconThemes contribution from package.json
- Removed: contributes.iconThemes section
- Kept: All other features (hover, completion, diagnostics)
- Updated: CHANGELOG.md to remove file icon mention
- Updated: PHASE_5_MANUAL_TESTING.md Test 13 status
Why This Is Correct:
1. Language extensions (Rust, Python, Julia) don't ship icon themes
2. File icons are managed by dedicated icon theme extensions
3. Icon themes require defining icons for ALL file types
4. Not feasible for single-language extension
Impact:
- .ferris files will use default file icon from active icon theme
- All other extension features (hover, completion, diagnostics) unaffected
- Extension now follows VS Code best practices
Testing: Packaged and installed - 'FerrisScript Icons' no longer appears in icon theme list
Acceptance Criteria Update: 7/10 met (removed infeasible criterion)
* docs: Add icon theme lesson learned to LEARNINGS.md
Documented complete analysis of icon theme misunderstanding:
- Why icon themes are complete replacements, not augmentations
- Technical details of VS Code icon system architecture
- Why we can't use icon themes for single file type
- How other language extensions handle this (they don't ship icon themes)
- Alternative approach: Submit PRs to popular icon theme extensions
- Recommendations for future development
Key Takeaway: Icon themes must define ALL file types. Language extensions
should focus on core features (hover, completion, diagnostics) and leave
icons to dedicated icon theme extensions.
* docs: Add Phase 5 PR description and summary
Comprehensive PR documentation including:
- Feature overview (hover tooltips, diagnostic infrastructure)
- Testing results (9/15 passing, 5 N/A, 1 removed)
- Issues resolved (icon theme, VSIX packaging, CLI limitation)
- Documentation created (6 new files, 4 updated)
- Deferred work (CLI implementation, LSP server)
- Acceptance criteria status (7/10 met)
- Deployment instructions and verification checklist
Ready to create PR: feature/v0.0.3-phase-5-hover → develop
* docs: Add Phase 5 completion summary
Final summary document including:
- All accomplishments and deliverables
- Testing results and acceptance criteria
- Key lessons learned (icon theme, VSIX, CLI)
- Statistics (23 files, +2,935 lines)
- Deferred work and priorities
- PR details (#38)
- Success metrics and next steps
Phase 5 complete: Hover tooltips working, diagnostic infrastructure ready,
extension packaging working, comprehensive documentation created.
* docs: Update Phase 5 documentation and testing guides to reflect icon theme removal and fixes
* security(vscode): Fix command injection vulnerabilities in diagnostic provider
Fixed 2 security hotspots:
1. findCompiler() - Use spawnSync instead of execSync for PATH check
2. runCompiler() - Use spawnSync with arguments array instead of string concatenation
Security improvements:
- Use spawnSync instead of execSync (no shell spawning)
- Pass arguments as array to prevent injection
- Explicit shell: false option
- Added security documentation in JSDoc
Prevents command injection through PATH manipulation or file path injection.
Follows OWASP secure coding practices.
* docs: Add security fixes documentation
Comprehensive documentation of command injection vulnerabilities fixed:
- Detailed analysis of both security hotspots
- Before/after code comparisons
- Attack vector explanations
- Risk assessment (High → Low)
- Verification and testing
- OWASP references and best practices
Documents commit f7731b5 security improvements.
* security(vscode): Enhance security by replacing execSync with spawnSync to prevent command injection vulnerabilities
* security(vscode): Add compiler path configuration for PATH security hardening
Addresses residual PATH security concern by adding user configuration option.
Changes:
1. Added ferrisscript.compilerPath setting in package.json
- Allows users to specify absolute path to trusted compiler
- Bypasses PATH entirely when configured
- Recommended for security-sensitive environments
2. Updated findCompiler() to check configuration first
- Priority 1: User-configured absolute path (most secure)
- Priority 2: Workspace target directories
- Priority 3: PATH search (with timeout protection)
3. Enhanced security documentation
- Explains residual PATH risk
- Recommends absolute path configuration
- Documents defense-in-depth approach
Security Posture:
- Low residual risk with PATH (mitigated by spawnSync + timeout)
- Zero risk when absolute path configured
- Standard practice for CLI tool discovery (npm, cargo, python)
- User transparency via notifications
Security scanners may still flag PATH usage as informational/low priority.
This is acceptable for CLI tool discovery patterns.
* docs: Add PATH security hardening analysis and guidance
Comprehensive documentation for residual PATH security scanner finding.
Covers:
- Why PATH is flagged (even with spawnSync)
- Defense-in-depth approach (config → workspace → PATH)
- Risk assessment (Low → Negligible)
- Comparison with industry tools (Python, Rust Analyzer)
- User guidance for maximum security
- Scanner response and compliance recommendations
Provides justification for accepting low residual risk and proper
documentation for security audits.
* docs: Update PATH security hardening and residual risk mitigation guidance
* feat(tooling): Phase 6+7 - Development Tooling & CI Benchmarking (#39)
* feat(tooling): Phase 6+7 - Development tooling & CI benchmarking
Phase 6: Development Scripts
- Created scripts/lint.ps1 and lint.sh for cargo clippy linting
- Implemented pre-commit hooks (format, lint, quick tests)
- Updated install-git-hooks scripts to install pre-commit hook
- Added comprehensive lint and hooks documentation to scripts/README.md
Phase 7: Benchmark CI Integration
- Created .github/workflows/benchmarks.yml for CI benchmark tracking
- Workflow runs on main/develop branches
- Stores results as artifacts (30-day retention)
- Automatic PR comments with benchmark results
- Verified all existing benchmarks run successfully
Phase 9 Quick Wins:
- Added Build Status badge to README.md
Infrastructure:
- All 263 tests passing
- Zero clippy warnings
- Code formatted
- Documentation linted
Deliverables:
- 5/5 core scripts complete (test, bench, format, coverage, lint)
- Pre-commit hooks installed and functional
- CI benchmark tracking enabled
- Professional project presentation with badges
Closes #TBD (Phase 6+7 combined)
* fix(ci): update Rust toolchain version and add components for linting
fix(docs): update markdownlint action to latest version
* docs: add test case and matrix for Phase 4 completion evaluation
* feat(tooling): Add Git hooks uninstall scripts
- Add scripts/uninstall-git-hooks.ps1 for Windows
- Add scripts/uninstall-git-hooks.sh for Linux/macOS
- Update scripts/README.md with uninstall documentation
- Update Quick Reference table with new scripts
- Add manual removal alternatives
- Tested: Successfully removes pre-commit and pre-push hooks
Benefits:
- Easy hook removal for debugging or preference
- Consistent with install script UX
- Safe to run multiple times
- Clear feedback on what was removed
* fix(tooling): Ignore extensions directory in pre-push markdown linting
* infra: Consolidate code scanning & coverage, evaluate CodeQL (#40)
* infra: Consolidate code scanning and coverage reporting
- Move Codecov from ci.yml to code-scanning.yml for consolidation
- Disable SonarQube coverage (keep quality scanning, avoid redundancy)
- Create docs/infrastructure/ folder for CI/CD documentation
- Move COVERAGE_SETUP_NOTES.md to infrastructure folder
- Add comprehensive infrastructure documentation:
- README.md: Overview of all workflows, secrets, quality gates
- CODEQL_EVALUATION.md: CodeQL integration analysis (2-4h effort, medium value)
- Update workflow documentation (README.md, DEVELOPMENT.md)
- Update coverage references to new infrastructure folder
Rationale:
- Groups security/quality tools (SonarQube, Codecov) in one workflow
- Separates build/test (ci.yml) from analysis (code-scanning.yml)
- Easier to add future tools (CodeQL) without cluttering ci.yml
- Better organization: infrastructure docs in dedicated folder
CodeQL Decision:
- Do NOT implement for v0.0.3-0.0.4 (current tools sufficient)
- Re-evaluate for v0.1.0+ (when Rust support matures)
- Documented 2-4 hour integration effort with moderate value
- See CODEQL_EVALUATION.md for full analysis
Changes:
- .github/workflows/ci.yml: Remove coverage job, add redirect comment
- .github/workflows/code-scanning.yml: Add Codecov job, rename workflow
- .github/workflows/README.md: Document consolidation
- docs/DEVELOPMENT.md: Update coverage doc link
- docs/infrastructure/: New folder with 3 comprehensive docs
* security: Pin codecov-action to SHA for supply chain security
- Pin codecov/codecov-action to SHA e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 (v4.6.0)
- Pin actions/checkout to SHA 11bd71901bbe5b1630ceea73d27597364c9af683 (v4.2.2)
- Keep dtolnay/rust-toolchain@stable (no SHA pinning for toolchain updates)
Rationale:
- SHA pinning prevents supply chain attacks via compromised actions
- Codecov v4.6.0 is latest stable with security improvements
- Matches security pattern used in other workflows (ci.yml, sonarqube job)
- Ensures reproducible builds and audit trail
* fix(ci): Pin Rust toolchain version for consistency across workflows
* fix(ci): add rustup target installation before cross-platform builds
- Add 'rustup target add' step before building with --target flag
- Fixes error: can't find crate for std when building for non-native targets
- Error only appeared in CI after pushing to develop
Prevents build failures when CI builds for Linux/macOS/Windows targets by
ensuring the standard library for each target is installed before compilation.
Related changes:
- Document cross-compilation setup in DEVELOPMENT.md
- Add native release build check to workstream-execution.prompt.md
- Explain that cross-compilation from Windows requires platform-specific linkers
* chore: Prepare v0.0.3 Release - Editor Experience Alpha (#41)
* chore: prepare v0.0.3 release
- Bump version from 0.0.2 to 0.0.3 in all Cargo.toml files
- Update package.json to 0.0.3
- Add comprehensive v0.0.3 changelog entry with all phases
- Document completed features: error codes, suggestions, recovery, VS Code extension, dev tooling
- Document deferred items: Phase 3D/3E to v0.0.4, Phase 8 to v0.0.4, Phase 9 to v0.1.0
- Add release checklist document for tracking remaining tasks
Quality Checks:
✅ 271 tests passing
✅ Zero clippy warnings
✅ Code formatting clean
✅ Documentation lint passing
* docs: add deferred items tracking and compiler best practices
- Create DEFERRED_ITEMS_TRACKING.md with all v0.0.3 deferred items
* Phase 2B (keyword suggestions) → v0.0.4
* Phase 3D/3E (multi-error reporting) → v0.0.4
* Phase 8 (integration tests) → v0.0.4
* Phase 9 items → v0.1.0
* LSP features → v0.0.5
* Total 12 items with rationale, complexity, tracking
- Extract generalizable knowledge to docs/COMPILER_BEST_PRACTICES.md
* Error recovery patterns (always advance before sync)
* Adaptive similarity thresholds for typo detection
* Test-driven development insights
* Quality gates and tooling best practices
* Architecture patterns (defer complexity, separation of concerns)
* 10+ reusable patterns from v0.0.3 development
- Update README.md for v0.0.3
* Update VS Code extension version path (0.1.0 → 0.0.3)
* Add 'New in v0.0.3' section highlighting IntelliSense features
* Update maturity indicator (v0.0.2 → v0.0.3)
* Document code completion, hover, diagnostics features
Quality Improvements:
- All deferred items now tracked with target versions
- Generalizable patterns extracted for future reference
- Root README reflects current v0.0.3 capabilities
- Nothing lost in deferral process
* docs: Distribute v0.0.3 deferred items to version roadmaps
- Added Phase 2B, 3D, 3E, and Phase 8 to v0.0.4-roadmap.md
- Added Phase 9 items (coverage, rustdoc, marketplace, edge tests, code org) to v0.1.0-ROADMAP.md
- Added LSP testing infrastructure and configuration to v0.0.5-roadmap.md
- All 12 deferred items now tracked in appropriate version roadmaps
- Comprehensive implementation details, scope, and acceptance criteria included
Related: v0.0.3 DEFERRED_ITEMS_TRACKING.md
* docs: Add v0.0.3 coverage analysis and release documentation
- COVERAGE_ANALYSIS.md: Detailed 64.54% coverage breakdown
- Module-by-module analysis
- Gap priorities for v0.0.4 and v0.1.0
- Specific improvement targets (Godot 0% → 60%, Lexer 60.8% → 75%)
- POST_RELEASE_IMPROVEMENTS.md: CI and coverage enhancement opportunities
- Codecov on PRs (optional)
- Benchmark regression tracking
- CI optimization suggestions
- V0.0.3_RELEASE_PR_DESCRIPTION.md: Comprehensive release summary
- All 7 phases detailed
- 418 error codes, VS Code extension, dev tooling
- 271 tests, 64.54% coverage, quality metrics
- Migration guide and what's next
Related: v0.0.3 release preparation
* fix(release): update action-gh-release to specific commit for improved stability
* docs: Add v0.0.3 Release Review Summary with key metrics and coverage analysis
* feat(ci): integrate SonarCloud coverage reporting with LCOV format
- Add LCOV output format to tarpaulin in code-scanning.yml
- Configure sonar-project.properties to read coverage/lcov.info
- Document SonarCloud integration in technical docs
- Update POST_RELEASE_IMPROVEMENTS.md with implementation status
This enables SonarCloud quality gate to receive actual coverage metrics
while maintaining existing Codecov integration (dual reporting).
Related: Post-v0.0.3 CI enhancement
* docs: Add SonarCloud coverage integration completion summary
- Created comprehensive workstream summary document
- Documented implementation details and validation results
- Added recommendations for future work (quality gate thresholds, badges)
- Tracked success criteria and next steps for verification
Related: feat(ci) commit 179dddb
* docs: Add CI workflow duplication analysis and resolution
- Analyzed workflow execution patterns on develop branch
- Identified root cause: PR #31 open while pushing to develop
- Verified coverage IS running correctly (both Cobertura and LCOV)
- Verified main branch does NOT have duplication issues
- Documented 3 solution options with trade-offs
- Decision: Accept temporary duplication (Option 1) as standard pattern
- Establishes develop → main PR workflow for future releases
Key findings:
- Coverage runs on every develop push ✅
- SonarQube, markdown-lint, link-check duplicate (acceptable)
- Duplication stops automatically when PR is merged
- ~6-10 min CI overhead per push (temporary, worth simplicity)
Related: Post-v0.0.3 CI optimization analysis
* fix(ci): add job dependencies to ensure SonarQube receives coverage data
Root cause: Jobs ran in parallel, SonarQube scanned before coverage was generated
Solution: Sequential execution with job dependencies and artifact sharing
Changes:
- Renamed 'codecov' job to 'coverage' (more accurate name)
- Added 'needs: coverage' dependency to 'sonarqube' job
- Upload coverage reports (cobertura.xml + lcov.info) as artifacts
- Download artifacts in SonarQube job before scanning
- Added separate 'sonarqube-pr' job for pull requests (no coverage)
Expected results:
- SonarQube will now see LCOV coverage data
- Coverage should show ~64% (matching Codecov)
- Execution order: coverage (4 min) -> sonarqube (1.5 min)
Related: feat(ci) commit 179dddb (SonarCloud LCOV integration)
* docs(sonarcloud): finalize Rust limitation analysis and reject cargo-sonar
- Updated sonar-project.properties to exclude Rust code (not supported)
- Removed unnecessary coverage artifact download from workflow
- Created comprehensive coverage strategy document
- Evaluated cargo-sonar as alternative solution (rejected)
- Documented decision rationale with cost/benefit analysis
Key decisions:
- Accept SonarCloud limitation for Rust (no native support)
- Use Codecov for Rust coverage (superior UX, industry standard)
- Use SonarCloud for TypeScript quality (VSCode extension)
- Reject cargo-sonar (marginal value, duplicates Clippy/Codecov)
Files created:
- docs/COVERAGE_STRATEGY.md (complete coverage strategy)
- docs/planning/technical/SONARCLOUD_RUST_LIMITATION_ANALYSIS.md
- docs/planning/v0.0.4/SONARCLOUD_COVERAGE_INVESTIGATION_SUMMARY.md
All markdown linting passed, all links validated.
* docs(sonarcloud): update coverage strategy and limitations for Rust support
* fix(vscode): resolve SonarCloud TypeScript quality warnings
Resolved 10 SonarCloud warnings before PR merge:
TypeScript completion provider:
- Fixed S6836: Add block scopes to switch case statements
- Prevents lexical declaration issues in case blocks
TypeScript diagnostics provider:
- Fixed S2933: Mark diagnosticCollection and compilerPath as readonly
- Fixed S7059: Move async operations out of constructor
- Fixed S3776: Reduce cognitive complexity (18 → 13) by extracting methods
- Fixed S2486: Properly handle exceptions with logging and user notifications
Refactored findCompiler() into 4 focused methods:
- tryConfiguredCompiler(…
dev-parkins
added a commit
that referenced
this pull request
Oct 8, 2025
* feat: v0.0.3 infrastructure - branching workflow and CI optimization (#22)
* feat: implement v0.0.3 branching workflow and CI optimization
- Create develop branch for integration testing
- Add quick-check CI for feature branches (2-3 min)
- Add path filters to skip CI for docs-only changes
- Update CONTRIBUTING.md with new workflow documentation
- Update PR templates to reference develop as base branch
- Prepare for branch protection setup on main/develop
Benefits:
- 60-70% CI time savings on feature branches
- 95% savings on docs-only PRs
- Integration testing before production release
- Clearer development workflow
Refs: docs/planning/v0.0.3-roadmap.md (Development Workflow)
Refs: docs/archive/v0.0.2/V0.0.2_DEFERRAL_ANALYSIS.md (CI optimization)
* fix: replace approximate PI value with non-constant float in test
Changed test value from 3.14 to 3.5 to avoid clippy::approx_constant warning.
The test is verifying float value coercion, not mathematical constants.
* docs: move comprehensive testing guide for v0.0.2
* chore: improve CI behavior documentation for branch workflows
* feat: rename code scanning workflow with SonarQube integration
* fix: resolve all clippy lint warnings in tests
- Replace 3.14 with 3.5 in lexer test (avoids approx_constant lint)
- Replace assert_eq! with assert! for boolean comparisons in parser tests
- Remove assert!(true) placeholder in godot_bind tests (replace with comment)
* fix(ci): pin Rust toolchain version for consistency
* fix: prevent duplicate CI runs and improve clippy documentation
- Remove feature/** from push triggers to prevent duplicate runs when PR exists
- Simplify quick-check condition to only run on pull_request events
- Update CONTRIBUTING.md to use full clippy command (--all-targets --all-features)
- Fix rust-toolchain action configuration in quick-check job
This resolves the issue where pushing to a feature branch with an open PR
would trigger both push and pull_request events, running CI twice.
* fix(docs): update relative links in TESTING.md for accuracy
* fix: exclude docs/archive folder from markdown link checking
Archive documentation may contain outdated or moved links that don't need
to be validated in CI. This change adds a step to find markdown files
while excluding the archive folder, target directory, and node_modules.
Also excludes target/ and node_modules/ to avoid checking build artifacts.
* fix: properly exclude all archive subdirectories from link checking
The previous pattern './docs/archive/*' only matched files directly in the
archive folder, not in subdirectories like 'docs/archive/v0.0.2/phases/'.
Changed to '*/docs/archive/*' to match any path containing docs/archive,
which properly excludes all 43 markdown files in the archive directory tree.
This resolves the Status: 400 errors from archived documentation with
relative links that no longer resolve correctly.
* fix: run markdown-link-check directly with explicit file filtering
The github-action-markdown-link-check action was running its own find
command that ignored our filtered file list, causing it to check archive
files despite our exclusion logic.
Changed approach:
- Install markdown-link-check directly via npm
- Run find with explicit archive exclusion in the command
- Remove dependency on third-party action for better control
This ensures archive files are truly excluded from link checking.
* docs: update workflows README for v0.0.3 infrastructure changes
Comprehensive update to reflect all CI optimizations:
New Features Documented:
- Quick Check job (2-3 min fast PR feedback)
- Path filters for docs-only changes (95% savings)
- Three-branch workflow (main/develop/feature)
- Archive exclusion in link checking
Updated Sections:
- Available Workflows: Added quick-check, updated all triggers
- Job Details: Complete rewrite with v0.0.3 conditions
- Performance Metrics: New timing table with 70% savings analysis
- Event Flow Examples: 5 new examples covering all scenarios
- Troubleshooting: Added v0.0.3-specific issues
Benefits Highlighted:
- 60-70% faster PR feedback (2-3 min vs 10-15 min)
- 95% savings on docs PRs (CI skipped entirely)
- 70% overall CI cost reduction
- Prevented duplicate runs on feature branches
All documentation now matches actual ci.yml and docs-lint.yml behavior.
* feat(errors): implement comprehensive error code system (E001-E418) (#27)
* feat(errors): implement comprehensive error code system (E001-E418)
Phase 1 of v0.0.3 - Error Code System
- Add ErrorCode enum with 55 variants across 5 categories:
* Lexical errors (E001-E003)
* Syntax errors (E100-E113)
* Type errors (E200-E219)
* Runtime errors (E400-E418)
* Internal errors (E900-E999)
- Implement error code formatting infrastructure
- Update all compiler errors with structured codes:
* Lexer: 6 errors → E001-E003
* Parser: 14 errors → E100-E113
* Type Checker: 19 errors → E200-E219
* Runtime: 24 errors → E400-E418
- Create comprehensive ERROR_CODES.md documentation (63 codes)
- Add 9 error code validation tests
- Fix documentation links in planning documents
All 222 tests passing. Quality gates: clippy ✓, fmt ✓, docs lint ✓
Related: Milestone #2 - v0.0.3 Development
* chore: cleanup Phase 1 - remove test file and mark checklist complete
- Remove accidentally committed test.ferris file
- Update PHASE_1_ERROR_CODES.md status to Complete
- Mark all checklist items as completed with notes
- Add completion date (October 6, 2025)
* feat(errors): update Phase 1 error code documentation to reflect completion and add validation details
* chore: fix clippy warnings and update dependencies
Quality Improvements:
- Fix useless vec! usage in error_code_validation.rs (use arrays)
- Replace deprecated criterion::black_box with std::hint::black_box
- Fix godot 0.4 API change (GString now passed by reference)
Dependency Updates:
- Update criterion from 0.5 to 0.7 (latest stable)
- Update godot from 0.1 to 0.4 (latest stable)
- Update Cargo.lock with latest compatible versions
All 222 tests passing. Strict clippy check passed:
cargo clippy --workspace --all-targets --all-features -- -D warnings
This ensures zero tech debt from warnings and keeps dependencies current.
* chore: reorder import statements in runtime benchmarks
* docs: standardize quality gates and update branching workflow (#28)
Quality Gate Standardization:
- Update all docs to use strict clippy command consistently
* cargo clippy --workspace --all-targets --all-features -- -D warnings
* Catches issues in tests, benchmarks, examples, all features
- Document cargo fmt requirement before declaring work 'done'
- Add documentation linting to quality checklists
Branching Workflow Updates:
- Update CONTRIBUTING.md to show feature → develop workflow
- Update merge strategy documentation (feature → develop, develop → main)
- Clarify branch naming conventions
Phase 1 Learnings Documentation:
- Document technical discoveries from error code implementation
- Add deferred investigations (semantic errors, runtime checks)
- Identify future opportunities (LSP integration, telemetry, i18n)
- Record best practices (strict clippy, test actual behavior)
- Document tooling improvements and validation strategies
Files Modified:
- CONTRIBUTING.md: Feature branch workflow, merge strategy, quality gates
- docs/DEVELOPMENT.md: Strict clippy commands, quality checklist
- .github/prompts/workstream-execution.prompt.md: Quality gate commands
- docs/planning/v0.0.3/LEARNINGS.md: Phase 1 discoveries and opportunities
Ensures consistent quality standards and accurate workflow documentation
for all future contributions.
* feat(compiler): add error suggestions for typos (Phase 2) (#29)
* feat(compiler): add error suggestions for typos (Phase 2)
Implement 'Did you mean?' suggestions using Levenshtein distance algorithm:
- Variable name suggestions (E201)
- Function name suggestions (E202)
- Type name suggestions (E203)
Features:
- Adaptive thresholds based on identifier length
- Short identifiers (≤4 chars): ≤1 edit distance
- Medium identifiers (5-8 chars): ≤2 edit distance
- Long identifiers (>8 chars): ≥70% similarity
- Rank suggestions by edit distance (top 3 max)
- Add 20 comprehensive integration tests
New module: crates/compiler/src/suggestions.rs
- levenshtein(): Edit distance calculation
- similarity(): Percentage similarity (0-100)
- is_similar_identifier(): Adaptive threshold logic
- find_similar_identifiers(): Suggest corrections
Documentation: docs/planning/v0.0.3/PHASE_2_ERROR_SUGGESTIONS.md
Tests: 222 passing (100% success rate)
Closes #2 (Phase 2 milestone)
* feat(suggestions): implement typo suggestion system using Levenshtein distance
* fix(pr-template): ensure branch pattern matches for PR template application
* docs: Mark Phase 2 complete and update all documentation
- Updated PHASE_2_ERROR_SUGGESTIONS.md status to Complete
- Marked all acceptance criteria as complete
- Added comprehensive learnings to LEARNINGS.md for Phase 2
- Updated README.md phase tracker (Phase 1 & 2 complete)
- Updated v0.0.3-roadmap.md with Phase 2 completion
- Fixed pr-template.yml to match all branches for PR events
Phase 2 Achievements:
- Implemented Levenshtein distance algorithm
- Added suggestions for E201 (variables), E202 (functions), E203 (types)
- 20+ comprehensive integration tests
- All tests passing, strict clippy compliance
- Deferred keyword suggestions to Phase 2B (requires lexer changes)
Learnings captured:
- Adaptive thresholds essential for accuracy
- Integration tests more valuable than unit tests for UX features
- Simple error formats (did you mean X?) win over complex context
- Generic utilities reduce code duplication
* Feature/v0.0.3 error docs (#32)
* docs: add Phase 3 planning document (Error Documentation & Recovery)
- Created PHASE_3_ERROR_DOCS_RECOVERY.md with comprehensive plan
- Hybrid URL approach: GitHub default, env var for custom docs site
- Scope: doc URLs, parser recovery, multi-error reporting
- Updated README.md with Phase 3 link and deliverables
- Deferred: doc website to Phase 9 or v0.0.4
Rationale for hybrid URLs:
- Works immediately with GitHub
- Future-proof with FERRIS_DOCS_BASE env var
- Zero infrastructure needed now
- Easy migration when docs.ferrisscript.dev launches
* feat: Add documentation URLs to error messages (Phase 3A)
Implemented documentation URLs in all compiler error messages:
- Added ErrorCode::get_docs_url() method with hybrid URL strategy:
- Default: GitHub docs (works immediately)
- Custom: FERRIS_DOCS_BASE env var for future docs site
- Modified format_error_with_code() to append docs URL:
- Adds '= note: see <URL> for more information' line
- Appears in all error types (lexical, syntax, type)
- Added comprehensive test coverage:
- Unit tests for URL generation (default & custom)
- Integration tests verify URLs in error messages
- Tests for type errors and undefined variables
Testing:
- All existing tests pass (209 tests)
- New tests added for URL functionality (5 tests)
- cargo clippy: no warnings
- cargo fmt: code formatted
This completes Phase 3A: Documentation URLs
Next: Phase 3C - Parser recovery
* docs: Add ferrisscript.dev infrastructure setup checklist
Added comprehensive documentation for website infrastructure:
NEW FILES:
- docs/WEBSITE_INFRASTRUCTURE.md: Complete setup checklist
- Domain acquisition status (ferrisscript.dev acquired ✅)
- Hosting setup guide (Netlify/Vercel/GitHub Pages)
- DNS/CNAME configuration steps
- Documentation framework options (Docusaurus/mdBook/VitePress)
- HTTPS verification steps (.dev requires SSL)
- URL structure and deployment strategy
UPDATED FILES:
- PHASE_3_ERROR_DOCS_RECOVERY.md: Expanded deferred section
- Added detailed 5-step infrastructure checklist
- Marked domain as acquired
- Work can proceed in parallel with features
- LEARNINGS.md: Added infrastructure opportunity section
- Documents hybrid URL strategy benefits
- Timeline and remaining work
- No compiler changes needed (env var ready)
- README.md: Updated Phase 3 status
- Marked Phase 3A as complete ✅
- Added infrastructure note with domain status
Infrastructure work is deferred (can work between features).
GitHub URLs work fine now, custom site enhances developer experience.
No blocking path - all systems operational.
* docs: Update infrastructure and error documentation with hybrid URL system
* feat: Fix GitHub anchor links and add cross-references (Phase 3B)
Fixed critical bug in documentation URL generation:
- GitHub markdown anchors are slugified (e.g., #e001-invalid-character)
- Updated get_docs_url() to properly generate anchors from descriptions
- Fixed URL generation to match actual ERROR_CODES.md headers
Added cross-references to ERROR_CODES.md:
- Added 'See Also' sections to 10+ key error codes
- Cross-references link compile-time ↔ runtime error pairs
- Cross-references link related errors within same category
- All internal links use proper GitHub anchor format
Testing:
- Updated tests to validate correct anchor format
- Verified URLs match actual ERROR_CODES.md structure
- All 270+ tests passing
Examples:
- E001: https://github.com/.../ERROR_CODES.md#e001-invalid-character ✅
- E201: https://github.com/.../ERROR_CODES.md#e201-undefined-variable ✅
- E200: https://github.com/.../ERROR_CODES.md#e200-type-mismatch ✅
Cross-reference examples:
- E201 → E401 (compile vs runtime undefined variable)
- E202 → E415, E402 (undefined function variants)
- E215 → E407 (field not found variants)
This completes Phase 3B: ERROR_CODES.md enhancements
* feat: Add Jekyll infrastructure for GitHub Pages documentation site
- Configure Jekyll with Cayman theme (_config.yml)
- kramdown markdown processor with GFM support
- GitHub Pages plugins (relative-links, optional-front-matter, etc.)
- baseurl: /FerrisScript for proper GitHub Pages routing
- Navigation structure for all documentation sections
- Create documentation landing page (index.md)
- Quick links to ERROR_CODES, architecture, FAQ, development guide
- Error code lookup by category (lexical, syntax, type, runtime)
- Version status showing v0.0.3 progress
- Professional navigation structure
- Add local Jekyll testing support
- Gemfile with github-pages gem and plugins
- Enable local testing: bundle install && bundle exec jekyll serve
- Test at localhost:4000/FerrisScript
- Configure Jekyll build exclusions (.gitignore)
- Exclude _site/, .jekyll-cache/, vendor/, Gemfile.lock
- Keep repository clean from build artifacts
- Update WEBSITE_INFRASTRUCTURE.md with Jekyll deployment status
- Mark Phase 1 (Jekyll) as complete
- Document current GitHub Pages URL
- Preserve future migration options (Docusaurus, mdBook, VitePress)
Live site: https://dev-parkins.github.io/FerrisScript
This enables professional documentation hosting with proper markdown
rendering, anchor links, and navigation for ERROR_CODES.md and all
existing documentation.
Part of Phase 3B: ERROR_CODES.md enhancements (improved accessibility)
* docs: Improve documentation clarity with additional spacing in error and planning sections
* docs: Mark Phase 3A and 3B as complete in planning documents
Update phase tracking to reflect completion of:
- Phase 3A: Documentation URLs with hybrid strategy
- Phase 3B: ERROR_CODES.md enhancements and Jekyll infrastructure
Key achievements documented:
- Hybrid URL strategy (GitHub + custom site support)
- GitHub anchor bug fix with proper slugification
- Cross-references added to 10+ error codes
- Jekyll site live at dev-parkins.github.io/FerrisScript
- Professional landing page and navigation
- All 270+ tests passing
Remaining phases (3C-E) for future PRs:
- Phase 3C: Parser error recovery
- Phase 3D: Multi-error reporting
- Phase 3E: Diagnostic collection infrastructure
* docs: Fix theme parameter for jekyll pages (#33)
* fix: Update _config.yml plugins list for remote theme (#34)
* feat: Update to Hacker theme and fix URLs for GitHub Pages
- Change Jekyll theme from Cayman to Hacker (pages-themes/hacker@v0.2.0)
- Remove .html extensions from all internal links in index.md for GitHub Pages compatibility
- Update error code URL generation to use GitHub Pages URLs instead of GitHub blob URLs
- Old: https://github.com/dev-parkins/FerrisScript/blob/main/docs/ERROR_CODES.md#...
- New: https://dev-parkins.github.io/FerrisScript/ERROR_CODES/#e400-cannot-assign-to-immutable-variable
- Update all tests to match new URL format
- All tests passing (11 error_code tests)
GitHub Pages automatically strips .html extensions, so links now work correctly:
- ERROR_CODES instead of ERROR_CODES.html
- ARCHITECTURE instead of ARCHITECTURE.html
- FAQ instead of FAQ.html
- etc.
This ensures error messages in the compiler link directly to the live GitHub Pages documentation.
* ✨ New Feature: Phase 3C - Parser Error Recovery (#35)
* feat(parser): add error recovery infrastructure (Phase 3C-1)
Add panic-mode error recovery fields and methods to Parser:
Infrastructure added:
- panic_mode: bool field to track recovery state
- errors: Vec<String> field to collect multiple errors
- synchronize() method: skip to next safe point (;, }, fn, let)
- record_error() helper: collect errors, suppress cascading
Synchronization strategy:
- Conservative: suppress all errors while in panic mode
- Sync points: semicolon, right brace, fn keyword, let keyword
- Clear panic mode when sync point found
- Handle EOF gracefully (no infinite loops)
Implementation notes:
- Fields initialized in Parser::new()
- Methods are unused (dead code warnings expected)
- Will be used in Phase 2 (modify error handling)
- All 122 existing tests still pass
Part of Phase 3C: Parser Error Recovery
Related: docs/planning/v0.0.3/PHASE_3C_EXECUTION_PLAN.md
* feat: Implement Phase 3C - Parser error recovery with panic-mode synchronization
- Add panic_mode flag and errors collection to Parser struct
- Implement synchronize() method with sync points: semicolon, right brace, fn, let
- Implement record_error() for collecting errors without stopping parser
- Add get_errors() public API for accessing collected diagnostics
- Fix critical infinite loop bug (advance before synchronize)
- Add 23 recovery-specific tests (13 unit + 10 integration)
- Update documentation (LEARNINGS.md, README.md, CHANGELOG.md)
- Fix markdownlint configuration (disable MD025 for docs/index.md)
Changes enable parser to continue after syntax errors and collect multiple
diagnostics in a single pass, matching modern compiler standards (Rust,
TypeScript, Swift). Foundation for Phase 3D multi-error reporting.
Test Coverage:
- All 263 tests passing (0 failures)
- Zero clippy warnings (strict mode)
- Properly formatted code
Closes #TBD
Part of Phase 3: Error Documentation & Recovery
* docs: Enhance workstream execution prompt with Phase 3C learnings (#36)
* docs: enhance workstream execution prompt with Phase 3C learnings
Main Prompt Enhancements:
- Add explicit date verification to pre-flight checks
- Enhance TODO list discipline with marking instructions
- Make LEARNINGS.md required deliverable for all phases
- Generalize version references (v0.0.2 → v[VERSION])
- Expand link checking workflow with key navigation files
- Update Role & Expertise with learning capture requirements
- Add comprehensive LEARNINGS.md section with template
- Expand Common Pitfalls with date accuracy and LEARNINGS
- Restructure Final Notes with four discipline subsections
- Add deferral recommendations section to prompt file
- Add FerrisScript branch naming conventions (bugfix/, feature/, docs/)
- Add conventional commits format with examples
Prompts Folder Consolidation (Option A):
- Simplify README.md (280 → 100 lines): Keep purpose, when to use, quick start
- Simplify PR_TEMPLATE_SYSTEM.md (308 → 80 lines): Reference card only
- Delete QUICK_REFERENCE.md (230 lines): Fully redundant with main prompt
- Net result: -69% supplementary docs, +4% main prompt (1,066 lines)
Incorporate deferred work into version roadmaps:
- v0.0.4: Prompt testing, link checking automation (high priority)
- v0.0.5: Pre-flight script, LEARNINGS generator, LSP quick fixes
- v0.1.0+: Phase-specific prompts, telemetry, localization
Addresses feedback from Phase 3C execution:
- Dates often incorrect (defaulting to January)
- TODO list updates inconsistent
- Version-specific references in generic template
- LEARNINGS.md updates not emphasized enough
- Link checking coverage unclear
- Deferred work recommendations integrated into roadmaps
- Fragmented documentation across multiple files (consolidated)
* fix: clean up formatting and improve clarity in documentation files
* docs: move Prompts Folder Consolidation Analysis for improved Copilot usability
* docs: Add type promotion research and post-v0.1.0 roadmaps
- Created TYPE_PROMOTION_RESEARCH.md with comprehensive analysis:
- Analyzed 6 game engines (Godot, Unity, Unreal, Bevy, Lua, JavaScript)
- Compared 4 type promotion strategies
- Documented performance implications and FFI considerations
- Confirmed current i32/f32 approach is correct and Godot-compatible
- Updated academic paper references with actual links
- Created v0.2.0-roadmap.md (PROPOSED):
- Extended type system (i64, f64, i16, u8, u16)
- Language feature completion (deferred from v0.1.0)
- Enhanced LSP capabilities
- Explicit type casting
- Created v0.3.0-roadmap.md (PROPOSED):
- Checked arithmetic methods (overflow detection)
- Saturating arithmetic (clamp to min/max)
- Wrapping/overflowing methods
- LSP integration for overflow warnings
- Aligned roadmap placement with v0.1.0 goals:
- Respects v0.1.0 focus on Godot release and developer experience
- Type system enhancements deferred to post-v0.1.0 releases
- No blocking issues for Godot compatibility
Rationale:
- Explicit design philosophy over automatic promotion
- Maximizes static language potential
- Provides clear roadmap for future enhancements
* docs: Add markdown syntax highlighting research and v0.4.0 roadmap
- Created MARKDOWN_SYNTAX_HIGHLIGHTING_RESEARCH.md:
- Analyzed 5 syntax highlighting solutions (Linguist, Prism, Highlight.js, Shiki, Rust fallback)
- Detailed comparison matrix with effort, maintenance, and accuracy
- Recommended implementation timeline across 4 phases
- Short-term: Use Rust fallback (zero effort, works now)
- Medium-term: Submit to GitHub Linguist (v0.1.0-v0.2.0)
- Long-term: Shiki for docs site (v0.4.0+)
- Reuses VS Code TextMate grammar (no duplicate work)
- Created v0.4.0-roadmap.md (PROPOSED):
- Focus: Documentation site, compiler warnings, tooling enhancements
- Official documentation website (VitePress/Astro/Docusaurus)
- Shiki syntax highlighting integration
- GitHub Linguist submission
- Compiler intelligence (overflow warnings, unused variables, dead code)
- Enhanced LSP features (inlay hints, semantic highlighting)
- API documentation generator
- Interactive playground (stretch goal)
- Roadmap placement aligned with project priorities:
- v0.1.0: LSP and Godot integration (current focus)
- v0.2.0: Extended type system
- v0.3.0: Arithmetic safety
- v0.4.0: Documentation site and developer experience
Rationale:
- Professional documentation critical for adoption
- Syntax highlighting enhances developer experience
- Leverage existing TextMate grammar (Shiki approach)
- Start simple (Rust fallback), upgrade incrementally
* docs: Enhance syntax highlighting research with Rouge lexer and GitHub Pages guidance
- Add Rouge lexer as Option 5 for GitHub Pages/Jekyll support
- Include Ruby lexer implementation example for Rouge
- Expand comparison matrix to 7 columns (GitHub.com, GitHub Pages, Docs Site, Effort, Maintenance, Accuracy, Timeline)
- Add comprehensive decision guide with 6 scenarios mapping use cases to solutions
- Add quick decision table for easy reference
- Update implementation roadmap Phase 3 with GitHub Pages considerations
- Update v0.4.0 roadmap Task #2 with GitHub Pages alternatives (Highlight.js vs Rouge)
This research now covers all major platforms:
- GitHub.com markdown (Linguist)
- GitHub Pages/Jekyll (Rouge lexer)
- Custom documentation sites (Shiki, Prism.js, Highlight.js)
Incorporates community research on Rouge lexer implementation and GitHub Pages architecture.
* docs: Add prompt optimization research for request efficiency
- Create PROMPT_OPTIMIZATION_RESEARCH.md analyzing GitHub Copilot premium request optimization
- Key insight: Optimize for requests per feature, not tokens per request
- Analyze 8 optimization strategies with impact ratings and estimated savings
- High-impact strategies: clarification minimization, plan+execute fusion, deterministic completion
- Medium-impact strategies: self-validation loop, error recovery, context pre-loading
- Expected outcome: Reduce from 2-4 requests per feature to 1-1.5 requests (50-75% savings)
- Provide 3-phase implementation roadmap (high-impact → risk mitigation → polish)
- Define success metrics: quantitative (requests per feature) and qualitative (user experience)
Also fix markdown linting issues in MARKDOWN_SYNTAX_HIGHLIGHTING_RESEARCH.md:
- Convert emphasized text to proper headings (MD036)
- Option A and Option B are now proper level 4 headings
* feat(prompts): Implement Groups 1-2 of premium request optimizations
Group 1: Foundation + High-Impact Core
- Add Ambiguity Resolution Strategy section
- Self-resolve low-risk ambiguities with documented assumptions
- Only ask for high-risk decisions (API changes, security, data loss)
- Expected savings: 1 request per feature (50% reduction)
- Add Definition of Done section
- Explicit completion checklist (code, docs, validation, output)
- Clear DO NOT/ALWAYS lists for completion behavior
- Required completion marker: '✅ Workstream Execution Complete'
- Expected savings: 0.5-1 request per feature
- Enhance Context Pre-Loading section
- Full FerrisScript project identity and structure
- Code and documentation conventions
- Branch naming, commit format, quality standards
- Test commands and CI/CD pipeline details
- Version discovery (removed hardcoded versions, use docs/planning/)
- Expected savings: 0.25-0.5 request per feature
Group 2: Execution Flow Changes
- Update Execution Planning section
- Default: Brief plan (≤5 bullets) + immediate execution
- No approval required for clear requirements
- Fallback to explicit planning only if genuinely unclear
- Expected savings: 1 request per feature (50% reduction)
- Add Forward Progress Mandate section
- Always make forward progress unless critically ambiguous
- Make reasonable inferences, document assumptions
- Only stop for high-risk ambiguities
- Example scenarios with old vs new behavior
- Expected savings: 0.5 request per feature
- Add Self-Correction + Validation Loop section
- 4-phase validation: syntax, tests, quality, links
- Full license to fix code issues (no attempt limits)
- Only stop when: validation passes, exhausted reasonable fixes, or tool is broken
- Tool failure limit: 3 crashes (tool itself broken, not code)
- Expected savings: 0.5-1 request per feature
Total Expected Impact: Reduce from 2-4 requests/feature to 1-1.5 requests/feature (50-75% savings)
Fixes based on review:
- Remove hardcoded version numbers (v0.0.3, v0.1.0), use dynamic discovery from docs/planning/
- Clarify validation retry logic: unlimited code fix attempts, only limit tool crashes
* feat(prompts): Implement Group 3 - Polish and Optional Features
Group 3a: Hierarchical Output Structure (Strategy 5)
- Add 'Required Output Structure' section with 7 standardized sections
- Section 1: Executive Summary (goal, context, approach, assumptions)
- Section 2: Implementation (files created/modified, key changes, code highlights)
- Section 3: Documentation (created/updated, link validation results)
- Section 4: Testing (tests added, execution results, coverage impact)
- Section 5: Validation (build status, linting status, acceptance criteria)
- Section 6: Post-Execution Notes (decisions, assumptions, recommendations, limitations)
- Section 7: Completion Marker (deliverables summary, validation status, next action)
- Benefits: Easy to scan, no ambiguity, evidence provided, reduces follow-up questions
- Expected savings: 0.25 request per feature
Group 3b: Execution Mode Toggle (Strategy 6)
- Add 'Execution Modes' section with 3 modes: full, plan, execute
- Mode 'full' (default): Plan + Execute + Document + Test in one pass
- Mode 'plan': Only create execution plan, no implementation (exploratory)
- Mode 'execute': Skip planning, proceed directly to implementation
- Mode detection: Auto-detect from user language or explicit mode parameter
- Usage: /prompt #file:workstream-execution.prompt.md mode=[mode]
- Benefits: Flexibility for different scenarios, control over premium request usage
- Expected savings: 0 (flexibility feature, not optimization)
Total Group 3 Impact: +0.25 requests savings + improved UX clarity
Note: Both sections in same file, staged together. Hierarchical Output Structure
is higher priority (improves clarity), Execution Mode Toggle is optional (adds flexibility).
All 8 optimization strategies now implemented:
✅ Strategy 1: Clarification Minimization (HIGH - Group 1)
✅ Strategy 2: Plan + Execute Fusion (HIGH - Group 2)
✅ Strategy 3: Deterministic Completion (MEDIUM-HIGH - Group 1)
✅ Strategy 4: Self-Correction + Validation (MEDIUM - Group 2)
✅ Strategy 5: Hierarchical Output Structure (LOW-MEDIUM - Group 3)
✅ Strategy 6: Execution Mode Toggle (LOW - Group 3)
✅ Strategy 7: Error Recovery Directive (MEDIUM - Group 2)
✅ Strategy 8: Context Pre-Loading (MEDIUM-HIGH - Group 1)
Total Expected Impact: 50-75% reduction in premium requests (from 2-4 to 1-1.5 per feature)
* fix(prompts): Clarify version planning discovery logic
Clarify that active roadmap is the LOWEST version number, not highest:
- Roadmaps are built outwards (plan future while working on earliest version)
- Example: v0.2.0, v0.3.0, v0.4.0 exist → active work is v0.2.0 (lowest = current)
- Higher-numbered roadmaps are forward planning, not current work
- Add explicit 'Why lowest' explanation to prevent misinterpretation
This ensures Copilot correctly identifies the current active version when
multiple roadmaps exist in docs/planning/.
* feat(vscode): Phase 4 - Code Completion Provider (v0.0.3) (#37)
* feat(vscode): Add code completion provider for FerrisScript (Phase 4)
Implement context-aware completion for keywords, types, and functions in VS Code extension.
Features:
- Keyword completion: let, mut, fn, if, else, while, return, true, false
- Type completion: i32, f32, bool, String, Vector2, Node, void
- Function completion: print with parameter hints
- Context-aware suggestions:
- Type position (after ':') shows only types
- Statement start shows statement-level keywords
- Expression context shows all keywords + functions
- Snippet support for structured code insertion
Technical Implementation:
- TypeScript-based extension infrastructure (tsconfig, npm scripts)
- CompletionItemProvider using VS Code API
- Regex-based context detection
- Comprehensive documentation with examples
- Manual testing guide for validation
Documentation:
- PHASE_4_VS_CODE_COMPLETION.md: Full implementation plan
- PHASE_4_MANUAL_TESTING.md: Testing guide with 10 test scenarios
- Extension README and CHANGELOG updated
- v0.0.3 roadmap documents aligned
- LEARNINGS.md updated with Phase 4 insights
References:
- Phase 4 Document: docs/planning/v0.0.3/PHASE_4_VS_CODE_COMPLETION.md
- Testing Guide: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Roadmap: docs/planning/v0.0.3/README.md
- v0.0.3 Roadmap: docs/planning/v0.0.3/v0.0.3-roadmap.md
Phase: 4 of 9 in v0.0.3 (Editor Experience Alpha)
Status: Complete - Ready for manual testing and PR
* style(docs): Fix markdown linting in Phase 4 documentation
* fix(vscode): Address Phase 4 feedback - version, linting, docs
Fixes:
- Update extension version to 0.0.3 (aligns with completed work)
- Remove redundant activationEvents (VS Code auto-generates from contributes)
- Create extensions/vscode/.gitignore (exclude node_modules, out/, *.vsix)
- Exclude extensions/vscode/node_modules from markdown linting
Documentation:
- Add TYPE_SYNC.md: comprehensive type synchronization guide
- Documents manual sync requirements
- Proposes validation scripts (v0.0.4)
- Proposes type generation automation (v0.1.0+)
- Plans LSP-based dynamic types (v0.0.5)
- Update v0.0.3-roadmap.md: add Post-v0.0.3 Recommendations section
- Type synchronization timeline
- Build automation (local dev, CI/CD, release)
- VSIX distribution strategy
- Update README.md:
- Add VSIX installation instructions
- Add type completion maintenance section
- Document extension activation behavior
- Add architecture notes
- Update CHANGELOG.md: promote v0.0.3 Phase 4 to released
Rationale:
- TypeScript compilation working (error was VS Code cache issue)
- activationEvents removed per VS Code best practices (1.75+)
- node_modules properly excluded from git and linting
- Comprehensive documentation for future type synchronization
- Clear roadmap for build automation and VSIX distribution
* docs(prompt): Add Phase 4 learnings and GitHub CLI best practices
GitHub CLI Documentation:
- Create GITHUB_CLI_PR_CREATION.md with 3 solutions for backtick escaping
- Recommend --body-file approach as standard (avoids shell interpretation)
- Document PowerShell/Bash differences and workarounds
- Include PR template examples and automation helpers
- Provide lessons learned from Phase 4 PR creation issue
Prompt Improvements Documentation:
- Create PROMPT_IMPROVEMENTS_PHASE4.md analyzing Phase 4 execution
- Document 6 issues that needed correction:
1. GitHub CLI backtick escaping (PR corruption)
2. Version misalignment (0.1.0 vs 0.0.3)
3. Missing .gitignore (node_modules tracked/linted)
4. Redundant activationEvents (deprecated VS Code practice)
5. TypeScript error communication gap (cache issue)
6. Reactive documentation (type sync, build automation, VSIX)
- Provide 7 prompt improvement recommendations:
1. GitHub CLI best practices (--body-file)
2. Version alignment verification
3. Standard project files checklist
4. Proactive maintenance documentation
5. VS Code extension best practices (2024+)
6. Discrepancy investigation protocol
7. Automation decision framework
- Define success metrics and validation approach
Rationale:
- Phase 4 revealed patterns where Copilot was reactive vs proactive
- Backtick issue was most visible problem (corrupted PR description)
- Documentation improvements prevent repeat issues in future phases
- Framework helps decide when to automate vs document vs roadmap
Impact:
- Future phases should anticipate maintenance needs proactively
- PR creation will use reliable --body-file approach
- Standard files (.gitignore, package.json) created upfront
- Version context verified before setting versions
References:
- Phase 4 execution: 3 commits, 6 feedback items, 1 PR failure
- Phase 5 target: 2 commits, ≤2 feedback items, 0 failures
- Phase 6+ goal: 1 commit, 0 corrections, 100% smooth
* exclude markdownlint rule M037
* docs: Apply Phase 4 prompt improvements
Implement 7 prompt improvements identified during Phase 4 execution to
keep them contextually close to when the work was done.
Changes:
1. **Temp Directory Approach** (GitHub CLI PR Creation):
- Added /temp/ to .gitignore for temporary PR body files
- Updated GITHUB_CLI_PR_CREATION.md examples to use temp/pr-body.txt
- Updated PROMPT_IMPROVEMENTS_PHASE4.md examples to use temp/
- No cleanup needed since directory is gitignored
2. **Type Sync Documentation Relocation**:
- Moved extensions/vscode/TYPE_SYNC.md to
docs/planning/v0.0.3/VSCODE_TYPE_SYNCHRONIZATION.md (git mv)
- Updated v0.0.3 roadmap reference
- Updated vscode README link
- Better reflects that type sync is v0.0.3 planning concern, not
ongoing vscode extension documentation
3. **VS Code Best Practices Dating**:
- Added 'Best Practices (As-of October 2025, VS Code 1.75+)' section
to extensions/vscode/README.md
- Documents current best practices with version context:
* No explicit activationEvents (auto-generated in 1.75+)
* Use @vscode/vsce for packaging
* TypeScript 5.x+ targeting ES2020+
* ESLint with TypeScript integration
* @vscode/test-electron for testing
- Includes version-specific notes (1.75+, 1.70+, 1.60+)
- Provides future change monitoring guidance
4. **Automation Framework Roadmap**:
- Added items 6 (Automation Decision Framework) and 7 (GitHub CLI
Helper Script) to v0.1.0-ROADMAP.md
- Item 6: 4-phase automation approach (validation → local dev →
CI/CD → release) with 8-12 days total effort
- Item 7: Standardized PR creation helper script with 1 day effort
- Both items provide clear path from Phase 4 learnings to v0.1.0+
implementation
5. **Metrics Clarification**:
- Clarified that success metrics in PROMPT_IMPROVEMENTS_PHASE4.md
measure Phase 5 workstream execution quality, not prompt work itself
- Added purpose statement: metrics compare Phase 5 (with improvements)
against Phase 4 baseline to validate prompt improvements reduce
rework
- Metrics track: commits needed, feedback items, PR failures,
proactive documentation
Related:
- PR #37 (Phase 4 implementation)
- docs/archive/prompt/development/GITHUB_CLI_PR_CREATION.md
- docs/archive/prompt/development/PROMPT_IMPROVEMENTS_PHASE4.md
* docs(roadmap): Improve formatting and clarify benefits for development workflows
* fix: Resolve Phase 4 VS Code completion issues
Implement fixes for three issues discovered during manual testing:
**Issue #1 - Statement Keywords in Expression Context (FIXED)**
- Problem: Statement-only keywords (fn, let, while, return) were appearing
in expression context where they are syntactically invalid
- Solution: Added filtering in provider.ts to exclude statement-level
keywords from expression completions
- File: extensions/vscode/src/completion/provider.ts
- Test: Test 5 - Context-Aware Completion
**Issue #2 - Boolean Literal Filtering (DOCUMENTED)**
- Problem: User expected 'false' when typing 'tr'
- Solution: This is correct VS Code behavior (prefix filtering). Updated
documentation to clarify expected behavior.
- File: docs/planning/v0.0.3/PHASE_4_MANUAL_TESTING.md
- Test: Test 7 - Boolean Literal Completion
**Issue #3 - Type Completion After Typing Characters (FIXED)**
- Problem: No type completions when typing 'let pos: V' (types only
showed immediately after colon)
- Solution: Updated context detection regex from /:\s*$/ to /:\s*\w*$/
to handle partial type names
- File: extensions/vscode/src/utils/context.ts
- Test: Test 10 - Godot Type Completion
**Documentation Added**:
- PHASE_4_TESTING_ANALYSIS.md: Detailed analysis of all three issues
- PHASE_4_FIXES_VALIDATION.md: Quick validation guide for testing fixes
- Updated PHASE_4_MANUAL_TESTING.md: Corrected expected results
**Validation**: Extension compiles successfully. Ready for manual testing.
Related: PR #37
* docs: Update Phase 4 testing results and remove compiled output
**Testing Updates**:
- Completed test results summary (all tests pass with 1 minor note)
- Clarified Test 10: Vector2/void prefix filtering is expected behavior
- Clarified Test 9: return statement expands but not auto-suggested (minor)
- Extension version corrected to 0.0.3
- Test date: October 7, 2025
**Git Cleanup**:
- Removed extensions/vscode/out/ from git tracking
- Folder is properly gitignored but was committed earlier
- Files still exist locally for development use
**Test Results Summary**:
- 10/10 tests pass (Test 9 has minor note)
- All core functionality working as expected
- Context-aware completion verified
- Type completion with partial names verified
- Statement keyword filtering verified
Ready for PR approval and merge.
* docs: Implement Tier 1 improvements from Phase 4 learnings
Implement high-value, low-effort improvements (8 min investment, ~2 hrs
saved in Phase 5):
**Tier 1 - Immediate Implementation**:
1. **Context Detection Testing Guide** (5 min)
- New: docs/CONTEXT_DETECTION_TESTING.md
- Test matrix template for context-aware features
- Covers exact positions, partial input, negative cases
- Includes FerrisScript examples and validation checklist
- Prevents 1-2 hours debugging edge cases later
2. **VS Code Prefix Filtering Documentation** (2 min)
- New: docs/PREFIX_FILTERING_BEHAVIOR.md
- Documents VS Code's automatic prefix filtering behavior
- Prevents confusion about 'missing' completions
- Includes examples, testing practices, troubleshooting
- Saves 15-20 minutes explaining behavior later
3. **.gitignore Setup Checklist** (1 min)
- New: docs/GITIGNORE_SETUP_CHECKLIST.md
- Checklist for proper .gitignore before first commit
- Tech-specific templates (Node.js, Rust, Python, Go)
- Recovery steps if files already committed
- Saves 5-10 minutes cleanup later
**Tier 2/3 - Added to Roadmaps**:
4. **VS Code Extension Testing Infrastructure** (Tier 2)
- Added to v0.1.0-ROADMAP.md item #8
- Context detection unit tests (1 hour)
- Completion provider integration tests (2 hours)
- CI integration (30 minutes)
5. **Completion Ranking Optimization** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #9
- Improve auto-suggestion ordering
- 2-4 hours investigation + implementation
- Target: v0.1.0+ after core features
6. **Semantic Completion** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #10
- Context-aware suggestions based on types
- Requires compiler integration
- Target: v0.2.0+ (1-2 days research + 2-3 days implementation)
7. **Language Server Protocol Integration** (Tier 3)
- Added to v0.1.0-ROADMAP.md item #11
- Full LSP: go-to-def, find refs, rename, hover, diagnostics
- Major milestone requiring architectural planning
- Target: v0.2.0+ (1-2 weeks)
**Documentation Fixes**:
- Auto-fixed markdownlint issues across all Phase 4 docs
- Fixed duplicate 'Future Investigation' heading → 'Long-Term Exploration'
- All linting now passes
**References**:
- docs/planning/v0.0.3/PHASE_4_LESSONS_LEARNED.md
- Tier 1 ROI: 8 min → ~2 hours saved
Related: Phase 4 completion testing and issue resolution
* Phase 5: VS Code Hover & Problem Panel (v0.0.3) (#38)
* feat(vscode): Phase 5 - Hover Tooltips & Problem Panel (v0.0.3)
Implements comprehensive IDE features for FerrisScript VS Code extension:
Hover Tooltips:
- Keyword hover with descriptions, syntax, and examples (9 keywords)
- Type hover with type information and usage (7 types)
- Function hover with signatures and parameters (print)
- Markdown-formatted content with syntax-highlighted code blocks
Error Diagnostics:
- DiagnosticCollection for compiler error integration
- Error parser for FerrisScript error format (E001-E499 codes)
- Problem panel integration with inline red squiggles
- Save-triggered diagnostics with compiler auto-detection
- Graceful degradation when compiler not available
File Icons:
- Custom SVG icon for .ferris files (Rust-inspired crab + Godot accent)
- Icon theme registration in VS Code
Documentation & Testing:
- PHASE_5_VS_CODE_HOVER.md: Complete execution plan (10 criteria, 9 phases)
- PHASE_5_MANUAL_TESTING.md: 15 comprehensive test cases
- Updated README with Phase 5 features prominently
- Updated CHANGELOG with detailed Phase 5 additions
- Updated v0.0.3 planning documents (README, roadmap, LEARNINGS)
Technical Implementation:
- src/hover/: provider.ts, keywords.ts, types.ts, functions.ts
- src/diagnostics/: provider.ts, parser.ts
- resources/icons/: ferrisscript.svg, icon theme JSON
- Updated extension.ts with hover and diagnostic provider registration
All code compiles successfully. Extension ready for manual testing.
Related to #2 (v0.0.3 milestone)
* fix(vscode): Phase 5 - Icon theme and diagnostic provider improvements
Issues Fixed:
1. Icon theme applying to all file types (removed default file mapping)
2. Diagnostic provider error handling (improved stderr capture, logging)
3. Testing documentation (updated for CLI limitation)
Key Changes:
- extensions/vscode/resources/icons/ferrisscript-icon-theme.json
* Removed 'file' property that applied icon to all files
* Now only maps .ferris extension to custom icon
- extensions/vscode/src/diagnostics/provider.ts
* Fixed runCompiler() method error capture
* Added console logging for debugging
* Improved user notifications when compiler not found
* Graceful degradation when CLI unavailable
- docs/planning/v0.0.3/PHASE_5_MANUAL_TESTING.md
* Updated setup instructions (removed compiler requirement)
* Marked Tests 8-11 as 'Not Testable (CLI not implemented)'
* Updated Test 12 to verify graceful degradation
- extensions/vscode/README.md
* Added CLI requirement warning for diagnostic features
- docs/planning/v0.0.3/PHASE_5_FIXES_VALIDATION.md
* New: Comprehensive documentation of issues and fixes
Root Cause: FerrisScript has no standalone CLI executable (only library crates).
Diagnostic provider infrastructure is complete and ready for future CLI.
Testing: Icon fix needs user verification. Hover features working (Tests 1-7 pass).
* test(vscode): Phase 5 manual testing results
Test Results:
- Tests 1-7: ✅ All hover features passing
- Tests 8-11: ⏭️ N/A (require CLI - not implemented)
- Test 12: ✅ Graceful degradation verified
- Test 13: ⚠️ Icon theme cache issue identified
- Test 14: ✅ Hover performance excellent (~50ms)
- Test 15: ⏳ Pending icon fix verification
Pass Rate: 9/15 (5 N/A, 1 cache issue)
Issues Documented:
1. Icon Theme Cache - VS Code caching old configuration
- Code fix is correct (JSON has no 'file' property)
- Requires manual cache clear by user
- Created ICON_THEME_FIX_VERIFICATION.md with steps
2. Diagnostic Features - Expected limitation
- Infrastructure complete and ready
- Awaiting CLI implementation (future phase)
Acceptance Criteria:
- 6/10 fully met (all hover features)
- 3/10 awaiting CLI (diagnostic features)
- 1/10 cache issue (icon theme)
Files Updated:
- PHASE_5_MANUAL_TESTING.md: Added test results, summary, issues
- ICON_THEME_FIX_VERIFICATION.md: New troubleshooting guide
Next: User clears icon cache, verifies fix, completes Test 15
* fix(vscode): Add missing package.json fields for VSIX packaging
Fixed Issues:
1. Missing activationEvents property (required when main property exists)
- Added: workspaceContains:**/*.ferris activation event
- VS Code auto-infers onLanguage:ferrisscript from contributes
2. Incorrect .vscodeignore configuration
- Removed: out/ from ignore (needed for compiled JS)
- Added: src/, tsconfig.json, .eslintrc.json (source files)
- Fixed: Now ships compiled JS, not TypeScript source
3. Missing icon.png
- Copied: assets/ferrisscript-logo.png → extensions/vscode/icon.png
- Extension marketplace icon now present
4. Missing LICENSE
- Copied: LICENSE → extensions/vscode/LICENSE
- Satisfies vsce package requirements
Result: Successfully packaged as ferrisscript-0.0.3.vsix (48 files, 879.95KB)
Installation: Extension installed via 'code --install-extension ferrisscript-0.0.3.vsix'
This should resolve the icon theme caching issue - fresh VSIX package = fresh install.
* fix(vscode): Remove icon theme - fundamental misunderstanding of VS Code icon system
Issue: Icon theme replaced ALL file icons, not just .ferris files
Root Cause: Icon themes are COMPLETE icon sets (like Seti, Material Icons)
- Must define icons for hundreds of file types
- Cannot add single file icon without defining all others
- When selected, replaces ALL file icons in VS Code
Resolution: Removed iconThemes contribution from package.json
- Removed: contributes.iconThemes section
- Kept: All other features (hover, completion, diagnostics)
- Updated: CHANGELOG.md to remove file icon mention
- Updated: PHASE_5_MANUAL_TESTING.md Test 13 status
Why This Is Correct:
1. Language extensions (Rust, Python, Julia) don't ship icon themes
2. File icons are managed by dedicated icon theme extensions
3. Icon themes require defining icons for ALL file types
4. Not feasible for single-language extension
Impact:
- .ferris files will use default file icon from active icon theme
- All other extension features (hover, completion, diagnostics) unaffected
- Extension now follows VS Code best practices
Testing: Packaged and installed - 'FerrisScript Icons' no longer appears in icon theme list
Acceptance Criteria Update: 7/10 met (removed infeasible criterion)
* docs: Add icon theme lesson learned to LEARNINGS.md
Documented complete analysis of icon theme misunderstanding:
- Why icon themes are complete replacements, not augmentations
- Technical details of VS Code icon system architecture
- Why we can't use icon themes for single file type
- How other language extensions handle this (they don't ship icon themes)
- Alternative approach: Submit PRs to popular icon theme extensions
- Recommendations for future development
Key Takeaway: Icon themes must define ALL file types. Language extensions
should focus on core features (hover, completion, diagnostics) and leave
icons to dedicated icon theme extensions.
* docs: Add Phase 5 PR description and summary
Comprehensive PR documentation including:
- Feature overview (hover tooltips, diagnostic infrastructure)
- Testing results (9/15 passing, 5 N/A, 1 removed)
- Issues resolved (icon theme, VSIX packaging, CLI limitation)
- Documentation created (6 new files, 4 updated)
- Deferred work (CLI implementation, LSP server)
- Acceptance criteria status (7/10 met)
- Deployment instructions and verification checklist
Ready to create PR: feature/v0.0.3-phase-5-hover → develop
* docs: Add Phase 5 completion summary
Final summary document including:
- All accomplishments and deliverables
- Testing results and acceptance criteria
- Key lessons learned (icon theme, VSIX, CLI)
- Statistics (23 files, +2,935 lines)
- Deferred work and priorities
- PR details (#38)
- Success metrics and next steps
Phase 5 complete: Hover tooltips working, diagnostic infrastructure ready,
extension packaging working, comprehensive documentation created.
* docs: Update Phase 5 documentation and testing guides to reflect icon theme removal and fixes
* security(vscode): Fix command injection vulnerabilities in diagnostic provider
Fixed 2 security hotspots:
1. findCompiler() - Use spawnSync instead of execSync for PATH check
2. runCompiler() - Use spawnSync with arguments array instead of string concatenation
Security improvements:
- Use spawnSync instead of execSync (no shell spawning)
- Pass arguments as array to prevent injection
- Explicit shell: false option
- Added security documentation in JSDoc
Prevents command injection through PATH manipulation or file path injection.
Follows OWASP secure coding practices.
* docs: Add security fixes documentation
Comprehensive documentation of command injection vulnerabilities fixed:
- Detailed analysis of both security hotspots
- Before/after code comparisons
- Attack vector explanations
- Risk assessment (High → Low)
- Verification and testing
- OWASP references and best practices
Documents commit f7731b5 security improvements.
* security(vscode): Enhance security by replacing execSync with spawnSync to prevent command injection vulnerabilities
* security(vscode): Add compiler path configuration for PATH security hardening
Addresses residual PATH security concern by adding user configuration option.
Changes:
1. Added ferrisscript.compilerPath setting in package.json
- Allows users to specify absolute path to trusted compiler
- Bypasses PATH entirely when configured
- Recommended for security-sensitive environments
2. Updated findCompiler() to check configuration first
- Priority 1: User-configured absolute path (most secure)
- Priority 2: Workspace target directories
- Priority 3: PATH search (with timeout protection)
3. Enhanced security documentation
- Explains residual PATH risk
- Recommends absolute path configuration
- Documents defense-in-depth approach
Security Posture:
- Low residual risk with PATH (mitigated by spawnSync + timeout)
- Zero risk when absolute path configured
- Standard practice for CLI tool discovery (npm, cargo, python)
- User transparency via notifications
Security scanners may still flag PATH usage as informational/low priority.
This is acceptable for CLI tool discovery patterns.
* docs: Add PATH security hardening analysis and guidance
Comprehensive documentation for residual PATH security scanner finding.
Covers:
- Why PATH is flagged (even with spawnSync)
- Defense-in-depth approach (config → workspace → PATH)
- Risk assessment (Low → Negligible)
- Comparison with industry tools (Python, Rust Analyzer)
- User guidance for maximum security
- Scanner response and compliance recommendations
Provides justification for accepting low residual risk and proper
documentation for security audits.
* docs: Update PATH security hardening and residual risk mitigation guidance
* feat(tooling): Phase 6+7 - Development Tooling & CI Benchmarking (#39)
* feat(tooling): Phase 6+7 - Development tooling & CI benchmarking
Phase 6: Development Scripts
- Created scripts/lint.ps1 and lint.sh for cargo clippy linting
- Implemented pre-commit hooks (format, lint, quick tests)
- Updated install-git-hooks scripts to install pre-commit hook
- Added comprehensive lint and hooks documentation to scripts/README.md
Phase 7: Benchmark CI Integration
- Created .github/workflows/benchmarks.yml for CI benchmark tracking
- Workflow runs on main/develop branches
- Stores results as artifacts (30-day retention)
- Automatic PR comments with benchmark results
- Verified all existing benchmarks run successfully
Phase 9 Quick Wins:
- Added Build Status badge to README.md
Infrastructure:
- All 263 tests passing
- Zero clippy warnings
- Code formatted
- Documentation linted
Deliverables:
- 5/5 core scripts complete (test, bench, format, coverage, lint)
- Pre-commit hooks installed and functional
- CI benchmark tracking enabled
- Professional project presentation with badges
Closes #TBD (Phase 6+7 combined)
* fix(ci): update Rust toolchain version and add components for linting
fix(docs): update markdownlint action to latest version
* docs: add test case and matrix for Phase 4 completion evaluation
* feat(tooling): Add Git hooks uninstall scripts
- Add scripts/uninstall-git-hooks.ps1 for Windows
- Add scripts/uninstall-git-hooks.sh for Linux/macOS
- Update scripts/README.md with uninstall documentation
- Update Quick Reference table with new scripts
- Add manual removal alternatives
- Tested: Successfully removes pre-commit and pre-push hooks
Benefits:
- Easy hook removal for debugging or preference
- Consistent with install script UX
- Safe to run multiple times
- Clear feedback on what was removed
* fix(tooling): Ignore extensions directory in pre-push markdown linting
* infra: Consolidate code scanning & coverage, evaluate CodeQL (#40)
* infra: Consolidate code scanning and coverage reporting
- Move Codecov from ci.yml to code-scanning.yml for consolidation
- Disable SonarQube coverage (keep quality scanning, avoid redundancy)
- Create docs/infrastructure/ folder for CI/CD documentation
- Move COVERAGE_SETUP_NOTES.md to infrastructure folder
- Add comprehensive infrastructure documentation:
- README.md: Overview of all workflows, secrets, quality gates
- CODEQL_EVALUATION.md: CodeQL integration analysis (2-4h effort, medium value)
- Update workflow documentation (README.md, DEVELOPMENT.md)
- Update coverage references to new infrastructure folder
Rationale:
- Groups security/quality tools (SonarQube, Codecov) in one workflow
- Separates build/test (ci.yml) from analysis (code-scanning.yml)
- Easier to add future tools (CodeQL) without cluttering ci.yml
- Better organization: infrastructure docs in dedicated folder
CodeQL Decision:
- Do NOT implement for v0.0.3-0.0.4 (current tools sufficient)
- Re-evaluate for v0.1.0+ (when Rust support matures)
- Documented 2-4 hour integration effort with moderate value
- See CODEQL_EVALUATION.md for full analysis
Changes:
- .github/workflows/ci.yml: Remove coverage job, add redirect comment
- .github/workflows/code-scanning.yml: Add Codecov job, rename workflow
- .github/workflows/README.md: Document consolidation
- docs/DEVELOPMENT.md: Update coverage doc link
- docs/infrastructure/: New folder with 3 comprehensive docs
* security: Pin codecov-action to SHA for supply chain security
- Pin codecov/codecov-action to SHA e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 (v4.6.0)
- Pin actions/checkout to SHA 11bd71901bbe5b1630ceea73d27597364c9af683 (v4.2.2)
- Keep dtolnay/rust-toolchain@stable (no SHA pinning for toolchain updates)
Rationale:
- SHA pinning prevents supply chain attacks via compromised actions
- Codecov v4.6.0 is latest stable with security improvements
- Matches security pattern used in other workflows (ci.yml, sonarqube job)
- Ensures reproducible builds and audit trail
* fix(ci): Pin Rust toolchain version for consistency across workflows
* fix(ci): add rustup target installation before cross-platform builds
- Add 'rustup target add' step before building with --target flag
- Fixes error: can't find crate for std when building for non-native targets
- Error only appeared in CI after pushing to develop
Prevents build failures when CI builds for Linux/macOS/Windows targets by
ensuring the standard library for each target is installed before compilation.
Related changes:
- Document cross-compilation setup in DEVELOPMENT.md
- Add native release build check to workstream-execution.prompt.md
- Explain that cross-compilation from Windows requires platform-specific linkers
* chore: Prepare v0.0.3 Release - Editor Experience Alpha (#41)
* chore: prepare v0.0.3 release
- Bump version from 0.0.2 to 0.0.3 in all Cargo.toml files
- Update package.json to 0.0.3
- Add comprehensive v0.0.3 changelog entry with all phases
- Document completed features: error codes, suggestions, recovery, VS Code extension, dev tooling
- Document deferred items: Phase 3D/3E to v0.0.4, Phase 8 to v0.0.4, Phase 9 to v0.1.0
- Add release checklist document for tracking remaining tasks
Quality Checks:
✅ 271 tests passing
✅ Zero clippy warnings
✅ Code formatting clean
✅ Documentation lint passing
* docs: add deferred items tracking and compiler best practices
- Create DEFERRED_ITEMS_TRACKING.md with all v0.0.3 deferred items
* Phase 2B (keyword suggestions) → v0.0.4
* Phase 3D/3E (multi-error reporting) → v0.0.4
* Phase 8 (integration tests) → v0.0.4
* Phase 9 items → v0.1.0
* LSP features → v0.0.5
* Total 12 items with rationale, complexity, tracking
- Extract generalizable knowledge to docs/COMPILER_BEST_PRACTICES.md
* Error recovery patterns (always advance before sync)
* Adaptive similarity thresholds for typo detection
* Test-driven development insights
* Quality gates and tooling best practices
* Architecture patterns (defer complexity, separation of concerns)
* 10+ reusable patterns from v0.0.3 development
- Update README.md for v0.0.3
* Update VS Code extension version path (0.1.0 → 0.0.3)
* Add 'New in v0.0.3' section highlighting IntelliSense features
* Update maturity indicator (v0.0.2 → v0.0.3)
* Document code completion, hover, diagnostics features
Quality Improvements:
- All deferred items now tracked with target versions
- Generalizable patterns extracted for future reference
- Root README reflects current v0.0.3 capabilities
- Nothing lost in deferral process
* docs: Distribute v0.0.3 deferred items to version roadmaps
- Added Phase 2B, 3D, 3E, and Phase 8 to v0.0.4-roadmap.md
- Added Phase 9 items (coverage, rustdoc, marketplace, edge tests, code org) to v0.1.0-ROADMAP.md
- Added LSP testing infrastructure and configuration to v0.0.5-roadmap.md
- All 12 deferred items now tracked in appropriate version roadmaps
- Comprehensive implementation details, scope, and acceptance criteria included
Related: v0.0.3 DEFERRED_ITEMS_TRACKING.md
* docs: Add v0.0.3 coverage analysis and release documentation
- COVERAGE_ANALYSIS.md: Detailed 64.54% coverage breakdown
- Module-by-module analysis
- Gap priorities for v0.0.4 and v0.1.0
- Specific improvement targets (Godot 0% → 60%, Lexer 60.8% → 75%)
- POST_RELEASE_IMPROVEMENTS.md: CI and coverage enhancement opportunities
- Codecov on PRs (optional)
- Benchmark regression tracking
- CI optimization suggestions
- V0.0.3_RELEASE_PR_DESCRIPTION.md: Comprehensive release summary
- All 7 phases detailed
- 418 error codes, VS Code extension, dev tooling
- 271 tests, 64.54% coverage, quality metrics
- Migration guide and what's next
Related: v0.0.3 release preparation
* fix(release): update action-gh-release to specific commit for improved stability
* docs: Add v0.0.3 Release Review Summary with key metrics and coverage analysis
* feat(ci): integrate SonarCloud coverage reporting with LCOV format
- Add LCOV output format to tarpaulin in code-scanning.yml
- Configure sonar-project.properties to read coverage/lcov.info
- Document SonarCloud integration in technical docs
- Update POST_RELEASE_IMPROVEMENTS.md with implementation status
This enables SonarCloud quality gate to receive actual coverage metrics
while maintaining existing Codecov integration (dual reporting).
Related: Post-v0.0.3 CI enhancement
* docs: Add SonarCloud coverage integration completion summary
- Created comprehensive workstream summary document
- Documented implementation details and validation results
- Added recommendations for future work (quality gate thresholds, badges)
- Tracked success criteria and next steps for verification
Related: feat(ci) commit 179dddb
* docs: Add CI workflow duplication analysis and resolution
- Analyzed workflow execution patterns on develop branch
- Identified root cause: PR #31 open while pushing to develop
- Verified coverage IS running correctly (both Cobertura and LCOV)
- Verified main branch does NOT have duplication issues
- Documented 3 solution options with trade-offs
- Decision: Accept temporary duplication (Option 1) as standard pattern
- Establishes develop → main PR workflow for future releases
Key findings:
- Coverage runs on every develop push ✅
- SonarQube, markdown-lint, link-check duplicate (acceptable)
- Duplication stops automatically when PR is merged
- ~6-10 min CI overhead per push (temporary, worth simplicity)
Related: Post-v0.0.3 CI optimization analysis
* fix(ci): add job dependencies to ensure SonarQube receives coverage data
Root cause: Jobs ran in parallel, SonarQube scanned before coverage was generated
Solution: Sequential execution with job dependencies and artifact sharing
Changes:
- Renamed 'codecov' job to 'coverage' (more accurate name)
- Added 'needs: coverage' dependency to 'sonarqube' job
- Upload coverage reports (cobertura.xml + lcov.info) as artifacts
- Download artifacts in SonarQube job before scanning
- Added separate 'sonarqube-pr' job for pull requests (no coverage)
Expected results:
- SonarQube will now see LCOV coverage data
- Coverage should show ~64% (matching Codecov)
- Execution order: coverage (4 min) -> sonarqube (1.5 min)
Related: feat(ci) commit 179dddb (SonarCloud LCOV integration)
* docs(sonarcloud): finalize Rust limitation analysis and reject cargo-sonar
- Updated sonar-project.properties to exclude Rust code (not supported)
- Removed unnecessary coverage artifact download from workflow
- Created comprehensive coverage strategy document
- Evaluated cargo-sonar as alternative solution (rejected)
- Documented decision rationale with cost/benefit analysis
Key decisions:
- Accept SonarCloud limitation for Rust (no native support)
- Use Codecov for Rust coverage (superior UX, industry standard)
- Use SonarCloud for TypeScript quality (VSCode extension)
- Reject cargo-sonar (marginal value, duplicates Clippy/Codecov)
Files created:
- docs/COVERAGE_STRATEGY.md (complete coverage strategy)
- docs/planning/technical/SONARCLOUD_RUST_LIMITATION_ANALYSIS.md
- docs/planning/v0.0.4/SONARCLOUD_COVERAGE_INVESTIGATION_SUMMARY.md
All markdown linting passed, all links validated.
* docs(sonarcloud): update coverage strategy and limitations for Rust support
* fix(vscode): resolve SonarCloud TypeScript quality warnings
Resolved 10 SonarCloud warnings before PR merge:
TypeScript completion provider:
- Fixed S6836: Add block scopes to switch case statements
- Prevents lexical declaration issues in case blocks
TypeScript diagnostics provider:
- Fixed S2933: Mark diagnosticCollection and compilerPath as readonly
- Fixed S7059: Move async operations out of constructor
- Fixed S3776: Reduce cognitive complexity (18 → 13) by extracting methods
- Fixed S2486: Properly handle exceptions with logging and user notifications
Refactored findCompiler() into 4 focused m…
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.
📋 Phase 4 Summary
This PR completes Phase 4 of the v0.0.2 documentation workflow, delivering comprehensive security documentation, system architecture reference, automated documentation linting, and detailed example tutorials.
🎯 Objectives Achieved
📦 Deliverables
1. SECURITY.md (110 lines)
Location:
/SECURITY.md2. Documentation Linting CI (96 lines)
Files:
.github/workflows/docs-lint.yml- Automated linting workflow.markdownlint.json- Formatting rules.markdown-link-check.json- Broken link detectionFeatures:
3. ARCHITECTURE.md (917 lines)
Location:
/docs/ARCHITECTURE.mdContent:
Impact: Reduces onboarding time for new contributors
4. Enhanced Example Documentation (1,022 lines)
examples/hello/README.md (211 lines)
examples/move/README.md (308 lines)
_processvs_physics_processexamples/bounce/README.md (503 lines)
README.md Examples Section (72 lines)
🔧 Fixes Applied
Post-Initial Commit Fixes
ARCHITECTURE.mdfrom root (kept only in/docsperDOCUMENTATION_ORGANIZATION.md)cargo run --example hellodoesn't work (.ferrisfiles are scripts, not Rust examples)cargo test --package ferrisscript_compiler test_compile_hellodocs/ARCHITECTURE.md📊 Statistics
✅ Testing & Validation
Pre-Merge Checks
Commands Run
📚 Documentation
docs/PHASE_4_COMPLETION_REPORT.mdfor detailed metrics, time tracking, and learnings🎓 Key Learnings
🔗 Related Issues & PRs
👥 Reviewer Notes
Please Verify
/communityURL - should show 100% ✅hello) to verify clarityMerge Strategy
Recommendation: Squash and merge (to keep main history clean)
Alternative: Merge commit (to preserve Phase 4 branch history with 2 commits)
Both are acceptable - your preference!
📈 Impact
Before Phase 4
After Phase 4
✨ Thank You
Special thanks to:
Phase 4 Status: ✅ Complete
Next Phase: Phase 5 (Review & Merge)
v0.0.2 Progress: 67% (Phase 4 of 6)
Checklist
Type of Change
Documentation
Testing
Code Quality
Review
Commits: 2
Branch:
feature/docs-phase4Base:
main