Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
79b95dd
feat(token-ops): add group-managed token operations example app
thephez Jul 7, 2026
ec8fb9c
feat(token-ops): redesign governance and pending-action cards
thephez Jul 7, 2026
8fb5e66
feat(token-ops): show token state for all group members on overview
thephez Jul 7, 2026
0966fce
refactor(token-ops): redesign overview and operations UI
thephez Jul 7, 2026
d9ab5df
feat(token-ops): add collapsible pending-action cards
thephez Jul 7, 2026
46bce0c
feat(token-ops): refine pending-action UI and interaction feedback
thephez Jul 8, 2026
0b556d3
feat(token-ops): redesign governance as capability cards
thephez Jul 8, 2026
cfc958e
test(token-ops): expand coverage and fix weak assertions
thephez Jul 8, 2026
d2a28fc
refactor(token-ops): unify group display and capability icons
thephez Jul 8, 2026
860f11d
feat(token-ops): replace confirm dialogs with inline confirmation panels
thephez Jul 8, 2026
bb59353
feat(token-ops): show member standing and full group capabilities in …
thephez Jul 8, 2026
67ae6be
feat(token-ops): replace standing banner with authority map summary
thephez Jul 8, 2026
6c764e2
feat(token-ops): split governance into access control and groups tabs
thephez Jul 9, 2026
bf958d6
feat(token-ops): add token details card with explorer links and pendi…
thephez Jul 9, 2026
f0b302f
chore(token-ops): run npm format
thephez Jul 9, 2026
36e13f7
feat(token-ops): accept a token ID or contract ID on the account screen
thephez Jul 9, 2026
f48b774
feat(token-ops): show token name and description on overview
thephez Jul 9, 2026
dc22c9a
feat(token-ops): allow appended groups of any Platform-valid size
thephez Jul 9, 2026
c4e681c
refactor(token-ops): separate contract registration into its own card
thephez Jul 9, 2026
218f0a0
fix(token-ops): show real max supply from the fetched contract
thephez Jul 9, 2026
46856f5
feat(token-ops): show DPNS names in place of identity IDs
thephez Jul 9, 2026
7618ce2
docs(token-ops): add README and refresh CLAUDE.md
thephez Jul 9, 2026
bc811b3
feat(token-ops): add WIF private-key login alongside mnemonic
thephez Jul 9, 2026
e5db954
feat(token-ops): resolve WIF login via non-unique key-hash lookup
thephez Jul 9, 2026
d0fb534
test(token-ops): fix governance e2e for tabbed access-control layout
thephez Jul 13, 2026
b36e2bf
fix(token-ops): make top nav and pending view responsive on mobile
thephez Jul 13, 2026
a369b8e
feat(token-ops): auto select login input field on modal open
thephez Jul 13, 2026
f72c512
feat(token-ops): flag pending actions stranded by capability reassign…
thephez Jul 13, 2026
34f4509
feat(token-ops): reframe overview as a governance dashboard
thephez Jul 13, 2026
057a533
test(token-ops): cover overview dashboard authority aggregation and c…
thephez Jul 13, 2026
91638cb
test(token-ops): cover session, settings, dpns cache, and governance/…
thephez Jul 13, 2026
0b8f83e
test(token-ops): broaden e2e coverage across all views
thephez Jul 13, 2026
b64bf05
feat(token-ops): link to Dash Bridge from the login modal
thephez Jul 13, 2026
4c1a7a3
refactor(token-ops): drop unused format/explorer exports
thephez Jul 13, 2026
b8d0ce0
test(token-ops): add read-only e2e coverage for Pending and Operations
thephez Jul 13, 2026
2421bdc
fix(token-ops): refill contract input on clear override
thephez Jul 13, 2026
a995294
refactor(token-ops): merge Operations and Pending into one Actions tab
thephez Jul 14, 2026
fcb8848
test(token-ops): merge operations and pending e2e specs into actions
thephez Jul 14, 2026
8bf4dda
ci(token-ops): add CI workflow mirroring dashrate
thephez Jul 14, 2026
dba9e4e
perf(token-ops): lazy-load the SDK to keep it off the boot path
thephez Jul 14, 2026
c6b10e8
feat(token-ops): gate governance actions on the signed-in identity's …
thephez Jul 14, 2026
174b07c
fix(token-ops): address review comments
thephez Jul 14, 2026
7a0c288
refactor(token-ops): extract core palette into CSS custom properties
thephez Jul 14, 2026
e440e6f
style(token-ops): address CSS review feedback
thephez Jul 14, 2026
2fb0077
fix(token-ops): address review findings (#11)
thepastaclaw Jul 15, 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
55 changes: 55 additions & 0 deletions .github/workflows/token-ops-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: TokenOps CI

on:
push:
branches: [main]
paths:
- 'example-apps/token-ops/**'
- '.github/workflows/token-ops-ci.yml'
pull_request:
branches: [main]
paths:
- 'example-apps/token-ops/**'
- '.github/workflows/token-ops-ci.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: token-ops-ci-${{ github.ref }}
cancel-in-progress: true

jobs:
check:
name: test + build
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
working-directory: example-apps/token-ops
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
persist-credentials: false

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version-file: .nvmrc
cache: npm
cache-dependency-path: example-apps/token-ops/package-lock.json

- name: Show Node/npm versions
run: |
node -v
npm -v

- name: Install
run: npm ci

- name: Test
run: npm test

# tsc -b runs as part of build, so this covers the typecheck too.
- name: Build
run: npm run build
4 changes: 3 additions & 1 deletion example-apps/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Example Apps

Stand-alone applications built on top of the same `@dashevo/evo-sdk` used by the Node tutorials in the parent repo. Each example is an independent npm project — `cd` into its directory and run `npm install` there.
Stand-alone applications built on top of the same `@dashevo/evo-sdk` used by the Node tutorials in the parent repo. Each example is an independent npm project — `cd` into its directory and run `npm install` there for the Vite app itself.

Some app scripts still depend on the **repository-root** install. TokenOps `npm run bootstrap:identities` imports the root `setupDashClient.mjs` helper and the root `@dashevo/evo-sdk` copy (to keep a single module instance for SDK `instanceof` checks). For that path, run `npm install` at the repo root as well — see [token-ops/README.md](./token-ops/README.md#group-members).

## Apps

Expand Down
32 changes: 32 additions & 0 deletions example-apps/token-ops/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Secrets
.env

# Artifacts
coverage
playwright-report/
test-results/

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
4 changes: 4 additions & 0 deletions example-apps/token-ops/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dist
node_modules
coverage
public/dashbounty-lite.html
1 change: 1 addition & 0 deletions example-apps/token-ops/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
133 changes: 133 additions & 0 deletions example-apps/token-ops/CLAUDE.md

Large diffs are not rendered by default.

170 changes: 170 additions & 0 deletions example-apps/token-ops/README.md

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions example-apps/token-ops/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import js from "@eslint/js";
import globals from "globals";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from "typescript-eslint";
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
globalIgnores(["coverage", "dist"]),
{
files: ["**/*.{ts,tsx}"],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
]);
19 changes: 19 additions & 0 deletions example-apps/token-ops/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TokenOps — Token Governance Lab</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
/>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading