wip: polish

This commit is contained in:
reya 2023-10-18 08:43:31 +07:00
parent 7fa1e89dc8
commit 489ab6bd0b
17 changed files with 293 additions and 205 deletions

View File

@ -20,9 +20,9 @@
"dependencies": {
"@evilmartians/harmony": "^1.1.0",
"@formkit/auto-animate": "^0.8.0",
"@getalby/sdk": "^2.4.0",
"@nostr-dev-kit/ndk": "^2.0.2",
"@nostr-dev-kit/ndk-cache-dexie": "^2.0.2",
"@getalby/sdk": "^2.5.0",
"@nostr-dev-kit/ndk": "^2.0.3",
"@nostr-dev-kit/ndk-cache-dexie": "^2.0.3",
"@nostr-fetch/adapter-ndk": "^0.12.2",
"@radix-ui/react-alert-dialog": "^1.0.5",
"@radix-ui/react-avatar": "^1.0.4",
@ -61,21 +61,22 @@
"html-to-text": "^9.0.5",
"light-bolt11-decoder": "^3.0.0",
"lru-cache": "^10.0.1",
"media-chrome": "^1.4.3",
"media-chrome": "^1.4.4",
"million": "^2.6.4",
"minidenticons": "^4.2.0",
"nostr-fetch": "^0.13.0",
"nostr-tools": "^1.16.0",
"nostr-tools": "^1.17.0",
"qrcode.react": "^3.1.0",
"re-resizable": "^6.9.11",
"react": "^18.2.0",
"react-currency-input-field": "^3.6.11",
"react-dom": "^18.2.0",
"react-hook-form": "^7.47.0",
"react-hotkeys-hook": "^4.4.1",
"react-markdown": "^8.0.7",
"react-router-dom": "^6.16.0",
"react-router-dom": "^6.17.0",
"react-string-replace": "^1.1.1",
"reactflow": "^11.9.3",
"reactflow": "^11.9.4",
"remark-gfm": "^3.0.1",
"sonner": "^1.0.3",
"tailwind-scrollbar": "^3.0.5",
@ -92,8 +93,8 @@
"@types/react": "^18.2.28",
"@types/react-dom": "^18.2.13",
"@types/youtube-player": "^5.5.8",
"@typescript-eslint/eslint-plugin": "^6.7.5",
"@typescript-eslint/parser": "^6.7.5",
"@typescript-eslint/eslint-plugin": "^6.8.0",
"@typescript-eslint/parser": "^6.8.0",
"@vitejs/plugin-react-swc": "^3.4.0",
"autoprefixer": "^10.4.16",
"clsx": "^2.0.0",

View File

@ -12,17 +12,17 @@ dependencies:
specifier: ^0.8.0
version: 0.8.0
'@getalby/sdk':
specifier: ^2.4.0
version: 2.4.0
specifier: ^2.5.0
version: 2.5.0
'@nostr-dev-kit/ndk':
specifier: ^2.0.2
version: 2.0.2(typescript@5.2.2)
specifier: ^2.0.3
version: 2.0.3(typescript@5.2.2)
'@nostr-dev-kit/ndk-cache-dexie':
specifier: ^2.0.2
version: 2.0.2(typescript@5.2.2)
specifier: ^2.0.3
version: 2.0.3(typescript@5.2.2)
'@nostr-fetch/adapter-ndk':
specifier: ^0.12.2
version: 0.12.2(@nostr-dev-kit/ndk@2.0.2)(nostr-fetch@0.13.0)
version: 0.12.2(@nostr-dev-kit/ndk@2.0.3)(nostr-fetch@0.13.0)
'@radix-ui/react-alert-dialog':
specifier: ^1.0.5
version: 1.0.5(@types/react-dom@18.2.13)(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
@ -135,8 +135,8 @@ dependencies:
specifier: ^10.0.1
version: 10.0.1
media-chrome:
specifier: ^1.4.3
version: 1.4.3
specifier: ^1.4.4
version: 1.4.4
million:
specifier: ^2.6.4
version: 2.6.4
@ -147,8 +147,8 @@ dependencies:
specifier: ^0.13.0
version: 0.13.0
nostr-tools:
specifier: ^1.16.0
version: 1.16.0(typescript@5.2.2)
specifier: ^1.17.0
version: 1.17.0(typescript@5.2.2)
qrcode.react:
specifier: ^3.1.0
version: 3.1.0(react@18.2.0)
@ -167,18 +167,21 @@ dependencies:
react-hook-form:
specifier: ^7.47.0
version: 7.47.0(react@18.2.0)
react-hotkeys-hook:
specifier: ^4.4.1
version: 4.4.1(react-dom@18.2.0)(react@18.2.0)
react-markdown:
specifier: ^8.0.7
version: 8.0.7(@types/react@18.2.28)(react@18.2.0)
react-router-dom:
specifier: ^6.16.0
version: 6.16.0(react-dom@18.2.0)(react@18.2.0)
specifier: ^6.17.0
version: 6.17.0(react-dom@18.2.0)(react@18.2.0)
react-string-replace:
specifier: ^1.1.1
version: 1.1.1
reactflow:
specifier: ^11.9.3
version: 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
specifier: ^11.9.4
version: 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
remark-gfm:
specifier: ^3.0.1
version: 3.0.1
@ -224,11 +227,11 @@ devDependencies:
specifier: ^5.5.8
version: 5.5.8
'@typescript-eslint/eslint-plugin':
specifier: ^6.7.5
version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2)
specifier: ^6.8.0
version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser':
specifier: ^6.7.5
version: 6.7.5(eslint@8.51.0)(typescript@5.2.2)
specifier: ^6.8.0
version: 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@vitejs/plugin-react-swc':
specifier: ^3.4.0
version: 3.4.0(vite@4.4.11)
@ -845,8 +848,8 @@ packages:
resolution: {integrity: sha512-G8f7489ka0mWyi+1IEZT+xgIwcpWtRMmE2x+IrVoQ+KM1cP6VDj/TbujZjwxdb0P8w8b16/qBfViRmydbYHwMw==}
dev: false
/@getalby/sdk@2.4.0:
resolution: {integrity: sha512-aIGNwLRF9coj6koxfq7P4GtFZbFjQbnIheix39x9176PwFw4dXOdGXHPXnqioJTmeq80y+vX1yd+u/f03YGoeg==}
/@getalby/sdk@2.5.0:
resolution: {integrity: sha512-MRLgI6WxCCLgrar+qDqm/UhKs+V6yXzNm4y1bJRAuN72nkKT+TjTJHCmk9GjTngR3FrOfLbeMsPwBxCmbvfrLQ==}
engines: {node: '>=14'}
dependencies:
crypto-js: 4.1.1
@ -947,21 +950,21 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
/@nostr-dev-kit/ndk-cache-dexie@2.0.2(typescript@5.2.2):
resolution: {integrity: sha512-v6dq82Gzw/AoDMtkjCeTg+gx9n6sX3xReaMpIUbKL5W+E7z1lqnR0RmYkeNxUhd7Tlg0FQ+Ywqq7nZs+UmGDEA==}
/@nostr-dev-kit/ndk-cache-dexie@2.0.3(typescript@5.2.2):
resolution: {integrity: sha512-+hSskmdo6GNp/wghCG1WRnm0HGipoJSRCOPeGHSRoUnwUpXlA9NobAjI5XOakrBGKhkWOQpsUgumHGADUX8oAQ==}
dependencies:
'@nostr-dev-kit/ndk': 2.0.2(typescript@5.2.2)
'@nostr-dev-kit/ndk': 2.0.3(typescript@5.2.2)
debug: 4.3.4
dexie: 3.2.4
nostr-tools: 1.16.0(typescript@5.2.2)
nostr-tools: 1.17.0(typescript@5.2.2)
typescript-lru-cache: 2.0.0
transitivePeerDependencies:
- supports-color
- typescript
dev: false
/@nostr-dev-kit/ndk@2.0.2(typescript@5.2.2):
resolution: {integrity: sha512-EwaOJVS0FOCXlIffiVceKrK+QtbaRTG6QYdoQchMAe+ag2C3jl7nAoDTWlixv/WgJOFl4KPQkS8r0sEkGmXsjQ==}
/@nostr-dev-kit/ndk@2.0.3(typescript@5.2.2):
resolution: {integrity: sha512-rKIJBIU0dZHaXwj1TY18VSLYsoIe1aQ7TAxkH3WFx3lGTXCz+nlGh5bsyvgMBdbyb0iecdjsaKqBRpEWMzYC9g==}
dependencies:
'@noble/hashes': 1.3.2
'@noble/secp256k1': 2.0.0
@ -970,7 +973,7 @@ packages:
eventemitter3: 5.0.1
light-bolt11-decoder: 3.0.0
node-fetch: 3.3.2
nostr-tools: 1.16.0(typescript@5.2.2)
nostr-tools: 1.17.0(typescript@5.2.2)
typescript-lru-cache: 2.0.0
utf8-buffer: 1.0.0
websocket-polyfill: 0.0.3
@ -979,13 +982,13 @@ packages:
- typescript
dev: false
/@nostr-fetch/adapter-ndk@0.12.2(@nostr-dev-kit/ndk@2.0.2)(nostr-fetch@0.13.0):
/@nostr-fetch/adapter-ndk@0.12.2(@nostr-dev-kit/ndk@2.0.3)(nostr-fetch@0.13.0):
resolution: {integrity: sha512-+7EVuxS5DDZvNo6qbfFp7xRHwIyjyi36hYkiQFDjbQ4gX5LKo9RIPB1P+1XGkOSDFshypTbovZCaFunscJ/zhQ==}
peerDependencies:
'@nostr-dev-kit/ndk': ^0.7.5
nostr-fetch: ^0.12.2
dependencies:
'@nostr-dev-kit/ndk': 2.0.2(typescript@5.2.2)
'@nostr-dev-kit/ndk': 2.0.3(typescript@5.2.2)
'@nostr-fetch/kernel': 0.12.2
nostr-fetch: 0.13.0
dev: false
@ -1704,13 +1707,13 @@ packages:
'@babel/runtime': 7.23.2
dev: false
/@reactflow/background@11.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-m3MR25ufbrDkZI2Yi7pHX5uewVpiaaVM5px35pk2v3qdG68adqHOgJjncUOpGiJpc3rDwt4mqmW1V7RjBqNv6Q==}
/@reactflow/background@11.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-bgwvqWxF09chwmdkyClpYEMaewBspdwjgLbbFlLf4SpWPFMYyuvCBQrcISsvy/EDEWO9i3Uj9ktgGAhvtSQsmA==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@ -1720,13 +1723,13 @@ packages:
- immer
dev: false
/@reactflow/controls@11.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-UTsfHE+PhgWrCZN4GUOTRU/3l8dGSyR2KslmgqV7mVNsh6EuS2cxboRczjpcIc8lF0EH+7QxLGeXSH42GWCcOQ==}
/@reactflow/controls@11.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-x6e5p9iHjC6gd+4SoZ3DOOp0F1MefGKQ8hT6yPVdqxfo1+rV2WhrWvrX/MCoEu12Dp7457LdLfa0giy3aho8tQ==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@ -1736,8 +1739,8 @@ packages:
- immer
dev: false
/@reactflow/core@11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-45o8X1sjF48wSWALHybbLoWF6yo9SARgJpMKm96J8ZL8mrNhqSjll77sLRJg6zQ+VKdDwotEN30jp5eY6i28tw==}
/@reactflow/core@11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-Ko7nKPOYalwDTTbRHi2+QXDiidSAcpUzGN3G+0B+QysLZkcaPCkpkMjjHiDC4c/Z1BJBzs1FRJg/T6BXaBnYkg==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
@ -1758,13 +1761,13 @@ packages:
- immer
dev: false
/@reactflow/minimap@11.7.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-u620uYwjmA5tJ/4p+F/0kyjNojvV0axTMSw87d/CCDij96m+2/drwqMW+BE8XHEqjG0c1HyplrkXQ3WhGu6ZaA==}
/@reactflow/minimap@11.7.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-Jo1R+uDey9IV7O2s3m0gK2+cZpg9M8hq2EZJb3NGfOSzMAPhj3mby0fNJIgTzycreuht0TpA51c2YfjGI3YIOw==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@types/d3-selection': 3.0.7
'@types/d3-zoom': 3.0.5
classcat: 5.0.4
@ -1778,13 +1781,13 @@ packages:
- immer
dev: false
/@reactflow/node-resizer@2.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-x1TXN4YZhBI1LxNegVsE51emUg1rf4rBgvNL8Tzj0xsKkD/av4DOzRizQ3xAGgk0joPrsOTiGiP511m/PWjsew==}
/@reactflow/node-resizer@2.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-+p271/hAsM5M1+RQTWW/02pbNkCHeGXwxGimIlL1tMIagyuko0NX2vOz2B8jxJnPKlF09Wj18BcXBNUm3nDcSg==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4
d3-drag: 3.0.0
d3-selection: 3.0.0
@ -1796,13 +1799,13 @@ packages:
- immer
dev: false
/@reactflow/node-toolbar@1.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-juNFBLZgC+KOYpVaQFTkSQTDf4hYK7WAagiQQ4Dw0IUcLaMY3TA31OLP6X6gMG73YGKFmkgrDwi0ZDB0jpMqdA==}
/@reactflow/node-toolbar@1.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-TfcmpXHRBb2mUfzKGjburiU6FWqRME9pPFs1OwIC1z5e9BjupQhNDEKEk8XHi7PKL/mAiDfwuGXaM1BVVFuPqw==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@ -1840,8 +1843,8 @@ packages:
type-fest: 2.19.0
dev: false
/@remix-run/router@1.9.0:
resolution: {integrity: sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==}
/@remix-run/router@1.10.0:
resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==}
engines: {node: '>=14.0.0'}
dev: false
@ -2797,8 +2800,8 @@ packages:
resolution: {integrity: sha512-WU6l9UyIp1TKEK3xN8K5Y1nZpP4FTnrz4ArAPjQknReNNkN9UeLbmAuFu2F69YthLkLkOAMWi9O3a6kJCIWH5g==}
dev: true
/@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==}
/@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -2809,11 +2812,11 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.9.1
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
eslint: 8.51.0
graphemer: 1.4.0
@ -2826,8 +2829,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==}
/@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2836,10 +2839,10 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
eslint: 8.51.0
typescript: 5.2.2
@ -2847,16 +2850,16 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.7.5:
resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==}
/@typescript-eslint/scope-manager@6.8.0:
resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.8.0
dev: true
/@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==}
/@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2865,8 +2868,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
debug: 4.3.4
eslint: 8.51.0
ts-api-utils: 1.0.3(typescript@5.2.2)
@ -2875,13 +2878,13 @@ packages:
- supports-color
dev: true
/@typescript-eslint/types@6.7.5:
resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==}
/@typescript-eslint/types@6.8.0:
resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2):
resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==}
/@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2):
resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -2889,8 +2892,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@ -2901,8 +2904,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==}
/@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -2910,9 +2913,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
'@types/json-schema': 7.0.13
'@types/semver': 7.5.3
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
eslint: 8.51.0
semver: 7.5.4
transitivePeerDependencies:
@ -2920,11 +2923,11 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.7.5:
resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==}
/@typescript-eslint/visitor-keys@6.8.0:
resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/types': 6.8.0
eslint-visitor-keys: 3.4.3
dev: true
@ -3162,12 +3165,12 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001549
electron-to-chromium: 1.4.554
electron-to-chromium: 1.4.556
node-releases: 2.0.13
update-browserslist-db: 1.0.13(browserslist@4.22.1)
/bufferutil@4.0.7:
resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
/bufferutil@4.0.8:
resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'}
requiresBuild: true
dependencies:
@ -3564,8 +3567,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
/electron-to-chromium@1.4.554:
resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==}
/electron-to-chromium@1.4.556:
resolution: {integrity: sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==}
/emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@ -3615,7 +3618,7 @@ packages:
is-string: 1.0.7
is-typed-array: 1.1.12
is-weakref: 1.0.2
object-inspect: 1.12.3
object-inspect: 1.13.0
object-keys: 1.1.1
object.assign: 4.1.4
regexp.prototype.flags: 1.5.1
@ -4880,8 +4883,8 @@ packages:
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
dev: false
/media-chrome@1.4.3:
resolution: {integrity: sha512-VpFqCOu2FLULW6TX4sluo44AolJXryHxr85UBdO+IuOltgYPuf7Lgp1F3OqJeRIeO8874d5mri/6xmI22CO9yA==}
/media-chrome@1.4.4:
resolution: {integrity: sha512-L3EImWE2ft3dEXnku7mwEl71L8GWFvsnqQQsmtlbuLqekCkIACjL1KjLErReALB9JmrY19ffB4GeGZjLZDwALg==}
dev: false
/merge-stream@2.0.0:
@ -5261,8 +5264,8 @@ packages:
'@scure/bip39': 1.2.1
dev: false
/nostr-tools@1.16.0(typescript@5.2.2):
resolution: {integrity: sha512-sx/aOl0gmkeHVoIVbyOhEQhzF88NsrBXMC8bsjhPASqA6oZ8uSOAyEGgRLMfC3SKgzQD5Gr6KvDoAahaD6xKcg==}
/nostr-tools@1.17.0(typescript@5.2.2):
resolution: {integrity: sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==}
peerDependencies:
typescript: '>=5.0.0'
peerDependenciesMeta:
@ -5293,8 +5296,8 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
/object-inspect@1.13.0:
resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==}
dev: true
/object-keys@1.1.1:
@ -5820,6 +5823,16 @@ packages:
react: 18.2.0
dev: false
/react-hotkeys-hook@4.4.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw==}
peerDependencies:
react: '>=16.8.1'
react-dom: '>=16.8.1'
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@ -5846,7 +5859,7 @@ packages:
remark-parse: 10.0.2
remark-rehype: 10.1.0
space-separated-tokens: 2.0.2
style-to-object: 0.4.3
style-to-object: 0.4.4
unified: 10.1.2
unist-util-visit: 4.1.2
vfile: 5.3.7
@ -5889,26 +5902,26 @@ packages:
use-sidecar: 1.1.2(@types/react@18.2.28)(react@18.2.0)
dev: false
/react-router-dom@6.16.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==}
/react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
react-dom: '>=16.8'
dependencies:
'@remix-run/router': 1.9.0
'@remix-run/router': 1.10.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-router: 6.16.0(react@18.2.0)
react-router: 6.17.0(react@18.2.0)
dev: false
/react-router@6.16.0(react@18.2.0):
resolution: {integrity: sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==}
/react-router@6.17.0(react@18.2.0):
resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
dependencies:
'@remix-run/router': 1.9.0
'@remix-run/router': 1.10.0
react: 18.2.0
dev: false
@ -5941,18 +5954,18 @@ packages:
loose-envify: 1.4.0
dev: false
/reactflow@11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-GiIo20Vgy1U4h1NlLyQChWYgsl2OQkEgKHjokyQsdmm1nidywTr0n94O6w97ixLljKzJynTMjDdWP0p8xkq6NQ==}
/reactflow@11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-IHAKBkJngNvU9y1vZ5Nw9rvA3Z+zc9geTgQQIi9qq9Y9knGLlDDr9KfsjbFMew9AycAAgVg8TvBEakF4IT5lqg==}
peerDependencies:
react: '>=17'
react-dom: '>=17'
dependencies:
'@reactflow/background': 11.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/controls': 11.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/minimap': 11.7.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-resizer': 2.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-toolbar': 1.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/background': 11.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/controls': 11.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/minimap': 11.7.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-resizer': 2.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-toolbar': 1.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
transitivePeerDependencies:
@ -6165,7 +6178,7 @@ packages:
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.1
object-inspect: 1.12.3
object-inspect: 1.13.0
dev: true
/signal-exit@3.0.7:
@ -6285,8 +6298,8 @@ packages:
engines: {node: '>=8'}
dev: true
/style-to-object@0.4.3:
resolution: {integrity: sha512-RP9icVx0g3Pt0CyNiC2qvBkqMTHD5uBVC2XYcSr/ag8QWKApx/oXEh2ehMGSyzkjK0+ySkukMuO+mz+DNQq57Q==}
/style-to-object@0.4.4:
resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
dependencies:
inline-style-parser: 0.1.1
dev: false
@ -6809,7 +6822,7 @@ packages:
resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
engines: {node: '>=4.0.0'}
dependencies:
bufferutil: 4.0.7
bufferutil: 4.0.8
debug: 2.6.9
es5-ext: 0.10.62
typedarray-to-buffer: 3.1.5

