Document the current signature appearance and preview pipeline
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
- #114 di @thaibao-byte — chiusa senza merge
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- php, python, typescript
- Ambito
- documentation
Direzione di ricerca
Create developer_manual/architecture/signature-appearance.rst and update developer_manual/architecture.rst to link to it. Start by tracing the listed policy, preview, signing-handler, service, and test files; use implementation and tests to verify each documented claim, especially current variables, render modes, and renderer differences. Build and review the Sphinx manual, check cross-references, and include rendered-page screenshots in the PR description.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Goal
Document the current LibreSign signature appearance, footer/template, preview and PDF rendering pipeline so contributors can understand the existing behavior before the future reusable appearance contract is defined.
This issue documents behavior that already exists.
Do not design the future template format, fix Unicode rendering, change the editor, or add AI-assisted authoring.
This documentation will be used as factual input by LibreSign/libresign#9061.
Why this is a good first issue
The current behavior is already implemented and covered by code/tests.
The contributor does not need to decide:
- what the future template language should be;
- whether LibreSign should use Twig, HTML, JSON/AST or another representation;
- how #8155 should be fixed;
- how AI generation should work;
- how the editor should be redesigned.
The task is to trace the existing data flow and document it accurately using the sources listed below.
If a behavior cannot be confirmed, do not guess. Comment on this issue with the unresolved point.
Documentation destination
Create:
developer_manual/architecture/signature-appearance.rst
Do not move or rename:
developer_manual/architecture.rst
Update developer_manual/architecture.rst so its "Where to go next" section links to the new page.
Update the developer manual toctree only as needed so Sphinx includes the page.
Do not reorganize unrelated documentation.
Sources to inspect
Policy/editor configuration
Inspect the existing signature footer/appearance settings, including at least:
src/views/Settings/PolicyWorkbench/settings/signature-footer/model.tssrc/views/Settings/PolicyWorkbench/settings/signature-footer/realDefinition.tssrc/views/Settings/PolicyWorkbench/settings/signature-footer/SignatureFooterRuleEditor.vue- related policy definitions/providers under
lib/Service/Policy/Provider/
Document only currently supported settings and behavior.
Preview path
Inspect at least:
lib/Controller/SignatureStampPreviewController.phplib/Service/SignatureStampPreview/SignatureStampPreviewNativeService.php- related classes under
lib/Service/SignatureStampPreview/
Trace:
- where preview input comes from;
- how values/placeholders are resolved;
- how appearance data is built;
- what preview output represents.
Final signing/rendering path
Inspect at least:
lib/Handler/SignEngine/PhpNativeHandler.phplib/Handler/SignEngine/Pkcs12Handler.php- any appearance/XObject DTO/builder classes used by the native path.
Document the responsibility boundary between LibreSign and the signing library.
Do not document private library behavior that LibreSign does not rely on.
Current variables/elements
Inspect:
lib/Service/SignerElementsService.php- signature-text/template services used by the current appearance path;
- relevant policy/model definitions.
Create a verified inventory of current variables/placeholders or render elements that are actually supported.
Do not invent aliases or planned variables.
Tests
Use current tests as behavioral evidence.
Inspect at least:
tests/php/Unit/Service/SignatureStampPreviewNativeServiceTest.phptests/php/Unit/Controller/SignatureStampPreviewControllerTest.phptests/php/Unit/Handler/SignEngine/PhpNativeHandlerTest.php- relevant frontend/Playwright tests for signature footer/template editing.
Use tests to confirm edge cases and renderer behavior.
Known limitation
Read #8155.
Document it only as a current known limitation where relevant.
Do not propose or implement the fix in this documentation task.
Required page structure
The new page must use this structure.
1. What a signature appearance is
Explain the distinction between:
- the cryptographic/digital signature;
- the optional visible appearance rendered in the PDF.
Do not imply that a visible appearance is required for signature validity.
Cross-reference existing documentation if this distinction is already explained elsewhere.
2. Current configuration sources
Document where current appearance/footer settings come from.
Explain the role of Policy Workbench and any user/request-specific inputs that actually exist.
Do not describe planned configuration.
3. Current data flow
Provide a concise flow diagram or ordered list covering the current path from configuration/input to preview/final rendering.
The diagram must be based on verified code.
For example, identify boundaries such as:
policy/configuration -> appearance values -> preview/render builder -> signing handler -> PDF appearance
Do not use this example literally if the code shows a different boundary.
4. Preview pipeline
Explain:
- preview controller/service responsibility;
- how sample/preview signer/document data is used;
- what preview is intended to represent;
- important differences between preview and final signing, if verified.
5. Final PDF rendering
Explain:
- where final appearance rendering is triggered;
- the responsibility of
PhpNativeHandler; - how appearance/XObject data reaches the signing engine;
- renderer-specific behavior that LibreSign currently depends on.
6. Current variables and render modes
Provide a verified table containing, where applicable:
- variable/element name;
- meaning;
- source value;
- where it is consumed;
- relevant limitation.
Also document current render modes exposed by SignerElementsService or equivalent source.
Do not list anything that cannot be confirmed in code/tests.
7. Validation and escaping
Document current validation/escaping/sanitization behavior that is explicitly implemented.
If the current implementation has no generic sanitizer for a particular input, say only what can be verified; do not claim a stronger security guarantee.
8. Unicode and font limitations
Document #8155 as a current limitation of the relevant native rendering path.
State observed/current behavior and scope.
Do not choose a future font/encoding strategy.
9. Renderer differences
Document only differences between supported signing/rendering paths that are relevant to visible appearance behavior and are confirmed by code/tests.
Do not attempt to make engines identical in this issue.
10. Testing map
Explain which existing tests cover:
- template/policy model;
- preview behavior;
- final native rendering;
- relevant browser/editor behavior.
Point to representative test files.
11. Related architecture
Cross-reference:
- the main developer architecture page;
- testing documentation;
- relevant PDF/signing documentation if it already exists.
Do not duplicate those pages.
Writing requirements
Write for a developer who understands PHP/TypeScript/PDF concepts but has not traced LibreSign's appearance pipeline before.
Use these rules:
- explain product/domain concepts before class names;
- describe current behavior in present tense;
- distinguish visible appearance from digital-signature validity;
- do not narrate the research process;
- do not describe #9061's future contract as implemented;
- do not recommend a future template language;
- keep code excerpts very small and only when they clarify a public/internal contract;
- every technical claim must be traceable to current code/tests;
- use cross-references instead of repeating general signing/PDF concepts;
- use synthetic example values only.
Evidence rule
Before documenting a behavior, confirm it through current implementation, tests or repository guidance.
If two render paths behave differently:
- document the difference if verified and relevant;
- do not "normalize" the description;
- do not modify production behavior;
- comment on this issue if it is unclear whether the difference is intentional.
Screenshots
Because this PR changes rendered documentation, the pull request must include screenshots of the rendered page. Repository-wide contribution guidance for this rule is tracked by #46; this issue's screenshot requirement applies even if #46 is still open.
For this page:
- include at least one screenshot showing the new page title and current-pipeline overview;
- include focused screenshots for tables/diagrams if they are not readable in the first image;
- screenshots are PR review evidence and do not need to be committed into the manual unless an image is itself required by the documentation.
Do not include personal/customer data.
Out of scope
Do not:
- modify LibreSign application code;
- fix #8155;
- add or remove template variables;
- change render modes;
- redesign Policy Workbench;
- choose a future template grammar;
- change preview behavior;
- change PDF/XObject rendering;
- implement AI-assisted authoring;
- restructure unrelated documentation.
Validation
Before opening the PR:
- build the developer manual using the repository's documented build flow;
- verify the new page is reachable from the developer architecture documentation;
- verify Sphinx cross-references resolve;
- verify every named source path/class exists;
- compare the page against current tests to ensure it does not overstate behavior;
- review the rendered page;
- include required screenshots in the PR description.
Done when
-
developer_manual/architecture/signature-appearance.rstexists. - The main architecture page links to it.
- The visible-appearance concept and current configuration sources are documented.
- The preview and final rendering pipelines are documented.
- Current variables/elements and render modes are inventoried from code.
- Current validation/escaping behavior is documented without overclaiming.
- #8155 is documented as a current limitation, not solved here.
- Representative tests are mapped to the documented behavior.
- Sphinx build/checks pass.
- The PR includes screenshots of the rendered documentation.
- Lingua principale
- Python
- Stelle
- 3
- Fork
- 6
- Merge medio
- 1g 3h
- PR unite (30g)
- 10
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di LibreSign/documentation
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
LibreSign/documentation#104 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
LibreSign/documentation#115 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
LibreSign/documentation#112 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
LibreSign/documentation#111 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
LibreSign/documentation#67 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di LibreSign/documentation
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
esphome/esphome.io#7657 ·
I maintainer di solito rispondono entro 1 giorno
-
comp/gateway comp/plugins duplicate P3 type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NousResearch/hermes-agent#137019 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Kumo-Tabular weights unreachable behind restrictive egress proxies (Xet + plain HTTP both fail)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
NVIDIA/structured-data-models#1091 ·
I maintainer di solito rispondono entro 1 giorno
-
[work-item] adam-adae-worsening-emergence: conform spec.yaml to the specification style contract (REQ-1280)Forse già presa @muse-yamaa-bot l’ha presa oggi. Apertawork-item
Difficoltà 1/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno