PackageTrack
Sign in Get early access

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 2026
Release Pre-release

Releases

latest 8
  1. 1.2.4 16 Jul 2026
    Release notes

    py/

    Removed

    • yupy dependency and the hand-written src/a7p/yupy_schema.py validator it
      backed — unused by the public a7p.validate() path since the migration to
      schema_validator.py (fastjsonschema/jsonschema against
      schema/a7p.schema.json), and kept only as a reference/regression suite
      (tests/test_yupy_schema.py) until now
    • exceptions.YupyViolation and exceptions.A7PYupyValidationError — folded
      into plain Violation/A7PValidationError; A7PValidationError no longer
      splits errors into .violations/.yupy_violations/.all_violations, just
      one .violations list

    Changed

    • CLI flag --disable-yupy renamed to --disable-validator

    js/

    Changed

    • Regenerated src/generated/a7p_schema_validator.cjs via
      scripts/compile.py — the only source change was
      schema/a7p.schema.json's x-decision/x-discrepancy annotation text,
      updated (not dropped) to record in the past tense that py's
      yupy_schema.py/test_yupy_schema.py (referenced there as context for why
      these bounds were picked) have since been deleted, see py/ above. These
      x-* keys are documentation only, ignored by ajv — no validation
      behavior changed.

    dart/

    Changed

    • Regenerated lib/src/generated/a7p_schema.g.dart via scripts/compile.py
      — same annotation-only schema/a7p.schema.json change as js/ above, no
      validation behavior changed (x-* keys are ignored by json_schema).

    go/

    Changed

    • Regenerated a7p/generated/a7p_schema.g.json via scripts/compile.py
      same annotation-only schema/a7p.schema.json change as js/ above, no
      validation behavior changed (x-* keys are ignored by
      santhosh-tekuri/jsonschema).
      Full Changelog: v1.2.3...v1.2.4
    Open source →
    Release notes

    py/

    Removed

    • yupy dependency and the hand-written src/a7p/yupy_schema.py validator it backed — unused by the public a7p.validate() path since the migration to schema_validator.py (fastjsonschema/jsonschema against schema/a7p.schema.json), and kept only as a reference/regression suite (tests/test_yupy_schema.py) until now
    • exceptions.YupyViolation and exceptions.A7PYupyValidationError — folded into plain Violation/A7PValidationError; A7PValidationError no longer splits errors into .violations/.yupy_violations/.all_violations, just one .violations list

    Changed

    • CLI flag --disable-yupy renamed to --disable-validator

    js/

    Changed

    • Regenerated src/generated/a7p_schema_validator.cjs via scripts/compile.py — the only source change was schema/a7p.schema.json's x-decision/x-discrepancy annotation text, updated (not dropped) to record in the past tense that py's yupy_schema.py/test_yupy_schema.py (referenced there as context for why these bounds were picked) have since been deleted, see py/ above. These x-* keys are documentation only, ignored by ajv — no validation behavior changed.

    dart/

    Changed

    • Regenerated lib/src/generated/a7p_schema.g.dart via scripts/compile.py — same annotation-only schema/a7p.schema.json change as js/ above, no validation behavior changed (x-* keys are ignored by json_schema).

    go/

    Changed

    • Regenerated a7p/generated/a7p_schema.g.json via scripts/compile.py — same annotation-only schema/a7p.schema.json change as js/ above, no validation behavior changed (x-* keys are ignored by santhosh-tekuri/jsonschema).
    Open source →
  2. 1.2.3 14 Jul 2026
    Release notes

    schema/a7p.schema.json's required string fields (profile_name,
    cartridge_name, bullet_name, short_name_top, short_name_bot,
    caliber) wrongly carried minLength: 1, rejecting the empty string —
    real device profiles ship these unset. Fixed at the source and
    regenerated into all four packages via scripts/compile.py.

    py/

    Fixed

    • caliber, profile_name, cartridge_name, bullet_name,
      short_name_top, and short_name_bot now accept an empty string,
      matching real device profiles — _compiled_schema.py and the bundled
      a7p.schema.json regenerated from schema/a7p.schema.json

    js/

    Fixed

    • Same minLength fix as py/, regenerated into
      src/generated/a7p_schema_validator.cjs

    dart/

    Fixed

    • Same minLength fix as py/, regenerated into
      lib/src/generated/a7p_schema.g.dart

    go/

    Fixed

    • Same minLength fix as py/, regenerated into
      a7p/generated/a7p_schema.g.json
      Full Changelog: v1.2.2...v1.2.3
    Open source →
    Release notes

    schema/a7p.schema.json's required string fields (profile_name, cartridge_name, bullet_name, short_name_top, short_name_bot, caliber) wrongly carried minLength: 1, rejecting the empty string — real device profiles ship these unset. Fixed at the source and regenerated into all four packages via scripts/compile.py.

    py/

    Fixed

    • caliber, profile_name, cartridge_name, bullet_name, short_name_top, and short_name_bot now accept an empty string, matching real device profiles — _compiled_schema.py and the bundled a7p.schema.json regenerated from schema/a7p.schema.json

    js/

    Fixed

    • Same minLength fix as py/, regenerated into src/generated/a7p_schema_validator.cjs

    dart/

    Fixed

    • Same minLength fix as py/, regenerated into lib/src/generated/a7p_schema.g.dart

    go/

    Fixed

    • Same minLength fix as py/, regenerated into a7p/generated/a7p_schema.g.json
    Open source →
  3. 1.2.2 13 Jul 2026
    Release notes

    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

    Open source →
    Release notes

    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)

    Open source →
  4. 1.2.0 08 Jul 2026
    Release notes

    py, js, and dart merged from separate repos/submodules into this
    monorepo, with full git history preserved — see
    docs/DESIGN-schema-unification.md for the design behind this release.

    py/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via
      schema_validator.py (fastjsonschema-compiled, jsonschema fallback
      for full error lists) instead of the hand-written yupy_schema.py
      (kept temporarily, unused by the public API, as a reference/safety net)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    js/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via a
      compiled, standalone ajv validator (src/generated/a7p_schema_validator.cjs,
      regenerated by scripts/build_schema_validator.mjs) instead of yup
      yup and @types/yup are gone; ajv is a devDependency only (used by
      the codegen script, not shipped)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under src/proto/
    • License changed from ISC to LGPL-3.0, matching dart — both generate
      bindings from the same LGPL-3.0-sourced proto/profedit.proto

    Added

    • First test suite (test/validate.test.ts, 10 tests) covering the same
      categories as dart's validator tests

    Fixed

    • zoom was unbounded (accepted 0–255); now bounded to 0–6, matching the schema
    • bc_cd/mv for CUSTOM drag models were capped ×10 too low
    • b_length minimum was 1 instead of 10
    • ValidationError was imported from yup, not this package's own
      errors.tserror instanceof ValidationError checks in index.ts
      never matched a validation failure as a result; fixed as part of the
      yup removal

    dart/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via the
      json_schema package instead of hand-written A7pValidator/
      A7pFieldConstraints range checks — the schema is embedded as a
      generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
      regenerated by python scripts/compile.py --dart), since no
      standalone-codegen JSON Schema validator exists for Dart
    • c_zero_distance_idx no longer bounds dynamically by distances.length - 1; now the static 0–255 range, matching py/js
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    Added

    • Test suite (test/a7p_validator_test.dart, 9 tests) covering real
      protobuf Payload objects, including the c_idx 201–254 gap and mv
      uniqueness
    • "Dimensions" table in README.md (previously missing, unlike py/js)
      Full Changelog: v1.2.0-alpha.2...v1.2.0
    Open source →
    Release notes

    py, js, and dart merged from separate repos/submodules into this monorepo, with full git history preserved — see docs/DESIGN-schema-unification.md for the design behind this release.

    py/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via schema_validator.py (fastjsonschema-compiled, jsonschema fallback for full error lists) instead of the hand-written yupy_schema.py (kept temporarily, unused by the public API, as a reference/safety net)
    • proto/profedit.proto now lives once at the repo root instead of a local copy under proto/

    js/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via a compiled, standalone ajv validator (src/generated/a7p_schema_validator.cjs, regenerated by scripts/build_schema_validator.mjs) instead of yupyup and @types/yup are gone; ajv is a devDependency only (used by the codegen script, not shipped)
    • proto/profedit.proto now lives once at the repo root instead of a local copy under src/proto/
    • License changed from ISC to LGPL-3.0, matching dart — both generate bindings from the same LGPL-3.0-sourced proto/profedit.proto

    Added

    • First test suite (test/validate.test.ts, 10 tests) covering the same categories as dart's validator tests

    Fixed

    • zoom was unbounded (accepted 0–255); now bounded to 0–6, matching the schema
    • bc_cd/mv for CUSTOM drag models were capped ×10 too low
    • b_length minimum was 1 instead of 10
    • ValidationError was imported from yup, not this package's own errors.tserror instanceof ValidationError checks in index.ts never matched a validation failure as a result; fixed as part of the yup removal

    dart/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via the json_schema package instead of hand-written A7pValidator/ A7pFieldConstraints range checks — the schema is embedded as a generated Dart string constant (lib/src/generated/a7p_schema.g.dart, regenerated by python scripts/compile.py --dart), since no standalone-codegen JSON Schema validator exists for Dart
    • c_zero_distance_idx no longer bounds dynamically by distances.length - 1; now the static 0–255 range, matching py/js
    • proto/profedit.proto now lives once at the repo root instead of a local copy under proto/

    Added

    • Test suite (test/a7p_validator_test.dart, 9 tests) covering real protobuf Payload objects, including the c_idx 201–254 gap and mv uniqueness
    • "Dimensions" table in README.md (previously missing, unlike py/js)
    Open source →
  5. 1.2.0-alpha.2 08 Jul 2026 pre-release
    Release notes

    py, js, and dart merged from separate repos/submodules into this
    monorepo, with full git history preserved — see
    docs/DESIGN-schema-unification.md for the design behind this release.

    py/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via
      schema_validator.py (fastjsonschema-compiled, jsonschema fallback
      for full error lists) instead of the hand-written yupy_schema.py
      (kept temporarily, unused by the public API, as a reference/safety net)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    js/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via a
      compiled, standalone ajv validator (src/generated/a7p_schema_validator.cjs,
      regenerated by scripts/build_schema_validator.mjs) instead of yup
      yup and @types/yup are gone; ajv is a devDependency only (used by
      the codegen script, not shipped)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under src/proto/
    • License changed from ISC to LGPL-3.0, matching dart — both generate
      bindings from the same LGPL-3.0-sourced proto/profedit.proto

    Added

    • First test suite (test/validate.test.ts, 10 tests) covering the same
      categories as dart's validator tests

    Fixed

    • zoom was unbounded (accepted 0–255); now bounded to 0–6, matching the schema
    • bc_cd/mv for CUSTOM drag models were capped ×10 too low
    • b_length minimum was 1 instead of 10
    • ValidationError was imported from yup, not this package's own
      errors.tserror instanceof ValidationError checks in index.ts
      never matched a validation failure as a result; fixed as part of the
      yup removal

    dart/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via the
      json_schema package instead of hand-written A7pValidator/
      A7pFieldConstraints range checks — the schema is embedded as a
      generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
      regenerated by python scripts/compile.py --dart), since no
      standalone-codegen JSON Schema validator exists for Dart
    • c_zero_distance_idx no longer bounds dynamically by distances.length - 1; now the static 0–255 range, matching py/js
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    Added

    • Test suite (test/a7p_validator_test.dart, 9 tests) covering real
      protobuf Payload objects, including the c_idx 201–254 gap and mv
      uniqueness
    • "Dimensions" table in README.md (previously missing, unlike py/js)
      Full Changelog: v1.2.0-alpha.1...v1.2.0-alpha.2
    Open source →
  6. 1.2.0-alpha.1 08 Jul 2026 pre-release
    Release notes

    py, js, and dart merged from separate repos/submodules into this
    monorepo, with full git history preserved — see
    docs/DESIGN-schema-unification.md for the design behind this release.

    py/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via
      schema_validator.py (fastjsonschema-compiled, jsonschema fallback
      for full error lists) instead of the hand-written yupy_schema.py
      (kept temporarily, unused by the public API, as a reference/safety net)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    js/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via a
      compiled, standalone ajv validator (src/generated/a7p_schema_validator.cjs,
      regenerated by scripts/build_schema_validator.mjs) instead of yup
      yup and @types/yup are gone; ajv is a devDependency only (used by
      the codegen script, not shipped)
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under src/proto/
    • License changed from ISC to LGPL-3.0, matching dart — both generate
      bindings from the same LGPL-3.0-sourced proto/profedit.proto

    Added

    • First test suite (test/validate.test.ts, 10 tests) covering the same
      categories as dart's validator tests

    Fixed

    • zoom was unbounded (accepted 0–255); now bounded to 0–6, matching the schema
    • bc_cd/mv for CUSTOM drag models were capped ×10 too low
    • b_length minimum was 1 instead of 10
    • ValidationError was imported from yup, not this package's own
      errors.tserror instanceof ValidationError checks in index.ts
      never matched a validation failure as a result; fixed as part of the
      yup removal

    dart/

    Changed

    • Validation now runs against the shared schema/a7p.schema.json via the
      json_schema package instead of hand-written A7pValidator/
      A7pFieldConstraints range checks — the schema is embedded as a
      generated Dart string constant (lib/src/generated/a7p_schema.g.dart,
      regenerated by python scripts/compile.py --dart), since no
      standalone-codegen JSON Schema validator exists for Dart
    • c_zero_distance_idx no longer bounds dynamically by distances.length - 1; now the static 0–255 range, matching py/js
    • proto/profedit.proto now lives once at the repo root instead of a
      local copy under proto/

    Added

    • Test suite (test/a7p_validator_test.dart, 9 tests) covering real
      protobuf Payload objects, including the c_idx 201–254 gap and mv
      uniqueness
    • "Dimensions" table in README.md (previously missing, unlike py/js)
      Full Changelog: v1.0.2...v1.2.0-alpha.1
    Open source →
  7. 0.1.0 05 Jul 2026
    Release notes

    dart/

    First stable release, no changes from 0.1.0-beta.1.

    Open source →
  8. 0.1.0-beta.1 04 Jul 2026 pre-release
    Release notes

    dart/

    Added

    • A7pFile.a7p binary format encode/decode ([32-byte MD5 hex string][protobuf bytes])
    • A7pValidator — profile field validation
    • A7pFieldConstraints — per-field raw wire scale (fractionDigits) and independent UI display precision (uiFractionDigits)
    • Generated protobuf bindings (lib/src/proto/) from proto/profedit.proto
    • bin/generate_proto.dart — regenerates the protobuf bindings; cross-platform replacement for the shell-based protoc invocation 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/a7p into a standalone package.

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive