Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
95c9bde
docs(samples): add visual walkthroughs in dedicated folders
VPDPersonal Sep 8, 2026
e85279b
feat(samples): polish demos and add theme-aware documentation media
VPDPersonal Sep 8, 2026
6fc8b15
feat(samples): refine demo media and add continuous surface trails
VPDPersonal Sep 8, 2026
62cb046
fix(samples): refine demo layouts, geometry and theme palettes
VPDPersonal Sep 8, 2026
a0e7020
docs(samples): align learning order and refresh sample visuals
VPDPersonal Sep 8, 2026
b97dbc3
style(samples): align code and comments with project standards
VPDPersonal Sep 8, 2026
ff5bd48
refactor(samples): drop brand and feature eyebrow labels
VPDPersonal Sep 10, 2026
3360598
feat(website): replace the navbar with a sidebar panel on desktop
VPDPersonal Sep 10, 2026
122a43c
feat(samples): bundle demo fonts and refresh EnumValues media
VPDPersonal Sep 10, 2026
c8b9116
feat(website): add client-side search, samples overview and API sidebar
VPDPersonal Sep 10, 2026
fe157e2
feat(website): turn the mobile drawer into the full-width navigation …
VPDPersonal Sep 10, 2026
28b67ef
style(website): round sidebar headers, switcher, search button and li…
VPDPersonal Sep 10, 2026
7a10846
style(website): round the sidebar footer icon and close-button highli…
VPDPersonal Sep 10, 2026
f0fbf45
feat(website): unify rounded 2px frames and show the last-updated date
VPDPersonal Sep 10, 2026
df89cc4
feat(website): click ripple on the dot canvas, compact footer, aligne…
VPDPersonal Sep 10, 2026
61acad5
fix(website): show only the current theme's sample media in productio…
VPDPersonal Sep 11, 2026
d2bf9c5
chore(claude): add launch configs for the website dev servers
VPDPersonal Sep 11, 2026
f3c72a7
fix(docs): prevent mobile table of contents overlap
VPDPersonal Sep 12, 2026
df0c6ad
docs: add samples overview and sharpen feature descriptions
VPDPersonal Sep 12, 2026
59dd4a4
docs: refine package overview and feature demonstrations
VPDPersonal Sep 13, 2026
0d03f01
docs: clarify pending Asset Store availability
VPDPersonal Sep 13, 2026
8660925
feat(editor)!: clarify display name helpers and improve documentation
VPDPersonal Sep 14, 2026
8a4b3ba
feat(editor): add setters without Undo and refine property docs
VPDPersonal Sep 14, 2026
1779b0c
docs: refresh package guides and profiler presentation
VPDPersonal Sep 14, 2026
6b84f96
docs: tighten ProfilerMarkers guide
VPDPersonal Sep 14, 2026
114277e
style(website): render sidebar group titles as serif labels
VPDPersonal Sep 14, 2026
9e897b7
chore(editor): remove stray preprocessor stub from GetDisplayNameWith…
VPDPersonal Sep 14, 2026
11e20f8
style(website): fix article top padding at 1.5rem
VPDPersonal Sep 14, 2026
1ce976f
style(website): restructure API sidebar and outline nested navigation
VPDPersonal Sep 14, 2026
d99721c
docs(intro): sharpen the landing page
VPDPersonal Sep 14, 2026
2cfee96
style(website): let feature previews share the column width
VPDPersonal Sep 14, 2026
172c4ba
docs(site): sync plugin guides and add tinted notice cutouts
VPDPersonal Sep 15, 2026
db30792
chore(launch): add RU dev server config on port 3001
VPDPersonal Sep 15, 2026
eec2597
fix(website): keep the in-article TOC visible on laptop widths
VPDPersonal Sep 15, 2026
9dda802
fix(website): keep TOC link colour on the introduction page
VPDPersonal Sep 15, 2026
4c219d6
feat(website): move the in-article TOC under the title
VPDPersonal Sep 15, 2026
c72a4fb
revert(website): restore the stock in-article TOC, keep the introduct…
VPDPersonal Sep 15, 2026
91bdef5
style(website): match the in-article TOC list to the desktop outline
VPDPersonal Sep 15, 2026
b5a75d2
feat(website): floating table of contents on laptop widths
VPDPersonal Sep 15, 2026
e90cbe8
style(website): tone the floating TOC to the code-block surface
VPDPersonal Sep 15, 2026
1060f12
feat(website): use the floating TOC on phones too
VPDPersonal Sep 15, 2026
4072e53
style(website): frame the serializable type capture like the profiler…
VPDPersonal Sep 15, 2026
3becad5
style(website): present features as cards and refine image framing
VPDPersonal Sep 15, 2026
3b98d00
docs(intro): tighten the lede and bundle the banner on the site
VPDPersonal Sep 15, 2026
017079d
docs: keep line breaks in table code cells on GitHub
VPDPersonal Sep 15, 2026
da778bb
docs(intro): list features as sections instead of a table
VPDPersonal Sep 15, 2026
23f0b5c
chore(website): serve a shared en+ru production build on port 3001
VPDPersonal Sep 15, 2026
446e199
docs(intro): expand the lede and link the translated README
VPDPersonal Sep 15, 2026
e3a6e8b
docs(intro): rework the lede, quick start and install options
VPDPersonal Sep 15, 2026
e320d7d
docs(intro): put installation first and size feature previews on GitHub
VPDPersonal Sep 15, 2026
802a99d
fix(website): keep GitHub alerts intact in the generated root README
VPDPersonal Sep 15, 2026
39b95bc
docs(intro): list the upm-branch note among the install options
VPDPersonal Sep 15, 2026
1ae528f
docs(intro): show the EnumValues feature with the sample's static cap…
VPDPersonal Sep 15, 2026
1744235
docs: rework editor extension pages and rebuild the SerializeReferenc…
VPDPersonal Sep 16, 2026
943a9d5
docs(visual-element): drop the duplicated inspector code from the pra…
VPDPersonal Sep 16, 2026
1f6ea14
docs: refresh enum-values and editor-helpers pages with site tweaks
VPDPersonal Sep 18, 2026
f97c855
docs: rework the SerializedProperty Extensions page and record featur…
VPDPersonal Sep 18, 2026
0c4abcb
docs: polish the editor extension pages and the mobile nav header
VPDPersonal Sep 19, 2026
8f77799
docs(visual-element): strip Unity API teaching, keep before/after tables
VPDPersonal Sep 19, 2026
08bc887
docs(profiler-markers): one example type, generated-code block, minim…
VPDPersonal Sep 19, 2026
cd8cf0a
style(website): neutral paper light theme, coloured admonition headings
VPDPersonal Sep 19, 2026
0dce6df
docs: rework EnumValues, add per-method headings to ProfilerMarkers a…
VPDPersonal Sep 19, 2026
11a032a
docs(profiler-markers): add themed profiler hierarchy diagrams
VPDPersonal Sep 19, 2026
a9316c8
feat(samples): add reusable themes and refresh documentation media
VPDPersonal Sep 20, 2026
b06581d
docs(site): refine type selector guides and documentation visuals
VPDPersonal Sep 21, 2026
5d25e31
docs(types): crop required field warning screenshot
VPDPersonal Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 59 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "website-ru-3001",
"runtimeExecutable": "npx",
"runtimeArgs": [
"docusaurus",
"start",
"--locale",
"ru",
"--port",
"3001",
"--no-open"
],
"cwd": "Website",
"port": 3001
},
{
"name": "website-dev",
"runtimeExecutable": "npx",
"runtimeArgs": [
"docusaurus",
"start",
"--port",
"3100",
"--no-open"
],
"cwd": "Website",
"port": 3100
},
{
"name": "website-dev-ru",
"runtimeExecutable": "npx",
"runtimeArgs": [
"docusaurus",
"start",
"--locale",
"ru",
"--port",
"3101",
"--no-open"
],
"cwd": "Website",
"port": 3101
},
{
"name": "website-serve-all",
"runtimeExecutable": "sh",
"runtimeArgs": [
"-c",
"npm run build && npx docusaurus serve --port 3001 --no-open"
],
"cwd": "Website",
"_note": "Only when Website/scripts/serve-all.sh is unusable: this ties the shared 3001 server to one session.",
"port": 3001
}
]
}
225 changes: 166 additions & 59 deletions .claude/skills/docs-site/SKILL.md

