Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
5d940ae
feat: migrate preconstruct to tsup and webpack to wxt
0xKheops Jan 9, 2026
6692b8a
fix: eslint
0xKheops Jan 9, 2026
b12ce4a
fix: build script
0xKheops Jan 9, 2026
4e69644
wip: wxt
0xKheops Jan 9, 2026
1706417
feat: persist chrome state
0xKheops Jan 9, 2026
0e30335
fix: ignore useless warnings
0xKheops Jan 9, 2026
07f2f80
feat: auto chunk / ES module
0xKheops Jan 9, 2026
0b6d222
fix: firefox dev mode
0xKheops Jan 10, 2026
9c6ddc0
fix: csp
0xKheops Jan 10, 2026
0ef311a
fix: waitCryptoReady
0xKheops Jan 10, 2026
7edeb3a
chore: changeset
0xKheops Jan 10, 2026
4b5ca0b
chore: remove old entry points
0xKheops Jan 10, 2026
87ad291
chore: cleanup
0xKheops Jan 10, 2026
dc5c949
fix: zip config
0xKheops Jan 10, 2026
33bb26f
feat: vitest
0xKheops Jan 10, 2026
97599de
chore: cleanup
0xKheops Jan 10, 2026
57b656a
fix: ci tests
0xKheops Jan 10, 2026
6e2d00c
fix: ci tests
0xKheops Jan 10, 2026
d4623bc
chore: cleanup preconstruct remainings
0xKheops Jan 10, 2026
9c63e23
chore: ts fixes
0xKheops Jan 10, 2026
7b8e262
feat: typecheck script
0xKheops Jan 10, 2026
2d9b1f8
chore: cleanup
0xKheops Jan 10, 2026
2a5e585
chore: cleanup
0xKheops Jan 10, 2026
df30114
feat: persistent chrome profile config
0xKheops Jan 10, 2026
5f9b5be
feat: page titles and better wxt config
0xKheops Jan 10, 2026
abfc464
chore: optimize bg reload
0xKheops Jan 10, 2026
cd88d8d
feat: send source maps to sentry
0xKheops Jan 10, 2026
86b5c01
fix: extension naming based on build type
0xKheops Jan 10, 2026
920af09
feat: provide zip file for all builds
0xKheops Jan 10, 2026
73131bf
feat: conditional rebuild of packages
0xKheops Jan 10, 2026
870dd9a
feat: silent packages build
0xKheops Jan 10, 2026
a0fc559
fix: build verbosity
0xKheops Jan 10, 2026
ccab067
fix: build verbosity type errors
0xKheops Jan 10, 2026
00fcc72
fix: outdated caniuse deps
0xKheops Jan 10, 2026
a071084
chore: remove unnecessary autoprefixer
0xKheops Jan 10, 2026
35f2b06
feat: setup knip
0xKheops Jan 10, 2026
c0dd49f
chore: remove unused dependencies
0xKheops Jan 10, 2026
a8e80e3
chore: delete unused files
0xKheops Jan 10, 2026
dc07dfb
fix: ci
0xKheops Jan 10, 2026
b719cc6
fix: project config
0xKheops Jan 10, 2026
60ce4f2
feat: typecheck in ci
0xKheops Jan 10, 2026
6747c08
fix: ci typechecks
0xKheops Jan 10, 2026
ae82ca4
fix: ci
0xKheops Jan 10, 2026
45aec26
feat: ci dep between changesets task and publish task
0xKheops Jan 10, 2026
59484ef
fix: ci typecheck
0xKheops Jan 10, 2026
53a57fb
feat: biome (#2297)
0xKheops Jan 11, 2026
255a192
chore: changeset
0xKheops Jan 11, 2026
4f165eb
fix: changeset for deleted package
0xKheops Jan 11, 2026
806bd14
fix: readme
0xKheops Jan 11, 2026
91a6077
feat: log when cryptoWaitReady completes
0xKheops Jan 11, 2026
d33ff62
fix: wasm init
0xKheops Jan 11, 2026
702739a
fix: ci biome check
0xKheops Jan 11, 2026
51ac521
fix: sentry release match
0xKheops Jan 11, 2026
cc923ac
chore: unique sentry releases
0xKheops Jan 11, 2026
878d284
Merge branch 'dev' into feat/wxt-vite
0xKheops Jan 12, 2026
9a4b6f1
chore: bump uuid dep
0xKheops Jan 12, 2026
d156827
chore: cleanup
0xKheops Jan 12, 2026
f8bcfb2
fix: memory consumption
0xKheops Jan 12, 2026
be003d2
chore: set builds to use 6gb of ram
0xKheops Jan 12, 2026
7eb7335
fix: max ram 4gb
0xKheops Jan 12, 2026
ee61eaa
chore: cleaner way of setting ram limit
0xKheops Jan 12, 2026
a4b455c
chore: cleanup
0xKheops Jan 12, 2026
5706554
wip: deterministic ff builds
0xKheops Jan 12, 2026
665be4f
wip: firefox deterministic builds
0xKheops Jan 12, 2026
1d20542
wip: firefox deterministic builds
0xKheops Jan 12, 2026
b5427fb
wip: firefox deterministic builds
0xKheops Jan 12, 2026
4fc6ad0
feat: deterministic firefox build outputs
0xKheops Jan 12, 2026
7d87c0e
feat: deterministic build outputs
0xKheops Jan 12, 2026
4384c65
fix: firefox deterministic builds
0xKheops Jan 12, 2026
c914fed
chore: readme update
0xKheops Jan 12, 2026
b52c6b3
fix: remove the need to build packages for type checking
0xKheops Jan 12, 2026
93a6cb4
fix: remove the need for building packages except when publishing them
0xKheops Jan 12, 2026
a0ee3de
fix: lint
0xKheops Jan 12, 2026
a289899
fix: simplify build:packages script
0xKheops Jan 12, 2026
75908ec
fix: sanitize ts config
0xKheops Jan 13, 2026
352a4fb
fix: sanitize ts config
0xKheops Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .changeset/poor-readers-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"@talismn/chaindata-provider": patch
"@talismn/chain-connectors": patch
"@talismn/connection-meta": patch
"@talismn/balances-react": patch
"@talismn/on-chain-id": patch
"@talismn/token-rates": patch
"@talismn/balances": patch
"@talismn/keyring": patch
"@talismn/crypto": patch
"@talismn/solana": patch
"@talismn/icons": patch
"@talismn/scale": patch
"@talismn/sapi": patch
"@talismn/util": patch
"@talismn/orb": patch
---

migration from preconstruct to tsup
19 changes: 19 additions & 0 deletions .changeset/yellow-clocks-think.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"@talismn/chaindata-provider": patch
"@talismn/chain-connectors": patch
"@talismn/connection-meta": patch
"@talismn/balances-react": patch
"@talismn/on-chain-id": patch
"@talismn/token-rates": patch
"@talismn/balances": patch
"@talismn/keyring": patch
"@talismn/crypto": patch
"@talismn/solana": patch
"@talismn/icons": patch
"@talismn/scale": patch
"@talismn/sapi": patch
"@talismn/util": patch
"@talismn/orb": patch
---

migrate eslint+prettier to biome
4 changes: 3 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
.next
.turbo
.i18next-parser
dist
# Exclude dist directories except for .papi (pre-built polkadot-api descriptors)
**/dist
!.papi/**/dist
review
build
node_modules
Expand Down
2 changes: 0 additions & 2 deletions .eslintignore

This file was deleted.

5 changes: 0 additions & 5 deletions .eslintrc.js

This file was deleted.

16 changes: 10 additions & 6 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@

## Coding & Tooling Standards

- Use **Node >= 20**, `corepack enable`, and **pnpm** commands from `package.json`/`turbo.json`.
- Formatting & linting: Prettier + `@talismn/eslint-config` (`eslint --max-warnings 0`). Keep `_`-prefixed unused vars if needed.
- Write/maintain unit tests (Jest) and E2E tests (Playwright). Commands:
- `pnpm test` (workspace-wide Jest)
- Use **Node >= 20**, `corepack enable`, and **pnpm** commands from `package.json`.
- Formatting & linting: **[Biome](https://biomejs.dev/)** handles both. Commands:
- `pnpm lint` (check linting on changed files)
- `pnpm chore:format` (format changed files)
- Pre-commit hook runs `biome check --staged` automatically
- Keep `_`-prefixed unused vars if needed (configured in `biome.json`).
- Write/maintain unit tests (Vitest) and E2E tests (Playwright). Commands:
- `pnpm test` (workspace-wide Vitest)
- `pnpm exec playwright test` (E2E) and variants in `package.json`
- Use `pnpm changeset` for versioned packages; respect CI expectations in `.github/workflows/ci.yml`.
- I18n: wrap UI strings with `t()`/`Trans` and run `pnpm chore:update-translations` when keys change.
Expand Down Expand Up @@ -69,9 +73,9 @@

## Testing & Verification Checklist

1. Re-use existing Jest/Playwright helpers when adding tests; keep mocks aligned with `apps/extension/tests`.
1. Re-use existing Vitest/Playwright helpers when adding tests; keep mocks aligned with `apps/extension/tests`.
2. Validate new hooks/components with real APIs (RxJS streams, Dexie, background APIs) and cover race/error paths.
3. Ensure new commands/config entries work with `turbo run build` and `pnpm build:extension*` matrix.
3. Ensure new commands/config entries work with `pnpm build` and `pnpm build:extension*` matrix.
4. Any change that touches the keyring or secret storage must ship with dedicated unit tests.

## Commenting & Documentation
Expand Down
57 changes: 39 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,49 @@ jobs:
name: "Build and test the wallet"
timeout-minutes: 15
runs-on: ubuntu-latest
# To use Remote Caching, uncomment the next lines and follow the steps below.
# env:
# TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
# TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 2 # also get the previous commit
fetch-depth: 2
- name: Fetch base branch for comparison
if: github.event_name == 'pull_request'
run: git fetch origin ${{ github.base_ref }} --depth=1
- name: Update & enable corepack
run: npm install -g corepack@latest && corepack enable
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Biome check
run: |
BASE_REF="${{ github.base_ref || 'dev' }}"
# Get changed files using two-dot diff (works with shallow clones)
mapfile -t CHANGED_FILES < <(
git diff --name-only --diff-filter=ACMR origin/$BASE_REF HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.json' '*.css' '*.cjs' '*.mjs'
)

if [ "${#CHANGED_FILES[@]}" -eq 0 ]; then
echo "No supported files changed - skipping biome check"
exit 0
fi

echo "Changed files:"
printf ' %q\n' "${CHANGED_FILES[@]}"
pnpm biome check --error-on-warnings -- "${CHANGED_FILES[@]}"
- name: Test
run: pnpm preconstruct:dev && pnpm test
run: pnpm test
- name: Typecheck
run: |
# All packages and apps use customConditions: ["@talismn/source"] to resolve
# @talismn/* packages directly from source. This means no package build is needed.
pnpm typecheck
- name: Extract short SHA + package version
id: vars
run: |
Expand All @@ -59,8 +79,8 @@ jobs:
command: "upload"
cli-version: "2.2.0"
args: "--uploadPath ./apps/extension/.i18next-parser/locales/{lang}/{ns}.json --apiKey ${{ secrets.SIMPLE_LOCALIZE_API_KEY }}"
- name: Build
run: pnpm build:extension:ci
- name: Build extension
run: pnpm build:extension
env:
COMMIT_SHA_SHORT: ${{ steps.vars.outputs.sha_short }}
POSTHOG_AUTH_TOKEN: ${{ secrets.POSTHOG_AUTH_TOKEN }}
Expand All @@ -71,7 +91,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: build
path: ./apps/extension/dist/chrome/talisman_extension_ci_${{ steps.vars.outputs.sha_short }}_chrome.zip
path: ./apps/extension/dist/*.zip
retention-days: 5

# This job will use the files from the build job to run Playwright tests
Expand All @@ -92,7 +112,7 @@ jobs:
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand All @@ -105,8 +125,8 @@ jobs:
path: ./build-artifact
- name: Unzip build artifact to the playwright extension path
run: |
mkdir -p ./apps/extension/dist/chrome
unzip ./build-artifact/*.zip -d ./apps/extension/dist/chrome
mkdir -p ./apps/extension/dist/chrome-mv3
unzip ./build-artifact/*.zip -d ./apps/extension/dist/chrome-mv3
- name: Cache playwright browsers
uses: actions/cache@v3
with:
Expand All @@ -133,6 +153,7 @@ jobs:
# This job will build and publish a snapshot version of the packages which have changesets in this PR
publish_snapshot:
name: "Publish a snapshot version of any packages with changesets in this PR to npm"
needs: ensure_pr_has_changeset
timeout-minutes: 15
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
Expand All @@ -149,13 +170,13 @@ jobs:
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Bump changed package versions to a snapshot version
run: pnpm changeset version --snapshot pr${{ github.event.pull_request.number }}
- name: Build snapshot packages
- name: Build packages for npm publish
run: pnpm build:packages
- name: Set publish config
run: pnpm config set '//registry.npmjs.org/:_authToken' "${PNPM_TOKEN}"
Expand Down Expand Up @@ -185,7 +206,7 @@ jobs:
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down Expand Up @@ -323,7 +344,7 @@ jobs:
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand All @@ -337,7 +358,7 @@ jobs:
env:
# GITHUB_TOKEN is automatically added into the ENV by GitHub CI
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build packages
- name: Build packages for npm publish
if: steps.changesets.outputs.hasChangesets == 'false'
run: pnpm build:packages
- name: Set publish config
Expand Down
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ yarn-error.log*
# turbo
.turbo

# typescript
*.tsbuildinfo

# tsup temp files
tsup.config.bundled_*

# extension
dist
review
.wxt

# Playwright
/test-results/
Expand All @@ -42,4 +49,6 @@ review
/playwright/.cache/

# tmp folder for translations extraction
.i18next-parser/
.i18next-parser/

/.verify-build/
23 changes: 22 additions & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
pnpm lint-staged
# Run Biome on staged files and auto-fix issues
# Disable errexit for this block since we handle exit codes manually
set +e
output=$(pnpm biome check --staged --write --error-on-warnings 2>&1)
exit_code=$?
set -e
echo "$output"

if [ $exit_code -eq 0 ]; then
# Biome succeeded - all checks passed
exit 0
elif echo "$output" | grep -q "No files were processed"; then
# No supported files staged (e.g., only YAML/MD files) - skip gracefully
# Biome only supports JS/TS/JSX/TSX/JSON/CSS
exit 0
elif echo "$output" | grep -q "The list is empty"; then
# No files staged at all (e.g., --allow-empty commit)
exit 0
else
# Actual lint/format errors - fail the commit
exit $exit_code
fi
6 changes: 0 additions & 6 deletions .importsortrc

This file was deleted.

3 changes: 3 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,7 @@ use-node-version=24.8.0
; Once that's done, we can delete this comment!
shamefully-hoist=true

; Increase Node.js heap size for memory-intensive builds (WXT/Vite bundling).
; This helps on memory-constrained systems (e.g., WSL with limited RAM).
node-options="--max-old-space-size=4096"
save-exact=true
6 changes: 0 additions & 6 deletions .prettierignore

This file was deleted.

38 changes: 0 additions & 38 deletions .prettierrc.cjs

This file was deleted.

6 changes: 1 addition & 5 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss"
]
"recommendations": ["biomejs.biome", "bradlc.vscode-tailwindcss"]
}
31 changes: 30 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,34 @@

// defaults to 1rem=16px, but we use 1rem=10px in the extension
// this setting will provide accurate intellisense values
"tailwindCSS.rootFontSize": 10
"tailwindCSS.rootFontSize": 10,

"biome.lsp.bin": "node_modules/.bin/biome",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.biome": "always"
},
"files.watcherExclude": {
"**/routeTree.gen.ts": true
},
"[javascript]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[typescript]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[typescriptreact]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[css]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[json]": {
"editor.defaultFormatter": "biomejs.biome"
},
"[jsonc]": {
"editor.defaultFormatter": "biomejs.biome"
},
"prettier.enable": false,
"eslint.format.enable": false
}
Loading