Skip to content

feat: protocol v2.2 tag index / count, catalogue, offline reference data, unified playground (1.3.0) - #1

Merged
TigerTag-Project merged 1 commit into
mainfrom
feat/chip-count-index
Oct 1, 2026
Merged

TigerTag-Project merged 1 commit into
mainfrom
feat/chip-count-index

Conversation

@TigerTag-Project

Copy link
Copy Markdown
Owner

Highlights

  • Protocol v2.2 — tag index / tag count at page 0x0D byte 3 (high nibble = index, low = count: 0x12 = tag 1 of 2). Spec: spec: chip count / chip index at page 0x0D byte 3 (v2.2) TigerTag-RFID-Guide#26, #27, #28.
  • TigerTag+ from the official catalogue: a product ID alone builds a ready-to-burn tag from id_catalog.json (RFID_Data), with an ETag-aware cache.
  • Reference data offline, fresh and overridable: the 7 tables and the catalogue (gzip) ship in the package; a daily check downloads only changed tables into the user cache dir (or TIGERTAG_DATA_DIR); offline / TIGERTAG_OFFLINE=1 disables all network calls; manual update (API + CLI); a custom folder is used exclusively. Behaviour change: one network check per day unless offline.
  • Unified playground: the same tools/playground.html in the JS and Python SDKs, against a common server contract (docs/playground-api.md) — Read / Burn modes, twin-tag burning, SDK Input (create(), HEX, Pages), chips-on-the-readers check, TigerTag+ loading (offline catalogue or online API), catalogue and table updates, info bubbles, SVG icons. Burn always writes pages 0x04–0x27 with the signature pages cleared: playgrounds never write a signature.
  • No emoji in outputs or UI.

Tested

  • Full test suite green.
  • Both playground servers checked with two ACR122U readers: twin burns (0x12 / 0x22, shared timestamp, signature pages 00), single-reader burn, and cross-SDK burns read back byte-for-byte identically.

Merge note

check_playground_sync compares this repo's tools/playground.html with the other SDK's copy on main. It passes locally; in CI it will pass once both SDK PRs are merged.

…ata, unified playground

Protocol v2.2
- Byte +39 (page 0x0D byte 3) is the tag index / tag count: high nibble =
  index, low nibble = count, so 0x12 is tag 1 of 2. tag_info, tag_index,
  tag_count; create(tag_count=, tag_index=), patch(), validate(), to_dict(),
  pretty() and describe() ("Tag 1 of 2 on this filament."). Same in the
  standalone parse_tigertag.py.
- to_bytes() and patch() refuse a measure_available above measure.

TigerTag+ catalogue
- TigerTag.from_catalog(product_id) builds a ready-to-burn TigerTag+ from the
  official id_catalog.json (RFID_Data). load_catalog / refresh_catalog /
  catalog_info / catalog_entry, with an ETag-aware disk cache.

Reference data
- The 7 tables and the catalogue (gzip) ship with the package and are used
  offline. A daily check downloads only the tables that changed into the
  user cache dir (or TIGERTAG_DATA_DIR); the newest of downloaded and
  bundled wins per table. offline=True / TIGERTAG_OFFLINE=1 disables every
  network call, db.update(force=True) and `tigertag update` update on
  demand, and a custom db_path is used exclusively. Behaviour change: the
  SDK now checks for updated reference data once a day unless offline.
- raw_api() uses certifi's CA bundle when installed (python.org macOS
  builds ship without CA certificates).

Playground
- One playground page shared byte-for-byte with the JS SDK, against a common
  server contract (docs/playground-api.md): ACR122U readers through pyscard
  (optional extra tigertag[nfc]), Read / Burn modes, twin tag burning, SDK
  Input (create(), HEX, Pages), chips-on-the-readers check, TigerTag+ product
  loading (offline catalogue or online API), catalogue and table updates,
  info bubbles, SVG icons. Burn always writes pages 0x04-0x27 with the
  signature pages cleared; playgrounds never write a signature.
  scripts/check_playground_sync.py guards the shared page.

Other
- Signature results and outputs no longer use emoji.
@TigerTag-Project
TigerTag-Project merged commit 2ebbf72 into main Oct 1, 2026
3 checks passed
@TigerTag-Project
TigerTag-Project deleted the feat/chip-count-index branch October 1, 2026 05:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants