Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
60448e5
feat(mobile): Skur for iOS and Android
Emmyhack Sep 16, 2026
b435a24
fix(mobile): queue navigation, memo encoding, historical confirmation…
Emmyhack Sep 16, 2026
4766462
feat(mobile): Safe{Mobile} structure in Skur's pattern, onboarding an…
Emmyhack Sep 16, 2026
253c52e
feat(mobile): address book, members, policy editor, simulator, vault …
Emmyhack Sep 16, 2026
22c61e0
refactor(mobile): reference onboarding and screens that open instead …
Emmyhack Sep 16, 2026
23eb423
fix(mobile): stop the transaction list reloading on every background …
Emmyhack Sep 16, 2026
8693682
design(mobile): onboarding that shows the product instead of describi…
Emmyhack Sep 16, 2026
e4b1045
design(mobile): one switchable ground, and screens that show values i…
Emmyhack Sep 16, 2026
294de9f
fix(mobile): the onboarding carousel always opens on its first page
Emmyhack Sep 16, 2026
4248702
feat: a five-asset demo vault, token marks, and a wallet-style add-va…
Emmyhack Sep 16, 2026
692bb78
feat(web): show the phone app on the site
Emmyhack Sep 17, 2026
4fdb0d6
design(web): phone mockups drawn at true device scale
Emmyhack Sep 17, 2026
977a79e
feat(web): documentation on the site instead of a link to the repository
Emmyhack Sep 17, 2026
2d3940b
feat(sui): Move core, SDK and indexer for the authorization layer
Emmyhack Oct 5, 2026
1f38e08
feat(app): the Sui interface, and the docs for the new direction
Emmyhack Oct 5, 2026
3061c32
ci(sui): build and test the Move package, the SDK, the backend and th…
Emmyhack Oct 5, 2026
0654d45
docs(sui): a reading order for the Move package, and fewer toolchain …
Emmyhack Oct 5, 2026
9e3d7cc
feat(app): the marketing site and the documentation, on the new stack
Emmyhack Oct 5, 2026
6f8b10f
test(sdk): round-trip the BCS layouts, and stop hardcoding a status i…
Emmyhack Oct 5, 2026
ae89909
feat(sui): a proposal can be rejected, not only cancelled or left to …
Emmyhack Oct 5, 2026
6641358
docs(app): the route groups, and why the indexer is optional
Emmyhack Oct 5, 2026
de2b49e
test(sdk): an end-to-end run against a live network
Emmyhack Oct 5, 2026
a6b6c71
fix(sui): the Move package compiles clean and all 75 tests pass
Emmyhack Oct 5, 2026
09de277
fix(sdk): the abort-code parser reported the wrong reason entirely
Emmyhack Oct 5, 2026
5a39629
chore: stop tracking the TypeScript build cache
Emmyhack Oct 5, 2026
6a96b17
build: the backend and the interface build the SDK before they use it
Emmyhack Oct 5, 2026
1310d49
build: one command that runs what CI runs
Emmyhack Oct 5, 2026
98c44bf
fix(sui): announce the founding roster, so the vault's state is deriv…
Emmyhack Oct 5, 2026
78efa63
refactor: remove the EVM build
Emmyhack Oct 5, 2026
b70af5f
fix: untrack the Expo build output I committed by accident
Emmyhack Oct 5, 2026
7f5e5ec
feat(mobile): the Sui app for iOS and Android
Emmyhack Oct 5, 2026
5c75aad
fix(mobile): polyfill Intl.PluralRules, which Hermes does not have
Emmyhack Oct 5, 2026
379f28a
test(mobile): render every screen and press its buttons
Emmyhack Oct 6, 2026
1a18cd9
build: add the short script names, and document the CMake failure
Emmyhack Oct 6, 2026
79239b2
feat(mobile): rework for product quality — navigation, resilience, pu…
Emmyhack Oct 6, 2026
62428cd
fix(mobile): survive a real Android device — Hermes gaps, keystore de…
Emmyhack Oct 6, 2026
abbc2b3
feat(mobile): the full 21-screen product design, in brand, light and …
Emmyhack Oct 7, 2026
df9617b
feat: the real Skur mark everywhere, and a design-fidelity pass on th…
Emmyhack Oct 7, 2026
58488b9
feat(mobile): close the last reference-screen gaps
Emmyhack Oct 7, 2026
a7ff33c
feat(web): the phone joins the artwork, carrying the new mobile design
Emmyhack Oct 7, 2026
75f2edd
fix(web): scope the marketing stylesheet, and finish the brand sweep
Emmyhack Oct 8, 2026
65735c3
fix(web): the firewall shield panel carries its own ink
Emmyhack Oct 8, 2026
a60517b
fix(web): no more blank page from the dapp — CORS, an error boundary,…
Emmyhack Oct 8, 2026
bb3d976
feat(web): publish the package from the browser
Emmyhack Oct 8, 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
73 changes: 0 additions & 73 deletions .github/workflows/ci.yml

