Compare commits

...

233 Commits

Author SHA1 Message Date
luigi1111
e984c28faf Merge pull request #4545
7db5136 build: prepare v0.18.4.5 (selsta)
2026-01-05 12:06:43 -05:00
selsta
7db5136143 build: prepare v0.18.4.5 2026-01-05 01:23:12 +01:00
tobtoht
8b78bb08ed Merge pull request #4543
9384dc9 p2pool v4.13 (SChernykh)
2025-12-29 22:28:52 +00:00
SChernykh
9384dc9d7d p2pool v4.13 2025-12-18 12:57:58 +01:00
tobtoht
36e4312a05 Merge pull request #4539
c3b984e wallet: add new ledger nano gen5 (plowsof)
2025-12-09 17:45:41 +00:00
tobtoht
e50c830b10 Merge pull request #4537
ef40662 macOS: support dark mode again (selsta)
2025-12-09 17:45:01 +00:00
plowsof
c3b984e1c2 wallet: add new ledger nano gen5 2025-12-03 10:07:38 +00:00
selsta
ef406624b9 macOS: support dark mode again 2025-12-01 23:49:44 +01:00
tobtoht
b13e2012d8 Merge pull request #4534
d7a3a61 Dockerfile.linux: bump hidapi to 0.15.0 (tobtoht)
2025-11-24 18:24:17 +00:00
tobtoht
d7a3a61bf4 Dockerfile.linux: bump hidapi to 0.15.0 2025-11-22 23:52:40 +01:00
tobtoht
c957058860 Merge pull request #4525
1cce66f Don't try negative numbers when translating "%n second(s) ago"-style strings (наб)
2025-11-20 10:09:36 +00:00
наб
1cce66f866 Don't try negative numbers when translating "%n second(s) ago"-style strings
When the local clock is running behind,
transactions may appear to have been confirmed in the future,
which seems to leave the %n in "%n second(s) ago" unreplaced,
so round negative times ago to 0

Ref: #3284
2025-11-15 21:41:22 +01:00
tobtoht
b9eea25e52 Merge pull request #4521
2ae9d3f build: prepare v0.18.4.4 (selsta)
2025-11-13 00:32:17 +00:00
tobtoht
39522ab549 Merge pull request #4522
aa5b20e cmake: update deploy icu version (selsta)
2025-11-13 00:31:51 +00:00
selsta
aa5b20ef62 cmake: update deploy icu version 2025-11-13 00:27:25 +01:00
selsta
2ae9d3f6b6 build: prepare v0.18.4.4 2025-11-12 23:43:42 +01:00
tobtoht
061a256df7 Merge pull request #4519
7c6138e p2pool v4.12 (SChernykh)
2025-11-05 18:12:47 +00:00
SChernykh
7c6138eae1 p2pool v4.12 2025-11-05 17:44:46 +01:00
luigi1111
e34c83d7aa Merge pull request #4507
c285879 build: prepare v0.18.4.3 (selsta)
2025-10-07 19:19:50 -04:00
selsta
c28587931f build: prepare v0.18.4.3 2025-10-07 23:36:02 +02:00
tobtoht
1de4a65f90 Merge pull request #4505
c31cdaa p2pool v4.11 (SChernykh)
2025-09-28 18:40:11 +00:00
SChernykh
c31cdaad9e p2pool v4.11 2025-09-27 13:06:57 +02:00
tobtoht
440012b454 Merge pull request #4503
4bd21db p2pool v4.10.1 (sech1)
2025-09-24 20:55:23 +00:00
sech1
4bd21db202 p2pool v4.10.1 2025-09-10 09:59:56 +02:00
tobtoht
25807060a7 Merge pull request #4502
ff9558d p2pool v4.10 (sech1)
2025-09-09 18:06:27 +00:00
sech1
ff9558db09 p2pool v4.10 2025-09-09 10:35:51 +02:00
tobtoht
f3f1dfc020 Merge pull request #4498
0764fba docker: update Qt to 5.15.17 (selsta)
2025-09-08 18:18:06 +00:00
selsta
0764fbad33 docker: update Qt to 5.15.17 2025-09-03 20:31:33 +02:00
tobtoht
792130a7e6 Merge pull request #4496
5ee0484 workflows: fix macOS bundle (selsta)
2025-09-02 20:02:20 +00:00
tobtoht
3f0edae3a7 Merge pull request #4497
76416d9 workflows: remove unmaintained docker caching action (selsta)
2025-09-02 19:59:51 +00:00
selsta
76416d9133 workflows: remove unmaintained docker caching action
Does not work anymore. Action hasn't been updated since 2020.
There's a fork but it also appears unmaintained.
2025-09-02 00:14:10 +02:00
selsta
5ee04841f0 workflows: fix macOS bundle 2025-09-02 00:01:53 +02:00
tobtoht
1d09876323 Merge pull request #4494
dce481a wizard: add new Ledger Flex (selsta)
2025-08-31 12:32:37 +00:00
selsta
dce481a3d9 wizard: add new Ledger Flex 2025-08-31 00:11:23 +02:00
tobtoht
28c698375c Merge pull request #4492
cabbbaf cmake: update macOS deploy for newer boost (selsta)
2025-08-29 18:26:32 +00:00
selsta
cabbbaf172 cmake: update macOS deploy for newer boost 2025-08-25 19:29:36 +02:00
luigi1111
c89f8eca91 Merge pull request #4491
16da754 build: prepare v0.18.4.2 (selsta)
2025-08-24 22:34:18 -04:00
selsta
16da754c79 build: prepare v0.18.4.2 2025-08-24 19:31:12 +02:00
tobtoht
346d962837 Merge pull request #4476
9e37b21 chore: remove redundant words in comment (xihuwenhua)
2025-08-22 07:48:08 +00:00
xihuwenhua
9e37b219b9 chore: remove redundant words in comment
Signed-off-by: xihuwenhua <xihuwenhua@outlook.com>
2025-08-22 15:14:32 +08:00
tobtoht
b8b556f289 Merge pull request #4490
881206d p2pool: update to v4.9.1 (sech1)
2025-08-21 16:34:00 +00:00
sech1
881206db99 p2pool: update to v4.9.1 2025-08-21 12:03:32 +02:00
tobtoht
f8ad672c44 Merge pull request #4482
614b81f p2pool: add nano sidechain (nahuhh)
2025-08-04 11:54:17 +00:00
tobtoht
8a85221f95 Merge pull request #4050
5332495 Implement background sync when locked (j-berman)
2025-08-04 11:51:24 +00:00
j-berman
5332495c24 Implement background sync when locked 2025-08-03 10:26:11 -07:00
nahuhh
614b81fd23 p2pool: add nano sidechain 2025-07-24 20:17:37 +00:00
tobtoht
10a184db8b Merge pull request #4477
7c4ddf7 p2pool: update to v4.9 (SChernykh)
2025-07-22 14:15:44 +00:00
SChernykh
7c4ddf7bc4 p2pool: update to v4.9 2025-07-20 22:27:30 +02:00
tobtoht
0149f946b9 Merge pull request #4471
1afc8e6 build: prepare v0.18.4.1 (selsta)
2025-07-17 14:42:45 +00:00
tobtoht
e3620f39dc Merge pull request #4472
fdfb963 docker: fix android build (tobtoht)
2025-07-17 13:48:20 +00:00
tobtoht
5592ff5f28 Merge pull request #4473
fcec418 cmake: bump CXX standard to 14 (tobtoht)
2025-07-17 13:47:58 +00:00
tobtoht
fcec4187b6 cmake: bump CXX standard to 14 2025-07-17 13:01:24 +02:00
tobtoht
fdfb9634d3 docker: fix android build 2025-07-17 12:59:13 +02:00
selsta
1afc8e69c6 build: prepare v0.18.4.1 2025-07-17 01:25:59 +02:00
tobtoht
fb3b4e44da Merge pull request #4462
5a61c7c p2pool: update to v4.8.1 (SChernykh)
2025-06-26 09:23:35 +00:00
SChernykh
5a61c7c941 p2pool: update to v4.8.1 2025-06-25 12:01:46 +02:00
tobtoht
4e9b0ae000 Merge pull request #4446
a56d4d0f main: Update blockchain size (Collin Bartlam)
2025-05-09 19:35:30 +00:00
Collin Bartlam
a56d4d0f4b main: Update blockchain size 2025-05-09 01:20:47 -04:00
tobtoht
2b0e7d0dee Merge pull request #4441
0fd48a1e cmake: fix deploy icu version (selsta)
2025-05-04 14:18:32 +00:00
tobtoht
e17e238ee9 Merge pull request #4440
d4eafa1d p2pool: update to v4.5 (SChernykh)
2025-05-04 03:02:45 +00:00
selsta
0fd48a1e56 cmake: fix deploy icu version 2025-05-03 18:56:01 +02:00
SChernykh
d4eafa1d95 p2pool: update to v4.5 2025-05-03 17:13:28 +02:00
tobtoht
675f68ca17 Merge pull request #4434
30ee14fc PasswordDialog: fix spelling in warning message (spetterman66)
2025-04-24 18:04:08 +00:00
spetterman66
30ee14fca1 PasswordDialog: fix spelling in warning message 2025-04-23 23:12:58 +02:00
tobtoht
c4ae40223c Merge pull request #4384
0e9069af lang: rename esperanto.png to eo.png using ISO 639-1 code (Baksi)
2025-04-18 16:38:49 +00:00
Baksi
0e9069af80 lang: rename esperanto.png to eo.png using ISO 639-1 code 2025-04-17 19:02:34 +00:00
tobtoht
1db66c9698 Merge pull request #4433
b409e9fc workflows: update Ubuntu version (selsta)
2025-04-16 01:07:52 +00:00
selsta
b409e9fc7d workflows: update Ubuntu version 2025-04-15 21:09:26 +02:00
tobtoht
ecb76b8414 Merge pull request #4418
da71a00b Remove unused JS variables (b4n6-b4n6)
2025-04-06 09:39:39 +00:00
tobtoht
24b4e0209f Merge pull request #4427
4195735c workflows: fix CI bundle build and name spelling (selsta)
2025-03-30 15:39:49 +00:00
tobtoht
35bc27a3a8 Merge pull request #4426
3ae32613 build: prepare v0.18.4.0 (selsta)
2025-03-30 15:39:14 +00:00
tobtoht
f903e0e447 Merge pull request #4428
b4b2ed39 Dockerfile: update Linux base image to 18.04 (selsta)
2025-03-30 15:37:58 +00:00
selsta
b4b2ed3976 Dockerfile: update Linux base image to 18.04 2025-03-29 18:14:45 +01:00
selsta
4195735cd3 workflows: fix CI bundle build and name spelling 2025-03-29 15:31:48 +01:00
selsta
3ae3261315 build: prepare v0.18.4.0 2025-03-29 15:07:23 +01:00
tobtoht
47f0047c9f Merge pull request #4421
33f08aee README: fix dead link (selsta)
2025-03-14 22:38:32 +00:00
selsta
33f08aee3e README: fix dead link 2025-03-14 21:27:58 +01:00
b4n6-b4n6
da71a00be2 Remove unused JS variables 2025-03-03 09:45:44 +07:00
tobtoht
a064b42917 Merge pull request #4417
62496a2c p2pool: update to v4.4 (SChernykh)
2025-02-27 04:15:49 +00:00
SChernykh
62496a2c99 p2pool: update to v4.4 2025-03-01 20:02:35 +01:00
tobtoht
1669a64025 Merge pull request #4416
413c0db7 ci: fix MSYS2 build (tobtoht)
2025-02-25 15:32:49 +00:00
tobtoht
413c0db7c0 ci: fix MSYS2 build 2025-02-25 13:35:05 +01:00
tobtoht
521fee91cd Merge pull request #4349
7c41202b build(deps): bump actions/download-artifact in /.github/workflows (dependabot[bot])
2025-02-24 18:20:46 +00:00
tobtoht
3021970193 Merge pull request #4381
82714e6d build: set cxx standard to 17 in dev mode (tobtoht)
2025-02-24 18:18:53 +00:00
tobtoht
82714e6d26 build: set cxx standard to 17 in dev mode 2025-02-24 19:11:36 +01:00
tobtoht
351f4aba1c Merge pull request #4415
8cabe04d README: clarify docker build process (selsta)
2025-02-24 18:08:44 +00:00
tobtoht
daf3a1c5b8 Merge pull request #4412
0aaa963b Win deploy: Boost Regex is header-only since 1.77 (malinero)
2025-02-24 18:08:07 +00:00
tobtoht
2d2c7476db Merge pull request #4411
7e7215c7 fix testnet address check (preland)
2025-02-24 18:07:14 +00:00
tobtoht
aec2f94d4b Merge pull request #4402
04637127 Docker android: upgrade dependencies (malinero)
2025-02-24 18:06:05 +00:00
tobtoht
45fe6e6991 Merge pull request #4401
8512de2b Dockerfile linux: fix boost download url (malinero)
2025-02-24 18:04:36 +00:00
tobtoht
e496b03c63 Merge pull request #4390
b0ecc8cf p2pool: update to v4.3 (SChernykh)
2025-02-24 18:03:39 +00:00
tobtoht
39606d2eb1 Merge pull request #4377
ea39b20d docker: update Qt to 5.15.16 (selsta)
2025-02-24 18:03:00 +00:00
tobtoht
970c33332b Merge pull request #4366
cdf8a1a8 build.yml: pyenv vcs for python (plowsof)
2025-02-24 18:02:24 +00:00
tobtoht
fa02fa8ac5 Merge pull request #4362
8af3cd09 Dockerfile.linux: freetype.git mirror (plowsof)
2025-02-24 18:00:55 +00:00
tobtoht
9015dd5367 Merge pull request #4351
8f17b899 wizardRestore: blindly (re)enable create wallet button (plowsof)
2025-02-24 18:00:03 +00:00
tobtoht
e1a3dbd738 Merge pull request #4339
e18c2cfd DEPLOY: altool is deprecated, replace with notarytool (selsta)
2025-02-24 17:58:51 +00:00
selsta
8cabe04d0f README: clarify docker build process 2025-02-24 16:11:04 +01:00
malinero
0aaa963b5a Win deploy: Boost Regex is header-only since 1.77 2025-02-20 00:06:05 +01:00
preland
7e7215c71e fix testnet address check 2025-02-14 17:53:04 -07:00
malinero
04637127ee Docker android: upgrade dependencies 2025-01-23 22:32:24 +01:00
malinero
8512de2bdd Dockerfile linux: fix boost download url 2025-01-20 18:18:39 +01:00
SChernykh
b0ecc8cf33 p2pool: update to v4.3 2024-12-30 17:21:08 +01:00
selsta
ea39b20d64 docker: update Qt to 5.15.16 2024-11-20 20:39:37 +01:00
plowsof
cdf8a1a854 build.yml: pyenv vcs for python 2024-10-05 09:03:14 +01:00
luigi1111
0a9d61986c Merge pull request #4355
b521e83 workflows/build: upload-artifact@v4 (plowsof)
2024-10-01 15:31:17 -04:00
plowsof
8af3cd09ca Dockerfile.linux: freetype.git mirror
https://savannah.gnu.org/ apears to be temp offline
2024-10-01 11:45:45 +01:00
plowsof
b521e83829 workflows/build: upload-artifact@v4 2024-09-17 23:10:08 +01:00
plowsof
8f17b89979 wizardRestore: blindly (re)enable create wallet button 2024-09-10 15:47:15 +01:00
dependabot[bot]
7c41202b98 build(deps): bump actions/download-artifact in /.github/workflows
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-03 22:28:16 +00:00
selsta
e18c2cfdfc DEPLOY: altool is deprecated, replace with notarytool 2024-08-20 21:02:19 +02:00
luigi1111
08e2eafb7c Merge pull request #4335
551ab27 build: prepare v0.18.3.4 (selsta)
2024-08-14 16:13:26 -04:00
luigi1111
c27bb53d7c Merge pull request #4321
f8aa11b docker: bump Qt to v5.15.14 (tobtoht)
2024-08-14 16:12:54 -04:00
luigi1111
6f9769607a Merge pull request #4320
923f77a WizardModeSelection: enable pruning by default (selsta)
2024-08-14 16:12:04 -04:00
selsta
551ab27b09 build: prepare v0.18.3.4 2024-08-14 21:55:32 +02:00
luigi1111
c57bdfaeaf Merge pull request #4334
ff1e507 p2pool: update to v4.1 (SChernykh)
2024-08-13 12:41:49 -04:00
luigi1111
af92ca67d7 Merge pull request #4333
8118355 macOS: remove deprecated screenshot function (tobtoht)
2024-08-13 12:41:22 -04:00
luigi1111
6889ab5ac1 Merge pull request #4332
1d686ad wizard: add new Trezor Safe 5 (selsta)
2024-08-13 12:39:50 -04:00
luigi1111
eddafbbdcc Merge pull request #4319
45a2b1d README.md: sponsors;remove forked networking/globee (plowsof)
2024-08-13 12:38:54 -04:00
luigi1111
8d110ec790 Merge pull request #4310
7a3ea3a Wizard: fix stagenet getApproximateBlockchainHeight (selsta)
2024-08-13 12:38:27 -04:00
luigi1111
a49cd13a83 Merge pull request #4308
1878338 TxUtils: allow @ in OpenAlias domain (selsta)
2024-08-13 12:37:59 -04:00
luigi1111
50d479f7a6 Merge pull request #4300
a64ae97 utils: add quotes to desktop entry path (selsta)
2024-08-13 12:37:20 -04:00
luigi1111
94477c5480 Merge pull request #4285
ca3dafc DEPLOY: add more dependencies, use full path in prefix (selsta)
2024-08-13 12:36:52 -04:00
SChernykh
ff1e50745d p2pool: update to v4.1 2024-08-12 20:47:51 +02:00
tobtoht
8118355f39 macOS: remove deprecated screenshot function 2024-08-09 23:30:30 +02:00
selsta
1d686adcb9 wizard: add new Trezor Safe 5 2024-08-08 21:22:06 +02:00
tobtoht
f8aa11bc41 docker: bump Qt to v5.15.14 2024-05-24 22:29:14 +02:00
selsta
923f77a2db WizardModeSelection: enable pruning by default 2024-05-24 17:07:23 +02:00
plowsof
45a2b1d2a7 README.md: sponsors;remove forked networking/globee
https://github.com/monero-project/monero/pull/9324
2024-05-23 21:36:00 +01:00
selsta
7a3ea3a93c Wizard: fix stagenet getApproximateBlockchainHeight 2024-04-28 21:13:18 +02:00
selsta
1878338a44 TxUtils: allow @ in OpenAlias domain 2024-04-25 16:31:22 +02:00
selsta
a64ae977cc utils: add quotes to desktop entry path 2024-04-02 17:10:04 +02:00
luigi1111
f0b1b8cd08 Merge pull request #4291
5d5ac6a build: prepare v0.18.3.3 (selsta)
2024-03-12 15:44:16 -04:00
luigi1111
674f69f131 Merge pull request #4290
0c3e230 docker: bump Qt to v5.15.13 (tobtoht)
2024-03-12 15:43:03 -04:00
selsta
5d5ac6a371 build: prepare v0.18.3.3 2024-03-12 20:40:33 +01:00
tobtoht
0c3e2301ed docker: bump Qt to v5.15.13 2024-03-12 18:08:53 +01:00
selsta
ca3dafc5f0 DEPLOY: add more dependencies, use full path in prefix 2024-03-09 20:37:08 +01:00
luigi1111
29e831ccec Merge pull request #4284
df29170 Dockerfile: bump zlib version to 1.3.1 (selsta)
2024-03-09 13:28:47 -05:00
selsta
df291702df Dockerfile: bump zlib version to 1.3.1 2024-03-09 16:52:49 +01:00
luigi1111
ef555a3d72 Merge pull request #4283
cb3d693 build: prepare v0.18.3.2 (selsta)
2024-03-08 20:52:46 -05:00
luigi1111
51a43341c5 Merge pull request #4281
e956b4f tails: fix detection (tobtoht)
2024-03-08 20:52:06 -05:00
luigi1111
ecec7bc4b6 Merge pull request #4278
ca6b38d Remove instructions for Void Linux, add NixOS (Siren)
2024-03-08 20:51:41 -05:00
luigi1111
d809370d8a Merge pull request #4267
8851e71 Update year in Cypyright (inson1)
2024-03-08 20:50:25 -05:00
selsta
cb3d693a26 build: prepare v0.18.3.2 2024-03-09 02:46:45 +01:00
tobtoht
e956b4ff15 tails: fix detection 2024-02-28 15:58:06 +01:00
Siren
ca6b38d25a Remove instructions for Void Linux, add NixOS 2024-02-20 00:01:15 +02:00
inson1
8851e71a8b Update year in Cypyright 2024-01-27 20:12:09 +01:00
luigi1111
dc3441f258 Merge pull request #4262
84ea177 Dockerfile: remove no-asm for constant time AES (selsta)
2024-01-18 18:20:00 -05:00
luigi1111
7791cb08a9 Merge pull request #4261
bd6e5b1 docker: update Qt to 5.15.12 (selsta)
2024-01-18 18:19:39 -05:00
luigi1111
6ed6d6a85e Merge pull request #4260
de9c53b p2pool: update to v3.10 (SChernykh)
2024-01-18 18:19:18 -05:00
luigi1111
df4f68fbf2 Merge pull request #4255
c692fd1 wizard: add Trezor Safe 3 to hardware wallets (selsta)
2024-01-18 18:18:53 -05:00
luigi1111
1cc631d265 Merge pull request #4251
981600c DEPLOY: add missing code syntax highlighting (selsta)
819c2f5 DEPLOY: update instructions for Apple Silicon (selsta)
2024-01-18 18:18:28 -05:00
luigi1111
1fe6765efa Merge pull request #4245
06ed059 cmake: fix deploy by updating libicu version (selsta)
2024-01-18 18:17:45 -05:00
luigi1111
f284677c17 Merge pull request #4243
e41f3cf TxUtils: use regex to check for valid domain (selsta)
2024-01-18 18:17:02 -05:00
selsta
84ea1776ae Dockerfile: remove no-asm for constant time AES 2024-01-14 17:08:55 +01:00
selsta
bd6e5b13cc docker: update Qt to 5.15.12 2024-01-04 13:17:09 +01:00
SChernykh
de9c53bd8d p2pool: update to v3.10 2024-01-04 10:33:40 +01:00
selsta
981600c935 DEPLOY: add missing code syntax highlighting 2023-12-27 04:45:17 +01:00
selsta
c692fd1605 wizard: add Trezor Safe 3 to hardware wallets 2023-12-25 15:33:05 +01:00
selsta
819c2f57be DEPLOY: update instructions for Apple Silicon 2023-12-07 03:29:31 +01:00
selsta
06ed059cba cmake: fix deploy by updating libicu version
msys2 package manager doesn't have mingw64 debug DLLs for libicu anymore so I removed them.
2023-11-14 11:35:46 +01:00
selsta
e41f3cfd13 TxUtils: use regex to check for valid domain 2023-11-13 03:02:54 +01:00
luigi1111
e9cd4588ae Merge pull request #4238
4d39449 p2pool: update to v3.8 (SChernykh)
2023-11-06 09:48:28 -05:00
luigi1111
fdd406ac95 Merge pull request #4234
a3e0519 main: fix qml warning (selsta)
2023-11-06 09:48:06 -05:00
luigi1111
4a7e26b812 Merge pull request #4232
5954d6b cmake: update sodium dll from 23 to 26 (selsta)
2023-11-06 09:47:36 -05:00
luigi1111
99d2884802 Merge pull request #4229
420d2ba Revert 'DaemonManager.cpp: disable JIT on macOS ARM' (selsta)
2023-11-06 09:47:11 -05:00
luigi1111
7a754a4dfc Merge pull request #4223
664d578 workflows: free up diskspace for docker builds (tobtoht)
2023-11-06 09:45:39 -05:00
luigi1111
70a8086366 Merge pull request #4222
33e3f59 docker: update Linux & Windows Qt to 5.15.11 (tobtoht)
2023-11-06 09:45:13 -05:00
SChernykh
4d39449979 p2pool: update to v3.8 2023-10-31 17:56:12 +01:00
selsta
a3e05195c0 main: fix qml warning 2023-10-22 16:41:19 +02:00
selsta
5954d6ba9a cmake: update sodium dll from 23 to 26 2023-10-21 17:02:48 +02:00
selsta
420d2baec2 Revert "DaemonManager.cpp: disable JIT on macOS ARM"
This reverts commit 6c4a8fb819.
2023-10-19 16:21:14 +02:00
tobtoht
664d578f30 workflows: free up diskspace for docker builds 2023-10-05 17:16:52 +02:00
tobtoht
33e3f599e9 docker: update Linux & Windows Qt to 5.15.11 2023-10-04 17:48:36 +02:00
luigi1111
bea3032df9 Merge pull request #4221
ab8ac87 build: prepare v0.18.3.1 (selsta)
2023-10-02 16:41:42 -04:00
selsta
ab8ac87023 build: prepare v0.18.3.1 2023-10-02 21:44:28 +02:00
luigi1111
588b8435b7 Merge pull request #4051
1215a6e Assume untrusted daemon in simple mode (j-berman)
499c2a4 qsTr scan tx error (j-berman)
3b0e66a Display clear error when user scans older tx via untrusted daemon (j-berman)
4cd6652 Update balance after calling scan_tx (j-berman)
2023-09-30 18:34:24 -04:00
luigi1111
8983cae468 Merge pull request #4220
f5cb244 build: prepare v0.18.3.0 (selsta)
2023-09-30 18:24:50 -04:00
luigi1111
3612866f9f Merge pull request #4219
8f7de0e p2pool: update to v3.7 (SChernykh)
2023-09-30 18:24:28 -04:00
luigi1111
beb336cb93 Merge pull request #4217
b60a98a workflows: run flatpak only in main repo (selsta)
2023-09-30 18:23:54 -04:00
luigi1111
90cbe37846 Merge pull request #4216
7040e3b docker: update zlib to 1.3 (selsta)
2023-09-30 18:23:33 -04:00
luigi1111
10984a0a37 Merge pull request #4211
145ea10 flatpak: Start workflow after release (BigmenPixel0)
2023-09-30 18:22:48 -04:00
selsta
f5cb2443d1 build: prepare v0.18.3.0 2023-09-30 23:43:41 +02:00
SChernykh
8f7de0e9fc p2pool: update to v3.7 2023-09-30 12:26:38 +02:00
selsta
b60a98ae6c workflows: run flatpak only in main repo 2023-09-15 21:35:02 +02:00
selsta
7040e3b72f docker: update zlib to 1.3 2023-09-15 20:00:31 +02:00
luigi1111
12a0966eb9 Merge pull request #4213
d338e06 p2pool: update to v3.6.2 (SChernykh)
2023-09-14 22:27:37 -05:00
luigi1111
5ff03786c7 Merge pull request #4210
d42caf1 cmake: update libicu to 73 (selsta)
2023-09-14 22:27:06 -05:00
luigi1111
483b825a2f Merge pull request #4157
6c4a8fb DaemonManager.cpp: disable JIT on macOS ARM (selsta)
2023-09-14 22:26:02 -05:00
luigi1111
ca304fc63d Merge pull request #4156
ad1b53f main: add ARM build tag for auto updater (selsta)
2023-09-14 22:25:31 -05:00
luigi1111
5a1a349977 Merge pull request #4155
a9e0aff workflows: set default arch for macOS bundle (selsta)
2023-09-14 22:25:08 -05:00
luigi1111
5683f76cd0 Merge pull request #4154
371ff61 cmake: copy missing boost lib, run codesign (selsta)
2023-09-14 22:23:23 -05:00
luigi1111
cc7d7da346 Merge pull request #4153
cad8874 README: add mingw-w64-x86_64-pcre for msys2 instructions (selsta)
2023-09-14 22:22:28 -05:00
luigi1111
d10e4d1e50 Merge pull request #4150
5345dcc cmake: add install_name_tool to fix svg rendering (selsta)
2023-09-14 22:22:03 -05:00
SChernykh
d338e06abd p2pool: update to v3.6.2 2023-09-03 17:39:28 +02:00
BigmenPixel0
145ea10d93 flatpak: Start workflow after release 2023-08-18 12:51:39 +05:00
selsta
d42caf1fbc cmake: update libicu to 73 2023-08-18 01:25:18 +02:00
luigi1111
705cc6573f Merge pull request #4151
7765b8b flatpak: Add workflow (BigmenPixel0)
2023-08-17 14:39:09 -05:00
luigi1111
5c3544f211 Merge pull request #4201
a65fbee Fixing broken link to Arch linux package repo (web3d3v)
2023-08-17 10:34:49 -05:00
luigi1111
f859664443 Merge pull request #4190
17e3ed6 p2pool: update to v3.5 (SChernykh)
2023-08-17 10:34:02 -05:00
luigi1111
2d25364f42 Merge pull request #4185
ddcc17b installers/windows/Readme.htm Updated blockchain size and added pruning description (Dvd-Znf)
2023-08-17 10:33:30 -05:00
luigi1111
8323fb02ca Merge pull request #4183
f6549f3 deploy: remove libssp (tobtoht)
2023-08-17 10:32:58 -05:00
luigi1111
d442ca38dc Merge pull request #4177
fa2241f WizardSummary: fix seed language and hide during restore (selsta)
2023-08-17 10:32:31 -05:00
luigi1111
57409a8c47 Merge pull request #4158
6bd11f2 TxUtils: add handleOpenAliasResolution func, simplify code (selsta)
2023-08-17 10:31:52 -05:00
luigi1111
f002987edd Merge pull request #4149
434f548 Prove/Check: clear text fields on wallet close (plowsof)
2023-08-17 10:31:23 -05:00
luigi1111
866a7b3a78 Merge pull request #4147
3331078 p2pool: fix crash without network connection (selsta)
6ac8e7a p2pool: add more detailed failure message (selsta)
2023-08-17 10:31:00 -05:00
luigi1111
f342d46541 Merge pull request #4146
90c4aa4 wizard: add Ledger Stax image (selsta)
2023-08-17 10:30:28 -05:00
luigi1111
f5e016930b Merge pull request #4145
7a4052f readme: tweak build instructions (Botspot)
2023-08-17 10:30:07 -05:00
luigi1111
ac9a305543 Merge pull request #4144
4cbfa5e docker: update OpenSSL to 1.1.1u (tobtoht)
2023-08-17 10:29:22 -05:00
luigi1111
f824aebfaa Merge pull request #4143
b6e336d docker: update Linux & Windows Qt to 5.15.10 (tobtoht)
2023-08-17 10:28:59 -05:00
BigmenPixel0
7765b8b462 flatpak: Add workflow 2023-08-15 19:18:45 +05:00
web3d3v
a65fbee213 Fixing broken link to Arch linux package repo 2023-07-27 06:28:36 +03:00
SChernykh
17e3ed6c97 p2pool: update to v3.5 2023-06-30 19:00:00 +02:00
tobtoht
b6e336dbaf docker: update Linux & Windows Qt to 5.15.10 2023-06-06 21:48:59 +02:00
Dvd-Znf
ddcc17b7b8 installers/windows/Readme.htm Updated blockchain size and added pruning description 2023-06-04 11:28:23 +03:00
tobtoht
f6549f328b deploy: remove libssp
dfa6dd8c26
2023-05-30 20:06:36 +02:00
tobtoht
4cbfa5efb2 docker: update OpenSSL to 1.1.1u 2023-05-30 16:35:36 +02:00
selsta
fa2241f1a5 WizardSummary: fix seed language and hide during restore 2023-05-16 19:55:54 +02:00
selsta
6bd11f2270 TxUtils: add handleOpenAliasResolution func, simplify code 2023-04-21 14:45:09 +02:00
selsta
6c4a8fb819 DaemonManager.cpp: disable JIT on macOS ARM 2023-04-19 16:02:22 +02:00
selsta
ad1b53fa63 main: add ARM build tag for auto updater 2023-04-17 21:56:42 +02:00
selsta
a9e0affe59 workflows: set default arch for macOS bundle 2023-04-17 21:47:30 +02:00
selsta
371ff6105b cmake: copy missing boost lib, run codesign 2023-04-17 21:45:50 +02:00
selsta
cad8874724 README: add mingw-w64-x86_64-pcre for msys2 instructions 2023-04-17 19:28:04 +02:00
selsta
5345dcc11b cmake: add install_name_tool to fix svg rendering 2023-04-15 21:41:29 +02:00
selsta
33310786db p2pool: fix crash without network connection 2023-04-13 15:45:56 +02:00
selsta
6ac8e7a464 p2pool: add more detailed failure message 2023-04-13 15:44:52 +02:00
plowsof
434f548a87 Prove/Check: clear text fields on wallet close 2023-04-10 23:37:29 +01:00
selsta
90c4aa4ec6 wizard: add Ledger Stax image 2023-04-07 23:15:14 +02:00
Botspot
7a4052f3af readme: tweak build instructions 2023-04-06 02:10:50 +02:00
j-berman
1215a6e5d8 Assume untrusted daemon in simple mode 2022-10-29 14:25:20 -05:00
j-berman
499c2a47fc qsTr scan tx error 2022-10-29 14:22:37 -05:00
j-berman
3b0e66a3d0 Display clear error when user scans older tx via untrusted daemon 2022-10-28 16:14:31 -05:00
j-berman
4cd6652825 Update balance after calling scan_tx 2022-10-20 16:23:10 -05:00
214 changed files with 1238 additions and 630 deletions

107
.github/qt_helper.py vendored
View File

@@ -1,107 +0,0 @@
#!/usr/bin/env python3
import defusedxml.ElementTree
import hashlib
import mmap
import pathlib
import subprocess
import sys
import urllib.parse
import urllib.request
import xml.etree.ElementTree as ET
MAX_TRIES = 32
def fetch_links_to_archives(os, target, major, minor, patch, toolchain):
MAX_XML_SIZE = 1024 * 1024 * 1024
MIRROR = 'download.qt.io'
base_url = f'https://{MIRROR}/online/qtsdkrepository/{os}/{target}/qt{major}_{major}{minor}{patch}'
url = f'{base_url}/Updates.xml'
for _ in range(MAX_TRIES):
try:
resp = urllib.request.urlopen(url).read(MAX_XML_SIZE)
update_xml = defusedxml.ElementTree.fromstring(resp)
break
except KeyboardInterrupt:
raise
except BaseException as e:
print('error', e, flush=True)
else:
return
for pkg in update_xml.findall('./PackageUpdate'):
name = pkg.find('.//Name')
if name == None:
continue
if name.text != f'qt.qt{major}.{major}{minor}{patch}.{toolchain}':
continue
version = pkg.find('.//Version')
if version == None:
continue
archives = pkg.find('.//DownloadableArchives')
if archives == None or archives.text == None:
continue
for archive in archives.text.split(', '):
url = f'{base_url}/{name.text}/{version.text}{archive}'
file_name = pathlib.Path(urllib.parse.urlparse(url).path).name
yield {'name': file_name, 'url': url}
def download(links):
metalink = ET.Element('metalink', xmlns = "urn:ietf:params:xml:ns:metalink")
for link in links:
file = ET.SubElement(metalink, 'file', name = link['name'])
ET.SubElement(file, 'url').text = link['url']
data = ET.tostring(metalink, encoding='UTF-8', xml_declaration=True)
for _ in range(MAX_TRIES):
with subprocess.Popen([
'aria2c',
'--connect-timeout=8',
'--console-log-level=warn',
'--continue',
'--follow-metalink=mem',
'--max-concurrent-downloads=100',
'--max-connection-per-server=16',
'--max-file-not-found=100',
'--max-tries=100',
'--min-split-size=1MB',
'--retry-wait=1',
'--split=100',
'--summary-interval=0',
'--timeout=8',
'--user-agent=',
'--metalink-file=-',
], stdin=subprocess.PIPE) as aria:
aria.communicate(data)
if aria.wait() == 0:
return True
return False
def calc_hash_sum(files):
obj = hashlib.new('sha256')
for path in files:
with open(path, 'rb') as f:
with mmap.mmap(f.fileno(), 0, mmap.MAP_SHARED, mmap.PROT_READ) as m:
file_hash = hashlib.new('sha256', m).digest()
obj.update(file_hash)
return obj.digest().hex()
def extract_archives(files, out='.', targets=[]):
for path in files:
if subprocess.Popen(['7z', 'x', '-bd', '-y', '-aoa', f'-o{out}', path] + targets,
stdout=subprocess.DEVNULL,
).wait() != 0:
return False
return True
def main():
os, target, version, toolchain, expect = sys.argv[1:]
major, minor, patch = version.split('.')
links = [*fetch_links_to_archives(os, target, major, minor, patch, toolchain)]
print(*[l['url'].encode() for l in links], sep='\n', flush=True)
assert download(links)
result = calc_hash_sum([l['name'] for l in links])
print('result', result, 'expect', expect, flush=True)
assert result == expect
assert extract_archives([l['name'] for l in links], '.', ['{}.{}.{}'.format(major, minor, patch)])
[pathlib.Path(l['name']).unlink() for l in links]
if __name__ == '__main__':
main()

View File

@@ -15,6 +15,10 @@ p2pool_files = [{
"os": "LINUX",
"filename": "linux-x64.tar.gz"
},
{
"os": "MACOS_AARCH64",
"filename": "macos-aarch64.tar.gz",
},
{
"os": "MACOS",
"filename": "macos-x64.tar.gz",

View File

@@ -2,9 +2,15 @@ name: ci/gh-actions/gui
on: [push, pull_request]
env:
FREE_DISKSPACE: |
sudo rm -rf /usr/local/.ghcup /usr/share/dotnet /usr/share/swift /usr/share/miniconda
QT_TAG: v5.15.17-lts-lgpl
QT_PREFIX: ${{ github.workspace }}/qt-install
jobs:
build-macos:
runs-on: macOS-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v1
with:
@@ -52,7 +58,7 @@ jobs:
- uses: eine/setup-msys2@v2
with:
update: true
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-pcre mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-unbound git mingw-w64-x86_64-qt5 mingw-w64-x86_64-libgcrypt
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-pcre mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-unbound git mingw-w64-x86_64-qt5 mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-angleproject
- name: build
run: DEV_MODE=ON make release-win64 -j2
- name: deploy
@@ -62,48 +68,58 @@ jobs:
run: build/release/bin/monero-wallet-gui --test-qml
macos-bundle:
runs-on: macOS-latest
runs-on: macos-15
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf pkg-config python3 p7zip aria2
- name: install dependencies
run: pip3 install defusedxml
- name: download qt
run: python3 monero-gui/.github/qt_helper.py mac_x64 desktop 5.15.2 clang_64 c384008156fe63cc183bade0316828c598ff3e5074397c0c9ccc588d6cdc5aca
working-directory: ../
- name: build
run: CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 make release -j3
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf pkg-config
- name: clone qt repo
run: git clone -b "${QT_TAG}" --recursive --depth 1 --shallow-submodules https://github.com/qt/qt5
- name: build qt from source
run: |
cd qt5
mkdir build && cd build
../configure -prefix "${QT_PREFIX}" -opensource -confirm-license -release -nomake examples -nomake tests -no-rpath -skip qtwebengine -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtnetworkauth -skip qtpurchasing -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qttools -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip gamepad -skip serialbus -skip location -skip webengine
make -j"$(sysctl -n hw.ncpu)"
make install
cd ../qttools/src/linguist/lrelease
../../../../build/qtbase/bin/qmake
make -j"$(sysctl -n hw.ncpu)"
make install
cd ../../../../qttools/src/macdeployqt/macdeployqt/
../../../../build/qtbase/bin/qmake
make -j"$(sysctl -n hw.ncpu)"
make install
- name: build monero-gui
run: |
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH="${QT_PREFIX}" ..
make -j"$(sysctl -n hw.ncpu)"
- name: deploy
run: make deploy
working-directory: build/release
working-directory: build
- name: test qml
run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
run: build/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
- name: create .tar
run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
working-directory: build/release/bin
- uses: actions/upload-artifact@v2
working-directory: build/bin
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: build/release/bin/monero-wallet-gui.tar
path: build/bin/monero-wallet-gui.tar
docker-linux-static:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-linux-static-{hash}
restore-keys: |
docker-linux-static-
- name: install dependencies
run: sudo apt -y install xvfb libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxcb-shape0 libxkbcommon-x11-0
- name: free up diskspace
run: ${{env.FREE_DISKSPACE}}
- name: prepare build environment
run: docker build --tag monero:build-env-linux --build-arg THREADS=3 --file Dockerfile.linux .
- name: build
@@ -112,7 +128,7 @@ jobs:
run: shasum -a256 /home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui
- name: test qml
run: xvfb-run -a /home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui --test-qml
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: |
@@ -120,25 +136,20 @@ jobs:
/home/runner/work/monero-gui/monero-gui/build/release/bin/monerod
docker-windows-static:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-windows-static-{hash}
restore-keys: |
docker-windows-static-
- name: free up diskspace
run: ${{env.FREE_DISKSPACE}}
- name: prepare build environment
run: docker build --tag monero:build-env-windows --build-arg THREADS=3 --file Dockerfile.windows .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -w /monero-gui monero:build-env-windows sh -c 'make depends root=/depends target=x86_64-w64-mingw32 tag=win-x64 -j3'
- name: sha256sum
run: shasum -a256 /home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monero-wallet-gui.exe
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: |
@@ -146,31 +157,24 @@ jobs:
/home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monerod.exe
docker-android:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-android-static-{hash}
restore-keys: |
docker-android-static-
- name: free up diskspace
run: ${{env.FREE_DISKSPACE}}
- name: prepare build environment
run: docker build --tag monero:build-env-android --build-arg THREADS=3 --file Dockerfile.android .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -e THREADS=3 monero:build-env-android
- name: Remove obsolete docker layers
run: docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi || true
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: /home/runner/work/monero-gui/monero-gui/build/Android/release/android-build/monero-gui.apk
source-archive:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
with:
@@ -182,7 +186,7 @@ jobs:
export OUTPUT="$VERSION.tar"
echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV
/home/runner/.local/bin/git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT"
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: ${{ env.OUTPUT }}
path: /home/runner/work/monero-gui/monero-gui/${{ env.OUTPUT }}

174
.github/workflows/flatpak.yml vendored Normal file
View File

@@ -0,0 +1,174 @@
name: Flatpak
on:
release:
types: released
jobs:
part1:
name: Part 1/3
if: github.repository == 'monero-project/monero-gui'
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
stop-at-module: boost
- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder
- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar
part2:
name: Part 2/3
if: github.repository == 'monero-project/monero-gui'
needs: part1
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Restore flatpak-builder
uses: actions/download-artifact@v4.1.7
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
stop-at-module: monero-gui
- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder
- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar
part3:
name: Part 3/3
if: github.repository == 'monero-project/monero-gui'
needs: [part1, part2]
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Add version and date
run: |
sed -i 's/<version>/${{ github.event.release.tag_name }}/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
sed -i 's/<date>/'"$(date '+%F')"'/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Restore flatpak-builder
uses: actions/download-artifact@v4.1.7
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
- name: Validate AppData
working-directory: flatpak_app/files/share/appdata
run: appstream-util validate org.getmonero.Monero.appdata.xml
- name: Delete flatpak-builder
uses: geekyeggo/delete-artifact@v2
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Print hashes
working-directory: flatpak_app/files/bin
run: |
echo "Hashes of the ${{ matrix.arch }} binaries:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
for bin in monero-blockchain-ancestry monero-blockchain-depth monero-blockchain-export monero-blockchain-import monero-blockchain-mark-spent-outputs monero-blockchain-prune monero-blockchain-prune-known-spent-data monero-blockchain-stats monero-blockchain-usage monerod monero-gen-ssl-cert monero-gen-trusted-multisig monero-wallet-cli monero-wallet-gui monero-wallet-rpc p2pool; do sha256sum $bin; done >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "An example command to check hashes:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "$ flatpak run --command=sha256sum org.getmonero.Monero /app/bin/monero-wallet-gui" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- name: Publish to Flathub Beta
uses: flatpak/flatpak-github-actions/flat-manager@v6
with:
flat-manager-url: https://hub.flathub.org
repository: beta
token: ${{ secrets.FLATHUB_ }}

View File

@@ -4,8 +4,8 @@ project(monero-gui)
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "18")
set(VERSION_MINOR "2")
set(VERSION_REVISION "2")
set(VERSION_MINOR "4")
set(VERSION_REVISION "5")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
option(STATIC "Link libraries statically, requires static Qt")
@@ -16,6 +16,14 @@ option(WITH_DESKTOP_ENTRY "Ask to install desktop entry on first startup" ON)
option(WITH_UPDATER "Regularly check for new updates" ON)
option(DEV_MODE "Checkout latest monero master on build" OFF)
if(DEV_MODE)
# DEV_MODE checks out the monero submodule to master, which requires C++17.
set(CMAKE_CXX_STANDARD 17)
else()
set(CMAKE_CXX_STANDARD 14)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake")
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
@@ -60,6 +68,7 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
get_directory_property(ARCH_WIDTH DIRECTORY "monero" DEFINITION ARCH_WIDTH)
get_directory_property(Boost_VERSION_STRING DIRECTORY "monero" DEFINITION Boost_VERSION_STRING)
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DQT_NO_DEBUG)
@@ -356,7 +365,7 @@ if(APPLE)
endif()
if (APPLE AND NOT IOS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default")
endif()
if(APPLE)
@@ -442,7 +451,7 @@ message(STATUS "Using C++ security hardening flags: ${CXX_SECURITY_FLAGS}")
message(STATUS "Using linker security hardening flags: ${LD_SECURITY_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 ${C_SECURITY_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${CXX_SECURITY_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_SECURITY_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${STATIC_FLAGS}")
add_subdirectory(translations)

View File

@@ -2,7 +2,7 @@
Use macOS 10.12 - 10.13 for better backwards compability.
1. `HOMEBREW_OPTFLAGS="-march=core2" HOMEBREW_OPTIMIZATION_LEVEL="O0" brew install boost zmq libpgm miniupnpc libsodium expat libunwind-headers protobuf libgcrypt hidapi`
1. `HOMEBREW_OPTFLAGS="-march=core2" HOMEBREW_OPTIMIZATION_LEVEL="O0" brew install boost zmq libpgm miniupnpc libsodium expat libunwind-headers protobuf@21 libgcrypt hidapi libusb cmake pkg-config && brew link protobuf@21`
2. Get the latest LTS from here: https://www.qt.io/offline-installers and install
@@ -10,9 +10,9 @@ Use macOS 10.12 - 10.13 for better backwards compability.
4. Compile `monero-wallet-gui.app`
```
```bash
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=~/Qt5.12.8/5.12.8/clang_64 ..
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=/path/to/Qt5.12.8/5.12.8/clang_64 ..
make
make deploy
```
@@ -40,8 +40,36 @@ You can check if this step worked by using `codesign -dvvv monero-wallet-gui.app
3. `hdiutil create -fs HFS+ -srcfolder monero-gui-v0.X.Y.Z -volname monero-wallet-gui monero-gui-mac-x64-v0.X.Y.Z.dmg`
4. `xcrun altool -t osx --file monero-gui-mac-x64-v0.X.Y.Z.dmg --primary-bundle-id org.monero-project.monero-wallet-gui.dmg --notarize-app --username email@address.org`
4. `xcrun notarytool submit monero-gui-mac-x64-v0.X.Y.Z.dmg --apple-id email@address.org --team-id XXXXXXXXXX`
5. `xcrun altool --notarization-info aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee -u email@address.org`
5. `xcrun notarytool info aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee --apple-id email@address.org --team-id XXXXXXXXXX`
6. `xcrun stapler staple -v monero-gui-mac-x64-v0.X.Y.Z.dmg`
## Compile Qt for Apple Silicon
Qt does not offer pre-built binaries for Apple Silicon, they have to be manually compiled.
```bash
git clone https://github.com/qt/qt5.git
cd qt5
git checkout v5.15.9-lts-lgpl
./init-repository
mkdir build
cd build
../configure -prefix /path/to/qt-build-dir/ -opensource -confirm-license -release -nomake examples -nomake tests -no-rpath -skip qtwebengine -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtnetworkauth -skip qtpurchasing -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qttools -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip gamepad -skip serialbus -skip location -skip webengine
make
make install
cd ../qttools/src/linguist/lrelease
../../../../build/qtbase/bin/qmake
make
make install
cd ../../../../qttools/src/macdeployqt/macdeployqt/
../../../../build/qtbase/bin/qmake
make
make install
```
For compilation with Xcode 15 the following patch has to be applied: https://raw.githubusercontent.com/Homebrew/formula-patches/086e8cf/qt5/qt5-qmake-xcode15.patch
The `CMAKE_PREFIX_PATH` has to be set to `/path/to/qt-build-dir/` during monero-gui compilation.

View File

@@ -1,16 +1,16 @@
FROM debian:buster
FROM ubuntu:20.04
ARG THREADS=1
ARG ANDROID_NDK_REVISION=21e
ARG ANDROID_NDK_HASH=c3ebc83c96a4d7f539bd72c241b2be9dcd29bda9
ARG ANDROID_NDK_REVISION=23c
ARG ANDROID_NDK_HASH=e5053c126a47e84726d9f7173a04686a71f9a67a
ARG ANDROID_SDK_REVISION=7302050_latest
ARG ANDROID_SDK_HASH=7a00faadc0864f78edd8f4908a629a46d622375cbe2e5814e82934aebecdb622
ARG QT_VERSION=v5.15.7-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
WORKDIR /opt/android
ENV WORKDIR=/opt/android
ENV ANDROID_NATIVE_API_LEVEL=30
ENV ANDROID_NATIVE_API_LEVEL=31
ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL}
ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang
ENV ANDROID_CLANGPP=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang++
@@ -20,6 +20,7 @@ ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH=${JAVA_HOME}/bin:${PATH}
ENV PREFIX=${WORKDIR}/prefix
ENV TOOLCHAIN_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y ant automake build-essential ca-certificates-java file gettext git libc6 libncurses5 \
@@ -32,7 +33,7 @@ RUN PACKAGE_NAME=commandlinetools-linux-${ANDROID_SDK_REVISION}.zip \
&& unzip -q ${PACKAGE_NAME} \
&& rm -f ${PACKAGE_NAME}
RUN PACKAGE_NAME=android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
RUN PACKAGE_NAME=android-ndk-r${ANDROID_NDK_REVISION}-linux.zip \
&& wget -q https://dl.google.com/android/repository/${PACKAGE_NAME} \
&& echo "${ANDROID_NDK_HASH} ${PACKAGE_NAME}" | sha1sum -c \
&& unzip -q ${PACKAGE_NAME} \
@@ -43,9 +44,9 @@ RUN echo y | ${ANDROID_SDK_ROOT}/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} "
ENV HOST_PATH=${PATH}
ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH}
ARG ZLIB_VERSION=1.2.13
ARG ZLIB_HASH=b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
ARG ZLIB_VERSION=1.3.1
ARG ZLIB_HASH=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
RUN wget -q https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz \
&& echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
&& rm zlib-${ZLIB_VERSION}.tar.gz \
@@ -98,34 +99,32 @@ RUN wget -q http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz
&& make -j${THREADS} \
&& make -j${THREADS} install
ARG BOOST_VERSION=1_74_0
ARG BOOST_VERSION_DOT=1.74.0
ARG BOOST_HASH=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
RUN wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
ARG BOOST_VERSION=1_85_0
ARG BOOST_VERSION_DOT=1.85.0
ARG BOOST_HASH=7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617
RUN wget -q https://archives.boost.io/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
&& tar -xf boost_${BOOST_VERSION}.tar.bz2 \
&& rm -f boost_${BOOST_VERSION}.tar.bz2 \
&& cd boost_${BOOST_VERSION} \
&& PATH=${HOST_PATH} ./bootstrap.sh --prefix=${PREFIX} \
&& printf "using clang : arm : ${ANDROID_CLANGPP} :\n<cxxflags>\"-fPIC\"\n<cflags>\"-fPIC\" ;" > user.jam \
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} ./b2 --build-type=minimal link=static runtime-link=static \
--with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization \
--with-system --with-thread --with-locale --build-dir=android --stagedir=android toolset=clang threading=multi \
threadapi=pthread target-os=android -sICONV_PATH=${PREFIX} \
cflags='--target=aarch64-linux-android' \
cxxflags='--target=aarch64-linux-android' \
linkflags='--target=aarch64-linux-android --sysroot=${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm64 ${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so -nostdlib++' \
--with-system --with-thread --with-locale --build-dir=android --stagedir=android toolset=clang-arm threading=multi \
threadapi=pthread target-os=android -sICONV_PATH=${PREFIX} --user-config=user.jam architecture=arm address-model=64 \
install -j${THREADS} \
&& rm -rf $(pwd)
ARG OPENSSL_VERSION=1.1.1q
ARG OPENSSL_HASH=d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca
ARG OPENSSL_VERSION=1.1.1w
ARG OPENSSL_HASH=cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8
RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
&& rm openssl-${OPENSSL_VERSION}.tar.gz \
&& cd openssl-${OPENSSL_VERSION} \
&& ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} ./Configure CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} \
android-arm64 no-asm no-shared --static \
android-arm64 no-shared --static \
--with-zlib-include=${PREFIX}/include --with-zlib-lib=${PREFIX}/lib \
--prefix=${PREFIX} --openssldir=${PREFIX} \
&& sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile \
@@ -133,9 +132,9 @@ RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
ARG EXPAT_VERSION=2.4.1
ARG EXPAT_HASH=2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40
RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-${EXPAT_VERSION}.tar.bz2 && \
ARG EXPAT_VERSION=2.6.4
ARG EXPAT_HASH=8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada
RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-${EXPAT_VERSION}.tar.bz2 && \
echo "${EXPAT_HASH} expat-${EXPAT_VERSION}.tar.bz2" | sha256sum -c && \
tar -xf expat-${EXPAT_VERSION}.tar.bz2 && \
rm expat-${EXPAT_VERSION}.tar.bz2 && \
@@ -145,8 +144,8 @@ RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-${
make -j$THREADS install && \
rm -rf $(pwd)
ARG UNBOUND_VERSION=1.16.2
ARG UNBOUND_HASH=2e32f283820c24c51ca1dd8afecfdb747c7385a137abe865c99db4b257403581
ARG UNBOUND_VERSION=1.22.0
ARG UNBOUND_HASH=c5dd1bdef5d5685b2cedb749158dd152c52d44f65529a34ac15cd88d4b1b3d43
RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.tar.gz && \
echo "${UNBOUND_HASH} unbound-${UNBOUND_VERSION}.tar.gz" | sha256sum -c && \
tar -xzf unbound-${UNBOUND_VERSION}.tar.gz && \
@@ -157,8 +156,8 @@ RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.t
make -j$THREADS install && \
rm -rf $(pwd)
ARG ZMQ_VERSION=v4.3.4
ARG ZMQ_HASH=4097855ddaaa65ed7b5e8cb86d143842a594eebd
ARG ZMQ_VERSION=v4.3.5
ARG ZMQ_HASH=622fc6dde99ee172ebaa9c8628d85a7a1995a21d
RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \
&& cd libzmq \
&& git checkout ${ZMQ_HASH} \
@@ -169,8 +168,8 @@ RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
ARG SODIUM_VERSION=1.0.18
ARG SODIUM_HASH=4f5e89fa84ce1d178a6765b8b46f2b6f91216677
ARG SODIUM_VERSION=1.0.20-RELEASE
ARG SODIUM_HASH=9511c982fb1d046470a8b42aa36556cdb7da15de
RUN set -ex \
&& git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} --depth 1 \
&& cd libsodium \
@@ -198,23 +197,20 @@ RUN git clone -b libgcrypt-1.10.1 --depth 1 git://git.gnupg.org/libgcrypt.git \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
RUN git clone -b v3.24.2 --depth 1 https://github.com/Kitware/CMake \
RUN git clone -b v3.31.4 --depth 1 https://github.com/Kitware/CMake \
&& cd CMake \
&& git reset --hard 31f835410efeea50acd43512eb9e5646a26ea177 \
&& git reset --hard 569b821a138a4d3f7f4cc42c0cf5ae5e68d56f96 \
&& PATH=${HOST_PATH} ./bootstrap \
&& PATH=${HOST_PATH} make -j${THREADS} \
&& PATH=${HOST_PATH} make -j${THREADS} install \
&& rm -rf $(pwd)
RUN GRADLE_VERSION=5.6.4 \
&& GRADLE_HASH=1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d \
&& wget -q https\://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip \
&& echo "${GRADLE_HASH} gradle-${GRADLE_VERSION}-bin.zip" | sha256sum -c \
&& GRADLE_LOCAL_PATH=gradle/wrapper/dists/gradle-${GRADLE_VERSION}-bin/bxirm19lnfz6nurbatndyydux \
&& mkdir -p ${GRADLE_LOCAL_PATH} \
&& mv gradle-${GRADLE_VERSION}-bin.zip ${GRADLE_LOCAL_PATH}
ENV GRADLE_USER_HOME=${WORKDIR}/gradle
# Workaround
ENV NEW_SDK_ROOT=${WORKDIR}/sdk
RUN mkdir ${NEW_SDK_ROOT} \
&& cp -r ${ANDROID_SDK_ROOT}/licenses ${NEW_SDK_ROOT} \
&& cp -r ${ANDROID_SDK_ROOT}/platforms ${NEW_SDK_ROOT} \
&& cp -r ${ANDROID_SDK_ROOT}/build-tools ${NEW_SDK_ROOT}
CMD set -ex \
&& cd /monero-gui \
@@ -232,10 +228,12 @@ CMD set -ex \
-DBoost_USE_STATIC_RUNTIME=ON \
-DLRELEASE_PATH="${PREFIX}/bin" \
-DQT_ANDROID_APPLICATION_BINARY="monero-wallet-gui" \
-DANDROID_SDK="${ANDROID_SDK_ROOT}" \
-DANDROID_SDK="${NEW_SDK_ROOT}" \
-DWITH_SCANNER=ON \
-DWITH_DESKTOP_ENTRY=OFF \
../../.. \
&& PATH=${HOST_PATH} make generate_translations_header \
&& sed -i -e "s#../monero/external/randomx/librandomx.a##" src/CMakeFiles/monero-wallet-gui.dir/link.txt \
&& sed -i -e "s#-lm#-lm ../monero/external/randomx/librandomx.a#" src/CMakeFiles/monero-wallet-gui.dir/link.txt \
&& make -j${THREADS} -C src \
&& make -j${THREADS} apk

