Uh oh!
There was an error while loading. Please reload this page.
The Introduction taught a dead IDE menu, an iTunes walkthrough and 2018 statistics - #5671
Conversation
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:16bbebc80f
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:cc57d1cfd6
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
ae956d3 to
eecf05dComparecc57d1c to
4ca20a5CompareCloudflare Preview
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:dd501cd3aa
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
eecf05d to
f81e4b1Comparedd501cd to
206e8e1Comparef81e4b1 to
335a54aCompare0cf8884 to
36d31dbCompareCompared 151 screenshots: 151 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
335a54a to
f915089Compare36d31db to
2d61b8bComparef915089 to
f0f0e4eCompare2d61b8b to
e234f7cCompareCompared 181 screenshots: 181 matched. |
f0f0e4e to
facd9edComparee234f7c to
d9bfb99Comparefacd9ed to
15e0c1eCompare432e69d to
ad52b3fCompare15e0c1e to
815afcfComparead52b3f to
f378c1aComparebca6854 to
ae6bbdfCompare…18 statistics Six corrections to the chapter a new developer reads first: * The JavaScript target was described twice and contradicted itself: the overview said TeaVM did the translation, the port section said ParparVM with TeaVM as a fallback. The port section is right -- `javascript.port` is declared with `parparvm` as its default and `teavm` documented as "the original builder as a compatibility fallback". * `http://teavm.org:[TeaVM-based builder]` -- the stray colon made the macro a bare host, and the site serves TLS. Removed from the link ratchet, which now stands at 37. * Bitcode was cited as something ParparVM absorbed without modification. Apple has since withdrawn bitcode, which makes the point better than the arrival did, so the sentence now names both moves. * The device-fragmentation section rested on two 2018 Android share numbers, followed by a sentence conceding they would be stale on arrival. The structural claim survives without them. * The iOS developer fee was dated with "for 10 years at the time of this writing". * The UDID instructions walked the reader through iTunes, with a screenshot of iTunes on iOS 9.3.5 that also exposed a real device serial and UDID. iTunes has not existed on macOS since Catalina, and the signing chapter already gives the current answer, so this now points there. * The device build was "a right click away" via the IDE plugin, illustrated by a menu still offering Blackberry, J2ME and Windows Phone builds. Replaced with the `cn1:buildAndroid` and `cn1:buildIos` goals, taken from the mojo names. Both screenshots are deleted, so find_unused_images.py stays satisfied. Verified: asciidoctor at --failure-level WARN, Vale at suggestion level, LanguageTool (status ok, 0 matches, run under JDK 17 rather than the JDK 8 false green), paragraph capitalization, snippets, xrefs, structure, links and missing-code-blocks all clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Review caught the command I had just written. AbstractBuildWrapperMojo.execute()
opens with:
if (!project.isExecutionRoot()) {
getLog().info("Skipping execution for non-root project");
return;
}
and BuildAndroidMojo, BuildIosMojo and BuildWin32Mojo all inherit it unchanged.
Under `-pl common` the selected module is not the execution root, so the goal
logs that line and stops. The design is deliberate -- the wrapper re-invokes
Maven on the root pom itself (`request.setPomFile(new File("pom.xml"))`) -- so
naming a module both skips the wrapper and defeats its purpose.
Measured rather than reasoned, against scripts/hellocodenameone:
mvn -pl common ...:buildWin32 -> "Skipping execution for non-root project"
BUILD SUCCESS, nothing built
mvn ...:buildWin32 -> no skip line, proceeds into the reactor
A silent success is the worst failure mode for a getting-started instruction, so
the Introduction now says where to run it and warns about the module form
explicitly.
Working-With-Windows carried the same `-pl common` shape and is fixed with it --
it is where I copied the form from, so leaving it would reintroduce the defect
the next time someone follows the pattern.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>Review checked the command this PR documents and found it still builds nothing. The wrapper passes `codename1.platform` to its nested Maven run, and that property is what activates the module profile in a generated project's root pom. The profile is `win`, matching the value the win module itself declares: <profile><id>win</id> <activation><property> <name>codename1.platform</name><value>win</value> </property></activation> <modules><module>win</module></modules> BuildWin32Mojo and BuildWindowsDeviceMojo both passed "windows", which matches no profile at all. Nothing else in the plugin reads the platform as "windows", so the value was simply inert: the win module never joined the reactor and the nested build reported success having produced no Windows binary. Every other wrapper already agrees with its profile -- android, ios, javascript, linux and javase all match -- so these two were the only ones out of step. Verified by A/B against scripts/hellocodenameone, reading the NESTED reactor rather than the outer one: before hellocodenameone, -common, -javase <- no win module after hellocodenameone, -common, -win The build TARGET is a separate namespace and stays "windows-device" (Executor.BUILD_TARGET_WINDOWS_NATIVE), which is correct. SpotBugs over codenameone-maven-plugin regenerated: 0 findings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…lost Fixing BuildWin32Mojo made the sentence beside this snippet false: the goal now submits a build, while the command the chapter leads with still could not. It carried both defects at once -- mvn -pl common package -Dcodename1.platform=windows ... -- `-pl common` builds that module instead of the reactor, so the win module is never reached, and `windows` matches no profile even when the reactor is whole. The two mistakes hid each other: with only the module selected, the platform value had nothing left to activate. Corrected to what the wrapper actually runs, read off AbstractBuildWrapperMojo: goal `package`, `codename1.platform=win`, `codename1.buildTarget=windows-device`, from the project root. A/B against scripts/hellocodenameone, reading the reactor, which Maven prints before it compiles: old no win module in the reactor at all new hellocodenameone, -common, -win Both invocations then fail identically on this machine with "invalid target release: 17", because tools/env.sh pins JDK 8 while the demo targets 17. That is environmental and equal on both sides, so it does not affect the comparison. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ae6bbdf to
18cc667CompareUh oh!
There was an error while loading. Please reload this page.
Fourth PR in the developer-guide stack. Six corrections to the chapter a new developer reads first.
javascript.portis declared withparparvmas its default andteavmdocumented as "the original builder as a compatibility fallback".http://teavm.org:[...]signing.asciidocalready gives the current answer (Finder device summary, Apple Configurator), so this now cross-references it.cn1:buildAndroid/cn1:buildIos, names taken from the mojo definitions rather than from prose.Both dead screenshots are deleted in the same commit, so
find_unused_images.pystays satisfied.Two items the plan listed for this chapter turned out not to need work: the
<<ApplicationLifecycle>>sidebar already exists (written earlier in this stack), and the malformedstackoverflowhost is no longer present.Verification
asciidoctor --failure-level WARN, Vale at suggestion level, LanguageTool (status: ok, 0 matches — run under JDK 17 rather than the JDK 8 path that reports a false green), paragraph capitalization, snippet validation, xrefs, structure, links and missing-code-blocks: all clean.🤖 Generated with Claude Code