Ecosystem metrics
- New Repos
- 25
- New
- Commits
- 658
- down 21.2%
- Releases
- 2
- down 71.4%
- Contributors
- 51
- up 0.0%
- Merges
- 17
- down 37.0%
Activity Overview
Commits and releases over time
- Commits
- Releases
- Authors
Repository Explorer
No repositories match that filter.
11087 commits in all time
May 02, 2026 09:41 – Jul 31, 2026 09:41 UTC
Merge cb73e89aa341616fd971a737ba219250fd6e61f2 into eb903edcae43b254e15ba4c87840e3cd20a5dfc9
c7a1d8b6
pull/322/merge
4/628 ++ 232 --
Changed notices to LinkCard. Title changes
cb73e89a
docs/account-management-update-code-example
1/31 ++ 16 --
feat: frontend: election-specific views on the period detail page
Implements the election frames of the Period Detail design handoff (claude.ai/design 'Period Detail.dc.html', frames 1/3/6). Each race on an election ballot now renders as its own card — E.0N chip, name, seat count and candidate count — instead of a bare h3 over a flat list of topic cards. What sits inside depends on the state: - scoring (active, eligible, simple) — one CandidateBallotCard per candidate: avatar, statement, and Support/Veto/Abstain chips that tint the card once picked. A legend band prices the chips (+1/-1/0) and a footer tracks 'n of m candidates scored'. - advanced — the existing TopicVoteCard allocation inputs, unchanged. Splitting power across the three options is still a valid ballot, and single-choice chips cannot express it. - read-only (logged out, ineligible, ended) — ElectionStandings: the candidates ranked by net score with 'in seat range' pills and a seat-cutoff note, replacing per-candidate tally bars that ranked nothing. - upcoming — the plain option list, inside the same card shell. Labels come off the on-chain options via classifyOption rather than being hardcoded, so a period seeded before the Veto rename still reads 'Against' in its own legend and standings. Grouping is presentation only: every card stays keyed by on-chain topic index, so ballot state and the vote() payload are untouched.
a5714bec
worktree-frac-design-import
4/456 ++ 23 --
chore: rename the election Against option to Veto
Election candidate ballots are Support / Veto / Abstain instead of Support / Against / Abstain, across the Manage UI that writes the on-chain options, the results/scoring copy, the docs pages, the Storybook fixtures and the sample-data seeders. ElectionCandidate.against is renamed to .veto to match. utils/vote.ts is untouched on purpose: its NO_RE already matched both 'against' and 'veto', so periods already on chain with Against labels keep tallying and colouring correctly alongside new Veto ones.
1d670fad
worktree-frac-design-import
13/47 ++ 49 --
feat: frontend: elections in the voter-facing UI
A period runs elections when its body carries `elect`; each candidate names its
race through its own topic body's `e`. The results page understood that, and so
did the operator UI — the ballot and every period summary did not. A voter
meeting a two-election period saw seven undifferentiated "topics" with no way to
tell which seat anyone was standing for.
"Candidate" is a presentation word for a topic in an election period: the
contract, the ABI and every SDK handle stay `topicIndex`, so this is a copy
change, not a rename. utils/periodTerms.ts holds the noun and the count label in
one place — the two existing `isElection ? … : …` ternaries had already drifted
apart (the add-candidate form said "Add topic" in its disconnected state).
Ballot (VotePeriodDetail):
- candidates group under per-race headings via the SDK's groupCandidates,
matching the results page. Ordering only: the state arrays, buildVotes() and
the vote() payload stay flat and keyed by on-chain topic index.
- candidates whose `e` is missing or names no declared election are dropped by
groupCandidates but still rendered, in a trailing section. The contract
requires every topic row to carry the voter's full power, so leaving one off
the ballot would make the period unvotable.
- the T.0N ordinal chip is suppressed for candidates — it would number straight
through races that are ranked separately.
- the two near-identical "View Ranked Results" blocks (one right-aligned, one
not) become one strip that also names each race and its seats.
Summaries now read "2 elections" / "5 candidates" / "3 topics": the period list
rows and column header, both heroes, the detail and results meta lines, the
sidebar info card, and the operator table. All of them already fetched the
period body except the operator table, which gains one read per row and a
TODO(perf) naming the batched reader that would collapse it.
Manage:
- assignment warnings move onto the page. They existed only inside the
Mark-ready dialog, so an operator who never opened it had no idea a candidate
was running in no race — and once the period is ready and a vote lands, the
topic set is frozen and it can no longer be fixed.
- the fix-ability message keyed off canEdit, which folds in `!!sdk`, so a
disconnected visitor was told the period was "no longer editable" when it was
simply not connected. Split into `editable` vs `canEdit`.
- the remaining unconditional "topic" strings (remove-confirm, body dialog,
placeholders, the disconnected add form) go through the shared terms.
Docs: /docs/periods gains an elections section and the glossary gains Election
and Candidate. Both spell out the rule that surprises people — you cast on every
candidate, including races you don't care about, and Abstain is how you sit one
out.
Also: deploy-sample-data declared `{ t: 'EAC', s: 1 }` while its own prose,
comments and console output all described a 2-seat treasury committee;
detailScenario accepted `elect` but hardcoded its topics, so the one election
story flagged an election over two untagged reward-policy topics. Both fixed,
plus multi-election detail stories and election rows in the list fixture.
Typecheck, lint and prettier are clean and the two ballot play-tests still pass.
Verified against localnet sample data (the active two-election period 2),
including a throwaway draft period carrying an untagged candidate to exercise
the manage callout and the trailing ballot section.
44b8c405
worktree-frac-design-import
21/511 ++ 159 --
Sync: Bump go-algorand-sdk to main for pqsig (#199)
The nightly algod now emits the pqsig key in SignedTxn. The previously pinned SDK (2026-06-24) predates the post-quantum signature types, so go-codec rejected the unknown key and block import failed with "no matching struct field found when decoding stream map with key pqsig".
415873ac
master
2/3 ++ 3 --
Sync: Bump go-algorand-sdk to main for pqsig
The nightly algod now emits the pqsig key in SignedTxn. The previously pinned SDK (2026-06-24) predates the post-quantum signature types, so go-codec rejected the unknown key and block import failed with "no matching struct field found when decoding stream map with key pqsig".
63ec8b17
pull/199/head
2/3 ++ 3 --
Merge 9728aa7470cfc134a39329ea5e292540048453c3 into eb903edcae43b254e15ba4c87840e3cd20a5dfc9
44b0cf68
pull/319/merge
3/312 ++ 12 --
docs: replace assets related-docs list with a What's Next card grid
9728aa74
assets-core-concept
1/25 ++ 5 --
docs: drop transaction dispatch detour from the assets intro
ecdc08e8
assets-core-concept
1/0 ++ 2 --
feat: add in liquid stream chat functionality (#372)
e6966348
main
31/1,512 ++ 124 --
docs: fix wording nits on the assets page
4e296743
assets-core-concept
1/6 ++ 6 --
Merge 6eb0a03fe777391b5af2a9b8dbe20ea6152b53c2 into b0a3e71a91adfd1dfb97b5060d054618c2a147aa
8bd5b875
pull/66/merge
10/1,149 ++ 1,264 --
chore(deps): Update all non-major dependencies
6eb0a03f
renovate/all-non-major-dependencies
10/1,149 ++ 1,264 --
Merge 2d7487558b41231063af2ae9848a6f57b0afe2fa into eb903edcae43b254e15ba4c87840e3cd20a5dfc9
24e638d5
pull/319/merge
3/294 ++ 12 --
docs: move assets page to concepts/ and fix internal link style
2d748755
assets-core-concept
2/9 ++ 9 --
Merge df75fd9e7f84d11d5a756372b7eb25e48923e5e9 into eb903edcae43b254e15ba4c87840e3cd20a5dfc9
5cef5dbc
pull/321/merge
9/1,379 ++ 996 --
docs: expand TEAL acronym, use shell fence, fix readonly phrasing
df75fd9e
feat/docs-applications
1/3 ++ 3 --