Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ee40a39
fix(docs): validate the singular `framework` field and normalize its …
eugenia-scandit Aug 19, 2026
5001c5d
refactor(frameworks): one registry, every map derived from it
eugenia-scandit Aug 20, 2026
5703b28
fix(docs-gate): skip prose checks when only frontmatter changed
eugenia-scandit Aug 20, 2026
32efbfe
fix(frameworks): type the vocabulary, and check the data files agains…
eugenia-scandit Aug 24, 2026
2b86bb1
fix(frameworks): resolve /sdks/ paths through the registry, not a regex
eugenia-scandit Aug 24, 2026
9f2e922
refactor(frameworks): one path parser, shared by both callers
eugenia-scandit Aug 24, 2026
e880fe1
fix(skills): hide the Agent Skills banner on versioned Titanium and L…
eugenia-scandit Aug 24, 2026
f57a11e
fix(frameworks): guard the three remaining hand-written copies
eugenia-scandit Aug 24, 2026
bab2349
Merge remote-tracking branch 'origin/main' into fix/framework-frontma…
eugenia-scandit Sep 7, 2026
e64d5d7
fix(docs): close the holes review found in the framework gate
eugenia-scandit Sep 7, 2026
e1c1e7b
fix(docs): parse the frontmatter with a parser
eugenia-scandit Sep 8, 2026
e8b8dab
fix(docs): state the real constraint on unreleasedFrameworks' imports
eugenia-scandit Sep 8, 2026
0d05551
fix(docs): stop the frontmatter-only skip from disabling a blocking c…
eugenia-scandit Sep 8, 2026
c28f18e
fix(docs): make the frontmatter cap fail closed, and stop two silent …
eugenia-scandit Sep 8, 2026
5eda36f
fix(docs-gate): report per-key data-file misses, keep odd fences in Vale
eugenia-scandit Sep 8, 2026
1fd78e2
fix(docs-gate): close the per-item data-file hole, test the gate readers
eugenia-scandit Sep 8, 2026
e5c0743
fix(docs-gate): per-product granularity, and tests that actually pin …
eugenia-scandit Sep 8, 2026
6fad947
chore(docs-gate): make this branch merge cleanly alongside #429
eugenia-scandit Sep 8, 2026
2deae33
fix(docs-gate): read only the top level, and pin the reporting steps
eugenia-scandit Sep 8, 2026
9c06c49
fix(docs-gate): read the top level in the two places that still didn'…
eugenia-scandit Sep 8, 2026
8a73abb
fix(docs-gate): report the pairs inside an entry, and pin the reports…
eugenia-scandit Sep 8, 2026
1284a2c
fix(docs-gate): make the keyword guard actually work, and pin the Val…
eugenia-scandit Sep 8, 2026
117bcdf
fix(docs-gate): drive the gate itself, and stop trimming the body's l…
eugenia-scandit Sep 8, 2026
16a6093
Merge branch 'main' into fix/framework-frontmatter-ssot
eugenia-scandit Sep 18, 2026
4d796f8
Fix the two CI wiring defects and stop parseSdksRoute dropping the pr…
eugenia-scandit Sep 21, 2026
0084b1d
Merge remote-tracking branch 'origin/main' into fix/framework-frontma…
eugenia-scandit Sep 21, 2026
3f9e89b
Drop two comment blocks the refactor left duplicated
eugenia-scandit Sep 21, 2026
0168958
Drop two unused exports, and stop three comments describing the wrong…
eugenia-scandit Sep 21, 2026
c22e137
Remove two latent traps in the gate's own wiring
eugenia-scandit Sep 21, 2026
cd45740
Delete the now-dead ratchet state, and stop two fragile spellings
eugenia-scandit Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,18 @@ jobs:
- name: Install dependencies
run: yarn install --frozen-lockfile

# Whole-corpus check: the docs gate is a ratchet on changed files, so it
# cannot see a pre-existing violation nobody touched. This is what makes a
# framework value outside the enum - in docs OR in the code maps that read
# it - break the build instead of silently mis-resolving.
- name: Verify framework identifiers
run: yarn verify:frameworks

# Pins the membership of every derived framework map. The refactor risk
# here is not a crash, it is a map quietly gaining or losing an entry.
- name: Test framework registry
run: yarn test:frameworks

- name: Build documentation
run: yarn build

Expand Down
27 changes: 23 additions & 4 deletions .github/workflows/docs-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,12 @@ jobs:

- name: Install Vale (pinned)
run: |
# The version the rules in styles/Scandit/ were measured against -
# both of them encode behaviour that is version-specific, down to
# which regex constructs the token engine honours, and a local pass
# on one version proves nothing about another.
# The version the rules in styles/Scandit/ and the frontmatter cap in
# scripts/docs-gate were both measured against. Both encode behaviour
# that is version-specific, down to which regex constructs the token
# engine honours, and the cap additionally rests on Vale attributing a
# `description` alert to its true file line. A local pass on one
# version proves nothing about another.
#
# CI only. scripts/setup-vale.cjs does not install Vale at all - it
# checks for it, prints winget/brew guidance if it is missing, and
Expand All @@ -97,6 +99,23 @@ jobs:
- name: Sync Vale styles
run: yarn docs:gate:setup

# The gate scripts' own readers and, through a fixture tree, the whole of
# verify-frameworks. Each defect these rows pin made a gate print OK while
# a check went unperformed, which no amount of green output would show.
#
# Here rather than in build-docs.yml because the prose rows need the Vale
# BINARY on PATH - without it the gate prints "Vale not installed", skips
# the prose checks, and the rows would pass vacuously, so the suite asserts
# its presence and goes red instead. This job is the one that installs it.
# It needs the binary ONLY: the fixture writes its own .vale.ini with no
# Packages line, so it runs before or after `vale sync` indifferently and
# never touches the network.
#
# Before the real gate deliberately: if the gate's own readers are broken,
# that is worth knowing before reading anything the gate reports.
- name: Test docs-gate readers
run: yarn test:docs-gate

- name: Run docs quality gate
# GITHUB_BASE_REF makes the gate ratchet against the PR's target branch.
run: yarn docs:gate
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ validation/cache/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# scripts/test-docs-gate.cjs scratch dirs (pid-suffixed; removed in a finally,
# so these only appear after a hard kill)
scripts/.test-docs-gate-tmp-*
29 changes: 27 additions & 2 deletions docs-schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,39 @@ properties:
matrixscan-ar, matrixscan-pick, barcode-selection, barcode-generator,
id-capture, id-bolt, label-capture, parser, express, core, platform]

# Canonical framework slugs. These are the SSOT for every framework identifier
# under docs/ and in code: they are exactly the `/sdks/<slug>/` URL segments
# (with `hosted` for the /hosted/ tree), and src/constants/frameworks.ts must
# cover this same set - `yarn verify:frameworks` fails the build if the two
# drift. That file is the registry the gate reads;
# src/components/utils/frameworks.ts is derived from it and is never read by the
# gate, so adding a slug there alone satisfies nothing.
#
# NOT versioned_docs/. Those snapshots still carry the pre-rename vocabulary
# (`react`, `netIos`, `xamarinForms`, `express`) and are exempt on purpose;
# see the scope note in scripts/verify-frameworks.cjs. Saying "every identifier
# in the repo" here was wrong: ~470 declarations in the snapshots are outside
# this enum and nothing checks them.
#
# `kmp` (Kotlin Multiplatform) is documented only in the in-development docs
# version; that is tracked by UNRELEASED_FRAMEWORK_SLUGS in
# src/constants/unreleasedFrameworks.ts, not by leaving it out of this enum.
#
# Singular `framework` and plural `frameworks` share the set deliberately: a
# page states one platform or several, never two different vocabularies.
framework:
type: string
enum: [ios, android, web, react-native, flutter, cordova, capacitor, kmp,
titanium, linux, net-ios, net-android, hosted]

frameworks:
type: array
minItems: 1
uniqueItems: true
items:
type: string
enum: [ios, android, web, react-native, flutter, cordova, capacitor, titanium,
linux, net-ios, net-android, hosted]
enum: [ios, android, web, react-native, flutter, cordova, capacitor, kmp,
titanium, linux, net-ios, net-android, hosted]

version_status:
type: string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Define the input fields Custom Data Transfer collects during scanning in Scandit Express, and set each field's type and format."
framework: express
framework: hosted
product: express
sidebar_label: Input Configuration
keywords:
- express
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Configure how Custom Data Transfer structures, transforms, and exports scanned data to external systems in Scandit Express."
framework: express
framework: hosted
product: express
sidebar_label: Output Configuration
keywords:
- express
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Import and export data in Scandit Express using a configurable CSV file or Google Sheet, aligning formats with your system without coding."
framework: express
framework: hosted
product: express
sidebar_label: Overview
keywords:
- express
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Set up Bluetooth device pairing in Scandit Express to send scanned data from one device to another."
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Use Device Pairing in Scandit Express to transfer scanned barcode data in real time from a sender device to the receiver running your app."
framework: express
framework: hosted
product: express
sidebar_label: Overview
keywords:
- express
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Set up online device pairing in Scandit Express to send scanned data to a web application."
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/configuration/express-find.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
description: "Find Items in Scandit Express, powered by MatrixScan Find, speeds up picking by scanning many items and highlighting the right ones in AR."

framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/configuration/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
description: "Overview of the configuration options available in Scandit Express and how to set them up."

toc_max_heading_level: 4
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/configuration/inventory-count.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Use the Inventory Count mode in Scandit Express for fast, accurate stock counting."
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/configuration/scan-labels.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
description: "Scan Labels in Scandit Express, powered by Smart Label Capture, reads multiple barcodes and printed text on a label in one scan."
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ description: "Install Scandit Express on iOS or Android and activate it to add b
sidebar_label: 'Installation'
displayed_sidebar: expressSidebar
sidebar_position: 1
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/getting-started/rollout.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ description: "Roll out Scandit Express to production with a mobile device manage
sidebar_label: 'Rollout via MDM/EMM'
displayed_sidebar: expressSidebar
sidebar_position: 2
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/express/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_position: 1
sidebar_label: 'Overview'
title: 'Scandit Express'
displayed_sidebar: expressSidebar
framework: express
framework: hosted
product: express
keywords:
- express
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Advanced Options"
title: "Advanced Options"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- advanced
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/api-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "API Overview"
title: "API Overview"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/callbacks.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Callbacks"
title: "Callbacks"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- callbacks
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/data-handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Data Handling"
title: "Data Handling"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- data handling
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/document-selection.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Document Selection"
title: "Document Selection"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- document selection
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Getting Started"
title: "Getting Started"
hide_title: false
displayed_sidebar: boltSidebar
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_position: 1
sidebar_label: "Overview"
title: "ID Bolt"
displayed_sidebar: boltSidebar
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
---
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
description: "Release notes for ID Bolt: new features, changes, and fixes by date."
toc_max_heading_level: 3
displayed_sidebar: boltSidebar
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
hide_title: true
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/text-overrides.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Text Overrides"
title: "Text Overrides"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- customization
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/theming.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Theming"
title: "Theming"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- theming
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/validators.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Validators"
title: "Validators"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- validators
Expand Down
3 changes: 2 additions & 1 deletion docs/hosted/id-bolt/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ sidebar_label: "Workflow Options"
title: "Workflow & Scanner Options"
displayed_sidebar: boltSidebar
toc_max_heading_level: 4
framework: bolt
framework: hosted
product: id-bolt
keywords:
- bolt
- workflow
Expand Down
2 changes: 1 addition & 1 deletion docs/sdks/net/android/add-sdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: "Add the Scandit Data Capture SDK to your .NET Android project: dep
sidebar_position: 1
toc_max_heading_level: 4
pagination_next: null
framework: netAndroid
framework: net-android
keywords:
- netAndroid
---
Expand Down
2 changes: 1 addition & 1 deletion docs/sdks/net/android/ai-powered-barcode-scanning.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
description: "import AIPoweredBarcodeScanning from '../../../partials/_ai-powered-barcode-scanning.mdx';"
toc_max_heading_level: 4
framework: netAndroid
framework: net-android
keywords:
- netAndroid
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
description: "Enable and configure barcode symbologies for Barcode Capture on .NET Android."
sidebar_position: 3
pagination_next: null
framework: netAndroid
framework: net-android
keywords:
- netAndroid
---
Expand Down
2 changes: 1 addition & 1 deletion docs/sdks/net/android/barcode-capture/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
description: "Add Barcode Capture to your .NET Android app: configure the mode, set up the camera and view, and handle scanned barcodes."
sidebar_position: 2
pagination_prev: null
framework: netAndroid
framework: net-android
keywords:
- netAndroid
---
Expand Down
2 changes: 1 addition & 1 deletion docs/sdks/net/android/barcode-selection/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
description: "Add Barcode Selection to your .NET Android app so users can tap or aim to select a single barcode among many."
sidebar_position: 2
pagination_next: null
framework: netAndroid
framework: net-android
keywords:
- netAndroid
---
Expand Down
Loading
Loading