Skip to content

fix: every registered extension appears -- the list derives from nouns, not tray tools (goal 0237) - #509

Merged
alicoding merged 1 commit into
mainfrom
agent/extensions-list-nouns
Aug 28, 2026
Merged

fix: every registered extension appears -- the list derives from nouns, not tray tools (goal 0237)#509
alicoding merged 1 commit into
mainfrom
agent/extensions-list-nouns

Conversation

@alicoding

Copy link
Copy Markdown
Owner

Summary

  • Settings > Extensions was built off ATLAS_TOOLS (tray tools only), so diagram and sheet -- both file-drop-only nouns with no tray identity -- never appeared even though both are fully registered canvas nouns.
  • The list now derives from every registered noun: tray tools plus tool-less nouns (toolLessNounExtensions()), normalized into one ExtensionRowSource shape (extensionMeta.ts) so ExtensionRow.tsx never branches on which kind of noun it's rendering. Diagram and sheet declare their own icon/label/description/disableScopeNote via a new optional extension field on AtlasNounContent.
  • Disabling a tool-less noun has no tray button to remove, so its row states the honest, narrower scope: it gates useAtlasNativeFileDrop.ts's own drop routing (extracted into the pure, testable resolveFileDropKind) and, for diagram, dispatchObjectEdit's embedded-engine door (already keyed off object.Kind since goal 0244).
  • userdocs/reference/extending-the-canvas.md's generated field table regenerated (go generate ./internal/docsgen) to describe the new extension member.

Test plan

  • npx tsc --noEmit clean
  • npx eslint clean on every changed file
  • npx vitest run -- 121 files / 960 tests passing (includes new resolveFileDropKind and toolRowSource/toolLessRowSource unit tests)
  • npx playwright test e2e/settings-extensions.spec.ts -- 6/6 passing, including a new test asserting diagram/sheet rows and their disable-scope copy
  • go build ./..., go vet ./..., go test ./internal/docsgen/... all green
  • scripts/check-comment-hygiene.sh, scripts/check-loc.sh, scripts/check-ui-copy.sh all green

🤖 Generated with Claude Code

https://claude.ai/code/session_012im1JxQQV2ahnXzZDdVmZq

…s, not tray tools (goal 0237)

Settings > Extensions was built off ATLAS_TOOLS (tray tools only), so
diagram and sheet -- both file-drop-only nouns with no tray identity --
were invisible even though they're fully registered canvas nouns.

The list now derives from every registered noun: tray tools plus
tool-less nouns (diagram, sheet), normalized into one ExtensionRowSource
shape (extensionMeta.ts) so ExtensionRow.tsx never branches on which
kind of noun it's rendering. Diagram and sheet declare their own
icon/label/description/disableScopeNote via a new optional `extension`
field on AtlasNounContent, read back by atlasNounRegistry.ts's
toolLessNounExtensions().

Disabling a tool-less noun has no tray button to remove, so its row
states the honest, narrower scope: it gates useAtlasNativeFileDrop.ts's
own drop routing (extracted into the pure, testable resolveFileDropKind)
and, for diagram, dispatchObjectEdit's embedded-engine door (already
keyed off object.Kind since goal 0244).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012im1JxQQV2ahnXzZDdVmZq
@alicoding
alicoding enabled auto-merge (squash) August 28, 2026 20:51
@alicoding
alicoding merged commit d084c40 into main Aug 28, 2026
30 checks passed
@alicoding
alicoding deleted the agent/extensions-list-nouns branch August 28, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant