Developer guide: generate the properties binding figure from its sample - #5786
Conversation
This figure was written once before and backed out: the gender row is three RadioButton.createToggle controls, ToggleButton was defined by no theme, and the row rendered as bare text. Publishing that would have documented a theme gap as the intended appearance. With the UIID themed the row draws as the segmented control it always meant to be, so the figure can be generated from the sample rather than shipped as a 2015 screenshot of it. The figure focuses a text field on the way out. Focus lands on the first focusable control otherwise, and a focused toggle resolves sel# -- the accent ring -- whether or not it is checked, which would have put a ring on the gender row this figure exists to show. Everything it renders is constructed in the tagged region: one Contact, no network, no clock, no filesystem. The date picker is left unset so it shows its placeholder, which is both what the sample produces and one less thing that can differ between runs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7d76667ee5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Cloudflare Preview
|
The FloatingHint component draws its label with the FloatingHint UIID, which no theme defined until recently -- the label inherited the default style. The chapter illustrated it with a 2015 screenshot; it is now generated from the sample, so the picture shows what the component does today. The render happens to catch both of its states at once. Focus lands on the first field, so that hint has floated above it while the second still sits inside its field, which is the whole behaviour the component exists for and the reason to leave focus where the renderer puts it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f3b077fcf9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The figure check was red for the reason the PR predicted: a committed local render cannot match the runner byte for byte, because Java2D rounds font metrics differently here. Both new figures are replaced with the run's own artifact, and all 50 committed figures now match it exactly, none on a tolerance sidecar. Predicting a failure is not the same as leaving one, and this should have been seeded from a run before the figures were registered. The floating-hint caption promised a field with content beside an empty one. The sample creates both empty, and FloatingHint animates the label up on focus gained, so what the picture actually shows is the focused field's hint floated and the unfocused one's still inside its field. The caption now says that. It is still both states of the component in one still, which is the reason to leave focus where the renderer puts it. The review also asked for the Contact labels to be restored to Name, E-Mail and Date Of Birth. There are none to restore: no Contact in this chapter calls setLabel, and getLabel answers with the property's name when none was set, so the printed listing produces exactly the lower-case labels in the picture. Adding them to the figure's copy alone would make the picture show something the chapter's own Contact cannot produce, which is the mismatch this figure was written to remove. The reasoning is in the class rather than the thread, where the next person will meet it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
Moving components-floatinghint.png under img/generated left a dangling URL in CodenameOne/src/com/codename1/ui/package-info.java, whose javadoc embeds the published figure. Both website and docs builds went red on it. The gate that caught it is the one added earlier in this work for exactly this -- a figure URL in a Java source that points at a file the site does not ship -- and it did its job. I did not run it after deleting the legacy images, which is why CI found this rather than I did. The neighbouring entries in that file already use the img/generated path, so the reference now matches them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Compared 151 screenshots: 151 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 181 screenshots: 181 matched. |
|
Compared 148 screenshots: 148 matched. Benchmark Results
Detailed Performance Metrics
|
|
Compared 160 screenshots: 160 matched. Benchmark Results
Detailed Performance Metrics
|
|
Compared 149 screenshots: 149 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 143 screenshots: 143 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 144 screenshots: 144 matched. |
|
Compared 217 screenshots: 217 matched. |
The
iochapter's properties form was a 2015 screenshot. It is now generated from the sample that draws it, so the listing beside the picture is the code that produced it.This figure was written once before and backed out: the gender row is three
RadioButton.createTogglecontrols, no theme definedToggleButton, and the row rendered as bare unshaped text. Publishing it then would have documented a theme gap as the intended appearance. #5757 gave the UIID a style, so the row now draws as the segmented control it always meant to be.Determinism
Everything rendered is constructed inside the tagged region -- one
Contact, no network, no clock, no filesystem. Two deliberate details:sel#-- the accent ring -- whether or not it is checked, which would have put a ring on the very row this figure exists to show.Verification
check-guide-structure,check-guide-xrefs,find_unused_images,validate-guide-snippets,check-missing-code-blocks(34, unchanged),asciidoctor --failure-level WARN,asciidoctor-pdf, Vale 0/0/0, LanguageToolstatus: ok0, paragraph capitalization, control characters.The committed baseline is a local render, so the figure check will flag it on the first run -- Java2D rounds font metrics differently here than on the runner. I will reseed it from that run's artifact.
🤖 Generated with Claude Code