Ecosystem metrics

New Repos
5
down 80.0%
Commits
760
up 1.3%
Releases
12
up 200.0%
Contributors
61
up 19.6%
Merges
13
down 56.7%

Repository Explorer

10659 commits in all time May 13, 2026 10:19 – Aug 11, 2026 10:19 UTC
sofinico gGov
chore: test: cover getVoters and getAccounts box-name scans
- Neither reader had a single test. Both scan box names by prefix, so a contract-side prefix change made them return [] with nothing going red — and `getVoters` feeds the frontend's voter list, so that silence reached the UI.

- `getVoters` asserts empty before any vote, then exactly the govs who voted. The period's 'o'/'t' boxes already exist at that point, so it also pins that the 'v' filter excludes them.

- Verified by sabotage: flipping 'v' to 0x77 and 'a' to 'b' fails both.
Git Commit 461e5246 Branch feat/live-voting-mbr Document 2/33 ++ 0 --
sofinico gGov
test: cover delegated-vote MBR top-up on both registries
Git Commit af6bfaa5 Branch feat/live-voting-mbr Document 2/48 ++ 0 --
sofinico gGov
feat: contracts: periods self-fund MBR from the registry on vote
Analogous to fractional delegation. Same registry as a vault + MBR post-condition pattern.
Git Commit a1ad8ac8 Branch feat/live-voting-mbr Document 14/7,066 ++ 5,217 --
sofinico gGov
refactor: sdk: hardcode box names in both SDKs, guarded by a spec-derived test
- Converges frac-delegation-sdk on ggov-sdk's style. `instanceBoxName` was deriving prefix + key encoding from the ARC-56 spec at call time; it now hardcodes 'i' + big-endian uint16, matching gGov's `periodBoxName`/`topicBodyBoxName`. Drops the ABIType, APP_SPEC and Buffer dependencies from the util.

- New `smart_contracts/boxNames.spec.ts` derives the expected bytes from the compiled specs and compares them against every helper, at 0 / 1 / key-type max. Deriving there and nowhere in the SDKs is what makes drift visible. Plain `.spec.ts`, no contract code and no chain.

- Also guards the cross-app near-collision: the period app's `periodBody` key is 'P', the registry's `periodApprovalBox` key is 'Pap'. Same leading byte, different apps, and `asciiBoxName` is single-byte by construction.

- Stops four places re-implementing the helpers by hand — `getPeriodBody` and `getTopicBody` in ggov-sdk's period reader were building 'P' and 'T' + uint32 inline, and both vote e2e tests were assembling the expected box name byte by byte. The e2e tests keep their own job: proving the ref is emitted on both the top-up and no-top-up branches.
Git Commit 04800ff9 Branch feat/live-voting-mbr Document 5/93 ++ 26 --
sofinico gGov
feat: sdk: ggov MBR vault support for live voting, with tests
Git Commit 448a0aa9 Branch feat/live-voting-mbr Document 8/338 ++ 3 --
sofinico gGov
feat: sdk: frac MBR vault support for live voting, with tests
- `makeVoteTxns` now names the frac registry app and its `instances` box on every vote, top-up or not, given the state-conditional inner call on `checkNeedMBR`.

- Ref-slot padding goes `numEscrows * 5 + 20` -> `+ 21` for the extra box.

- `extraFee` is deliberately unchanged. Both MBR hops pay their own fee, so the voter's group fee is invariant to whether the top-up fires.

- New `instanceBoxName` in util/boxes.ts, deriving prefix and key encoding from the ARC-56 spec rather than hardcoding 'i' + uint16.

- Test coverage includes regression-like cases for the whole MBR top-up flow.
Git Commit 2c2a5b0b Branch feat/live-voting-mbr Document 8/297 ++ 9 --
sofinico gGov
feat: contracts: instances self-fund MBR from the registry on vote
- The registry becomes an MBR vault. `vote()` ends with `checkNeedMBR()` subroutine: if the instance app account is at or below its minimum balance, it inner-calls the registry's new `requestMBR`, which pays it `mbrTopUp` (new global, 5 A, settable via `setMBRTopUp`). Users never pay vote-record MBR, and instances no longer need hand-funding.

- Post-condition, not a threshold. The AVM updates `min_balance` the instant a box is allocated but enforces the requirement only after each (outer) transaction, so the account may sit underwater mid-execution as long as the top-up lands first. However, MBR do is enforced between intermediate states of a group transaction, so a sibling payment later in the same group would be too late.

Nits: `checkNeedMBR()` could sit in more than one place:
- periodVoteCache is always an overwrite, so the call could go before it
- on a re-vote the record write is an overwrite too, so the call could be skipped

