From 437cd5337e65d892377d144d38d3f7cf28191087 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 29 May 2026 09:51:26 +0300 Subject: [PATCH 1/3] Blog: weekly format refresh, Metal default, new Build Cloud console Adds the May 29 weekly release post that introduces the shorter, TL;DR-focused weekly format and announces two website-facing changes the post depends on: - ios.metal is the default for new iOS builds (PR #5065). - Every Dashboard link on the website now points at the new /console/ UI instead of /secure/. The legacy /secure/ console stays online for the time being. URL updates in this commit: - docs/website/hugo.toml: developers-menu and top-nav Dashboard URLs. - docs/website/content/build-server.md: primary URL + legacy fallback. - docs/website/content/site-map.md: split Dashboard entry into Console and Legacy. - docs/website/layouts/_default/pricing.html: free-tier Sign Up CTA. Historical blog posts that mention /secure/ are left untouched. --- ...efault-new-build-cloud-and-a-new-format.md | 75 +++++++++++++++++++ docs/website/content/build-server.md | 2 +- docs/website/content/site-map.md | 3 +- docs/website/hugo.toml | 4 +- docs/website/layouts/_default/pricing.html | 2 +- 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md diff --git a/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md new file mode 100644 index 0000000000..72e621b16e --- /dev/null +++ b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md @@ -0,0 +1,75 @@ +--- +title: Metal Default, A New Build Cloud, And A New Format +slug: metal-default-new-build-cloud-and-a-new-format +url: /blog/metal-default-new-build-cloud-and-a-new-format/ +date: '2026-05-29' +author: Shai Almog +description: The iOS Metal renderer is now the default, the new Build Cloud console is wired into every Dashboard link on the site, and the weekly release blog is moving to a shorter format with deeper follow-up posts during the week. +feed_html: 'Metal Default, A New Build Cloud, And A New Format The iOS Metal renderer is now the default, the new Build Cloud console is wired into every Dashboard link on the site, and the weekly release blog is moving to a shorter format with deeper follow-up posts during the week.' +--- + +![Metal Default, A New Build Cloud, And A New Format](/blog/metal-default-new-build-cloud-and-a-new-format.jpg) + +This week's release post looks different on purpose. The Friday omnibus has been getting longer and longer, and that has been working against us in two ways. SEO ignores 5,000 word pages that cover twelve unrelated topics, so the actual material gets buried instead of indexed against the queries that should find it. And when a single release post covers ten things, it becomes hard to point a colleague at "that one Codename One change from a few weeks ago" without scrolling for ten minutes. + +So from this week onwards the Friday post is the short one. A quick set of headline items, a "what is coming next" list, and that is it. The specific features get their own posts over the following days, with their own slugs, their own searchable titles, and their own discussion threads. The weekly post lives at the top of the homepage as the index; the deeper posts back-link to it; and you can read whichever ones are actually relevant to your project. + +If you only have thirty seconds, here is what changed this week. + +## Metal is the default on iOS + +[PR #5065](https://github.com/codenameone/CodenameOne/pull/5065) flips the `ios.metal=true` build hint to the default. New iOS builds now link against `CAMetalLayer` instead of the deprecated `CAEAGLLayer`. I trailed this [three weeks ago in Metal and Skins](/blog/metal-and-skins/), held it back [last week](/blog/nfc-crypto-biometrics-and-build-cloud/) because the regression list still had a couple of items on it, and shipped it this week with the list reading zero. + +If you have not rebuilt since this commit, your next cloud build picks Metal up automatically. No hint to add, no setting to change. The build server flipped at the same time so local builds and cloud builds match. + +If you need to opt out for any reason, the hint still works in reverse: + +``` +codename1.arg.ios.metal=false +``` + +A few things worth a glance on your first Metal build: gradient fidelity (multi-stop, conic, and repeating gradients now hit the GPU directly through [PR #4957](https://github.com/codenameone/CodenameOne/pull/4957)), the colour space (sRGB by default, flip to `displayP3` via `ios.metal.colorSpace` if your assets are wide gamut), and anything that draws `filter: blur(...)` or `backdrop-filter`. Everything else should look unchanged. That is the point. + +A specific thank you to the community testers who flipped the hint over the past three weeks, took screenshots, and filed issues against real apps. The Metal default landed in materially better shape than it would have without you. + +## The new Build Cloud console is now the default link + +The [preview of the new Build Cloud UI](/blog/nfc-crypto-biometrics-and-build-cloud/#a-new-build-cloud-ui--preview) went up last week. The bugs you found are fixed, and as of this PR every Dashboard link on the website now points at the new console: + +``` +https://cloud.codenameone.com/console/index.html +``` + +The navigation Dashboard link in the header, the Sign Up CTA on the pricing page, and the entries on the site map all moved. Old bookmarks still work; the legacy console at `https://cloud.codenameone.com/secure/index.html` stays online for the time being so you can fall back to it if something is missing or wrong in the new UI. Please tell us when you hit one of those things, because the goal is to retire the legacy URL eventually and we want it to retire empty. + +Historical blog posts that mention the `/secure/` URL in their text were left alone. Those are historical text; rewriting them after the fact would be lying about what we said at the time. + +## Upcoming attractions + +The following are the deeper posts that will go up over the next week and change. Each item is its own post, its own URL, and its own discussion thread. Dates are best effort. If a post needs another day to read right I would rather hold it than ship it half-baked. + +- **On-device debugging on iOS and Android.** This is one I have personally wanted for a long time. Codename One always had on-device debugging in the technical sense; you just had to drop into Xcode or Android Studio and jump through a depressing number of hoops. The two PRs ([#4999](https://github.com/codenameone/CodenameOne/pull/4999) for iOS, [#5012](https://github.com/codenameone/CodenameOne/pull/5012) for Android) wire JDWP through to the real device, so `jdb`, IntelliJ, VS Code, Eclipse, or NetBeans just attaches. +- **WiFi and connectivity APIs in the core.** SSID, BSSID, IP, gateway, scan, connect, Bonjour and mDNS, WiFi Direct, USB host, and `NetworkManager` network-type listeners. All in the framework, no cn1lib. ([#5021](https://github.com/codenameone/CodenameOne/pull/5021).) +- **OIDC and WebAuthn / passkeys in the core.** A first-class identity stack that goes through `ASWebAuthenticationSession` on iOS and Custom Tabs on Android, plus a portable passkey client and Auth0 / Firebase helpers. ([#5018](https://github.com/codenameone/CodenameOne/pull/5018), [#5039](https://github.com/codenameone/CodenameOne/pull/5039).) +- **Share result callbacks.** A way to actually find out whether the user shared something, and where to. ([#5036](https://github.com/codenameone/CodenameOne/pull/5036).) +- **JUnit 5 tests for Codename One apps.** Standard `@Test` methods, run on the simulator's JVM, with `@CodenameOneTest`, `@RunOnEdt`, `@Theme`, `@DarkMode`, and friends. ([#5032](https://github.com/codenameone/CodenameOne/pull/5032).) +- **Declarative router and a bytecode annotation framework.** `@Route("/path")`, deep links from cold and warm starts, `Display.setDeepLinkHandler(...)`, and the bytecode-level annotation processor SPI that the ORM and binder pieces build on top of. ([#5037](https://github.com/codenameone/CodenameOne/pull/5037).) +- **AI / LLM core and cn1libs.** `com.codename1.ai`, `LlmClient` for OpenAI / Anthropic / Gemini / Ollama, a streaming `ChatView`, speech and TTS, the simulator Ollama redirect, and the new ML Kit cn1libs for barcode, document scan, and face. ([#5035](https://github.com/codenameone/CodenameOne/pull/5035), [#5057](https://github.com/codenameone/CodenameOne/pull/5057).) +- **POJO ORM, JSON / XML mapping, and component binding.** `@Entity` / `@Id` / `@Column` for SQLite, `@Mapped` / `@JsonProperty` / `@XmlElement` for the network, `@Bindable` / `@Bind` for components, all generated at build time. No `Class.forName`, no field reflection, obfuscation-safe. ([#5047](https://github.com/codenameone/CodenameOne/pull/5047), [#5062](https://github.com/codenameone/CodenameOne/pull/5062), and a lot of related framework groundwork in [#5055](https://github.com/codenameone/CodenameOne/pull/5055).) +- **SVG and Lottie at build time.** Drop an SVG or a Bodymovin JSON into your project and the build emits a Codename One `Image` subclass that draws via the shape API. SMIL animations honoured, Lottie too. *Metal only* on iOS, because the GL path does not have the shape coverage we need. ([#5042](https://github.com/codenameone/CodenameOne/pull/5042), [#5049](https://github.com/codenameone/CodenameOne/pull/5049), [#5066](https://github.com/codenameone/CodenameOne/pull/5066).) + +A short note on [#5055](https://github.com/codenameone/CodenameOne/pull/5055): its headline reads "Improvements to baseline based on porting exercise", and the porting exercise (Immich, the Flutter mobile client, into Codename One) was real. The PR carried a lot of smaller framework additions alongside the ORM-adjacent ones, so it gets pulled into the ORM post rather than living on its own. + +## Wrapping up + +That is the new format. Short post on Friday; deeper posts during the week; every change in its own place. Please tell me how it lands. + +Issue tracker is [here](https://github.com/codenameone/CodenameOne/issues), the discussion forum is [here](https://www.codenameone.com/discussion-forum.html), and the new Build Cloud console is at [`/console/`](https://cloud.codenameone.com/console/index.html). The [Playground](/playground/), [Initializr](/initializr/), and [Skin Designer](/skindesigner/) are all still where they were. + +--- + +## Discussion + +_Join the conversation via GitHub Discussions._ + +{{< giscus >}} diff --git a/docs/website/content/build-server.md b/docs/website/content/build-server.md index ee994330b3..ac69a6ad9e 100644 --- a/docs/website/content/build-server.md +++ b/docs/website/content/build-server.md @@ -4,4 +4,4 @@ date: 2015-03-03 slug: "build-server" --- -The build server was moved to [https://cloud.codenameone.com/secure/index.html](https://cloud.codenameone.com/secure/index.html) +The build server was moved to [https://cloud.codenameone.com/console/index.html](https://cloud.codenameone.com/console/index.html). The legacy console at [https://cloud.codenameone.com/secure/index.html](https://cloud.codenameone.com/secure/index.html) is still online for the time being. diff --git a/docs/website/content/site-map.md b/docs/website/content/site-map.md index f86ec9bc81..a8c8147035 100644 --- a/docs/website/content/site-map.md +++ b/docs/website/content/site-map.md @@ -79,7 +79,8 @@ Use this page to quickly navigate the most important parts of the Codename One w ## Account and Cloud Dashboard -- [Dashboard (Secure)](https://cloud.codenameone.com/secure/index.html) +- [Dashboard (Console)](https://cloud.codenameone.com/console/index.html) +- [Dashboard (Legacy)](https://cloud.codenameone.com/secure/index.html) - [Build App (Legacy Dashboard Entry)](https://cloud.codenameone.com/buildapp/index.html) - [My Account](/my-account/) - [Login / Build Cloud Account](https://cloud.codenameone.com) diff --git a/docs/website/hugo.toml b/docs/website/hugo.toml index c1d67cf5e7..ad6b2ee8b3 100644 --- a/docs/website/hugo.toml +++ b/docs/website/hugo.toml @@ -76,7 +76,7 @@ weight = 14 [[menu.main]] parent = "developers" name = "Dashboard" -url = "https://cloud.codenameone.com/secure/index.html" +url = "https://cloud.codenameone.com/console/index.html" weight = 15 [[menu.main]] @@ -185,5 +185,5 @@ weight = 40 [[menu.main]] identifier = "dashboard" name = "Dashboard" -url = "https://cloud.codenameone.com/secure/index.html" +url = "https://cloud.codenameone.com/console/index.html" weight = 90 diff --git a/docs/website/layouts/_default/pricing.html b/docs/website/layouts/_default/pricing.html index c94361dfe4..169dc1b536 100644 --- a/docs/website/layouts/_default/pricing.html +++ b/docs/website/layouts/_default/pricing.html @@ -33,7 +33,7 @@

{{ .Title }}

  • Community support
  • Royalty free
  • - Sign Up + Sign Up
    From 9da176a289956aa22768ec077aedd12ad6a0949b Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 29 May 2026 11:10:54 +0300 Subject: [PATCH 2/3] Intro post: consolidate upcoming attractions to 3 themed follow-ups Replaces the nine per-PR bullets with three themed bullets so the release cycle ships fewer, broader posts and does not bleed into next week's index: - Developer workflow (Sat): on-device debugging + JUnit. - Platform APIs in the core (Mon): WiFi + OIDC + WebAuthn + Share + AI / LLM / Speech / ChatView. - Build-time codegen (Wed): annotation framework + router + ORM + mapping + binding + Immich baseline + SVG / Lottie transcoders. Total: four posts (intro + three follow-ups). Back half of the week intentionally left clear. --- ...efault-new-build-cloud-and-a-new-format.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md index 72e621b16e..bcf7495eeb 100644 --- a/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md +++ b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md @@ -46,19 +46,13 @@ Historical blog posts that mention the `/secure/` URL in their text were left al ## Upcoming attractions -The following are the deeper posts that will go up over the next week and change. Each item is its own post, its own URL, and its own discussion thread. Dates are best effort. If a post needs another day to read right I would rather hold it than ship it half-baked. - -- **On-device debugging on iOS and Android.** This is one I have personally wanted for a long time. Codename One always had on-device debugging in the technical sense; you just had to drop into Xcode or Android Studio and jump through a depressing number of hoops. The two PRs ([#4999](https://github.com/codenameone/CodenameOne/pull/4999) for iOS, [#5012](https://github.com/codenameone/CodenameOne/pull/5012) for Android) wire JDWP through to the real device, so `jdb`, IntelliJ, VS Code, Eclipse, or NetBeans just attaches. -- **WiFi and connectivity APIs in the core.** SSID, BSSID, IP, gateway, scan, connect, Bonjour and mDNS, WiFi Direct, USB host, and `NetworkManager` network-type listeners. All in the framework, no cn1lib. ([#5021](https://github.com/codenameone/CodenameOne/pull/5021).) -- **OIDC and WebAuthn / passkeys in the core.** A first-class identity stack that goes through `ASWebAuthenticationSession` on iOS and Custom Tabs on Android, plus a portable passkey client and Auth0 / Firebase helpers. ([#5018](https://github.com/codenameone/CodenameOne/pull/5018), [#5039](https://github.com/codenameone/CodenameOne/pull/5039).) -- **Share result callbacks.** A way to actually find out whether the user shared something, and where to. ([#5036](https://github.com/codenameone/CodenameOne/pull/5036).) -- **JUnit 5 tests for Codename One apps.** Standard `@Test` methods, run on the simulator's JVM, with `@CodenameOneTest`, `@RunOnEdt`, `@Theme`, `@DarkMode`, and friends. ([#5032](https://github.com/codenameone/CodenameOne/pull/5032).) -- **Declarative router and a bytecode annotation framework.** `@Route("/path")`, deep links from cold and warm starts, `Display.setDeepLinkHandler(...)`, and the bytecode-level annotation processor SPI that the ORM and binder pieces build on top of. ([#5037](https://github.com/codenameone/CodenameOne/pull/5037).) -- **AI / LLM core and cn1libs.** `com.codename1.ai`, `LlmClient` for OpenAI / Anthropic / Gemini / Ollama, a streaming `ChatView`, speech and TTS, the simulator Ollama redirect, and the new ML Kit cn1libs for barcode, document scan, and face. ([#5035](https://github.com/codenameone/CodenameOne/pull/5035), [#5057](https://github.com/codenameone/CodenameOne/pull/5057).) -- **POJO ORM, JSON / XML mapping, and component binding.** `@Entity` / `@Id` / `@Column` for SQLite, `@Mapped` / `@JsonProperty` / `@XmlElement` for the network, `@Bindable` / `@Bind` for components, all generated at build time. No `Class.forName`, no field reflection, obfuscation-safe. ([#5047](https://github.com/codenameone/CodenameOne/pull/5047), [#5062](https://github.com/codenameone/CodenameOne/pull/5062), and a lot of related framework groundwork in [#5055](https://github.com/codenameone/CodenameOne/pull/5055).) -- **SVG and Lottie at build time.** Drop an SVG or a Bodymovin JSON into your project and the build emits a Codename One `Image` subclass that draws via the shape API. SMIL animations honoured, Lottie too. *Metal only* on iOS, because the GL path does not have the shape coverage we need. ([#5042](https://github.com/codenameone/CodenameOne/pull/5042), [#5049](https://github.com/codenameone/CodenameOne/pull/5049), [#5066](https://github.com/codenameone/CodenameOne/pull/5066).) - -A short note on [#5055](https://github.com/codenameone/CodenameOne/pull/5055): its headline reads "Improvements to baseline based on porting exercise", and the porting exercise (Immich, the Flutter mobile client, into Codename One) was real. The PR carried a lot of smaller framework additions alongside the ORM-adjacent ones, so it gets pulled into the ORM post rather than living on its own. +Three deeper posts will follow this one over the next week, each one bundling several related PRs under a single theme so the index stays small. Dates are best effort. + +- **Developer workflow (Saturday).** On-device debugging on iOS and Android, and JUnit 5 tests for Codename One apps. Codename One always had on-device debugging in the technical sense; you just had to drop into Xcode or Android Studio and jump through a depressing number of hoops. The new pipeline wires JDWP through to the real device so `jdb`, IntelliJ, VS Code, Eclipse, or NetBeans just attaches. The JUnit half lets you write standard `@Test` methods against the simulator with first-class annotations for the visual configuration (`@Theme`, `@DarkMode`, `@LargerText`, `@Orientation`, `@RTL`). PRs [#4999](https://github.com/codenameone/CodenameOne/pull/4999), [#5012](https://github.com/codenameone/CodenameOne/pull/5012), [#5032](https://github.com/codenameone/CodenameOne/pull/5032). +- **Platform APIs in the core (Monday).** Four things that move from "you need a cn1lib for this" to "it is in the framework": built-in WiFi / Bonjour / USB / network-type APIs, a modern OIDC + WebAuthn passkey identity stack (`ASWebAuthenticationSession` on iOS, Custom Tabs on Android), share-sheet result callbacks, and a `com.codename1.ai` package with `LlmClient` for OpenAI / Anthropic / Gemini / Ollama plus a streaming `ChatView`, `SpeechRecognizer` / `TextToSpeech`, and the new ML Kit cn1libs. All four share the same scanner-driven auto-injection of Android permissions and iOS entitlements that NFC and biometrics moved to two weeks ago. PRs [#5021](https://github.com/codenameone/CodenameOne/pull/5021), [#5018](https://github.com/codenameone/CodenameOne/pull/5018), [#5039](https://github.com/codenameone/CodenameOne/pull/5039), [#5036](https://github.com/codenameone/CodenameOne/pull/5036), [#5035](https://github.com/codenameone/CodenameOne/pull/5035), [#5057](https://github.com/codenameone/CodenameOne/pull/5057). +- **Build-time codegen (Wednesday).** The architectural one. A reusable bytecode `AnnotationProcessor` SPI in the Maven plugin, the declarative router (`@Route("/path")`, deep links, route guards, per-tab navigation shells) that is its first concrete consumer, then a SQLite ORM (`@Entity` / `@Id` / `@Column`), a JSON / XML mapper (`@Mapped` / `@JsonProperty` / `@XmlElement`), a component binder (`@Bindable` / `@Bind`) with field-level validation, and the build-time SVG / Lottie transcoder that emits Codename One `Image` subclasses for every asset in `src/main/svg/` or `src/main/lottie/`. The grab-bag PR ([#5055](https://github.com/codenameone/CodenameOne/pull/5055), driven by an Immich Flutter port to Codename One as the regression fixture) lands here too because the ORM and mapping work share the porting exercise that drove it. PRs [#5037](https://github.com/codenameone/CodenameOne/pull/5037), [#5047](https://github.com/codenameone/CodenameOne/pull/5047), [#5062](https://github.com/codenameone/CodenameOne/pull/5062), [#5055](https://github.com/codenameone/CodenameOne/pull/5055), [#5042](https://github.com/codenameone/CodenameOne/pull/5042), [#5049](https://github.com/codenameone/CodenameOne/pull/5049), [#5066](https://github.com/codenameone/CodenameOne/pull/5066). + +That keeps this release cycle to four posts. The back half of the week is clear so the next Friday weekly index is not crowded. ## Wrapping up From e98934a9ad0e77164879525e3a33e4873654c99e Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 29 May 2026 11:39:12 +0300 Subject: [PATCH 3/3] Intro post: style pass + hero image Edits requested on the PR: - "I" voice replaced with "we" throughout. - The "I trailed this" line rephrased in simpler language ("we decided to push this back by one week"). - Build-hint snippet uses ios.metal=false, matching what shows up in the settings app (not the codename1.arg. prefix). - The phrase "legacy console" is now the link to the old /secure/index.html URL. - "we want it to retire empty" replaced with a cleaner sentence. - "Those are historical text..." sentence removed. - "That keeps this release cycle to four posts..." sentence removed from the upcoming-attractions section. - The grab-bag bullet no longer names the specific Flutter source app; the porting exercise is described generically instead. Also adds the hero image at static/blog/metal-default-new-build-cloud-and-a-new-format.jpg. --- ...-default-new-build-cloud-and-a-new-format.md | 14 ++++++-------- ...default-new-build-cloud-and-a-new-format.jpg | Bin 0 -> 61876 bytes 2 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 docs/website/static/blog/metal-default-new-build-cloud-and-a-new-format.jpg diff --git a/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md index bcf7495eeb..10bfc47c9a 100644 --- a/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md +++ b/docs/website/content/blog/metal-default-new-build-cloud-and-a-new-format.md @@ -18,14 +18,14 @@ If you only have thirty seconds, here is what changed this week. ## Metal is the default on iOS -[PR #5065](https://github.com/codenameone/CodenameOne/pull/5065) flips the `ios.metal=true` build hint to the default. New iOS builds now link against `CAMetalLayer` instead of the deprecated `CAEAGLLayer`. I trailed this [three weeks ago in Metal and Skins](/blog/metal-and-skins/), held it back [last week](/blog/nfc-crypto-biometrics-and-build-cloud/) because the regression list still had a couple of items on it, and shipped it this week with the list reading zero. +[PR #5065](https://github.com/codenameone/CodenameOne/pull/5065) flips the `ios.metal=true` build hint to the default. New iOS builds now link against `CAMetalLayer` instead of the deprecated `CAEAGLLayer`. We mentioned this [three weeks ago in Metal and Skins](/blog/metal-and-skins/), decided to push it back by one week [last week](/blog/nfc-crypto-biometrics-and-build-cloud/) because a couple of regressions still needed work, and shipped it this week with that list at zero. If you have not rebuilt since this commit, your next cloud build picks Metal up automatically. No hint to add, no setting to change. The build server flipped at the same time so local builds and cloud builds match. If you need to opt out for any reason, the hint still works in reverse: ``` -codename1.arg.ios.metal=false +ios.metal=false ``` A few things worth a glance on your first Metal build: gradient fidelity (multi-stop, conic, and repeating gradients now hit the GPU directly through [PR #4957](https://github.com/codenameone/CodenameOne/pull/4957)), the colour space (sRGB by default, flip to `displayP3` via `ios.metal.colorSpace` if your assets are wide gamut), and anything that draws `filter: blur(...)` or `backdrop-filter`. Everything else should look unchanged. That is the point. @@ -40,9 +40,9 @@ The [preview of the new Build Cloud UI](/blog/nfc-crypto-biometrics-and-build-cl https://cloud.codenameone.com/console/index.html ``` -The navigation Dashboard link in the header, the Sign Up CTA on the pricing page, and the entries on the site map all moved. Old bookmarks still work; the legacy console at `https://cloud.codenameone.com/secure/index.html` stays online for the time being so you can fall back to it if something is missing or wrong in the new UI. Please tell us when you hit one of those things, because the goal is to retire the legacy URL eventually and we want it to retire empty. +The navigation Dashboard link in the header, the Sign Up CTA on the pricing page, and the entries on the site map all moved. Old bookmarks still work; the [legacy console](https://cloud.codenameone.com/secure/index.html) stays online for the time being so you can fall back to it if something is missing or wrong in the new UI. Please tell us when you hit one of those things, because the goal is to retire the legacy URL eventually. -Historical blog posts that mention the `/secure/` URL in their text were left alone. Those are historical text; rewriting them after the fact would be lying about what we said at the time. +Historical blog posts that mention the `/secure/` URL in their text were left alone. ## Upcoming attractions @@ -50,13 +50,11 @@ Three deeper posts will follow this one over the next week, each one bundling se - **Developer workflow (Saturday).** On-device debugging on iOS and Android, and JUnit 5 tests for Codename One apps. Codename One always had on-device debugging in the technical sense; you just had to drop into Xcode or Android Studio and jump through a depressing number of hoops. The new pipeline wires JDWP through to the real device so `jdb`, IntelliJ, VS Code, Eclipse, or NetBeans just attaches. The JUnit half lets you write standard `@Test` methods against the simulator with first-class annotations for the visual configuration (`@Theme`, `@DarkMode`, `@LargerText`, `@Orientation`, `@RTL`). PRs [#4999](https://github.com/codenameone/CodenameOne/pull/4999), [#5012](https://github.com/codenameone/CodenameOne/pull/5012), [#5032](https://github.com/codenameone/CodenameOne/pull/5032). - **Platform APIs in the core (Monday).** Four things that move from "you need a cn1lib for this" to "it is in the framework": built-in WiFi / Bonjour / USB / network-type APIs, a modern OIDC + WebAuthn passkey identity stack (`ASWebAuthenticationSession` on iOS, Custom Tabs on Android), share-sheet result callbacks, and a `com.codename1.ai` package with `LlmClient` for OpenAI / Anthropic / Gemini / Ollama plus a streaming `ChatView`, `SpeechRecognizer` / `TextToSpeech`, and the new ML Kit cn1libs. All four share the same scanner-driven auto-injection of Android permissions and iOS entitlements that NFC and biometrics moved to two weeks ago. PRs [#5021](https://github.com/codenameone/CodenameOne/pull/5021), [#5018](https://github.com/codenameone/CodenameOne/pull/5018), [#5039](https://github.com/codenameone/CodenameOne/pull/5039), [#5036](https://github.com/codenameone/CodenameOne/pull/5036), [#5035](https://github.com/codenameone/CodenameOne/pull/5035), [#5057](https://github.com/codenameone/CodenameOne/pull/5057). -- **Build-time codegen (Wednesday).** The architectural one. A reusable bytecode `AnnotationProcessor` SPI in the Maven plugin, the declarative router (`@Route("/path")`, deep links, route guards, per-tab navigation shells) that is its first concrete consumer, then a SQLite ORM (`@Entity` / `@Id` / `@Column`), a JSON / XML mapper (`@Mapped` / `@JsonProperty` / `@XmlElement`), a component binder (`@Bindable` / `@Bind`) with field-level validation, and the build-time SVG / Lottie transcoder that emits Codename One `Image` subclasses for every asset in `src/main/svg/` or `src/main/lottie/`. The grab-bag PR ([#5055](https://github.com/codenameone/CodenameOne/pull/5055), driven by an Immich Flutter port to Codename One as the regression fixture) lands here too because the ORM and mapping work share the porting exercise that drove it. PRs [#5037](https://github.com/codenameone/CodenameOne/pull/5037), [#5047](https://github.com/codenameone/CodenameOne/pull/5047), [#5062](https://github.com/codenameone/CodenameOne/pull/5062), [#5055](https://github.com/codenameone/CodenameOne/pull/5055), [#5042](https://github.com/codenameone/CodenameOne/pull/5042), [#5049](https://github.com/codenameone/CodenameOne/pull/5049), [#5066](https://github.com/codenameone/CodenameOne/pull/5066). - -That keeps this release cycle to four posts. The back half of the week is clear so the next Friday weekly index is not crowded. +- **Build-time codegen (Wednesday).** The architectural one. A reusable bytecode `AnnotationProcessor` SPI in the Maven plugin, the declarative router (`@Route("/path")`, deep links, route guards, per-tab navigation shells) that is its first concrete consumer, then a SQLite ORM (`@Entity` / `@Id` / `@Column`), a JSON / XML mapper (`@Mapped` / `@JsonProperty` / `@XmlElement`), a component binder (`@Bindable` / `@Bind`) with field-level validation, and the build-time SVG / Lottie transcoder that emits Codename One `Image` subclasses for every asset in `src/main/svg/` or `src/main/lottie/`. The grab-bag PR ([#5055](https://github.com/codenameone/CodenameOne/pull/5055), driven by porting a substantial mobile client app onto Codename One as the regression fixture) lands here too because the ORM and mapping work share the porting exercise that drove it. PRs [#5037](https://github.com/codenameone/CodenameOne/pull/5037), [#5047](https://github.com/codenameone/CodenameOne/pull/5047), [#5062](https://github.com/codenameone/CodenameOne/pull/5062), [#5055](https://github.com/codenameone/CodenameOne/pull/5055), [#5042](https://github.com/codenameone/CodenameOne/pull/5042), [#5049](https://github.com/codenameone/CodenameOne/pull/5049), [#5066](https://github.com/codenameone/CodenameOne/pull/5066). ## Wrapping up -That is the new format. Short post on Friday; deeper posts during the week; every change in its own place. Please tell me how it lands. +That is the new format. Short post on Friday; deeper posts during the week; every change in its own place. Please tell us how it lands. Issue tracker is [here](https://github.com/codenameone/CodenameOne/issues), the discussion forum is [here](https://www.codenameone.com/discussion-forum.html), and the new Build Cloud console is at [`/console/`](https://cloud.codenameone.com/console/index.html). The [Playground](/playground/), [Initializr](/initializr/), and [Skin Designer](/skindesigner/) are all still where they were. diff --git a/docs/website/static/blog/metal-default-new-build-cloud-and-a-new-format.jpg b/docs/website/static/blog/metal-default-new-build-cloud-and-a-new-format.jpg new file mode 100644 index 0000000000000000000000000000000000000000..151ca5feb2a9cf14508c4719cdf9be9536cb0715 GIT binary patch literal 61876 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±;%h#)K!T2zW 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

    ~~wKTj2 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 m