Skip to content

Releases: blazenxt/vault100

Vault100 v2.1.0 β€” the fine ladder (111 key-turning options)

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 06:21

v2.1.0 β€” the fine ladder: 111 key-turning options

Requested: "add 100+ options" to the Argon2id key-turning dropdown. Delivered β€”
111 choices:

  • The 3 named presets: standard (64 MiB Γ— 3) Β· paranoid (256 MiB Γ— 4) Β·
    max (auto-tuned & device-verified, from v2.0.4)
  • The fine ladder β€” 108 notches: 18 memory tiers (16 β†’ 1024 MiB) Γ— 6 turning
    counts (1–6), rendered as a graded optgroup, weakest β†’ heaviest
    (β„– 001 Β· 16 MiB Γ— 1 turn … β„– 108 Β· 1024 MiB Γ— 6 turns)

Interop by design: ladder choices ride as raw KDF parameters, which Vault100
has always stamped into the vault header β€” so a vault sealed at any notch opens
byte-exactly in the CLI and desktop app (and vice versa, the proven property).
Pick heavy notches with sense: they cost time and memory on every open, and
small devices may refuse the top tiers (the clerk reports honestly if so).

Verified

Check Result
Headless-Chromium E2E: 111 options sorted & rendered βœ…
Ladder notch 128 MiB Γ— 4: encrypt β†’ download β†’ decrypt βœ… byte-exact
max + cascade still green, zero console errors βœ…
CLI: vault100 info reads web-made ladder vault (128 MiB Γ— 4, p=4) βœ…
CLI: vault100 decrypt restores it βœ… byte-exact, original filename preserved

No Python engine changes; the 49-test suite and all prior interop proofs stand.

v2.0.24 β€” The pocket annex (Android) πŸ“±

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 16:23

The pocket annex πŸ“± β€” Vault100 becomes a real Android app.

A genuine, signed .apk β€” the entire seal bureau folded into a handset:

  • Zero Android permissions β€” not even INTERNET. Every page, script and primitive ships inside the APK; the counter is offline by physics, not policy. Same worker, same vaults, byte-for-byte with the CLI/web/desktop engines.
  • Ticketed save relay β€” sealed vaults, armors, quorum slips, notary stamps, record books… every finished filing lands in the system save tray.
  • Inspectable seal β€” verify any bundle before sideloading:
    apksigner verify --print-certs Vault100-2.0.24.apk
    signer cert SHA-256: 2414563d5860443dcc3ffc78941274a3ed894f8d782b5f31507433dc93c52c7f
  • Requirements: Android 7.0+ Β· size 655 KB Β· install via adb install or direct sideload.

This release's APK digest (SHA-256): 197dd4ff6efe1ccceff93331eba26e6057b81f1c045e9d2a038e28005cf027c1
(published here β€” and not inside the bundle itself β€” because a hash cannot be stamped into the very file it measures)

Also in 2.0.24: android/ no-Gradle build (./build.sh β†’ signed aligned apk), VB.download pocket-annex relay, get page's fifth way ("in the handset", signer digest printed), suite stamps 2.0.24 across the 12 counters. 84/84 engine proofs green.

Live counter: https://vault100.blazenxt.in/

v2.0.23 β€” The Notary (ed25519 endorsements)

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 15:11

Series 3, desk 1 of 4 β€” the notary πŸ–‹οΈ. Prove whose paper a vault is β€” and that not one byte has moved since β€” without ever opening it.

What's new

  • vault100/notary.py β€” mint a personal seal (V100SEAL1 + 32-byte seed, written 0600, KEEP SECRET) and its public stamp (V100STAMP1 + pk, share freely). Endorse any vault/file into a detached 108-byte .v100sig (V100SIG1 | epoch | pk | signature). Attest with optional stamp-pinning.
  • CLI β€” vault100 notary mint me.v100seal Β· vault100 notary endorse papers.v100 -s me.v100seal Β· vault100 notary attest papers.v100 [--stamp me.v100stamp] β€” batch verdicts, exit codes, refusal dossiers (doctored vault / foreign seal / torn or forged paper).
  • Web β€” Annex D instrument (i): three desks β€” mint (two downloads + fingerprint), endorse (vault+seal β†’ .v100sig), attest (vault+sig+optional stamp β†’ green ENDORSEMENT HOLDS / red REFUSED verdict cards). Worker ops notary-mint / notary-sign / notary-verify, seal bytes zeroed, sweep burns picks and verdicts.
  • Interop β€” ed25519 detached signatures are deterministic: the desk CLI and the web notary produce byte-identical endorsements of the same paper with the same seal (cross-attested both directions in tests).
  • Features page β€” Schedule A gains provision β„– 16.

Verification

  • 84/84 pytest (7 new NotaryTests: mint roundtrip+0600 perms, holds, doctored refusal, foreign-seal/stamp mismatch, torn/forged paper, determinism, full CLI flow)
  • 14/14 new headless-Chromium notary E2E Β· courier 40/40 Β· quorum 19/19 Β· regress 11/11 β€” local + live
  • fixed-seed cross-vector: Python endorsement == JS endorsement, every byte

The guardrails stand: zero-knowledge Β· honest claims Β· no telemetry β€” attestation proves custody, never reads contents.

v2.0.22 β€” Desk box hardening (GUI night-ledger + CLI verify)

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 14:10

Series 2, desk 4 of 4 β€” the desk box hardened, plus the custody clerk. The Tkinter GUI now wears the bureau's night-ledger livery, and verify proves any vault opens clean without writing a single plaintext byte.

What's new

  • GUI night-ledger theme β€” full clam-based restyle: desk-felt background, form-paper wells, ruling lines, carbon ink, official stamp-red accents (matches the web counter). Every tab dressed: Seal / Open / Shred / Tools / About.
  • Live strength bar β€” per-score colored bar + crack-time label beside the password wells.
  • Stopwatch bench β€” Tools β†’ β€œβ± Engage the stopwatch” runs cipher-throughput + Argon2id notch trials and files the report in the tab's record.
  • Recently-handled forms β€” MRU comboboxes on both filing tabs and the Tools vault desk, kept in your own ~/.config/vault100/recent.json (cap 8, XDG-aware). The bureau crosses nothing out β€” your own desk remembers.
  • verify everywhere β€” python -m vault100 verify secret.pdf.v100 backup.v100asc and Tools β†’ β€œVerify integrity (no files written)…”: each chunk is decrypted+authenticated exactly as a real open would, but plaintext falls into a null sink. Works on .v100 and .v100asc armor alike; batch mode, per-file verdicts, exit code 0 only if ALL proven.
  • get.html β€” engine card learns verify + share split; desktop card describes the new livery.
  • GUI now stamps its title with the live __version__.

Verification

  • 77/77 pytest (6 new CustodyVerifyTests: null-sink writes nothing, tamper/wrong-pw refusal, armored vaults, CLI batch exit codes, GUI module import + recents round-trip) Β· GUI constructs fully under xvfb (theme, strength bar, recents) Β· courier 40/40 + quorum 19/19 E2E re-green Β· full 12-page audit

The guardrails stand: zero-knowledge Β· honest claims Β· no telemetry Β· and now, proof without traces.

v2.0.21 β€” The courier's corner (QR hand-off + record receipts)

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 13:45

Series 2, desk 3 of 4 β€” the courier's corner. Short scraps now travel to your phone by camera, never by wire β€” plus stamped paper trails and friendlier counters.

What's new

  • QR stamps β€” Annex D instrument (h), β€œthe courier's corner”: paste any short scrap β†’ stamped QR square (ECC M, β‰ˆ1,200 ch royal capacity) with module-count report + .svg download. Vendored MIT qrcode-generator (Kazuhiko Arase) β€” fully offline, SW-precached. QR travels eye-and-lens only.
  • Hand-offs everywhere β€” every quorum slip card gains a QR β†— button (slip β†’ stamp in one click, β€œcarrying: slip k of n”); the armorer (Form 100-M) stamps short armor inline; over-capacity scraps get a polite refusal with advice.
  • Clerk's record download β€” every counter's record book now carries β€œβ­³ record (.txt)”: a bureau-masthead receipt with window, ISO timestamp, punched serial (β„– V100·…·R·…), engine version and the zero-retention clause.
  • Drag-anywhere intake β€” files dropped anywhere on the seal/open/rewrap counters are filed (custody veil + β€œdelivered to the counter floor”); bound intake zones keep first claim β€” the double-filing bug is dead.
  • get.html β€” real β€œβ­³ Install the counter…” PWA button wired to beforeinstallprompt, with a sleeping-state hint explaining the menu path.
  • Fixes β€” rewrap counter inspected each vault head twice (now once); slip joiner dead code swept; sweep burns courier stamps along with slips, wells and reprints.
  • Features page β€” Schedule A gains provision β„– 15.

