Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .changeset/7282-console-docs-fragment-markers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
---

Console documentation only (`apps/console/docs/**`) — nothing published moves, so no version bump.

`UI_IMPROVEMENT_PROPOSAL.md` section 3.1 taught `<ResizablePanelGroup direction="horizontal">`.
The exported component takes `orientation`, not `direction`
(`packages/components/src/ui/resizable.tsx:44`, pinned by
`packages/components/src/__tests__/resizable-orientation.test.tsx` and used in-tree at
`packages/components/src/custom/navigation-overlay.tsx:519`), so a reader who copied the guide's
first prop got a type error. The prop is corrected in place.

The other ten red `ts` / `tsx` blocks across that tree are excerpt fragments rather than defects,
and each now carries `check-doc-snippet-types.mjs`'s per-block fragment declaration with a written
reason naming the identifiers the excerpt leaves to its host. No `UNGATED_DOCS` entry was added:
the 2026-09-02 ruling on objectui#6600 rejects whole-file exemptions, and this card is that
ruling's step 1 — content first, then the gate roots move (objectui#6600 step 2).

Why the empty frontmatter rather than a bump: `apps/console/docs/**` is not in `@object-ui/console`'s
`files` (`dist`, `plugin.ts`, `plugin.js`, `plugin.d.ts`, `README.md`), so no published artifact
changes. `scripts/check-changeset-presence.mjs` agrees — it reports no changeset owed for this
range. Note for the record that `@object-ui/console` is **not** `private: true`: it is a published
member of the 40-package `fixed` group at 17.6.0, so the "no release" declaration rests on the
unshipped path, not on privacy.
10 changes: 9 additions & 1 deletion apps/console/docs/UI_IMPROVEMENT_PROPOSAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ The current Metadata Inspector panel on the console list page is overly verbose
### Phase 1: Quick Wins (Minimal Changes)

#### 1.1 **Default to Closed**
<!-- doc-snippet: fragment — the body of `useMetadataInspector` as it would be edited in place; `useState` is the reader's own React import, which this excerpt omits -->
```typescript
// Change default state in useMetadataInspector
export function useMetadataInspector() {
Expand All @@ -61,12 +62,14 @@ export function useMetadataInspector() {
```

#### 1.2 **Reduce Width**
<!-- doc-snippet: fragment — a single opening `<div>` tag, quoted to show the one className change; it has no closing tag and no surrounding component by design -->
```tsx
// MetadataPanel.tsx - Change from w-100 to w-80
<div className="w-80 border-l bg-muted/20 ...">
```

#### 1.3 **Add Collapsible Sections**
<!-- doc-snippet: fragment — JSX for the panel body: `Accordion`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` and `JsonCodeBlock` are the host component's own imports, and `viewConfig` and `objectDef` its own state -->
```tsx
<Accordion type="multiple" defaultValue={["view"]}>
<AccordionItem value="view">
Expand Down Expand Up @@ -94,6 +97,7 @@ export function useMetadataInspector() {
#### 2.1 **Smart Summary View**
Instead of showing raw JSON first, show a structured summary:

<!-- doc-snippet: fragment — the summary view's JSX only: `Label`, `Badge`, `Separator`, `Button` and `Code` are the host component's imports, and `columns`, `showRawJson` and `setShowRawJson` its own state -->
```tsx
// View Summary Component
<div className="space-y-3 p-4">
Expand Down Expand Up @@ -125,6 +129,7 @@ Instead of showing raw JSON first, show a structured summary:
```

#### 2.2 **Copy Utilities**
<!-- doc-snippet: fragment — a header-row excerpt: `Button` and `Copy` are the host component's imports, and `copyToClipboard` and `data` its own helper and state -->
```tsx
<div className="flex items-center justify-between px-3 py-2 border-b">
<span className="text-xs font-semibold">View Configuration</span>
Expand All @@ -140,6 +145,7 @@ Instead of showing raw JSON first, show a structured summary:
```

#### 2.3 **Tabbed Interface**
<!-- doc-snippet: fragment — the tabbed shell's JSX: `Tabs`, `TabsList`, `TabsTrigger` and `TabsContent` are the host component's imports, and `StructuredSummary`, `JsonViewer`, `DataPreview` and `schema` are the components and data it supplies -->
```tsx
<Tabs defaultValue="summary" className="w-full">
<TabsList className="grid w-full grid-cols-3 h-9">
Expand All @@ -165,7 +171,7 @@ Instead of showing raw JSON first, show a structured summary:
```tsx
import { ResizablePanel, ResizablePanelGroup } from '@object-ui/components';

<ResizablePanelGroup direction="horizontal">
<ResizablePanelGroup orientation="horizontal">
<ResizablePanel defaultSize={75} minSize={50}>
{/* Main content */}
</ResizablePanel>
Expand All @@ -176,12 +182,14 @@ import { ResizablePanel, ResizablePanelGroup } from '@object-ui/components';
```

#### 3.2 **Persist User Preference**
<!-- doc-snippet: fragment — a one-line replacement for the `useState` call in 1.1; `useLocalStorage` is the reader's own hook and is not exported by any package here -->
```tsx
// Store in localStorage
const [showDebug, setShowDebug] = useLocalStorage('console:metadata-panel', false);
```

#### 3.3 **Command Palette Integration**
<!-- doc-snippet: fragment — one entry of the command-palette array, quoted as a bare object literal so it can be spliced into `CommandPalette.tsx`; `Code2` and `toggleDebug` come from that file -->
```tsx
// Add to CommandPalette.tsx
{
Expand Down
2 changes: 2 additions & 0 deletions apps/console/docs/error-tracking.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ That single variable enables reporting. The rest are optional and inert without

…or, from a host that composes the plugin directly:

<!-- doc-snippet: fragment — `RuntimeConfigPlugin` is the host runtime's own class, shipped by `@objectstack/cloud-connection` or `@objectstack/objectos-runtime`; neither is a dependency of any package in this workspace, so the specifier does not resolve here -->
```ts
new RuntimeConfigPlugin({
clientErrorReporting: { dsn: 'https://PUBLIC_KEY@HOST/PROJECT_ID', sendDefaultPii: true },
Expand Down Expand Up @@ -142,6 +143,7 @@ first paint (and on that path no sink arrived, so the failure direction is silen
Use the built-in helpers from `@object-ui/app-shell` — they route through the same gate
and no-op when it withheld, so they cannot become a second ungated path:

<!-- doc-snippet: fragment — the two calls a host makes; `err` and `user` are the caller's own values, supplied by the surrounding catch block and the signed-in session -->
```ts
import { captureError, setSentryUser } from '@object-ui/app-shell';

Expand Down