Skip to content

docs: marketplace readiness - #25

Merged
batonac merged 3 commits into
developfrom
docs/marketplace-readiness
Oct 22, 2026
Merged

batonac merged 3 commits into
developfrom
docs/marketplace-readiness

Conversation

@batonac

@batonac batonac commented Oct 21, 2026

Copy link
Copy Markdown
Member

Brings the app up to the frappe-nix 1.1 app standard for its README, registry listing, icon and screenshots, in the same format as Avunu/ui_text_editor#86.

What changed

  • Icon: esign_webforms/public/images/esign_webforms-symbolic.svg (the approved pen-nib-on-signature-line glyph) and the esign_webforms-logo.svg tile that frappe-icon tile generates. The app is an extension, so it has no add_to_apps_screen entry and no desktop-icon fixture, and app_logo_url is not set.

  • Listing: marketplace/listing.toml: title "eSign Web Forms" (the name avunu.net uses), tagline "Electronic signatures on Frappe documents through web forms, with signed PDFs", type and category extension / Extensions, categories Documents and Productivity, the website and the documentation page. hooks.py, pyproject.toml and flake.nix agree with it (title, description, publisher Avunu LLC, mail@avu.nu, MIT).

  • README: rewritten to the standard outline (Overview, Features, Configuration, How It Works, Limitations) around the blocks that frappe-init --sync generates, from the code, the old README and the avunu.net page. The old README's Contributing section (pre-commit, eslint, prettier) was out of date; the build commands and the source layout are now in docs/development.md. docs/README.md uses the new title and tagline and links to it.

  • Screenshots: marketplace/screenshots.ts and esign_webforms/demo.py, with esign_webforms/tests/test_demo.py. The demo makes a small submittable "Service Agreement" DocType with a Signature field, a print format, an eSign web form and an eSign email template, then one agreement waiting for a signature and one signed agreement. The signed one has its PDF and the eSign Communication that the app's own record_signature writes. docs/screenshots/ has:

    • signing-page (hero, light only): the signing page with the agreement preview and the form filled in with a typed signature.
    • signature-pad (light only): the signature dialog's Draw tab with a drawn signature.
    • send-for-esign (light and dark): the Send for eSign dialog with the email template rendered for the document.
    • audit-trail (light and dark): a signed agreement's timeline with the eSign audit card.

    The two signing-page shots are light only because the website page has no dark theme, so the dark copies were identical. They were made locally with frappe-shots --recreate-site --update, and every image was checked by eye. frappe-init --sync then added the hero to the README header.

  • License: a single license.txt with the MIT text, "Copyright (c) 2025 Avunu LLC". The first commit is from September 2025, which matches the generated "2025–present" block. The license link in docs/README.md now points at GitHub, because a relative license.txt would be broken on the docs site.

Verification (local, with frappe-nix 1.1.1 tooling)

  • prek run --all-files: passes
  • frappe-init --check: clean
  • frappe-listing check --no-getapp: every check passes. The demo's one render_template call renders the module's own print-format constant and carries a nosemgrep: frappe-ssti comment with that reason.
  • frappe-listing check --links-only: every check passes. https://avunu.net/open-source/esign_webforms/ and https://docs.avunu.net/esign-webforms/ both return 200.
  • frappe-icon check: the structural and raster checks pass
  • yarn typecheck (tsc --build, which now includes tsconfig.scripts.json and the screenshot spec): passes
  • frappe-test --reuse-site --ty: 95 tests pass, coverage 93.4 % (gate 80), and ty is clean
  • frappe-shots --recreate-site --update: 6 images, all inspected

Gaps and known differences

  • Generated install and compatibility blocks: these name the version-16 branch, which does not exist until the first release-please release creates it. They also link the Frappe Cloud marketplace page, which goes live only once the app is listed, and the "Latest release" badge shows nothing until there is a release. All of this is expected. A hand-written line under the install block says to use --branch develop until then.
  • Demo PDF: frappe-shots runs the demo before bench build, so frappe.attach_print (which the signing job uses) fails there for lack of assets.json. The demo renders the print format's HTML itself and converts it with frappe.utils.pdf.get_pdf. The rest of the signing record goes through the app's record_signature.
  • Behaviour documented as limitations, not changed here:
    • The Send for eSign dialog builds the link without the recipient's email parameter. send_esign_email calls get_esign_link(doc, web_form, print_format) without recipient_email, so a guest signer's email is only recorded when the form has an Email field. The code comments suggest the parameter was meant to be included.
    • Guest signers have no name in the audit trail; the timeline card names them by email.
    • In the desk timeline's eSign card, the "Download Signed PDF" action (#es-line-download) renders as a filled black dot in both themes, as the audit-trail shots show. The "open" link icon next to it renders correctly.
  • Sequencing: this branch includes develop after ci: move to frappe-nix 1.1.1 #24 (ci: move to frappe-nix 1.1.1) and was re-synced with frappe-init --sync.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SvdEeMiewirZ3ifFoUix5F

batonac and others added 3 commits October 21, 2026 18:19
Add the registry listing, the icon pair, the screenshot spec with its demo
data, and rewrite the README to the standard outline around the blocks
frappe-init renders. The development notes move to docs/development.md, the
title and tagline agree across hooks.py, pyproject.toml and the listing, and
license.txt carries the year of the first commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SvdEeMiewirZ3ifFoUix5F
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SvdEeMiewirZ3ifFoUix5F
The README listed Print Format and the notification settings under
eSign Settings, but Print Format is the web form's own field and the
notification settings have their own section. Also say that Set
Property After Response offers every field but only sets Select, Link,
Data and Text fields, and name the mobile-only option for what it
checks (screen width, not touch).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SvdEeMiewirZ3ifFoUix5F
@batonac
batonac merged commit 1c534eb into develop Oct 22, 2026
23 of 28 checks passed
@batonac
batonac deleted the docs/marketplace-readiness branch October 22, 2026 03:07
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