Verification

  • 40/40 new headless-Chromium courier E2E (local + live) Β· 19/19 quorum Β· 11/11 regress Β· 11/11 armorer Β· 29/29 nav Β· 25/25 SEO Β· 30/30 icons Β· 71/71 pytest
  • whole-site 12-page crawl: zero console errors, zero CSP violations

The guardrails stand: zero-knowledge Β· honest claims Β· no telemetry Β· camera beats cable.

v2.0.20 β€” The quorum press (Shamir M-of-N slips)

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 13:14

Series 2, desk 2 of 4 β€” the quorum press. Break one secret into N stamped slips; any M of them reprint it, fewer learn nothing at all β€” Shamir secret sharing over GF(2⁸), pressed locally everywhere.

What's new

  • Python engine β€” vault100/shamir.py: GF(2⁸) Shamir (AES polynomial, generator 3), crc32-stamped slips (V100S1 binary + BEGIN V100 SHARE k OF n text slips, 64-col base64 like the armor), press-id guards against mixing pressings, Horner-table split / Lagrange-at-zero join.
  • CLI β€” vault100 share split combo.txt -n 5 -m 3 (writes combo.slip-k-of-5.v100s or --stdout) and vault100 share join slips... -o out (several slips may ride in one file; junk lines tolerated).
  • Web β€” Annex D instrument (g), β€œThe quorum press”: strike desk (type/paste a secret or press a fresh 256-bit one; 2–12 slips Γ— quorum 2–N) mints serial-punched slip cards with copy/download/heap-download; reprint desk satisfies the quorum from pasted slips; worker ops share-split/share-join, secret bytes transferred + zeroed, sweep/Esc-Esc burns slips and reprints.
  • Interop β€” slips are byte-exact between the web press and the desk CLI, both directions (verified in CI).
  • Features page β€” Schedule A gains provision β„– 14.

Verification

  • 71/71 pytest (new QuorumPressTests Γ—11: GF laws incl. AES vector, all C(5,3) subsets, below-quorum refusal + flat-noise spot check, lengths 1–4096, tamper/mixing/doctored-title rejection, CLI roundtrip)
  • 19/19 headless-Chromium quorum E2E Β· 11/11 regress Β· 11/11 armorer Β· 29/29 nav Β· 25/25 SEO Β· 30/30 icons β€” local + live
  • Python↔JS cross-interop byte-exact both directions (unicode secrets intact)

The guardrails stand: zero-knowledge (slips and secrets never leave the room) Β· honest claims Β· no telemetry.

Vault100 v2.0.19 β€” The Armorer's desk

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 12:49

v2.0.19 β€” Feature series 2, pack 1/4: The Armorer βš”οΈ

V100A1 ASCII armor β€” fold any message (or file) into paste-anywhere text:

-----BEGIN V100 ARMOR-----
VjEwMEVOQzICAQAgAAABAAAABABNylTb5aR/fYQaSJmOsJiDBEFX0VZi6rFjFzpy…
-----END V100 ARMOR-----

Web β€” Form 100-M Β· the armorer's desk (6th window)

  • The stamper: type/whisper text β†’ mint armor (108-notch ladder, optional double-lock) β†’ copy / download .v100asc
  • The opener: paste armor (furniture-tolerant) β†’ combination β†’ readable message, furnace-copied
  • ≀ 512 KiB letters; keyfiles deliberately not offered here β€” armor must travel alone

Engine + CLI

  • crypto_core.armor_encode/decode + streaming _ArmorWriter / _ArmorReader (64-column, whitespace/furniture tolerant β€” verified byte-identical one-shot ⇄ streaming)
  • encrypt --armor writes .v100asc; decrypt auto-detects armor; info flags it; passwd refuses politely (re-seal instead)

Interop proven both directions: web-minted armor opens byte-exact in the CLI; CLI --armor opens byte-exact in the browser (unicode + tabs intact).

Housekeeping: sweep now empties text wells (textareas) β€” plaintext never survives Esc, Esc Β· 12 pages consistent (window tab, directory row, registry footer, sitemap Γ—12, SW precache).

Tests: 60/60 pytest Β· 11/11 armorer E2E Β· 29/29 nav Β· 25/25 SEO Β· 11/11 regression Β· 30/30 icons.

Vault100 v2.0.18 β€” the wax-seal icon kit

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 12:22

v2.0.18 β€” Icons upgrade πŸ•ΉοΈ

The wax-seal medallion β€” a scalloped rubber-stamp seal with the bureau's keyhole, drawn in pure vector (no bitmap fonts, crisp at every size):

  • icon.svg / icon-maskable.svg β€” the master marks (sheet + perforation ring; full-bleed maskable)
  • PNG family: 16/32/180 (apple touch)/192/512 + maskable 192/512 β€” any variants have transparent corners, maskable is safe-zone verified (129px < 205px)
  • All 11 pages: 4-tag favicon kit (svg+xml, PNG 32, PNG 16, apple-touch-icon) β€” the old data-URI dot is retired
  • manifest.json: purposes any+maskable, all srcs resolve, renamed "Vault100 β€” The Seal Bureau"
  • Service worker precaches the whole icon family

Tests: 30/30 icons E2E Β· 28/28 nav E2E Β· 10/10 regression Β· 55/55 pytest.

Vault100 v2.0.17 β€” public-website pages & navigation

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 12:04

v2.0.17 β€” Public-website UI upgrade

Six new registry pages β€” everything a public website carries, each in the bureau's own stock:

  • about.html β€” the charter copy: story, zero-knowledge creed Γ—3, three bodies, post-office box (issues / advisories)
  • features.html β€” Schedule A: 12 provisions (container, 111 notches, cascade, keyfiles, instant recombinate, gzip/folder, tray, timekeeper, sec-ops, themes, interop, self-host)
  • faq.html β€” 10 questions heard at the counter, with FAQPage JSON-LD
  • get.html β€” take-home bundle: PWA install, CLI engine, desktop box, self-host snippets
  • privacy.html β€” Writ β„– 100-P (9 clauses, honest hosting-log exception)
  • terms.html β€” Terms of counter service β„– 100-T (8 clauses)

Navigation

  • Registry strip under the window tabs on every page: about Β· features Β· faq Β· β­³ get vault100 (red CTA) Β· privacy Β· terms, with active-state stamping
  • Three-column registry footer (counters / bureau / instruments) + Β© 2026 BlazeNXT Β· MIT on all 11 pages

Infra: sitemap 5β†’11 URLs Β· service-worker precaches all 11 pages Β· all pages get the full meta kit (canonical, OG, Twitter)

Tests: 55/55 pytest Β· 28/28 nav E2E Β· 24/24 SEO E2E Β· 10/10 regression E2E (headless Chromium).

Vault100 v2.0.16 β€” public launch & search-engine kit

Choose a tag to compare

@blazenxt blazenxt released this 16 Jul 11:41

v2.0.16 β€” Public launch release πŸš€

Search-engine kit (web)

  • Per-page meta kit: unique titles/descriptions, robots index,follow, canonical URLs, Open Graph + Twitter cards (1200Γ—630 bureau cover)
  • robots.txt + sitemap.xml (5 URLs on vault100.blazenxt.in)
  • JSON-LD structured data: SoftwareApplication + FAQPage + WebSite
  • Crawlable "recorded charter" on the front desk β€” about / how-it-works / crypto layers / 6-question FAQ
  • server.mjs: proper application/xml (+gzip) for the sitemap

Launch docs (repo)

  • README overhaul: badges, live link, screenshots, contents, changelog
  • SECURITY.md (private-vulnerability-reporting policy) Β· CONTRIBUTING.md Β· CODE_OF_CONDUCT.md
  • Issue templates (bug/feature) + PR template Β· CI workflow included (add via web UI β€” token had no workflow scope)

Tests: 55/55 pytest Β· 18/18 SEO E2E Β· 10/10 regression E2E.