Skip to content

feat(slides): add native slide structure commands#833

Merged
steipete merged 1 commit into
mainfrom
clawsweeper/issue-openclaw-gogcli-826
Jun 18, 2026
Merged

feat(slides): add native slide structure commands#833
steipete merged 1 commit into
mainfrom
clawsweeper/issue-openclaw-gogcli-826

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add gog slides new-slide for native editable slides, defaulting to blank and supporting validated predefined layouts or exact theme --layout-id values
  • add gog slides duplicate-slide, with optional atomic --to-index positioning
  • add gog slides move-slide with explicit zero-based --to-index
  • add dry-run, request-construction, output, validation, zero-index, layout, and positioning tests
  • document layout selection, pre-move index semantics, and verification workflows

This is the intentionally narrow slide-level first slice of #826. The issue remains open for the broader element create/transform/style/group/z-order/alt-text subtree.

Validation

  • go test ./internal/cmd -run 'TestSlides(NewSlide|DuplicateSlide|MoveSlide)'
  • make ci
  • final local autoreview: clean, no accepted/actionable findings
  • live disposable-deck proof verified blank default, predefined TITLE_AND_BODY, and an exact theme layout ID from slides info --json
  • raw read-back verified the provider assigned the expected layout object IDs
  • live duplication without a position landed directly after its source and preserved the source layout
  • live duplicate-plus-position moved the copy to index 0 in one batch
  • live move operations verified index 0 and inclusive end index 6, with list-slides --json order read-back after each phase
  • invalid predefined layout and conflicting layout flags failed before API access
  • dry-run emitted the expected duplicate-plus-position batch without creating a service
  • disposable deck moved to trash and verified trashed

Credit

Thanks @sebsnyk for #826 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, 2:48 AM ET / 06:48 UTC.

Summary
The PR adds gog slides new-slide, duplicate-slide, and move-slide commands with request-construction tests and regenerated command docs.

Reproducibility: not applicable. for this feature PR. The linked issue has source-level evidence for the missing command surface; this review checks whether the proposed implementation is merge-ready.

Review metrics: 2 noteworthy metrics.

  • Command surface: 3 commands added. New user-facing CLI commands need API semantics and UX review beyond compilation.
  • Changed footprint: 9 files, 807 additions, 1 deletion. The feature is bounded, but implementation, tests, and generated docs should be reviewed together.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #826
Summary: This PR is the candidate implementation slice for the canonical open Slides structural command issue, while adjacent generated PRs cover nearby but distinct Slides surfaces.

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 proof showing new-slide, duplicate-slide --to-index, and move-slide --to-index against a real Google Slides deck.
  • [P1] Resolve the broad linked-issue closure scope before merge so remaining element commands are not lost.

Proof guidance:

  • [P1] Needs real behavior proof before merge: No after-fix real behavior proof is present; add redacted terminal output, logs, screenshots, a recording, or a linked artifact for the three live Slides commands, then update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.

Risk before merge

  • [P1] No after-fix live proof shows the mutating CreateSlide, DuplicateObject, and UpdateSlidesPosition calls working against a real Google Slides deck.
  • [P1] The PR body uses closing syntax for slides: no structural commands — create/duplicate/reorder native slides, create/move/style elements #826 even though broader element commands remain out of scope, so merging could close the canonical issue before all requested work is tracked elsewhere.
  • [P1] This is an autogenerated feature PR; the remaining decision is maintainer live verification and merge judgment, not a code repair that CI can settle.

Maintainer options:

  1. Verify live Slides mutations and closure scope first (recommended)
    Before merge, run the three new commands against a real deck and either remove the broad closing behavior or confirm the remaining element work is tracked separately.
  2. Accept API-contract-only confidence
    Maintainers could merge based on request-construction tests, but that accepts the risk that live Slides API behavior differs from the mocked request capture.
  3. Pause for sibling Slides slices
    If the adjacent Slides PRs change overlapping command shape or shared helpers, pause this PR until the split and issue ownership are settled.

Next step before merge

  • [P2] The remaining action is live API verification and maintainer merge-scope judgment, not a narrow automated code repair.

Security
Cleared: The diff adds Go CLI command code, tests, and generated docs without changing credentials, dependency sources, CI, package scripts, or secret handling.

Review details

Best possible solution:

Post redacted live deck proof, avoid closing the broader issue unless the remaining element work is separately tracked, then land this focused slide-structure slice if maintainers accept the command shape.

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

Not applicable for this feature PR. The linked issue has source-level evidence for the missing command surface; this review checks whether the proposed implementation is merge-ready.

Is this the best way to solve the issue?

Yes for the focused first slice: small batchUpdate-backed commands are the maintainable path for native slide create, duplicate, and move. It is not merge-ready without live deck proof and a maintainer decision on the broader linked issue closure.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a normal-priority Slides automation feature with clear scope and limited blast radius, not an urgent regression or security issue.
  • merge-risk: 🚨 other: Green CI does not prove these new mutating Google Slides structural operations against a live deck or settle the broad linked-issue closure scope.
  • 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: No after-fix real behavior proof is present; add redacted terminal output, logs, screenshots, a recording, or a linked artifact for the three live Slides commands, then update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.
Evidence reviewed

Acceptance criteria:

  • [P1] Manual live check: create a native layout slide in a real Google Slides deck.
  • [P1] Manual live check: duplicate a template slide and move the duplicate with --to-index.
  • [P1] Manual live check: move an existing slide with move-slide --to-index.

What I checked:

  • Repository policy read: AGENTS.md was read fully; its PR review-mode guidance and generated-command-doc expectations apply to this read-only review. (AGENTS.md:1, fa3fa1638b5a)
  • Current main still lacks these commands: Current SlidesCmd registers existing Slides commands such as add-slide, list-slides, delete-slide, insert-image, insert-text, and replace-text, but not new-slide, duplicate-slide, or move-slide. (internal/cmd/slides.go:17, fa3fa1638b5a)
  • Existing add-slide is not native themed slide creation: Current SlidesAddSlideCmd requires an image argument and builds a blank slide plus full-bleed image request, so it does not cover the requested native layout slide command. (internal/cmd/slides_add_slide.go:18, fa3fa1638b5a)
  • PR implementation shape: The PR adds code that builds CreateSlide, DuplicateObject, and UpdateSlidesPosition batchUpdate requests, with dry-run payloads before auth/API setup. (internal/cmd/slides_structural.go:21, 3c3100f8bdc4)
  • PR test coverage: The added tests cover request capture, JSON output, validation, and dry-run service skipping for the new slide structure commands. (internal/cmd/slides_structural_test.go:16, 3c3100f8bdc4)
  • Proof gap: The PR body explicitly asks for live Google Slides verification, and the PR comments contain no terminal output, logs, screenshot, recording, or linked artifact showing the new commands against a real deck. (3c3100f8bdc4)

Likely related people:

  • steipete: Current blame and recent merged PR history show Slides command registry, public image URL support, generated docs, and release work in this area. (role: recent area contributor and merger; confidence: high; commits: 6bc67d7dd770, 32a6dddf8d86, e6f98c1bb5f8; files: internal/cmd/slides.go, internal/cmd/slides_insert_image.go, internal/cmd/slides_replace_slide.go)
  • chrismdp: Merged PR history shows the original add-slide, list-slides, delete-slide, read-slide, update-notes, and replace-slide command work that this PR extends. (role: introduced core Slides editing commands; confidence: high; commits: 91b1e5b3f325, df67f03fd3c0, 3efc8e86f144; files: internal/cmd/slides.go, internal/cmd/slides_add_slide.go, internal/cmd/slides_delete_slide.go)
  • Czaruno: Merged PR history shows positioned insert-image work on existing slides, adjacent to the structural page-element surface discussed by the linked issue. (role: adjacent Slides element contributor; confidence: medium; commits: 5b14512d8fc0, b1de431219f8, 4d9c9a064823; files: internal/cmd/slides_insert_image.go, internal/cmd/slides_insert_image_test.go, internal/cmd/slides.go)
  • njreid: Merged slidey markdown import history added CreateSlide-heavy Slides rendering and layout code adjacent to native slide construction semantics. (role: adjacent Slides renderer contributor; confidence: medium; commits: 535633b941d3, 2b9176179567, c931df8b7a14; files: internal/cmd/slides_formatter.go, internal/cmd/slides_layout.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.

@clawsweeper clawsweeper Bot removed 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 🐠 automerge status

ClawSweeper took another look; no safe branch change was available on this pass.

Executor outcome: source PR #833 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.

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

fish notes: reasoning high.

Automerge progress:

  • 2026-06-18 07:36:50 UTC review queued c1e3adf9e933 (after repair)

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Resolve the current merge conflict against latest main after #836 landed. Preserve the focused native slide-structure 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.

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

@clawsweeper clawsweeper Bot added the clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge label Jun 18, 2026
@clawsweeper clawsweeper Bot force-pushed the clawsweeper/issue-openclaw-gogcli-826 branch from 3c3100f to c1e3adf Compare June 18, 2026 07:36
@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

Main advanced again when #835 landed. Rebase this structural-slides PR onto current main, preserve all newly landed style-text/link/bullets/replace-text 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.

@steipete

Copy link
Copy Markdown
Collaborator

@clawsweeper autofix

Main advanced when #837 landed. The remaining conflict is generated command documentation (docs/commands/README.md page count/list reconciliation). Rebase onto current main, preserve all landed text-edit and table commands, regenerate command docs, keep the reviewed structural-slide implementation unchanged, run Slides/full validation, and leave this autogenerated PR manual-merge only. Do not edit CHANGELOG.md.

@steipete steipete removed the clawsweeper:human-review ClawSweeper automerge is paused for maintainer review label Jun 18, 2026
@clawsweeper clawsweeper Bot added the clawsweeper:autofix Bounded ClawSweeper-reviewed autofix without merge label Jun 18, 2026
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
@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-826 branch from c1e3adf to cc4dabe Compare June 18, 2026 09:33
@steipete steipete merged commit a91cead into main Jun 18, 2026
9 checks passed
@steipete

Copy link
Copy Markdown
Collaborator

Landed as a91ceadc.

Maintainer validation:

  • focused native slide create/duplicate/move tests passed
  • make ci passed; generated 655 command pages and docs coverage passed
  • final autoreview reported no accepted/actionable findings
  • live provider proof covered blank default, validated predefined layout, exact theme layout ID, duplicate-after-source, atomic duplicate-to-index, move-to-front, and move-to-inclusive-end
  • raw provider read-back verified the expected layout object IDs and duplicate layout preservation
  • list-slides --json verified ordering after each structural operation
  • invalid layouts and conflicting layout selectors failed before API access; dry-run skipped service creation
  • disposable deck was verified trashed
  • all exact-head push and pull-request checks passed, including Windows

Thanks @sebsnyk for #826 and the command-shape guidance.

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