a7p
A7P ballistic profile format — encode/decode, validation, and field constraints.
1.2.4
o-murphy/a7p
What this package is like to depend on
Last release 1 months ago
16 Jul 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
1 months old
8 releases · first in 2026
8 releases in the last 12 months
see the full history below
Release timeline
8 releases · Jul 2026 to Jul 2026Releases
latest 8-
1.2.416 Jul 2026Release notes
Open source →py/
Removed
yupydependency and the hand-writtensrc/a7p/yupy_schema.pyvalidator it
backed — unused by the publica7p.validate()path since the migration to
schema_validator.py(fastjsonschema/jsonschemaagainst
schema/a7p.schema.json), and kept only as a reference/regression suite
(tests/test_yupy_schema.py) until nowexceptions.YupyViolationandexceptions.A7PYupyValidationError— folded
into plainViolation/A7PValidationError;A7PValidationErrorno longer
splits errors into.violations/.yupy_violations/.all_violations, just
one.violationslist
Changed
- CLI flag
--disable-yupyrenamed to--disable-validator
js/
Changed
- Regenerated
src/generated/a7p_schema_validator.cjsvia
scripts/compile.py— the only source change was
schema/a7p.schema.json'sx-decision/x-discrepancyannotation text,
updated (not dropped) to record in the past tense thatpy's
yupy_schema.py/test_yupy_schema.py(referenced there as context for why
these bounds were picked) have since been deleted, seepy/above. These
x-*keys are documentation only, ignored byajv— no validation
behavior changed.
dart/
Changed
- Regenerated
lib/src/generated/a7p_schema.g.dartviascripts/compile.py
— same annotation-onlyschema/a7p.schema.jsonchange asjs/above, no
validation behavior changed (x-*keys are ignored byjson_schema).
go/
Changed
- Regenerated
a7p/generated/a7p_schema.g.jsonviascripts/compile.py—
same annotation-onlyschema/a7p.schema.jsonchange asjs/above, no
validation behavior changed (x-*keys are ignored by
santhosh-tekuri/jsonschema).
Full Changelog: v1.2.3...v1.2.4
Release notes
Open source →py/
Removed
yupydependency and the hand-writtensrc/a7p/yupy_schema.pyvalidator it backed — unused by the publica7p.validate()path since the migration toschema_validator.py(fastjsonschema/jsonschemaagainstschema/a7p.schema.json), and kept only as a reference/regression suite (tests/test_yupy_schema.py) until nowexceptions.YupyViolationandexceptions.A7PYupyValidationError— folded into plainViolation/A7PValidationError;A7PValidationErrorno longer splits errors into.violations/.yupy_violations/.all_violations, just one.violationslist
Changed
- CLI flag
--disable-yupyrenamed to--disable-validator
js/
Changed
- Regenerated
src/generated/a7p_schema_validator.cjsviascripts/compile.py— the only source change wasschema/a7p.schema.json'sx-decision/x-discrepancyannotation text, updated (not dropped) to record in the past tense thatpy'syupy_schema.py/test_yupy_schema.py(referenced there as context for why these bounds were picked) have since been deleted, seepy/above. Thesex-*keys are documentation only, ignored byajv— no validation behavior changed.
dart/
Changed
- Regenerated
lib/src/generated/a7p_schema.g.dartviascripts/compile.py— same annotation-onlyschema/a7p.schema.jsonchange asjs/above, no validation behavior changed (x-*keys are ignored byjson_schema).
go/
Changed
- Regenerated
a7p/generated/a7p_schema.g.jsonviascripts/compile.py— same annotation-onlyschema/a7p.schema.jsonchange asjs/above, no validation behavior changed (x-*keys are ignored bysanthosh-tekuri/jsonschema).
-
1.2.314 Jul 2026Release notes
Open source →schema/a7p.schema.json's required string fields (profile_name,
cartridge_name,bullet_name,short_name_top,short_name_bot,
caliber) wrongly carriedminLength: 1, rejecting the empty string —
real device profiles ship these unset. Fixed at the source and
regenerated into all four packages viascripts/compile.py.py/
Fixed
caliber,profile_name,cartridge_name,bullet_name,
short_name_top, andshort_name_botnow accept an empty string,
matching real device profiles —_compiled_schema.pyand the bundled
a7p.schema.jsonregenerated fromschema/a7p.schema.json
js/
Fixed
- Same
minLengthfix aspy/, regenerated into
src/generated/a7p_schema_validator.cjs
dart/
Fixed
- Same
minLengthfix aspy/, regenerated into
lib/src/generated/a7p_schema.g.dart
go/
Fixed
- Same
minLengthfix aspy/, regenerated into
a7p/generated/a7p_schema.g.json
Full Changelog: v1.2.2...v1.2.3
Release notes
Open source →schema/a7p.schema.json's required string fields (profile_name,cartridge_name,bullet_name,short_name_top,short_name_bot,caliber) wrongly carriedminLength: 1, rejecting the empty string — real device profiles ship these unset. Fixed at the source and regenerated into all four packages viascripts/compile.py.py/
Fixed
caliber,profile_name,cartridge_name,bullet_name,short_name_top, andshort_name_botnow accept an empty string, matching real device profiles —_compiled_schema.pyand the bundleda7p.schema.jsonregenerated fromschema/a7p.schema.json
js/
Fixed
- Same
minLengthfix aspy/, regenerated intosrc/generated/a7p_schema_validator.cjs
dart/
Fixed
- Same
minLengthfix aspy/, regenerated intolib/src/generated/a7p_schema.g.dart
go/
Fixed
- Same
minLengthfix aspy/, regenerated intoa7p/generated/a7p_schema.g.json
-
1.2.213 Jul 2026Release notes
Open source →py/
Changed
- Updated dependencies
dart/
No changes since 1.2.1 (patch has been applied to js package)
js/
No changes since 1.2.1 (patch has been applied to js package)
go/
No changes since 1.2.1 (patch has been applied to js package)
Full Changelog: v1.2.1...v1.2.2
Release notes
Open source →py/
Changed
- Updated dependencies
dart/
No changes since 1.2.1 (patch has been applied to js package)
js/
No changes since 1.2.1 (patch has been applied to js package)
go/
No changes since 1.2.1 (patch has been applied to js package)
-
1.2.008 Jul 2026Release notes
Open source →py,js, anddartmerged from separate repos/submodules into this
monorepo, with full git history preserved — see
docs/DESIGN-schema-unification.mdfor the design behind this release.py/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia
schema_validator.py(fastjsonschema-compiled,jsonschemafallback
for full error lists) instead of the hand-writtenyupy_schema.py
(kept temporarily, unused by the public API, as a reference/safety net) proto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
js/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia a
compiled, standaloneajvvalidator (src/generated/a7p_schema_validator.cjs,
regenerated byscripts/build_schema_validator.mjs) instead ofyup—
yupand@types/yupare gone;ajvis a devDependency only (used by
the codegen script, not shipped) proto/profedit.protonow lives once at the repo root instead of a
local copy undersrc/proto/- License changed from ISC to LGPL-3.0, matching
dart— both generate
bindings from the same LGPL-3.0-sourcedproto/profedit.proto
Added
- First test suite (
test/validate.test.ts, 10 tests) covering the same
categories asdart's validator tests
Fixed
zoomwas unbounded (accepted 0–255); now bounded to 0–6, matching the schemabc_cd/mvforCUSTOMdrag models were capped ×10 too lowb_lengthminimum was 1 instead of 10ValidationErrorwas imported fromyup, not this package's own
errors.ts—error instanceof ValidationErrorchecks inindex.ts
never matched a validation failure as a result; fixed as part of the
yupremoval
dart/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia the
json_schemapackage instead of hand-writtenA7pValidator/
A7pFieldConstraintsrange checks — the schema is embedded as a
generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
regenerated bypython scripts/compile.py --dart), since no
standalone-codegen JSON Schema validator exists for Dart c_zero_distance_idxno longer bounds dynamically bydistances.length - 1; now the static 0–255 range, matchingpy/jsproto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
Added
- Test suite (
test/a7p_validator_test.dart, 9 tests) covering real
protobufPayloadobjects, including thec_idx201–254 gap andmv
uniqueness - "Dimensions" table in
README.md(previously missing, unlikepy/js)
Full Changelog: v1.2.0-alpha.2...v1.2.0
Release notes
Open source →py,js, anddartmerged from separate repos/submodules into this monorepo, with full git history preserved — seedocs/DESIGN-schema-unification.mdfor the design behind this release.py/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonviaschema_validator.py(fastjsonschema-compiled,jsonschemafallback for full error lists) instead of the hand-writtenyupy_schema.py(kept temporarily, unused by the public API, as a reference/safety net) proto/profedit.protonow lives once at the repo root instead of a local copy underproto/
js/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia a compiled, standaloneajvvalidator (src/generated/a7p_schema_validator.cjs, regenerated byscripts/build_schema_validator.mjs) instead ofyup—yupand@types/yupare gone;ajvis a devDependency only (used by the codegen script, not shipped) proto/profedit.protonow lives once at the repo root instead of a local copy undersrc/proto/- License changed from ISC to LGPL-3.0, matching
dart— both generate bindings from the same LGPL-3.0-sourcedproto/profedit.proto
Added
- First test suite (
test/validate.test.ts, 10 tests) covering the same categories asdart's validator tests
Fixed
zoomwas unbounded (accepted 0–255); now bounded to 0–6, matching the schemabc_cd/mvforCUSTOMdrag models were capped ×10 too lowb_lengthminimum was 1 instead of 10ValidationErrorwas imported fromyup, not this package's ownerrors.ts—error instanceof ValidationErrorchecks inindex.tsnever matched a validation failure as a result; fixed as part of theyupremoval
dart/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia thejson_schemapackage instead of hand-writtenA7pValidator/A7pFieldConstraintsrange checks — the schema is embedded as a generated Dart string constant (lib/src/generated/a7p_schema.g.dart, regenerated bypython scripts/compile.py --dart), since no standalone-codegen JSON Schema validator exists for Dart c_zero_distance_idxno longer bounds dynamically bydistances.length - 1; now the static 0–255 range, matchingpy/jsproto/profedit.protonow lives once at the repo root instead of a local copy underproto/
Added
- Test suite (
test/a7p_validator_test.dart, 9 tests) covering real protobufPayloadobjects, including thec_idx201–254 gap andmvuniqueness - "Dimensions" table in
README.md(previously missing, unlikepy/js)
- Validation now runs against the shared
-
1.2.0-alpha.208 Jul 2026 pre-releaseRelease notes
Open source →py,js, anddartmerged from separate repos/submodules into this
monorepo, with full git history preserved — see
docs/DESIGN-schema-unification.mdfor the design behind this release.py/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia
schema_validator.py(fastjsonschema-compiled,jsonschemafallback
for full error lists) instead of the hand-writtenyupy_schema.py
(kept temporarily, unused by the public API, as a reference/safety net) proto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
js/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia a
compiled, standaloneajvvalidator (src/generated/a7p_schema_validator.cjs,
regenerated byscripts/build_schema_validator.mjs) instead ofyup—
yupand@types/yupare gone;ajvis a devDependency only (used by
the codegen script, not shipped) proto/profedit.protonow lives once at the repo root instead of a
local copy undersrc/proto/- License changed from ISC to LGPL-3.0, matching
dart— both generate
bindings from the same LGPL-3.0-sourcedproto/profedit.proto
Added
- First test suite (
test/validate.test.ts, 10 tests) covering the same
categories asdart's validator tests
Fixed
zoomwas unbounded (accepted 0–255); now bounded to 0–6, matching the schemabc_cd/mvforCUSTOMdrag models were capped ×10 too lowb_lengthminimum was 1 instead of 10ValidationErrorwas imported fromyup, not this package's own
errors.ts—error instanceof ValidationErrorchecks inindex.ts
never matched a validation failure as a result; fixed as part of the
yupremoval
dart/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia the
json_schemapackage instead of hand-writtenA7pValidator/
A7pFieldConstraintsrange checks — the schema is embedded as a
generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
regenerated bypython scripts/compile.py --dart), since no
standalone-codegen JSON Schema validator exists for Dart c_zero_distance_idxno longer bounds dynamically bydistances.length - 1; now the static 0–255 range, matchingpy/jsproto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
Added
- Test suite (
test/a7p_validator_test.dart, 9 tests) covering real
protobufPayloadobjects, including thec_idx201–254 gap andmv
uniqueness - "Dimensions" table in
README.md(previously missing, unlikepy/js)
Full Changelog: v1.2.0-alpha.1...v1.2.0-alpha.2
- Validation now runs against the shared
-
1.2.0-alpha.108 Jul 2026 pre-releaseRelease notes
Open source →py,js, anddartmerged from separate repos/submodules into this
monorepo, with full git history preserved — see
docs/DESIGN-schema-unification.mdfor the design behind this release.py/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia
schema_validator.py(fastjsonschema-compiled,jsonschemafallback
for full error lists) instead of the hand-writtenyupy_schema.py
(kept temporarily, unused by the public API, as a reference/safety net) proto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
js/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia a
compiled, standaloneajvvalidator (src/generated/a7p_schema_validator.cjs,
regenerated byscripts/build_schema_validator.mjs) instead ofyup—
yupand@types/yupare gone;ajvis a devDependency only (used by
the codegen script, not shipped) proto/profedit.protonow lives once at the repo root instead of a
local copy undersrc/proto/- License changed from ISC to LGPL-3.0, matching
dart— both generate
bindings from the same LGPL-3.0-sourcedproto/profedit.proto
Added
- First test suite (
test/validate.test.ts, 10 tests) covering the same
categories asdart's validator tests
Fixed
zoomwas unbounded (accepted 0–255); now bounded to 0–6, matching the schemabc_cd/mvforCUSTOMdrag models were capped ×10 too lowb_lengthminimum was 1 instead of 10ValidationErrorwas imported fromyup, not this package's own
errors.ts—error instanceof ValidationErrorchecks inindex.ts
never matched a validation failure as a result; fixed as part of the
yupremoval
dart/
Changed
- Validation now runs against the shared
schema/a7p.schema.jsonvia the
json_schemapackage instead of hand-writtenA7pValidator/
A7pFieldConstraintsrange checks — the schema is embedded as a
generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
regenerated bypython scripts/compile.py --dart), since no
standalone-codegen JSON Schema validator exists for Dart c_zero_distance_idxno longer bounds dynamically bydistances.length - 1; now the static 0–255 range, matchingpy/jsproto/profedit.protonow lives once at the repo root instead of a
local copy underproto/
Added
- Test suite (
test/a7p_validator_test.dart, 9 tests) covering real
protobufPayloadobjects, including thec_idx201–254 gap andmv
uniqueness - "Dimensions" table in
README.md(previously missing, unlikepy/js)
Full Changelog: v1.0.2...v1.2.0-alpha.1
- Validation now runs against the shared
-
0.1.005 Jul 2026 -
0.1.0-beta.104 Jul 2026 pre-releaseRelease notes
Open source →dart/
Added
A7pFile—.a7pbinary format encode/decode ([32-byte MD5 hex string][protobuf bytes])A7pValidator— profile field validationA7pFieldConstraints— per-field raw wire scale (fractionDigits) and independent UI display precision (uiFractionDigits)- Generated protobuf bindings (
lib/src/proto/) fromproto/profedit.proto bin/generate_proto.dart— regenerates the protobuf bindings; cross-platform replacement for the shell-basedprotocinvocation used in the original monorepo Makefile- Test suite (
test/a7p_field_constraints_test.dart) - CI workflow (
.github/workflows/ci.yml): analyze, format check, test (Linux/macOS/Windows), pub.dev dry-run jobs
Initial extraction from
archerbc2_flutter/packages/a7pinto a standalone package.