Left plain at the end for clarity; the saving would be a handful of opcodes. What is not flexible is that it must stay after the vote record write - that write is the allocation it repairs.
Git Commit 478dd1ee Branch feat/live-voting-mbr Document 14/7,307 ++ 5,018 --
uhudo devportal
Merge 57db850078e8c527846674a2e822e6b17813a908 into 3373832646a00d4285576642c42c4776cbf71f24
Git Commit 4b3ddc50 Branch pull/635/merge Document 2/2 ++ 2 --
uhudo devportal
Update Bytes per Box reference to 2048
Git Commit 57db8500 Branch pull/635/head Document 2/2 ++ 2 --
sofinico gGov
feat: sdk: gGov MBR vault support for live voting, with tests
Git Commit 566ec7ef Branch feat/live-voting-mbr Document 8/338 ++ 3 --
sofinico gGov
feat: contracts: periods self-fund MBR from the registry on vote
Analogous to fractional delegation. Same registry as a vault + MBR post-condition pattern.
Git Commit f22b2d31 Branch feat/live-voting-mbr Document 14/7,086 ++ 5,217 --
Merge 612c104d162d8d7ddfa2ad28fba39c696191e1d2 into 5073ca134b7c4c5721fcfbe976d5c364a5cc777a
Git Commit 8b073007 Branch pull/444/merge Document 1/3,258 ++ 2,724 --
Merge 6f07c68e03ed7e2380dc76dc0b634048e550fad6 into 68e036affd9e62d0a64dcdb3f252eb0ee2e052d3
Git Commit 6d2248c2 Branch pull/6689/merge Document 2/3 ++ 3 --
Merge 134f6b50caa904c055ddfbf9448a87ffff806db7 into 68e036affd9e62d0a64dcdb3f252eb0ee2e052d3
Git Commit a8e48aa0 Branch pull/6688/merge Document 2/3 ++ 3 --
Merge 991c77b886ea0c88c469cf8c56e44f7ac117a008 into 68e036affd9e62d0a64dcdb3f252eb0ee2e052d3
Git Commit a9d781f8 Branch pull/6687/merge Document 2/12 ++ 12 --
Argimirodelpozo puya-ts
Merge d8e9246113f1c399ddf12d705c554309af12e841 into 0dfa4474062d89f435e29aef93d44dd6d8277d5a
Git Commit ff894eaf Branch pull/402/merge Document 5/125 ++ 91 --
Merge e1b0f17c27ad12571000b4e1d5357f788c746db8 into d1dfc389785d4cbd0fe3252d98387875c625bcc5
Git Commit f84f0a32 Branch pull/899/merge Document 1/1 ++ 1 --
build(deps-dev): update eslint requirement from ^10.8.0 to ^10.8.1
Updates the requirements on [eslint](https://github.com/eslint/eslint) to permit the latest version.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.8.0...v10.8.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.8.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit e1b0f17c Branch dependabot/npm_and_yarn/eslint-tw-10.8.1 Document 1/1 ++ 1 --
build(deps-dev): bump @typescript-eslint/parser from 8.67.0 to 8.66.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.67.0 to 8.66.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.66.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.66.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit aae43563 Branch dependabot/npm_and_yarn/typescript-eslint/parser-8.66.0 Document 1/1 ++ 1 --
Merge 09daa85adf7a25448412c6b9fc309f09a832d39a into 7d2d52615e262b1e35612c8890f0001f480f3758
Git Commit 2f2fe5e3 Branch pull/385/merge Document 23/1,170 ++ 336 --
sofinico gGov
feat: sdk: MBR vault support for live voting, with tests
- `makeVoteTxns` now names the frac registry app and its `instances` box on every vote, top-up or not, given the state-conditional inner call on `checkNeedMBR`.

- Ref-slot padding goes `numEscrows * 5 + 20` -> `+ 21` for the extra box.

- `extraFee` is deliberately unchanged. Both MBR hops pay their own fee, so the voter's group fee is invariant to whether the top-up fires.

- New `instanceBoxName` in util/boxes.ts, deriving prefix and key encoding from the ARC-56 spec rather than hardcoding 'i' + uint16.

- Test coverage includes regression-like cases for the whole MBR top-up flow.
Git Commit 864ae1af Branch feat/live-voting-mbr Document 17/543 ++ 261 --
Merge 3c0a7c2c0b415cb926d6d67204a2168dbd7a3be8 into 967fcacfacdf0b3c91efdcc5239ef0360acb99cf
Git Commit ddaa80cb Branch pull/835/merge Document 11/70 ++ 0 --