Repository navigation
A form names the fields each write accepts from its person, and the host page sends none that no write accepts - #142
Merged
Conversation
…ost page sends none that no write accepts
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
… and limitations, README, CHANGELOG and the architecture
sharkysan
marked this pull request as ready for review
October 31, 2026 16:58
… page now draws every field no write accepts
sharkysan
added a commit
that referenced
this pull request
Nov 1, 2026
…column through a regeneration (#145) A field's presentation may set or remove its help text: FieldPresentation.description is text that replaces or adds it, or null that removes the base's. applyPresentation refuses help text equal to the base's, a removal where the base has none, and help text over a spec 3 base; presentationOf derives it; rebasePresentation carries it by the column, keeping the person's over a comment that changed too (both-changed, property description) and reporting it field-gone with its column. The studio's Presentation step has a Help text box under each field's label: empty removes help text, past 300 characters the box says so. The carried panel offers "Use the generator's help text" for a help-text conflict, where every both-changed had offered the label. Record 0119; the Presentation picture retaken on CI's runner, with two host pictures that had moved since #142 and #144.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A form names the fields each write accepts from its person, and the host page draws a field that no write accepts as unwritable and sends it in no save (0117).
With the merge of #138 this record is 0117: the lint record took 0116.
Why
formancy's renderers submit every field, disabled ones included, and the server removes the echo it can prove (0022). So nothing was wrongly written, but:
What changes
writableFields(policy, context, bindings, operation), each field the over-posting check accepts alone, in the bindings' order.copiedFieldsnow asks it, so no second list of what may be written exists.GET /v1/forms/:idaddswritable: { create, update }, withnullfor a write the form does not offer.writable, or naming a write the form does not offer, isunexpected, so a host upgrades its server before its client.session.tsdraws a field in neither list disabled and leaves it out of every create, update and change from a date. The submitted answers stay whole for the session's own comparisons, so a field left out is never counted as changed.change.test.tsxchecks what is drawn disabled and what an update sends;plane.test.tsxalso creates, updates and changes a price on the page's own origin. Thesupersedeexception is left for the demo's door alone, since the live demo publishes no form over versions.Watched failing
writableleft out of the reply.writableleft unchecked.change.test.tsx: the note was writable, on both engines.plane.test.tsx:tenant_idwas in the price's update and its change from a date, on both engines. The create sent none, since an empty field isn't submitted.session-work.test.tsfailed too, for the fixture's missingwritable, which the third commit adds with a new case. That case was watched failing locally: nothing was disabled.temporal-round-trip-page.test.tsexpected an instant and a time withheld by the policy alone to be drawn enabled, as before. It passed under the mutation and failed on the real code (both engines, both renderers), so it now expects them disabled, like the ones the account may not write. The note beside them still saves, and both columns stay byte-identical.ECONNRESETwhile shutting down. This change doesn't cause that, and the final run will show whether it recurs.The second commit is reverted by the third, and the squash leaves no trace of it.
Run locally
On a Mac (arm64, Node 22.14), with Docker hung, so the host suites ran in CI only:
pnpm build,pnpm typecheck, eslint and prettier on the touched files;session-work.test.ts5/5, which needs no server;