Ecosystem metrics
- New Repos
- 24
- New
- Commits
- 756
- up 7.7%
- Releases
- 3
- down 50.0%
- Contributors
- 63
- up 28.6%
- Merges
- 10
- down 58.3%
Activity Overview
Commits and releases over time
- Commits
- Releases
- Authors
Repository Explorer
No repositories match that filter.
8617 commits in all time
Jul 21, 2026 18:30 – Oct 19, 2026 18:30 UTC
Merge origin/main: ARC-60 signing schemes (#239)
Ports the Falcon-1024 scheme support onto the refactored layout: isEd25519Scheme and the scheme-aware signer encoding in arc60Wire, SIGN_DATA_VERIFICATION_UNSUPPORTED in signArc60Data, the scheme field on the models, and the version bump to 1.9.0. Its tests move into the corresponding *.spec.ts files.
f15fdf81
yasince/chore/repo-standards
10/275 ++ 7 --
test: add an integration suite for the public flows
src/__integration__ drives the SDK only through its entry point, with the real modal elements, storage and algosdk keys, and fakes only the outside world: a WalletConnect v1 client modelled on the real one, a Pera Mobile that scans the rendered QR and signs with a real key, a window.pera extension that only connects inside a user click, and the config/algod endpoints. Covers connect (QR, extension, modal closed), reconnect after reload, signing (toast, redirect modal, transaction match, TransactionSigner), signData/ARC-60 verification, wallet-side disconnect, empty signatures and disconnect. Vitest now runs unit and integration as two projects (pnpm test:unit / test:integration); coverage over both is gated at 95% lines/functions/statements and 90% branches. Known-wrong behaviour found on the way is recorded as it.todo.
f904a532
yasince/chore/repo-standards
26/2,906 ++ 13 --
test: add a Playwright e2e smoke on the built bundle
e2e/ bundles dist/ into a small Vite dApp, the way an integrator's bundler would, and drives it in Chromium with all external traffic stubbed or dropped: the modal elements and legacy globals register, the version shows in the header, the rendered QR decodes back to the WalletConnect pairing URI, closing the modal rejects CONNECT_MODAL_CLOSED, and the extension connect runs inside a real user gesture (the stub refuses without navigator.userActivation). Runs as its own CI job (pnpm test:e2e) and uploads traces on failure.
1c86e14f
yasince/chore/repo-standards
14/402 ++ 11 --
test: cover the modal components, transports and utilities
Behavioural unit tests for every modal custom element (attribute wiring, conditional views, the extension option event, close and download actions) and for the gaps in util/ and transport/: the Pera Web new-tab flows, the webview bridge, deep links, the signed-transaction match check, ARC-60 signer resolution and the extension provider. Third-party renderers (qr-code-styling, Lottie) are faked at the module boundary; everything else runs for real.
d33615cd
yasince/chore/repo-standards
35/3,216 ++ 7 --
fix(modal): give two letter-spacing values their unit
Unitless letter-spacing is invalid CSS. The old pipeline passed it through and browsers dropped it; Vite's CSS minifier reads it as px, so spell that out. Also stop shipping declaration maps, which point at sources the package does not include.
11626496
yasince/chore/repo-standards
3/8 ++ 5 --
fix(types): resolve the published declarations under node16/nodenext
The emitted .d.ts files imported each other without extensions, which TypeScript projects on moduleResolution node16/nodenext cannot resolve (arethetypeswrong: InternalResolutionError, present since 1.x). Relative imports now carry .js, and oxlint's import/extensions keeps it that way; check:package (publint + attw) guards the result in CI.
86de7fb3
yasince/chore/repo-standards
92/334 ++ 302 --
refactor: remove dead code and tighten small utilities
- Drop the sign-txn modal and its open/close helpers; nothing has mounted it since Pera Web signing moved to a new tab. - Drop detectPlatform/isMobileMethodAvailable from the webview bridge (unused) and waitForElementCreatedAtShadowDOM, whose observer never re-queried the shadow root. - fetcher rejects on an HTTP error status instead of parsing the error body as config; getPeraConnectConfig is typed and still never rejects. - Shared appendTemplateWithStyles for the modal components. - Remove ESLint directives left behind by the toolchain move, the triple-slash reference and banner comments. - Tests for the new modules (signature checks, signer slot mapping, event emitter, algod pool, font loader, vh variable).
dfaaf42e
yasince/chore/repo-standards
34/164 ++ 499 --
fix: keep plain-JS signData input and corrupted storage working
Two edges found in review of the refactor: - signData and ARC-60 authenticatorData encoded through algosdk's bytesToBase64, which turns an ArrayBuffer into an empty string in browsers. Plain-JS dApps that pass ArrayBuffers, number arrays or strings now get the encoding the global Buffer gave them before. - Unparseable wallet details in localStorage made reconnectSession() fail inside its own cleanup and leave the entry behind. It now clears the storage and rejects with SESSION_RECONNECT.
2768bf68
yasince/chore/repo-standards
7/55 ++ 7 --
docs(src): keep comments to the why
Applies the comment rules from pera-react-native: drop JSDoc that repeats signatures, banners, file narration and commented-out code; keep rationale, traps and units. Comment-only apart from two fixes found on the way: - webviewBridge removed its message listener with a fresh bind(), so the removal never matched; it now keeps one bound handler. - The window.pera provider docs sat on PeraAccount in the published types; they now document PeraProvider.
9644f140
yasince/chore/repo-standards
18/57 ++ 303 --
refactor: split PeraWalletConnect into focused modules
PeraWalletConnect.ts drops from ~1,350 to ~980 lines; the class keeps the public surface and orchestration, and delegates to modules that can be read and tested on their own: - util/transaction/signedTransactionMatch: the check that the wallet returned the transactions that were asked for - util/transaction/transactionSignerUtils: TransactionSigner slot mapping - util/signature/signatureVerification: MX and ARC-60 signature checks - util/arc60/arc60Signer: SIWA origin binding and signer resolution - util/events/SessionEventEmitter: typed disconnect/networkChanged events - util/algod: AlgodClientPool replaces AlgodManager and the unused provider-type indirection Also: - connect() and reconnectSession() no longer use async promise executors, so an unexpected throw can no longer leave the promise pending forever. - MobileTransport shares one request path and types its connector from WalletConnect instead of any. - Named exports only; no explicit any; no floating promises. - PeraWalletConnectOptions and the event types are now exported. No change to the public API or to wire behaviour; the existing suite passes unchanged apart from following the moved internals.
2756b5b9
yasince/chore/repo-standards
62/1,624 ++ 1,384 --
ci(repo): adopt the pera-react-native repo standards
- CI / Pre-Merge runs lint, type-aware lint, format, typecheck, tests with an 80% coverage gate, the build and publint/attw, plus a lockfile drift check, pnpm audit and the gitleaks history scan. - Release / Publish repeats those gates before publishing, and scans the built bundle. - Workflow files follow the ci-/security-/release- naming; actions move to the same pinned SHAs as pera-react-native. - Dependabot groups updates by risk, keeps @types/node on the runtime's major and holds pnpm/action-setup at v5. - Hooks: commit-msg enforces Conventional Commits, pre-push runs lint, format check and typecheck; pnpm run setup:hooks enables them (the repo's ignore-scripts means install alone does not). - CLAUDE.md, a rewritten CONTRIBUTING.md, a PR template and .git-blame-ignore-revs for the formatting commit.
9059065a
yasince/chore/repo-standards
12/359 ++ 196 --
build: move to Vite, TypeScript 7, Vitest 5 and oxlint/oxfmt
Replaces the Rollup 2 / rollup-plugin-typescript2 / ESLint 8 / Prettier 2 toolchain with the one pera-react-native uses: Vite library mode for the bundle, tsc for declarations, Vitest 5 on jsdom 30, oxlint and oxfmt. - Dependencies are now external to the bundle, so consumers dedupe them; the Node polyfill bundle is gone. - Our own code no longer relies on the global Buffer polyfill. - tweetnacl-ts (unmaintained since 2018) is replaced by tweetnacl, which algosdk already depends on. - Runtime deps: @perawallet/walletconnect 1.0.3, bowser 2.14.1, qr-code-styling 1.9.2, lottie-web-light 5.13.0. - Test files move to the *.spec.ts naming. - The modal font is loaded with a <link> in the document instead of injecting every component's CSS into <head>; @font-face does not apply inside shadow roots, which is the only reason the global copy was needed.
78a4d8d0
yasince/chore/repo-standards
104/2,650 ++ 5,942 --
Merge dc5ee465dc3567c6d7b138583151778c3ec925e0 into ba321bafca1d7ac0245d8e2aa972def9b686b763
432c298c
pull/409/merge
7/595 ++ 692 --
chore: npm audit fixes
dc5ee465
chore/contribution-guide-update
6/593 ++ 689 --