Skip to content

feat(slides): no paragraph-style command — alignment, spacing and indentation unreachable (updateParagraphStyle) #1098

Description

@sebsnyk

The gap

gog slides has no paragraph-level command. style-text covers character style, bullets toggles list bullets, and table cell style --content-align covers vertical alignment inside a table cell. Nothing reaches updateParagraphStyle, so there is no way to set:

  • alignment (START / CENTER / END / JUSTIFIED)
  • lineSpacing
  • spaceAbove / spaceBelow
  • indentStart / indentEnd / indentFirstLine
  • direction

Why it bites

Corporate templates commonly set body placeholder paragraphs to centred. Text written into a shape with insert-text inherits the paragraph style in force, so a left-reading list of bullet lines lands centred and reads as a ragged column. A deck built as native shapes, which is the only route on tenants where image insertion is refused, is therefore unfinished after create-shape + style + insert-text + style-text: the text is the right size, weight and colour, and still in the wrong place.

There is also no way back. element style does not touch text, and re-inserting the text inherits the same paragraph style again.

The practical consequence is that a script otherwise entirely driven by gog has to open a Google API client library for one updateParagraphStyle request, purely because the CLI cannot express it. That is a single-purpose second auth path for one field.

Manual bullets are the second symptom

With no indentFirstLine / indentStart, a manually written bullet line that wraps returns flush left on its second line and reads as a new item. bullets creates native list bullets but gives no control over the hanging indent, so hand-drawn bullet glyphs inside a shape cannot be made to hang.

Proposed surface

Mirror style-text, which already takes an object id and a UTF-16 range:

gog slides paragraph-style <presentationId> <objectId> [flags]
      --range=STRING             UTF-16 text range as start:end; defaults to all text
      --row=INT-64 --col=INT-64  Target a table cell instead of a shape
      --align=START|CENTER|END|JUSTIFIED
      --line-spacing=FLOAT-64    Percent, 100 = single
      --space-above=FLOAT-64     Points
      --space-below=FLOAT-64     Points
      --indent-start=FLOAT-64    Points
      --indent-end=FLOAT-64      Points
      --indent-first-line=FLOAT-64
      --direction=LEFT_TO_RIGHT|RIGHT_TO_LEFT

One UpdateParagraphStyleRequest, fields built from whichever flags were passed, same as style-text does for textStyle. Table cells need the cellLocation on the request, which is why --row / --col appear here as they do on table cell style.

read-slide --detail already reports alignment on each text element, so the CLI can show that a placeholder is centred and has no command to change it. That asymmetry is the clearest statement of the gap.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal priority bug or improvement with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions