Merged
Conversation
…ment validation for missing ids
…lates based on data feed context and add corresponding tests
…or AcuMate extension
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request introduces comprehensive logging infrastructure and validation enhancements to the AcuMate VS Code extension. The changes improve observability, enforce stricter HTML validation rules aligned with Acumatica platform requirements, and enhance IntelliSense behavior.
- Added structured logging system with a unified AcuMate output channel for tracking backend requests, cache operations, configuration changes, and command execution
- Implemented validation requiring
idattributes onqp-paneland mostqp-*controls (excludingqp-field,qp-label, andqp-include) - Enhanced template validation to enforce that
record-*prefixed templates only appear insideqp-data-feedelements
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| acumate-plugin/src/logging/logger.ts | New logging infrastructure with info/warn/error functions for unified output channel |
| acumate-plugin/src/logging/backend-logger.ts | Re-exports logging functions with backend-specific naming |
| acumate-plugin/src/extension.ts | Integrates logger, adds backend configuration state reporting, command invocation logging, and configuration change watchers |
| acumate-plugin/src/api/layered-data-service.ts | Adds logging for cache hits/misses and backend fetch operations |
| acumate-plugin/src/api/api-service.ts | Replaces console.log/error with structured logging for authentication and API requests |
| acumate-plugin/src/validation/htmlValidation/html-validation.ts | Adds id attribute validation for qp-panel and qp-* controls, validates record-* template placement within qp-data-feed |
| acumate-plugin/src/providers/html-completion-provider.ts | Filters record-* template suggestions based on qp-data-feed context |
| acumate-plugin/src/services/configuration-service.ts | Adds reload() method for dynamic configuration updates |
| acumate-plugin/snippets.json | Updates ValueChanged snippet to include field parameter in decorator |
| acumate-plugin/readme.md | Documents new validation rules and logging features |
| acumate-plugin/src/test/suite/htmlValidation.test.ts | Adds tests for id validation and record-* template placement |
| acumate-plugin/src/test/suite/htmlProviders.test.ts | Adds tests for record-* template completion filtering |
| acumate-plugin/src/test/fixtures/html/* | Updates existing fixtures to comply with new id requirements and adds new test fixtures |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
unbrokenclayman
approved these changes
Dec 25, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces comprehensive logging and improved observability across the AcuMate VS Code extension, along with enhancements to validation, completion, and snippet features. The most significant changes are the addition of structured logging for backend interactions and commands, more robust configuration state reporting, and tighter validation and IntelliSense alignment with Acumatica platform requirements.
Logging & Observability Improvements:
All extension subsystems now log to a single AcuMate output channel, providing structured logs for backend requests, cache hits/misses, configuration reloads, and command execution. This makes debugging and CI integration much easier. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
All VS Code commands now log their invocation (with arguments and timing where appropriate), and cache operations and backend feature initialization are tracked for auditing and troubleshooting.
The extension now actively reports backend configuration state, warning the user (with actionable prompts) if required settings are missing or backend features are disabled. Dynamic configuration changes are detected and handled gracefully.
Validation & Completion Enhancements:
Validation now requires
qp-paneland allqp-*controls (exceptqp-field,qp-label, andqp-include) to defineidattributes, catching missing identifiers and misbound panels before packaging.The extension enforces that
<qp-template name="record-*">is only valid inside<qp-data-feed>, matching runtime restrictions and filtering template name completions accordingly. [1] [2]IntelliSense & Snippet Improvements:
Template name completions now filter out
record-*entries unless editing inside a<qp-data-feed>, aligning suggestions with validation rules.The
ValueChangedsnippet now includes afieldparameter in the decorator and correctly shifts argument positions, improving event handler scaffolding accuracy.Other Notable Changes:
The initialization process now registers the logger, checks backend configuration, and sets up configuration watchers to ensure observability and feature readiness from extension startup.
TypeScript IntelliSense providers are now only initialized once and are guarded by backend configuration state, with detailed logging to clarify their activation.
These changes collectively make the extension more robust, observable, and user-friendly, especially when troubleshooting backend-powered features or integrating with CI.