68
src-tauri/Cargo.lock generated
View File

@ -193,9 +193,9 @@ dependencies = [
[[package]]
name = "async-executor"
version = "1.5.4"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499"
checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0"
dependencies = [
"async-lock",
"async-task",
@ -300,9 +300,9 @@ checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921"
[[package]]
name = "async-trait"
version = "0.1.73"
version = "0.1.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
dependencies = [
"proc-macro2",
"quote",
@ -414,9 +414,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.4.0"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
dependencies = [
"serde",
]
@ -3055,7 +3055,7 @@ version = "0.10.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
dependencies = [
"bitflags 2.4.0",
"bitflags 2.4.1",
"cfg-if",
"foreign-types 0.3.2",
"libc",
@ -3688,13 +3688,13 @@ dependencies = [
[[package]]
name = "regex"
version = "1.10.1"
version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aaac441002f822bc9705a681810a4dd2963094b9ca0ddc41cb963a4c189189ea"
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata 0.4.2",
"regex-automata 0.4.3",
"regex-syntax 0.8.2",
]
@ -3709,9 +3709,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.2"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5011c7e263a695dc8ca064cddb722af1be54e517a280b12a5356f98366899e5d"
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
@ -3867,7 +3867,7 @@ version = "0.38.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed"
dependencies = [
"bitflags 2.4.0",
"bitflags 2.4.1",
"errno",
"libc",
"linux-raw-sys 0.4.10",
@ -4481,7 +4481,7 @@ checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db"
dependencies = [
"atoi",
"base64",
"bitflags 2.4.0",
"bitflags 2.4.1",
"byteorder",
"bytes",
"crc",
@ -4524,7 +4524,7 @@ checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624"
dependencies = [
"atoi",
"base64",
"bitflags 2.4.0",
"bitflags 2.4.1",
"byteorder",
"crc",
"dotenvy",
@ -4733,9 +4733,9 @@ dependencies = [
[[package]]
name = "tao"
version = "0.22.2"
version = "0.22.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f76221bce9db3af6b2b9cca4e92d8ea46c4cc88d785bc4b1a5cbcaab06f0b56"
checksum = "f5d30690a6746dfbb26d4f41522757da1ebfd277514b58e27a80b7e55e511e52"
dependencies = [
"bitflags 1.3.2",
"cairo-rs",
@ -4920,7 +4920,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-app"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"tauri",
]
@ -4928,7 +4928,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-autostart"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"auto-launch",
"log",
@ -4941,7 +4941,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-cli"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"clap",
"log",
@ -4954,7 +4954,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-clipboard-manager"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"arboard",
"log",
@ -4968,7 +4968,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-dialog"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"glib",
"log",
@ -4985,7 +4985,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-fs"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"anyhow",
"glob",
@ -4998,7 +4998,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-http"
version = "2.0.0-alpha.3"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"data-url",
"glob",
@ -5015,7 +5015,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-notification"
version = "2.0.0-alpha.3"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"log",
"notify-rust",
@ -5033,7 +5033,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-os"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"gethostname 0.4.3",
"log",
@ -5049,7 +5049,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-process"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"tauri",
]
@ -5057,7 +5057,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"encoding_rs",
"log",
@ -5074,7 +5074,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-single-instance"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"log",
"serde",
@ -5088,7 +5088,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-sql"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"futures-core",
"log",
@ -5104,7 +5104,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-store"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"log",
"serde",
@ -5116,7 +5116,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-updater"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"base64",
"dirs-next",
@ -5141,7 +5141,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-upload"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"futures-util",
"log",
@ -5158,7 +5158,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-window"
version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [
"serde",
"tauri",

View File

@ -67,6 +67,7 @@ export function Circle() {
lru.clear();
// done
await db.createSetting('circles', '1');
setCircle();
};

View File

@ -1,5 +1,6 @@
import { NDKEvent, NDKKind, NDKPrivateKeySigner } from '@nostr-dev-kit/ndk';
import { downloadDir } from '@tauri-apps/api/path';
import { writeText } from '@tauri-apps/plugin-clipboard-manager';
import { message, save } from '@tauri-apps/plugin-dialog';
import { writeTextFile } from '@tauri-apps/plugin-fs';
import { motion } from 'framer-motion';
@ -42,18 +43,14 @@ export function CreateAccountScreen() {
'data:image/svg+xml;utf8,' +
encodeURIComponent(minidenticon('lume new account', 90, 50));
const onSubmit = async (data: {
name: string;
display_name: string;
about: string;
}) => {
const onSubmit = async (data: { name: string; about: string }) => {
try {
setLoading(true);
const profile = {
...data,
name: data.name,
display_name: data.display_name,
display_name: data.name,
bio: data.about,
};
@ -93,6 +90,10 @@ export function CreateAccountScreen() {
}
};
const copyNsec = async () => {
await writeText(keys.nsec);
};
const download = async () => {
try {
const downloadPath = await downloadDir();
@ -116,7 +117,7 @@ export function CreateAccountScreen() {
return (
<div className="relative flex h-full w-full items-center justify-center">
<div className="absolute left-[8px] top-4">
<div className="absolute left-[8px] top-2">
{!keys ? (
<button
onClick={() => navigate(-1)}
@ -230,11 +231,24 @@ export function CreateAccountScreen() {
<label htmlFor="nsec" className="text-sm font-semibold">
Private key
</label>
<div className="relative w-full">
<input
readOnly
value={keys.nsec}
className="h-11 rounded-lg bg-neutral-200 px-3 placeholder:text-neutral-500 dark:bg-neutral-800 dark:placeholder:text-neutral-400"
value={
keys.nsec.substring(0, 10) + '**************************'
}
className="h-11 w-full rounded-lg bg-neutral-200 px-3 placeholder:text-neutral-500 dark:bg-neutral-800 dark:placeholder:text-neutral-400"
/>
<div className="absolute right-0 top-0 inline-flex h-11 items-center justify-center px-2">
<button
type="button"
onClick={copyNsec}
className="rounded-md bg-neutral-300 px-2 py-1 text-sm font-medium hover:bg-neutral-400 dark:bg-neutral-700 dark:hover:bg-neutral-600"
>
Copy
</button>
</div>
</div>
</div>
<div className="flex flex-col gap-1">
<label htmlFor="nsec" className="text-sm font-semibold">

View File

@ -21,7 +21,7 @@ export function WelcomeScreen() {
to="/auth/import"
className="inline-flex h-10 w-full items-center justify-center rounded-lg font-medium text-neutral-900 hover:bg-neutral-100 dark:text-neutral-100 dark:hover:bg-neutral-900"
>
Log in
Log in with key
</Link>
</div>
</div>

View File

@ -1,5 +1,5 @@
import { useCallback, useEffect } from 'react';
import { VList } from 'virtua';
import { useCallback, useEffect, useRef } from 'react';
import { VList, VListHandle } from 'virtua';
import { ToggleWidgetList } from '@app/space/components/toggle';
import { WidgetList } from '@app/space/components/widgetList';
@ -31,6 +31,7 @@ import { Widget } from '@utils/types';
export function SpaceScreen() {
const { db } = useStorage();
const vlistRef = useRef<VListHandle>(null);
const [widgets, fetchWidgets] = useWidgets((state) => [
state.widgets,
@ -88,6 +89,7 @@ export function SpaceScreen() {
<VList
className="h-full w-full flex-nowrap overflow-x-auto !overflow-y-hidden scrollbar-none"
horizontal
ref={vlistRef}
>
{!widgets ? (
<div className="flex h-full w-[420px] flex-col items-center justify-center">

View File

@ -1,11 +1,12 @@
import { NDKFilter, NDKKind } from '@nostr-dev-kit/ndk';
import * as Avatar from '@radix-ui/react-avatar';
import { minidenticon } from 'minidenticons';
import { useEffect } from 'react';
import { Link } from 'react-router-dom';
import { useStorage } from '@libs/storage/provider';
import { HorizontalDotsIcon } from '@shared/icons';
import { Image } from '@shared/image';
import { useActivities } from '@stores/activities';
@ -19,6 +20,9 @@ export function ActiveAccount() {
const { sub } = useNostr();
const addActivity = useActivities((state) => state.addActivity);
const svgURI =
'data:image/svg+xml;utf8,' +
encodeURIComponent(minidenticon(db.account.pubkey, 90, 50));
useEffect(() => {
const filter: NDKFilter = {
@ -57,12 +61,24 @@ export function ActiveAccount() {
return (
<div className="flex flex-col gap-1 rounded-lg bg-neutral-100 p-1 hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800">
<Link to={`/users/${db.account.pubkey}`} className="relative inline-block">
<Image
<Avatar.Root>
<Avatar.Image
src={user?.picture || user?.image}
alt={db.account.npub}
alt={db.account.pubkey}
loading="lazy"
decoding="async"
style={{ contentVisibility: 'auto' }}
className="aspect-square h-auto w-full rounded-md"
/>
<span className="absolute bottom-0 right-0 block h-2 w-2 rounded-full bg-emerald-500 ring-2 ring-neutral-100 dark:ring-neutral-900" />
<Avatar.Fallback delayMs={300}>
<img
src={svgURI}
alt={db.account.pubkeypubkey}
className="aspect-square h-auto w-full rounded-md bg-black dark:bg-white"
/>
</Avatar.Fallback>
</Avatar.Root>
<span className="absolute bottom-0 right-0 block h-2 w-2 rounded-full bg-teal-500 ring-2 ring-neutral-100 dark:ring-neutral-900" />
</Link>
<div className="inline-flex items-center justify-center rounded-md">
<HorizontalDotsIcon className="h-4 w-4" />

View File

@ -25,7 +25,7 @@ export function AvatarUploader({
<button
type="button"
onClick={() => uploadAvatar()}
className="inline-flex items-center gap-1 rounded-lg border border-blue-200 bg-blue-100 px-1.5 py-1 text-sm font-medium text-blue-500 hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-500 dark:hover:bg-blue-800"
className="inline-flex items-center gap-1 rounded-lg border border-blue-200 bg-blue-100 px-1.5 py-1 text-sm font-medium text-blue-500 hover:border-blue-300 hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-500 dark:hover:border-blue-800 dark:hover:bg-blue-800"
>
{loading ? (
<LoaderIcon className="h-4 w-4 animate-spin" />

View File

@ -28,7 +28,7 @@ export function ComposerModal() {
<Dialog.Trigger asChild>
<button
type="button"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-300 text-black hover:bg-blue-600 hover:text-white dark:bg-neutral-700 dark:text-white dark:hover:bg-blue-600"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 text-black hover:bg-blue-500 hover:text-white dark:bg-neutral-900 dark:text-white dark:hover:bg-blue-500"
>
<ComposeIcon className="h-5 w-5" />
</button>

View File

@ -26,7 +26,7 @@ export function Navigation() {
>
<HomeIcon className="h-6 w-6" />
</div>
<div className="text-sm text-black dark:text-white">Home</div>
<div className="text-sm font-medium text-black dark:text-white">Home</div>
</>
)}
</NavLink>
@ -47,7 +47,7 @@ export function Navigation() {
>
<ChatsIcon className="h-6 w-6" />
</div>
<div className="text-sm text-black dark:text-white">Chats</div>
<div className="text-sm font-medium text-black dark:text-white">Chats</div>
</>
)}
</NavLink>
@ -68,7 +68,7 @@ export function Navigation() {
>
<RelayIcon className="h-6 w-6" />
</div>
<div className="text-sm text-black dark:text-white">Relays</div>
<div className="text-sm font-medium text-black dark:text-white">Relays</div>
</>
)}
</NavLink>
@ -89,7 +89,9 @@ export function Navigation() {
>
<ExploreIcon className="h-6 w-6" />
</div>
<div className="text-sm text-black dark:text-white">Explore</div>
<div className="text-sm font-medium text-black dark:text-white">
Explore
</div>
</>
)}
</NavLink>
@ -98,7 +100,7 @@ export function Navigation() {
<ComposerModal />
<Link
to="/nwc"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 hover:bg-blue-600 hover:text-white dark:bg-neutral-900 dark:hover:bg-blue-600"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 hover:bg-blue-500 hover:text-white dark:bg-neutral-900 dark:hover:bg-blue-500"
>
<NwcIcon className="h-5 w-5" />
</Link>

View File

@ -1,20 +1,36 @@
import { useStorage } from '@libs/storage/provider';
import { CancelIcon } from '@shared/icons';
import { User } from '@shared/user';
import { useWidgets } from '@stores/widgets';
export function TitleBar({ id, title }: { id?: string; title: string }) {
export function TitleBar({ id, title }: { id?: string; title?: string }) {
const { db } = useStorage();
const remove = useWidgets((state) => state.removeWidget);
return (
<div className="flex h-11 w-full shrink-0 items-center justify-between overflow-hidden px-3">
<div className="w-6" />
{id === '9999' ? (
<div className="isolate flex -space-x-2">
{db.account.circles
?.slice(0, 4)
.map((item) => <User key={item} pubkey={item} variant="ministacked" />)}
{db.account.circles?.length > 4 ? (
<div className="inline-flex h-6 w-6 items-center justify-center rounded-full bg-neutral-200 text-neutral-900 ring-1 ring-neutral-300 dark:bg-neutral-800 dark:text-neutral-100 dark:ring-neutral-700">
<span className="text-xs font-medium">
+{db.account.circles?.length - 4}
</span>
</div>
) : null}
</div>
) : (
<h3 className="text-sm font-medium tracking-wide text-neutral-900 dark:text-neutral-100">
{title}
</h3>
{id ? (
)}
{id !== '9999' ? (
<button
type="button"
onClick={() => remove(db, id)}

View File

@ -33,7 +33,8 @@ export const User = memo(function User({
| 'large'
| 'thread'
| 'avatar'
| 'stacked';
| 'stacked'
| 'ministacked';
embedProfile?: string;
}) {
const { status, user } = useProfile(pubkey, embedProfile);
@ -228,6 +229,28 @@ export const User = memo(function User({
);
}
if (variant === 'ministacked') {
return (
<Avatar.Root>
<Avatar.Image
src={user?.picture || user?.image}
alt={pubkey}
loading="lazy"
decoding="async"
style={{ contentVisibility: 'auto' }}
className="inline-block h-6 w-6 rounded-full ring-1 ring-white dark:ring-black"
/>
<Avatar.Fallback delayMs={300}>
<img
src={svgURI}
alt={pubkey}
className="inline-block h-6 w-6 rounded-full bg-black ring-1 ring-white dark:bg-white dark:ring-black"
/>
</Avatar.Fallback>
</Avatar.Root>
);
}
if (variant === 'repost') {
return (
<div className="flex gap-3">

View File

@ -86,10 +86,10 @@ export function LocalNetworkWidget() {
// subscribe for new event
// sub will be managed by lru-cache
useEffect(() => {
if (db.account && db.account.network && dbEvents.length > 0) {
if (db.account && db.account.circles && dbEvents.length > 0) {
const filter: NDKFilter = {
kinds: [NDKKind.Text, NDKKind.Repost],
authors: db.account.network,
authors: db.account.circles,
since: Math.floor(Date.now() / 1000),
};
@ -102,7 +102,7 @@ export function LocalNetworkWidget() {
return (
<WidgetWrapper>
<TitleBar title="Network" />
<TitleBar id="9999" />
<div className="flex-1">
{status === 'loading' ? (
<div className="px-3 py-1.5">

View File

@ -57,7 +57,7 @@ export function XfeedsWidget({ params }: { params: Widget }) {
/>
</div>
<div className="flex h-[500px] w-full flex-col overflow-y-auto rounded-lg bg-neutral-200 py-2 scrollbar-none dark:bg-neutral-800">
{db.account.network.map((item: string) => (
{db.account.circles.map((item: string) => (
<button
key={item}
type="button"

View File

@ -47,7 +47,7 @@ export const WidgetKinds = {
export const DefaultWidgets: Array<WidgetGroup> = [
{
title: 'Network / Follows',
title: 'Circles / Follows',
data: [
{
kind: WidgetKinds.tmp.xfeed,
@ -57,12 +57,12 @@ export const DefaultWidgets: Array<WidgetGroup> = [
{
kind: WidgetKinds.local.files,
title: 'Files',
description: 'All files shared by people in your network',
description: 'All files shared by people in your circle',
},
{
kind: WidgetKinds.local.articles,
title: 'Articles',
description: 'All articles shared by people in your network',
description: 'All articles shared by people in your circle',
},
{
kind: WidgetKinds.local.follows,
@ -130,7 +130,7 @@ export const useWidgets = create<WidgetState>()(
// default: add network widget
dbWidgets.unshift({
id: '9999',
title: 'Network',
title: '',
content: '',
kind: WidgetKinds.local.network,
});

View File

@ -404,14 +404,14 @@ export function useNostr() {
removeContact,
getAllNIP04Chats,
getAllEventsSinceLastLogin,
getContactsByPubkey,
getEventsByPubkey,
getAllRelaysByUsers,
fetchActivities,
fetchNIP04Messages,
fetchAllReplies,
publish,
createZap,
upload,
getContactsByPubkey,
getEventsByPubkey,
getAllRelaysByUsers,
};
}