Ecosystem metrics

New Repos
26
New
Commits
636
down 3.3%
Releases
4
up 33.3%
Contributors
47
down 14.5%
Merges
25
up 127.3%

Repository Explorer

7576 commits in all time Jun 30, 2026 08:21 – Sep 28, 2026 08:21 UTC
Merge 35903b005bc28fc6f7a5cc44829bab710d68e04e into fddab7ff72c2799414a6ac9cc4cb5c6b43771986
Git Commit 1c0bdd67 Branch pull/201/merge Document 1/1 ++ 1 --
npm: bump eslint from 9.39.5 to 10.11.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.5 to 10.11.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.5...v10.11.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.11.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit 35903b00 Branch dependabot/npm_and_yarn/main/eslint-10.11.0 Document 1/1 ++ 1 --
Merge 48520aaa1be65f155720c3a3916e3faf4e2bfbaf into fddab7ff72c2799414a6ac9cc4cb5c6b43771986
Git Commit 89cb2938 Branch pull/200/merge Document 1/1 ++ 1 --
npm: bump dotenv from 16.6.1 to 18.0.3
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.6.1 to 18.0.3.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.6.1...v18.0.3)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 18.0.3
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit 48520aaa Branch dependabot/npm_and_yarn/main/dotenv-18.0.3 Document 1/1 ++ 1 --
Merge 7707d9d18c9d65d37a4508934d4a5b8c552782b2 into fddab7ff72c2799414a6ac9cc4cb5c6b43771986
Git Commit ed9c859c Branch pull/199/merge Document 1/1 ++ 1 --
npm: bump hardhat from 2.29.1 to 3.18.0
Bumps [hardhat](https://github.com/NomicFoundation/hardhat/tree/HEAD/packages/hardhat) from 2.29.1 to 3.18.0.
- [Release notes](https://github.com/NomicFoundation/hardhat/releases)
- [Changelog](https://github.com/NomicFoundation/hardhat/blob/main/packages/hardhat/CHANGELOG.md)
- [Commits](https://github.com/NomicFoundation/hardhat/commits/hardhat@3.18.0/packages/hardhat)

---
updated-dependencies:
- dependency-name: hardhat
  dependency-version: 3.18.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit 7707d9d1 Branch dependabot/npm_and_yarn/main/hardhat-3.18.0 Document 1/1 ++ 1 --
Merge dab5a0007da8fc0c2544f9861cf2fa70c361a3a4 into fddab7ff72c2799414a6ac9cc4cb5c6b43771986
Git Commit a22db6c7 Branch pull/198/merge Document 1/1 ++ 1 --
npm: bump @types/node from 22.20.4 to 26.6.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.20.4 to 26.6.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.6.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit dab5a000 Branch dependabot/npm_and_yarn/main/types/node-26.6.2 Document 1/1 ++ 1 --
renovate[bot] use-wallet
Merge 210fbdeafcfde481720974c2fb2aef6065a2d651 into b090a483dcc3a6a69b22e603fc36392ac9e63ecc
Git Commit 09c06f95 Branch pull/463/merge Document 2/3,344 ++ 1,605 --
renovate[bot] use-wallet
chore(deps): update dependency @web3auth/modal to v11
Git Commit 210fbdea Branch renovate/major-wallet-dependencies Document 2/3,344 ++ 1,605 --
renovate[bot] use-wallet
Merge fe38f499c9abd512d642c4ef19dbdccb28031316 into b090a483dcc3a6a69b22e603fc36392ac9e63ecc
Git Commit 2efdd4a6 Branch pull/462/merge Document 2/2 ++ 2 --
renovate[bot] use-wallet
chore(deps): update dependency node to v22.23.3
Git Commit fe38f499 Branch renovate/node-22.x Document 2/2 ++ 2 --
Merge 7b4fbe2841fea9a48f0f410b4ea0137b4372f4b4 into 803851c24469d1bfb3cd0cbc6b65d59624d7fee6
Git Commit dc9f4c52 Branch pull/418/merge Document 47/3,496 ++ 1,658 --
Merge 3c673d4adeeb7d9e34e9882b8b72ce76fa306e39 into 529c72420411662fe3d51b7f2692d30d758c0a55
Git Commit 24f24612 Branch pull/926/merge Document 1/1 ++ 1 --
build(deps-dev): update eslint-plugin-vue requirement
Updates the requirements on [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) to permit the latest version.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.11.0...v10.11.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-vue
  dependency-version: 10.11.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit af9d3a17 Branch dependabot/npm_and_yarn/eslint-plugin-vue-tw-10.11.1 Document 1/1 ++ 1 --
build(deps-dev): update eslint requirement from ^10.9.1 to ^10.11.0
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.9.1...v10.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit 3c673d4a Branch dependabot/npm_and_yarn/eslint-tw-10.11.0 Document 1/1 ++ 1 --
build(deps): update algosdk requirement from ^3.7.0 to ^3.8.0
Updates the requirements on [algosdk](https://github.com/algorand/js-algorand-sdk) to permit the latest version.
- [Release notes](https://github.com/algorand/js-algorand-sdk/releases)
- [Changelog](https://github.com/algorand/js-algorand-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algorand/js-algorand-sdk/compare/v3.7.0...v3.8.0)

---
updated-dependencies:
- dependency-name: algosdk
  dependency-version: 3.8.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit c89d144c Branch dependabot/npm_and_yarn/algosdk-tw-3.8.0 Document 1/1 ++ 1 --
build(deps-dev): update @typescript-eslint/parser requirement
Updates the requirements on [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) to permit the latest version.
- [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.70.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.70.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Git Commit 100d0035 Branch dependabot/npm_and_yarn/typescript-eslint/parser-tw-8.70.1 Document 1/1 ++ 1 --
scholtz wallet
ARC-56 registry summary: app-call trust + GitHub publisher warnings (#172)
* feat: show ARC-56 registry summary and GitHub publisher warnings

Adds an application-call summary above the transaction table in
WalletConnect/Liquid Auth requests, so a user relying on "Sign all"
doesn't have to expand every app-call transaction to check its ARC-56
registry status:

- A request whose only transaction is an app call shows a full summary
  (trust level, contract name, method, and every GitHub owner/repo
  known to have published matching source) right above the table.
- A request with several app calls (alongside other transactions, or
  several app calls in one request) shows a compact per-app list with
  the same trust badge and publisher info, so warnings are visible
  without crawling through each transaction's expanded detail row.

Publisher info comes from the new approval-programs/clear-programs/
<hash>.owners.json files exposed by the companion ARC56Registry change
(scholtz/ARC56Registry#1): every GitHub owner/repo whose indexed spec
compiles to the app's program hash, not just the largest matching spec
- since a legitimate contract can be forked/vendored across several
repos, but an app with *no* known publisher at all is exactly the case
a scam is most likely to hide in.

- src/scripts/arc56/registry.ts: fetchArc56OwnersByProgramHash(), new
  Arc56Owner/Arc56OwnersEntry types.
- src/scripts/arc56/decode.ts: extracted encodeAddressSafe()/
  buildAppCallInfo() out of Arc56CallDetails.vue so the new summary
  component and the existing per-transaction detail view share the
  same address-encoding and preceding-group-txn logic instead of
  duplicating it.
- src/components/Arc56RequestSummary.vue: the new summary component.
- src/components/Arc56CallDetails.vue: also shows publisher info in
  the existing per-transaction detail view.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: address code review findings on ARC-56 summary PR

Multiple review passes on #172 found real issues:

- Arc56RequestSummary.vue used a plain falsy check on an app-creation
  call's appIndex (0), silently dropping such transactions from the
  aggregated summary entirely - fixed to check `=== undefined`.
- Arc56RequestSummary.vue collapsed "not looked up" (no approvalHash)
  and "looked up, no publisher" into the same `[]`, showing a false
  "no known publisher" warning for calls that were never eligible for
  a hash lookup (e.g. trust "not-abi") - unlike Arc56CallDetails.vue's
  deliberate null/[] distinction. Both now share that distinction via
  the new Arc56OwnerLinks.vue component.
- Extracted the trust->severity/copy switch statements (duplicated
  verbatim between Arc56CallDetails.vue and Arc56RequestSummary.vue)
  into arc56TrustSeverity/TitleKey/DescKey in decode.ts, so a future
  Arc56TrustLevel value can't update one view's rendering while
  silently leaving the other on an incomplete switch.
- Extracted the 3x-duplicated GitHub-owner-links markup into
  Arc56OwnerLinks.vue.
- isSingleAppCall was a plain function re-invoked on every render;
  changed to a computed().
- Restored the app-call guard before dispatching to algod in
  Arc56CallDetails.vue (was reordered during the previous refactor,
  currently unreachable given both call sites gate on type=='appl',
  but latent otherwise).
- Added a generation-token guard against stale runDecode() results
  overwriting fresher ones in both components, and keyed
  Arc56CallDetails.vue's watch on txID instead of object identity
  (ConnectRequestsTable/SignAll rebuild their transaction arrays on
  every store update even when nothing actually changed).
- Added an in-memory cache to algod/getApplicationPrograms, keyed by
  endpoint+appIndex - the summary and detail views (and
  TransactionGroupSimulation) can all request the same app's programs
  for the same request, previously each a fresh algod round-trip.
- Wired Arc56RequestSummary into SignAll.vue too (raw/offline group
  signing), not just ConnectRequestsTable - the exact case where a
  spoofed/unverified app call matters most was previously uncovered.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: stuck spinner and stale trust-signal caching

Further code review on #172:

- Arc56RequestSummary.vue's early return for a request with no app
  calls never reset `loading`, and a still-in-flight older runDecode()
  call's own finally also skips it (generation mismatch) - left the
  spinner stuck on forever if the transaction set changed to one with
  no app calls while a previous decode was still resolving.
- algod/getApplicationPrograms's new cache never expired successful
  lookups, so a legitimate application-update transaction mid-session
  (changing an app's approval program) would never be picked up - the
  ARC-56 trust/publisher summary could keep showing a stale "verified"
  result for code that's no longer actually deployed. Changed to only
  dedupe genuinely concurrent callers (delete the cache entry as soon
  as the request settles, in a finally), which still solves the
  original duplicate-fetch problem (summary + detail view expanding
  for the same app at once) without ever serving a stale trust signal
  to a later, separate caller.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: getApplicationPrograms must not throw synchronously on bad config

Code review on #172: building the cache key required reading
getAlgodConfig(rootState) before the async IIFE, but that call throws
synchronously if algod/algodToken isn't configured - contradicting the
action's own documented "returns undefined rather than throwing"
contract. Existing call sites happen to wrap the dispatch in
try/await, so this wasn't reachable as a crash today, but a caller
using .catch() chaining instead would never get the chance to attach
it. Now caught explicitly and resolves to undefined like every other
failure path in this action.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: per-entry failure isolation, dedup decode logic, safer cache key/txID

Further code review on #172:

- Arc56RequestSummary.vue wrapped every app call's decode in a single
  Promise.all - one entry's rejection wiped the trust/publisher
  summary for the whole request instead of degrading only that entry.
  Switched to Promise.allSettled with per-result error handling.
- Extracted the shared "buildAppCallInfo -> decodeArc56AppCall ->
  fetch owners" sequence (duplicated between Arc56CallDetails.vue and
  Arc56RequestSummary.vue, and the source of two previous review
  rounds' bugs) into decodeAppCallWithOwners() in decode.ts, used by
  both. Only the Vue/store-specific algod dispatch stays per-component.
- Consolidated arc56TrustSeverity/TitleKey/DescKey's three independent
  switch statements (each with its own `default` fallback, so a future
  Arc56TrustLevel value could update one and silently miss another)
  into a single Record<Arc56TrustLevel, ...> lookup, which TypeScript
  itself now enforces stays exhaustive.
- getApplicationPrograms's in-flight dedup cache key omitted
  algodToken, so two configs sharing the same algod URL but different
  auth tokens would incorrectly dedupe onto each other's response.
- The txID()-based watch keys in both components called algosdk's
  txID() unguarded - it can throw for a malformed transaction, and
  since it ran inside a watch getter, Vue would silently swallow the
  throw and the watcher would simply never fire again (no visible
  error, no decode, no warning). Added decode.ts's safeTxId() and used
  it in both.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: Badge severity doesn't accept "error" - it needs "danger"

Code review on #172 found that arc56TrustSeverity()'s "error" value
(used for the verified-other-method trust level - "more suspicious
than unknown, not less" per decode.ts's own top comment) is valid for
PrimeVue <Message> but not <Badge>, whose severity enum has "danger"
instead of "error" and no "error" at all - an actual inconsistency
between the two PrimeVue components, not a typo on either side. The
multi-app-call summary table's <Badge> was silently losing this exact
signal (rendering unstyled instead of red) for the one trust level
that's arguably the most alarming, in the multi-transaction case where
a user is least likely to expand every row to check.

Added arc56TrustBadgeSeverity() as the <Badge>-safe converter and
switched the summary table to it; <Message> usages (the single-app
card, and Arc56CallDetails.vue's own top-level severity) keep using
arc56TrustSeverity() unchanged, since "error" is correct there.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: cache-delete/set ordering bug on synchronous algod-client failure

Code review on #172: if createAlgodClient() throws synchronously (e.g.
new URL(algod) on a malformed custom node URL), the async IIFE's whole
try/catch/finally runs synchronously before the outer
applicationProgramsCache.set(cacheKey, promise) call ever executes -
so the finally's delete(cacheKey) is a no-op on a key that isn't in
the map yet, and the subsequent .set() then permanently caches the
failed (undefined) result, contradicting this cache's whole point
(dedupe concurrent callers only, never serve a stale/failed result to
a later separate caller).

Fixed by yielding to a microtask (`await Promise.resolve()`) as the
first line of the IIFE, forcing every synchronous throw inside it to
happen after the outer .set() call has already run. Verified the
ordering bug and the fix with a standalone repro before applying it
here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Ludovit Scholtz <ludovit.scholtz@aaaauto.cz>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Git Commit 5b977a00 Branch master Document 20/645 ++ 101 --
scholtz wallet
Merge 7c0befc2726fa61ec251f177a9340ffd2531d352 into 458ca98cad67a3756e351af7a813fe6d15151603
Git Commit b9b48f31 Branch pull/172/merge Document 20/645 ++ 101 --