refactor(api): narrow concrete adapters for blockfrost mesh utxorpc
Signed-off-by: cryptodj413 <[email protected]>
Signed-off-by: cryptodj413 <[email protected]>
chunk_for_slot hardcoded 21600 slots per chunk, which only holds for mainnet and preprod (k = 2160). Preview chunks span 4320 slots (k = 432), so create-snapshots compared incompatible chunk numbers, wrongly concluded the local cardano-db covered the target slots and skipped the Mithril download, then failed to store the ledger snapshot.
Add a brief README.md to each runnable example under examples/ describing its scope, pipeline (as a mermaid flowchart), prerequisites, and run command. 24 new READMEs plus 4 existing ones (postgresql, redis_cursor, metadata_regex_filter, wasm_basic) reshaped to the same template. With per-example READMEs now serving as the detail pages behind the showcase, drop the now-duplicated "Companion files & setup" section and the "Setup" column from docs/v2/examples/index.mdx, leaving a clean Example | What it shows catalog plus the inline recipes. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The v1 docs referenced relays-new.cardano-mainnet.iohk.io:3001, which no longer resolves (NXDOMAIN), so copy-pasted config snippets and `oura watch` commands fail to connect. Point them at the live backbone.mainnet.cardanofoundation.org:3001 relay. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The v2 docs and CONTRIBUTING still referenced relays-new.cardano-mainnet.iohk.io:3001, which no longer resolves (NXDOMAIN), so copy-pasted config snippets and `oura watch` commands fail to connect. Point them at the live backbone.mainnet.cardanofoundation.org:3001 relay, matching the example configs fixed in #939. (v1 docs are maintained on the lts/v1 branch and fixed separately.) Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
pool_metadata used `type = "Deno"`, a filter that has been removed from the codebase, so the example fails to load. It also pointed `main_module` at a `./filter.js` that doesn't exist (only `filter.ts` shipped). Custom filters are already demonstrated by the `wasm_basic` (WasmPlugin) example, so remove the dead example rather than port it. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The shipped examples pointed at relays-new.cardano-mainnet.iohk.io:3001,
which no longer resolves (NXDOMAIN), so running them verbatim only looped
on "error connecting bearer". Point all 21 N2N example configs (and the two
inlined recipes in the Examples docs) at the live
backbone.mainnet.cardanofoundation.org:3001 relay.
Also fix the two broken source examples:
- dolos_source: the U5C source's `metadata` field is required (no serde
default), so the example failed to load with `missing field metadata`.
Add an empty `metadata` table, point the URL at a local Dolos, and
document the Demeter API-key pattern.
- hydra: the source called `.expect("Can't connect")` on bootstrap, so an
unreachable Hydra node panicked the process instead of erroring. Log the
error and return a retryable WorkerError, matching the rest of the source.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
feat(governance): proposal cards + DB-cached live vote tallies + current-vote UX
Redesign the proposals list into cards (replacing the desktop table) and surface
the "current voting state" two ways, per the requested mockup:
1. Live Yes/No/Abstain tally bar per proposal.
- Blockfrost exposes no aggregate and no voting power, so the tally is counted
by distinct voter (each voter's latest vote) from the proposal votes feed,
labeled "by votes" — not stake-weighted.
- Cached in the DB (new ProposalTally model) via a read-through tRPC router
(governance.getProposalTallies / refreshProposalTally). The list reads the
cache; refreshes are driven by user activity (on load when stale/missing,
and on expand). A 10-min TTL guards both client and server so redundant
activity doesn't re-hit Blockfrost.
2. The wallet's own vote as a "Voted Yes/No/Abstain" pill next to the type chip.
Also refines VoteButton: the segmented control no longer pre-selects Abstain
(it starts unselected and adopts the on-chain vote when known), the primary
button is disabled until a choice is made and its label reflects intent
(Vote / Change to / Re-submit, + Proxy), and vote()/voteProxy() guard against an
empty selection.
Backend: ProposalTally model + migration; governanceRouter registered in root.
NOTE: requires `prisma migrate deploy` (creates "ProposalTally") before the
tally router works in production.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Surface the ready-to-run configs under examples/ in the v2 docs. Adds a new Examples section with a how-to-run intro (run from the example dir), a companion-files/setup guide, categorized index tables linking each example to GitHub with a Setup column, and three inlined end-to-end recipes. Cross-linked from the introduction page. Excludes examples/pool_metadata (references the removed Deno filter) and examples/_deprecated. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Replace the single oura submodule (pinned to v3) with three submodules,
one per version, so each version's docs can track an independent
upstream branch without one branch needing to bundle the others.
- oura-v1 and oura-v2 track main (where docs/v1 and docs/v2 currently
live); can be repointed to lts/v1 once it carries a docs/v1 source.
- oura-v3 tracks v3.
- src/content/docs/oura/{v1,v2,v3} now symlink into their respective
submodule's docs/vN/ folder.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Signed-off-by: KtorZ <[email protected]>
Signed-off-by: KtorZ <[email protected]>
All three findings verified against the implementation: - sql_db: `record` is `null` on reset events (hbs_data renders the reset template with record=None -> null), not omitted. - zeromq: clarify that events without a record (resets) are skipped and not published (zeromq.rs returns early when record.is_none()). - docker: reword the tags intro; only `sha-*` is per-build, while `latest`/`stable`/semver tags are gated by branch/tag triggers. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>