Skip to content

feat(slides): add native table creation#834

Closed
clawsweeper[bot] wants to merge 3 commits into
mainfrom
clawsweeper/issue-openclaw-gogcli-824
Closed

feat(slides): add native table creation#834
clawsweeper[bot] wants to merge 3 commits into
mainfrom
clawsweeper/issue-openclaw-gogcli-824

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add gog slides table create for native tables with rows, columns, and an optional stable object ID
  • extend gog slides insert-text with paired zero-based --row / --col cell targeting and atomic --replace
  • add focused request, validation, zero-index, replace, and dry-run coverage
  • document the workflow, provider placement constraint, and generated command surface

This is the intentionally narrow first slice of #824. The issue remains open for row/column insertion and deletion, merge/unmerge, sizing, borders, and cell styling.

Design

Google's current Slides table recipe states that table creation ignores supplied size and transform fields. Live provider read-back confirmed this behavior, so the command omits misleading geometry flags and lets Slides choose initial placement and size.

Validation

  • go test ./internal/cmd -run 'TestSlides(Table|InsertText)'
  • make ci
  • final local autoreview: clean, no accepted/actionable findings
  • live disposable-deck proof: created a 2x3 native table; read back all six cells; wrote row 0 / column 0 and row 1 / column 2; atomically replaced only row 0 / column 0; verified the control cell remained unchanged
  • dry-run proof contained only provider-supported create fields and made no API call
  • invalid unpaired cell coordinates failed before API access
  • disposable deck moved to trash and verified trashed

Credit

Thanks @sebsnyk for #824 and the requested command shape.

@clawsweeper clawsweeper Bot added clawsweeper Tracked by ClawSweeper automation clawsweeper:autogenerated PR created automatically by ClawSweeper clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge labels Jun 18, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jun 18, 2026
@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: passed. Reviewed June 18, 2026, 1:08 AM ET / 05:08 UTC.

Summary
The PR adds gog slides table create, adds --row/--col table-cell targeting to gog slides insert-text, updates focused tests, and regenerates command docs.

Reproducibility: not applicable. as a bug reproduction for this PR. Source inspection confirms the preexisting main-branch gap, while merge readiness depends on live provider proof of the new behavior.

Review metrics: 2 noteworthy metrics.

  • Patch size: 12 files, +593/-7. The feature spans command code, generated docs, and tests, so API semantics and generated CLI docs both need review.
  • Generated command pages: 2 added, 4 updated. The public CLI reference changes are part of the shipped user surface for this feature.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #824
Summary: This PR is the candidate implementation for the linked Slides native table command issue; another Slides metadata issue overlaps only on table-cell text visibility and remains broader.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🐚 platinum hermit
Result: blocked until real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Add redacted live Google Slides proof showing gog slides table create creating a native table and gog slides insert-text --row --col writing into a cell.
  • Clarify whether this first slice should close the linked broad issue or leave a follow-up for the remaining table operations.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR body lists local/CI validation only; it does not include live Google Slides proof of creating a table and writing to a cell. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] The PR has only local/CI validation and no live Google Slides proof for provider-side table creation or table-cell text insertion.
  • [P1] The PR body uses closing syntax for a broad linked issue while intentionally leaving row/column, merge, border, style, and dimension operations out of scope.

Maintainer options:

  1. Verify live behavior and issue scope (recommended)
    Before merge, attach redacted live Google Slides proof for table create plus cell text insertion and make the linked issue closure/follow-up plan explicit.
  2. Accept a manual v1 merge
    Maintainers may intentionally accept this as a first slice, but should own the risk that the provider-side request shape or broad issue closure is wrong.

Next step before merge

  • Generated autofix should stay manual-merge only until a maintainer verifies live Google Slides behavior and decides the linked issue closure scope.

Security
Cleared: The diff only changes Go command/test code and generated docs; it does not touch dependencies, workflows, credentials, or release scripts.

Review details

Best possible solution:

Land only after redacted live Google Slides proof confirms table creation and cell text insertion, and either make the linked issue explicitly v1-complete or leave/open a follow-up for the remaining table operations.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction for this PR. Source inspection confirms the preexisting main-branch gap, while merge readiness depends on live provider proof of the new behavior.

Is this the best way to solve the issue?

Mostly yes. The code path is a narrow native Slides v1 that follows nearby command patterns, but the best merge path still needs live proof and a maintainer decision on linked issue scope.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 7712dc6f6e25.

Label changes

Label changes:

  • add P2: This is a normal-priority user-facing Slides capability improvement with limited blast radius.
  • add merge-risk: 🚨 other: Green CI does not prove the new provider-dependent Slides API behavior or whether the broad linked issue should close on this v1 slice.
  • add rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🐚 platinum hermit.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body lists local/CI validation only; it does not include live Google Slides proof of creating a table and writing to a cell. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Label justifications:

  • P2: This is a normal-priority user-facing Slides capability improvement with limited blast radius.
  • merge-risk: 🚨 other: Green CI does not prove the new provider-dependent Slides API behavior or whether the broad linked issue should close on this v1 slice.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body lists local/CI validation only; it does not include live Google Slides proof of creating a table and writing to a cell. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

What I checked:

  • Repository policy read: AGENTS.md was read fully; its PR-review flow says to inspect PRs with gh pr view / gh pr diff without changing branches, which I followed. (AGENTS.md:1, 7712dc6f6e25)
  • Vision merge bar: VISION.md says small primitives in supported Google Workspace areas fit, but live Google proof is expected when behavior depends on Google Workspace APIs. (VISION.md:1, 7712dc6f6e25)
  • Current main lacks Slides table command: Current SlidesCmd registers Slides commands through insert/replace/raw surfaces but has no table subgroup on main, so the central linked feature remains absent before this PR. (internal/cmd/slides.go:17, 7712dc6f6e25)
  • Current main lacks cell targeting: Current SlidesInsertTextCmd exposes objectId, text, insertion index, and replace only; it has no row/column flags or TableCellLocation request construction. (internal/cmd/slides_insert_text.go:18, 7712dc6f6e25)
  • PR head adds first table surface: The exact PR head adds SlidesTableCreateCmd with table dimensions, placement, dry-run payload, slide existence check, batchUpdate CreateTable request, and JSON/plain output. (internal/cmd/slides_table.go:18, b873f85f3033)
  • PR head adds table-cell text request construction: The exact PR head adds --row and --col, validates them together, and sets Slides CellLocation on InsertText/DeleteText requests with ForceSendFields for zero indexes. (internal/cmd/slides_insert_text.go:24, b873f85f3033)

Likely related people:

  • steipete: Recent merged Slides command work and current blame for the command surface point to Peter Steinberger, including adjacent insert-image/replace-slide/shared helper changes. (role: recent area contributor; confidence: high; commits: 32a6dddf8d86, 6bc67d7dd770; files: internal/cmd/slides.go, internal/cmd/slides_insert_image.go, internal/cmd/slides_replace_slide.go)
  • chrissanchez-iops: Chris Sanchez authored the PR metadata for the original Slides insert-text/replace-text command shape that this PR extends, though local blame is collapsed through a release import. (role: adjacent Slides text contributor; confidence: medium; commits: 929a3d22efee; files: internal/cmd/slides_insert_text.go, internal/cmd/slides_replace_text.go, internal/cmd/slides.go)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Resolve the current merge conflict against latest main after #836 landed. Preserve the focused native Slides table implementation, integrate the current Slides command registry, regenerate command docs from the resolved tree, run focused and full validation, and keep this autogenerated PR manual-merge only.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞🧹
ClawSweeper autofix is enabled.

  • Head: e513dbccb1fb
  • Label: clawsweeper:autofix
  • Action: exact-head review queued (workflow sweep.yml, event repository_dispatch).
  • Flow: review this head, repair/rebase only if needed, then re-review the exact repaired head until no actionable findings remain.