This file was deleted.

125 changes: 125 additions & 0 deletions .github/workflows/sui.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: Sui

permissions: {}

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

env:
# Pin the toolchain: the Move compiler and the bundled framework move together, and a job that
# silently upgrades either is a job that cannot reproduce a failure.
SUI_VERSION: mainnet-v1.80.1

jobs:
move:
name: Move
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- name: Cache the Sui CLI
id: cache-sui
uses: actions/cache@v4
with:
path: ~/.local/bin/sui
key: sui-${{ env.SUI_VERSION }}-ubuntu

- name: Install the Sui CLI
if: steps.cache-sui.outputs.cache-hit != 'true'
run: |
mkdir -p ~/.local/bin
curl -fsSL --retry 5 \
"https://github.com/MystenLabs/sui/releases/download/${SUI_VERSION}/sui-${SUI_VERSION}-ubuntu-x86_64.tgz" \
-o /tmp/sui.tgz
tar -xzf /tmp/sui.tgz -C /tmp
find /tmp -maxdepth 3 -type f -name sui -perm -u+x -exec cp {} ~/.local/bin/sui \;
chmod +x ~/.local/bin/sui

- name: Build
run: ~/.local/bin/sui move build --path sui

- name: Test
run: ~/.local/bin/sui move test --path sui

typescript:
name: TypeScript
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- uses: actions/setup-node@v4
with:
node-version: 24

- name: Build and test the SDK
working-directory: sdk
run: |
npm install --no-audit --no-fund
npm run typecheck
npm run build
npm test

- name: Test the backend
working-directory: server
env:
# The rule tests are pure; nothing here touches a database.
DATABASE_URL: postgres://localhost:5432/unused
SKUR_PACKAGE_ID: '0x0'
run: |
npm install --no-audit --no-fund
npm run typecheck
npm test

- name: Typecheck the interface
working-directory: app
run: |
npm install --no-audit --no-fund
npm run typecheck

migrations:
name: Migrations
runs-on: ubuntu-latest
permissions:
contents: read
services:
postgres:
image: postgres:17
env:
# No password, rather than a hardcoded one. This container exists for the length of one
# job, is reachable only from it, and is thrown away afterwards — so a credential here
# protects nothing and is one more string to leak. `trust` removes it entirely.
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: skur
ports:
- 5432:5432
options: >-
--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- uses: actions/setup-node@v4
with:
node-version: 24

# A migration that does not apply to an empty database is a migration nobody can deploy.
- name: Apply the migrations
working-directory: server
env:
DATABASE_URL: postgres://postgres@localhost:5432/skur
SKUR_PACKAGE_ID: '0x0'
run: |
npm install --no-audit --no-fund
npm run migrate
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,23 @@ contracts/broadcast/**/dry-run/
node_modules/
web/dist/
web/coverage/
sdk/dist/
app/.next/
app/out/
app/next-env.d.ts
*.tsbuildinfo

# move
sui/build/
sui/Move.lock

# tooling
.DS_Store
*.log
crytic-export/

# The EVM build was removed. These directories may still exist locally, holding build output,
# node_modules and a .env — their own .gitignore files went with them, so without this a
# `git add -A` happily commits an Expo prebuild. Never track these paths again.
/contracts/
/web/
6 changes: 0 additions & 6 deletions .gitmodules

This file was deleted.

Loading
Loading