Skip to content

Releases: TheArcForge/Hades

Hades v1.0.0 — Public Release

09 Jun 16:19

Choose a tag to compare

The first public release: Phase 10 release/distribution infrastructure plus a graph relationship & coverage correctness round driven by field reports from a large Addressables-heavy project. The correctness work treats the scanner/graph as ground truth and adds honest signals where a gap is inherent (precompiled DLL types, runtime dispatch).

Added

  • Self-hosted marketplace listing (marketplace.json in plugin repo)
  • CI workflow for Bridge + Scanner tests on push/PR (ci.yml)
  • CI workflow for auto-syncing plugin repo on release tag (release.yml)
  • Plugin repo structural validation CI (validate.yml)
  • Release documentation: ReleasePipeline.md, plugin-publish-pipeline.md, anthropic-plugin-reference.md
  • Marketplace install path documented in plugin-README.md
  • nested_by on find_references_to — surfaces direct structural parents (nesting prefabs, prefab variants) separately from references, so a nested-only asset no longer reads as "unused" while reference_count stays free of transitive over-count
  • Honest coverage signals on relationship toolsstatic_analysis_coverage (names reflection / runtime dispatch / DI blind spots), package_scan degraded, and supertypes_external_unresolved counts on find_references_to / trace_dependencies / inheritance queries
  • package_scan_status flag in scan_health (get_project_summary)
  • Scene→prefab instantiates edgefind_references_to(prefab) now surfaces scenes that instantiate it
  • kind property on ScriptType nodes (class / struct / interface / enum / record)

Changed

  • Renamed Skills~/skills/ and Commands~/commands/ (Anthropic standard auto-discovery paths)
  • Enriched plugin.json with $schema, displayName, author object, license, homepage, repository, keywords
  • Removed explicit "skills" and "commands" fields from plugin.json (now auto-discovered by convention)
  • Version bumps: product 0.9.51.0.0; Bridge, Hub, and Scanner internals to 1.0.0
  • C# parser now emits ScriptType nodes for enums, records, and nested types (restores coverage lost in the Phase-9 tree-sitter swap); captures using-aliases and generic method-invocation / property / generic-return type arguments; replaces the base_type node property with a supertypes list
  • inherits_from vs implements is decided by the resolved supertype's kind, not base-list position (fixes missed first-party interfaces)
  • find_prefabs_with_component walks the full containment chain (finds deeply-nested component hosts) and de-dups variant-inherited components (count excludes inherited; total_including_inherited_variants reported)
  • Package-tier scan is non-destructive on failure (scan-then-reconcile instead of delete-then-rescan); longer package-tier timeout
  • Addressable group→member edge so addressable groups surface as referrers of their members

Fixed

  • trace_dependencies no longer reports the queried file's own methods as dependencies
  • find_references_to no longer over-counts via structural/transitive prefab edges, and no longer merges referrers of co-located sibling types into a .cs query
  • find_components_using_pattern reads the new supertypes property (was silently broken by the base_type removal)
  • Inference NullReferenceException on every rebuild after the first (PatternInferenceEngine dereferenced a never-persisted TargetFile); guarded, and the catch now logs the full exception
  • Test isolation — EditMode tests no longer leave the live GraphDatabase singleton null after a run (they save/restore it), so the graph stays queryable post-test

Fixed — field-fix batch (large Addressables project)

  • Rebuild-path unification — the Hades → Rebuild Graph menu ran a divergent RebuildAll that skipped ScanProjectSettings/ScanAddressables (and the Node C# scan), so menu rebuilds produced 0 AddressableGroup / 0 RenderPipelineAsset nodes. Collapsed all entry points onto RebuildParallel; removed dead RebuildAllChunked.
  • Addressable group membershipAddressableAssetGroup.entries was cast as IList (a Dictionary.ValueCollection, always null) → every group orphaned. Cast to IEnumerable; entries + addressable_for edges now populate and match the group .asset files.
  • Deferred-edge property losspending_edges gained a properties column (schema v3, additive migration); a forward-reference edge now keeps its {field}/{addressable:true} enrichment through deferral instead of resolving with NULL properties.
  • AddressableEntry path collision — entries no longer set Path to the real asset's path (kept in properties.asset_path); fixes path resolution / trace_dependencies landing on the entry instead of the asset.
  • Incremental edge erosion (Unity + C#) — re-scanning a changed asset cascade-deleted inbound edges from unchanged assets, which were never recreated and eroded each incremental. Inbound edges are now captured before delete and re-pointed after re-scan; the C# scanner deletes a file's full node set by file_id (was leaking NULL-guid ScriptType/ScriptMethod nodes).
  • Pending-edge classification — on a full pass, unresolved type-name edges (BCL/framework/attributes/generics/unscanned-package types) are now classified terminal (external/unindexed) instead of being logged "will resolve on next rebuild."
  • query_graph guardrail — an unknown from node type now errors and lists valid types instead of silently returning count:0.