This is fix-only; I will not merge this PR.

Re-review progress:

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞🔧
ClawSweeper applied a repair to this PR branch.

Repair: kept the fix on this contributor branch instead of opening a replacement PR.
Validation: git diff --check
Updated head: 6ab30749df32
Run: https://github.com/openclaw/clawsweeper/actions/runs/27743234692

Current state: exact-head review queued immediately; GitHub checks and the review verdict gate final merge.

Automerge progress:

  • 2026-06-18 07:39:24 UTC review queued 6ab30749df32 (after repair)

@clawsweeper clawsweeper Bot force-pushed the clawsweeper/issue-openclaw-gogcli-824 branch from b873f85 to 6ab3074 Compare June 18, 2026 07:39
@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper stop

Maintainer is handling this generated PR sequentially with design review, live provider proof, full CI, and autoreview. Stop active autofix/re-review automation and leave the branch stable for the maintainer rewrite.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
Got it. ClawSweeper will leave this item for human review.

I added clawsweeper:human-review and paused the automation trail until a maintainer asks again.

@steipete steipete removed the clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge label Jun 18, 2026
@clawsweeper clawsweeper Bot added the clawsweeper:human-review ClawSweeper automerge is paused for maintainer review label Jun 18, 2026
@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Accepted review finding: this table branch is based before #835 and would remove its style-text/link/bullets registrations and explicit replace-text scope safety if landed. Rebase onto current main, preserve all newly landed text-edit behavior and docs, resolve only overlapping Slides registry/generated-doc changes, run Slides/full validation, and keep this autogenerated PR manual-merge only. Do not edit CHANGELOG.md.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper 🐠 automerge status

No new branch changes from this pass. ClawSweeper left the branch untouched instead of making a noisy edit.

Executor outcome: source PR #834 is paused by clawsweeper:human-review; refusing to mutate the PR branch.
Worker summary: Make this PR merge-ready for ClawSweeper automerge. Rebase onto latest main, address PR comments and review findings, fix CI/check failures, preserve release-note context, and validate before returning.

Worker actions:

  • build_fix_artifact on this PR: planned - Maintainer opted this PR into ClawSweeper automerge/autofix repair; run the direct Codex edit loop after live hydration instead of a separate read-only planning pass.

This pass stayed observational only. No branch push, replacement, merge, or re-review was started.

fish notes: reasoning high.

Automerge progress:

@steipete steipete removed the clawsweeper:human-review ClawSweeper automerge is paused for maintainer review label Jun 18, 2026
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
@steipete steipete force-pushed the clawsweeper/issue-openclaw-gogcli-824 branch from 6ab3074 to 3e0e1da Compare June 18, 2026 08:09
@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper 🐠 automerge status

This repair pass finished without changing the PR. ClawSweeper checked the branch and found no safe patch to push this time.

Executor outcome: source PR branch changed while the repair worker was preparing its push; requeue against the latest head.
Worker summary: Make this PR merge-ready for ClawSweeper automerge. Rebase onto latest main, address PR comments and review findings, fix CI/check failures, preserve release-note context, and validate before returning.

Worker actions:

  • build_fix_artifact on this PR: planned - Maintainer opted this PR into ClawSweeper automerge/autofix repair; run the direct Codex edit loop after live hydration instead of a separate read-only planning pass.

Nothing moved downstream from this pass: no branch update, replacement PR, merge, or re-review.

fish notes: reasoning high.

Automerge progress:

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Accepted review finding: remove the CHANGELOG.md entry from this contributor/generated PR. The source job and maintainer instruction explicitly keep gogcli release notes release-owned; preserve the release-note text and contributor credit in the PR body/commit history. Keep the current clean rebase and table implementation unchanged, rerun validation, and leave the PR manual-merge only.

