Repository navigation
Releases: AncientPantheon/Codex
Release list
v1.1.0
docs(arweave-core,codex): README Status + version-history entries for v0.3.0/v1.1.0
Fixes the publish workflow's documentation gate, which checks for these
exact lines before allowing npm publish.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.3.0
docs(arweave-core,codex): README Status + version-history entries for v0.3.0/v1.1.0
Fixes the publish workflow's documentation gate, which checks for these
exact lines before allowing npm publish.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v1.0.0
feat(codex,codex-ouronet): v1.0.0 — real Kadena mainnet sends, working end to end
First stable release. Real Kadena mainnet sends (same-chain and
cross-chain) now work for the first time, alongside a full tooltip
canon 2.2 upgrade and a marathon of live-tested chain bug fixes:
- CRITICAL: StoaChain native Send built every transaction's signer
UNSCOPED, never declaring the coin.TRANSFER/coin.TRANSFER_XCHAIN
capability it needed — every native Send would have failed on-chain
with "Managed capability coin.TRANSFER was not installed". Found via
live testing, root-caused against the deployed coin contract and
OuronetUI's own working implementation, fixed. - Same-chain transfers were unreachable on any non-default chain pair
for both Kadena and StoaChain (mutually-exclusive chain pickers
inherited from an OuronetUI cross-chain-only ancestor). - The native Send launcher's tooltip only ever cycled through the two
same-chain variants, silently omitting cross-chain. The tooltip
cycling engine now supports mixing a registry-resolved variant and a
local-stopgap variant in one cycle; cross-chain example values are
now real (a genuine second account, a real chain id) instead of the
registry's generic ghost data. - Kadena reads/writes now default to a real, reachable HTTPS gateway
instead of a direct HTTP-only node that hairpin-NATs from its own LAN
and trips browser mixed-content blocks; the direct node stays
selectable, never the default. Network/timeout errors now name the
node actually being talked to; 4 read functions that silently
swallowed a chain-side envelope failure now log the real reason. - Both chains' cross-chain send toast used to show no progress during
the two longest waits (~100s initiate confirmation, ~100-150s SPV
proof) — now drives a real 3-step progress toast from the moment the
send starts, with completed steps visually distinct from pending ones. - Tooltip canon upgraded to @ouronet/talos-registry@2.2.0: Rule 7 closed
8 silently-no-op account-management launchers; Rule 8 classifies a
live-read "no row for this key" refusal as a friendly answer instead
of an alarming one.
Plus the seedtype-stoic-parity fix (StoaChainSeedType/SeedType
divergence blocking Pythia deploys) and the full prezbom-tooltip/
chainweb-crosschain-transfers project work from earlier this cycle.
See packages/codex-ouronet/CHANGELOG.md and packages/codex/CHANGELOG.md
for full per-change detail.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.11.0
release(codex): v0.11.0 — native Arweave support + direct Stoa/UrStoa movement
Two new chain capabilities land in the public package, both previously
built but never released:
- Native Arweave: keyring (Pure Keys RSA-4096 generate/import, Seeds
with Direct Deterministic RSA + Seed Words), live per-account balances,
native AR send (Fee Included/Fee On Top, real on-chain confirmation
polling, ViewBlock explorer link, balance-freshness indicator), and
watch-list/seed persistence through codex backup — plus a real-mode
default. - Direct native Stoa/UrStoa movement: a Stoa/UrStoa toggle on the
Chainweb Accounts tab (Transfer/Stake/Unstake/Collect, liquid + staked- claimable balances) alongside native Stoa send with sending-chain +
balance display.
- claimable balances) alongside native Stoa send with sending-chain +
Cross-cutting fix: every signed action above, plus Send AR, now pops the
real password prompt on a locked codex and resumes automatically instead
of dead-ending on a static error.
Version bumps: codex 0.10.0->0.11.0, codex-ouronet 0.10.0->0.11.0,
codex-arweave 0.2.0->0.3.0, codex-core 0.2.0->0.3.0, codex-ui
0.4.0->0.5.0. arweave-core unchanged (stays 0.2.0, not in this tag's
publish queue). Full clean build + typecheck + test verified across all
six workspaces before this commit.
See packages/codex/CHANGELOG.md for the full per-feature breakdown.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.10.0
release(codex): v0.10.0 — set meta.gasPrice on all 13 transaction sites
Every signed/submitted transaction in this package omitted meta.gasPrice,
so Pact's client default (1e-8) went on the wire instead of the live Yin
Engine floor — under-priced commands chainweb can reject.
Re-pin: @stoachain/stoa-core + @stoachain/kadena-stoic-legacy >=4.4.0,
@ouronet/ouronet-core >=4.6.0. CodexSigningStrategy.execute() (4.4.0) now
does ONE stoaGasMeta() clock read per call and injects gasPrice +
creationTime into every build(ctx) callback, alongside gasLimit.
All 13 sites now take both from that injected ctx and spread them into
.setMeta({...}) — uniformly, no site calls stoaGasMeta()/safeCreationTime()
itself (single-clock-read guarantee preserved).
This also fixes a latent request-key bug: build() runs twice (gas-measuring
simulation, then real). The old per-call safeCreationTime() yielded a
different creationTime between the two passes, changing the command hash.
The delegating zbom RotateGuard/RotatePaymentKey modals build no command of
their own — fixed upstream in ouronet-core; the re-pin alone corrects them
(verified, not re-fixed).
Adds tests/tx-gas-meta-surface.test.ts: locks the transaction-site inventory
and asserts every site passes gasPrice + creationTime from ctx, so a future
site cannot silently omit the gas contract.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
v0.9.1
release(codex): v0.9.1 — Address Book width/display fixes
Fix long Ouronet addresses bulging past the page width in the Address
Book: the entry-list grid now uses grid-template-columns: minmax(0, 1fr)
so an unbreakable address can no longer expand a card (and the page) —
long rows truncate instead of overflowing. Covers all three sub-tabs
(Ouronet, StoaChain, StoicTags) via the one shared grid.
- Ouronet entries render via OuronetAddressHighlight (same component as
the Ouronet Accounts tab): blue first-3/last-3 highlight, fills width,
centeredstart … endmiddle-truncation. - MiddleEllipsis + OuronetAddressHighlight render directly in final form
(hidden until measured width settles) — no "retract" flash. - Remove the erroneous KADENA:MAINNET chain chip (StoaChain is
mainnet-only).
Bump codex + codex-ouronet to 0.9.1; README/CHANGELOG doc gates updated.
codex-only publish (arweave-core unchanged).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
v0.9.0
feat(codex-ouronet): Pythia consumer-API-key management — Single/Dual API tabs (v0.9.0)
Adds Pythia consumer-API-key management to the Ouronet accounts view.
Two new account sub-tabs (after Standard/Smart):
- Single API — two columns of the codex's Apollo halves (Standard ₱. left,
Smart Π. right), each with search + pagination and live UNLINKED/LINKED/
not-deployed status (DPL-UR.URC_0031). Pick one unlinked half from each side
and Link them into a dual API key. - Dual API — the codex's mutually-linked ₱.|Π. composite keys, read via the new
DPL-UR.URC_0033_DualApiKeyMapper with Pythia prices from URC_0034_PythiaPrices.
Shows consumer-lane + active/revoked status with per-key Rename lane / Revoke.
Three ZBOM transaction modals, authorized by BOTH half-owners (P|TS):
- Link (no fee), Rename lane (100 STOA, undiscounted, 4-way split), Revoke
(1 IGNIS kill-switch). Costs + split receivers are read from the on-chain INFO
so they never drift when prices change. Both owners' guards are resolved from
chain, deduped when shared, and any missing owner key is requested via the
standard manual-key input. Rename mirrors the proven deploy modal's patron +
payment-key + coin.TRANSFER split; Revoke mirrors the IGNIS-only rotate ops.
Post-transaction refresh: a usePostTxRefresh hook subscribes to the onTxConfirmed
event (previously fired into the void), so URC_0027 account state, URC_0031
API-key status, and the dual-link/price reads all re-fetch automatically once any
Codex tx confirms — no manual reload.
Also: isApiKeyRegistered reads the mapper's explicit is-registered flag
(owner-account fallback); linkage detected by "counterpart is an Apollo account"
rather than a sentinel string (fixes registered-but-unlinked halves reading as
linked); SigningZone no longer shows a permanent "Waiting for account data…"
spinner for owner-only (no-patron) transactions; Rename/Revoke disable on an
already-revoked link; a clear "half not in this Codex" blocker replaces a stuck
spinner for cross-owner keys. Playground vite.config port-resolution fixed (the
constructors/ reorg left it one dir too shallow, silently falling back to :5173).
All three tx types live-tested on-chain by the owner. Adversarially reviewed
(no injection, no one-owner-signing bypass, no duplicate signers, no secret
leakage, no listener leak). codex-ouronet + codex bump 0.8.1 -> 0.9.0 (MINOR,
additive). Full workspace typecheck/build green; codex-ouronet 724 tests green.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.8.1
fix(codex-ouronet): show virgin (never-funded) payment keys, don't hide them (v0.8.1)
The Ouronet account card hid an account's entire Payment Key section when the
chain's payment-key-existance flag was false. But every registered Ouronet
account is ASSIGNED a payment key at activation; payment-key-existance reports
only whether that payment-key ADDRESS has ever held STOA (has a coin-table row)
— i.e. virgin (never funded) vs funded — NOT whether a payment key exists. So a
virgin payment key vanished from the card entirely, even though it exists.
Fix: surface the payment-key address whenever URC_0027 returns one, regardless
of funding (hydrate no longer gates stoaChainLedger on payment-key-existance).
The funding flag now drives only the balance and a new subtle "virgin · never
funded" marker — never whether the section shows. This also makes Payment Key
consistent with every sibling chain section (Guard/StoicTag/Sovereign/Governor),
which already render an empty/placeholder state rather than disappearing.
Reproduces identically in OuronetUI, Mnemosyne, and the Codex playground because
all three read the same URC_0027 chain data through this shared card — hence the
fix lands here in the Codex package, and consumers pick it up on their next bump.
TDD: new ui-ouronet-accounts-payment-key.test.tsx mocks URC_0027 to return a
virgin payment key (existance:false, real payment-key address) and asserts the
address renders with the virgin marker; a funded row asserts the balance shows
with no marker. codex-ouronet 68 files / 724 tests green; full workspace
typecheck + build green.
codex-ouronet and codex both bump 0.8.0 -> 0.8.1 (PATCH, bug fix).
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.8.0
feat(codex-ouronet): server-safe pre-bound headless Kadena KeyResolver (v0.8.0)
Adds createHeadlessKadenaResolver, exported from @ancientpantheon/codex/ouronet:
a pre-bound Kadena KeyResolver ({ getKeyPairByPublicKey, listCodexPubs }) that
headless Khronoton automatons (Pythia, Mnemosyne) drop straight into the engine's
resolver seam. A consumer supplies only loadSnapshot + getPassword thunks and
binds ZERO @StoaChain crypto itself — all seedType-aware derivation delegates to
Codex's one canonical createHeadlessCodexResolver.
This is Topic 1 of Pythia's khronoton-keyresolver-delegation: consumers had each
hand-rolled a KeyResolver that re-derived seeds koala-only, ignoring seedType, so
a chainweaver/eckowallet operator seed derived a different key and refused to
sign (a real live gas-payer failure; Mnemosyne carries the latent duplicate).
Delegating to Codex removes the reimplementation-per-consumer root cause.
- Extracted the real @StoaChain deps binding (REAL_STOA_DEPS,
buildExtendedForeignSigningKey, the shared HEADLESS instance, the core->ouronet
key-missing remap) out of the browser InternalCodexResolver.ts into a new
server-safe headlessKadenaDeps.ts that BOTH resolvers consume — one derivation
path, no duplication. InternalCodexResolver behaviour is unchanged (a pure
structural refactor; its own resolver-internal.test.ts stays green). - Fire-time: loadSnapshot + getPassword are re-invoked per call, never cached, so
a codex edit is picked up next tick and plaintext never outlives the call. - Wrong-key refusal guard re-added at the delegation boundary: if the codex
derives a different pubkey than requested (corrupt codex / wrong seedType tag),
it refuses to sign rather than return a mislabeled key (secret-free error). - Server-safe: importing from /ouronet loads no React/DOM (proven by a plain-Node
import of the built public dist).
Tests (real crypto end-to-end): koala + chainweaver + eckowallet SEED-derived
accounts each resolve and produce a VALID ed25519 signature (the exact non-koala
scenario that caused the live bug), chainweaver pure-import 128-hex WASM path,
foreign/pure, fire-time re-read counts, wrong-key refusal, and not-found counts.
codex-ouronet 67 files / 722 tests green; full workspace typecheck + build green.
codex-ouronet and codex both bump 0.7.0 -> 0.8.0 (MINOR, additive, no breaking
changes). Implements constructors/Pythia/docs/HANDOFF-codex-headless-kadena-resolver.md.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
v0.7.0
fix(codex): bump README Status block to 0.7.0 for the publish gate
publish.yml's doc-consistency gate requires the ## Status block to
already reference the new version before the tag is pushed (checked via
grep against packages/codex/README.md, alongside the version-history
entry and CHANGELOG's first heading). I'd left Status at 0.6.1 reasoning
it was "still accurate pre-publish" -- wrong call, this repo's own
convention (enforced by the gate, not just style) is to bump it in the
same commit as the version. First v0.7.0 publish run
(run 30617786799) failed here, before ever reaching npm -- confirmed
nothing published (npm view still shows 0.5.0..0.6.1 only). Verified all
3 doc gate regexes pass locally before pushing this.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com