From 74199c6e6f847b4e1545926c01543d9958368ba2 Mon Sep 17 00:00:00 2001 From: Doby2333 Date: Wed, 30 Sep 2026 14:36:43 +0800 Subject: [PATCH 1/4] Replace shared FAQ symlinks with Jekyll includes --- AGENTS.md | 4 + README.md | 2 + _config.yml | 9 +- .../camera-preview-renders-incorrectly-ios.md | 100 +++++++++++++ _includes/shared/license/dbr-free-trial.md | 3 + .../enable-supported-barcode-format.md | 110 +++++++++++++++ _includes/shared/license/ensure-no-overuse.md | 115 +++++++++++++++ .../expand-quota-for-runtime-license.md | 5 + .../how-hardware-is-bind-to-license.md | 2 + .../license/how-license-tracking-works.md | 1 + _includes/shared/license/index.md | 13 ++ ...w-license-required-per-device-licensing.md | 7 + .../license/offline-registration-license.md | 130 +++++++++++++++++ .../license/sdk-works-without-internet.md | 7 + _includes/shared/license/track-license.md | 4 + ...ting-unauthorized-device-clone-detected.md | 47 +++++++ barcode-reader/license | 1 - barcode-reader/license/assets/activate.jpg | Bin 0 -> 11061 bytes barcode-reader/license/assets/cp-license.jpg | Bin 0 -> 23842 bytes .../license/assets/offline-activate.jpg | Bin 0 -> 18162 bytes barcode-reader/license/assets/submit-uuid.jpg | Bin 0 -> 23137 bytes barcode-reader/license/assets/uuid-tool.jpg | Bin 0 -> 18281 bytes barcode-reader/license/assets/uuid.jpg | Bin 0 -> 36204 bytes barcode-reader/license/dbr-free-trial.md | 11 ++ .../enable-supported-barcode-format.md | 11 ++ barcode-reader/license/ensure-no-overuse.md | 11 ++ .../expand-quota-for-runtime-license.md | 11 ++ .../how-hardware-is-bind-to-license.md | 11 ++ .../license/how-license-tracking-works.md | 11 ++ barcode-reader/license/index.md | 12 ++ ...w-license-required-per-device-licensing.md | 11 ++ .../license/offline-registration-license.md | 11 ++ .../license/sdk-works-without-internet.md | 11 ++ barcode-reader/license/track-license.md | 11 ++ ...ting-unauthorized-device-clone-detected.md | 11 ++ .../camera-preview-renders-incorrectly-ios.md | 101 +------------- license/dbr-free-trial.md | 4 +- license/enable-supported-barcode-format.md | 111 +-------------- license/ensure-no-overuse.md | 116 +--------------- license/expand-quota-for-runtime-license.md | 6 +- license/how-hardware-is-bind-to-license.md | 3 +- license/how-license-tracking-works.md | 2 +- license/index.md | 14 +- ...w-license-required-per-device-licensing.md | 8 +- license/offline-registration-license.md | 131 +----------------- license/sdk-works-without-internet.md | 8 +- license/track-license.md | 5 +- ...ting-unauthorized-device-clone-detected.md | 48 +------ .../camera-preview-renders-incorrectly-ios.md | 12 +- mrz-scanner/license | 1 - mrz-scanner/license/assets/activate.jpg | Bin 0 -> 11061 bytes mrz-scanner/license/assets/cp-license.jpg | Bin 0 -> 23842 bytes .../license/assets/offline-activate.jpg | Bin 0 -> 18162 bytes mrz-scanner/license/assets/submit-uuid.jpg | Bin 0 -> 23137 bytes mrz-scanner/license/assets/uuid-tool.jpg | Bin 0 -> 18281 bytes mrz-scanner/license/assets/uuid.jpg | Bin 0 -> 36204 bytes mrz-scanner/license/dbr-free-trial.md | 11 ++ .../enable-supported-barcode-format.md | 11 ++ mrz-scanner/license/ensure-no-overuse.md | 11 ++ .../expand-quota-for-runtime-license.md | 11 ++ .../how-hardware-is-bind-to-license.md | 11 ++ .../license/how-license-tracking-works.md | 11 ++ mrz-scanner/license/index.md | 12 ++ ...w-license-required-per-device-licensing.md | 11 ++ .../license/offline-registration-license.md | 11 ++ .../license/sdk-works-without-internet.md | 11 ++ mrz-scanner/license/track-license.md | 11 ++ ...ting-unauthorized-device-clone-detected.md | 11 ++ 68 files changed, 844 insertions(+), 552 deletions(-) create mode 100644 _includes/shared/camera-preview-renders-incorrectly-ios.md create mode 100644 _includes/shared/license/dbr-free-trial.md create mode 100644 _includes/shared/license/enable-supported-barcode-format.md create mode 100644 _includes/shared/license/ensure-no-overuse.md create mode 100644 _includes/shared/license/expand-quota-for-runtime-license.md create mode 100644 _includes/shared/license/how-hardware-is-bind-to-license.md create mode 100644 _includes/shared/license/how-license-tracking-works.md create mode 100644 _includes/shared/license/index.md create mode 100644 _includes/shared/license/new-license-required-per-device-licensing.md create mode 100644 _includes/shared/license/offline-registration-license.md create mode 100644 _includes/shared/license/sdk-works-without-internet.md create mode 100644 _includes/shared/license/track-license.md create mode 100644 _includes/shared/license/troubleshooting-unauthorized-device-clone-detected.md delete mode 120000 barcode-reader/license create mode 100644 barcode-reader/license/assets/activate.jpg create mode 100644 barcode-reader/license/assets/cp-license.jpg create mode 100644 barcode-reader/license/assets/offline-activate.jpg create mode 100644 barcode-reader/license/assets/submit-uuid.jpg create mode 100644 barcode-reader/license/assets/uuid-tool.jpg create mode 100644 barcode-reader/license/assets/uuid.jpg create mode 100644 barcode-reader/license/dbr-free-trial.md create mode 100644 barcode-reader/license/enable-supported-barcode-format.md create mode 100644 barcode-reader/license/ensure-no-overuse.md create mode 100644 barcode-reader/license/expand-quota-for-runtime-license.md create mode 100644 barcode-reader/license/how-hardware-is-bind-to-license.md create mode 100644 barcode-reader/license/how-license-tracking-works.md create mode 100644 barcode-reader/license/index.md create mode 100644 barcode-reader/license/new-license-required-per-device-licensing.md create mode 100644 barcode-reader/license/offline-registration-license.md create mode 100644 barcode-reader/license/sdk-works-without-internet.md create mode 100644 barcode-reader/license/track-license.md create mode 100644 barcode-reader/license/troubleshooting-unauthorized-device-clone-detected.md delete mode 120000 mrz-scanner/license create mode 100644 mrz-scanner/license/assets/activate.jpg create mode 100644 mrz-scanner/license/assets/cp-license.jpg create mode 100644 mrz-scanner/license/assets/offline-activate.jpg create mode 100644 mrz-scanner/license/assets/submit-uuid.jpg create mode 100644 mrz-scanner/license/assets/uuid-tool.jpg create mode 100644 mrz-scanner/license/assets/uuid.jpg create mode 100644 mrz-scanner/license/dbr-free-trial.md create mode 100644 mrz-scanner/license/enable-supported-barcode-format.md create mode 100644 mrz-scanner/license/ensure-no-overuse.md create mode 100644 mrz-scanner/license/expand-quota-for-runtime-license.md create mode 100644 mrz-scanner/license/how-hardware-is-bind-to-license.md create mode 100644 mrz-scanner/license/how-license-tracking-works.md create mode 100644 mrz-scanner/license/index.md create mode 100644 mrz-scanner/license/new-license-required-per-device-licensing.md create mode 100644 mrz-scanner/license/offline-registration-license.md create mode 100644 mrz-scanner/license/sdk-works-without-internet.md create mode 100644 mrz-scanner/license/track-license.md create mode 100644 mrz-scanner/license/troubleshooting-unauthorized-device-clone-detected.md diff --git a/AGENTS.md b/AGENTS.md index 591c020..b0ef875 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,10 @@ Rules: - `mrz-scanner/general/` — MRZ Scanner FAQs - `license/` — licensing FAQs shared across products +## Shared FAQ answers + +Published FAQs are regular Markdown pages under each product path. For an answer reused across products, keep the frontmatter and question H1 in each page and put only the answer body in `_includes/shared/`; include it with `{% include shared/.md %}`. Edit the include for shared answer changes, and keep each product section’s `index.md` linked to its own page. Do not use filesystem symlinks. `license/` remains published for existing bare-path URLs, but the product-scoped license pages and the corresponding `license/` pages all use `_includes/shared/license/` for their answers. + ## Archived content (`*/archive/*`) Directories named `archive` under `barcode-reader/{mobile,server,web}/` hold historical, version-pinned content (e.g. `-v9.6.40`, `-v10.4.2000` snapshots). They are: diff --git a/README.md b/README.md index d37240b..57acbac 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ Or on Windows: The scripts clone the shared template's preview branch into `.dev/`, merge it with this FAQ source, install gems, and serve Jekyll at `http://localhost:5555/faq/`. The generated `.dev/` workspace is ignored by Git and omits archived FAQ content and local worktrees. Use `--no-serve` / `-NoServe` to prepare without serving, then rerun without that flag to serve; `--no-template-update` / `-NoTemplateUpdate` reuses the cloned template. Changes to FAQ files require rerunning the script to refresh the merged workspace. +Shared answers live in `_includes/shared/`. Product FAQ pages retain their own frontmatter and question H1, then include the answer body. The license FAQs are regular pages under `license/`, `barcode-reader/license/`, and `mrz-scanner/license/`; they share `_includes/shared/license/` and preserve their existing URLs. Edit shared answer text in the include, not in each page. + ## Checking links `check_links.py` crawls the repo's Markdown files and reports broken links. Run it before submitting a change that touches links: diff --git a/_config.yml b/_config.yml index da7d582..e696932 100644 --- a/_config.yml +++ b/_config.yml @@ -56,11 +56,10 @@ defaults: values: sitemap: false - scope: - # license/ is shared content, duplicated at build time under - # /faq/barcode-reader/license/ and /faq/mrz-scanner/license/. Those - # product-scoped URLs are the ones linked from the site and correctly - # highlighted in the sidebar; this bare path has no product context - # for the sidebar to highlight, so keep it out of the sitemap. + # license/ retains the existing bare URLs. Its pages and the product- + # scoped license pages include the same answer bodies, but only the + # product-scoped URLs have sidebar context; keep the bare path out + # of the sitemap. path: "license" values: sitemap: false diff --git a/_includes/shared/camera-preview-renders-incorrectly-ios.md b/_includes/shared/camera-preview-renders-incorrectly-ios.md new file mode 100644 index 0000000..cd78030 --- /dev/null +++ b/_includes/shared/camera-preview-renders-incorrectly-ios.md @@ -0,0 +1,100 @@ +## Applicable Products + +This article applies to: + +- Dynamsoft Barcode Reader (DBR) JavaScript SDK (`dynamsoft-barcode-reader-bundle`) 11.6.3000 and earlier +- Dynamsoft Capture Vision (DCV) JavaScript SDK (`dynamsoft-capture-vision-bundle`) 3.6.3000 and earlier + +## Summary + +On iOS 27, switching cameras or changing resolution can make the live camera preview render incorrectly. The exact behavior depends on the SDK version: + +| Version | Behavior | +|---|---| +| DBR 11.4 – 11.6.3000 (DCV 3.4 – 3.6.3000) | The preview renders distorted — squeezed or stretched instead of filling its container. Intermittent: the same switch can render correctly on one attempt and distorted on the next. | +| DBR 11.2 and earlier (DCV 3.2 and earlier) | The preview isn't distorted, but it no longer fits its container — shown at the wrong zoom or size and not extending to the borders. | + +It's reproducible on Safari, Chrome, Edge, and Firefox — all iOS browsers share WebKit's camera implementation, so we suspect the issue originates there rather than in any Dynamsoft SDK. It does not occur on iOS 26. + +> [!NOTE] +> Reported to Apple, but not confirmed as an Apple bug and still open as of iOS 27 RC. Details here may change if Apple ships a fix. + +
+
+ Camera video rendering correctly on iOS +
Expected
+
+
+ Camera video rendering distorted after switching cameras on iOS 27 +
Distorted after switching cameras
+
+
+ +## Resolution + +### Recommended: upgrade + +Upgrade to `dynamsoft-barcode-reader-bundle` **11.6.3200+** or `dynamsoft-capture-vision-bundle` **3.6.3200+**, which include a built-in workaround. + +### If you can't upgrade yet + +Both workarounds below are temporary and version-specific — neither replaces upgrading. + +**DBR 11.4 – 11.6.3000 (DCV 3.4 – 3.6.3000)** + +The distortion requires `object-fit: fill` on the video element plus an ancestor using `display: flex` with `flex: 0 0 auto`, so overriding `object-fit` with `cover` on the `