Skip to content

fix: draw no default table cell border, and let the ooxml sync push to main - #408

Merged
ChristopherVR merged 2 commits into
mainfrom
fix/table-border-and-sync
Oct 5, 2026
Merged

ChristopherVR merged 2 commits into
mainfrom
fix/table-border-and-sync

Conversation

@ChristopherVR

Copy link
Copy Markdown
Owner

What does this change?

Two fixes, one commit each.

Table cells draw no default border (closes #406). Vanilla, Svelte and Vue started every cell from border: 1px solid rgba(255, 255, 255, 0.3), and React gave every cell a border class (border-white/30 in the rawXml renderer, border-gray-400/50 in the structured one). A side the deck gives no border (for example <a:lnL w="0"><a:noFill/></a:lnL>) still drew it and pushed the cell content in by about a pixel. Cells now carry only the borders their style gives, which is what the Angular binding already did. React and Vue keep a faint grid while a table is being edited (React's existing editable branch, and Vue's --editable modifier), so the cells of a borderless table can still be found. Vanilla and Svelte have no editing path, so they draw none.

Tests: vanilla and Svelte assert a plain cell has no border while a cell with an explicit left border keeps it; React asserts no border class on a read-only cell; Vue guards the stylesheet, because scoped SFC CSS is not applied in jsdom.

The ooxml sync can push to the protected main (closes #407). The run in #407 passed every check (all ten packages green); the failing step was Push the bump, rejected with Required status check "ci-success" is expected. main requires that check and only an admin may bypass it, and the reusable workflow pushed with the default token. The caller now passes secrets: inherit, so the repository's existing RELEASE_TOKEN does the push. The reusable workflow in ooxml uses it when present and now reports a refused push as "could not be pushed" instead of a failed verification.

How was it verified?

  • Typecheck passes in vanilla, react, vue and svelte (core built first).
  • The table tests of all four bindings pass, including the new ones.
  • Format and oxlint --deny-warnings pass on the changed files.
  • The workflow change can only be confirmed by the next scheduled sync run after this merges.

ChristopherVR and others added 2 commits October 6, 2026 05:08
Every cell started from a 1px border (white at 30% in vue, svelte and vanilla, white or gray in
react) that nothing in the deck asked for. A cell side the deck gives no border, for example
<a:lnL w="0"><a:noFill/></a:lnL>, therefore still drew one and pushed the cell content in by a
pixel, so text no longer lined up with PowerPoint's own rendering. Cells now carry only the borders
their style gives, as in the angular binding. React and vue keep a faint grid while a table is being
edited, so the cells of a borderless table can still be found.

Closes #406

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VwbAnmRAgQ3PsfiLH6RwoF
main requires the ci-success check, which only an admin may bypass, so the sync's push with the
default token was rejected after its checks had passed. The existing RELEASE_TOKEN secret is now
passed through to the reusable workflow, which uses it for the push.

Closes #407

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VwbAnmRAgQ3PsfiLH6RwoF
@github-actions github-actions Bot added react React binding (pptx-react-viewer) vue Vue binding (pptx-vue-viewer) svelte Svelte binding (pptx-svelte-viewer) vanilla Vanilla binding (pptx-vanilla-viewer) ci Workflows, scripts, release tooling labels Oct 5, 2026
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Cross-binding parity check

This is advisory only and does not block the PR. It looks at changed file paths, so it cannot tell a genuinely framework-specific change from a parity gap. If it is wrong here, just say so in a comment.

Binding This PR
React changed
Vue changed
Angular not changed
Svelte changed
Vanilla changed

UI source changed in 4 of 5 bindings

Changed: React, Vue, Svelte, Vanilla. Not changed: Angular.

If this is a new UI feature, it needs to land in all five. If it is a fix, please confirm in the PR description whether the other bindings have the same defect, and fix the ones that do. If the change really is framework-specific, say so and this note can be ignored.

Several bindings changed, but packages/shared did not

Parallel edits across bindings with no shared change often mean the same logic was written more than once. Framework-agnostic logic belongs in pptx-viewer-shared, with each binding importing it. View-layer-only changes are a legitimate exception.

Binding UI changed with no framework-neutral e2e spec

Specs in e2e/ run against all five demos, so they are what stops a binding quietly falling behind. New UI features should add or extend one. Fixes covered by unit tests can skip this.


See the parity rule for what is expected. Missing: Angular.

@ChristopherVR
ChristopherVR merged commit 11914db into main Oct 5, 2026
222 of 274 checks passed
@ChristopherVR
ChristopherVR deleted the fix/table-border-and-sync branch October 6, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Workflows, scripts, release tooling react React binding (pptx-react-viewer) svelte Svelte binding (pptx-svelte-viewer) vanilla Vanilla binding (pptx-vanilla-viewer) vue Vue binding (pptx-vue-viewer)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopting ooxml-ui 0.29.0 fails verification Table cells always get a 1px white/30 border, even when the deck says "no border"

1 participant