Skip to content

Make Data-model full-bleed OWOX (retire plan-id ModelView chrome) - #179

Open
Travis-Gilbert wants to merge 1 commit into
mainfrom
feat/modelview-fullbleed-owox
Open

Make Data-model full-bleed OWOX (retire plan-id ModelView chrome)#179
Travis-Gilbert wants to merge 1 commit into
mainfrom
feat/modelview-fullbleed-owox

Conversation

@Travis-Gilbert

Copy link
Copy Markdown
Owner

Summary

  • Retires plan-id BlockShell / inspector / fields-records lenses from ModelView; the page body is full-bleed DiagramLensForkDiagramCanvasModelCanvasShell.
  • Keeps registry adapter duties (load/pin/OKF/layout) plus a floating OKF / Propose / Diff / Restore strip.
  • Updates the Data-model e2e proportions check (no inspector rail) and cutover EXECUTE-REPORT honesty note to match .commonplace-canonical.

Test plan

  • Open /Data-model signed in: OWOX canvas fills the well; no inspector rail
  • Floating strip: Import/Export OKF, Propose, Diff/Restore when ≥2 versions
  • Pin/unpin ghosts still work on the canvas
  • apps/console/e2e/console-sidebar.spec.ts Data-model proportions test (or live visual check)

Retire plan-id BlockShell, inspector, and fields/records lenses from
ModelView so /Data-model is ModelCanvasShell edge-to-edge with a floating
OKF/Propose/Diff/Restore strip; align the e2e proportions oracle.
Copilot AI lite review requested due to automatic review settings August 4, 2026 14:31
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Travis-Gilbert, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 26f5f314-a66a-468e-ae54-1d8139915e60

📥 Commits

Reviewing files that changed from the base of the PR and between 35dc156 and 86091cb.

📒 Files selected for processing (6)
  • apps/console/e2e/console-sidebar.spec.ts
  • apps/console/src/app/Data-model/page.tsx
  • apps/console/src/views/model/ModelView.tsx
  • apps/console/src/views/model/ObservedDeclaredLenses.tsx
  • apps/console/src/views/model/diagram/ForkDiagramCanvas.tsx
  • docs/plans/commonplace-production-cutover/EXECUTE-REPORT.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ecc-tools

ecc-tools Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR simplifies the /Data-model surface by removing the plan-id “studio chrome” (BlockShell + inspector + non-diagram lenses) and making the OWOX-based canvas the full-bleed page body, while keeping ModelView as the registry adapter (load/pin/OKF/layout + floating action strip).

Changes:

  • Convert ModelView from a multi-lens studio layout into a full-bleed canvas page with a floating OKF/Propose/Diff/Restore strip.
  • Wrap the diagram/canvas components to enforce full-height/full-width sizing for the page body.
  • Update the Data-model e2e proportions check and cutover EXECUTE-REPORT note to reflect removal of the inspector rail.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
docs/plans/commonplace-production-cutover/EXECUTE-REPORT.md Updates cutover “honesty” note to reflect ModelView’s new role.
apps/console/src/views/model/ObservedDeclaredLenses.tsx Makes DiagramLens explicitly full-bleed and adds a stable body hook.
apps/console/src/views/model/ModelView.tsx Removes BlockShell/inspector/lenses and introduces full-bleed canvas page + floating strip.
apps/console/src/views/model/diagram/ForkDiagramCanvas.tsx Ensures ModelCanvasShell can reliably fill available space.
apps/console/src/app/Data-model/page.tsx Updates server-stamped comment to match the new full-bleed surface framing.
apps/console/e2e/console-sidebar.spec.ts Updates the Data-model route check to assert no inspector rail and presence of full-bleed canvas page.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 15 to +16
import { DiffDialog, diffGraphs, type ModelGraph } from '@commonplace/model-canvas';
import { BlockShell } from '@/components/block/BlockShell';
import { degradationFor, withAction } from '@/lib/degradation';
import '@commonplace/model-canvas/canvas.css';
Comment on lines +625 to +631
<button
type="button"
onClick={() => setProposalComposerOpen((open) => !open)}
className="h-ij-control rounded-ij-arc px-3 text-ij-ink hover:bg-ij-hover-surface"
>
Propose
</button>
Comment on lines +607 to +616
<label className="flex h-ij-control cursor-pointer items-center rounded-ij-arc px-3 text-ij-ink hover:bg-ij-hover-surface">
Import OKF
<input
type="file"
accept=".md,.json,text/markdown,application/json"
multiple
className="sr-only"
onChange={(event) => void previewOkfImport(event.target.files)}
/>
</label>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 86091cbf67

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Loading observed model.
</div>
) : (
<DiagramLens {...lensProps} />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore field editing in the full-bleed canvas

When a user selects a declared field, the remaining DiagramLens path only records that selection in queryState; this commit deletes applyFieldEdit, the declaration call, and the only editor that consumed the selection, while ModelCanvasShell provides no replacement edit callback. Consequently the canonical MF4 field-edit flow is no longer available from /Data-model; add an in-canvas field editor wired to the registry mutation door before removing the inspector.

Useful? React with 👍 / 👎.

Loading observed model.
</div>
) : (
<DiagramLens {...lensProps} />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Expose unpin on the remaining canvas

After a ghost is declared, there is now no way to unpin it from the UI: this is the only rendered lens, but ForkDiagramCanvas does not consume onUnpin and ModelCanvasShell has no unpin callback. The retained applyUnpin function is therefore unreachable, so the commit's pin/unpin acceptance scenario cannot pass; provide an unpin affordance on declared canvas cards.

Useful? React with 👍 / 👎.

) : null}
<div
className="relative h-full min-h-0 bg-ij-editor"
data-model-canvas-page

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the deployed acceptance selector

