Skip to content

docs(plugin-form): drop the doubled /** opener on the foldFormButtons comment - #4733

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-4661-doubled-doc-opener
Aug 15, 2026
Merged

docs(plugin-form): drop the doubled /** opener on the foldFormButtons comment#4733
yinlianghui merged 1 commit into
mainfrom
claude/issue-4661-doubled-doc-opener

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes #4661

Deletes the one redundant /** opener line above foldFormButtons in packages/plugin-form/src/ObjectForm.tsx. The doc comment opened with two /** lines in a row, so the stray second opener was rendered as the first line of the JSDoc body.

Nothing was broken and nothing rendered wrong — the card said as much when it filed this as observation-class. The only cost was to a reader meeting a malformed-looking opener and stopping to work out whether a bad merge had eaten something.

Scope

One line deleted, nothing else in the file touched:

 packages/plugin-form/src/ObjectForm.tsx | 1 -
 1 file changed, 1 deletion(-)

Anchored by the foldFormButtons declaration rather than by line number, as both the card and the dispatch note asked. On this branch's merge-base (baa89a1ea) the doubled opener sat at lines 82-83 with the declaration at line 96 — the card recorded line 67 and the dispatch note 82-83, the drift being exactly the churn they predicted.

Repo-wide sweep: one instance total, zero remaining

Ran the requested cheap repo-wide grep for consecutive /** opener lines. This was the only instance in the repository. The post-fix sweep over every tracked file returns zero hits, so there is no follow-up finding issue to file — the sweep and the one-file fix happen to coincide here.

The pattern was self-checked before its emptiness was trusted, since an empty grep result is otherwise indistinguishable from a silently broken pattern. Run against the pre-fix origin/main blob, the same pattern does report the pair:

82:/**
83:/**

Release impact: none, and declared

node scripts/check-changeset-presence.mjs requires a changeset for any edit under a released package's src/, comment-only or not — it failed this branch until one was added, and its word is final. Complied with the empty-frontmatter form that AGENTS.md defines as the first-class "declares no release" answer, because that is what is true here: foldFormButtons is module-private so it reaches no published type declaration, and comments are stripped from the emitted JavaScript, leaving the built output unchanged.

objectui has no skip-changeset mechanism, and none was used.

Gates — all run at head 00825b5a5, after the final commit

Gate Command Result
plugin-form tests pnpm exec vitest run packages/plugin-form/ 43 files / 422 tests passed, exit 0
type-check pnpm exec turbo run type-check --filter=@object-ui/plugin-form 13 tasks successful, exit 0
lint pnpm exec turbo run lint --filter=@object-ui/plugin-form 2 tasks successful, exit 0 — 0 errors (550 pre-existing no-explicit-any warnings, untouched by this diff)
changeset presence node scripts/check-changeset-presence.mjs pass — 1 changeset, empty frontmatter
changeset no-major node scripts/check-changeset-no-major.mjs pass
control bytes node scripts/check-control-bytes.mjs pass — 4249 tracked text files scanned

Tests were invoked in the repo-root path-filter form AGENTS.md mandates, not pnpm --filter @object-ui/plugin-form test — the latter is the documented cwd trap that silently runs another package's suite and reports green.

Provenance

Recorded while renaming ObjectFormProps for #4650 (PR #4660), and deliberately not swept in there. Neither of those is addressed by this PR.


Generated by Claude Code

…ns comment

The doc comment above `foldFormButtons` in `ObjectForm.tsx` opened with two
`/**` lines in a row, so the stray second opener was rendered as the first
line of the JSDoc body. Removed the redundant opener line.

Comment-only: `foldFormButtons` is module-private, so it reaches no published
type declaration, and comments are stripped from the emitted JavaScript — the
built output is unchanged. The changeset declares no release accordingly.

Refs objectui#4661

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnQd8iMMUwXQEV1crFmQiQ
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 15, 2026 8:55pm

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 24.7 KB 350 KB
Entry file index-DQz-ygvc.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 9.56KB 3.59KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 8.92KB 3.41KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 25.13KB 5.40KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 38.46KB 10.17KB
auth (createAuthenticatedFetch.js) 6.34KB 2.43KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.02KB 0.88KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 26.07KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.65KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 490.20KB 108.71KB
core (index.js) 3.79KB 1.52KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 157.05KB 43.28KB
fields (index.js) 230.33KB 57.14KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 3.35KB 1.38KB
i18n (pickLocalized.js) 3.69KB 1.73KB
i18n (provider.js) 23.12KB 7.62KB
i18n (useDisplayLocale.js) 2.84KB 1.45KB
i18n (useObjectLabel.js) 27.59KB 6.63KB
i18n (useSafeTranslation.js) 7.77KB 3.13KB
layout (index.js) 38.98KB 10.85KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.32KB 1.64KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 9.35KB 3.31KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.89KB 1.22KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.81KB 0.83KB
plugin-ai (index.js) 15.75KB 3.80KB
plugin-calendar (index.js) 46.86KB 12.91KB
plugin-charts (index.js) 64.44KB 18.28KB
plugin-chatbot (index.js) 181.21KB 43.14KB
plugin-dashboard (index.js) 121.90KB 31.76KB
plugin-designer (index.js) 212.39KB 42.83KB
plugin-detail (index.js) 239.81KB 59.97KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 114.72KB 27.70KB
plugin-gantt (index.js) 164.30KB 40.02KB
plugin-grid (index.js) 192.10KB 51.24KB
plugin-kanban (index.js) 52.74KB 14.53KB
plugin-list (index.js) 111.14KB 26.92KB
plugin-map (index.js) 18.16KB 5.81KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 41.38KB 11.09KB
plugin-timeline (index.js) 26.68KB 7.66KB
plugin-tree (index.js) 8.50KB 2.88KB
plugin-view (index.js) 83.81KB 20.49KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 27.64KB 9.44KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.28KB 0.68KB
react (schema-input.js) 1.45KB 0.83KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 3.05KB 1.52KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 2.59KB 1.31KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

Copy link
Copy Markdown
Collaborator Author

PM review — ACCEPT (reviewer of record, session session_01RnQd8iMMUwXQEV1crFmQiQ)

Independently verified against GitHub, not the report:

  1. Diff exactness. git diff origin/main...origin/claude/issue-4661-doubled-doc-opener is exactly the one /** deletion at the foldFormButtons comment plus the changeset file — 2 files, +10/−1, matching the PR's own diffstat claim.
  2. "Only instance repo-wide" — re-verified with a different method. I ran my own consecutive-opener detection (adjacent-line awk pass over all tracked ts/tsx/js/mjs on origin/main) rather than the dev's grep: exactly one hit, packages/plugin-form/src/ObjectForm.tsx: 82-83. The check carries its own positive control — it found the known instance, so the empty remainder is a real zero. No follow-up finding owed.
  3. Changeset form. Empty-frontmatter changeset present, correctly used as the first-class "declares no release" answer: the symbol is module-private (no published .d.ts surface) and comments are stripped from emitted JS. The gate demanded a changeset on this comment-only diff and was answered in the gate's own vocabulary, not worked around. Changeset Declaration / Bump Policy / Fixed Group checks all green at head.
  4. Label hygiene. No skip-changeset recurrence (the mechanism doesn't exist in objectui); sole label is automation-applied plugin. Body first line Fixes #4661 is the only closing keyword; Resolve the spec-named symbol collisions with 17.0.0 GA exports (check:spec-symbols): SECRET_MASK + ObjectCalendarProps/ObjectFormProps/ObjectGridProps/ObjectKanbanProps + one more #4650 / PR fix(plugins,app-shell): resolve the six spec-named symbol collisions with 17.0.0 GA #4660 appear keyword-free in Provenance.

Noted with approval: the dev surfaced the standing-contract vs AGENTS.md conflict on test invocation (the pnpm --filter cwd trap) and followed the repo's binding rule — the repo-root path-filter form.

Gates at 00825b5a5: secondary checks all success; Lint + Type Check + Test shards 1-4 in progress. Will flip ready + enable auto-merge once all six conclude success at this head.


Generated by Claude Code

@yinlianghui
yinlianghui marked this pull request as ready for review August 15, 2026 21:11
@yinlianghui
yinlianghui added this pull request to the merge queue Aug 15, 2026
Merged via the queue into main with commit b8ed690 Aug 15, 2026
21 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-4661-doubled-doc-opener branch August 15, 2026 21:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[finding] ObjectForm.tsx opens one doc comment with a doubled /**

2 participants