From 30de790176a7c1fc110b2e8b68e61c710e75aaa7 Mon Sep 17 00:00:00 2001
From: Shai Almog <67850168+shai-almog@users.noreply.github.com>
Date: Fri, 18 Sep 2026 18:02:13 +0300
Subject: [PATCH 1/4] Render the developer guide as searchable Hugo chapters
---
.github/workflows/website-docs.yml | 4 +
.gitignore | 5 +
.../assets/css/extended/cn1-guide-pages.css | 63 +++++++++
docs/website/assets/js/cn1-guide-links.js | 24 ++++
docs/website/content/about-us.md | 2 +-
docs/website/content/advanced-build.md | 2 +-
...ware-developers-journey-at-codename-one.md | 2 +-
.../blog/app-hardening-cross-platform.md | 2 +-
.../blog/app-shield-server-attestation.md | 2 +-
docs/website/content/blog/avoiding-lists.md | 4 +-
docs/website/content/blog/back-vacation.md | 4 +-
...ava-for-ios-android-tutorials-resources.md | 2 +-
.../content/blog/build-time-codegen.md | 6 +-
.../content/blog/clarifying-our-support.md | 2 +-
docs/website/content/blog/clock-demo.md | 2 +-
...-io-is-back-java-on-mobile-from-scratch.md | 2 +-
.../content/blog/codefreeze-for-3-8.md | 2 +-
.../content/blog/codename-one-3-0-now-live.md | 2 +-
.../content/blog/codename-one-3-4-now-live.md | 2 +-
.../content/blog/codename-one-3-5-now-live.md | 2 +-
.../codename-one-3-6-now-live-special-sale.md | 2 +-
.../content/blog/codename-one-3-7-live.md | 2 +-
.../content/blog/codename-one-3-8-live.md | 2 +-
...ename-one-graphics-low-level-animations.md | 4 +-
.../website/content/blog/component-gallery.md | 2 +-
.../developer-workflow-debug-and-junit.md | 4 +-
.../blog/edit-udid-in-component-inspector.md | 2 +-
...unded-border-ripple-caps-google-connect.md | 2 +-
.../blog/game-builder-2d-platformer.md | 4 +-
.../blog/game-development-api-box2d.md | 2 +-
.../blog/how-to-build-ios-apps-with-java.md | 2 +-
.../blog/icon-fonts-popups-infinite-scroll.md | 2 +-
docs/website/content/blog/in-a-pinch.md | 2 +-
.../blog/intercepting-urls-on-ios-android.md | 4 +-
.../blog/invite-link-through-app-store.md | 2 +-
...javascript-port-cross-origin-hints-bugs.md | 8 +-
...library-update-nativeinterface-generics.md | 2 +-
.../blog/mac-appstore-builds-device-farms.md | 2 +-
...ap-string-performance-javascript-native.md | 2 +-
docs/website/content/blog/metal-and-skins.md | 2 +-
.../content/blog/native-desktop-windows.md | 2 +-
.../content/blog/new-animation-manager.md | 2 +-
.../content/blog/new-developer-guide.md | 2 +-
.../blog/new-html-developer-guide-how-do-i.md | 2 +-
...nces-command-state-localization-locking.md | 2 +-
.../blog/new-skins-san-francisco-font.md | 2 +-
.../nfc-crypto-biometrics-and-build-cloud.md | 2 +-
...update-faster-windows-desktop-uwp-guide.md | 2 +-
.../content/blog/performance-true-story.md | 2 +-
.../content/blog/platform-apis-in-the-core.md | 8 +-
.../content/blog/portable-3d-graphics-api.md | 2 +-
.../blog/questions-of-the-week-xxvii.md | 2 +-
.../blog/questions-of-the-week-xxviii.md | 2 +-
...-corners-shadows-and-gradients-with-css.md | 2 +-
docs/website/content/blog/security-section.md | 2 +-
.../blog/skills-java17-and-theme-accents.md | 6 +-
...l-explorer-global-toolbar-location-docs.md | 2 +-
.../content/blog/sqlite-portable-encrypted.md | 2 +-
.../website/content/blog/storage-migration.md | 2 +-
.../stream-apis-spm-tutorial-trail-and-uwp.md | 6 +-
...-android-marshmallow-permission-prompts.md | 2 +-
.../blog/tip-disable-google-play-services.md | 2 +-
.../content/blog/tutorial-crash-protection.md | 2 +-
.../blog/tutorial-storage-file-system-sql.md | 2 +-
.../blog/understanding-the-table-component.md | 2 +-
.../blog/unleading-mutating-accordion.md | 2 +-
.../content/blog/using-the-new-gui-builder.md | 4 +-
.../website/content/blog/voip-vpn-builders.md | 2 +-
...i-parparvm-performance-actionevent-type.md | 2 +-
...e-26-migration-and-localization-bundles.md | 2 +-
docs/website/content/cn1libs.md | 2 +-
.../content/codename-one-3-0-release-notes.md | 2 +-
.../001-introduction.md | 2 +-
...003-core-concepts-of-mobile-development.md | 2 +-
.../004-what-is-codename-one.md | 2 +-
...5-anatomy-of-a-codename-one-application.md | 2 +-
...6-internationalization-and-localization.md | 2 +-
.../007-layout-basics.md | 2 +-
.../008-theme-basics.md | 2 +-
.../009-adapting-a-ui-design.md | 2 +-
.../010-storage-filesystem-and-sql.md | 2 +-
.../011-threading-and-the-edt.md | 2 +-
.../012-understanding-properties.md | 2 +-
.../013-push-notification.md | 2 +-
...nterfaces-access-native-device-features.md | 2 +-
.../001-working-with-css.md | 2 +-
.../002-introduction-to-spring-boot.md | 2 +-
.../003-connecting-to-a-web-service.md | 2 +-
.../004-introduction.md | 2 +-
.../006-css.md | 2 +-
.../007-baseform.md | 2 +-
.../010-introduction.md | 2 +-
.../011-the-new-forms.md | 2 +-
.../012-fixing-the-checkout-experience.md | 2 +-
.../014-code-changes-and-summary.md | 2 +-
.../015-overview-and-basic-model.md | 2 +-
.../016-integration-and-summary.md | 2 +-
.../017-the-native-interface-callback.md | 2 +-
.../018-dependencies-gradle-and-cocoapods.md | 2 +-
.../019-the-native-code.md | 2 +-
.../020-introduction-and-generic-code.md | 2 +-
...plementing-the-native-camera-on-android.md | 2 +-
.../022-camera-ios-port-basics.md | 2 +-
.../023-arc-and-view-on-ios.md | 2 +-
.../024-capture-and-callbacks-in-ios.md | 2 +-
.../026-address-and-validation.md | 2 +-
.../027-categories-and-search.md | 2 +-
...security-basics-and-certificate-pinning.md | 2 +-
...e-encryption-and-misc-security-features.md | 2 +-
.../030-introduction-and-installation.md | 2 +-
.../031-hello-world-and-devices.md | 2 +-
...ers-lightweight-overlays-and-map-layout.md | 2 +-
.../033-introduction-and-setup.md | 2 +-
...nning-the-kitchen-sink-in-the-simulator.md | 2 +-
...g-a-desktop-version-of-the-kitchen-sink.md | 2 +-
...roid-native-version-of-the-kitchen-sink.md | 2 +-
...-ios-native-version-of-the-kitchen-sink.md | 2 +-
...s-performance-breaking-down-the-problem.md | 2 +-
.../004-architecture-of-mockup.md | 2 +-
docs/website/content/demo-camera-demo.md | 2 +-
.../_index.md} | 2 +-
.../content/developer-guide/single-page.md | 7 +
.../content/developing-in-codename-one.md | 4 +-
.../content/development-environment.md | 2 +-
docs/website/content/google-login.md | 2 +-
...-functionality-invoke-native-interfaces.md | 2 +-
...rvices-perform-operations-on-the-server.md | 2 +-
.../how-do-i-create-a-9-piece-image-border.md | 2 +-
...o-i-create-a-list-of-items-the-easy-way.md | 2 +-
.../howdoi/how-do-i-create-a-simple-theme.md | 2 +-
...do-i-create-an-ios-provisioning-profile.md | 2 +-
.../how-do-i-create-gorgeous-sidemenu.md | 2 +-
...one-source-modify-it-contribute-it-back.md | 2 +-
...from-the-resource-file-add-a-multiimage.md | 2 +-
...me-one-tools-and-the-standard-ide-tools.md | 2 +-
...codename-one-use-the-versioning-feature.md | 2 +-
...gui-builder-populate-the-form-from-code.md | 2 +-
...rmance-or-track-down-performance-issues.md | 2 +-
...ernationalizationlocalization-to-my-app.md | 2 +-
...ioning-components-using-layout-managers.md | 2 +-
...how-do-i-take-a-picture-with-the-camera.md | 2 +-
.../howdoi/how-do-i-use-cloud-connect.md | 2 +-
...-i-use-crash-protection-get-device-logs.md | 2 +-
.../how-do-i-use-desktop-javascript-ports.md | 2 +-
...use-http-sockets-webservices-websockets.md | 2 +-
.../howdoi/how-do-i-use-offline-build.md | 4 +-
...o-i-use-properties-to-speed-development.md | 2 +-
...-notification-send-server-push-messages.md | 2 +-
.../how-do-i-use-storage-file-system-sql.md | 2 +-
...debug-the-native-code-on-iosandroid-etc.md | 2 +-
docs/website/content/pricing.md | 4 +-
docs/website/content/site-map.md | 2 +-
.../layouts/_default/_markup/render-link.html | 2 +-
.../layouts/_default/developer-guide.html | 1 +
.../layouts/_default/getting-started.html | 2 +-
.../layouts/_default/guide-chapter.html | 41 ++++++
.../website/layouts/_default/guide-index.html | 22 +++
docs/website/layouts/_default/search.html | 4 +-
docs/website/layouts/_default/signing.html | 4 +-
docs/website/layouts/index.html | 2 +-
.../layouts/partials/guide-legacy-links.html | 2 +
docs/website/layouts/partials/guide-link.html | 27 ++++
.../layouts/shortcodes/guide-block.html | 1 +
docs/website/scripts/generate_lunr_index.py | 2 +-
docs/website/static/_redirects | 102 ++++++++++++++
scripts/website/build.sh | 4 +-
scripts/website/check_developer_guide.py | 95 +++++++++++++
scripts/website/developer-guide.md | 51 +++++++
scripts/website/generate_developer_guide.rb | 133 ++++++++++++++++++
scripts/website/guide-legacy-links.json | 43 ++++++
.../website/test_generate_developer_guide.rb | 87 ++++++++++++
171 files changed, 887 insertions(+), 179 deletions(-)
create mode 100644 docs/website/assets/css/extended/cn1-guide-pages.css
create mode 100644 docs/website/assets/js/cn1-guide-links.js
rename docs/website/content/{developer-guide.md => developer-guide/_index.md} (86%)
create mode 100644 docs/website/content/developer-guide/single-page.md
create mode 100644 docs/website/layouts/_default/guide-chapter.html
create mode 100644 docs/website/layouts/_default/guide-index.html
create mode 100644 docs/website/layouts/partials/guide-legacy-links.html
create mode 100644 docs/website/layouts/partials/guide-link.html
create mode 100644 docs/website/layouts/shortcodes/guide-block.html
create mode 100644 scripts/website/check_developer_guide.py
create mode 100644 scripts/website/developer-guide.md
create mode 100644 scripts/website/generate_developer_guide.rb
create mode 100644 scripts/website/guide-legacy-links.json
create mode 100644 scripts/website/test_generate_developer_guide.rb
diff --git a/.github/workflows/website-docs.yml b/.github/workflows/website-docs.yml
index b71a1040d4f..00027a343be 100644
--- a/.github/workflows/website-docs.yml
+++ b/.github/workflows/website-docs.yml
@@ -162,6 +162,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ github.token }}
+ - name: Test developer guide chapter generation
+ run: ruby scripts/website/test_generate_developer_guide.rb
+
- name: Test developer guide PDF redirect resolver
run: scripts/website/test_update_developer_guide_redirect.sh
@@ -383,6 +386,7 @@ jobs:
set -euo pipefail
test -f docs/website/public/_redirects
test -f docs/website/public/developer-guide/index.html
+ python3 scripts/website/check_developer_guide.py docs/website/public
grep -Eq '^/files/developer-guide\.pdf https://github\.com/codenameone/CodenameOne/releases/download/.+/developer-guide\.pdf 302$' docs/website/public/_redirects
grep -Eq '^/manual /developer-guide/ 301$' docs/website/public/_redirects
grep -Eq '^/manual/ /developer-guide/ 301$' docs/website/public/_redirects
diff --git a/.gitignore b/.gitignore
index a2bfcc05a8c..b8ee266a2ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -180,3 +180,8 @@ cn1-build-hints.json
# runs `xcodegen generate` from the checked-in project.yml. A committed pbxproj
# would be a second source of truth for the same target.
/scripts/input-validation-app/ios-tests/*.xcodeproj/
+
+# Chapter Markdown and navigation are regenerated from the AsciiDoc book.
+/docs/website/content/developer-guide/chapters/
+/docs/website/data/developer-guide.json
+/docs/website/data/guide-links.json
diff --git a/docs/website/assets/css/extended/cn1-guide-pages.css b/docs/website/assets/css/extended/cn1-guide-pages.css
new file mode 100644
index 00000000000..e2d0e415e69
--- /dev/null
+++ b/docs/website/assets/css/extended/cn1-guide-pages.css
@@ -0,0 +1,63 @@
+.cn1-guide-index { max-width: var(--cn1-shell); }
+.cn1-guide-tools { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; margin: 1.25rem 0 2rem; font-size: .9rem; }
+.cn1-guide-tools a, .cn1-guide-sidebar a, .cn1-guide-crumbs a, .cn1-guide-pagination a { color: var(--cn1-accent); }
+.cn1-guide-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
+.cn1-guide-groups section { border: 1px solid var(--cn1-border); border-radius: 12px; padding: 1.25rem; background: var(--entry); }
+.cn1-guide-groups h2 { font-size: 1.15rem; margin: 0 0 .75rem; }
+.cn1-guide-groups ul { list-style: none; padding: 0; }
+.cn1-guide-groups li { margin: .65rem 0; line-height: 1.4; }
+.cn1-guide-groups a:hover, .cn1-guide-sidebar a:hover { text-decoration: underline; }
+.cn1-guide-layout { display: grid; grid-template-columns: 255px minmax(0, 1fr); gap: 2.5rem; max-width: var(--cn1-shell); margin: auto; }
+.cn1-guide-sidebar { position: sticky; top: 5.5rem; align-self: start; max-height: calc(100vh - 6.5rem); overflow: auto; font-size: .86rem; padding: 1rem; border: 1px solid var(--cn1-border); border-radius: 12px; }
+.cn1-guide-home { display: block; font-weight: 700; font-size: 1.05rem; margin-bottom: .5rem; }
+.cn1-guide-sidebar details { margin-top: 1rem; }
+.cn1-guide-sidebar summary, .cn1-guide-toc summary { cursor: pointer; font-weight: 600; }
+.cn1-guide-sidebar ul { list-style: none; padding: 0 0 0 .7rem; }
+.cn1-guide-sidebar li { margin: .6rem 0; line-height: 1.4; }
+.cn1-guide-sidebar [aria-current=page] { color: var(--primary); font-weight: 700; border-left: 3px solid var(--cn1-accent); padding-left: .5rem; }
+.cn1-guide-chapter { min-width: 0; width: 100%; }
+.cn1-guide-crumbs { font-size: .85rem; color: var(--cn1-muted); margin-bottom: 1rem; }
+.cn1-guide-toc { border: 1px solid var(--cn1-border); border-radius: 10px; padding: 1rem 1.25rem; margin: 1.5rem 0; font-size: .9rem; }
+.cn1-guide-toc ul { padding-left: 1.2rem; }
+.cn1-guide-toc li { margin: .45rem 0; }
+.cn1-guide-toc nav { margin-top: .75rem; }
+.cn1-guide-pagination { display: flex; justify-content: space-between; gap: 1.5rem; padding: 1.5rem 0; border-top: 1px solid var(--cn1-border); }
+.cn1-guide-pagination [rel=next] { margin-left: auto; text-align: right; }
+.cn1-guide-content { overflow-wrap: anywhere; }
+.cn1-guide-content :is(h2,h3,h4,h5,h6,[id]) { scroll-margin-top: 6rem; }
+.cn1-guide-content .title { font-weight: 600; margin: .5rem 0; }
+.cn1-guide-content .imageblock { margin: 1.5rem 0; }
+.cn1-guide-content .imageblock .title { font-size: .85rem; color: var(--cn1-muted); }
+.cn1-guide-content .admonitionblock, .cn1-guide-content .sidebarblock { border-left: 3px solid var(--cn1-accent); background: var(--entry); padding: .75rem 1rem; margin: 1.5rem 0; border-radius: 6px; }
+.cn1-guide-content .admonitionblock table { margin: 0; display: table; }
+.cn1-guide-content .admonitionblock td { border: 0; }
+.cn1-guide-content .admonitionblock .icon { width: 4rem; font-weight: 700; }
+.cn1-guide-content .admonitionblock .content > :last-child { margin-bottom: 0; }
+.cn1-guide-content .tableblock { max-width: 100%; }
+.cn1-guide-content pre { overflow: auto; overflow-wrap: normal; }
+.cn1-guide-content pre code { white-space: pre; }
+.cn1-guide-content .colist td { border: 0; padding: .25rem .5rem; }
+.cn1-guide-content .conum { font-style: normal; font-weight: 700; }
+.cn1-guide-content .conum[data-value]::after { content: attr(data-value); }
+.cn1-guide-content .footnotes { border-top: 1px solid var(--cn1-border); padding-top: 1rem; font-size: .85rem; }
+@media (max-width: 1000px) {
+ .cn1-guide-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
+ .cn1-guide-layout { grid-template-columns: 210px minmax(0, 1fr); gap: 1.25rem; }
+}
+@media (max-width: 720px) {
+ .cn1-guide-groups, .cn1-guide-layout { grid-template-columns: 1fr; }
+ .cn1-guide-sidebar { position: static; max-height: 15rem; }
+ .cn1-guide-chapter .post-title { font-size: 1.9rem; }
+}
+@media print {
+ .cn1-guide-sidebar, .cn1-guide-tools, .cn1-guide-pagination, .cn1-guide-toc { display: none; }
+ .cn1-guide-layout { display: block; }
+}
+.main:has(> .cn1-guide-layout) { max-width: min(1320px, calc(100vw - 32px)); padding-inline: 24px; }
+@media (max-width: 720px) { .main:has(> .cn1-guide-layout) { padding-inline: 0; } }
+.cn1-guide-toc nav { max-height: 22rem; overflow: auto; }
+.cn1-guide-menu > summary { margin-bottom: 1rem; }
+@media (min-width: 721px) { .cn1-guide-menu > summary { display: none; } }
+
+.post-single .cn1-guide-content .admonitionblock td { border-bottom: 0; }
+.cn1-guide-content pre code { font-size: .85rem; }
diff --git a/docs/website/assets/js/cn1-guide-links.js b/docs/website/assets/js/cn1-guide-links.js
new file mode 100644
index 00000000000..df0fc643f3d
--- /dev/null
+++ b/docs/website/assets/js/cn1-guide-links.js
@@ -0,0 +1,24 @@
+/* Fragments never reach the server. Resolve old book bookmarks in the browser. */
+(() => {
+ const menu = document.querySelector('.cn1-guide-menu');
+ if (menu) menu.open = window.matchMedia('(min-width: 721px)').matches;
+ async function resolveBookmark() {
+ if (!location.hash) return;
+ let id;
+ try { id = decodeURIComponent(location.hash.slice(1)); } catch (_) { return; }
+ if (document.getElementById(id)) return;
+ try {
+ const response = await fetch('/developer-guide/anchors.json');
+ if (!response.ok) return;
+ const anchors = await response.json();
+ const target = anchors[id];
+ if (target && target.startsWith('/developer-guide/') && target !== location.pathname + location.hash) {
+ const next = new URL(target, location.origin);
+ next.search = location.search;
+ location.replace(next.href);
+ }
+ } catch (_) { /* Leave the chapter directory usable when offline. */ }
+ }
+ resolveBookmark();
+ window.addEventListener('hashchange', resolveBookmark);
+})();
diff --git a/docs/website/content/about-us.md b/docs/website/content/about-us.md
index ae6fca8867e..0a069934a35 100644
--- a/docs/website/content/about-us.md
+++ b/docs/website/content/about-us.md
@@ -20,7 +20,7 @@ https://youtu.be/rl6z7DD2-vg
### How does Codename One work?
-To understand how Codename One works, its history etc. check the [developer guide](/manual/) (also available as a [PDF](/files/developer-guide.pdf)). It provide a birds eye view in the first chapter.
+To understand how Codename One works, its history etc. check the [developer guide](/developer-guide/introduction/) (also available as a [PDF](/files/developer-guide.pdf)). It provide a birds eye view in the first chapter.
You can also refer to [this stackoverflow answer](http://stackoverflow.com/questions/10639766/how-codename-one-works/10646336). There is a video that goes into further details [here](https://www.youtube.com/watch?v=MrwbpdMALig) (it's a bit long).
diff --git a/docs/website/content/advanced-build.md b/docs/website/content/advanced-build.md
index 3454908a861..30466ff9843 100644
--- a/docs/website/content/advanced-build.md
+++ b/docs/website/content/advanced-build.md
@@ -18,4 +18,4 @@ Build hints/arguments allow us to manipulate the build process on the build serv
When sending a build to the server you can provide additional parameters to the build which will be incorporated into the build process on the server to hint on multiple different build time options.You can do this by right clicking the Codename One project and entering the project properties. There you will find the "Build Hints" tab in which you can just type the arguments and the appropriate values from the list below.
-We removed this page since it duplicates content from the developer guide and we should probably maintain only one **authoritative** list. The up to date list is [here](/manual/advanced-topics/#_sending_arguments_to_the_build_server).
+We removed this page since it duplicates content from the developer guide and we should probably maintain only one **authoritative** list. The up to date list is [here](/developer-guide/advanced-topics-under-the-hood/#_sending_arguments_to_the_build_server).
diff --git a/docs/website/content/blog/a-junior-software-developers-journey-at-codename-one.md b/docs/website/content/blog/a-junior-software-developers-journey-at-codename-one.md
index 01869c9c413..4e22f083e54 100644
--- a/docs/website/content/blog/a-junior-software-developers-journey-at-codename-one.md
+++ b/docs/website/content/blog/a-junior-software-developers-journey-at-codename-one.md
@@ -35,7 +35,7 @@ I barely wrote 100 lines of code (not the best ones). Even worse than that, I fe
### What Really Helped?
-I found the [Codename One developer guide](/developer-guide) to be the best learning resource. It’s great for learning your way around the tool and understanding its components.
+I found the [Codename One developer guide](/developer-guide/) to be the best learning resource. It’s great for learning your way around the tool and understanding its components.
In the [How Do I](/how-do-i/) section I found some very helpful video tutorials that also helped a lot with learning common use cases, like the [Layout basics](/how_di_i/how-do-i-positioning-components-using-layout-managers/) video, and the [How to convert a PSD Design into a Native Mobile App](/video/how-to-convert-a-psd-design-into-a-native-mobile-app/).
diff --git a/docs/website/content/blog/app-hardening-cross-platform.md b/docs/website/content/blog/app-hardening-cross-platform.md
index 907a4888b52..07a1af84cb8 100644
--- a/docs/website/content/blog/app-hardening-cross-platform.md
+++ b/docs/website/content/blog/app-hardening-cross-platform.md
@@ -146,7 +146,7 @@ The security lead we are building comes from covering these boundaries together.
App Hardening still cannot stop a determined attacker who controls the device. It does not replace authorization, rate limits, secure key custody, or review of the operation your backend performs. It makes static analysis and casual tampering more expensive across every artifact you ship, which is the job an obfuscation layer can defend.
-Start with `standard`, submit a release cloud build, and check the hardening report before moving to a stronger profile. The [App Hardening guide](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/App-Hardening.asciidoc) documents every hint, exclusion, and local-build boundary.
+Start with `standard`, submit a release cloud build, and check the hardening report before moving to a stronger profile. The [App Hardening guide](/developer-guide/app-hardening/) documents every hint, exclusion, and local-build boundary.
---
diff --git a/docs/website/content/blog/app-shield-server-attestation.md b/docs/website/content/blog/app-shield-server-attestation.md
index 3007d1cf142..0dafba1de91 100644
--- a/docs/website/content/blog/app-shield-server-attestation.md
+++ b/docs/website/content/blog/app-shield-server-attestation.md
@@ -154,7 +154,7 @@ It also cannot cover traffic it cannot see. `ConnectionRequest`-based APIs get a
Certificate pinning has its own operational risk. App Shield pins public keys rather than whole certificates, so a certificate renewal on the same key does not break the app. You should still roll out the server policy in monitor mode first, measure the `would_deny` traffic, and only then reject requests.
-The complete wire format, failure statuses, transport boundaries, pin lifecycle, and backend examples are in the [App Shield developer guide](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/App-Shield.asciidoc).
+The complete wire format, failure statuses, transport boundaries, pin lifecycle, and backend examples are in the [App Shield developer guide](/developer-guide/app-shield/).
## OpenType fonts now work without renaming
diff --git a/docs/website/content/blog/avoiding-lists.md b/docs/website/content/blog/avoiding-lists.md
index 0647f7a4734..dfe3237216a 100644
--- a/docs/website/content/blog/avoiding-lists.md
+++ b/docs/website/content/blog/avoiding-lists.md
@@ -134,9 +134,9 @@ The problem with this approach becomes obvious when we try to add an event liste
We can make `name` into a `Button` but then what happens when a user clicks `email`?
-We can make all the entries into buttons but that isn’t practical. That’s what [lead component](/manual/components/#lead-component-sidebar) is for, we can make one component into a button and it "takes the lead". If we make name into a button and set it as the lead of the `Container` it will handle all the events and state changes for the entire row!
+We can make all the entries into buttons but that isn’t practical. That’s what [lead component](/developer-guide/the-components-of-codename-one/#lead-component-sidebar) is for, we can make one component into a button and it "takes the lead". If we make name into a button and set it as the lead of the `Container` it will handle all the events and state changes for the entire row!
-__ | For more information on lead components check out [the sidebar](/manual/components/#lead-component-sidebar) in the developer guide.
+__ | For more information on lead components check out [the sidebar](/developer-guide/the-components-of-codename-one/#lead-component-sidebar) in the developer guide.\
---|---
We can change the code above like this and support lead components:
diff --git a/docs/website/content/blog/back-vacation.md b/docs/website/content/blog/back-vacation.md
index 6e3c8837ad9..25cc30ba451 100644
--- a/docs/website/content/blog/back-vacation.md
+++ b/docs/website/content/blog/back-vacation.md
@@ -21,12 +21,12 @@ During the month of August Google finally removed their old GCM servers. We’ve
Users who still used the old style of push notifications (prior to the `google-services.json` file approach) had push messages blocked. That was expected.
-__ | You can read about the modern approach to push [here](/manual/push/)
+__ | You can read about the modern approach to push [here](/developer-guide/push-notifications/)\
---|---
Because that no longer works anyway we switched the default build mode to FCM. This solves an issue for developers who neglected to define the `android.messagingService=fcm` build hint (which you no longer need). However, this causes a build error if you don’t have that JSON file in place. You can get this to compile for now by explicitly stating the build hint `android.messagingService=gcm`. However, push won’t work if you do that since the Google run GCM push servers are no longer there. But it will compile which is a start.
-To migrate to the new FCM approach check out the [developer guide section on push](/manual/push/).
+To migrate to the new FCM approach check out the [developer guide section on push](/developer-guide/push-notifications/).
### API Level 28 and HTTPS Requirement
diff --git a/docs/website/content/blog/build-apps-with-java-for-ios-android-tutorials-resources.md b/docs/website/content/blog/build-apps-with-java-for-ios-android-tutorials-resources.md
index 87064fee09c..55f73041a38 100644
--- a/docs/website/content/blog/build-apps-with-java-for-ios-android-tutorials-resources.md
+++ b/docs/website/content/blog/build-apps-with-java-for-ios-android-tutorials-resources.md
@@ -14,7 +14,7 @@ There are many Codename One resources for building native mobile apps but they a
### Written Docs and Tutorials
* [• Create an Uber Clone in 7 Days](https://uber.cn1.co/) – Even if you don’t purchase the full book, the free chapters available to download will help you get started quickly.
- * * [• Developer Guide](https://www.codenameone.com/manual/) – if you haven’t read the developer guide you should! Notice that it also comes in a [PDF](https://www.codenameone.com/files/developer-guide.pdf).
+ * * [• Developer Guide](/developer-guide/) – if you haven’t read the developer guide you should! Notice that it also comes in a [PDF](https://www.codenameone.com/files/developer-guide.pdf).
* * [• JavaDocs](https://www.codenameone.com/javadoc/) – our JavaDocs include some hidden features such as the [component gallery](/javadoc/com/codename1/ui/package-summary/) & [layout gallery](/javadoc/com/codename1/ui/layouts/package-summary/).
* * [• Sviluppare app multipiattaforma – Indice del corso introduttivo](https://www.informatica-libera.net/content/sviluppare-app-multipiattaforma-indice-del-corso-introduttivo) – Italian language free course for mobile cross-platform development by Francesco Galgani.
* * [• Port an Android app to iOS (iPhone)](/blog/port-native-android-app-ios-iphone-guide.html) – a step by step guide on porting a real world Android app to Codename One and getting it onto all the major stores.
diff --git a/docs/website/content/blog/build-time-codegen.md b/docs/website/content/blog/build-time-codegen.md
index c75e9159e07..d0159137d6a 100644
--- a/docs/website/content/blog/build-time-codegen.md
+++ b/docs/website/content/blog/build-time-codegen.md
@@ -43,7 +43,7 @@ Wire it into the project's `pom.xml`:
```
-`mvn generate-sources` picks the spec up, downloads it, and writes one file per schema and one per tag under `target/generated-sources/`. The Petstore reference spec exercised end-to-end produces six model classes (`Pet`, `Order`, `Customer`, `Tag`, `Category`, `User`) and three Api classes (`PetApi`, `StoreApi`, `UserApi`), and the nine generated `.class` files compile cleanly against `codenameone-core`. Documented at [the OpenAPI codegen Maven goal](https://www.codenameone.com/developer-guide/#_appendix_goal_generate_openapi_client).
+`mvn generate-sources` picks the spec up, downloads it, and writes one file per schema and one per tag under `target/generated-sources/`. The Petstore reference spec exercised end-to-end produces six model classes (`Pet`, `Order`, `Customer`, `Tag`, `Category`, `User`) and three Api classes (`PetApi`, `StoreApi`, `UserApi`), and the nine generated `.class` files compile cleanly against `codenameone-core`. Documented at [the OpenAPI codegen Maven goal](/developer-guide/maven-appendix-goals/#_generate_openapi_client_generate_openapi).
In application code you call the generated `Api` class the same way you would call any other Java method:
@@ -240,7 +240,7 @@ What is still not supported: SVG `filter` primitives, `` (treated as a cli
**Caveat on iOS:** the transcoded SVGs use the framework's shape API (`fillShape`, `drawShape`, `LinearGradientPaint`). The full surface is implemented on the Metal renderer. The deprecated GL ES 2 pipeline does not have parity on every operation, so an SVG drawn under `ios.metal=false` will often render with visible artifacts (missing gradients, clipped fills, distorted paths) rather than the placeholder you might expect. Now that Metal is the default for new iOS builds [as of last Friday](/blog/metal-default-new-build-cloud-and-a-new-format/#metal-is-the-default-on-ios), this is a non-issue on most apps; if you have explicitly pinned `ios.metal=false`, expect some visual regressions on SVG content and let us know which.
-The coverage matrix and troubleshooting are at [SVG Transcoder](https://www.codenameone.com/developer-guide/#_svg_transcoder) in the developer guide.
+The coverage matrix and troubleshooting are at [SVG Transcoder](/developer-guide/svg-transcoder/#_build_time_vector_animation_images) in the developer guide.
## Lottie at build time
@@ -341,7 +341,7 @@ The rest of the router surface covers the kind of thing that has become table st
The API is opt-in. Apps that prefer the existing `Form.show()` / `Form.showBack()` flow keep using that; nothing changes.
-For the link-publishing side, an `AasaBuilder` emits the iOS `apple-app-site-association` JSON and an `AssetLinksBuilder` emits the Android `assetlinks.json`. The full setup walk-through (entitlements, the Android `intent-filter`, the `.well-known/` upload on your origin server) is at [Routing and Deep Links](https://www.codenameone.com/developer-guide/#_routing_and_deep_links) in the developer guide.
+For the link-publishing side, an `AasaBuilder` emits the iOS `apple-app-site-association` JSON and an `AssetLinksBuilder` emits the Android `assetlinks.json`. The full setup walk-through (entitlements, the Android `intent-filter`, the `.well-known/` upload on your origin server) is at [Routing and Deep Links](/developer-guide/deep-links-routing/#_deep_link_routing) in the developer guide.
The JavaScript port bridges the router into `window.history` so navigating the in-app router pushes a real entry into the browser's session history. Back and forward in the browser drive the router; reloading the page lands at the deep-link URL; sharing the URL out of the address bar takes a colleague to the same in-app location.
diff --git a/docs/website/content/blog/clarifying-our-support.md b/docs/website/content/blog/clarifying-our-support.md
index 4af250df668..27d9ea62dd7 100644
--- a/docs/website/content/blog/clarifying-our-support.md
+++ b/docs/website/content/blog/clarifying-our-support.md
@@ -25,7 +25,7 @@ treasure trove of Codename One information thanks to your questions!
* [Github issue tracker](/blog/issue-submission-guideline.html) – If you are new to Codename One I would
suggest asking in the [discussion group](/discussion-forum.html) first and reading the blog post linked here
- * This blog – the comments section in the blog posts and even in the [developer guide](/manual/) is a
+ * This blog – the comments section in the blog posts and even in the [developer guide](/developer-guide/) is a\
good place for questions relevant to a specific entry
* [Discussion Group](/discussion-forum.html) – Our venerable Google group isn’t an ideal tool but it works as
diff --git a/docs/website/content/blog/clock-demo.md b/docs/website/content/blog/clock-demo.md
index 7765485e823..12b9517ae23 100644
--- a/docs/website/content/blog/clock-demo.md
+++ b/docs/website/content/blog/clock-demo.md
@@ -18,7 +18,7 @@ some reason which is a shame because it’s probably our only low level graphics
**Check out a live preview of the demo on the right here thanks to our JavaScript port!**
This demo was developed by Steve as part of a tutorial to teach low level graphics programming, this tutorial
-was folded into the [developer guide graphics section](/manual/graphics.html). Due to its nature there is
+was folded into the [developer guide graphics section](/developer-guide/graphics/). Due to its nature there is\
not much we can improve about the demo. It’s a wonderful demo both in simplicity and scope.
Still we modernized some of the boilerplate code that was improved since the original demo.
diff --git a/docs/website/content/blog/codapps-io-is-back-java-on-mobile-from-scratch.md b/docs/website/content/blog/codapps-io-is-back-java-on-mobile-from-scratch.md
index efcc8b264bc..30e9b05fcf5 100644
--- a/docs/website/content/blog/codapps-io-is-back-java-on-mobile-from-scratch.md
+++ b/docs/website/content/blog/codapps-io-is-back-java-on-mobile-from-scratch.md
@@ -28,7 +28,7 @@ complex details very clearly and because this is a game the course is both enter
### Other Resources
-We have a lot of documentation, but picking up a 900 page [developer guide](/manual/) might be intimidating
+We have a lot of documentation, but picking up a 900 page [developer guide](/developer-guide/) might be intimidating\
when you are completely new to Java.
Here are some helpful resources to get you started:
diff --git a/docs/website/content/blog/codefreeze-for-3-8.md b/docs/website/content/blog/codefreeze-for-3-8.md
index 4f2fdfbdad3..15c745cd424 100644
--- a/docs/website/content/blog/codefreeze-for-3-8.md
+++ b/docs/website/content/blog/codefreeze-for-3-8.md
@@ -89,7 +89,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Shai Almog says:
>
-> I understood that. I don’t understand what’s the problem with our sample code: [https://www.codenameone.com…]()
+> I understood that. I don’t understand what’s the problem with our sample code: [https://www.codenameone.com…]()
>
diff --git a/docs/website/content/blog/codename-one-3-0-now-live.md b/docs/website/content/blog/codename-one-3-0-now-live.md
index 8a90fea1346..c554c63e400 100644
--- a/docs/website/content/blog/codename-one-3-0-now-live.md
+++ b/docs/website/content/blog/codename-one-3-0-now-live.md
@@ -120,7 +120,7 @@ ____Significantly enhanced developer guide
We redid the developer guide from the ground up converting
it to asciidoc and integrating it into the website in a more fluent way. We increased its breadth by over
50%.
-Check it out [here](/manual/) or download the [pdf](/files/developer-guide.pdf).
+Check it out [here](/developer-guide/) or download the [pdf](/files/developer-guide.pdf).
____iOS Beta Test Support (testflight)
diff --git a/docs/website/content/blog/codename-one-3-4-now-live.md b/docs/website/content/blog/codename-one-3-4-now-live.md
index 8597edd16da..2c5c417dd08 100644
--- a/docs/website/content/blog/codename-one-3-4-now-live.md
+++ b/docs/website/content/blog/codename-one-3-4-now-live.md
@@ -18,7 +18,7 @@ and intend to carry on to version 3.5.
### Highlights of this Release
- * **Rewritten documentation** – the [developer guide](https://www.codenameone.com/manual/) was
+ * **Rewritten documentation** – the [developer guide](/developer-guide/) was\
[written from the ground up](https://www.codenameone.com/files/developer-guide.pdf)
and the [JavaDocs](https://www.codenameone.com/javadoc/) were significantly improved
diff --git a/docs/website/content/blog/codename-one-3-5-now-live.md b/docs/website/content/blog/codename-one-3-5-now-live.md
index 91b6a4c9d28..b6cebe03c09 100644
--- a/docs/website/content/blog/codename-one-3-5-now-live.md
+++ b/docs/website/content/blog/codename-one-3-5-now-live.md
@@ -17,7 +17,7 @@ Version 3.5 is a **huge** release that includes the long awaited Windows Univers
### Highlights of this Release
- * **Beta version of the UWP (Universal Windows Platform) Port** – Codename One [supports native Windows 10 universal apps](/manual/appendix-uwp/) that you can sell thru the Windows Store
+ * **Beta version of the UWP (Universal Windows Platform) Port** – Codename One [supports native Windows 10 universal apps](/developer-guide/working-with-uwp/) that you can sell thru the Windows Store
* **New GUI Builder Release** – We released the [new GUI builder](/blog/using-the-new-gui-builder/). It still has rough edges but is improving at a rapid pace
diff --git a/docs/website/content/blog/codename-one-3-6-now-live-special-sale.md b/docs/website/content/blog/codename-one-3-6-now-live-special-sale.md
index 10b24a1ebea..f1baab371dc 100644
--- a/docs/website/content/blog/codename-one-3-6-now-live-special-sale.md
+++ b/docs/website/content/blog/codename-one-3-6-now-live-special-sale.md
@@ -44,7 +44,7 @@ __ | The special deal has elapsed, thanks for all of you who signed up!
* **Offline Build Support** – Building thru the cloud is one of the "defining features" of Codename One, but some government level customers need the [ability to build offline](/blog/offline-build/) due to regulatory concerns
- * **Production grade UWP (Universal Windows Platform) Port** – [UWP](/manual/appendix-uwp/) allows seamless native support for Windows 10 on Intel/ARM devices & PC’s such as the very popular Surface line
+ * **Production grade UWP (Universal Windows Platform) Port** – [UWP](/developer-guide/working-with-uwp/) allows seamless native support for Windows 10 on Intel/ARM devices & PC’s such as the very popular Surface line
* **New GUI Builder Release** – We released the [new GUI builder](/blog/using-the-new-gui-builder/). It still has rough edges but is improving at a rapid pace
diff --git a/docs/website/content/blog/codename-one-3-7-live.md b/docs/website/content/blog/codename-one-3-7-live.md
index 4e3c651a84f..d5c590c9fe9 100644
--- a/docs/website/content/blog/codename-one-3-7-live.md
+++ b/docs/website/content/blog/codename-one-3-7-live.md
@@ -61,7 +61,7 @@ In addition to that we made numerous enhancements to the UX of the GUI builder f
* **Terse Syntax** – New [CN API](/blog/static-global-context.html) allows developers to write more concise code, new helper API’s such as `addAll` & a jquery style [component selector](/blog/jquery-css-style-selectors-for-cn1.html)
- * **Security Oriented API’s** – New API’s for detecting certificates on https servers as well as API’s for touch ID, jailbreak detection and [more](/manual/security.html)
+ * **Security Oriented API’s** – New API’s for detecting certificates on https servers as well as API’s for touch ID, jailbreak detection and [more](/developer-guide/security/)
* **Thread Helper & Threadsafe SQLite API’s** – A new API for communicating with threads & a new [threadsafe wrapper for sqlite](/blog/threadsafe-sqlite.html)
diff --git a/docs/website/content/blog/codename-one-3-8-live.md b/docs/website/content/blog/codename-one-3-8-live.md
index cd09647287a..1577e8fc409 100644
--- a/docs/website/content/blog/codename-one-3-8-live.md
+++ b/docs/website/content/blog/codename-one-3-8-live.md
@@ -32,7 +32,7 @@ Codename One is the only platform that…
To learn more about Codename One check out the [about page](/about/) you can [download it for free right now](/download/).
-As part of the release we significantly refined our developer guide which is now also available in [print form on Amazon](https://www.amazon.com/dp/1549910035). Notice that this guide is available for free [here](https://www.codenameone.com/manual/) & in [pdf format](https://www.codenameone.com/files/developer-guide.pdf). This developer guide is a community effort which you can contribute to as explained [here](/blog/tip-edit-docs-fun-profit/).
+As part of the release we significantly refined our developer guide which is now also available in [print form on Amazon](https://www.amazon.com/dp/1549910035). Notice that this guide is available for free [here](/developer-guide/) & in [pdf format](https://www.codenameone.com/files/developer-guide.pdf). This developer guide is a community effort which you can contribute to as explained [here](/blog/tip-edit-docs-fun-profit/).
### Highlights of this Release
diff --git a/docs/website/content/blog/codename-one-graphics-low-level-animations.md b/docs/website/content/blog/codename-one-graphics-low-level-animations.md
index 9de92a11aaf..09bd8d3fa46 100644
--- a/docs/website/content/blog/codename-one-graphics-low-level-animations.md
+++ b/docs/website/content/blog/codename-one-graphics-low-level-animations.md
@@ -17,7 +17,7 @@ In my previous post, I created a static analog clock component. In this post, I
#### How Animation Works in Codename One
-From the [Developer’s Guide:](http://www.codenameone.com/manual/)
+From the [Developer’s Guide:](/developer-guide/animations/)
> The Codename One event dispatch thread has a special animation "pulse" allowing an animation to update its state and draw itself.
>
@@ -87,7 +87,7 @@ This tutorial dealt with the low-level animation API since the focus of this ser
2. Animating components when their layouts are changed.
3. Animating components when their hierarchy is changed.
-See the [Developer’s Guide](http://www.codenameone.com/manual/) for more information about these APIs.
+See the [Developer’s Guide](/developer-guide/animations/) for more information about these APIs.
#### More Advanced Animations
diff --git a/docs/website/content/blog/component-gallery.md b/docs/website/content/blog/component-gallery.md
index 55f25eac9c0..7ad42ac28c6 100644
--- a/docs/website/content/blog/component-gallery.md
+++ b/docs/website/content/blog/component-gallery.md
@@ -13,7 +13,7 @@ author: Shai Almog
As you know we’ve been working a lot on the docs both the developer guide and the JavaDoc’s, we nearly doubled
the amount of pages in the developer guide and we did it without "cheating" (e.g. cramming more stuff, increasing font size).
-You can see all that work in the [developer guide](https://www.codenameone.com/manual/) section but what I want
+You can see all that work in the [developer guide](/developer-guide/the-components-of-codename-one/) section but what I want\
to discuss today is the new [Component Gallery](/javadoc/com/codename1/ui/package-summary/)
& [Layout Gallery](/javadoc/com/codename1/ui/layouts/package-summary/).
diff --git a/docs/website/content/blog/developer-workflow-debug-and-junit.md b/docs/website/content/blog/developer-workflow-debug-and-junit.md
index 39d33216490..e5d0878e6a3 100644
--- a/docs/website/content/blog/developer-workflow-debug-and-junit.md
+++ b/docs/website/content/blog/developer-workflow-debug-and-junit.md
@@ -160,7 +160,7 @@ Switch to **CN1 Attach Android** and click 🐞 Debug. IntelliJ connects to `loc
Source resolution covers both the `codenameone-core` and `codenameone-android` sources jars, so breakpoints inside the framework or inside the Android port resolve to the right files. On Android, **native interfaces are themselves Java**, so a breakpoint inside the `Impl` class of your own native interface fires just like a breakpoint anywhere else in your code; you can step through the implementation, inspect locals, and evaluate expressions the same way.
-The dev guide has the full reference, including the wireless-pairing flows, the VS Code and Eclipse equivalents, and a troubleshooting section: [iOS on-device debugging](https://www.codenameone.com/developer-guide/#_on_device_debugging_ios) and [Android on-device debugging](https://www.codenameone.com/developer-guide/#_on_device_debugging_android).
+The dev guide has the full reference, including the wireless-pairing flows, the VS Code and Eclipse equivalents, and a troubleshooting section: [iOS on-device debugging](/developer-guide/on-device-debugging/#_on_device_debugging_ios) and [Android on-device debugging](/developer-guide/on-device-debugging-android/#_on_device_debugging_android).
### When to use it (and when not to)
@@ -291,7 +291,7 @@ void newCodePathRunsWhenFlagIsOn() {
Class-level `@SimulatorProperty` applies to every method in the class. Method-level overrides class-level. Use the container `@SimulatorProperties` for more than one (the package source level rules out `@Repeatable`).
-The full reference, including the dependency-block YAML for `common/pom.xml` and `javase/pom.xml` and the `@Theme` / `@Orientation` / `@RTL` details, is at [Testing with JUnit 5](https://www.codenameone.com/developer-guide/#_testing_with_junit_5) in the developer guide.
+The full reference, including the dependency-block YAML for `common/pom.xml` and `javase/pom.xml` and the `@Theme` / `@Orientation` / `@RTL` details, is at [Testing with JUnit 5](/developer-guide/testing-with-junit/#_testing_with_junit_5) in the developer guide.
## Wrapping up
diff --git a/docs/website/content/blog/edit-udid-in-component-inspector.md b/docs/website/content/blog/edit-udid-in-component-inspector.md
index 64c73a7f84f..c75322a053d 100644
--- a/docs/website/content/blog/edit-udid-in-component-inspector.md
+++ b/docs/website/content/blog/edit-udid-in-component-inspector.md
@@ -12,7 +12,7 @@ author: Shai Almog

One of the hard things to debug in Codename One is UIID/Padding/Margin placement which is often tricky to
-get "just right". I use the [Component Inspector](/manual/index/) quite a lot to
+get "just right". I use the [Component Inspector](/developer-guide/introduction/) quite a lot to\
review a layout that misbehaves and gain further insight into what’s happening in runtime.
__ | You can gain insight into the Codename One component hierarchy by running the simulator and selecting the
diff --git a/docs/website/content/blog/factional-padding-margin-rounded-border-ripple-caps-google-connect.md b/docs/website/content/blog/factional-padding-margin-rounded-border-ripple-caps-google-connect.md
index afc5a0fb8b8..896453efbc2 100644
--- a/docs/website/content/blog/factional-padding-margin-rounded-border-ripple-caps-google-connect.md
+++ b/docs/website/content/blog/factional-padding-margin-rounded-border-ripple-caps-google-connect.md
@@ -31,7 +31,7 @@ Google has pretty much ended support for the old Google+ login API’s and Steve
* Download the GoogleService-Info.plist file into your project’s native/ios directory
-This is the super short version… Steve updated the [developer guide section on Google connect](/manual/misc-features.html) with a longer more detailed explanation of the steps.
+This is the super short version… Steve updated the [developer guide section on Google connect](/developer-guide/miscellaneous-features/) with a longer more detailed explanation of the steps.
### Fractional Padding/Margin
diff --git a/docs/website/content/blog/game-builder-2d-platformer.md b/docs/website/content/blog/game-builder-2d-platformer.md
index 5445c8c3396..caa18808c6a 100644
--- a/docs/website/content/blog/game-builder-2d-platformer.md
+++ b/docs/website/content/blog/game-builder-2d-platformer.md
@@ -10,7 +10,7 @@ feed_html: ')
+> I’ve just tested that a Popup Dialog works fine also with an Android skin, thank you! About the Popup Dialog, isn’t the developer guide section "Styling The Arrow Of The Popup Dialog" more valid? Should this part of the developer guide be changed? Link: [https://www.codenameone.com…]()
>
diff --git a/docs/website/content/blog/in-a-pinch.md b/docs/website/content/blog/in-a-pinch.md
index 16d65bb81e8..58554299842 100644
--- a/docs/website/content/blog/in-a-pinch.md
+++ b/docs/website/content/blog/in-a-pinch.md
@@ -123,7 +123,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Hi,
> there is a code sample within the JavaDocs that covers just that use case: [https://www.codenameone.com…]()
> It’s also included in the developer guide section of the ImageViewer:
-> [https://www.codenameone.com…]()
+> [https://www.codenameone.com…]()
>
diff --git a/docs/website/content/blog/intercepting-urls-on-ios-android.md b/docs/website/content/blog/intercepting-urls-on-ios-android.md
index d2cb62e190a..1c8fc3ce4b6 100644
--- a/docs/website/content/blog/intercepting-urls-on-ios-android.md
+++ b/docs/website/content/blog/intercepting-urls-on-ios-android.md
@@ -133,7 +133,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> So, my questions are if this post is still update and if it’s correctly formatted (it’s not clear if the build arguments for Android and iOS are in only one row).
>
> I suppose that the build arguments are the ones described in "Sending Arguments To The Build Server", is it right?
-> [https://www.codenameone.com…]()
+> [https://www.codenameone.com…]()
>
> Thank you.
>
@@ -168,7 +168,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
>
> I don’t recall this at all, it’s been 4 years since I wrote that so no idea…
>
-> This isn’t mentioned in the developer guide section though: [https://www.codenameone.com…]()
+> This isn’t mentioned in the developer guide section though: [https://www.codenameone.com…]()
>
diff --git a/docs/website/content/blog/invite-link-through-app-store.md b/docs/website/content/blog/invite-link-through-app-store.md
index b4cee50a282..3bac9835ae7 100644
--- a/docs/website/content/blog/invite-link-through-app-store.md
+++ b/docs/website/content/blog/invite-link-through-app-store.md
@@ -114,7 +114,7 @@ Enable Associated Domains and the App Clip on your App ID. Register the App Grou
Finally, register an **Advanced App Clip Experience** in App Store Connect for the invite prefix shown by the console. Authorizing a domain and mapping its URL to an App Clip are separate steps. Without the experience, the link won't offer the expected clip card.
-If you already ship your own App Clip, `ios.invite.appClip=false` disables generation. Your clip then needs to write the expected handoff. The [Analytics guide](https://www.codenameone.com/developer-guide/) covers the build hints and lifecycle in its invitation section.
+If you already ship your own App Clip, `ios.invite.appClip=false` disables generation. Your clip then needs to write the expected handoff. The [Analytics guide](/developer-guide/analytics/#analytics-invites) covers the build hints and lifecycle in its invitation section.
## Attribute what happened after installation
diff --git a/docs/website/content/blog/javascript-port-cross-origin-hints-bugs.md b/docs/website/content/blog/javascript-port-cross-origin-hints-bugs.md
index b8d7ee3e89a..9689f939d84 100644
--- a/docs/website/content/blog/javascript-port-cross-origin-hints-bugs.md
+++ b/docs/website/content/blog/javascript-port-cross-origin-hints-bugs.md
@@ -15,14 +15,14 @@ When building to the JavaScript target there are many build options and configur
issues like cross origin need server side code that would be able to proxy such requests to make the
client side code seamless…
-Steve wrote a rather detailed [appendix to the developer guide](/manual/appendix-javascript.html)
+Steve wrote a rather detailed [appendix to the developer guide](/developer-guide/working-with-javascript/)\
covering all of those options from startup splash screen configuration to servlet proxy logic. The build also generates
a ready to deploy WAR file which should make setting this up on any Java servlet container a nobrainer.
During our work on the developer guide for 3.0 we updated the
-[build hints section](/manual/advanced-topics.html) with many
+[build hints section](/developer-guide/advanced-topics-under-the-hood/#_sending_arguments_to_the_build_server) with many\
previously undocumented hints and also updated the
-[theme constants section](/manual/advanced-theming.html#_theme_constants) in a similar way.
+[theme constants section](/developer-guide/advanced-theming/#theme-constants-section) in a similar way.\
Hopefully, this will allow us to keep them up to date more easily as we add them in the future. This week
we also updated the Codename One Designer constants combo box with all the documented constants.
@@ -101,7 +101,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> shannah78 says:
>
-> Are the POST requests being sent to the same host as the index.html file is being served on, or a different server? If a different server, you’ll need to set a proxy servlet as described here [https://www.codenameone.com…]()
+> Are the POST requests being sent to the same host as the index.html file is being served on, or a different server? If a different server, you’ll need to set a proxy servlet as described here [https://www.codenameone.com…]()
>
> The Javascript port will be in beta by July.
>
diff --git a/docs/website/content/blog/library-update-nativeinterface-generics.md b/docs/website/content/blog/library-update-nativeinterface-generics.md
index 91d1725b3c2..4b0166fa97e 100644
--- a/docs/website/content/blog/library-update-nativeinterface-generics.md
+++ b/docs/website/content/blog/library-update-nativeinterface-generics.md
@@ -58,7 +58,7 @@ result is really nice.
We are on the brink of 700 pages for the developer guide and I think we’ll finish just shy of 1000 for this iteration.
This work is taking some time but it’s totally worth the effort as the level of the documentation is at a league
-of its own. E.g. check out the IO section in the guide [here](/manual/files-storage-networking/).
+of its own. E.g. check out the IO section in the guide [here](/developer-guide/io/).\
The original was remarkably bare and didn’t cover so many basic things that should be covered e.g.
the webservice wizard, [SliderBridge](/javadoc/com/codename1/components/SliderBridge/)
etc…
diff --git a/docs/website/content/blog/mac-appstore-builds-device-farms.md b/docs/website/content/blog/mac-appstore-builds-device-farms.md
index e20a84920ed..5e67778dcaa 100644
--- a/docs/website/content/blog/mac-appstore-builds-device-farms.md
+++ b/docs/website/content/blog/mac-appstore-builds-device-farms.md
@@ -15,7 +15,7 @@ Steve has been pretty busy. We have new support for Mac Appstore builds as part
### Mac Builds
-In order to use these changes you’ll need to install the latest release candidate for Codename One which includes an updated version of Codename One Settings. Once you do that check out [this new section](/manual/appendix-mac.html) of the developer guide that covers the process of building and signing the Mac app.
+In order to use these changes you’ll need to install the latest release candidate for Codename One which includes an updated version of Codename One Settings. Once you do that check out [this new section](/developer-guide/working-with-mac-os-x/) of the developer guide that covers the process of building and signing the Mac app.
Mac OS is locked down to some degree and if you ship an app outside of the app store you might run into problems. With this you can get the same benefit as you would get with itunes for iOS app sales on the Mac desktop. Since we already support UWP shipping through the Microsoft Windows Store is already possible.
diff --git a/docs/website/content/blog/map-string-performance-javascript-native.md b/docs/website/content/blog/map-string-performance-javascript-native.md
index 6c037c58240..0ea1f9496ee 100644
--- a/docs/website/content/blog/map-string-performance-javascript-native.md
+++ b/docs/website/content/blog/map-string-performance-javascript-native.md
@@ -30,7 +30,7 @@ which reduces CPU usage and potential stuttering.
#### JavaScript Native
We’ve made some updates to the developer guide specifically a lot of details related to the
-[JavaScript section](/manual/appendix-javascript.html) and information on the native interfaces
+[JavaScript section](/developer-guide/working-with-javascript/) and information on the native interfaces\
for JavaScript. This is important if you want to access the JavaScript code directly which means you need to
regenerate native interfaces for older cn1libs to be compatible. If you don’t do that compilation with such
libraries can result in a compilation error.
diff --git a/docs/website/content/blog/metal-and-skins.md b/docs/website/content/blog/metal-and-skins.md
index 78398d03c4f..9661d6f17b5 100644
--- a/docs/website/content/blog/metal-and-skins.md
+++ b/docs/website/content/blog/metal-and-skins.md
@@ -151,7 +151,7 @@ Apple-iPhone-16-Pro.skin/
skin.properties # platform metadata, safe-area, PPI, display rect
```
-The full developer-guide chapter at [Skin-Designer.asciidoc](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/Skin-Designer.asciidoc) walks through every stage with annotated screenshots and documents the `skin.properties` keys the wizard writes (`roundScreen`, `displayX/Y/Width/Height`, `safePortrait*`, `safeLandscape*`, `overrideNames`, system font families, PPI, and pixel ratio).
+The full developer-guide chapter at [Skin-Designer.asciidoc](/developer-guide/skin-designer/) walks through every stage with annotated screenshots and documents the `skin.properties` keys the wizard writes (`roundScreen`, `displayX/Y/Width/Height`, `safePortrait*`, `safeLandscape*`, `overrideNames`, system font families, PPI, and pixel ratio).
### Eating our own dog food
diff --git a/docs/website/content/blog/native-desktop-windows.md b/docs/website/content/blog/native-desktop-windows.md
index 85b4d200746..01e70466f20 100644
--- a/docs/website/content/blog/native-desktop-windows.md
+++ b/docs/website/content/blog/native-desktop-windows.md
@@ -265,7 +265,7 @@ The security work follows the same discipline. Document Provider exposes a named
Our security lead comes from those defaults. Ordinary cross-platform code starts with a narrow capability, an explicit failure mode, and no silent fallback that widens access. Compiler-checked `@Hardening` and `@IosPrivacy` settings also remove a class of silent configuration failure before a build leaves the machine. App Hardening raises the cost of modifying the binary. App Shield moves the final trust decision to the backend. The APIs in this release make the safer choice available before an application drops into native code.
-Start by updating the two repository lists in your POM. Then open the [desktop windows guide](/developer-guide/#_desktop_windows) and run the inspector example in a desktop build.
+Start by updating the two repository lists in your POM. Then open the [desktop windows guide](/developer-guide/desktop-windows/#_desktop_windows) and run the inspector example in a desktop build.
---
diff --git a/docs/website/content/blog/new-animation-manager.md b/docs/website/content/blog/new-animation-manager.md
index 2b655f79b09..4655faa888e 100644
--- a/docs/website/content/blog/new-animation-manager.md
+++ b/docs/website/content/blog/new-animation-manager.md
@@ -112,7 +112,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Shai Almog says:
>
> Hi Diamond,
-> we haven’t made it into a full fledged demo but I did add a shorter standalone section on this into the Toolbar javadocs and the developer guide: [https://www.codenameone.com…]()
+> we haven’t made it into a full fledged demo but I did add a shorter standalone section on this into the Toolbar javadocs and the developer guide: [https://www.codenameone.com…]()
>
diff --git a/docs/website/content/blog/new-developer-guide.md b/docs/website/content/blog/new-developer-guide.md
index 9cf3defc867..1d7e400621d 100644
--- a/docs/website/content/blog/new-developer-guide.md
+++ b/docs/website/content/blog/new-developer-guide.md
@@ -11,7 +11,7 @@ author: Shai Almog

-We are rebuilding the [developer guide](/manual/) using JBake and asciidoc which means the guide would be better integrated
+We are rebuilding the [developer guide](/developer-guide/) using JBake and asciidoc which means the guide would be better integrated\
into the website thus providing more accessible hyperlinkable information. This is already making its way into
the site and into the PDF so we’d appreciate feedback.
diff --git a/docs/website/content/blog/new-html-developer-guide-how-do-i.md b/docs/website/content/blog/new-html-developer-guide-how-do-i.md
index e29cb970d6a..c258ca10cbb 100644
--- a/docs/website/content/blog/new-html-developer-guide-how-do-i.md
+++ b/docs/website/content/blog/new-html-developer-guide-how-do-i.md
@@ -46,7 +46,7 @@ pdftohtml.net
which did a pretty decent job except for our logo. We now removed the scribd document and are only maintaining the
[
guide here
-](/manual/)
+](/developer-guide/)\
.
diff --git a/docs/website/content/blog/new-preferences-command-state-localization-locking.md b/docs/website/content/blog/new-preferences-command-state-localization-locking.md
index 8f6f687b71e..d21a5c03d43 100644
--- a/docs/website/content/blog/new-preferences-command-state-localization-locking.md
+++ b/docs/website/content/blog/new-preferences-command-state-localization-locking.md
@@ -82,7 +82,7 @@ Image locking is an esoteric performance implementation detail that most of you
If you don’t care about the nitty gritty skip this section, for those of you who care and don’t know what I’m talking
about you can
-[read this section and sidebar in the developer guide](/manual/graphics/#_encodedimage).
+[read this section and sidebar in the developer guide](/developer-guide/graphics/#_encodedimage).
In the coming update we fixed issue [#1746](https://github.com/codenameone/CodenameOne/issues/1746) to
also lock other button states (this was very visible with things like toggle buttons). But the main change was
diff --git a/docs/website/content/blog/new-skins-san-francisco-font.md b/docs/website/content/blog/new-skins-san-francisco-font.md
index 073b09e77ab..a50364e5e7a 100644
--- a/docs/website/content/blog/new-skins-san-francisco-font.md
+++ b/docs/website/content/blog/new-skins-san-francisco-font.md
@@ -140,7 +140,7 @@ One caveat is italic which still uses the Helvetica Neue font. The syntax for ge
One of the reasons I gave for the new skins lack of status bar is the trend OS’s have taken to hide the status bar from view. Since iOS 7 developers were expected to deliver an app that runs under the status bar. Our solution for that was including a bit of default padding on the top of the `Form` in iOS to push the content down.
-Android still has a status bar and most apps still use it, you can customize the colors of the Android status bar using the `colors.xml` as explained [here](/manual/advanced-topics.html). However, up until now we didn’t support hidden status bars.
+Android still has a status bar and most apps still use it, you can customize the colors of the Android status bar using the `colors.xml` as explained [here](/developer-guide/advanced-topics-under-the-hood/). However, up until now we didn’t support hidden status bars.
We just introduced the build hint `android.hideStatusBar` which you can set to `true`. This will make the status bar seem transparent which will allow a more consistent UX with your iOS version.
diff --git a/docs/website/content/blog/nfc-crypto-biometrics-and-build-cloud.md b/docs/website/content/blog/nfc-crypto-biometrics-and-build-cloud.md
index 7062b0076bc..d583cf7df90 100644
--- a/docs/website/content/blog/nfc-crypto-biometrics-and-build-cloud.md
+++ b/docs/website/content/blog/nfc-crypto-biometrics-and-build-cloud.md
@@ -304,7 +304,7 @@ The community got there first. The combination of bug reports, screenshots from
So instead of forcing the flip on a deadline, we are now going to flip it when the regression list reads zero. That will not be very long — within one to three weeks at the pace we are closing things — and the apps that flip first will land on a Metal default that has been tested against more real screens than any rendering migration we have done before.
-If you are one of the developers who flipped the hint, took screenshots, and filed issues over the past two weeks: **thank you**. Keep doing it. The Metal pipeline is going to ship as the default in materially better shape than it would have without you. If you have not flipped it yet, [the build hint is still](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/Working-With-iOS.asciidoc) `ios.metal=true`. We would still love your screens through it.
+If you are one of the developers who flipped the hint, took screenshots, and filed issues over the past two weeks: **thank you**. Keep doing it. The Metal pipeline is going to ship as the default in materially better shape than it would have without you. If you have not flipped it yet, [the build hint is still](/developer-guide/working-with-ios/) `ios.metal=true`. We would still love your screens through it.
## Wrapping up
diff --git a/docs/website/content/blog/parse-update-faster-windows-desktop-uwp-guide.md b/docs/website/content/blog/parse-update-faster-windows-desktop-uwp-guide.md
index 8f7a8b40689..378e476064d 100644
--- a/docs/website/content/blog/parse-update-faster-windows-desktop-uwp-guide.md
+++ b/docs/website/content/blog/parse-update-faster-windows-desktop-uwp-guide.md
@@ -40,7 +40,7 @@ to get this to the smoothness enjoyed by other platforms. We will also need to r
settings for UWP builds have become far more challenging.
This level of complexity justified a new developer guide section dedicated to UWP, this is still under active
-development but you can follow it on [our website here](/manual/appendix-uwp.html) or in the
+development but you can follow it on [our website here](/developer-guide/working-with-uwp/) or in the\
[wiki](https://github.com/codenameone/CodenameOne/wiki/Working-with-UWP)
that hosts the entire developer guide (which you can
[help us write/edit](/blog/wiki-parparvm-performance-actionevent-type.html) !).
diff --git a/docs/website/content/blog/performance-true-story.md b/docs/website/content/blog/performance-true-story.md
index 096cd88c252..63448452b35 100644
--- a/docs/website/content/blog/performance-true-story.md
+++ b/docs/website/content/blog/performance-true-story.md
@@ -122,7 +122,7 @@ Performance is a chase that never ends. It’s non-trivial and always changes on
The nice thing about cross platform tools is that once you optimize something on Android this often maps back to iOS etc. giving you a nice cross platform boost.
-Some performance tips are generic and you can check them out in [our developer guide](/manual/) but performance is basically application specific. We wouldn’t have seen the `ShareButton` issue since the overhead is so small. But once we used `ShareButton` in an app where we created hundreds of buttons it became an issue…
+Some performance tips are generic and you can check them out in [our developer guide](/developer-guide/performance/) but performance is basically application specific. We wouldn’t have seen the `ShareButton` issue since the overhead is so small. But once we used `ShareButton` in an app where we created hundreds of buttons it became an issue…
---
## Archived Comments
diff --git a/docs/website/content/blog/platform-apis-in-the-core.md b/docs/website/content/blog/platform-apis-in-the-core.md
index 586ac6f4c77..333457aa63b 100644
--- a/docs/website/content/blog/platform-apis-in-the-core.md
+++ b/docs/website/content/blog/platform-apis-in-the-core.md
@@ -250,7 +250,7 @@ view.setInputListener(userText -> {
> shipped when this post was published. Vision, language services, and LiteRT
> inference have since moved into core with builder-selected native
> dependencies; Whisper and Stable Diffusion remain cn1libs. See
-> [AI, Chat UI, and Speech](https://www.codenameone.com/developer-guide/#_ai_chat_ui_and_speech)
+> [AI, Chat UI, and Speech](/developer-guide/ai-and-speech/#_ai_chat_ui_and_speech)
> for the current APIs and migration guidance.
The core LLM stack is paired with a set of opt-in cn1libs that wrap specific on-device capabilities: Google ML Kit features, the TensorFlow Lite runtime, a local Whisper transcription engine, and an on-device Stable Diffusion model. Thirteen new cn1libs ship this release.
@@ -481,7 +481,7 @@ The cn1libs above are specialized verticals. Barcode scanning, document scanning
The Stable Diffusion cn1lib in particular is large enough that the cloud build server cannot accept the upload at all (it trips the 2 GB pre-upload guard). That kind of opt-in does not belong in a dependency every app inherits.
-The corresponding chapter, including the full `LlmClient` API table, the `ChatView` reference, the `SecureStorage` overloads, the simulator Ollama redirect, and the full cn1lib coverage, is at [AI, Chat UI, and Speech](https://www.codenameone.com/developer-guide/#_ai_chat_ui_and_speech) in the developer guide.
+The corresponding chapter, including the full `LlmClient` API table, the `ChatView` reference, the `SecureStorage` overloads, the simulator Ollama redirect, and the full cn1lib coverage, is at [AI, Chat UI, and Speech](/developer-guide/ai-and-speech/#_ai_chat_ui_and_speech) in the developer guide.
## OAuth and OIDC: the modern identity stack
@@ -602,7 +602,7 @@ W3C JSON wire format in both directions, so the response can be POSTed verbatim
One thing worth pulling out before you reach for it: if you sign in via OIDC against Google, Apple, Microsoft, Auth0, or Firebase, you usually already *get* passkeys for free. The identity provider runs the WebAuthn ceremony inside the system browser; OIDC just hands you the resulting tokens. So you do not need `WebAuthnClient` for that case. You need it for apps that run their own relying-party backend, and for apps driving the Auth0 or Firebase passkey grants directly.
-Full chapter: [Authentication and Identity](https://www.codenameone.com/developer-guide/#_authentication_and_identity).
+Full chapter: [Authentication and Identity](/developer-guide/authentication-and-identity/#authentication-and-identity).
## Connectivity: WiFi, Bonjour, USB, network-type listeners
@@ -637,7 +637,7 @@ iOS does not expose programmatic WiFi scanning to third-party apps; `scan()` thr
Three new compile-time defines (`CN1_INCLUDE_WIFI_INFO`, `CN1_INCLUDE_HOTSPOT`, `CN1_INCLUDE_BONJOUR`) wrap the iOS native code, set only when the classpath scanner sees the matching Java API in use. Apps that do not use these APIs do not pay for them at App Store review time. Same pattern as the NFC gating from the previous release.
-Full reference: [Network Connectivity](https://www.codenameone.com/developer-guide/#_network_connectivity).
+Full reference: [Network Connectivity](/developer-guide/network-connectivity/#_deeper_network_connectivity).
## Share-sheet result callbacks
diff --git a/docs/website/content/blog/portable-3d-graphics-api.md b/docs/website/content/blog/portable-3d-graphics-api.md
index 1990b064350..64a8d3b2bb6 100644
--- a/docs/website/content/blog/portable-3d-graphics-api.md
+++ b/docs/website/content/blog/portable-3d-graphics-api.md
@@ -105,7 +105,7 @@ A portable 3D API is useful on its own, for product viewers, data visualization,
If you render something and it doesn't look right on one of the backends, please [file an issue](https://github.com/codenameone/CodenameOne/issues) with the model or code attached. Five GPU backends mean five ways for an edge case to hide, and real reports are how the generators improve.
-The new [3D Graphics and Shaders chapter](/developer-guide/#_3d_graphics_and_shaders) in the developer guide covers both API levels in depth, including the shader generation model and per-platform notes. [Friday's release post](/blog/native-java-win32-3d-gaming-printing-and-wallet/) has the full index of this week's posts, and {{< post-link path="/blog/game-development-api-box2d" text="tomorrow's post" >}} builds games on top of this API.
+The new [3D Graphics and Shaders chapter](/developer-guide/3d-graphics/#_3d_graphics_and_shaders) in the developer guide covers both API levels in depth, including the shader generation model and per-platform notes. [Friday's release post](/blog/native-java-win32-3d-gaming-printing-and-wallet/) has the full index of this week's posts, and {{< post-link path="/blog/game-development-api-box2d" text="tomorrow's post" >}} builds games on top of this API.
---
diff --git a/docs/website/content/blog/questions-of-the-week-xxvii.md b/docs/website/content/blog/questions-of-the-week-xxvii.md
index 6577b99b3b7..6446473ce11 100644
--- a/docs/website/content/blog/questions-of-the-week-xxvii.md
+++ b/docs/website/content/blog/questions-of-the-week-xxvii.md
@@ -51,7 +51,7 @@ We just showed how deeply you can customize the sidemenu in the
### Codenameone app version issue
-When you use a [build hint](/manual/advanced-topics.html) like `android.versionCode` you need to pay close
+When you use a [build hint](/developer-guide/advanced-topics-under-the-hood/#_sending_arguments_to_the_build_server) like `android.versionCode` you need to pay close\
attention. It’s best to avoid that specific hint…
[Read on stackoverflow…](http://stackoverflow.com/questions/39946836/codenameone-app-version-issue)
diff --git a/docs/website/content/blog/questions-of-the-week-xxviii.md b/docs/website/content/blog/questions-of-the-week-xxviii.md
index ba79ed82e9b..c41cdac3a51 100644
--- a/docs/website/content/blog/questions-of-the-week-xxviii.md
+++ b/docs/website/content/blog/questions-of-the-week-xxviii.md
@@ -16,7 +16,7 @@ certificate wizard (Apple tightened TLS access) there was hardly anything major
a lot of our efforts on refining our offering on all fronts e.g.
[better demos](/sql-playground-sql-tutorial-in-the-browser-iphone-ios-android-windows/),
[themes](/blog/template-clean-modern-ui-kit.html),
-[docs](/manual/), [compatibility](/blog/file-url-java-mobile-compatibility.html) and
+[docs](/developer-guide/), [compatibility](/blog/file-url-java-mobile-compatibility.html) and\
[tools](/blog/further-refined-cross-platform-mobile-gui-builder.html).
Things will probably stay relatively easy until November although I think a big focus will shift into handling
diff --git a/docs/website/content/blog/rounded-corners-shadows-and-gradients-with-css.md b/docs/website/content/blog/rounded-corners-shadows-and-gradients-with-css.md
index c5d8ebaebc2..0178f12b593 100644
--- a/docs/website/content/blog/rounded-corners-shadows-and-gradients-with-css.md
+++ b/docs/website/content/blog/rounded-corners-shadows-and-gradients-with-css.md
@@ -207,7 +207,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Shai Almog says:
>
-> I was thinking more about this: [https://www.codenameone.com…]()
+> I was thinking more about this: [https://www.codenameone.com…]()
>
> Notice that the article you linked appeared here first: [http://www.codenameone.com/…]()
>
diff --git a/docs/website/content/blog/security-section.md b/docs/website/content/blog/security-section.md
index 5c0fdc47db0..b9f4954dff6 100644
--- a/docs/website/content/blog/security-section.md
+++ b/docs/website/content/blog/security-section.md
@@ -13,7 +13,7 @@ author: Shai Almog
We’ve had a lot of security related posts in the past few months as we refined many edge cases with some customers. These posts are difficult to comb through as they are all over the place, and it’s hard to get a glance of "what’s available."
-So we added a new [security section](/developer-guide#_security) to the developer guide which adds some general information about Codename One security and includes most of the details about what you can do in terms of security.
+So we added a new [security section](/developer-guide/security/#_security) to the developer guide which adds some general information about Codename One security and includes most of the details about what you can do in terms of security.
If you have any ideas or notice anything missing don’t forget that you can edit every section of the developer guide in [our wiki](/blog/wiki-parparvm-performance-actionevent-type.html) and this includes the security section which is available [in the wiki here](https://github.com/codenameone/CodenameOne/wiki/security).
diff --git a/docs/website/content/blog/skills-java17-and-theme-accents.md b/docs/website/content/blog/skills-java17-and-theme-accents.md
index 2136efc0993..ef858104edb 100644
--- a/docs/website/content/blog/skills-java17-and-theme-accents.md
+++ b/docs/website/content/blog/skills-java17-and-theme-accents.md
@@ -56,7 +56,7 @@ Override the constants inside the `#Constants` block of your own `theme.css`:
That is it. Every accent-bearing UIID picks up the new color. Light and dark are independent (`--accent-color` vs `--accent-color-dark`), and partial overrides are fine; anything you do not redeclare stays at the framework default. Material 3 has a couple of additional container-tier constants for the elevated-surface tone; iOS ignores those.
-There is also a runtime path for dynamic theming (in-app accent toggles, branded flavors, A/B tests). It uses the same constants. The Native Themes chapter of the developer guide covers it in detail, along with the full iOS and Android constant tables and the places where the binding system intentionally does not apply: [Accent palette override](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/Native-Themes.asciidoc#accent-palette-override).
+There is also a runtime path for dynamic theming (in-app accent toggles, branded flavors, A/B tests). It uses the same constants. The Native Themes chapter of the developer guide covers it in detail, along with the full iOS and Android constant tables and the places where the binding system intentionally does not apply: [Accent palette override](/developer-guide/native-themes/#_accent_palette_override).
The point worth pulling out: the parts of theming that do not change per app (which UIIDs participate in the accent palette, which states they expose, which dark-mode counterparts they have) live inside the framework and stay there. The parts that do change per app (your colors) live in your project as five constants and nothing else. That is the whole reason this change exists.
@@ -90,7 +90,7 @@ Accepted values are `sRGB` (default), `displayP3`, `deviceRGB`, `linearSRGB`, `e
codename1.arg.ios.metal.colorSpace=displayP3
```
-The hint is dormant when `ios.metal=false`, so existing GL builds are unchanged. Unrecognized values produce a warning log and fall back to sRGB. Documented under [Working-With-iOS.asciidoc](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/Working-With-iOS.asciidoc).
+The hint is dormant when `ios.metal=false`, so existing GL builds are unchanged. Unrecognized values produce a warning log and fall back to sRGB. Documented under [Working-With-iOS.asciidoc](/developer-guide/working-with-ios/).
### The new `translateMatrix` API
@@ -132,7 +132,7 @@ If you have an app that needs the legacy launch-time behavior, a backwards-compa
codename1.arg.ios.notificationPermissionAtLaunch=true
```
-The default is `false`, so existing apps that did not opt in pick up the new behavior on next rebuild. Documented in [Push-Notifications.asciidoc](https://github.com/codenameone/CodenameOne/blob/master/docs/developer-guide/Push-Notifications.asciidoc). The cloud-side build server change shipped as [BuildDaemon #71](https://github.com/codenameone/BuildDaemon/pull/71), so local and cloud builds match.
+The default is `false`, so existing apps that did not opt in pick up the new behavior on next rebuild. Documented in [Push-Notifications.asciidoc](/developer-guide/push-notifications/). The cloud-side build server change shipped as [BuildDaemon #71](https://github.com/codenameone/BuildDaemon/pull/71), so local and cloud builds match.
One thing to flag if you are updating an existing iOS app: if your onboarding flow was relying on the launch-time prompt happening automatically, your prompt now never fires unless `Push.register()` or `LocalNotification.schedule()` is invoked somewhere. That is almost certainly what you want, but check that the call lands.
diff --git a/docs/website/content/blog/sql-explorer-global-toolbar-location-docs.md b/docs/website/content/blog/sql-explorer-global-toolbar-location-docs.md
index e5dc67aba3c..37005bc20fc 100644
--- a/docs/website/content/blog/sql-explorer-global-toolbar-location-docs.md
+++ b/docs/website/content/blog/sql-explorer-global-toolbar-location-docs.md
@@ -13,7 +13,7 @@ author: Shai Almog
I was working on documenting the SQLite support in Codename One, you can see some of that work both in the
[db package](/javadoc/com/codename1/db/package-summary/) and in the
-[developer guide](/manual/files-storage-networking/). As a demo for
+[developer guide](/developer-guide/io/). As a demo for\
SQL I decided to just create a tool that allows you to type arbitrary SQL to execute it on the device and see
the results in a `Table`…
diff --git a/docs/website/content/blog/sqlite-portable-encrypted.md b/docs/website/content/blog/sqlite-portable-encrypted.md
index 905a1c7ad1b..5c7242a8c8c 100644
--- a/docs/website/content/blog/sqlite-portable-encrypted.md
+++ b/docs/website/content/blog/sqlite-portable-encrypted.md
@@ -223,7 +223,7 @@ App Shield moves trust decisions to the backend. App Hardening raises the cost o
We want Codename One to lead cross-platform development on security. That requires more than adding isolated security switches. The safe path must be available from ordinary application code, included only when used, and tested on every target we claim to support. This week's encrypted database and tapjacking work move two more boundaries into that default path.
-Start with the [storage encryption guide](/developer-guide/#_storage_encryption) if you have data at rest to migrate. Existing Ant applications should set `db.legacy` explicitly before moving to Maven. Applications with WebSQL-era browser data need an export plan before taking the new JavaScript engine.
+Start with the [storage encryption guide](/developer-guide/security/#_storage_encryption) if you have data at rest to migrate. Existing Ant applications should set `db.legacy` explicitly before moving to Maven. Applications with WebSQL-era browser data need an export plan before taking the new JavaScript engine.
---
diff --git a/docs/website/content/blog/storage-migration.md b/docs/website/content/blog/storage-migration.md
index 3c1bfc93509..5bc3146d609 100644
--- a/docs/website/content/blog/storage-migration.md
+++ b/docs/website/content/blog/storage-migration.md
@@ -48,7 +48,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Shai Almog says:
>
> Yes it should be true/false (notice its not yet on the servers and will be there before the weekend).
-> We already documented it in the manual section: [http://www.codenameone.com/…]()
+> We already documented it in the manual section: [http://www.codenameone.com/…]()
>
diff --git a/docs/website/content/blog/stream-apis-spm-tutorial-trail-and-uwp.md b/docs/website/content/blog/stream-apis-spm-tutorial-trail-and-uwp.md
index 003330132f7..bd1833c5b87 100644
--- a/docs/website/content/blog/stream-apis-spm-tutorial-trail-and-uwp.md
+++ b/docs/website/content/blog/stream-apis-spm-tutorial-trail-and-uwp.md
@@ -56,7 +56,7 @@ Third, this removes one of the obvious "yes, but..." answers when discussing mod
## Swift Package Manager Support
-The other big update is that we added Swift Package Manager support to Codename One, and documented it in the [Working with iOS section of the developer guide](/developer-guide/#_using_swift_package_manager).
+The other big update is that we added Swift Package Manager support to Codename One, and documented it in the [Working with iOS section of the developer guide](/developer-guide/working-with-ios/#_using_swift_package_manager).
The first thing to understand is that for existing projects, nothing should suddenly change. The default behavior is the compatibility mode, `auto`, so older projects that already use CocoaPods should just keep working.
@@ -114,7 +114,7 @@ It also helps to think of the SPM hints as the rough equivalent of the CocoaPods
The mapping is not one-to-one because CocoaPods thinks in terms of pods and pod sources, while SPM thinks in terms of packages and exported products. But conceptually they solve the same problem: bringing an external native dependency into the generated iOS project.
-Another important detail is debugging. As documented in the [native source debugging section](/developer-guide/#_on_device_debugging), you should now open the `.xcworkspace` whenever it is generated, not just for CocoaPods builds. That workspace is no longer exclusive to CocoaPods. It can also be the right entry point for SPM-based or mixed dependency setups.
+Another important detail is debugging. As documented in the [native source debugging section](/developer-guide/advanced-topics-under-the-hood/#_on_device_debugging), you should now open the `.xcworkspace` whenever it is generated, not just for CocoaPods builds. That workspace is no longer exclusive to CocoaPods. It can also be the right entry point for SPM-based or mixed dependency setups.
## Tutorial Trail Refresh
@@ -142,7 +142,7 @@ With Codename One `7.0.229`, released on March 20, 2026, we are officially remov
This is really an acknowledgment of reality more than a sudden functional change.
-The UWP port has already been treated as historical in the updated documentation, including the [developer guide](/developer-guide/), the [historical UWP chapter](/developer-guide/#_working_with_uwp), and the related notes in push documentation. New Maven templates and current project generation flows should not keep advertising a target that we no longer consider part of the supported day to day path.
+The UWP port has already been treated as historical in the updated documentation, including the [developer guide](/developer-guide/working-with-uwp/), the [historical UWP chapter](/developer-guide/working-with-uwp/#_working_with_uwp), and the related notes in push documentation. New Maven templates and current project generation flows should not keep advertising a target that we no longer consider part of the supported day to day path.
That said, it is important to highlight one subtle point: the UWP build servers are still functioning for legacy cases. So if you have an older codebase and you absolutely need to keep it alive, this is not a statement that those servers suddenly vanished overnight.
diff --git a/docs/website/content/blog/switching-on-android-marshmallow-permission-prompts.md b/docs/website/content/blog/switching-on-android-marshmallow-permission-prompts.md
index 3d603d4b00e..f1cfcd0b4ac 100644
--- a/docs/website/content/blog/switching-on-android-marshmallow-permission-prompts.md
+++ b/docs/website/content/blog/switching-on-android-marshmallow-permission-prompts.md
@@ -30,7 +30,7 @@ This means that by default the new permission mode is still off and you won’t
We will probably change this to be the default in the future but at the moment the target SDK defaults to 21. To
activate this functionality you will need to set the target SDK to level 23 by using the
-[build hint](/manual/advanced-topics.html)
+[build hint](/developer-guide/advanced-topics-under-the-hood/#_sending_arguments_to_the_build_server)\
`android.targetSDKVersion=23`.
### How Does This Look?
diff --git a/docs/website/content/blog/tip-disable-google-play-services.md b/docs/website/content/blog/tip-disable-google-play-services.md
index 8bc60800474..a0e24c4e5d5 100644
--- a/docs/website/content/blog/tip-disable-google-play-services.md
+++ b/docs/website/content/blog/tip-disable-google-play-services.md
@@ -29,7 +29,7 @@ In fact one of the services we include is the ads service and Google notices tha
produces a warning if you add an app with the ads framework but declare that you don’t have ads, this small
trick removes it.
-Check out the [build hints](/manual/advanced-topics.html) section in the developer guide for more information on how you can deeply customize
+Check out the [build hints](/developer-guide/advanced-topics-under-the-hood/#_sending_arguments_to_the_build_server) section in the developer guide for more information on how you can deeply customize\
Codename One.
---
diff --git a/docs/website/content/blog/tutorial-crash-protection.md b/docs/website/content/blog/tutorial-crash-protection.md
index 4c8ca7bc992..101e1a6523c 100644
--- a/docs/website/content/blog/tutorial-crash-protection.md
+++ b/docs/website/content/blog/tutorial-crash-protection.md
@@ -41,7 +41,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
>
> 1\. Is there a code that automatically catches (and reports by e-mail) all exceptions in all threads, not only in the EDT?
>
-> 2\. In the manual, section "Logging & Crash Protection", at the page: [https://www.codenameone.com…]() , there are the following two lines of code: I don’t understood if it makes sense use them in conjunction with Log.bindCrashProtection(true)
+> 2\. In the manual, section "Logging & Crash Protection", at the page: [https://www.codenameone.com…]() , there are the following two lines of code: I don’t understood if it makes sense use them in conjunction with Log.bindCrashProtection(true)
>
> Log.setReportingLevel(Log.REPORTING_DEBUG);
> DefaultCrashReporter.init(true, 2);
diff --git a/docs/website/content/blog/tutorial-storage-file-system-sql.md b/docs/website/content/blog/tutorial-storage-file-system-sql.md
index bf6b10d7f9e..526e9f8beee 100644
--- a/docs/website/content/blog/tutorial-storage-file-system-sql.md
+++ b/docs/website/content/blog/tutorial-storage-file-system-sql.md
@@ -11,7 +11,7 @@ author: Shai Almog

-[Storage](/manual/files-storage-networking.html) is one of the big subjects we can delve into and never come out. Even without going into offshoots such as parsing, networking etc. it’s still a pretty huge subject. We tried to simplify a lot of these problems by splitting file system from storage in Codename One but this often caused a different type of confusion.
+[Storage](/developer-guide/io/) is one of the big subjects we can delve into and never come out. Even without going into offshoots such as parsing, networking etc. it’s still a pretty huge subject. We tried to simplify a lot of these problems by splitting file system from storage in Codename One but this often caused a different type of confusion.
Because I tried to keep the video very simple I also didn’t get into too many samples or variations e.g. no externalization or other interesting discussions. I specifically avoided those as with properties this becomes far easier but I also think these might make the video harder/longer.
diff --git a/docs/website/content/blog/understanding-the-table-component.md b/docs/website/content/blog/understanding-the-table-component.md
index 914d42c1090..b03a910c412 100644
--- a/docs/website/content/blog/understanding-the-table-component.md
+++ b/docs/website/content/blog/understanding-the-table-component.md
@@ -12,7 +12,7 @@ author: Shai Almog

[Table](/javadoc/com/codename1/ui/table/Table/) is a composite component
-(but it isn’t a [lead component](/manual/components/#lead-component-sidebar)),
+(but it isn’t a [lead component](/developer-guide/the-components-of-codename-one/#lead-component-sidebar)),\
this means it is a subclass of [Container](/javadoc/com/codename1/ui/Container/).
It’s effectively built from multiple components.
diff --git a/docs/website/content/blog/unleading-mutating-accordion.md b/docs/website/content/blog/unleading-mutating-accordion.md
index 50250ebcee1..d101a4cbd9b 100644
--- a/docs/website/content/blog/unleading-mutating-accordion.md
+++ b/docs/website/content/blog/unleading-mutating-accordion.md
@@ -16,7 +16,7 @@ it in a demo for which it was very suitable. As we were working with it we disco
core methods to remove an `Accordion` entry or change its title. But worse, was the fact that a delete button in
the title wouldn’t work!
The crux of the issue is in the fact that
-[lead component](/manual/misc-features/#lead-component-section)
+[lead component](/developer-guide/miscellaneous-features/#lead-component-section)\
doesn’t support excluding a specific component within the hierarchy from its behavior so we set about to fix that…
We added two new methods to the `Component` class: `setBlockLead(boolean)` & `isBlockLead()`.
diff --git a/docs/website/content/blog/using-the-new-gui-builder.md b/docs/website/content/blog/using-the-new-gui-builder.md
index f53e0ffb5d9..07239f789da 100644
--- a/docs/website/content/blog/using-the-new-gui-builder.md
+++ b/docs/website/content/blog/using-the-new-gui-builder.md
@@ -197,7 +197,7 @@ UI is represented as:
In this section we won’t try to discuss layouts in depth as this is a deep and complex subject. You can read
more about the properties of the Codename One layouts in
-[the developer guide](/manual/basics/).
+[the developer guide](/developer-guide/basics/).
In general layouts define the mathematical logic for component positions that we can then apply to the
resolutions supported by the devices. If we didn’t have layouts the UI wouldn’t fit on the multitude of devices
@@ -911,7 +911,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
> Shai Almog says:
>
-> Sure, it’s in the developer guide: [https://www.codenameone.com…]() just open it Images -> Add
+> Sure, it’s in the developer guide: [https://www.codenameone.com…]() just open it Images -> Add
>
diff --git a/docs/website/content/blog/voip-vpn-builders.md b/docs/website/content/blog/voip-vpn-builders.md
index f8689f6f4f7..2064489c4e7 100644
--- a/docs/website/content/blog/voip-vpn-builders.md
+++ b/docs/website/content/blog/voip-vpn-builders.md
@@ -252,7 +252,7 @@ This week stretches Codename One in both directions. Calls, VPN profiles, AppKit
Secure-by-default programming depends on small public APIs, generated native integration, explicit platform limits, and fewer opportunities to turn a convenience feature into permanent access. You still own the application UI and the protocol choices. The builders absorb the native product plumbing needed to ship them.
-Start with the [Call Management](/developer-guide/#_call_management) or [VPN](/developer-guide/#_vpn) chapter, then test the failure path in the simulator before sending a native build.
+Start with the [Call Management](/developer-guide/call-management/#_call_management) or [VPN](/developer-guide/vpn/#_vpn) chapter, then test the failure path in the simulator before sending a native build.
---
diff --git a/docs/website/content/blog/wiki-parparvm-performance-actionevent-type.md b/docs/website/content/blog/wiki-parparvm-performance-actionevent-type.md
index d4f0a307780..a959b64d1c3 100644
--- a/docs/website/content/blog/wiki-parparvm-performance-actionevent-type.md
+++ b/docs/website/content/blog/wiki-parparvm-performance-actionevent-type.md
@@ -129,7 +129,7 @@ _This post was automatically migrated from the legacy Codename One blog. The ori
>
> We already got a great set of edits there from [https://github.com/Isborg]() who did an amazing job at fixing a lot of my mistakes! So I’m pretty happy.
>
-> This wasn’t clear in the article above but [https://www.codenameone.com…]() and the generated PDF will still work exactly as before. The only difference is that we now generate them from the wiki sources. So the source in the wiki won’t necessarily be 100% correct since they didn’t go thru our validation but the manual should still work as expected. I explained our PDF generation workflow and placed the code back in the day within the jbake user group but it might warrant better docs especially with the work we’d like to do moving forward. I think we need to invest a lot in the look and feel of the developer guide/javadocs.
+> This wasn’t clear in the article above but [https://www.codenameone.com…]() and the generated PDF will still work exactly as before. The only difference is that we now generate them from the wiki sources. So the source in the wiki won’t necessarily be 100% correct since they didn’t go thru our validation but the manual should still work as expected. I explained our PDF generation workflow and placed the code back in the day within the jbake user group but it might warrant better docs especially with the work we’d like to do moving forward. I think we need to invest a lot in the look and feel of the developer guide/javadocs.
>
> I placed a right side navigation panel very similar to the existing manual which should be pretty intuitive too.
>
diff --git a/docs/website/content/blog/xcode-26-migration-and-localization-bundles.md b/docs/website/content/blog/xcode-26-migration-and-localization-bundles.md
index 591a1b7a8f8..1a776b4944a 100644
--- a/docs/website/content/blog/xcode-26-migration-and-localization-bundles.md
+++ b/docs/website/content/blog/xcode-26-migration-and-localization-bundles.md
@@ -30,7 +30,7 @@ The new Initializr now generates localization bundles as part of project creatio
That means i18n starts as part of the default app flow instead of becoming cleanup work later on. We also fixed follow-up l10n path issues and updated CSS tooling so localization directories are detected and passed correctly to the compiler/watch workflow.
-If you haven’t looked at localization recently, we now support property resource bundles as part of the standard workflow. This is documented in the [Developer Guide](/manual/), and it aligns much better with modern project structure.
+If you haven’t looked at localization recently, we now support property resource bundles as part of the standard workflow. This is documented in the [Developer Guide](/developer-guide/miscellaneous-features/#_localization_manager), and it aligns much better with modern project structure.
Another detail that is easy to miss: Codename One has implicit localization behavior. When a resource bundle is installed, `Label` text (and subclasses of [`Label`](/javadoc/com/codename1/ui/Label/)) is localized automatically by key unless you explicitly disable it for a specific component.
diff --git a/docs/website/content/cn1libs.md b/docs/website/content/cn1libs.md
index 430232bc7e5..32a8ac3029e 100644
--- a/docs/website/content/cn1libs.md
+++ b/docs/website/content/cn1libs.md
@@ -18,4 +18,4 @@ To submit your own library, open a pull request in the source repository:
[github.com/codenameone/CodenameOneLibs](https://github.com/codenameone/CodenameOneLibs)
For format details, see the developer guide section on libraries:
-[Developer Guide: Libraries (cn1lib)](/manual/advanced-topics.html#_libraries_cn1lib)
+[Developer Guide: Libraries (cn1lib)](/developer-guide/advanced-topics-under-the-hood/#_libraries_cn1lib)
diff --git a/docs/website/content/codename-one-3-0-release-notes.md b/docs/website/content/codename-one-3-0-release-notes.md
index befbad1ba5d..73675b5daf2 100644
--- a/docs/website/content/codename-one-3-0-release-notes.md
+++ b/docs/website/content/codename-one-3-0-release-notes.md
@@ -82,7 +82,7 @@ A new "modless" dialog that can "float" on top of the UI using the layered pane
Significantly enhanced developer guide
-We redid the developer guide from the ground up converting it to asciidoc and integrating it into the website in a more fluent way. We increased its breadth by over 50%. Check it our [here](/manual/) or download the [pdf](/files/developer-guide.pdf).
+We redid the developer guide from the ground up converting it to asciidoc and integrating it into the website in a more fluent way. We increased its breadth by over 50%. Check it our [here](/developer-guide/) or download the [pdf](/files/developer-guide.pdf).
iOS Beta Test Support (testflight)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/001-introduction.md b/docs/website/content/courses/course-01-java-for-mobile-devices/001-introduction.md
index 73e566ed7a0..0ca9e0f8b37 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/001-introduction.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/001-introduction.md
@@ -28,5 +28,5 @@ The best way to use this course is to keep a project open while you read. Run th
- [Getting Started](/getting-started/)
- [Initializr](/initializr/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/introduction/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/003-core-concepts-of-mobile-development.md b/docs/website/content/courses/course-01-java-for-mobile-devices/003-core-concepts-of-mobile-development.md
index 46a35075cf2..4b6df724aca 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/003-core-concepts-of-mobile-development.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/003-core-concepts-of-mobile-development.md
@@ -31,7 +31,7 @@ The broader lesson is that mobile work rewards adaptability. You do not control
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/introduction/)
- [Build Server](/build-server/)
- [How Do I Fetch An Image From The Resource File, Add A Multiimage](/how-do-i/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage/)
- [How Do I Create A 9 Piece Image Border](/how-do-i/how-do-i-create-a-9-piece-image-border/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/004-what-is-codename-one.md b/docs/website/content/courses/course-01-java-for-mobile-devices/004-what-is-codename-one.md
index e996117d425..acd84c7cd91 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/004-what-is-codename-one.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/004-what-is-codename-one.md
@@ -31,7 +31,7 @@ If you are trying to decide whether Codename One is "just Java for mobile", the
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/introduction/)
- [Getting Started](/getting-started/)
- [Build Server](/build-server/)
- [Moving To Maven](/blog/moving-to-maven/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/005-anatomy-of-a-codename-one-application.md b/docs/website/content/courses/course-01-java-for-mobile-devices/005-anatomy-of-a-codename-one-application.md
index 864a02182d5..ae5f4dfc2c7 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/005-anatomy-of-a-codename-one-application.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/005-anatomy-of-a-codename-one-application.md
@@ -31,7 +31,7 @@ So the real anatomy of a Codename One application is simpler than it first appea
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [Getting Started](/getting-started/)
- [Build Server](/build-server/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/006-internationalization-and-localization.md b/docs/website/content/courses/course-01-java-for-mobile-devices/006-internationalization-and-localization.md
index e85d25514e1..240fe568fce 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/006-internationalization-and-localization.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/006-internationalization-and-localization.md
@@ -31,7 +31,7 @@ The video uses the older designer workflow to define bundles and RTL markers. Th
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/miscellaneous-features/#_localization_manager)
- [Themeing](/themeing/)
- [Layout Basics](/layout-basics/)
- [Properties Are Amazing](/blog/properties-are-amazing/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/007-layout-basics.md b/docs/website/content/courses/course-01-java-for-mobile-devices/007-layout-basics.md
index 71da22f6cbe..e6772099a17 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/007-layout-basics.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/007-layout-basics.md
@@ -32,6 +32,6 @@ The modern adjustment is not in the layout system itself so much as in how you s
## Further Reading
- [Layout Basics](/layout-basics/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/#layout-managers)
- [Themeing](/themeing/)
- [Getting Started](/getting-started/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/008-theme-basics.md b/docs/website/content/courses/course-01-java-for-mobile-devices/008-theme-basics.md
index ba407df0d02..d45f5c438cd 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/008-theme-basics.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/008-theme-basics.md
@@ -32,6 +32,6 @@ Theme constants and other lower-level theme settings still matter, especially wh
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/)
- [How Do I Create A Simple Theme](/how-do-i/how-do-i-create-a-simple-theme/)
- [Work With Multi Images And Device Densities](/how-do-i/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design.md b/docs/website/content/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design.md
index 4efa68e5335..90c6eb920d4 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design.md
@@ -33,7 +33,7 @@ The best way to adapt a design in Codename One today is to treat the mockup as a
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-theming/)
- [Themeing](/themeing/)
- [Layout Basics](/layout-basics/)
- [How Do I Create A 9 Piece Image Border](/how-do-i/how-do-i-create-a-9-piece-image-border/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/010-storage-filesystem-and-sql.md b/docs/website/content/courses/course-01-java-for-mobile-devices/010-storage-filesystem-and-sql.md
index e68822e3cf2..1d3888fa085 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/010-storage-filesystem-and-sql.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/010-storage-filesystem-and-sql.md
@@ -31,6 +31,6 @@ The modern recommendation is mostly about choosing the simplest layer that fits
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt.md b/docs/website/content/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt.md
index 2103c44954e..8d0b7cc18ad 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt.md
@@ -31,7 +31,7 @@ Once you adopt that model, threading stops being an abstract theory lesson and b
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-edt-event-dispatch-thread/)
- [How Do I Access Remote Webservices, Perform Operations On The Server](/how-do-i/how-do-i-access-remote-webservices-perform-operations-on-the-server/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
- [How Do I Find Problems In My Application Using The Codename One Tools And The Standard IDE Tools](/how-do-i/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/012-understanding-properties.md b/docs/website/content/courses/course-01-java-for-mobile-devices/012-understanding-properties.md
index cabb6beee41..89ea7f0c883 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/012-understanding-properties.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/012-understanding-properties.md
@@ -29,6 +29,6 @@ So the best way to think about properties is as a productivity tool for model-dr
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/#_properties)
- [Properties Are Amazing](/blog/properties-are-amazing/)
- [How Do I Use Storage, File System And SQL](/how-do-i/how-do-i-use-storage-file-system-sql/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/013-push-notification.md b/docs/website/content/courses/course-01-java-for-mobile-devices/013-push-notification.md
index c17a5a78740..c2a6f9bf53c 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/013-push-notification.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/013-push-notification.md
@@ -31,7 +31,7 @@ Push types also need to be chosen deliberately. Visible notification types are u
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/push-notifications/)
- [Build Hints](/build-hints/)
- [Build Server](/build-server/)
- [How Do I Use Crash Protection? Get Device Logs?](/how-do-i/how-do-i-use-crash-protection-get-device-logs/)
diff --git a/docs/website/content/courses/course-01-java-for-mobile-devices/014-native-interfaces-access-native-device-features.md b/docs/website/content/courses/course-01-java-for-mobile-devices/014-native-interfaces-access-native-device-features.md
index 86b6638eb33..8fb6bb927c1 100644
--- a/docs/website/content/courses/course-01-java-for-mobile-devices/014-native-interfaces-access-native-device-features.md
+++ b/docs/website/content/courses/course-01-java-for-mobile-devices/014-native-interfaces-access-native-device-features.md
@@ -33,7 +33,7 @@ The hard part of native interfaces is often not the code itself but the configur
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [Build Hints](/build-hints/)
- [Build Server](/build-server/)
- [How Do I Access Native Device Functionality? Invoke Native Interfaces?](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/001-working-with-css.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/001-working-with-css.md
index 6db2b0048eb..09e1c5701f8 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/001-working-with-css.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/001-working-with-css.md
@@ -37,6 +37,6 @@ Once you approach the topic that way, the rest falls into place. Layouts define
- [Themeing](/themeing/)
- [Designer](/designer/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/css/)
- [Layout Basics](/layout-basics/)
- [Moving To Maven](/blog/moving-to-maven/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/002-introduction-to-spring-boot.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/002-introduction-to-spring-boot.md
index 044d222cdb7..5434b3132d6 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/002-introduction-to-spring-boot.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/002-introduction-to-spring-boot.md
@@ -29,6 +29,6 @@ The key outcome of this lesson is not "install Spring Boot." It is understanding
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/backend/)
- [How Do I Access Remote Webservices, Perform Operations On The Server](/how-do-i/how-do-i-access-remote-webservices-perform-operations-on-the-server/)
- [Connecting to a Web Service](/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service.md
index 9a3a6322ed0..47eee8ee3e0 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service.md
@@ -29,7 +29,7 @@ This lesson also highlights a broader truth about mobile networking: the app is
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [How Do I Access Remote Webservices, Perform Operations On The Server](/how-do-i/how-do-i-access-remote-webservices-perform-operations-on-the-server/)
- [How Do I Use HTTP, Sockets, Webservices & Websockets](/how-do-i/how-do-i-use-http-sockets-webservices-websockets/)
- [Threading and the EDT](/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/004-introduction.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/004-introduction.md
index 73e7e4a5094..7bf526798f5 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/004-introduction.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/004-introduction.md
@@ -27,7 +27,7 @@ In the lessons that follow, the design gets broken down into manageable parts: a
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/)
- [Themeing](/themeing/)
- [Layout Basics](/layout-basics/)
- [How Do I Create A 9 Piece Image Border](/how-do-i/how-do-i-create-a-9-piece-image-border/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/006-css.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/006-css.md
index 44f23c7ade1..dc293595cee 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/006-css.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/006-css.md
@@ -32,6 +32,6 @@ So the practical workflow is straightforward. Build the screen structure in Java
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/css/)
- [Working With CSS](/courses/course-02-deep-dive-mobile-development-with-codename-one/001-working-with-css/)
- [How Do I Create A Simple Theme](/how-do-i/how-do-i-create-a-simple-theme/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/007-baseform.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/007-baseform.md
index d6987dc2dd4..b718cf854e7 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/007-baseform.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/007-baseform.md
@@ -29,7 +29,7 @@ So the practical lesson is simple: if several screens share the same top bar, ba
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [Layout Basics](/layout-basics/)
- [Adapting a UI Design](/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design/)
- [CSS](/courses/course-02-deep-dive-mobile-development-with-codename-one/006-css/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/010-introduction.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/010-introduction.md
index 0215d1a6a3a..c35c75d4994 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/010-introduction.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/010-introduction.md
@@ -27,7 +27,7 @@ So this module is really about design judgment in a programmer's context. You al
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [Adapting a UI Design](/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design/)
- [How Do I Create Gorgeous SideMenu](/how-do-i/how-do-i-create-gorgeous-sidemenu/)
- [Themeing](/themeing/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/011-the-new-forms.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/011-the-new-forms.md
index a468193cab0..d84051254a4 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/011-the-new-forms.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/011-the-new-forms.md
@@ -29,7 +29,7 @@ This lesson also reinforces something developers often underweight: taste is par
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [Themeing](/themeing/)
- [Adapting a UI Design](/courses/course-01-java-for-mobile-devices/009-adapting-a-ui-design/)
- [How Do I Create Gorgeous SideMenu](/how-do-i/how-do-i-create-gorgeous-sidemenu/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/012-fixing-the-checkout-experience.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/012-fixing-the-checkout-experience.md
index 80bb93a5101..4518ceb66ef 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/012-fixing-the-checkout-experience.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/012-fixing-the-checkout-experience.md
@@ -29,6 +29,6 @@ So if a checkout UI feels elegant but does not let the user edit the order natur
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [How Do I Create A List Of Items The Easy Way](/how-do-i/how-do-i-create-a-list-of-items-the-easy-way/)
- [Threading and the EDT](/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/014-code-changes-and-summary.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/014-code-changes-and-summary.md
index 740abc4e715..001ecb54b38 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/014-code-changes-and-summary.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/014-code-changes-and-summary.md
@@ -29,7 +29,7 @@ So the summary of this lesson is that extending a UI from mockup to working app
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [How Do I Take A Picture With The Camera](/how-do-i/how-do-i-take-a-picture-with-the-camera/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/015-overview-and-basic-model.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/015-overview-and-basic-model.md
index 6549909d3b3..0bcfcda6442 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/015-overview-and-basic-model.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/015-overview-and-basic-model.md
@@ -29,6 +29,6 @@ The result of this first architecture pass is not a grand framework. It is a cle
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [Connecting to a Web Service](/courses/course-02-deep-dive-mobile-development-with-codename-one/003-connecting-to-a-web-service/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/016-integration-and-summary.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/016-integration-and-summary.md
index 1e108175006..288ed38b4cb 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/016-integration-and-summary.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/016-integration-and-summary.md
@@ -27,7 +27,7 @@ The wider lesson here is that good architecture does not need to arrive all at o
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [Overview and Basic Model](/courses/course-02-deep-dive-mobile-development-with-codename-one/015-overview-and-basic-model/)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [How Do I Localize/Translate My Application, Apply i18n/l10n to My App](/how-do-i/how-do-i-localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/017-the-native-interface-callback.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/017-the-native-interface-callback.md
index 155dd1b12d4..122ac7ccdfb 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/017-the-native-interface-callback.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/017-the-native-interface-callback.md
@@ -29,6 +29,6 @@ So the real takeaway from this lesson is not "copy this payment bridge." It is "
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/018-dependencies-gradle-and-cocoapods.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/018-dependencies-gradle-and-cocoapods.md
index f28b8cbcdad..ccefd279314 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/018-dependencies-gradle-and-cocoapods.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/018-dependencies-gradle-and-cocoapods.md
@@ -27,6 +27,6 @@ Native dependency management is not glamorous, but it is part of the cost of cro
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Get Repeatable Builds, Build Against A Consistent Version Of Codename One & Use The Versioning Feature](/how-do-i/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/019-the-native-code.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/019-the-native-code.md
index 078d8b24716..c0a25ef0c5a 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/019-the-native-code.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/019-the-native-code.md
@@ -29,7 +29,7 @@ So the modern version of this advice is: prototype in the native IDE when needed
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
- [Threading and the EDT](/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/020-introduction-and-generic-code.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/020-introduction-and-generic-code.md
index 8440fa7c8c8..e451dea3ee8 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/020-introduction-and-generic-code.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/020-introduction-and-generic-code.md
@@ -27,6 +27,6 @@ One modern point worth stating explicitly: if there is already a maintained Code
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Take A Picture With The Camera](/how-do-i/how-do-i-take-a-picture-with-the-camera/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/021-implementing-the-native-camera-on-android.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/021-implementing-the-native-camera-on-android.md
index 15f44824c23..3ee83ba0798 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/021-implementing-the-native-camera-on-android.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/021-implementing-the-native-camera-on-android.md
@@ -29,6 +29,6 @@ So the Android side is not just "translate methods one by one." It is "translate
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/miscellaneous-features/#_capture_photos_video_audio)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/022-camera-ios-port-basics.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/022-camera-ios-port-basics.md
index cef914f2800..03b1f7c8e5b 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/022-camera-ios-port-basics.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/022-camera-ios-port-basics.md
@@ -29,6 +29,6 @@ So the lesson here is not about becoming an iOS media expert overnight. It is ab
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/working-with-ios/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/023-arc-and-view-on-ios.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/023-arc-and-view-on-ios.md
index 19525fbb399..d44425634ec 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/023-arc-and-view-on-ios.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/023-arc-and-view-on-ios.md
@@ -29,6 +29,6 @@ So the point of this lesson is not really ARC trivia for its own sake. It is und
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/working-with-ios/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [Camera iOS Port Basics](/courses/course-02-deep-dive-mobile-development-with-codename-one/022-camera-ios-port-basics/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/024-capture-and-callbacks-in-ios.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/024-capture-and-callbacks-in-ios.md
index 4648d227505..82bbf977b3c 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/024-capture-and-callbacks-in-ios.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/024-capture-and-callbacks-in-ios.md
@@ -27,6 +27,6 @@ This lesson also reinforces why patience matters more than heroics in native wor
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/miscellaneous-features/#_capture_photos_video_audio)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/026-address-and-validation.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/026-address-and-validation.md
index 81ac3b6315d..8b98553cfde 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/026-address-and-validation.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/026-address-and-validation.md
@@ -29,6 +29,6 @@ So the key lesson is that checkout forms are not just a place to gather input. T
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/027-categories-and-search.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/027-categories-and-search.md
index cc9db1483d0..d392166d1b9 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/027-categories-and-search.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/027-categories-and-search.md
@@ -28,5 +28,5 @@ The important product lesson here is that finishing the app does not mean ignori
## Further Reading
- [How Do I Create A List Of Items The Easy Way](/how-do-i/how-do-i-create-a-list-of-items-the-easy-way/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [Communicating with the Server](/courses/course-02-deep-dive-mobile-development-with-codename-one/025-communicating-with-the-server/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/028-security-basics-and-certificate-pinning.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/028-security-basics-and-certificate-pinning.md
index 307fb8a2132..baebbf9bb94 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/028-security-basics-and-certificate-pinning.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/028-security-basics-and-certificate-pinning.md
@@ -29,6 +29,6 @@ The practical takeaway is that mobile security should be layered. Protect transp
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/security/)
- [Storage Encryption and Misc Security Features](/courses/course-02-deep-dive-mobile-development-with-codename-one/029-storage-encryption-and-misc-security-features/)
- [How Do I Access Remote Webservices, Perform Operations On The Server](/how-do-i/how-do-i-access-remote-webservices-perform-operations-on-the-server/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/029-storage-encryption-and-misc-security-features.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/029-storage-encryption-and-misc-security-features.md
index c2b48dfbc85..5819337b5e8 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/029-storage-encryption-and-misc-security-features.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/029-storage-encryption-and-misc-security-features.md
@@ -27,6 +27,6 @@ So the practical rule for these features is simple: use them when they protect s
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/security/#_storage_encryption)
- [Security Basics and Certificate Pinning](/courses/course-02-deep-dive-mobile-development-with-codename-one/028-security-basics-and-certificate-pinning/)
- [How Do I Use Crash Protection, Get Device Logs](/how-do-i/how-do-i-use-crash-protection-get-device-logs/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation.md
index 5484a4a92db..1bf6d9b0752 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation.md
@@ -27,6 +27,6 @@ So the right starting point for maps in Codename One is not "drop in a map widge
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maps/)
- [How Do I Access Native Device Functionality, Invoke Native Interfaces](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
- [Communicating with the Server](/courses/course-02-deep-dive-mobile-development-with-codename-one/025-communicating-with-the-server/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/031-hello-world-and-devices.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/031-hello-world-and-devices.md
index f27341a7973..48df2a9b384 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/031-hello-world-and-devices.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/031-hello-world-and-devices.md
@@ -28,5 +28,5 @@ So the real goal here is not just to get a map on screen. It is to make sure the
## Further Reading
- [Introduction and Installation](/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maps/)
- [Markers, Lightweight Overlays and Map Layout](/courses/course-02-deep-dive-mobile-development-with-codename-one/032-markers-lightweight-overlays-and-map-layout/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/032-markers-lightweight-overlays-and-map-layout.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/032-markers-lightweight-overlays-and-map-layout.md
index fbbe7f6031d..c186c0d439e 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/032-markers-lightweight-overlays-and-map-layout.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/032-markers-lightweight-overlays-and-map-layout.md
@@ -27,6 +27,6 @@ So the lesson here is that built-in markers are fine when they are enough, but d
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maps/)
- [Introduction and Installation](/courses/course-02-deep-dive-mobile-development-with-codename-one/030-introduction-and-installation/)
- [Hello World and Devices](/courses/course-02-deep-dive-mobile-development-with-codename-one/031-hello-world-and-devices/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup.md
index aa834b2a044..01c0540c8fe 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup.md
@@ -27,6 +27,6 @@ So this lesson is best read as an anatomy-of-the-platform walkthrough for advanc
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [How Do I Get Repeatable Builds, Build Against A Consistent Version Of Codename One & Use The Versioning Feature](/how-do-i/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature/)
- [How Do I Use Offline Build](/how-do-i/how-do-i-use-offline-build/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/034-running-the-kitchen-sink-in-the-simulator.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/034-running-the-kitchen-sink-in-the-simulator.md
index 4e7e5de1f95..61989108945 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/034-running-the-kitchen-sink-in-the-simulator.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/034-running-the-kitchen-sink-in-the-simulator.md
@@ -26,5 +26,5 @@ This is another reason direct-source work should be treated as an advanced mode.
## Further Reading
- [Introduction and Setup](/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/035-building-a-desktop-version-of-the-kitchen-sink.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/035-building-a-desktop-version-of-the-kitchen-sink.md
index a0badf90601..7a7f35700eb 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/035-building-a-desktop-version-of-the-kitchen-sink.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/035-building-a-desktop-version-of-the-kitchen-sink.md
@@ -27,6 +27,6 @@ So the main value here is architectural. A desktop wrapper is just one more exam
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [Running the Kitchen Sink in the Simulator](/courses/course-02-deep-dive-mobile-development-with-codename-one/034-running-the-kitchen-sink-in-the-simulator/)
- [How Do I Use Desktop Javascript Ports](/how-do-i/how-do-i-use-desktop-javascript-ports/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/036-building-an-android-native-version-of-the-kitchen-sink.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/036-building-an-android-native-version-of-the-kitchen-sink.md
index 4f11efc9504..d6da05d614d 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/036-building-an-android-native-version-of-the-kitchen-sink.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/036-building-an-android-native-version-of-the-kitchen-sink.md
@@ -25,6 +25,6 @@ This is one more reason the normal hosted or standard build flow remains the rig
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [Introduction and Setup](/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup/)
- [How Do I Use Offline Build](/how-do-i/how-do-i-use-offline-build/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/037-build-an-ios-native-version-of-the-kitchen-sink.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/037-build-an-ios-native-version-of-the-kitchen-sink.md
index c33c451a6ab..e4889e557a6 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/037-build-an-ios-native-version-of-the-kitchen-sink.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/037-build-an-ios-native-version-of-the-kitchen-sink.md
@@ -25,6 +25,6 @@ So the lesson here is the same as the Android one, but even more visible. Workin
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/signing/)
- [Introduction and Setup](/courses/course-02-deep-dive-mobile-development-with-codename-one/033-introduction-and-setup/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/038-what-is-performance-breaking-down-the-problem.md b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/038-what-is-performance-breaking-down-the-problem.md
index c7a25041930..7a71715f1f2 100644
--- a/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/038-what-is-performance-breaking-down-the-problem.md
+++ b/docs/website/content/courses/course-02-deep-dive-mobile-development-with-codename-one/038-what-is-performance-breaking-down-the-problem.md
@@ -29,6 +29,6 @@ So the best way to start performance work is to classify the problem. Is it rend
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/performance/)
- [Threading and the EDT](/courses/course-01-java-for-mobile-devices/011-threading-and-the-edt/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
diff --git a/docs/website/content/courses/course-03-build-real-world-full-stack-mobile-apps-java/004-architecture-of-mockup.md b/docs/website/content/courses/course-03-build-real-world-full-stack-mobile-apps-java/004-architecture-of-mockup.md
index 76499315df2..4452c09804a 100644
--- a/docs/website/content/courses/course-03-build-real-world-full-stack-mobile-apps-java/004-architecture-of-mockup.md
+++ b/docs/website/content/courses/course-03-build-real-world-full-stack-mobile-apps-java/004-architecture-of-mockup.md
@@ -28,5 +28,5 @@ So the architectural lesson here is not complicated, but it is important. Establ
## Further Reading
- [Base Navigation Form and Shape Effects](/courses/course-03-build-real-world-full-stack-mobile-apps-java/005-base-navigation-form-and-shape-effects/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/)
- [Layout Basics](/layout-basics/)
diff --git a/docs/website/content/demo-camera-demo.md b/docs/website/content/demo-camera-demo.md
index aaf8fbca45f..279574637c8 100644
--- a/docs/website/content/demo-camera-demo.md
+++ b/docs/website/content/demo-camera-demo.md
@@ -26,7 +26,7 @@ Trivial usage of the camera to capture a photo

-Trivial demo showing off usage of the camera via the [Capture API](/manual/misc-features/#_capture_photos_video_audio).
+Trivial demo showing off usage of the camera via the [Capture API](/developer-guide/miscellaneous-features/#_capture_photos_video_audio).
Notice that the JavaScript HTML5 demo is not what we have on the device where applications are translated to native code!
Since Apple doesn’t allow demos on itunes and doesn’t allow installing apps without itunes we can’t distribute the native app demos, you would need to build from source with an itunes demo account.
diff --git a/docs/website/content/developer-guide.md b/docs/website/content/developer-guide/_index.md
similarity index 86%
rename from docs/website/content/developer-guide.md
rename to docs/website/content/developer-guide/_index.md
index c2ae1a49e65..f6f4872ca64 100644
--- a/docs/website/content/developer-guide.md
+++ b/docs/website/content/developer-guide/_index.md
@@ -1,7 +1,7 @@
---
title: "Developer Guide"
description: "Complete Codename One developer documentation."
-layout: "developer-guide"
+layout: "guide-index"
url: "/developer-guide/"
summary: "Codename One developer guide"
---
diff --git a/docs/website/content/developer-guide/single-page.md b/docs/website/content/developer-guide/single-page.md
new file mode 100644
index 00000000000..084feae932a
--- /dev/null
+++ b/docs/website/content/developer-guide/single-page.md
@@ -0,0 +1,7 @@
+---
+title: "Developer Guide — Full Book"
+layout: "developer-guide"
+url: "/developer-guide/single-page/"
+searchHidden: true
+robotsNoIndex: true
+---
diff --git a/docs/website/content/developing-in-codename-one.md b/docs/website/content/developing-in-codename-one.md
index 2efa3e53d6d..776365f1f6a 100644
--- a/docs/website/content/developing-in-codename-one.md
+++ b/docs/website/content/developing-in-codename-one.md
@@ -12,7 +12,7 @@ hero_image: "/uploads/Group-2270.svg"
- [JavaDocs of the API's](/javadoc/)
-- [ Developers Guide (HTML)](/developer-guide)
+- [ Developers Guide (HTML)](/developer-guide/)
- [The Codename One Blog](/blog/)
@@ -33,7 +33,7 @@ hero_image: "/uploads/Group-2270.svg"
- **[Codename One Academy](https://debugagent.com/series/cn1)**
A complete set of free courses that cover everything from basics to full featured real world app development.
-- **[Tutorials & Documentation List](/developer-guide)**
+- **[Tutorials & Documentation List](/developer-guide/)**\
An exhaustive list of tutorials and references in both written and video form.
- **[Tutorial Tag In the Blog](/blog/)**
diff --git a/docs/website/content/development-environment.md b/docs/website/content/development-environment.md
index a2d10ad1409..fa651aa1958 100644
--- a/docs/website/content/development-environment.md
+++ b/docs/website/content/development-environment.md
@@ -149,4 +149,4 @@ Build Codename One apps in the IDE you already know. Keep a single workflow from
- [Developing in Codename One](/developing-in-codename-one/)
- [Codename One Simulator](/codename-one-simulator/)
- [Browse CN1libs](/cn1libs/)
-- [Developer Guide](/developer-guide)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
diff --git a/docs/website/content/google-login.md b/docs/website/content/google-login.md
index c412777932a..fb899c8019a 100644
--- a/docs/website/content/google-login.md
+++ b/docs/website/content/google-login.md
@@ -4,4 +4,4 @@ date: 2015-06-30
slug: "google-login"
---
-The content of this page was out of date. Please check out up to date content in the developer guide [here.](/developer-guide)
+The content of this page was out of date. Please check out up to date content in the developer guide [here.](/developer-guide/authentication-and-identity/#_google_sign_in)
diff --git a/docs/website/content/howdoi/how-do-i-access-native-device-functionality-invoke-native-interfaces.md b/docs/website/content/howdoi/how-do-i-access-native-device-functionality-invoke-native-interfaces.md
index 9d602329a71..851f412dc58 100644
--- a/docs/website/content/howdoi/how-do-i-access-native-device-functionality-invoke-native-interfaces.md
+++ b/docs/website/content/howdoi/how-do-i-access-native-device-functionality-invoke-native-interfaces.md
@@ -34,7 +34,7 @@ For deeper debugging, the include-sources workflow is still useful. When native
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_native_interfaces)
- [Build Hints](/build-hints/)
- [Build Server](/build-server/)
- [Introduction for Android Developers](/introduction-for-android-developers/)
diff --git a/docs/website/content/howdoi/how-do-i-access-remote-webservices-perform-operations-on-the-server.md b/docs/website/content/howdoi/how-do-i-access-remote-webservices-perform-operations-on-the-server.md
index 4c80e3d47da..ae779e46172 100644
--- a/docs/website/content/howdoi/how-do-i-access-remote-webservices-perform-operations-on-the-server.md
+++ b/docs/website/content/howdoi/how-do-i-access-remote-webservices-perform-operations-on-the-server.md
@@ -27,7 +27,7 @@ For a current Codename One project, the practical advice is to design a normal s
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [How Do I Use HTTP, Sockets, Webservices And Websockets](/how-do-i/how-do-i-use-http-sockets-webservices-websockets/)
- [Terse REST API](/blog/terse-rest-api/)
- [REST API Design](/courses/course-03-build-real-world-full-stack-mobile-apps-java/rest-api-design/)
diff --git a/docs/website/content/howdoi/how-do-i-create-a-9-piece-image-border.md b/docs/website/content/howdoi/how-do-i-create-a-9-piece-image-border.md
index 7cc8db6adcf..3f2e56d7128 100644
--- a/docs/website/content/howdoi/how-do-i-create-a-9-piece-image-border.md
+++ b/docs/website/content/howdoi/how-do-i-create-a-9-piece-image-border.md
@@ -30,7 +30,7 @@ The broader lesson is that visual styling should be deliberate. Use the right bo
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-theming/)
- [How Do I Create A Simple Theme](/how-do-i/how-do-i-create-a-simple-theme/)
- [Work With Multi Images And Device Densities](/how-do-i/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage/)
diff --git a/docs/website/content/howdoi/how-do-i-create-a-list-of-items-the-easy-way.md b/docs/website/content/howdoi/how-do-i-create-a-list-of-items-the-easy-way.md
index 85349fe5544..f863819dbe9 100644
--- a/docs/website/content/howdoi/how-do-i-create-a-list-of-items-the-easy-way.md
+++ b/docs/website/content/howdoi/how-do-i-create-a-list-of-items-the-easy-way.md
@@ -30,7 +30,7 @@ The main thing that changed since the video is not the underlying idea but the b
## Further Reading
- [Layout Basics](/layout-basics/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/#_list_multilist_renderers_models)
- [How Do I Positioning Components Using Layout Managers](/how-do-i/how-do-i-positioning-components-using-layout-managers/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
diff --git a/docs/website/content/howdoi/how-do-i-create-a-simple-theme.md b/docs/website/content/howdoi/how-do-i-create-a-simple-theme.md
index 4623762e823..ae8da41e7e0 100644
--- a/docs/website/content/howdoi/how-do-i-create-a-simple-theme.md
+++ b/docs/website/content/howdoi/how-do-i-create-a-simple-theme.md
@@ -34,7 +34,7 @@ Theme constants and other lower-level theme settings still matter, especially wh
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/)
- [Layout Basics](/layout-basics/)
- [Designer](/designer/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/howdoi/how-do-i-create-an-ios-provisioning-profile.md b/docs/website/content/howdoi/how-do-i-create-an-ios-provisioning-profile.md
index 17a6225f98f..1b34579e33b 100644
--- a/docs/website/content/howdoi/how-do-i-create-an-ios-provisioning-profile.md
+++ b/docs/website/content/howdoi/how-do-i-create-an-ios-provisioning-profile.md
@@ -31,7 +31,7 @@ The video is useful as a picture of the overall flow, but the modern thing to re
- [Build Server](/build-server/)
- [Development Environment](/development-environment/)
- [Hello World](/hello-world/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/signing/#certificate-wizard)
## Discussion
diff --git a/docs/website/content/howdoi/how-do-i-create-gorgeous-sidemenu.md b/docs/website/content/howdoi/how-do-i-create-gorgeous-sidemenu.md
index e7f78728842..63d70d15f76 100644
--- a/docs/website/content/howdoi/how-do-i-create-gorgeous-sidemenu.md
+++ b/docs/website/content/howdoi/how-do-i-create-gorgeous-sidemenu.md
@@ -29,7 +29,7 @@ The main modern caution is not to over-invest in ornament if the menu is no long
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/the-components-of-codename-one/)
- [Layout Basics](/layout-basics/)
- [How Do I Create A Simple Theme](/how-do-i/how-do-i-create-a-simple-theme/)
diff --git a/docs/website/content/howdoi/how-do-i-debug-into-codename-one-source-modify-it-contribute-it-back.md b/docs/website/content/howdoi/how-do-i-debug-into-codename-one-source-modify-it-contribute-it-back.md
index 310af0e4c4a..e2032bc49da 100644
--- a/docs/website/content/howdoi/how-do-i-debug-into-codename-one-source-modify-it-contribute-it-back.md
+++ b/docs/website/content/howdoi/how-do-i-debug-into-codename-one-source-modify-it-contribute-it-back.md
@@ -30,7 +30,7 @@ The real educational value here is that the framework source is not off-limits.
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/working-with-codenameone-sources/)
- [How Do I Find Problems In My Application Using The Codename One Tools And The Standard IDE Tools?](/how-do-i/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools/)
- [How Do I Debug On An Android Device](/how-do-i/how-do-i-debug-on-an-android-device/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android Etc.](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
diff --git a/docs/website/content/howdoi/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage.md b/docs/website/content/howdoi/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage.md
index 735fccbd0c5..425c096d072 100644
--- a/docs/website/content/howdoi/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage.md
+++ b/docs/website/content/howdoi/how-do-i-fetch-an-image-from-the-resource-file-add-a-multiimage.md
@@ -28,7 +28,7 @@ The older page talks about fetching images from the resource file through the re
## Further Reading
- [Themeing](/themeing/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/graphics/)
- [How Do I Create A 9 Piece Image Border](/how-do-i/how-do-i-create-a-9-piece-image-border/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
diff --git a/docs/website/content/howdoi/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools.md b/docs/website/content/howdoi/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools.md
index e656a4eda27..bf41c8e92ca 100644
--- a/docs/website/content/howdoi/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools.md
+++ b/docs/website/content/howdoi/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools.md
@@ -31,7 +31,7 @@ The practical lesson is to debug with evidence. Use the debugger for logic, the
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/performance/)
- [Performance Network Monitors](/performance-network-monitors/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
- [How Do I Use Crash Protection? Get Device Logs?](/how-do-i/how-do-i-use-crash-protection-get-device-logs/)
diff --git a/docs/website/content/howdoi/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature.md b/docs/website/content/howdoi/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature.md
index f92008db769..625a7daf2e7 100644
--- a/docs/website/content/howdoi/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature.md
+++ b/docs/website/content/howdoi/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature.md
@@ -66,7 +66,7 @@ You do not need this for every build during day-to-day development. It becomes v
- [Build Server](/build-server/)
- [Moving To Maven](/blog/moving-to-maven/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/advanced-topics-under-the-hood/#_versioned_builds)
- [How Do I Use Offline Build](/how-do-i/how-do-i-use-offline-build/)
## Discussion
diff --git a/docs/website/content/howdoi/how-do-i-handle-eventsnavigation-in-the-gui-builder-populate-the-form-from-code.md b/docs/website/content/howdoi/how-do-i-handle-eventsnavigation-in-the-gui-builder-populate-the-form-from-code.md
index 81f4b9c9179..eef16dd0d22 100644
--- a/docs/website/content/howdoi/how-do-i-handle-eventsnavigation-in-the-gui-builder-populate-the-form-from-code.md
+++ b/docs/website/content/howdoi/how-do-i-handle-eventsnavigation-in-the-gui-builder-populate-the-form-from-code.md
@@ -28,7 +28,7 @@ The modern caveat is that new Codename One projects are usually less GUI-builder
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/events/)
- [Layout Basics](/layout-basics/)
- [How Do I Create A Gorgeous Sidemenu](/how-do-i/how-do-i-create-gorgeous-sidemenu/)
- [How Do I Create A List Of Items](/how-do-i/how-do-i-create-a-list-of-items-the-easy-way/)
diff --git a/docs/website/content/howdoi/how-do-i-improve-application-performance-or-track-down-performance-issues.md b/docs/website/content/howdoi/how-do-i-improve-application-performance-or-track-down-performance-issues.md
index 202d7df1a40..7c3b4b3b22c 100644
--- a/docs/website/content/howdoi/how-do-i-improve-application-performance-or-track-down-performance-issues.md
+++ b/docs/website/content/howdoi/how-do-i-improve-application-performance-or-track-down-performance-issues.md
@@ -30,7 +30,7 @@ The right workflow is to measure first, then optimize. Use the performance tools
## Further Reading
- [Performance Network Monitors](/performance-network-monitors/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/performance/)
- [How Do I Find Problems In My Application, Using The Codename One Tools And The Standard IDE Tools](/how-do-i/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools/)
- [In A Pinch](/blog/in-a-pinch/)
diff --git a/docs/website/content/howdoi/how-do-i-localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app.md b/docs/website/content/howdoi/how-do-i-localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app.md
index 3dfdfd7495a..99e92e28d5a 100644
--- a/docs/website/content/howdoi/how-do-i-localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app.md
+++ b/docs/website/content/howdoi/how-do-i-localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app.md
@@ -31,7 +31,7 @@ The practical goal is not just "translated text". It is an application that feel
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/miscellaneous-features/#_localization_manager)
- [Themeing](/themeing/)
- [Layout Basics](/layout-basics/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/howdoi/how-do-i-positioning-components-using-layout-managers.md b/docs/website/content/howdoi/how-do-i-positioning-components-using-layout-managers.md
index 116ca64f7fc..2657aa84a81 100644
--- a/docs/website/content/howdoi/how-do-i-positioning-components-using-layout-managers.md
+++ b/docs/website/content/howdoi/how-do-i-positioning-components-using-layout-managers.md
@@ -34,7 +34,7 @@ The modern adjustment is not in the layout system itself so much as in how you s
## Further Reading
- [Layout Basics](/layout-basics/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/basics/#layout-managers)
- [Themeing](/themeing/)
- [Getting Started](/getting-started/)
diff --git a/docs/website/content/howdoi/how-do-i-take-a-picture-with-the-camera.md b/docs/website/content/howdoi/how-do-i-take-a-picture-with-the-camera.md
index a2a0cb26bdf..56a5952e204 100644
--- a/docs/website/content/howdoi/how-do-i-take-a-picture-with-the-camera.md
+++ b/docs/website/content/howdoi/how-do-i-take-a-picture-with-the-camera.md
@@ -26,7 +26,7 @@ The modern advice here is mostly about restraint. Capture the image you need, no
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/miscellaneous-features/#_capture_photos_video_audio)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
- [How Do I Use Storage, File System And SQL](/how-do-i/how-do-i-use-storage-file-system-sql/)
diff --git a/docs/website/content/howdoi/how-do-i-use-cloud-connect.md b/docs/website/content/howdoi/how-do-i-use-cloud-connect.md
index 2ac44568999..3731154744f 100644
--- a/docs/website/content/howdoi/how-do-i-use-cloud-connect.md
+++ b/docs/website/content/howdoi/how-do-i-use-cloud-connect.md
@@ -23,7 +23,7 @@ So while the original Cloud Connect workflow is mostly historical now, the reaso
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [Themeing](/themeing/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/howdoi/how-do-i-use-crash-protection-get-device-logs.md b/docs/website/content/howdoi/how-do-i-use-crash-protection-get-device-logs.md
index cef3122cf09..17e17689ab9 100644
--- a/docs/website/content/howdoi/how-do-i-use-crash-protection-get-device-logs.md
+++ b/docs/website/content/howdoi/how-do-i-use-crash-protection-get-device-logs.md
@@ -29,7 +29,7 @@ The key point is that crash reporting works best when it is part of a broader lo
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/crash-protection/)
- [How Do I Find Problems In My Application, Using The Codename One Tools And The Standard IDE Tools](/how-do-i/how-do-i-find-problems-in-my-application-using-the-codename-one-tools-and-the-standard-ide-tools/)
- [How Do I Debug On An Android Device](/how-do-i/how-do-i-debug-on-an-android-device/)
diff --git a/docs/website/content/howdoi/how-do-i-use-desktop-javascript-ports.md b/docs/website/content/howdoi/how-do-i-use-desktop-javascript-ports.md
index fb15db19287..9369f1fcf2b 100644
--- a/docs/website/content/howdoi/how-do-i-use-desktop-javascript-ports.md
+++ b/docs/website/content/howdoi/how-do-i-use-desktop-javascript-ports.md
@@ -28,7 +28,7 @@ The best way to choose between these ports is not to ask which one is more power
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/working-with-javascript/)
- [Introduction For Android Developers](/introduction-for-android-developers/)
- [Hello World](/hello-world/)
diff --git a/docs/website/content/howdoi/how-do-i-use-http-sockets-webservices-websockets.md b/docs/website/content/howdoi/how-do-i-use-http-sockets-webservices-websockets.md
index 00c8c457316..4475626f9ca 100644
--- a/docs/website/content/howdoi/how-do-i-use-http-sockets-webservices-websockets.md
+++ b/docs/website/content/howdoi/how-do-i-use-http-sockets-webservices-websockets.md
@@ -31,7 +31,7 @@ The modern decision tree is fairly simple. If you are calling a normal backend A
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [Terse REST API](/blog/terse-rest-api/)
- [How Do I Access Remote Webservices? Perform Operations On The Server?](/how-do-i/how-do-i-access-remote-webservices-perform-operations-on-the-server/)
- [Performance Network Monitors](/performance-network-monitors/)
diff --git a/docs/website/content/howdoi/how-do-i-use-offline-build.md b/docs/website/content/howdoi/how-do-i-use-offline-build.md
index dc932f30aaf..564be80186b 100644
--- a/docs/website/content/howdoi/how-do-i-use-offline-build.md
+++ b/docs/website/content/howdoi/how-do-i-use-offline-build.md
@@ -15,7 +15,7 @@ Offline build exists for the cases where the Codename One cloud build servers ar
The important mental model is that offline build is not a full replacement for your local native toolchain. It reproduces the translation and project-generation parts of the Codename One build process on your own machine, then hands you native projects that you continue with in Xcode or Android Studio. In other words, offline build gets you from a Codename One project to platform-native project output without using the cloud.
-That means the toolchain requirements matter a lot. You need the native tools installed and working, and you need versions that are compatible with the builder snapshot you are using. The exact list changes over time, so the current [Developer Guide](/developer-guide/) should be treated as the source of truth instead of the version numbers mentioned in the old video.
+That means the toolchain requirements matter a lot. You need the native tools installed and working, and you need versions that are compatible with the builder snapshot you are using. The exact list changes over time, so the current [Developer Guide](/developer-guide/maven-project-workflow/) should be treated as the source of truth instead of the version numbers mentioned in the old video.
The video is also a product of an older setup era, so the specific versions it names for Gradle, Xcode, and related tools should be treated as historical. The durable lessons are different. First, offline build is operationally heavier than cloud build. Second, it depends on more moving parts on your own machine. Third, once you do generate the native projects, you debug and compile them with the platform-native tools exactly as you would expect.
@@ -30,7 +30,7 @@ The main reason to choose offline build is policy, not convenience. It is usuall
## Further Reading
- [Build Server](/build-server/)
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/maven-project-workflow/)
- [How Do I Use The Include Sources Feature To Debug The Native Code On iOS/Android Etc.](/how-do-i/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc/)
- [How Do I Get Repeatable Builds?](/how-do-i/how-do-i-get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning-feature/)
diff --git a/docs/website/content/howdoi/how-do-i-use-properties-to-speed-development.md b/docs/website/content/howdoi/how-do-i-use-properties-to-speed-development.md
index 4b2781f9757..f16a5a09ce3 100644
--- a/docs/website/content/howdoi/how-do-i-use-properties-to-speed-development.md
+++ b/docs/website/content/howdoi/how-do-i-use-properties-to-speed-development.md
@@ -28,7 +28,7 @@ So the best way to think about properties is as a productivity tool for model-dr
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/#_properties)
- [Properties Are Amazing](/blog/properties-are-amazing/)
- [How Do I Use Storage, File System And SQL](/how-do-i/how-do-i-use-storage-file-system-sql/)
diff --git a/docs/website/content/howdoi/how-do-i-use-push-notification-send-server-push-messages.md b/docs/website/content/howdoi/how-do-i-use-push-notification-send-server-push-messages.md
index 4ee2619abd0..9f80553d1f8 100644
--- a/docs/website/content/howdoi/how-do-i-use-push-notification-send-server-push-messages.md
+++ b/docs/website/content/howdoi/how-do-i-use-push-notification-send-server-push-messages.md
@@ -32,7 +32,7 @@ Testing needs a layered approach. First make sure registration succeeds and the
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/push-notifications/)
- [Build Hints](/build-hints/)
- [Build Server](/build-server/)
- [How Do I Use Crash Protection? Get Device Logs?](/how-do-i/how-do-i-use-crash-protection-get-device-logs/)
diff --git a/docs/website/content/howdoi/how-do-i-use-storage-file-system-sql.md b/docs/website/content/howdoi/how-do-i-use-storage-file-system-sql.md
index 875cab8d7dc..5ad865cf3c1 100644
--- a/docs/website/content/howdoi/how-do-i-use-storage-file-system-sql.md
+++ b/docs/website/content/howdoi/how-do-i-use-storage-file-system-sql.md
@@ -29,7 +29,7 @@ The modern recommendation is mostly about choosing the simplest layer that fits
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/io/)
- [How Do I Use Properties To Speed Development](/how-do-i/how-do-i-use-properties-to-speed-development/)
- [How Do I Improve Application Performance Or Track Down Performance Issues](/how-do-i/how-do-i-improve-application-performance-or-track-down-performance-issues/)
diff --git a/docs/website/content/howdoi/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc.md b/docs/website/content/howdoi/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc.md
index a7cc85aecc8..3a9db755d6d 100644
--- a/docs/website/content/howdoi/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc.md
+++ b/docs/website/content/howdoi/how-do-i-use-the-include-sources-feature-to-debug-the-native-code-on-iosandroid-etc.md
@@ -32,7 +32,7 @@ The modern takeaway is simple: use include-sources when the normal simulator or
## Further Reading
-- [Developer Guide](/developer-guide/)
+- [Developer Guide](/developer-guide/on-device-debugging/)
- [Build Server](/build-server/)
- [How Do I Debug On An Android Device](/how-do-i/how-do-i-debug-on-an-android-device/)
- [How Do I Access Native Device Functionality? Invoke Native Interfaces?](/how-do-i/how-do-i-access-native-device-functionality-invoke-native-interfaces/)
diff --git a/docs/website/content/pricing.md b/docs/website/content/pricing.md
index 848cf42c58a..3748c7377a2 100644
--- a/docs/website/content/pricing.md
+++ b/docs/website/content/pricing.md
@@ -70,7 +70,7 @@ Native platform sources may be uploaded when required for native compilation.
Pro and Enterprise plans include a managed crash-reporting service that captures uncaught exceptions in your shipping app, symbolicates the stack trace, and files a deduplicated issue on your own GitHub repository. There is no separate dashboard — you triage from GitHub Issues. Crashes hit by multiple devices roll up into a single issue with a counter and a "last seen" timestamp.
### How do I turn Crash Protection on?
-Add `codename1.crashProtection.enabled=true` to your `codenameone_settings.properties`, install the Codename One Crash Protection GitHub App on the repo you want crashes to land in, and map your package to that repo from `cloud.codenameone.com/console/index.html → Repo mappings`. See the [Developer Guide](/developer-guide) for the full Crash Protection chapter, including the on-device `CrashProtection` API.
+Add `codename1.crashProtection.enabled=true` to your `codenameone_settings.properties`, install the Codename One Crash Protection GitHub App on the repo you want crashes to land in, and map your package to that repo from `cloud.codenameone.com/console/index.html → Repo mappings`. See the [Developer Guide](/developer-guide/crash-protection/) for the full Crash Protection chapter, including the on-device `CrashProtection` API.
### What are the storage limits for Crash Protection?
Symbol bundles (Android `mapping.txt`, iOS dSYM, native-port debug info) are gzipped and stored against your account's quota:
@@ -108,4 +108,4 @@ Volume is measured in validated transactions normalized to USD via daily exchang
It degrades, it never blocks. Once you pass the monthly cap, the service stops server-validating and stops metering for the rest of the month, and the device SDK automatically falls back to store-direct — the store-signed receipt still grants the entitlement locally. **A real purchase is never rejected.** You simply lose the server cross-check and console reporting until the next month (or until you move to a higher plan).
### How do I turn Commerce on?
-It's on by default for cloud builds — there's nothing to wire up, since it reuses the build key your app already carries. Drive purchases through `CommerceManager`, connect your store credentials and notification URLs with the guided **Setup** wizard in the console, and gate features with `CommerceManager.isEntitled("...")`. See the [Developer Guide](/developer-guide) for the full Commerce chapter. To opt out entirely, set the `commerce.cloud.enabled=false` build hint.
+It's on by default for cloud builds — there's nothing to wire up, since it reuses the build key your app already carries. Drive purchases through `CommerceManager`, connect your store credentials and notification URLs with the guided **Setup** wizard in the console, and gate features with `CommerceManager.isEntitled("...")`. See the [Developer Guide](/developer-guide/commerce/) for the full Commerce chapter. To opt out entirely, set the `commerce.cloud.enabled=false` build hint.
diff --git a/docs/website/content/site-map.md b/docs/website/content/site-map.md
index dc700eb29b7..adb2b892ac9 100644
--- a/docs/website/content/site-map.md
+++ b/docs/website/content/site-map.md
@@ -18,7 +18,7 @@ Use this page to quickly navigate the most important parts of the Codename One w
## Documentation
-- [Developer Guide (HTML)](/developer-guide)
+- [Developer Guide (HTML)](/developer-guide/)
- [Developer Guide (PDF)](/files/developer-guide.pdf)
- [JavaDocs](/javadoc/)
- [Build Tools](/build-tools/)
diff --git a/docs/website/layouts/_default/_markup/render-link.html b/docs/website/layouts/_default/_markup/render-link.html
index ea445aefbe1..7469888f382 100644
--- a/docs/website/layouts/_default/_markup/render-link.html
+++ b/docs/website/layouts/_default/_markup/render-link.html
@@ -1,4 +1,4 @@
-{{- $dest := .Destination | safeURL -}}
+{{- $dest := partial "guide-link.html" .Destination | safeURL -}}
{{- $text := .Text | safeHTML -}}
{{- $title := .Title -}}
diff --git a/docs/website/layouts/_default/developer-guide.html b/docs/website/layouts/_default/developer-guide.html
index 8fe10642da9..5f1e1e2336e 100644
--- a/docs/website/layouts/_default/developer-guide.html
+++ b/docs/website/layouts/_default/developer-guide.html
@@ -1,5 +1,6 @@
{{- define "main" -}}
+
Java 17 projects include the Codename One authoring skill in the downloaded project. Open the project in Codex or Claude Code so the agent can use the framework-specific build, UI, testing, and screenshot instructions instead of guessing.
Run the simulator, open its MCP menu, and choose Install in MCP Hosts. The built-in server lets supported hosts inspect the semantic UI tree, enter text, activate components, and call application tools.
Give the agent a strict codebase and a short feedback loop.
A generated Java 17 project includes Codename One instructions for coding agents. The simulator can expose the running UI to Codex, Claude Code, and other MCP hosts, so the agent can inspect meaning and invoke actions instead of guessing screen coordinates.