When THEOREM_RUN_CANVAS_LIVE=1, e2e/model-program-canvas.live.spec.ts:34 still waits for [data-model-studio], but this replacement root only emits data-model-canvas-page; a repo-wide search finds no remaining producer of the old attribute. The deployed Model Canvas acceptance test will therefore time out even when the new surface mounts, so update the live test or retain the compatibility marker.

Useful? React with 👍 / 👎.

// @xyflow/react and tablecn structure through the registered lens components.
// SOURCING: @commonplace/model-canvas (OWOX hard fork) as the Data-model page
// body. Registry read/write stays in this adapter; plan-id BlockShell chrome
// is gone — the canvas is the page (SPEC-COMMONPLACE-MODEL-CANVAS-FORK-1.0).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Replace the banned em dash

Replace the em dash in this new source comment with allowed punctuation; the console constitution explicitly bans em and en dashes everywhere, including code comments.

AGENTS.md reference: apps/console/AGENTS.md:L169-L172

Useful? React with 👍 / 👎.

Comment on lines +721 to +722
{okfPreview ? (
<div className="absolute bottom-3 left-3 right-3 z-30 mx-auto max-w-2xl rounded-ij-arc border border-ij-control-border bg-ij-selection/95 p-3 shadow-lg backdrop-blur" aria-label="OKF import preview">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make the bottom overlays mutually exclusive

If an OKF preview is open and the user opens or accepts a schema proposal, both states remain populated and both panels render at bottom-3 with z-30; the later OKF panel overlaps the proposal panel and can cover its Accept/Decline controls. These panels previously occupied separate flow sections, so either stack them or clear/disable the competing state when opening one.

Useful? React with 👍 / 👎.

) : null}
</div>

<div className="pointer-events-auto flex flex-wrap items-center gap-1 rounded-ij-arc border border-ij-control-border bg-ij-chrome/95 p-1 shadow-sm backdrop-blur">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Back the floating action strip with a ledger source

The new floating action strip is assembled directly from a container plus native labels, buttons, and selects, but the console ledger has no row naming this model-canvas toolbar or its behavior; previously the surrounding shell need was supplied by BlockShell. Replace it with a ledger-backed component or add a named source row before introducing this bespoke surface.

AGENTS.md reference: apps/console/AGENTS.md:L87-L91

Useful? React with 👍 / 👎.

Comment on lines 558 to +559
: error
? withAction(degradationFor(error, 500), () => setReloadToken((token) => token + 1))
? error

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep wire errors out of the status banner

When /api/observed-model returns an error payload such as observed_model_graphql_unreachable, unavailableMessage now renders that value verbatim. The removed degradationFor(error, 500) call translated known codes to actionable sentences and hid unknown wire codes behind the generic unavailable message, so restore that normalization rather than exposing backend identifiers or arbitrarily long upstream error text to users.

Useful? React with 👍 / 👎.

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.

2 participants