Release 1.0: Aspid.FastTools rename, ID System, UIToolkit API#8
Release 1.0: Aspid.FastTools rename, ID System, UIToolkit API#8VPDPersonal wants to merge 199 commits into
Conversation
# Conflicts: # README.md
- Add regex caching in TypeExtensions with RegexOptions.Compiled - Centralize registry lookup logic in StringIdRegistryHelper - Remove duplicate FindRegistry/CreateRegistry methods - Improve performance: 10-100x faster registry lookups Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
@claude one-time review of this release PR. Focus on:
Do not push commits — just leave a single review comment summary. |
|
Claude finished @VPDPersonal's task in 6m 31s —— View job PR Review — Release 1.0
Source Generators — Incremental CacheOverall: solid. Both generators follow the three-stage predicate → transform → emit pattern correctly. No Specific things confirmed correct:
Minor —
return symbol.TypeKind switch
{
TypeKind.Class => "class",
TypeKind.Struct => "struct",
TypeKind.Interface => "interface",
_ => throw new InvalidOperationException($"Unsupported containing type kind: {symbol.TypeKind}"),
};An unrecognised Informational — var collected = callsProvider.Collect();
context.RegisterSourceOutput(collected, GenerateCode);Any single marker change forces re-generation of all marker extensions across the project. This is the right choice for now (all markers need to be in one file per type, so grouping is needed), but it's a consideration if this runs over very large projects. No action needed for 1.0. Unity / Editor Assembly BoundaryCLEAN. ID System — Public API🔴 Critical:
|
| Area | Status |
|---|---|
| Generator correctness | ✅ Solid — cache-safe, no symbol leakage, diagnostics clean |
| Assembly boundary | ✅ Clean — no UnityEditor references in Runtime |
| ID System API | IsCacheDirty / player builds) + minor discoverability notes |
| USS/BEM |
The critical IsCacheDirty bug should be fixed before release — any consumer trying to use IdRegistry in a built player will get silently empty results. Everything else is minor or informational.
* Add Claude Code GitHub Actions workflows * Add GitHub issue and pull request templates (#15) * Mark IdRegistry cache dirty on OnEnable for player builds --------- Co-authored-by: Claude <noreply@anthropic.com>
* Fix IdStruct generator crash on unrecognised TypeKind values * Redeploy Aspid.FastTools.Generators DLL
…tor (#18) Rename --aspid-fasttools-colors-gradient-button-bg to --aspid-fasttools-colors-gradient_button-bg and -accent likewise, in both the USS file and the C# CustomStyleProperty registrations. Co-authored-by: Claude <noreply@anthropic.com>
Rename URP Global Settings.asset to UniversalRenderPipelineGlobalSettings.asset and refresh related ProjectSettings/GraphicsSettings for the current URP version. Tighten the package.json description to highlight the actual feature set.
Reorganises the package Documentation/ tree: README, SerializedPropertyExtensions and VisualElementExtensions are split into Documentation/EN/ and Documentation/RU/ subfolders, dropping the _RU suffix (now expressed by the folder). Images/ stays at the Documentation root; inner READMEs point at it via ../Images/. Root README.md and README_RU.md links to per-feature references are retargeted to the new EN/RU paths. CLAUDE.md README-sync note updated to describe the new layout.
Replace raw Profiler crop with an HTML-mocked card render and rename the asset (plus its .meta) to aspid_fasttools_profiler_markers.png to match the snake_case file-naming policy. Updates all four README copies to point at the new path.
First public release of
Aspid.FastTools(com.aspid.fasttools1.0.0). The package was renamed fromAspid.UnityFastTools, restructured into a Unity package + standalone generators solution, and got a large feature pass.Source generators
ProfilerMarkersGeneratoremits aProfilerMarkerperthis.Marker()call site, keyed by enclosing type / member / line — supports.WithName(literal)and$"...".IdStructGeneratoremitsIIdboilerplate forpartialstructs marked with[UniqueId], and reportsAFID001/AFID002when the struct isn'tpartialor already declares the generated members. Pipeline data is value-equatable to keep Roslyn's incremental cache stable (regression-tested).ID System (beta)
A single
IdRegistry(ScriptableObject) maps names ↔ stable integer IDs for a givenIIdstruct.IdRegistryResolverlazily indexesType AQN → registryand updates incrementally viaAssetPostprocessor. The inspector (RegistryEditorCore) does C#-identifier validation, full Undo, an explicit Review / Clean-up flow, Sort/Group toolbar, and a manual Next ID with a backward-step warning. There's also anIdFieldVisualElementand an Open-Registry shortcut on theIdStructdrawer.Types & Enums
SerializableType/SerializableType<T>serializeSystem.Typevia assembly-qualified names with lazy resolution;TypeSelectorWindowis the shared IMGUI/UIToolkit picker.ComponentTypeSelectorAttributeand theTypeAllowenum tighten what can be picked.EnumValues<TValue>is a serializable enum→value dictionary with[Flags]support and a populate-missing context menu.UIToolkit
Large fluent API over
VisualElementcovering layout, sizing,IStyle, USS, child management, callbacks,IBindable, and per-element extensions (Image,Button,Foldout,HelpBox,List,ProgressBar,Slider,TextElement,Field,IMGUIContainer,INotifyValueChanged, manipulators,PropertyField). An optionalAspid.FastTools.Unity.VisualElements.Mathsatellite assembly addsINotifyValueChangedextensions forfloat2/3/4andint2/3/4, gated bycom.unity.mathematicsthroughversionDefines.Internal editor components
AspidLabel,AspidBox,AspidGradientButton,AspidHelpBox,AspidInspectorHeader,AspidAnimatedLogo,AspidAnimatedTitle,AspidAnimatedDotsBackground,AspidDividingLine,AspidHoverGradientOverlay— each with a fluentPresetand USS-driven custom style properties. Shared helpers (AspidStyles,StatusStyle,ThemeStyle,InlineStyle<T>,ICustomStyleExtensions) live next to them.Editor utilities
Fluent
SerializedPropertyextensions,VerticalScope/HorizontalScope/ScrollViewScope,MonoScript.GetScriptName(WithIndex), and aWelcomeWindow(Tools → Aspid FastTools → Welcome) that readspackage.jsonto install samples.Design system
BRANDBOOK.htmldocuments the palette, H1–H7 type scale and the 10 internal components. USS classes follow BEM (aspid-fasttools-{block}__{element}--{modifier}); custom properties follow a positional grammar (--{prefix}-{group}-{role}[-{state}][-{tone}]).Samples
Under
Samples~/(UPM convention):Types,EnumValues,Ids,ProfilerMarkers,VisualElements.Layout & rename
Folders renamed from
Aspid.UnityFastTools(.Generators)toAspid.FastTools(.Generators). Public API moved intoAspid.FastTools.{Types,Enums,Ids,UIElements,Editors}. Assemblies split intoAspid.FastTools(pure C#),Aspid.FastTools.Unity(runtime), the Mathematics satellite, andAspid.FastTools.Unity.Editor.Docs & tooling
Synced
README.md/README_RU.md(root +Documentation/),DESIGN.md,CLAUDE.md. TheAspid.FastTools.Claudeplugin is added as a git submodule, and there's local Claude Code automation — aPostToolUsehook that rebuilds the generators DLL on edits, plus thebuild-generator/sync-readmesskills andcode-reviewer/uss-bem-checkersubagents.Closes #9
Closes #11