All notable changes to this project, relative to the original Flipper-NFC-Maker, are documented in this file.
The format is based on Keep a Changelog.
- vCard Forge — the app is now a professional vCard editor with Flipper export (ADR 0001): a two-pane workspace with a grouped property editor (identity, organization, phones, email/IM/web, addresses, dates & personal, notes & metadata, imported passthrough) and a sticky live pane showing highlighted serialized source, per-version validation diagnostics, a byte counter, and the Flipper NFC export card
- RFC-compliant vCard core library:
vcard-standard.js(property/parameter registry with per-version rules and shared codecs),vcard-parser.js(lenient reader: QUOTED-PRINTABLE + CHARSET, RFC 6868 caret encoding, bare 2.1 parameters, groups, nested AGENT),vcard-serializer.js(strict 2.1/3.0/4.0 writer: 75-octet UTF-8-safe folding, per-version escaping, QP soft breaks, version conversion with PREF↔TYPE=pref and inline-binary↔data:-URI bridging, FN/N derivation),vcard-validator.js(mandatory properties, 4.0 cardinality with ALTID grouping, TYPE vocabularies, PREF range, GENDER shape, date formats) - Target-version switching (2.1 / 3.0 / 4.0) from one lossless master model, hiding unavailable fields and reporting anything dropped on export
- Import via paste, file picker, or URL fetch; export via
.vcfdownload, clipboard copy,.nfcdownload, or WebSerial send to the Flipper - Live NTAG213/215/216 capacity bar with tag-upgrade suggestions and an iOS + Android dual-record mode (vCard + hosted-URL NDEF records)
- Zero-dependency test runner (
tests/run-tests.js) with a 72-test suite: vCard compliance matrix (tests/vcard-core.test.js) and NFC invariants — BCC checksums, CC bytes, TLV lengths, NDEF flags (tests/nfc.test.js) - vCard compliance reference cited to the primary specifications — versit 2.1,
RFC 2426/2425, RFC 6350, RFC 6868 (
docs/reference/vcard-compliance.md) - RepoKit-standard governance: canonical
AGENTS.mdwith a START-HERE map, thinCLAUDE.md, ADR log (docs/adr/),.gitattributes,SECURITY.md, PR and issue templates - Design spec and implementation plan under
docs/superpowers/ - Dark/light mode with
prefers-color-schemeauto-detection + manual toggle - CI workflow: full test suite + JS/HTML validation + GitHub Pages deployment
- Renamed the project to vCard Forge; the repository moved to
github.com/PBNZ/vcard-forgeand the live site topbnz.github.io/vcard-forge/(ADR 0003) - Layout rebuilt as a responsive two-pane grid (editor left, sticky live output right; stacks below 980px) to use screen real estate efficiently
- Visual refresh: navy + teal colour scheme, system font stack, no
external fonts or analytics — fully
file://-compatible README.mdandCONTRIBUTING.mdrewritten for the vCard-first scope- CI:
actions/checkout/setup-nodebumped to v5,configure-pagesto v6,upload-pages-artifact/deploy-pagesto v5, Node 20 → 24 (clears the runner deprecation notices)
- BCC0 calculation: added missing
0x88XOR per NFC Forum specification - CC bytes: corrected per type — NTAG213
0x12, NTAG2150x3E, NTAG2160x6D - Mifare version: now per-type instead of hardcoded NTAG215
- NDEF long records: proper 4-byte payload length for payloads > 255 bytes (fixes corrupt vCard data on NTAG215/216)
- All non-contact record types (URL, Text, Phone, Email, Wi-Fi, Geo, SMS, Launch App, Custom MIME, Social Media, FaceTime, Apple Maps, HomeKit) — see ADR 0001
- Unused Flipper loader / Bad USB / directory-listing WebSerial methods
.cursorrules(absorbed intoAGENTS.md), straysrc/js/rfc.txtHTML dump- Google Analytics tracking code and Google Fonts import (from the original)
CNAMEfile (pointed to the original author's domain)