4.2 KiB
Changelog
0.1.24 — 2026-08-11
Fixed
-
Manifest-style qualified reference values (
Type:Id, e.g.inheritFrom="AudioEvent:BaseSoundEffect",Sound="AudioEvent:JAP_Refinery_Select",Side="PlayerTemplate:Allies") now resolve to the plain-id definitions indexed from XML (mod orSageXml). Previously the plugin only applied the “last colon segment” rule to manifest asset names, so qualified XML references were reported as unresolved even when the definition existed (the reportedAudioEvent:BaseSoundEffectcase). -
The same normalization now applies to simple-content references, the semantic reverse index (Find All References / CodeLens counts), and the reference peek path, so hover, Ctrl+click, diagnostics, reference counts and unreferenced reports all agree.
-
Value completion keeps a
Type:prefix the user already typed:inheritFrom="AudioEvent:Base…completes toAudioEvent:BaseSoundEffectinstead of dropping the prefix. Plain ids without a prefix keep the previous bare-id behavior. -
inheritFromis now accepted on allBaseAssetType-derived assets (e.g.FXList,AIMicroManagerData,ObjectCreationList,OnDemandTextureImage,AITargetingHeuristic). The XSD only declares it onBaseInheritableAsset, but vanilla and Corona data use it more broadly. Attribute legality is now separate from the CodeLens / Find All References “reference target by design” filter, so the universal attribute does not widen the code-lens type list. -
simpleContentcomplex types (AudioFileRefWithWeight,MultisoundSubsoundRef) keep their XSD attributes (Weight,Volume,PitchShiftLow/High, ...) and their text content (<Sound>AudioFile</Sound>,<Subsound>VoiceEvent</Subsound>) is now handled as a typed asset reference by completion, hover, navigation, diagnostics, the semantic reference index, and Find All References. -
Fragment roots whose name also appears as a nested child type (e.g.
<EvaEvent>,<UpgradeTemplate>) now resolve to the top-levelAssetDeclarationtype instead of the colliding child type. -
Element-name completion for simple-content children now re-triggers value suggestions after inserting the
<Name>$1</Name>snippet.
Added
- 128×128 PNG extension icon (converted from
images/icon.webp). The.vsixno longer bundles theimagesfolder, so the large GIF demos stay out of the package.
0.1.22 — 2026-08-11
Fixed
- Manifest assets that share the same id under different types are now all kept in the by-id index. Previously the first same-id entry (e.g.
W3DHierarchy:AUMCV_HOVER) could shadow later definitions (e.g.W3DContainer:AUMCV_HOVER), causingModel@Nameand otherBaseRenderAssetTypereferences to be reported as unresolved even though the asset existed inStatic.manifest. xi:includewithout anxpointernow splices the target document's root element itself (XInclude semantics), so fragments likeGenericCelestialBuildingSuicide.xmlkeep their module wrapper (CreateObjectDie) instead of only inserting its children.- Fragment files (documents whose root is not
AssetDeclaration) no longer trigger standalone-document diagnostics: top-levelmissing-id, duplicate-id, unresolved-reference and undefined-define checks are skipped, unknown wrapper roots are not reported as unknown elements, and a known fragment root still validates its subtree's elements/attributes.
Added
- Missing
xi:includetargets now surface in the Problems panel asinclude-not-foundwarnings for the edited document (previously only tracked in indexer diagnostics).
0.1.21 — 2026-08-11
Added
- English/Chinese localization for the extension manifest, commands, settings, status bar, notifications, hover, completions, CodeLens, and diagnostics.
package.nls.*andl10n/bundles so future languages can be added without touching source code.- AI-generated project disclosure in both
README.mdandREADME.zh-CN.md.
Changed
- Packaged extension now includes localization resources.
npm run packageno longer fails on missing repository-link rewriting.
Fixed
- Parser errors carry stable codes and parameters so the UI layer can localize them while the parsing core stays VS Code-independent.