View File

@@ -1,7 +1,7 @@
FROM ubuntu:16.04
FROM ubuntu:18.04
ARG THREADS=1
ARG QT_VERSION=v5.15.8-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
ENV CFLAGS="-fPIC"
ENV CPPFLAGS="-fPIC"
@@ -10,7 +10,7 @@ ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \
apt install -y automake autopoint bison gettext git gperf libgl1-mesa-dev libglib2.0-dev \
libpng12-dev libpthread-stubs0-dev libsodium-dev libtool-bin libudev-dev libusb-1.0-0-dev mesa-common-dev \
libpng-dev libpthread-stubs0-dev libsodium-dev libtool-bin libudev-dev libusb-1.0-0-dev mesa-common-dev \
pkg-config python wget xutils-dev
RUN git clone -b xorgproto-2020.1 --depth 1 https://gitlab.freedesktop.org/xorg/proto/xorgproto && \
@@ -113,16 +113,16 @@ RUN git clone -b xkbcommon-0.5.0 --depth 1 https://github.com/xkbcommon/libxkbco
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v1.2.11 --depth 1 https://github.com/madler/zlib && \
RUN git clone -b v1.3 --depth 1 https://github.com/madler/zlib && \
cd zlib && \
git reset --hard cacf7f1d4e3d44d871b605da3b647f07d718623f && \
git reset --hard 09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851 && \
./configure --static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b VER-2-10-2 --depth 1 https://git.savannah.gnu.org/git/freetype/freetype2.git && \
cd freetype2 && \
RUN git clone -b VER-2-10-2 --depth 1 https://gitlab.freedesktop.org/freetype/freetype.git && \
cd freetype && \
git reset --hard 132f19b779828b194b3fede187cee719785db4d8 && \
./autogen.sh && \
./configure --disable-shared --enable-static --with-zlib=no && \
@@ -156,7 +156,7 @@ RUN git clone -b release-64-2 --depth 1 https://github.com/unicode-org/icu && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz && \
RUN wget https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz && \
echo "4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 boost_1_80_0.tar.gz" | sha256sum -c && \
tar -xzf boost_1_80_0.tar.gz && \
rm boost_1_80_0.tar.gz && \
@@ -165,12 +165,12 @@ RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_
./b2 --with-atomic --with-system --with-filesystem --with-thread --with-date_time --with-chrono --with-regex --with-serialization --with-program_options --with-locale variant=release link=static runtime-link=static cflags="${CFLAGS}" cxxflags="${CXXFLAGS}" install -a --prefix=/usr && \
rm -rf $(pwd)
RUN wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz && \
echo "d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca openssl-1.1.1q.tar.gz" | sha256sum -c && \
tar -xzf openssl-1.1.1q.tar.gz && \
rm openssl-1.1.1q.tar.gz && \
cd openssl-1.1.1q && \
./config no-asm no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz && \
echo "e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6 openssl-1.1.1u.tar.gz" | sha256sum -c && \
tar -xzf openssl-1.1.1u.tar.gz && \
rm openssl-1.1.1u.tar.gz && \
cd openssl-1.1.1u && \
./config no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
@@ -233,9 +233,9 @@ RUN git clone -b v1.0.26 --depth 1 https://github.com/libusb/libusb && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b hidapi-0.13.1 --depth 1 https://github.com/libusb/hidapi && \
RUN git clone -b hidapi-0.15.0 --depth 1 https://github.com/libusb/hidapi && \
cd hidapi && \
git reset --hard 4ebce6b5059b086d05ca7e091ce04a5fd08ac3ac && \
git reset --hard d6b2a974608dec3b76fb1e36c189f22b9cf3650c && \
./bootstrap && \
./configure --disable-shared --enable-static && \
make -j$THREADS && \

View File

@@ -1,7 +1,7 @@
FROM ubuntu:20.04
ARG THREADS=1
ARG QT_VERSION=v5.15.8-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \
@@ -12,9 +12,9 @@ RUN apt update && \
RUN update-alternatives --set x86_64-w64-mingw32-g++ $(which x86_64-w64-mingw32-g++-posix) && \
update-alternatives --set x86_64-w64-mingw32-gcc $(which x86_64-w64-mingw32-gcc-posix)
RUN git clone -b v0.18.2.0 --depth 1 https://github.com/monero-project/monero && \
RUN git clone -b v0.18.4.5 --depth 1 https://github.com/monero-project/monero && \
cd monero && \
git reset --hard 99be9a044f3854f339548e2d99c539c18d7b1b01 && \
git reset --hard 316a98b11ea29b65e61a42cfdc37f762736fd7c1 && \
cp -a contrib/depends / && \
cd .. && \
rm -rf monero

View File