Large diffs are not rendered by default.

12 changes: 7 additions & 5 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
name: Docs

# Builds the Docusaurus site in Website/ and publishes it to GitHub Pages.
# Content comes from the package (Documentation/ and Samples~/*/README*.md, TUTORIAL*.md) and the root CHANGELOG*.md,
# Content comes from the package (Documentation/ and Samples~/*/Documentation/) and the root CHANGELOG*.md,
# so any change there rebuilds the site.

on:
push:
branches: [main]
paths:
- 'Website/**'
- 'README.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Documentation/**'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/README*.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/TUTORIAL*.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/Documentation/**'
- 'CHANGELOG*.md'
- '.github/workflows/docs.yml'
pull_request:
paths:
- 'Website/**'
- 'README.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Documentation/**'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/README*.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/TUTORIAL*.md'
- 'Aspid.FastTools/Packages/tech.aspid.fasttools/Samples~/*/Documentation/**'
- 'CHANGELOG*.md'
- '.github/workflows/docs.yml'
workflow_dispatch:
Expand All @@ -45,6 +45,8 @@ jobs:
cache-dependency-path: Website/package-lock.json
- run: npm ci
working-directory: Website
- run: npm run check-readme
working-directory: Website
- run: npm run build
working-directory: Website
- uses: actions/upload-pages-artifact@v3
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,18 @@ jobs:
fi
echo "package.json version matches: $PKG_VERSION"

- name: Validate documentation version
run: |
set -euo pipefail
VERSION="${{ steps.version.outputs.version }}"
for f in README.md "$PACKAGE_PATH/Documentation/README.md" "$PACKAGE_PATH/Documentation/ru/README.md" \
"$PACKAGE_PATH/Documentation/Images/status-badge-preview.svg"; do
if ! grep -qF "$VERSION" "$f"; then
echo "::error file=$f::$f does not mention $VERSION. Run scripts/set-version.sh $VERSION."
exit 1
fi
done

- name: Extract CHANGELOG section
id: changelog
run: |
Expand Down
4 changes: 3 additions & 1 deletion CLAUDE.md → AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ Unity package `tech.aspid.fasttools` (`Aspid.FastTools/Packages/tech.aspid.fastt
## Not obvious

- A change to generator or analyzer source reaches Unity **only** after `dotnet build -c Release` in that solution;
`dotnet test` (Debug) deliberately does not copy the DLL, so it is safe to run.
`dotnet test` (Debug) deliberately does not copy the DLL, so it is safe to run.
- The version lives in `package.json`, the badge SVG and the install URLs of both READMEs; bump all of them with
`scripts/set-version.sh <version>`, which the release workflow checks.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,11 @@ public struct Profile

// [Flags] key handling.
[SerializeField] private EnumValues<Modifier, float> _typedFlags;

// Object-reference values: the row draws an object field rather than a plain value or a foldout.
[SerializeField] private EnumValues<Element, AudioClip> _typedObjectValues;

// Tables inside a collection: the drawer is applied per element, one table per array entry.
[SerializeField] private EnumValues<Element, Color>[] _typedArray;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ public sealed class EnumValuesUIToolkitTest : MonoBehaviour
[SerializeField] private EnumValues<EnumValuesIMGUITest.Element, EnumValuesIMGUITest.Profile> _typedFoldout;

[SerializeField] private EnumValues<EnumValuesIMGUITest.Modifier, float> _typedFlags;

[SerializeField] private EnumValues<EnumValuesIMGUITest.Element, AudioClip> _typedObjectValues;

[SerializeField] private EnumValues<EnumValuesIMGUITest.Element, Color>[] _typedArray;
}
}
51 changes: 51 additions & 0 deletions Aspid.FastTools/Assets/DevTests/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# DevTests

Manual harnesses for `tech.aspid.fasttools`, kept in the development project only: nothing here is part
of the package or of its samples, and nothing here ships to users.

The package's own `Tests/Editor` assembly covers the logic, and `Samples~` covers the ordinary,
user-facing flows in UI Toolkit. What is left for this folder is what neither can do: render a drawer
through the IMGUI path, and hold assets that are deliberately broken.

## Types

`TypesIMGUITest` and `TypesUIToolkitTest` carry the same fields — `SerializableType`, its generic and
`SerializableMonoScript` variants, `[TypeSelector]` on strings and arrays, every `TypeAllow` category,
`Required`, and a `nameof` member reference. `TypesIMGUITestEditor` forces the first one through IMGUI,
so `Prefabs/TypesDevTest.prefab` shows both renderings of one field list side by side.

The prefab's `FastEnemy` child covers `ComponentTypeSelector`: `EnemyBaseEditor` is registered with
`editorForChildClasses: true`, so the inspector stays in IMGUI after the component swaps its own type.

`Scripts/DocsMedia` holds the types that appear in the published screenshots of
`Documentation/02-serializable-types.md`. Their namespaces are neutral and game-like because picker
breadcrumbs are visible in the captures; changing a name or a group there invalidates an image.

## SerializeReferences

`SerializeReferencesIMGUITest` and `SerializeReferencesUIToolkitTest` cover the notice states on
`Prefabs/SerializeReferencesDevTest.prefab`: an unset `Required` reference, one instance shared by two
fields, a missing type with Fix and Smart Fix, and a missing element inside a list.

`RequiredViolationsDevTest` leaves a managed reference and a type name unset on purpose, which is what
the Project References window groups under required violations and the Asset References window badges.

This folder is listed under **Excluded folders** in the project's SerializeReference settings, so the
project-wide scan and the `sr_gate` command pass over everything here; the samples carry their own broken
assets for that. Remove the entry to see these fixtures in Project References, and put it back afterwards.

`Scripts/Fixtures` backs three prefabs that exist as files rather than inspectors, because the audit
windows scan assets on disk: `WeaponPreset` (two ordinary references), `SharedWeaponPreset` (one
instance behind both fields) and `BrokenWeaponPreset` (a stored class name that resolves to nothing).

## Enums

`EnumValuesIMGUITest` and `EnumValuesUIToolkitTest` pair the same tables on
`Prefabs/EnumValuesDevTest.prefab`: the untyped variant with its type-picker row, single-line and
multi-field values, `[Flags]` keys, object-reference values, and tables inside an array.

## CliCommands

`sr_gate` exposes the SerializeReference gate scanner to `unity command`, so the scan returns JSON from
the running Editor instead of a batchmode relaunch. It is the only assembly here, because it needs the
package's internals.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,5 @@ MonoBehaviour:
- rid: 2339642446330462276
type: {class: Shotgun, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 37
_pellets: 8
_spread: 12
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7412330891455062001
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7412330891455062002}
- component: {fileID: 7412330891455062003}
- component: {fileID: 7412330891455062004}
m_Layer: 0
m_Name: SerializeReferencesDevTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7412330891455062002
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7412330891455062001}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7412330891455062003
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7412330891455062001}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b420f95844b84734b4a50fffdc0a01e3, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Aspid.FastTools.DevTests.SerializeReferences.SerializeReferencesIMGUITest
_required:
rid: -2
_sharedLeft:
rid: 7412330891455063000
_sharedRight:
rid: 7412330891455063000
_missing:
rid: 7412330891455063001
_missingInList:
- rid: 7412330891455063002
- rid: 7412330891455063003
references:
version: 2
RefIds:
- rid: 7412330891455063000
type: {class: Pistol, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 12
- rid: 7412330891455063001
type: {class: Pistoll, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 37
- rid: 7412330891455063002
type: {class: Shotgun, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 20
_pellets: 6
- rid: 7412330891455063003
type: {class: Shotgunn, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 44
_pellets: 8
--- !u!114 &7412330891455062004
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7412330891455062001}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 19ed43d7d91a47a7b0ed8f22852b914d, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Aspid.FastTools.DevTests.SerializeReferences.SerializeReferencesUIToolkitTest
_required:
rid: -2
_sharedLeft:
rid: 7412330891455064000
_sharedRight:
rid: 7412330891455064000
_missing:
rid: 7412330891455064001
_missingInList:
- rid: 7412330891455064002
- rid: 7412330891455064003
references:
version: 2
RefIds:
- rid: 7412330891455064000
type: {class: Pistol, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 12
- rid: 7412330891455064001
type: {class: Pistoll, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 37
- rid: 7412330891455064002
type: {class: Shotgun, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 20
_pellets: 6
- rid: 7412330891455064003
type: {class: Shotgunn, ns: Game.Gear, asm: Assembly-CSharp}
data:
_damage: 44
_pellets: 8
Loading
Loading