@clawsweeper clawsweeper Bot added the clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge label Jun 18, 2026
@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Accepted code finding: cell-targeted insert-text --replace unconditionally sends DeleteText{ALL} before insertion. Google Slides rejects that delete for an empty text container; gogcli already documents and handles the same provider error for fresh empty notes boxes. A newly created table's blank cells therefore break the documented create-then-replace workflow. Read the target cell state before replacement and emit DeleteText only when it has existing deletable text, while preserving dry-run semantics and adding blank/nonblank cell regression coverage. Also retain the prior instruction to remove this PR's CHANGELOG.md edit.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞🔧
ClawSweeper applied a repair to this PR branch.

Repair: kept the fix on this contributor branch instead of opening a replacement PR.
Validation: git diff --check
Updated head: 98a9916adc42
Run: https://github.com/openclaw/clawsweeper/actions/runs/27746316258

Current state: exact-head review queued immediately; GitHub checks and the review verdict gate final merge.

Automerge progress:

  • 2026-06-18 08:24:40 UTC review queued 98a9916adc42 (after repair)

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper stop

Maintainer is handling this generated PR sequentially with design review, live provider proof, full CI, and autoreview. Stop active autofix/re-review automation and leave the branch stable for the maintainer rewrite.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
Got it. ClawSweeper will leave this item for human review.

I added clawsweeper:human-review and paused the automation trail until a maintainer asks again.

@steipete steipete added clawsweeper:human-review ClawSweeper automerge is paused for maintainer review and removed clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge labels Jun 18, 2026
@steipete steipete force-pushed the clawsweeper/issue-openclaw-gogcli-824 branch from 98a9916 to 3e0e1da Compare June 18, 2026 08:27
@steipete steipete removed the clawsweeper:human-review ClawSweeper automerge is paused for maintainer review label Jun 18, 2026
@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞🔧
ClawSweeper applied a repair to this PR branch.

Repair: kept the fix on this contributor branch instead of opening a replacement PR.
Validation: git diff --check
Updated head: e513dbccb1fb
Run: https://github.com/openclaw/clawsweeper/actions/runs/27747018371

Current state: exact-head review queued immediately; GitHub checks and the review verdict gate final merge.

Automerge progress:

  • 2026-06-18 08:40:00 UTC review queued e513dbccb1fb (after repair)

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Accepted review finding on repaired head e513dbc: table-cell insert-text --replace now reads the presentation to decide whether DeleteText is needed, but its subsequent BatchUpdate lacks WriteControl.RequiredRevisionId. A collaborator can change the cell between read and write, making the delete decision stale and violating replace semantics. Pin the batch write control to pres.RevisionId when available, as object-scoped replace-text already does, and assert the read revision is sent in blank and nonblank cell regression coverage. Preserve the blank-cell fix and keep CHANGELOG.md untouched.

@clawsweeper clawsweeper Bot added the clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge label Jun 18, 2026
@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🦞🔧
ClawSweeper applied a repair to this PR branch.

Repair: kept the fix on this contributor branch instead of opening a replacement PR.
Validation: git diff --check
Updated head: 203142c94627
Run: https://github.com/openclaw/clawsweeper/actions/runs/27748073244

Current state: exact-head review queued immediately; GitHub checks and the review verdict gate final merge.

Automerge progress:

  • 2026-06-18 08:58:18 UTC review queued 203142c94627 (after repair)

@steipete steipete added clawsweeper:human-review ClawSweeper automerge is paused for maintainer review and removed clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge labels Jun 18, 2026
@steipete steipete closed this Jun 18, 2026
@steipete

Copy link
Copy Markdown
Collaborator

Maintainer rewrite moved to #837. The original PR became unreopenable after its head branch was force-pushed while closed; #837 preserves the reviewed one-commit branch, contributor credit, live provider proof, full CI, and autoreview context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:autogenerated PR created automatically by ClawSweeper clawsweeper:human-review ClawSweeper automerge is paused for maintainer review clawsweeper Tracked by ClawSweeper automation merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P2 Normal priority bug or improvement with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant