Skip to content

feat(turbodocx-sdk): optional pageNavigation for embedded signing URLs - #42

Draft
nicolasiscoding wants to merge 2 commits into
mainfrom
feature/signing-url-page-navigation
Draft

nicolasiscoding wants to merge 2 commits into
mainfrom
feature/signing-url-page-navigation

Conversation

@nicolasiscoding

Copy link
Copy Markdown
Member

Related

Follows TurboDocx/SDK#132, which adds the optional pageNavigation option to createSigningUrl and createEmbeddedSignature in all six SDKs.

Merge order: merge this after SDK#132 ships in a release. Until then, generated Go, Java and PHP code that sets the option will not compile against the current published SDK (the Java reference pins 0.9.0). Bump the pins in the same release follow-up.

Description

pageNavigation sets how the embedded signing page shows its page navigation (the thumbnail rail and the "Pages" button) inside the integrator's iframe:

  • auto (default) sizes it to the iframe width.
  • collapsed starts the rail collapsed. The signer can still open it.
  • hidden removes the rail and the Pages button.

The setting applies to one URL only. Omitting it on a later mint resets the navigation to auto.

This PR documents the option in every language reference. It appears as a commented, optional line next to returnUrl, so generated code does not set it by default.

Language createSigningUrl createEmbeddedSignature
JS/TS pageNavigation: 'hidden' (PageNavigationMode) pageNavigation: 'hidden'
Python page_navigation="hidden" page_navigation="hidden"
Go PageNavigation: turbodocx.PageNavigationHidden same field on CreateEmbeddedSignatureRequest
PHP pageNavigation: PageNavigation::HIDDEN (enum, not a string) same
Java .pageNavigation(PageNavigation.HIDDEN) same builder method
Ruby page_navigation: "hidden" keyword pageNavigation: "hidden" request-hash key

Each reference also says:

  • The value is not saved on the document, so a re-mint of a pending signer after createEmbeddedSignature has to pass it again.
  • PHP's constructors are typed ?PageNavigation, so a plain string is a TypeError. Only fromArray() accepts strings, and it throws InvalidPageNavigation for any other value.

SKILL.md adds one sub-bullet to the embedded-signing guidance. It tells the model to set the option only when the user asks to hide or collapse the page navigation, and gives the name to use in each language.

Evals

There are six new cases, ids 72 to 77, one per language. They mix hidden and collapsed, and createSigningUrl and createEmbeddedSignature. Each asserts that the option is passed with the correct name and type for that language. Case 72 also asserts the option is not attached to the browser widget or the URL. Case 74 asserts every mint sets it.

How they were run

claude evals run is not an available command, and claude plugin eval expects case.yaml suites. So I used the skill-creator flow:

  • One subagent per case scaffolded the listed fixture files and then followed the skill.
  • Each case ran on this branch's skill and on a snapshot of main's skill.
  • I graded the outputs by inspection and grep.
Run Result
New cases 72-77, this branch 6/6 pass every assertion, with the correct per-language name and type
New cases 72-77, main skill 0/6 on the page-navigation assertion. Every run correctly said the option is not documented and did not invent one
Regression: existing embedded cases 55, 56, 59, 60, 67 on this branch All existing assertions still pass. None of the generated code sets pageNavigation when the prompt didn't ask for it

Not run: the other 66 existing cases. Their skill sections did not change.

Not compiled: none of the generated code was compiled or executed.

🤖 Generated with Claude Code

…gning URLs

createSigningUrl and createEmbeddedSignature take an optional pageNavigation
(auto | collapsed | hidden) that sets how the embedded signing page shows its
page thumbnails inside the iframe. Shown as a commented option in every
language reference with the per-language name and type, plus a note that it
applies per URL and must be passed again when re-minting a pending signer.
Follows TurboDocx/SDK#132.
@nicolasiscoding nicolasiscoding self-assigned this Oct 20, 2026
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.

1 participant