Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
8b6d072
arbor: emit dust-clamp events with pre-clamp value (H4)
invalid-email-address Jul 9, 2026
b7626e4
arbor: checkpoint full protocol implementation state
ARBOR-L Jul 9, 2026
9136e75
fix: list-markets RPC handler was returning raw state key (23 bytes) …
ARBOR-L Jul 14, 2026
e632938
Arbor lending protocol: custody, liquidation, Layer 2 reserve fund, R…
ARBOR-L Jul 20, 2026
a470abb
Merge branch 'main' into main
ARBOR-L Jul 20, 2026
f7b9ed7
arbor: add EventTotalBorrowedDustClamp for silent aggregate-clamp drift
ARBOR-L Jul 21, 2026
3b365a7
Merge branch 'main' of https://github.com/ARBOR-L/ARBOR
ARBOR-L Jul 21, 2026
5285d5c
plugin/go: resolve go.mod merge duplication, target go 1.26.0
ARBOR-L Jul 21, 2026
23d6ede
fix(interest_accrual): route interestEarned to R_fund on Insolvent br…
ARBOR-L Jul 23, 2026
fdb3265
feat(rpc): add currentDebt to handleQueryBorrowerPosition response
ARBOR-L Jul 23, 2026
9a40d3b
feat(layer4): implement SumLenderBalancesInMarket (AYIS Section 5.4.2)
ARBOR-L Jul 23, 2026
90b9cff
feat(layer4): market-insolvency accessors, {28} queue, gofmt fixes
ARBOR-L Jul 23, 2026
0455947
gofmt: fix tab indentation in state_keys.go (whitespace only, no logi…
ARBOR-L Jul 23, 2026
ed72e9a
fix(layer4): eliminate GetMarket/SaveMarket race in Status writes; ad…
ARBOR-L Jul 24, 2026
de3daa7
feat(rpc): expose all-markets, prices, all-borrower-positions range r…
ARBOR-L Jul 25, 2026
3850379
feat(frontend): add ARBOR lending dashboard (Next.js) under frontend/
ARBOR-L Jul 25, 2026
ae03baf
Merge branch 'main' into main
ARBOR-L Jul 25, 2026
699a7b4
feat(frontend): wallet connect + portfolio health factors + position-…
ARBOR-L Jul 25, 2026
bf899fa
fix(custody): eliminate multi-StateWrite non-atomicity in borrow/repa…
ARBOR-L Jul 25, 2026
9c54e35
fix(critical): restore DeliverTx routing for all 14 Arbor message types
ARBOR-L Jul 26, 2026
7615a4a
fix(liquidate_position): guard collateralSeized/badDebtNative uint64 …
ARBOR-L Jul 26, 2026
ade9606
feat(frontend): brand redesign + portfolio render fix
ARBOR-L Jul 26, 2026
0270dc1
fix(scaled_debt): guard numerator big.Int -> uint64 cast in ScaledDebt()
ARBOR-L Jul 26, 2026
abb783a
feat(layer3): add protocol treasury (T_fund) scaffolding, correct sta…
ARBOR-L Jul 27, 2026
3eb700a
feat(layer3): split shared T_fund into isolated Arbor/NASM treasuries
ARBOR-L Jul 27, 2026
2a63a11
feat(frontend): fix blank-home-on-nav + mobile nav sheet + fonts/meta…
ARBOR-L Jul 27, 2026
8944102
fix(frontend): opaque mobile menu + frosted header (CDN-proof surfaces)
ARBOR-L Jul 27, 2026
327f2f3
feat(layer3): wire Layer 3 treasury draw-down into liquidation waterfall
ARBOR-L Jul 27, 2026
c5271cc
fix(frontend): dim the page behind the open mobile menu
ARBOR-L Jul 27, 2026
989ac4e
feat(frontend): adopt the new ARBOR tree mark, role-aware
ARBOR-L Jul 27, 2026
3ce7816
feat(frontend): role-aware shell — protocol authority + oracle roles
ARBOR-L Jul 27, 2026
90e28d8
Add treasury_cut governance mechanism (Layer 3 funding)
ARBOR-L Jul 29, 2026
1ccd312
Implement ProcessLossFactorQueue and wire into BeginBlock (Layer 4)
ARBOR-L Jul 29, 2026
0c142ea
DEBUG ONLY: add MessageDebugEnqueueLossFactor test scaffolding
ARBOR-L Jul 29, 2026
3222be8
Revert "DEBUG ONLY: add MessageDebugEnqueueLossFactor test scaffolding"
ARBOR-L Jul 29, 2026
c7ed0a4
Implement WillExhaustThisBlock (C4) and thread AccrueInterest events
ARBOR-L Jul 30, 2026
00ea897
Fix interest sub-unit rounding loss + gofmt cleanup
ARBOR-L Jul 30, 2026
9686926
NASM foundation: state key prefixes {30},{31},{32},{34} + uint128 tes…
ARBOR-L Jul 31, 2026
fda7e07
NASM: proto messages + state accessors for {30},{31},{32},{34}
ARBOR-L Jul 31, 2026
ace546d
Add PoolPurposeNasmVault -- prevent NASM/ARCM pool id collision
ARBOR-L Aug 1, 2026
3dbb360
NASM tier eligibility: bridge ARCM {29} registry to NASM's tighter LT…
ARBOR-L Aug 1, 2026
bf1cf23
NASM: /v1/query/nasmtier RPC route -- live-verified against devnet
ARBOR-L Aug 1, 2026
c9ccf35
NASM: MessageMintNusd proto + full tx dispatch wiring
ARBOR-L Aug 1, 2026
ae04998
NASM: dedicated NusdBalance ledger, independent of Account.Amount
ARBOR-L Aug 1, 2026
54c71ab
NASM: mint_nusd handler -- full mint flow, not yet devnet-verified
ARBOR-L Aug 1, 2026
a299617
NASM: mint_nusd RPC routes + submit_tx.go wiring -- live-verified end…
ARBOR-L Aug 2, 2026
e6bc82f
NASM: stability fee accrual (BeginBlock) -- real bug found & fixed, d…
ARBOR-L Aug 2, 2026
477c13f
NASM: burn_nusd handler -- full burn flow, not yet devnet-verified
ARBOR-L Aug 2, 2026
0a94887
NASM: burn_nusd submit_tx.go wiring -- live-verified, partial + full …
ARBOR-L Aug 2, 2026
4e3b305
Merge branch 'canopy-network:main' into main
ARBOR-L Aug 2, 2026
f99884c
feat(frontend): NUSD section + Phase-1 ARCM disclosures + webpack dev
ARBOR-L Aug 3, 2026
c0cb033
feat(frontend): complete the read surface — vaults + interest remainder
ARBOR-L Aug 3, 2026
7a5138c
feat(frontend): truthful loss-factor states + NUSD vaults + interest …
ARBOR-L Aug 3, 2026
7229144
feat(frontend): role-aware Authority console (/admin)
ARBOR-L Aug 3, 2026
488b8ca
NASM: add server-side owner filter to /v1/query/all-nasm-vaults
ARBOR-L Aug 4, 2026
e852fdd
feat(frontend): NUSD vaults auto-enumerate via all-nasm-vaults?owner=
ARBOR-L Aug 4, 2026
f93b591
Fix stale doc comment in liquidate_position.go re: Layer 2-4 waterfall
ARBOR-L Aug 4, 2026
a042902
NASM: add LIFBps to NasmTierParams -- carefully derived, not guessed
ARBOR-L Aug 4, 2026
16bc7b2
feat(frontend): waterfall activity panel + NUSD vault auto-enumeration
ARBOR-L Aug 5, 2026
11db333
feat(frontend): production hardening — webpack build + form null-guards
ARBOR-L Aug 5, 2026
80d6888
feat(waterfall+nasm): durable waterfall event log, NASM vault liquida…
ARBOR-L Aug 5, 2026
f3cc621
Merge branch 'canopy-network:main' into main
ARBOR-L Aug 6, 2026
fb50903
feat(nasm): wire Layer3DrawDownNASM into liquidation, fund R_nusd fro…
ARBOR-L Aug 6, 2026
2bb1a4a
feat(frontend): Argon2id keystore + proto regen + waterfall decode
ARBOR-L Aug 6, 2026
06454cf
fix(nasm): CLI liquidate_nasm_vault case, stale error message text
ARBOR-L Aug 7, 2026
bc7e135
feat(frontend): professional waterfall widget with per-event semantics
ARBOR-L Aug 7, 2026
8711370
feat(nasm): tier concentration cap (NASM Spec Section 3.3)
ARBOR-L Aug 8, 2026
bea1673
feat(frontend): self-custodial wallet + NASM mint/burn/liquidate + tx…
ARBOR-L Aug 8, 2026
9bab823
fix(arcm): TotalBorrowed write-back gap in Layer 4 bad-debt socializa…
ARBOR-L Aug 8, 2026
198da3d
Add quest XP indexer service
ARBOR-L Aug 8, 2026
a315a12
Fix route ordering: /leaderboard/current now declared before /leaderb…
ARBOR-L Aug 8, 2026
d73a72e
Track package-lock.json for reproducible installs
ARBOR-L Aug 8, 2026
eab5a48
feat(frontend): asset coin icon system (parchment badge family)
ARBOR-L Aug 9, 2026
02fbdd9
feat(frontend): asset coin icon system + home dashboard hierarchy
ARBOR-L Aug 9, 2026
d107591
fix(frontend): cap stat-card coin stacks at 4 so +N chip counts hidde…
ARBOR-L Aug 9, 2026
f1d5a21
feat(frontend): market detail role-grouped form sections (lend / borr…
ARBOR-L Aug 9, 2026
c3ea6a8
fix(frontend): keep 'use client' directive first in market detail + o…
ARBOR-L Aug 9, 2026
ec5019a
Add quest indexer relay: frontend API client, hooks, and Quests page
ARBOR-L Aug 9, 2026
96994c3
Add Quests link to nav
ARBOR-L Aug 10, 2026
7fc88e2
feat(frontend): market detail forms rolled into collapsible role sect…
ARBOR-L Aug 10, 2026
1d2c3f8
fix(frontend): market header formats B index / S rate / loss factor (…
ARBOR-L Aug 10, 2026
a0ed546
feat(frontend): wallet page becomes portfolio overview; drop protocol…
ARBOR-L Aug 10, 2026
942a02c
fix(frontend): queryAccount via POST; restore Quests nav entry
ARBOR-L Aug 10, 2026
33a25f8
feat(frontend): MetaMask tab in WalletConnect; useAccount hook integr…
ARBOR-L Aug 10, 2026
07e316c
fix(frontend): MetaMask derive shape, effect guards, silent reconnect
ARBOR-L Aug 10, 2026
756597f
fix(frontend): queryAccount via POST /v1/query/account {address}
ARBOR-L Aug 10, 2026
ffaac58
feat(frontend): nav 'Send' relabeled 'Portfolio'; home drops duplicat…
ARBOR-L Aug 10, 2026
b7b9c72
fix(frontend): eslint guards for intentional setState in Header effects
ARBOR-L Aug 10, 2026
b022f84
fix(frontend): precise lint guards in Header; ensure queryAccount POS…
ARBOR-L Aug 10, 2026
c4cb251
NASM Section 9.2: wire OracleUntrustworthy gate + emergencymode RPC r…
ARBOR-L Aug 10, 2026
e416270
Merge branch 'canopy-network:main' into main
ARBOR-L Aug 10, 2026
98a4aa5
Add daily quest cap: same quest action earns XP once per day, per Ada…
ARBOR-L Aug 10, 2026
c0fa27b
Merge branch 'main' of https://github.com/ARBOR-L/ARBOR
ARBOR-L Aug 10, 2026
eb7b3fd
Add quest catalog with instructions and daily completion tracking
ARBOR-L Aug 11, 2026
9114b4d
ARCM Section 15: per-tier oracle staleness thresholds
ARBOR-L Aug 12, 2026
ba41b4d
Add devnet faucet: claim_faucet tx, AssetBalance/FaucetClaimRecord st…
ARBOR-L Aug 12, 2026
6749074
Merge branch 'main' into main
ARBOR-L Aug 13, 2026
c9d6240
remove leftover tutorial custom send handler; native wallet send used…
ARBOR-L Aug 14, 2026
9a7bbb8
cleanup: remove dead plugin-routed send case and debug prints from su…
ARBOR-L Aug 14, 2026
7100432
feat(frontend): tx chainId reads NEXT_PUBLIC_CHAIN_ID (default 1)
ARBOR-L Aug 14, 2026
97704a2
feat: identity linking with pubkey, quest indexer updates
ARBOR-L Aug 14, 2026
259b526
feat(frontend): wallet chip menu, device-cache auto-reconnect, manual…
ARBOR-L Aug 14, 2026
41c1326
fix(frontend): repair build — decode imports + store destructuring
ARBOR-L Aug 14, 2026
c770da7
scripts: add grad-node RPC env overrides + local keystore signing
ARBOR-L Aug 14, 2026
8776905
feat(frontend): /watch/[address] public read-only portfolio view
ARBOR-L Aug 14, 2026
c38915c
feat(frontend): watch asset rows, ARBOR native labeling, chip watch e…
ARBOR-L Aug 14, 2026
245528d
fix(frontend): watch AssetBalance rows show whole units
ARBOR-L Aug 14, 2026
1b85b88
feat(frontend): watch shows CNPY faucet balance (100 whole units)
ARBOR-L Aug 14, 2026
fb85ce5
fix(frontend): native token is 6-dec (uCNPY), not 9-dec
ARBOR-L Aug 14, 2026
ec65a6d
fix(frontend): env-driven chainId in live tx path + ARBOR labels
ARBOR-L Aug 15, 2026
862d75c
feat(frontend): toast auto-dismiss after confirmed/failed
ARBOR-L Aug 15, 2026
12f111d
feat(frontend): asset faucet with per-asset claim buttons
ARBOR-L Aug 15, 2026
456106b
feat(frontend): asset faucet with per-asset claim buttons
ARBOR-L Aug 15, 2026
8579232
feat(frontend): faucet balances join Your balances; single Claim all
ARBOR-L Aug 15, 2026
8117cde
style(frontend): header uses parchment seal + Smart lending protocol
ARBOR-L Aug 15, 2026
16d2279
style(frontend): remove + Create market from public overview
ARBOR-L Aug 15, 2026
b61d235
feat(frontend): deposit forms show wallet balance of the asset
ARBOR-L Aug 15, 2026
e0467b0
fix(frontend): whole-unit convention for market assets; native 6-dec
ARBOR-L Aug 15, 2026
2c2a701
Fix faucet accounting bug: debit/credit AssetBalance on deposit/withdraw
ARBOR-L Aug 15, 2026
fdbdfa4
feat(frontend): proper tx explorer with activity feed
ARBOR-L Aug 15, 2026
3164463
fix(frontend): tx explorer null-safe subtitle (unblocks Vercel build)
ARBOR-L Aug 15, 2026
10a87b8
fix(frontend): explorer uses proven txs-by-sender shape; sweep 9-dec …
ARBOR-L Aug 15, 2026
2518948
Fix oracle price script: asset ID casing, add BTC, add loop mode
ARBOR-L Aug 16, 2026
113cfd8
fix(frontend): TVL uses whole units (remove / 1e9)
ARBOR-L Aug 16, 2026
9f613f9
style(frontend): clarify borrow section header
ARBOR-L Aug 16, 2026
6486b51
feat(market): UX readability pass — intent-first tiles, tooltips, hea…
ARBOR-L Aug 16, 2026
51aeb48
fix(frontend): liquidity-aware borrow + intent-first tiles
ARBOR-L Aug 16, 2026
53bac71
feat(frontend): intent-first tiles for market detail page
ARBOR-L Aug 16, 2026
517d42a
fix(frontend): withdraw form checks market liquidity before allowing
ARBOR-L Aug 16, 2026
abf94d8
fix(frontend): monitor page table columns + whole-unit formatting
ARBOR-L Aug 16, 2026
1ac8363
feat(frontend): monitor shows USD valuation for TVL and R_fund
ARBOR-L Aug 16, 2026
fba5470
feat(frontend): Layer 1 collateral priced per asset at oracle medians
ARBOR-L Aug 16, 2026
84a050b
fix(frontend): liquidation dashboard whole-unit USD + no-debt safety
ARBOR-L Aug 16, 2026
3a6b279
docs(frontend): markets footnote says whole-unit, not 9-decimal
ARBOR-L Aug 16, 2026
288a329
feat(frontend): instant position refresh after tx + live indicators +…
ARBOR-L Aug 16, 2026
0462d1f
feat(frontend): live withdrawable collateral + repay dust explainer
ARBOR-L Aug 16, 2026
f52b28c
feat(frontend): live withdrawable collateral + repay dust explainer
ARBOR-L Aug 16, 2026
42a0c3f
fix(frontend): repay validation uses API currentDebt directly
ARBOR-L Aug 16, 2026
f949a83
Fix NUSD concentration cap incorrectly blocking every first mint
ARBOR-L Aug 17, 2026
3f4e8ac
Add max-mintable NUSD preview: new RPC route + shared calc function
ARBOR-L Aug 17, 2026
9eee608
Fix handleQueryMaxMintableNusd crashing the plugin process (502s)
ARBOR-L Aug 17, 2026
462286e
feat(frontend): max-mint preview + progressive disclosure pass
ARBOR-L Aug 17, 2026
092d045
fix(frontend): vault collateral/escrowed display uses whole units
ARBOR-L Aug 17, 2026
2cacb9f
fix(frontend): waterfall event balances use whole units
ARBOR-L Aug 17, 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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,6 @@ node_modules

# Hardhat
cache/solidity-files-cache.json
*.bak
plugin/go/scripts/__pycache__/
node.log
50 changes: 50 additions & 0 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
node_modules/
.next/
out/
.turbo/
coverage/
playwright-report/
*.log
.env.local
.env*.local
Empty file added frontend/=
Empty file.
5 changes: 5 additions & 0 deletions frontend/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
<!-- END:nextjs-agent-rules -->
1 change: 1 addition & 0 deletions frontend/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
36 changes: 36 additions & 0 deletions frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
18 changes: 18 additions & 0 deletions frontend/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
]),
]);

export default eslintConfig;
22 changes: 22 additions & 0 deletions frontend/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import type { NextConfig } from "next";

// Backend destinations are configurable so the SAME build works locally
// (defaults to 127.0.0.1) and on Vercel (set these to your node's public
// URL or a tunnel). Server-side only (NOT NEXT_PUBLIC): the browser always
// calls the same-origin /canopy-rpc, /canopy-admin, /arbor-rpc paths and
// Next proxies them server-side, which also sidesteps CORS entirely.
const canopyRpcDest = process.env.CANOPY_RPC_DEST || "http://127.0.0.1:50002";
const canopyAdminDest = process.env.CANOPY_ADMIN_DEST || "http://127.0.0.1:50003";
const arborRpcDest = process.env.ARBOR_RPC_DEST || "http://127.0.0.1:50010";

const nextConfig: NextConfig = {
async rewrites() {
return [
{ source: "/canopy-rpc/:path*", destination: `${canopyRpcDest}/:path*` },
{ source: "/canopy-admin/:path*", destination: `${canopyAdminDest}/:path*` },
{ source: "/arbor-rpc/:path*", destination: `${arborRpcDest}/:path*` },
];
},
};

export default nextConfig;
Loading