Skip to content

Keep mobile empty WBS state in view#204

Open
seonghobae wants to merge 2 commits into
developfrom
fix/mobile-empty-state-viewport
Open

Keep mobile empty WBS state in view#204
seonghobae wants to merge 2 commits into
developfrom
fix/mobile-empty-state-viewport

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

  • Keep the table empty state sized to the visible table viewport instead of the full wide WBS table width.
  • Add a mobile regression test that ensures the empty-state panel and CTA row stay inside .table-scroll.

Product / Visual Evidence

  • Before: mobile empty WBS state rendered as a 1268px-wide panel inside a 341px viewport, leaving a large blank section and clipping the CSV ???? CTA.
  • After: mobile empty WBS state renders at 341px, with the CTA row fully inside the visible table viewport.
  • Local evidence captured in work/outputs/scopeweave-visual-audit-2026-07-01-round4/:
    • mobile-empty.png
    • mobile-empty-after.png
    • �isual-report.json
    • mobile-empty-after-report.json
  • Figma MCP note: create_new_file is currently blocked by oken_revoked, so the audit evidence is local rather than placed in Figma.

Verification

pm run coverage

pm run check:python-docstrings

  • Edge-backed local Playwright: empty-state tests, mobile table scroll test, mobile header alignment test

Copilot AI review requested due to automatic review settings July 1, 2026 05:50

Copilot AI 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.

Pull request overview

This PR improves the mobile “empty WBS” experience by constraining the empty-state panel to the visible .table-scroll viewport (instead of the full wide table width), and adds an E2E regression test to ensure the empty-state panel + CTA row remain within the mobile table viewport.

Changes:

  • Add a dedicated .empty-state-cell class to the empty-state <td> so it can be styled independently of the wide WBS table.
  • Constrain .table-empty width inside the empty-state cell (desktop + mobile rules) so the empty-state panel doesn’t render at the table’s min-width on mobile.
  • Add a Playwright test that validates the empty-state and action buttons stay inside the .table-scroll viewport on mobile.

Reviewed changes

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

File Description
app.js Adds an empty-state-cell class to the empty-state row cell to enable targeted styling.
styles.css Constrains empty-state panel width to the visible viewport (with mobile override) and removes cell padding for a flush layout.
tests/e2e/scopeweave.spec.js Adds a mobile regression test checking empty-state and CTA bounds stay within .table-scroll.

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

Comment thread styles.css
Comment thread styles.css
Comment thread tests/e2e/scopeweave.spec.js
@opencode-agent

opencode-agent Bot commented Jul 1, 2026

Copy link
Copy Markdown

OpenCode Review Overview

  • Head SHA: 3d2014b8ecc5ed1f7e3aaac03e3936d98648d013
  • Workflow run: 28499787397
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH app.js:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (app.js, styles.css, tests/e2e/scopeweave.spec.js); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: 3d2014b8ecc5ed1f7e3aaac03e3936d98648d013
  • Workflow run: 28499787397
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: scopeweave.spec.js"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: scopeweave.spec.js"]
  R2 --> V2["targeted test run"]
Loading

@opencode-agent opencode-agent 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.

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH app.js:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (app.js, styles.css, tests/e2e/scopeweave.spec.js); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: 3d2014b8ecc5ed1f7e3aaac03e3936d98648d013
  • Workflow run: 28499787397
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: scopeweave.spec.js"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: scopeweave.spec.js"]
  R2 --> V2["targeted test run"]
Loading

Comment thread app.js
@seonghobae seonghobae closed this Jul 7, 2026
@seonghobae seonghobae reopened this Jul 7, 2026
@seonghobae seonghobae force-pushed the fix/mobile-empty-state-viewport branch from 3d2014b to 45f7459 Compare July 8, 2026 23:35
@seonghobae seonghobae dismissed opencode-agent[bot]’s stale review July 8, 2026 23:35

Dismissing: this is not a substantive review. Per the review body and thread, OpenCode exhausted its configured model pool and the opencode-review check failed with CHECKS_LOOKUP_FAILED (an internal 'gh api --slurp --jq' usage bug in the OpenCode action), so it never produced a source-backed conclusion — it explicitly states this 'is not approval evidence' rather than identifying any concrete defect. It is also bound to superseded commit 3d2014b; HEAD is now 45f7459 (rebased onto develop to pick up #235's central-security-scan dedup). The only substantive review feedback (Copilot: hard-coded gutter constants + missing render wait) was addressed in the earlier commit and those threads are resolved. Re-running OpenCode is an org-infra action fix, not a repo change.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Triage + remediation (neglected-PR sweep)

This PR carries unique, un-merged value — the mobile empty-WBS-state viewport fix + regression test are not on develop (verified: git grep empty-state-cell origin/develop → absent; diff vs develop = +47 lines across app.js/styles.css/tests). Not superseded, kept open.

What was blocking it, and what I did:

  1. Rebased onto latest develop (was 1 commit behind). This pulls in chore(ci): stop duplicating central Security Scan on PRs #235 ("stop duplicating central Security Scan on PRs"), which deletes the repo-local PR copies of dependency-review/scorecard/trivy/osv that were the source of the cancelled duplicate checks in run group 28831724xxx. HEAD is now 45f7459. Fresh CI triggered.

  2. Review feedback — the 3 substantive Copilot comments (hard-coded 98px/34px gutters → named CSS var + derivation note; missing render wait before measuring bounding boxes) were already addressed in the prior commit and those threads are resolved.

  3. Dismissed the opencode-agent CHANGES_REQUESTED blocking review. It is not a substantive review: it records that OpenCode exhausted its model pool and the opencode-review check failed with CHECKS_LOOKUP_FAILED (an internal gh api --slurp --jq misuse in the OpenCode action), explicitly stating this "is not approval evidence" rather than naming any defect. It was also bound to the superseded commit 3d2014b.

Remaining org-infra item: the opencode-review check fails deterministically due to the action's own gh api --slurp --jq bug (CHECKS_LOOKUP_FAILED) — fixable only in the central OpenCode workflow/action, not in this repo.

No merge performed.

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