Releases: codenameone/CodenameOne
Releases · codenameone/CodenameOne
7.0.250
What's Changed
- Fix #1399: setAlwaysTensile(true) now works on the X axis too by @shai-almog in #5112
- Close #1449: regression-test ChartComponent axis-locked panning by @shai-almog in #5115
- scripts/website: bump Codename One versions to 7.0.247 by @shai-almog in #5114
- Enable modern native themes on the JavaScript port by @shai-almog in #5054
- Fix #1515: Calendar.setDate/setSelectedDate/setCurrentDate preserve hour/minute/second/millis by @shai-almog in #5117
- Trim JS-port screenshot suite skip list to mirror port.js by @shai-almog in #5124
- Add native Mac build pipeline + screenshot CI by @shai-almog in #5053
- Close #1512: password TextField visibility regression guard by @shai-almog in #5121
- Fix #1459: Validator highlights on tap-away, not just VKB Enter by @shai-almog in #5123
- Fix #1511: TextField.setAlignment(CENTER) is now accepted by @shai-almog in #5120
- Fix #1502: iOS openInputStream throws FileNotFoundException for missing files by @shai-almog in #5116
- Fix #1523: expose Slider.setProgressInternal as protected by @shai-almog in #5118
- Blog: platform APIs in the core (connectivity + identity + sharing + AI) by @shai-almog in #5087
- fix(EncodedImage): make dispose() release cached image and bytes (#3733) by @shai-almog in #5127
- feat(ComboBox): popup placement modes (#3795) by @shai-almog in #5128
- fix(JavaSE): NetworkMonitor stretches with the simulator window (#3701) by @shai-almog in #5131
- Fix #1592: pointerDragged honours isEnabled() like pointerPressed/Released by @shai-almog in #5119
- Add blog-release-series skill (capture this week's lessons) by @shai-almog in #5134
- fix(ImageViewer): vertical drags bubble to scrollable parent (#3700) by @shai-almog in #5132
- feat(NetworkManager): add ping(url, timeoutMillis) reachability probe (#3669) by @shai-almog in #5130
- feat(Graphics): add isVisible(x,y,w,h) primitive (#3846) by @shai-almog in #5129
- Fix #1524: Motion.createCubicBezierMotion now follows CSS cubic-bezier semantics by @shai-almog in #5122
- ci: fail screenshot suites on missing screenshots; fix DialogTheme Metal hang by @shai-almog in #5135
- Add low-level cross-platform Camera API (com.codename1.camera) by @shai-almog in #5126
- Deeper desktop integration: native window chrome, interactive scrollbars, menu placement by @shai-almog in #5136
- docs: Desktop Integration developer-guide chapter by @shai-almog in #5138
- ParparVM: remove dead C# target, add Windows LLVM (clang-cl) build + CI by @shai-almog in #5137
- Blog: build-time codegen (router, ORM, mappers, binder, SVG/Lottie) by @shai-almog in #5088
- Fix socket write NPE and avoid throwaway allocation on partial writes (#5139) by @shai-almog in #5140
- feat(io): add com.codename1.io.WebSocket to core + cn1ss WS pipeline by @shai-almog in #5133
- fix(JS port): release dead canvas host-refs to stop late-suite screenshot bridge thrash by @shai-almog in #5143
- Remove redundant paint-scope state warnings, keep clip over-pop hard fail (#5058) by @shai-almog in #5147
- feat(graphql): GraphQL client support + @mapped enum binding + WebSocket subprotocols by @shai-almog in #5141
- Blog prose-quality checks + full-corpus remediation sweep by @shai-almog in #5149
- Notifications and background execution modernization by @shai-almog in #5142
- Fix iOS build of method refs needing unbox/box + add Objects.deepEquals by @shai-almog in #5150
- Fix mutable images losing pixels across app suspension on Metal (#5153) by @shai-almog in #5157
- Fix #5152: respect bottom safe area for picker BELOW_SPINNER buttons by @shai-almog in #5156
- Fix #5154: InteractionDialog popup clips content when reserving arrow space by @shai-almog in #5155
- Blog: We Will Not Sabotage Your Code by @shai-almog in #5160
- Fix Mac native screenshots to capture the genuine Metal display pipeline by @shai-almog in #5159
- Add mockup-comparison and design-import tooling to the CN1 agent skill by @shai-almog in #5161
- Fix #5163: status-bar tap scrolls to top only once per Form by @shai-almog in #5164
- Fix #5162: eliminate Metal rotation black flash on idle rotate by @shai-almog in #5165
- Redesign Initializr to the Codename One design language by @shai-almog in #5168
- Modern pluggable advertising API + AdMob reference provider by @shai-almog in #5169
- Deepen desktop integration: scrollbar thumb polish, menu accelerators, desktop notifications by @shai-almog in #5170
Full Changelog: 7.0.247...7.0.248
7.0.247
What's Changed
This is a small bump release mostly intended to fix debug over logging.
- Sort site search index by date and exclude developer guide by @shai-almog in #5090
- scripts/initializr: sync template with cn1app-archetype by @shai-almog in #5093
- docs(InteractionDialog): clarify animation, formMode, and no-op transitions (#5071) by @shai-almog in #5096
- Defer lightweight Picker traversal editing until dismiss completes by @jsfan3 in #5092
- Update Lifecycle.java getCurrentForm javadoc by @jsfan3 in #5095
- Small fix to UIManager.java Javadoc by @jsfan3 in #5094
- Fix lightweight Picker traversal controls when non-traversable by @jsfan3 in #5091
- feat(InteractionDialog): custom animations + code-set duration (#5072) by @shai-almog in #5097
- Add gRPC-Web client codegen mirroring the OpenAPI pattern by @shai-almog in #5099
- Blog: developer workflow (on-device debugging + JUnit 5) by @shai-almog in #5086
- Fix Metal stencil mismatch in mutable-image seed pass (#5103) by @shai-almog in #5106
- Fix #1243: getShortWeekdays() now uses English keys after localization by @shai-almog in #5105
- Fix ios.blockScreenshotsOnEnterBackground to hide peer components by @shai-almog in #5107
- ci(ios-metal): enable Metal API validation in screenshot suite by @shai-almog in #5110
- Fix #1363: copy calcPreferredSize() result instead of retaining the reference by @shai-almog in #5109
- Dedupe simulator paint-scope leak warnings (#5102) by @shai-almog in #5111
Full Changelog: 7.0.246...7.0.247
7.0.246
What's Changed
- Drive developer guide LanguageTool count to zero and gate CI on it by @shai-almog in #5007
- Add input-validation pipeline: XCUITest + Playwright gesture suite by @shai-almog in #5005
- Fix #3108: conversion opcodes must update runtime type tag by @shai-almog in #5009
- Add iOS on-device debugging support by @shai-almog in #4999
- Fix #4991: lightweight picker popup renders zero-width on desktop JS port by @shai-almog in #5011
- Fix #5010: don't swallow UIPress events while editing a native text component by @shai-almog in #5013
- Add Android on-device debugging support by @shai-almog in #5012
- Fix #3037: implement pushClip/popClip on Android port by @shai-almog in #5016
- Fix #5014: roll back default-date staging when Picker is cancelled on first open by @shai-almog in #5017
- Fix #5019: revalidate lightweight Picker after shortcut button action by @shai-almog in #5020
- Fix #5024: treat Picker.setDate(null) as an explicit clear by @shai-almog in #5025
- Fix #5010: don't reroute taps on the active native text editor by @shai-almog in #5026
- Fix #5010: make pressesBegan/Ended/Cancelled fully transparent while editing by @shai-almog in #5027
- Add deeper network connectivity: WiFi info/scan/connect, Bonjour, WiFi Direct, USB, network-type events by @shai-almog in #5021
- Add OidcClient identity stack + native iOS/Android bindings by @shai-almog in #5018
- Fix #5022: Eclipse jansi NPE; bump Maven wrapper to 3.9.9 by @shai-almog in #5031
- Fix #5028 / #5029: InteractionDialog popup overlaps target when rect straddles midline by @shai-almog in #5030
- scripts/website: bump Codename One versions to 7.0.244 by @shai-almog in #5004
- Add WebAuthn / passkey client + Auth0 / Firebase passkey helpers by @shai-almog in #5039
- Add ShareResult callback API + iOS Share Extension authoring helper by @shai-almog in #5036
- Add package-info.java descriptors for 15 undocumented packages by @shai-almog in #5040
- Add JUnit 5 test support for the JavaSE simulator by @shai-almog in #5032
- Generate JavaSE desktop stub from codenameone_settings.properties by @shai-almog in #5043
- Revert #5010 changes: no confirmed underlying issue by @shai-almog in #5041
- Add three build guardrails: Error Prone Class.forName ban, @SInCE validation, Vale version-name block by @shai-almog in #5044
- Declarative router + deep links + bytecode annotation framework by @shai-almog in #5037
- Add com.codename1.ai package, ChatView, Speech/TTS, and build-time AI dependency injection by @shai-almog in #5035
- Add build-time SVG transcoder with SMIL animation support by @shai-almog in #5042
- Build-time POJO annotation frameworks: JSON/XML mapping, component binding, SQLite ORM by @shai-almog in #5047
- Moving initializr to new JS port by @shai-almog in #4795
- Fix WMI_WRONG_MAP_ITERATOR in JSONParser and make SpotBugs fail CI by @shai-almog in #5048
- Add local ParparVM-backed JavaScript builder gated to Enterprise tier by @shai-almog in #5050
- Fix iOS Metal and Android SVG rendering bugs by @shai-almog in #5049
- Fix #5049 follow-ups: clipped_badge rounded clip + picker capture stability by @shai-almog in #5056
- Fix iOS native stub -stop selector ambiguity on Xcode 26 by @shai-almog in #5052
- Detect unbalanced Graphics state in the simulator (#5058) by @shai-almog in #5060
- Fix bytecode compliance check crash on project class references by @shai-almog in #5061
- Fix CI flake: JavaSEPortFontMappingTest leaks JavaSEPort.instance by @shai-almog in #5063
- Document AI/LLM, ChatView, speech, and ML Kit cn1libs from PR #5035 by @shai-almog in #5057
- Wire validation into the @bindable annotation framework by @shai-almog in #5062
- Fix #5010: serialize Purchase state on the EDT to unblock iOS main thread by @shai-almog in #5064
- Fix #5067: InteractionDialog dispose leaves dialog visible without animateShow by @shai-almog in #5068
- Default ios.metal to true and document the renderer by @shai-almog in #5065
- Fix #5069: null-guard layered pane parent in InteractionDialog popup by @shai-almog in #5070
- Improvements to baseline based on porting exercise by @shai-almog in #5055
- Add Lottie/Bodymovin support to the build-time SVG transcoder by @shai-almog in #5066
Full Changelog: 7.0.244...7.0.245
7.0.244
What's Changed
- docs: route cn1lib creation through the Maven cn1lib-archetype by @shai-almog in #4952
- Inline cn1app/cn1lib archetypes; bring to initializr parity by @shai-almog in #4953
- Move Hashnode syndication off the deprecated GraphQL API by @shai-almog in #4956
- Status-bar tap: scroll the visible scroll pane, not the first one by @shai-almog in #4958
- iOS Metal: fix stale framebuffer on rotation (#4954) by @shai-almog in #4961
- StickyHeaderContainer: add TRANSITION_COVER and standalone fade-out flag by @shai-almog in #4959
- Ignore common local artifacts in Initializr projects by @jsfan3 in #4967
- Simulate->Larger Text: refresh the simulator instantly (#4963) by @shai-almog in #4964
- Fix agent tool Codename One version selection by @jsfan3 in #4965
- Support side border shorthands in CSSBorder by @jsfan3 in #4966
- Initializr: clean up generated zips to avoid IndexedDB quota exhaustion by @shai-almog in #4969
- iOS Metal: fix debug-only first-paint crashes by @shai-almog in #4972
- Treat developer guide vale and asciidoc warnings as build errors by @shai-almog in #4971
- Picker: support custom default date via setDefaultDate (#4973) by @shai-almog in #4974
- Refresh Skin Designer device database by @github-actions[bot] in #4975
- Expand CSS gradient + filter:blur support across framework, ports, docs by @shai-almog in #4957
- iOS: size status-bar tap proxy to real safe-area inset (#4978) by @shai-almog in #4981
- Simulator: split Skins menu, fix Native Theme menu, add regression test by @shai-almog in #4984
- Fix #4979: dim backdrop persists after Dialog from on-top side menu by @shai-almog in #4983
- Hardware keyboard + hover support on Android and iOS (#3498) by @shai-almog in #4982
- Commit native theme .res files; add native-themes-sync workflow by @shai-almog in #4976
- Iterative GC mark to fix iOS stack overflow on deep graphs (#3136) by @shai-almog in #4980
- Fix #3108: don't rely on C arg eval order in PUTFIELD/MULTIANEWARRAY by @shai-almog in #4985
- iOS UTF-8 codec: replace-char semantics, NEON ASCII fast-path, benchmark by @shai-almog in #4989
- Fix Purchase.synchronizeReceipts re-submitting same receipt and firing callback multiple times by @shai-almog in #4990
- Fix #4188: RGBImage scaled drawImage renders blank by @shai-almog in #4986
- Update graphics.asciidoc by @Ngosti2000 in #4992
- Simulator: data-driven menu hooks for cn1libs by @shai-almog in #4988
- Add com.codename1.security: biometric auth + secure storage by @shai-almog in #4987
- Fix #4997: guard pointerDragged against empty pointer arrays by @shai-almog in #4998
- Add com.codename1.security crypto API + OtpField widget by @shai-almog in #4994
- Update Animations.asciidoc by @Ngosti2000 in #5000
- Add com.codename1.nfc: NDEF read/write, ISO-DEP/MIFARE/FeliCa, HCE by @shai-almog in #4996
- Add grammar checks to developer guide CI by @shai-almog in #5002
- Fix iOS 26 tap regressions + ParparVM BGPainter NPE by @shai-almog in #5003
New Contributors
- @Ngosti2000 made their first contribution in #4992
Full Changelog: 7.0.243...7.0.244
7.0.243
initializr: default to Java 17, drop Experimental label, bundle Claud…
7.0.242
Skip archetype integration tests on release deploy The cn1-maven-archetypes repo added archetype-post-generate ITs on 2026-05-07 that generate a test project pinned to cn1Version=8.0-SNAPSHOT and then invoke the codenameone-maven-plugin. That SNAPSHOT is not on Maven Central, so the ITs fail during release deploy even though the archetype packages cleanly. The ITs are upstream CI coverage, not release coverage -- pass -Darchetype.test.skip=true (and -DskipTests for symmetry) so the release deploy doesn't run them. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.0.237
Add website-targeted JavaScript Skin Designer integration (#4758)
7.0.236
Fix POSIX character classes for non-ASCII letters in RE (#4841) (#4843)
* Fix POSIX character classes for non-ASCII letters in RE (#4841)
RECharacter.getType() returned UNASSIGNED for any char >= 128, so
[[:alpha:]], [[:alnum:]], [[:lower:]], and [[:upper:]] silently failed
to match non-Latin letters. As reported in #4841, the regex
"test:\s*([[:alpha:]][[:alnum:]]*)" did not match "test: c123" when the
identifier began with a non-ASCII letter.
Delegate to java.lang.Character.getType(c) for c >= 128 in the
non-RE_UNICODE branch. The RECharacter constants (UPPERCASE_LETTER=1,
LOWERCASE_LETTER=2, ...) are the Unicode general-category numeric codes
and match Character.getType()'s return values exactly, so a byte cast
is safe. The RE_UNICODE preprocessor branch keeps its existing
table-based lookup with a UNASSIGNED fallthrough.
Add five tests covering Latin-with-cedilla, Greek, Cyrillic, CJK
ideographs, vulgar fractions, and currency symbols, including a
regression test for the exact failing case from the issue. Tests use
\uXXXX escapes to keep sources ASCII-only (CI javac uses the platform
default encoding).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Avoid Character.getType in RE; the framework compiles against CLDC11 stub
The CI Ant build sets -bootclasspath to Ports/CLDC11/dist/CLDC11.jar,
whose java.lang.Character stub does not expose getType, isLetter, or
isLetterOrDigit. The previous fix used Character.getType(c), which
compiled fine under the maven build (full JDK rt.jar) but fails the
Ant build with "cannot find symbol: method getType(char)".
Compose the same effect from the methods that the CLDC11 stub does
expose: isLowerCase, isUpperCase, isDigit, isSpaceChar. This covers
cased letters in Latin (with diacritics), Greek, and Cyrillic, plus
decimal digits and space separators -- enough to fix the reported
case from #4841 ("test: c-cedilla 123" matching
"test:\\s*([[:alpha:]][[:alnum:]]*)").
Limitation: characters whose Unicode general category is OTHER_LETTER
(CJK ideographs, Hebrew, Arabic, Devanagari, ...), TITLECASE_LETTER,
MODIFIER_LETTER, or LETTER_NUMBER cannot be distinguished from
UNASSIGNED with the CLDC11 API surface and remain unmatched by
[[:alpha:]] / [[:alnum:]]. Lifting that limitation requires either
the RE_UNICODE preprocessor branch or extending the CLDC11 stub --
both out of scope for this fix. Tests document the limitation by
asserting only on cased scripts.
Verified: javac -bootclasspath CLDC11.jar -source 1.5 -target 1.5
compiles RECharacter and RE cleanly; mvn test from core-unittests
runs all 10 RETest tests, including the regression for the exact
failing input from the issue.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.0.235
Revise security policy for supported versions and reporting Updated the security policy to clarify supported versions and reporting process. Signed-off-by: Shai Almog <67850168+shai-almog@users.noreply.github.com>
7.0.234
Update Material Icons font and FontImage constants (#4766)