@@ -1,4 +1,4 @@
Copyright (c) 2014-2018, The Monero Project
Copyright (c) 2014-2024, The Monero Project
All rights reserved.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,6 +1,6 @@
# Monero GUI
Copyright (c) 2014-2022, The Monero Project
Copyright (c) 2014-2024, The Monero Project
## Table of Contents
* [Development resources](#development-resources)
@@ -60,9 +60,7 @@ The Bitcoin donation address is: `1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H`
GUI development funding and/or some supporting services are also graciously provided by [sponsors](https://www.getmonero.org/community/sponsorships/):
[<img width="150" src="https://www.getmonero.org/img/sponsors/tarilabs.png"/>](https://tarilabs.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/globee.png"/>](https://globee.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/symas.png"/>](https://symas.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/forked_logo.png"/>](http://www.forked.net/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/macstadium.png"/>](https://www.macstadium.com/)
There are also several mining pools that kindly donate a portion of their fees, [a list of them can be found on our Bitcointalk post](https://bitcointalk.org/index.php?topic=583449.0).
@@ -86,8 +84,8 @@ Status of the translations:
## Installing the Monero GUI from a package
Packages are available for
* Arch Linux: [monero-gui](https://www.archlinux.org/packages/community/x86_64/monero-gui/)
* Void Linux: `xbps-install -S monero-gui`
* Arch Linux: [monero-gui](https://archlinux.org/packages/extra/x86_64/monero-gui/)
* NixOS: `nix-shell -p monero-gui`
* Flatpak: [Monero GUI](https://flathub.org/apps/details/org.getmonero.Monero)
* GuixSD: `guix package -i monero-gui`
* macOS (homebrew): `brew install --cask monero-wallet`
@@ -98,7 +96,7 @@ Packaging for your favorite distribution would be a welcome contribution!
*Note*: Qt 5.9.7 is the minimum version required to build the GUI.
*Note*: Official GUI releases use monero-wallet-gui from this process alongside the supporting binaries (monerod, etc) from the [CLI deterministic builds](https://github.com/monero-project/monero/blob/master/contrib/gitian/README.md).
*Note*: Official GUI releases use monero-wallet-gui from this process alongside the supporting binaries (monerod, etc) from the [CLI deterministic builds](https://github.com/monero-project/monero/blob/release-v0.18/contrib/gitian/README.md).
### Building Reproducible Windows static binaries with Docker (any OS)
@@ -107,7 +105,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.2.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.5`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -130,7 +128,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.2.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.5`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -144,8 +142,9 @@ Packaging for your favorite distribution would be a welcome contribution!
```
\* `<MONERO_GUI_DIR_FULL_PATH>` - absolute path to `monero-gui` directory
\* `4` - number of CPU threads to use
5. Monero GUI Linux static binaries will be placed in `monero-gui/build/release/bin` directory
6. (*Optional*) Compare `monero-wallet-gui` SHA-256 hash to the one obtained from a trusted source
5. Monero GUI Linux static binary will be placed in `monero-gui/build/release/bin` directory
6. (*Note*) This process is only for building `monero-wallet-gui`, `monerod` has to be built separately according to the instructions in the `monero` repository.
7. (*Optional*) Compare `monero-wallet-gui` SHA-256 hash to the one obtained from a trusted source
```
docker run --rm -it -v <MONERO_GUI_DIR_FULL_PATH>:/monero-gui -w /monero-gui monero:build-env-linux sh -c 'shasum -a 256 /monero-gui/build/release/bin/monero-wallet-gui'
```
@@ -257,18 +256,10 @@ The following instructions will fetch Qt from your distribution's repositories i
4. Build
If on x86-64:
```
make release -j4
```
If on ppc64le:
```
make release-linux-ppc64le -j4
```
\* `4` - number of CPU threads to use
\* Add `CMAKE_PREFIX_PATH` environment variable to set a custom Qt install directory, e.g. `CMAKE_PREFIX_PATH=$HOME/Qt/5.9.7/gcc_64 make release -j4`
@@ -318,7 +309,7 @@ The Monero GUI on Windows is 64 bits only; 32-bit Windows GUI builds are not off
3. Install MSYS2 packages for Monero dependencies; the needed 64-bit packages have `x86_64` in their names
```
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-unbound
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-unbound mingw-w64-x86_64-pcre mingw-w64-x86_64-angleproject
```
You find more details about those dependencies in the [Monero documentation](https://github.com/monero-project/monero). Note that that there is no more need to compile Boost from source; like everything else, you can install it now with a MSYS2 package.

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2014-2019, The Monero Project
# Copyright (c) 2014-2024, The Monero Project
#
# All rights reserved.
#

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2014-2019, The Monero Project
# Copyright (c) 2014-2024, The Monero Project
#
# All rights reserved.
#

View File

@@ -17,7 +17,36 @@ if(APPLE OR (WIN32 AND NOT STATIC))
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/
COMMENT "Copying libqsvg.dylib"
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtSvg.framework/Versions/5/QtSvg" "@executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtCore.framework/Versions/5/QtCore" "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMENT "Copying libqsvg.dylib, running install_name_tool"
)
endif()
# Copy Boost dylibs that macdeployqt doesn't pick up
find_package(Boost QUIET COMPONENTS atomic container date_time)
set(_boost_extras Boost::atomic Boost::container Boost::date_time)
foreach(_tgt IN LISTS _boost_extras)
if(TARGET ${_tgt})
add_custom_command(TARGET deploy POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"$<TARGET_FILE:${_tgt}>"
"$<TARGET_FILE_DIR:monero-wallet-gui>/../Frameworks/"
COMMENT "Copying $<TARGET_FILE_NAME:${_tgt}>"
)
endif()
endforeach()
# Apple Silicon requires all binaries to be codesigned
find_program(CODESIGN_EXECUTABLE NAMES codesign)
if(CODESIGN_EXECUTABLE)
add_custom_command(TARGET deploy
POST_BUILD
COMMAND "${CODESIGN_EXECUTABLE}" --force --deep --sign - "$<TARGET_FILE_DIR:monero-wallet-gui>/../.."
COMMENT "Running codesign..."
)
endif()
@@ -32,7 +61,6 @@ if(APPLE OR (WIN32 AND NOT STATIC))
libboost_filesystem-mt.dll
libboost_locale-mt.dll
libboost_program_options-mt.dll
libboost_regex-mt.dll
libboost_serialization-mt.dll
libboost_thread-mt.dll
libprotobuf.dll
@@ -58,37 +86,31 @@ if(APPLE OR (WIN32 AND NOT STATIC))
libglib-2.0-0.dll
libfreetype-6.dll
libbz2-1.dll
libssp-0.dll
libpcre2-16-0.dll
libhidapi-0.dll
libdouble-conversion.dll
libgcrypt-20.dll
libgpg-error-0.dll
libsodium-23.dll
libsodium-26.dll
libzmq.dll
#platform files
libgcc_s_seh-1.dll
#openssl files
libssl-3-x64.dll
libcrypto-3-x64.dll
#icu
libicudt78.dll
libicuin78.dll
libicuio78.dll
libicutu78.dll
libicuuc78.dll
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND WIN_DEPLOY_DLLS
libicudtd72.dll
libicuind72.dll
libicuiod72.dll
libicutud72.dll
libicuucd72.dll
)
else() # assume release
list(APPEND WIN_DEPLOY_DLLS
libicudt72.dll
libicuin72.dll
libicuio72.dll
libicutu72.dll
libicuuc72.dll
)
# Boost Regex is header-only since 1.77
if (Boost_VERSION_STRING VERSION_LESS 1.77.0)
list(APPEND WIN_DEPLOY_DLLS libboost_regex-mt.dll)
endif()
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")
add_custom_command(TARGET deploy
POST_BUILD

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2014-2019, The Monero Project
# Copyright (c) 2014-2024, The Monero Project
#
# All rights reserved.
#

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2020, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2015, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2020, The Monero Project
// Copyright (c) 2020-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2020, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2021, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -50,6 +50,7 @@ Item {
property bool passwordDialogMode
property bool passphraseDialogMode
property bool newPasswordDialogMode
property bool backgroundSyncing
// same signals as Dialog has
signal accepted()
@@ -77,10 +78,11 @@ Item {
appWindow.updateBalance();
}
function open(walletName, errorText, okButtonText, okButtonIcon) {
function open(walletName, errorText, okButtonText, okButtonIcon, backgroundSyncOn) {
passwordDialogMode = true;
passphraseDialogMode = false;
newPasswordDialogMode = false;
backgroundSyncing = backgroundSyncOn || false;
root.okButtonText = okButtonText;
root.okButtonIcon = okButtonIcon ? okButtonIcon : "";
_openInit(walletName, errorText);
@@ -90,6 +92,7 @@ Item {
passwordDialogMode = false;
passphraseDialogMode = true;
newPasswordDialogMode = false;
backgroundSyncing = false;
_openInit("", "");
}
@@ -97,6 +100,7 @@ Item {
passwordDialogMode = false;
passphraseDialogMode = false;
newPasswordDialogMode = true;
backgroundSyncing = false;
_openInit("", "");
}
@@ -204,7 +208,7 @@ Item {
font.family: MoneroComponents.Style.fontLight.name
Layout.fillWidth: true
wrapMode: Text.Wrap
text: qsTr("CAPSLOCKS IS ON.") + translationManager.emptyString;
text: qsTr("CAPS LOCK IS ON.") + translationManager.emptyString;
}
MoneroComponents.LineEdit {
@@ -300,6 +304,18 @@ Item {
onClicked: onOk()
}
}
Label {
visible: backgroundSyncing
text: qsTr("Syncing in the background...") + translationManager.emptyString;
Layout.fillWidth: true
font.pixelSize: 14
font.family: MoneroComponents.Style.fontLight.name
font.italic: true
color: MoneroComponents.Style.defaultFontColor
}
}
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2020, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2020, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2020, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2020, The Monero Project
// Copyright (c) 2020-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

BIN
images/ledgerFlex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
images/ledgerNanoGen5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

BIN
images/ledgerStax.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
images/trezor3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
images/trezor5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 301 KiB

View File

@@ -23,7 +23,7 @@ You would think timestamp preservation is no problem when unpacking the zip arch
In any case, after unpacking, check the file dates in the `bin` directory where the installer script looks for them with the dates of the files in the zip file: They must be identical.
Note that the the following line in `Monero.iss` is also important regarding file timestamps:
Note that the following line in `Monero.iss` is also important regarding file timestamps:
TimeStampsInUTC=yes

View File

@@ -1,4 +1,4 @@
Copyright (c) 2014-2020, The Monero Project
Copyright (c) 2014-2024, The Monero Project
All rights reserved.

View File

@@ -1,5 +1,5 @@
; Monero Fluorine Fermi GUI Wallet Installer for Windows
; Copyright (c) 2017-2020, The Monero Project
; Copyright (c) 2017-2024, The Monero Project
; See LICENSE
#define GuiVersion GetFileVersion("bin\monero-wallet-gui.exe")
@@ -167,7 +167,6 @@ Type: files; Name: "{app}\libstdc++-6.dll"
Type: files; Name: "{app}\libtiff-5.dll"
Type: files; Name: "{app}\libwinpthread-1.dll"
Type: files; Name: "{app}\zlib1.dll"
Type: files; Name: "{app}\libssp-0.dll"
Type: files; Name: "{app}\libhidapi-0.dll"
Type: files; Name: "{app}\libeay32.dll"
Type: files; Name: "{app}\ssleay32.dll"

View File

@@ -1,6 +1,6 @@
# Monero GUI Wallet Windows Installer #
Copyright (c) 2017-2020, The Monero Project
Copyright (c) 2017-2024, The Monero Project
## Introduction ##

View File

@@ -6,7 +6,7 @@
<body style="font-family: Arial, Helvetica, sans-serif">
<h1>Monero Fluorine Fermi GUI Wallet</h1>
<p>Copyright (c) 2014-2020, The Monero Project</p>
<p>Copyright (c) 2014-2024, The Monero Project</p>
<h2>Preface</h2>
@@ -56,11 +56,14 @@
i.e. let it download the blockchain and store it locally on your computer, or you can configure your wallet to
access a remote <i>open node</i> to get indirect access to the blockchain.</p>
<p>Working with your own copy of the blockchain is <b>preferred</b>: It strengthens the Monero network, and it
<p>You can also <i>Prune</i> the blockchain in order to save 2/3 of storage space while keeping the full transaction history.
More information regarding how pruning works can be found <a href="https://www.getmonero.org/resources/moneropedia/pruning.html">here</a>.</p>
<p>Working with your own copy of the blockchain, even pruned, is <b>preferred</b>: It strengthens the Monero network, and it
provides the most security and privacy possible for you.</p>
<p>However if your Internet access makes it difficult to run a full node, or if you have simply no room to store
the blockchain locally (about 90 GB in May 2020, and of course growing), you can compromise and try to connect
the blockchain locally (about 160 GB in June 2023, and of course growing), you can compromise and try to connect
to a remote node. One way of finding such a node is checking
<a href="https://moneroworld.com/#nodes">this page</a>.
</p>

View File

@@ -21,7 +21,6 @@ function addressTruncatePretty(address, blocks){
if(typeof(address) === "undefined") return "";
if(typeof(blocks) === "undefined") blocks = 2;
blocks = blocks <= 1 ? 1 : blocks >= 23 ? 23 : blocks;
var ret = "";
return address.substring(0, 4 * blocks).match(/.{1,4}/g).join(' ') + " .. " + address.substring(address.length - 4 * blocks).match(/.{1,4}/g).join(' ');
}
@@ -70,9 +69,43 @@ function checkSignature(signature) {
}
function isValidOpenAliasAddress(address) {
address = address.trim()
// we can get an awful lot of valid domains, including non ASCII chars... accept anything
// there should be something after the .
// make sure it is not some kind of floating number
return address.length > 2 && isNaN(parseFloat(address)) && address.indexOf('.') >= 0
var regex = /^[A-Za-z0-9-@]+(\.[A-Za-z0-9-]+)+$/; // Basic domain structure, allow email-like address
if (!regex.test(address)) {
return false;
}
const lastPart = address.substring(address.lastIndexOf('.') + 1);
return isNaN(parseInt(lastPart)) || lastPart !== parseInt(lastPart).toString();
}
function handleOpenAliasResolution(address, descriptionText) {
const result = walletManager.resolveOpenAlias(address);
if (!result) {
return { message: qsTr("No address found") };
}
const [isDnssecValid, resolvedAddress] = result.split("|");
const isAddressValid = walletManager.addressValid(resolvedAddress, appWindow.persistentSettings.nettype);
let updatedDescriptionText = descriptionText;
if (isDnssecValid === "true") {
if (isAddressValid) {
updatedDescriptionText = descriptionText ? `${address} ${descriptionText}` : address;
return { address: resolvedAddress, description: updatedDescriptionText };
} else {
return { message: qsTr("No valid address found at this OpenAlias address") };
}
} else if (isDnssecValid === "false") {
if (isAddressValid) {
return {
address: resolvedAddress,
message: qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"),
};
} else {
return { message: qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed") };
}
} else {
return { message: qsTr("Internal error") };
}
}

View File

@@ -53,7 +53,7 @@ function ago(epoch) {
// Returns '<delta> [seconds|minutes|hours|days] ago' string given an epoch
var now = new Date().getTime() / 1000;
var delta = now - epoch;
var delta = Math.max(now - epoch, 0);
if(delta < 60)
return qsTr("%n second(s) ago", "0", Math.floor(delta))

View File

@@ -166,7 +166,7 @@ function getApproximateBlockchainHeight(_date, _nettype){
if(_nettype == "Testnet" || _nettype == "Stagenet"){
// testnet got some huge rollbacks, so the estimation is way off
var approximateTestnetRolledBackBlocks = _nettype == "Testnet" ? 342100 : 30000;
var approximateTestnetRolledBackBlocks = _nettype == "Testnet" ? 342100 : _nettype == "Stagenet" ? 60000 : 30000;
if(approxBlockchainHeight > approximateTestnetRolledBackBlocks)
approxBlockchainHeight -= approximateTestnetRolledBackBlocks
}

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -22,7 +22,7 @@ Lojban
<!-- <language display_name="English (ZA)" locale="en_SA" wallet_language="English" flag="/lang/flags/za.png" qs="none"/> -->
<!-- <language display_name="العربية (PS)" locale="ar_PS" wallet_language="English" flag="/lang/flags/ps.png" qs="none"/> -->
<language display_name="Deutsch" locale="de_DE" wallet_language="Deutsch" flag="/lang/flags/de.png" qs="none"/>
<language display_name="Esperanto" locale="eo" wallet_language="Esperanto" flag="/lang/flags/esperanto.png" qs="none"/>
<language display_name="Esperanto" locale="eo_EO" wallet_language="Esperanto" flag="/lang/flags/eo.png" qs="none"/>
<language display_name="Español" locale="es_ES" wallet_language="Español" flag="/lang/flags/es.png" qs="none"/>
<language display_name="Français" locale="fr_FR" wallet_language="Français" flag="/lang/flags/fr.png" qs="none"/>
<language display_name="Svenska" locale="sv_SE" wallet_language="English" flag="/lang/flags/se.png" qs="none"/>

119
main.qml
View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -94,11 +94,12 @@ ApplicationWindow {
readonly property string localDaemonAddress : "localhost:" + getDefaultDaemonRpcPort(persistentSettings.nettype)
property string currentDaemonAddress;
property int disconnectedEpoch: 0
property int estimatedBlockchainSize: persistentSettings.pruneBlockchain ? 55 : 150 // GB
property int estimatedBlockchainSize: persistentSettings.pruneBlockchain ? 100 : 225 // GB
property alias viewState: rootItem.state
property string prevSplashText;
property bool splashDisplayedBeforeButtonRequest;
property bool themeTransition: false
property int backgroundSyncType: Wallet.BackgroundSync_Off;
// fiat price conversion
property real fiatPrice: 0
@@ -133,6 +134,12 @@ ApplicationWindow {
}
function lock() {
if (currentWallet && currentWallet.getBackgroundSyncType() != Wallet.BackgroundSync_Off) {
appWindow.showProcessingSplash(qsTr("Locking..."));
currentWallet.startBackgroundSync()
return;
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password)
@@ -288,6 +295,9 @@ ApplicationWindow {
currentWallet.heightRefreshed.disconnect(onHeightRefreshed);
currentWallet.refreshed.disconnect(onWalletRefresh)
currentWallet.updated.disconnect(onWalletUpdate)
currentWallet.backgroundSyncSetup.disconnect(onBackgroundSyncSetup)
currentWallet.backgroundSyncStarted.disconnect(onBackgroundSyncStarted)
currentWallet.backgroundSyncStopped.disconnect(onBackgroundSyncStopped)
currentWallet.newBlock.disconnect(onWalletNewBlock)
currentWallet.moneySpent.disconnect(onWalletMoneySent)
currentWallet.moneyReceived.disconnect(onWalletMoneyReceived)
@@ -324,6 +334,7 @@ ApplicationWindow {
walletName = usefulName(wallet.path)
viewOnly = currentWallet.viewOnly;
backgroundSyncType = currentWallet.getBackgroundSyncType();
// New wallets saves the testnet flag in keys file.
if(persistentSettings.nettype != currentWallet.nettype) {
@@ -335,6 +346,9 @@ ApplicationWindow {
currentWallet.heightRefreshed.connect(onHeightRefreshed);
currentWallet.refreshed.connect(onWalletRefresh)
currentWallet.updated.connect(onWalletUpdate)
currentWallet.backgroundSyncSetup.connect(onBackgroundSyncSetup)
currentWallet.backgroundSyncStarted.connect(onBackgroundSyncStarted)
currentWallet.backgroundSyncStopped.connect(onBackgroundSyncStopped)
currentWallet.newBlock.connect(onWalletNewBlock)
currentWallet.moneySpent.connect(onWalletMoneySent)
currentWallet.moneyReceived.connect(onWalletMoneyReceived)
@@ -379,7 +393,7 @@ ApplicationWindow {
}
function isTrustedDaemon() {
return !persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted;
return appWindow.walletMode >= 2 && (!persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted);
}
function usefulName(path) {
@@ -544,6 +558,15 @@ ApplicationWindow {
}
}
// Don't allow opening background wallets in the GUI
if (wallet.isBackgroundWallet()) {
passwordDialog.onCancel();
appWindow.showStatusMessage(qsTr("Can't open background wallets in the GUI"),6);
console.log("closing background wallet");
closeWallet();
return;
}
// wallet opened successfully, subscribing for wallet updates
connectWallet(wallet)
@@ -585,13 +608,17 @@ ApplicationWindow {
devicePassphraseDialog.open(on_device)
}
function onWalletUpdate() {
function onWalletUpdate(stoppedBackgroundSync) {
if (!currentWallet)
return;
console.log(">>> wallet updated")
updateBalance();
// Update history if new block found since last update
if(foundNewBlock) {
// Update history if new block found since last update or background sync was just stopped
if(foundNewBlock || stoppedBackgroundSync) {
if (foundNewBlock)
console.log("New block found - updating history")
foundNewBlock = false;
console.log("New block found - updating history")
currentWallet.history.refresh(currentWallet.currentSubaddressAccount)
if(middlePanel.state == "History")
@@ -599,6 +626,61 @@ ApplicationWindow {
}
}
function onBackgroundSyncSetup() {
console.log(">>> background sync setup");
hideProcessingSplash();
if (currentWallet.status !== Wallet.Status_Ok) {
console.error("Error setting up background sync: ", currentWallet.errorString);
appWindow.showStatusMessage(currentWallet.errorString, 5);
return;
}
appWindow.backgroundSyncType = currentWallet.getBackgroundSyncType();
}
function onBackgroundSyncStarted() {
console.log(">>> background sync started");
hideProcessingSplash();
var started = currentWallet.status === Wallet.Status_Ok;
if (!started) {
console.error("Error starting background sync: ", currentWallet.errorString);
appWindow.showStatusMessage(currentWallet.errorString, 5);
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password) {
if (currentWallet && started) {
appWindow.showProcessingSplash(qsTr("Unlocking..."));
currentWallet.stopBackgroundSync(walletPassword);
} else {
passwordDialog.close();
}
} else {
passwordDialog.showError(qsTr("Wrong password") + translationManager.emptyString);
}
}
passwordDialog.open(usefulName(persistentSettings.wallet_path), "", "", "", started);
}
function onBackgroundSyncStopped() {
console.log(">>> background sync stopped");
var stopped = currentWallet.status === Wallet.Status_Ok;
if (!stopped) {
hideProcessingSplash();
console.error("Error stopping background sync: ", currentWallet.errorString);
// If there is an error stopping background sync, the spend key
// won't be loaded and the wallet will be in a broken state. Don't
// let the user continue normal wallet operations in this state.
passwordDialog.showError(qsTr("Error stopping background sync: ") + currentWallet.errorString);
return;
}
onWalletUpdate(stopped);
hideProcessingSplash();
passwordDialog.close();
}
function connectRemoteNode() {
console.log("connecting remote node");
@@ -2186,7 +2268,7 @@ ApplicationWindow {
function getBuildTag() {
if (isMac) {
return "mac-x64";
return isARM ? "mac-armv8" : "mac-x64";
}
if (isWindows) {
return oshelper.installed ? "install-win-x64" : "win-x64";
@@ -2255,6 +2337,20 @@ ApplicationWindow {
var inactivity = Utils.epoch() - appWindow.userLastActive;
if(inactivity < (persistentSettings.lockOnUserInActivityInterval * 60)) return;
if (inputDialogVisible) inputDialog.close()
remoteNodeDialog.close();
informationPopup.close()
txConfirmationPopup.close()
txConfirmationPopup.clearFields()
txConfirmationPopup.rejected()
successfulTxPopup.close();
if (currentWallet && currentWallet.getBackgroundSyncType() != Wallet.BackgroundSync_Off) {
appWindow.showProcessingSplash(qsTr("Locking..."));
currentWallet.startBackgroundSync()
return;
}
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password){
passwordDialog.close();
@@ -2267,13 +2363,6 @@ ApplicationWindow {
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
if (inputDialogVisible) inputDialog.close()
remoteNodeDialog.close();
informationPopup.close()
txConfirmationPopup.close()
txConfirmationPopup.clearFields()
txConfirmationPopup.rejected()
successfulTxPopup.close();
passwordDialog.open();
}

2
monero

Submodule monero updated: e06129bb4d...316a98b11e

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -387,34 +387,17 @@ Rectangle {
visible: TxUtils.isValidOpenAliasAddress(addressLine.text)
enabled : visible
onClicked: {
var result = walletManager.resolveOpenAlias(addressLine.text)
if (result) {
var parts = result.split("|")
if (parts.length === 2) {
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
if (parts[0] === "true") {
if (address_ok) {
// prepend openalias to description
descriptionLine.text = descriptionLine.text ? addressLine.text + " " + descriptionLine.text : addressLine.text
addressLine.text = parts[1]
} else {
root.oa_message(qsTr("No valid address found at this OpenAlias address"))
}
} else if (parts[0] === "false") {
if (address_ok) {
addressLine.text = parts[1]
root.oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
} else {
root.oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
}
} else {
root.oa_message(qsTr("Internal error"))
}
} else {
root.oa_message(qsTr("Internal error"))
const response = TxUtils.handleOpenAliasResolution(addressLine.text, descriptionLine.text);
if (response) {
if (response.message) {
oa_message(response.message);
}
if (response.address) {
addressLine.text = response.address;
}
if (response.description) {
descriptionLine.text = response.description;
}
} else {
root.oa_message(qsTr("No address found"))
}
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2021, The Monero Project
// Copyright (c) 2021-2024, The Monero Project
//
// All rights reserved.
//
@@ -41,6 +41,7 @@ ColumnLayout {
property int panelHeight: 900
property alias miningView: stateView.miningView
property alias signView: stateView.signView
property alias prooveView: stateView.prooveView
property alias state: stateView.state
MoneroComponents.Navbar {
@@ -151,6 +152,7 @@ ColumnLayout {
function clearFields() {
signView.clearFields();
prooveView.clearFields();
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -1447,7 +1447,6 @@ Rectangle {
var txs = [];
for (var i = 0; i < root.txData.length; i++){
var item = root.txData[i];
var matched = "";
// daterange filtering
if(item.timestamp < fromDate || item.timestamp > toDate){
@@ -1543,6 +1542,7 @@ Rectangle {
function updateTransactionsFromModel() {
// This function copies the items of `appWindow.currentWallet.historyModel` to `root.txModelData`, as a list of javascript objects
if(currentWallet == null || typeof currentWallet.history === "undefined" ) return;
if(currentWallet.isBackgroundSyncing()) return;
var _model = root.model;
var total = 0

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -384,6 +384,7 @@ Rectangle {
ListElement { column1: qsTr("Mini") ; column2: ""; priority: 0}
ListElement { column1: qsTr("Main") ; column2: ""; priority: 1}
ListElement { column1: qsTr("Nano") ; column2: ""; priority: 2}
}
ColumnLayout {
@@ -400,7 +401,7 @@ Rectangle {
MoneroComponents.Tooltip {
id: chainsHelpTooltip
text: qsTr("Use the mini chain if you have a low hashrate.") + translationManager.emptyString
text: qsTr("Use the mini or nano chains if you have a low hashrate.") + translationManager.emptyString
}
MouseArea {
@@ -448,26 +449,43 @@ Rectangle {
id: flagsHelpTooltip
text: "
Usage:<br>
--wallet Wallet address to mine to. Subaddresses and integrated addresses are not supported!<br>
--host IP address of your Monero node, default is 127.0.0.1<br>
--rpc-port monerod RPC API port number, default is 18081<br>
--zmq-port monerod ZMQ pub port number, default is 18083 (same port as in monerod\'s \"--zmq-pub\" command line parameter)<br>
--stratum Comma-separated list of IP:port for stratum server to listen on<br>
--p2p Comma-separated list of IP:port for p2p server to listen on<br>
--addpeers Comma-separated list of IP:port of other p2pool nodes to connect to<br>
--light-mode Don't allocate RandomX dataset, saves 2GB of RAM<br>
--loglevel Verbosity of the log, integer number between 0 and 6<br>
--config Name of the p2pool config file<br>
--data-api Path to the p2pool JSON data (use it in tandem with an external web-server)<br>
--local-api Enable /local/ path in api path for Stratum Server and built-in miner statistics<br>
--stratum-api An alias for --local-api<br>
--no-cache Disable p2pool.cache<br>
--no-color Disable colors in console output<br>
--no-randomx Disable internal RandomX hasher: p2pool will use RPC calls to monerod to check PoW hashes<br>
--out-peers N Maximum number of outgoing connections for p2p server (any value between 10 and 1000)<br>
--in-peers N Maximum number of incoming connections for p2p server (any value between 10 and 1000)<br>
--start-mining N Start built-in miner using N threads (any value between 1 and 64)<br>
--help Show this help message
--wallet Wallet address to mine to. Subaddresses and integrated addresses are not supported!<br>
--host IP address of your Monero node, default is 127.0.0.1<br>
--rpc-port monerod RPC API port number, default is 18081<br>
--zmq-port monerod ZMQ pub port number, default is 18083 (same port as in monerod\'s \"--zmq-pub\" command line parameter)<br>
--stratum Comma-separated list of IP:port for stratum server to listen on<br>
--p2p Comma-separated list of IP:port for p2p server to listen on<br>
--addpeers Comma-separated list of IP:port of other p2pool nodes to connect to<br>
--stratum-ban-time N Number of seconds to ban misbehaving stratum client, default is 600<br>
--light-mode Don't allocate RandomX dataset, saves 2GB of RAM<br>
--loglevel Verbosity of the log, integer number between 0 and 6<br>
--data-dir Path to store general p2pool files (log, cache, peer data, etc.), default is current directory<br>
--sidechain-config Name of the p2pool sidechain parameters file (only use it if you run your own sidechain)<br>
--data-api Path to the p2pool JSON data (use it in tandem with an external web-server)<br>
--local-api Enable /local/ path in api path for Stratum Server and built-in miner statistics<br>
--stratum-api An alias for --local-api<br>
--no-cache Disable p2pool.cache<br>
--no-color Disable colors in console output<br>
--no-randomx Disable internal RandomX hasher: p2pool will use RPC calls to monerod to check PoW hashes<br>
--out-peers N Maximum number of outgoing connections for p2p server (any value between 10 and 1000)<br>
--in-peers N Maximum number of incoming connections for p2p server (any value between 10 and 1000)<br>
--start-mining N Start built-in miner using N threads (any value between 1 and 64)<br>
--no-autodiff Disable automatic difficulty adjustment for miners connected to stratum (WARNING: incompatible with Nicehash and MRR)<br>
--rpc-login Specify username[:password] required for Monero RPC server<br>
--socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections<br>
--no-dns Disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too)<br>
--p2p-external-port Port number that your router uses for mapping to your local p2p port. Use it if you are behind a NAT and still want to accept incoming connections<br>
--no-upnp Disable UPnP port forwarding<br>
--no-igd An alias for --no-upnp<br>
--upnp-stratum Port forward Stratum port (it's not forwarded by default)<br>
--merge-mine IP:port and wallet address for another blockchain to merge mine with<br>
--version Print p2pool's version and build details<br>
--tls-cert file Load TLS certificate chain from \"file\" in the PEM format<br>
--tls-cert-key file Load TLS certificate private key from \"file\" in the PEM format<br>
--rpc-ssl Enable SSL on RPC connections to the Monero node<br>
--rpc-ssl-fingerprint base64-encoded fingerprint of the Monero node's certificate (optional, use it for certificate pinning)<br>
--no-stratum-http Disable HTTP on Stratum ports<br>
--help Show this help message
"
}
@@ -630,6 +648,9 @@ allArgs = allArgs.filter( ( el ) => !defaultArgs.includes( el.split(" ")[0] ) )
if (chainDropdown.currentIndex === 1) {
chain = "main"
}
if (chainDropdown.currentIndex === 2) {
chain = "nano"
}
var p2poolArgs = persistentSettings.p2poolFlags;
var success = p2poolManager.start(p2poolArgs, address, chain, threads);
if (success)
@@ -641,10 +662,25 @@ allArgs = allArgs.filter( ( el ) => !defaultArgs.includes( el.split(" ")[0] ) )
}
}
function p2poolDownloadFailed() {
function p2poolDownloadFailed(errorCode) {
statusMessage.visible = false
errorPopup.title = qsTr("P2Pool Installation Failed") + translationManager.emptyString;
errorPopup.text = qsTr("P2Pool installation failed.") + isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : ""
switch (errorCode) {
case P2PoolManager.HashVerificationFailed:
errorPopup.text = qsTr("Hash verification failed.") + translationManager.emptyString;
break;
case P2PoolManager.BinaryNotAvailable:
errorPopup.text = qsTr("P2Pool download is not available.") + translationManager.emptyString;
break;
case P2PoolManager.ConnectionIssue:
errorPopup.text = qsTr("P2Pool download failed due to a connection issue.") + translationManager.emptyString;
break;
case P2PoolManager.InstallationFailed:
errorPopup.text = qsTr("P2Pool installation failed.") + (isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : "")
break;
default:
errorPopup.text = qsTr("Unknown error.") + translationManager.emptyString;
}
errorPopup.icon = StandardIcon.Critical
errorPopup.open()
update()

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2018, The Monero Project
// Copyright (c) 2018-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -415,41 +415,18 @@ Rectangle {
text: qsTr("Resolve") + translationManager.emptyString
visible: TxUtils.isValidOpenAliasAddress(address)
onClicked: {
var result = walletManager.resolveOpenAlias(address)
if (result) {
var parts = result.split("|")
if (parts.length == 2) {
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
if (parts[0] === "true") {
if (address_ok) {
// prepend openalias to description
descriptionLine.text = descriptionLine.text ? address + " " + descriptionLine.text : address
descriptionCheckbox.checked = true
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
}
else
oa_message(qsTr("No valid address found at this OpenAlias address"))
}
else if (parts[0] === "false") {
if (address_ok) {
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
}
else
{
oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
}
}
else {
oa_message(qsTr("Internal error"))
}
const response = TxUtils.handleOpenAliasResolution(address, descriptionLine.text);
if (response) {
if (response.message) {
oa_message(response.message);
}
else {
oa_message(qsTr("Internal error"))
if (response.address) {
recipientRepeater.itemAt(index).children[1].children[0].text = response.address;
}
if (response.description) {
descriptionLine.text = response.description;
descriptionCheckbox.checked = true;
}
}
else {
oa_message(qsTr("No address found"))
}
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -259,6 +259,17 @@ Rectangle {
}
}
function clearFields() {
checkProofAddressLine.text = ""
checkProofMessageLine.text = ""
checkProofSignatureLine.text = ""
checkProofTxIdLine.text = ""
getProofAddressLine.text = ""
getProofMessageLine.text = ""
getProofTxIdLine.text = ""
getReserveProofAmtLine.text = ""
}
function onPageCompleted() {
console.log("TxKey page loaded");

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -31,6 +31,8 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import moneroComponents.Wallet 1.0
import "../../js/Utils.js" as Utils
import "../../js/Windows.js" as Windows
import "../../components" as MoneroComponents
@@ -155,6 +157,28 @@ Rectangle {
onMoved: persistentSettings.lockOnUserInActivityInterval = value
}
MoneroComponents.CheckBox {
id: backgroundSyncCheckbox
visible: !!currentWallet && !currentWallet.isHwBacked() && !appWindow.viewOnly
checked: appWindow.backgroundSyncType != Wallet.BackgroundSync_Off
text: qsTr("Sync in the background when locked") + translationManager.emptyString
toggleOnClick: false
onClicked: {
if (currentWallet && appWindow) {
appWindow.showProcessingSplash(qsTr("Updating settings..."))
// TODO: add support for custom background password option
var newBackgroundSyncType = Wallet.BackgroundSync_Off
if (currentWallet.getBackgroundSyncType() === Wallet.BackgroundSync_Off)
newBackgroundSyncType = Wallet.BackgroundSync_ReusePassword
// TODO: don't keep the wallet password in memory on the appWindow
// https://github.com/monero-project/monero-gui/issues/1537#issuecomment-410055329
currentWallet.setupBackgroundSync(newBackgroundSyncType, appWindow.walletPassword)
}
}
}
MoneroComponents.CheckBox {
checked: persistentSettings.askStopLocalNode
onClicked: persistentSettings.askStopLocalNode = !persistentSettings.askStopLocalNode

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2024, The Monero Project
//
// All rights reserved.
//
@@ -138,9 +138,19 @@ Rectangle {
inputDialog.onAcceptedCallback = function() {
var txid = inputDialog.inputText.trim();
if (currentWallet.scanTransactions([txid])) {
updateBalance();
appWindow.showStatusMessage(qsTr("Transaction successfully scanned"), 3);
} else {
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
console.error("Error: ", currentWallet.errorString);
if (currentWallet.errorString == "The wallet has already seen 1 or more recent transactions than the scanned tx") {
informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("The wallet has already seen 1 or more recent transactions than the scanned transaction.\n\nIn order to rescan the transaction, you can re-sync your wallet by resetting the wallet restore height in the Settings > Info page. Make sure to use a restore height from before your wallet's earliest transaction.") + translationManager.emptyString;
informationPopup.icon = StandardIcon.Critical
informationPopup.onCloseCallback = null
informationPopup.open();
} else {
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
}
}
}
inputDialog.onRejectedCallback = null;

11
qml.qrc
View File

@@ -64,7 +64,7 @@
<file>lang/flags/cz.png</file>
<file>lang/flags/dk.png</file>
<file>lang/flags/eg.png</file>
<file>lang/flags/esperanto.png</file>
<file>lang/flags/eo.png</file>
<file>lang/flags/fi.png</file>
<file>lang/flags/fr.png</file>
<file>lang/flags/de.png</file>
@@ -281,8 +281,13 @@
<file>images/ledgerNanoS.png</file>
<file>images/ledgerNanoSPlus.png</file>
<file>images/ledgerNanoX.png</file>
<file>images/trezor.png</file>
<file>images/trezor@2x.png</file>
<file>images/ledgerNanoGen5.png</file>
<file>images/ledgerStax.png</file>
<file>images/ledgerFlex.png</file>
<file>images/trezor3.png</file>
<file>images/trezor5.png</file>
<file>images/trezorT.png</file>
<file>images/trezorT@2x.png</file>
<file>qtquickcontrols2.conf</file>
<file>images/write-down.png</file>
<file>images/write-down-white.png</file>

View File

@@ -38,9 +38,6 @@
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>NSRequiresAquaSystemAppearance</key>
<string>True</string>
<key>CFBundleURLTypes</key>
<array>
<dict>

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Monero GUI
GenericName=Monero-GUI
Comment=Monero GUI
Exec=monero-wallet-gui
Type=Application
Terminal=false
Categories=Network;Qt;Finance;Office;
Icon=org.getmonero.Monero
StartupNotify=true

Some files were not shown because too many files have changed in this diff Show More