213 Commits

Author SHA1 Message Date
62545d1689 Merge pull request 'Update dependency @fontsource/roboto to ^5.2.8' () from renovate/fontsource-roboto-5.x into master 2025-09-19 00:33:48 +00:00
a8951888b8 Update dependency @fontsource/roboto to ^5.2.8 2025-09-18 00:34:45 +00:00
abaf7b163c Merge pull request 'Update Rust crate serde to 1.0.225' () from renovate/serde-1.x into master 2025-09-18 00:34:40 +00:00
6f683a65fb Update Rust crate serde to 1.0.225 2025-09-17 00:34:18 +00:00
b297f2de2d Merge pull request 'Update dependency react-easy-crop to ^5.5.1' () from renovate/react-easy-crop-5.x into master 2025-09-17 00:34:10 +00:00
5ed6aa0567 Update dependency react-easy-crop to ^5.5.1 2025-09-16 00:34:11 +00:00
3857503e2d Merge pull request 'Update dependency @fontsource/roboto to ^5.2.7' () from renovate/fontsource-roboto-5.x into master 2025-09-16 00:34:05 +00:00
41e0022c1f Update dependency @fontsource/roboto to ^5.2.7 2025-09-15 00:34:46 +00:00
2748206ca6 Merge pull request 'Update dependency @mui/x-data-grid to ^8.11.2' () from renovate/mui-x-data-grid-8.x into master 2025-09-15 00:34:40 +00:00
3813949bc5 Update dependency @mui/x-data-grid to ^8.11.2 2025-09-14 00:35:06 +00:00
d93f198f98 Merge pull request 'Update dependency @types/react to ^19.1.13' () from renovate/react into master 2025-09-14 00:34:52 +00:00
1264e2a636 Update dependency @types/react to ^19.1.13 2025-09-13 00:35:33 +00:00
99c7253619 Merge pull request 'Update dependency @eslint/js to ^9.35.0' () from renovate/eslint-js-9.x into master 2025-09-13 00:35:27 +00:00
167d90a4b9 Update dependency @eslint/js to ^9.35.0 2025-09-12 00:34:32 +00:00
f983a22eb8 Merge pull request 'Update dependency @mui/x-tree-view to ^8.11.2' () from renovate/mui-x-tree-view-8.x into master 2025-09-12 00:34:20 +00:00
ffae610848 Update dependency @mui/x-tree-view to ^8.11.2 2025-09-11 00:33:36 +00:00
6989b1ab92 Merge pull request 'Update Rust crate thiserror to 2.0.16' () from renovate/thiserror-2.x into master 2025-09-11 00:33:29 +00:00
77e72635bf Update Rust crate thiserror to 2.0.16 2025-09-10 00:34:00 +00:00
e9dca75d1e Merge pull request 'Update Rust crate chrono to 0.4.42' () from renovate/chrono-0.x into master 2025-09-10 00:33:30 +00:00
5893fde734 Update Rust crate chrono to 0.4.42 2025-09-09 00:34:14 +00:00
4a51ef08a9 Merge pull request 'Update Rust crate serde_json to 1.0.143' () from renovate/serde_json-1.x into master 2025-09-09 00:34:06 +00:00
7f106d042a Update Rust crate serde_json to 1.0.143 2025-09-08 00:35:14 +00:00
80396a17d0 Merge pull request 'Update Rust crate log to 0.4.28' () from renovate/log-0.x into master 2025-09-08 00:34:04 +00:00
04640caa5c Update Rust crate log to 0.4.28 2025-09-07 00:35:05 +00:00
975ac224d4 Merge pull request 'Update Rust crate image to 0.25.8' () from renovate/image-0.x into master 2025-09-07 00:33:55 +00:00
7e4f5cee9d Update Rust crate image to 0.25.8 2025-09-06 00:34:44 +00:00
bf0e5e9e4f Merge pull request 'Update dependency @mui/x-tree-view to ^8.11.1' () from renovate/mui-x-tree-view-8.x into master 2025-09-06 00:34:35 +00:00
2b8955475d Update dependency @mui/x-tree-view to ^8.11.1 2025-09-05 00:20:37 +00:00
bcfbf61c6a Merge pull request 'Update Rust crate clap to 4.5.47' () from renovate/clap-4.x into master 2025-09-05 00:20:29 +00:00
0506e72d31 Update Rust crate clap to 4.5.47 2025-09-04 00:27:12 +00:00
f82f920046 Merge pull request 'Update dependency @mui/lab to ^7.0.0-beta.17' () from renovate/mui-lab-7.x into master 2025-09-04 00:27:05 +00:00
5b31e50ff6 Update dependency @mui/lab to ^7.0.0-beta.17 2025-09-03 00:26:39 +00:00
93987e30cf Merge pull request 'Update Rust crate redis to 0.32.5' () from renovate/redis-0.x into master 2025-09-03 00:26:33 +00:00
60e4ca93c7 Update Rust crate redis to 0.32.5 2025-09-02 00:27:05 +00:00
71cb01c7fc Merge pull request 'Update dependency jspdf to ^3.0.2' () from renovate/jspdf-3.x into master 2025-09-02 00:25:52 +00:00
7599881cfe Update dependency jspdf to ^3.0.2 2025-09-01 00:26:02 +00:00
12f298ef56 Merge pull request 'Update dependency dayjs to ^1.11.18' () from renovate/dayjs-1.x into master 2025-09-01 00:25:48 +00:00
866ee01bb1 Update dependency dayjs to ^1.11.18 2025-08-31 00:25:59 +00:00
7a585efd8a Merge pull request 'Update dependency @mui/x-tree-view to ^8.11.0' () from renovate/mui-x-tree-view-8.x into master 2025-08-31 00:25:54 +00:00
935ab75d5b Update dependency @mui/x-tree-view to ^8.11.0 2025-08-30 00:26:28 +00:00
1d661fb4d8 Merge pull request 'Update react' () from renovate/react into master 2025-08-30 00:26:17 +00:00
849d9aba82 Update react 2025-08-29 00:27:19 +00:00
a435d4623f Fix theme issue 2025-08-28 08:34:56 +02:00
4e4fa37b3b Fix build issue 2025-08-28 08:31:25 +02:00
0540f515ec Fix cargo clippy issues 2025-08-28 08:15:50 +02:00
6e53486832 Merge pull request 'Update Rust crate mailchecker to 6.0.18' () from renovate/mailchecker-6.x into master 2025-08-26 00:25:43 +00:00
44d09b54e8 Update Rust crate mailchecker to 6.0.18 2025-08-25 00:26:14 +00:00
1ae44942b0 Merge pull request 'Update dependency @types/react to ^19.1.11' () from renovate/react into master 2025-08-24 00:26:10 +00:00
6a60c43782 Update dependency @types/react to ^19.1.11 2025-08-23 00:27:00 +00:00
4c97e7a6f4 Merge pull request 'Update Rust crate lettre to 0.11.18' () from renovate/lettre-0.x into master 2025-08-22 00:26:12 +00:00
cd5f453172 Update Rust crate lettre to 0.11.18 2025-08-21 00:26:33 +00:00
83cfcbb237 Merge pull request 'Update Rust crate bcrypt to 0.17.1' () from renovate/bcrypt-0.x into master 2025-08-20 00:26:28 +00:00
1a0bf0caee Update Rust crate bcrypt to 0.17.1 2025-08-19 00:26:30 +00:00
a0c82ccca2 Merge pull request 'Update Rust crate clap to 4.5.45' () from renovate/clap-4.x into master 2025-08-18 00:25:41 +00:00
33f549b081 Update Rust crate clap to 4.5.45 2025-08-17 00:26:44 +00:00
24de257218 Merge pull request 'Update Rust crate anyhow to 1.0.99' () from renovate/anyhow-1.x into master 2025-08-16 00:25:37 +00:00
33d422627f Update Rust crate anyhow to 1.0.99 2025-08-15 00:26:41 +00:00
93da051599 Merge pull request 'Update dependency @types/react to ^19.1.10' () from renovate/react into master 2025-08-14 00:26:07 +00:00
20b50d7040 Update dependency @types/react to ^19.1.10 2025-08-13 00:26:04 +00:00
f4949e1b89 Merge pull request 'Update fullcalendar to ^6.1.19' () from renovate/fullcalendar into master 2025-08-12 00:26:00 +00:00
3f517378a1 Update fullcalendar to ^6.1.19 2025-08-11 00:26:41 +00:00
7093979fd1 Merge pull request 'Update Rust crate clap to 4.5.43' () from renovate/clap-4.x into master 2025-08-10 00:26:04 +00:00
3b39a0ca15 Update Rust crate clap to 4.5.43 2025-08-09 00:26:05 +00:00
f706a9e9b8 Merge pull request 'Update dependency @mui/lab to ^7.0.0-beta.16' () from renovate/mui-lab-7.x into master 2025-08-08 00:14:24 +00:00
440d5b14f1 Update dependency @mui/lab to ^7.0.0-beta.16 2025-08-07 00:13:59 +00:00
99e8220a52 Merge pull request 'Update Rust crate clap to 4.5.42' () from renovate/clap-4.x into master 2025-08-06 00:13:08 +00:00
748a2e808b Update Rust crate clap to 4.5.42 2025-08-05 00:13:33 +00:00
3114971e3e Merge pull request 'Update dependency @mui/x-date-pickers to ^8.9.2' () from renovate/mui-x-date-pickers-8.x into master 2025-08-04 00:13:58 +00:00
aa45dd02c5 Update dependency @mui/x-date-pickers to ^8.9.2 2025-08-03 00:14:38 +00:00
aeb3769301 Merge pull request 'Update dependency @mui/x-data-grid to ^8.9.2' () from renovate/mui-x-data-grid-8.x into master 2025-08-02 00:15:35 +00:00
76d3b03b39 Update dependency @mui/x-data-grid to ^8.9.2 2025-08-01 00:17:14 +00:00
086a196d39 Merge pull request 'Update react' () from renovate/react into master 2025-07-31 00:13:31 +00:00
dac69c011f Update react 2025-07-30 00:13:00 +00:00
56701a66d8 Merge pull request 'Update dependency @eslint/js to ^9.32.0' () from renovate/eslint-js-9.x into master 2025-07-26 00:14:57 +00:00
3dcda6262f Update dependency @eslint/js to ^9.32.0 2025-07-26 00:14:55 +00:00
afa08c1fa1 Merge pull request 'Update dependency vite to ^7.0.6' () from renovate/vite-7.x into master 2025-07-25 00:15:23 +00:00
12bb83cf51 Update dependency vite to ^7.0.6 2025-07-25 00:15:21 +00:00
ecaa393574 Merge pull request 'Update Rust crate zip to v4' () from renovate/zip-4.x into master 2025-07-24 00:15:30 +00:00
1658e99c5a Update Rust crate zip to v4 2025-07-24 00:15:26 +00:00
f55df9c7b0 Merge pull request 'Update Node.js to v24' () from renovate/node-24.x into master 2025-07-24 00:15:01 +00:00
e9bdce07c6 Update Node.js to v24 2025-07-24 00:14:50 +00:00
986f6c0380 Merge pull request 'Update dependency vite to v7' () from renovate/vite-7.x into master 2025-07-23 00:15:08 +00:00
ccd5d7694c Update dependency vite to v7 2025-07-23 00:14:58 +00:00
96f2b29d50 Merge pull request 'Update dependency filesize to v11' () from renovate/filesize-11.x into master 2025-07-23 00:14:57 +00:00
eaad9dbb24 Update dependency filesize to v11 2025-07-23 00:14:52 +00:00
bec3ac3482 Merge pull request 'Update dependency typescript-eslint to ^8.38.0' () from renovate/typescript-eslint-8.x into master 2025-07-22 00:17:53 +00:00
cff4345e01 Update dependency typescript-eslint to ^8.38.0 2025-07-22 00:17:41 +00:00
b2eaf596c0 Merge pull request 'Update dependency @mui/x-data-grid to ^8.9.1' () from renovate/mui-x-data-grid-8.x into master 2025-07-22 00:17:08 +00:00
4d6bb465c8 Update dependency @mui/x-data-grid to ^8.9.1 2025-07-22 00:16:58 +00:00
a82ce56e1a Merge pull request 'Update dependency @vitejs/plugin-react to ^4.7.0' () from renovate/vitejs-plugin-react-4.x into master 2025-07-21 00:15:11 +00:00
f7abeddec5 Update dependency @vitejs/plugin-react to ^4.7.0 2025-07-21 00:15:08 +00:00
15d56555dc Merge pull request 'Update Rust crate rand to 0.9.2' () from renovate/rand-0.x into master 2025-07-21 00:14:50 +00:00
2b45ee25b8 Update Rust crate rand to 0.9.2 2025-07-21 00:14:48 +00:00
9240f68827 Merge pull request 'Update dependency @mui/x-date-pickers to ^8.9.0' () from renovate/mui-x-date-pickers-8.x into master 2025-07-20 00:13:51 +00:00
687bd6d2fc Update dependency @mui/x-date-pickers to ^8.9.0 2025-07-20 00:13:45 +00:00
3433ca2a5a Merge pull request 'Update Rust crate zip to 2.6.1' () from renovate/zip-2.x into master 2025-07-19 00:15:30 +00:00
8030aab86f Merge pull request 'Update dependency @mui/x-data-grid to v8' () from renovate/mui-x-data-grid-8.x into master 2025-07-19 00:15:29 +00:00
86a540063b Merge pull request 'Update Rust crate serde_json to 1.0.141' () from renovate/serde_json-1.x into master 2025-07-19 00:15:26 +00:00
6a80fa4aaa Update Rust crate serde_json to 1.0.141 2025-07-19 00:15:23 +00:00
5748baea55 Merge pull request 'Update dependency @mui/x-tree-view to v8' () from renovate/mui-x-tree-view-8.x into master 2025-07-18 00:32:53 +00:00
5c55de4c6c Update dependency @mui/x-tree-view to v8 2025-07-18 00:15:33 +00:00
a224a1dd02 Update dependency @mui/x-data-grid to v8 2025-07-18 00:15:26 +00:00
9a378ff4b5 Update Rust crate zip to 2.6.1 2025-07-18 00:15:21 +00:00
15848ef817 Merge pull request 'Update dependency @mui/x-date-pickers to v8' () from renovate/mui-x-date-pickers-8.x into master 2025-07-17 00:40:46 +00:00
e470b5ed5f Update dependency @mui/x-date-pickers to v8 2025-07-17 00:15:36 +00:00
fa255e0678 Merge pull request 'Update dependency typescript-eslint to ^8.37.0' () from renovate/typescript-eslint-8.x into master 2025-07-17 00:14:48 +00:00
b052ee3a60 Update dependency typescript-eslint to ^8.37.0 2025-07-16 00:14:24 +00:00
c3eab5cf69 Merge pull request 'Update Rust crate redis to 0.32.4' () from renovate/redis-0.x into master 2025-07-15 00:23:23 +00:00
4def0c49e4 Update Rust crate redis to 0.32.4 2025-07-15 00:14:33 +00:00
5e97304a0c Merge pull request 'Update Rust crate uuid to 1.17.0' () from renovate/uuid-1.x into master 2025-07-14 00:33:08 +00:00
3591e855a7 Merge pull request 'Update Rust crate tempfile to 3.20.0' () from renovate/tempfile-3.x into master 2025-07-14 00:29:14 +00:00
0a9dc2889c Update Rust crate uuid to 1.17.0 2025-07-14 00:14:47 +00:00
0939ef1fb9 Update Rust crate tempfile to 3.20.0 2025-07-14 00:14:42 +00:00
37640b847b Merge pull request 'Update dependency react-easy-crop to ^5.5.0' () from renovate/react-easy-crop-5.x into master 2025-07-13 00:27:24 +00:00
5a62c71f5e Merge pull request 'Update dependency eslint to ^9.31.0' () from renovate/eslint-9.x into master 2025-07-13 00:23:29 +00:00
5886816c14 Update dependency react-easy-crop to ^5.5.0 2025-07-13 00:14:07 +00:00
32c5f521e2 Update dependency eslint to ^9.31.0 2025-07-13 00:14:04 +00:00
6792258e9e Merge pull request 'Update dependency @eslint/js to ^9.31.0' () from renovate/eslint-js-9.x into master 2025-07-12 00:34:14 +00:00
332c3697b8 Merge pull request 'Update Rust crate diesel to 2.2.12' () from renovate/diesel-2.x into master 2025-07-12 00:30:14 +00:00
4ecc7b9ef9 Update dependency @eslint/js to ^9.31.0 2025-07-12 00:14:36 +00:00
5f39f7c133 Update Rust crate diesel to 2.2.12 2025-07-12 00:14:31 +00:00
cc1e7345c4 Merge pull request 'Update Rust crate serde_with to 3.14.0' () from renovate/serde_with-3.x into master 2025-07-11 00:35:39 +00:00
58c1fc27ed Merge pull request 'Update Rust crate redis to 0.32.3' () from renovate/redis-0.x into master 2025-07-11 00:33:39 +00:00
b26efa30cf Update Rust crate serde_with to 3.14.0 2025-07-11 00:15:07 +00:00
a98080ad32 Update Rust crate redis to 0.32.3 2025-07-11 00:15:02 +00:00
ae1b7f55d0 Merge pull request 'Update Rust crate actix-web to 4.11.0' () from renovate/actix-web-4.x into master 2025-07-10 00:41:25 +00:00
c291dbce70 Merge pull request 'Update Rust crate clap to 4.5.41' () from renovate/clap-4.x into master 2025-07-10 00:29:53 +00:00
0b93750363 Update Rust crate actix-web to 4.11.0 2025-07-10 00:15:21 +00:00
f42980b10e Update Rust crate clap to 4.5.41 2025-07-10 00:14:44 +00:00
c6f4879d0d Merge pull request 'Update react' () from renovate/react into master 2025-07-09 00:36:59 +00:00
029eabce7f Merge pull request 'Update materialui to ^7.2.0' () from renovate/materialui into master 2025-07-09 00:33:14 +00:00
881b01970b Update react 2025-07-09 00:14:43 +00:00
d403bb4bb0 Update materialui to ^7.2.0 2025-07-09 00:14:33 +00:00
3635f37c63 Merge pull request 'Update dependency eslint to ^9.30.1' () from renovate/eslint-9.x into master 2025-07-08 00:28:56 +00:00
3b26fd80b7 Merge pull request 'Update dependency @eslint/js to ^9.30.1' () from renovate/eslint-js-9.x into master 2025-07-08 00:24:43 +00:00
b6d070b842 Update dependency eslint to ^9.30.1 2025-07-08 00:14:26 +00:00
0d428ff3d2 Update dependency @eslint/js to ^9.30.1 2025-07-08 00:14:19 +00:00
fd0dc8df47 Merge pull request 'Update fullcalendar to ^6.1.18' () from renovate/fullcalendar into master 2025-07-07 00:29:24 +00:00
96fcc7e7f9 Merge pull request 'Update dependency react-qr-code to ^2.0.17' () from renovate/react-qr-code-2.x into master 2025-07-07 00:25:44 +00:00
782b4fa450 Update fullcalendar to ^6.1.18 2025-07-07 00:14:15 +00:00
8ebaa9bdea Update dependency react-qr-code to ^2.0.18 2025-07-07 00:14:12 +00:00
8d4449a116 Merge pull request 'Update dependency globals to ^16.3.0' () from renovate/globals-16.x into master 2025-07-07 00:14:07 +00:00
3e29908ee9 Update dependency globals to ^16.3.0 2025-07-06 00:14:26 +00:00
999d0052ca Merge pull request 'Update dependency @mui/x-data-grid to ^7.29.8' () from renovate/mui-x-data-grid-7.x into master 2025-07-05 00:26:18 +00:00
90ad80b84a Update dependency @mui/x-data-grid to ^7.29.8 2025-07-05 00:08:09 +00:00
9e14fcf4ba Update dependency @emotion/styled to ^11.14.1 2025-07-04 00:07:40 +00:00
776d24031b Fix cargo clippy issues 2025-07-03 08:28:00 +02:00
991a3340e5 Update materialui to ^7.1.2 2025-06-26 00:07:51 +00:00
012dc3eb3c Update dependency vite to ^6.3.5 2025-06-25 00:07:48 +00:00
3f43dea93c Update dependency @vitejs/plugin-react to ^4.6.0 2025-06-24 00:07:24 +00:00
8e7ce2f6bc Update dependency eslint to ^9.29.0 2025-06-23 00:18:28 +00:00
a1c047f936 Update dependency @vitejs/plugin-react to ^4.5.2 2025-06-22 00:18:27 +00:00
f3f7ebae35 Update dependency @eslint/js to ^9.29.0 2025-06-21 00:18:28 +00:00
60fd656b94 Update dependency @mui/lab to ^7.0.0-beta.14 2025-06-20 00:18:46 +00:00
9f25e39cca Update Rust crate diesel to 2.2.11 2025-06-19 00:19:09 +00:00
0c178daf55 Update Rust crate lettre to 0.11.17 2025-06-18 00:20:26 +00:00
8dbc5c452e Update dependency react-qr-code to ^2.0.16 2025-06-17 00:20:04 +00:00
e5ee0b4d77 Update Rust crate futures-util to 0.3.31 2025-06-16 00:20:26 +00:00
bc3bfe08c6 Update Rust crate clap to 4.5.40 2025-06-15 00:20:37 +00:00
f2d391a430 Update dependency react-easy-crop to ^5.4.2 2025-06-14 00:20:51 +00:00
764a7d94e3 Update dependency @mui/x-date-pickers to ^7.29.4 2025-06-13 00:20:53 +00:00
aea6a64896 Update dependency @mui/x-data-grid to ^7.29.6 2025-06-12 00:21:10 +00:00
9c728f312b Update dependency @mui/lab to ^7.0.0-beta.13 2025-06-11 00:20:57 +00:00
c7d4056dc3 Update dependency @fontsource/roboto to ^5.2.6 2025-06-10 00:21:11 +00:00
555e72ef22 Update dependency @eslint/js to ^9.28.0 2025-06-09 00:21:09 +00:00
f35926dfb6 Update dependency eslint to ^9.28.0 2025-06-07 00:20:32 +00:00
067ac5181b Fix cargo clippy issues 2025-06-06 06:03:38 +00:00
b83314f540 Update dependency @vitejs/plugin-react to ^4.4.1 2025-05-15 00:14:57 +00:00
3203d12aac Update dependency @mui/x-tree-view to ^7.29.1 2025-05-14 00:15:14 +00:00
fae4e144f4 Update Rust crate lettre to 0.11.16 2025-05-13 00:15:54 +00:00
8179c7a6d6 Update Rust crate clap to 4.5.38 2025-05-12 00:15:32 +00:00
a42b887a74 Update dependency @mui/x-date-pickers to ^7.29.3 2025-05-11 00:14:59 +00:00
84ed2c6754 Update dependency @mui/x-data-grid to ^7.29.3 2025-05-10 00:14:49 +00:00
126920b41f Update dependency @eslint/js to ^9.26.0 2025-05-09 00:14:51 +00:00
24fa207005 Update Rust crate sha2 to 0.10.9 2025-05-08 00:23:47 +00:00
40901c55db Update dependency @mui/lab to ^7.0.0-beta.12 2025-05-07 00:23:14 +00:00
fd870317dd Update Rust crate rand to 0.9.1 2025-05-06 00:23:48 +00:00
4f6d4abb43 Update Rust crate diesel to 2.2.10 2025-05-05 00:23:51 +00:00
94da037d55 Update Rust crate clap to 4.5.37 2025-05-04 00:23:47 +00:00
88e8c9bf05 Update Rust crate chrono to 0.4.41 2025-05-03 00:23:49 +00:00
40bbfd9adf Update Rust crate anyhow to 1.0.98 2025-05-02 00:18:54 +00:00
c803ccb212 Update materialui to ^7.0.2 2025-05-01 00:18:52 +00:00
db98ff4ed2 Update fullcalendar to ^6.1.17 2025-04-30 00:18:51 +00:00
44c54112b6 Update dependency typescript to ^5.8.3 2025-04-29 00:18:20 +00:00
cdcb86913f Update dependency react-qr-code to ^2.0.15 2025-04-28 00:18:14 +00:00
fcfe457514 Update dependency eslint-plugin-react-refresh to ^0.4.20 2025-04-27 00:18:08 +00:00
55745f5845 Update dependency eslint-plugin-react-hooks to ^5.2.0 2025-04-26 00:18:21 +00:00
2ee8bc337f Update dependency eslint to ^9.25.1 2025-04-25 00:18:28 +00:00
e441480bf7 Update dependency @mui/lab to ^7.0.0-beta.11 2025-04-24 00:18:50 +00:00
c84817d190 Update dependency @mdi/js to ^7.4.47 2025-04-23 00:18:05 +00:00
f615291950 Update dependency @eslint/js to ^9.25.1 2025-04-22 00:25:59 +00:00
b95aa90836 Update dependency @emotion/styled to ^11.14.0 2025-04-21 00:26:36 +00:00
22d2bbfc41 Update dependency @emotion/react to ^11.14.0 2025-04-20 00:25:55 +00:00
069ca185cc Remove temporary fix 2025-04-19 10:43:04 +02:00
9b8f2bd3cf Remove temporary fix 2025-04-19 10:42:39 +02:00
6c9a0db8d5 Update mui-color-input to v7.0.0 2025-04-19 10:38:16 +02:00
877b0c56b3 Update Rust crate redis to 0.29.5 2025-04-08 00:26:32 +00:00
25cae9b006 Perform more proper sign out operation 2025-04-07 22:00:37 +02:00
fdd11e7eae Update Rust crate env_logger to 0.11.8 2025-04-06 00:32:41 +00:00
9bb93b72cc Update Rust crate diesel to 2.2.9 2025-04-05 00:32:38 +00:00
f82a788bb0 Update Rust crate clap to 4.5.35 2025-04-04 00:33:17 +00:00
2e52958e64 Update Rust crate serde_with to 3.12.0 2025-04-03 00:32:55 +00:00
18cf96d22c Update Rust crate rust_iso3166 to 0.1.14 2025-04-02 00:32:58 +00:00
fc63a2935f Update Rust crate lazy-regex to 3.4.1 2025-04-01 02:03:32 +00:00
c48807bf4b Update Rust crate diesel_migrations to 2.2.0 2025-03-31 20:49:05 +00:00
c896b2cc51 Update Rust crate clap to 4.5.34 2025-03-31 00:33:10 +00:00
5a0e720952 Update Rust crate anyhow to 1.0.97 2025-03-30 02:19:14 +00:00
8e2cd9824d Update Rust crate actix-multipart to 0.7.2 2025-03-29 22:55:15 +00:00
aabec5f0b8 Update Rust crate actix-cors to 0.7.1 2025-03-29 18:13:56 +00:00
a763568f6e Update renovate.json 2025-03-29 17:30:24 +00:00
8cbf1c5d5d Merge pull request 'Update dependency globals to v16' () from renovate/globals-16.x into master
Reviewed-on: 
2025-03-29 15:55:30 +00:00
79c3d669e4 Merge pull request 'Update node Docker tag to v23' () from renovate/node-23.x into master
Reviewed-on: 
2025-03-29 15:55:06 +00:00
b68c6f9ee5 Update node Docker tag to v23 2025-03-29 14:12:26 +00:00
30 changed files with 2502 additions and 1472 deletions

@@ -14,7 +14,7 @@ steps:
- cargo test
- name: app_deploy
image: node:22
image: node:24
environment:
AWS_ACCESS_KEY_ID:
from_secret: AWS_ACCESS_KEY_ID
@@ -24,7 +24,7 @@ steps:
commands:
# Build website
- cd geneit_app
- npm install --legacy-peer-deps # TODO : remove when mui-color-input is updated
- npm install
- GENERATE_SOURCEMAP=false npm run build
# Install AWS
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

File diff suppressed because it is too large Load Diff

@@ -10,47 +10,47 @@
"preview": "vite preview"
},
"dependencies": {
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@fontsource/roboto": "^5.2.5",
"@fullcalendar/core": "^6.1.15",
"@fullcalendar/daygrid": "^6.1.15",
"@fullcalendar/interaction": "^6.1.15",
"@fullcalendar/list": "^6.1.15",
"@fullcalendar/react": "^6.1.15",
"@mdi/js": "^7.2.96",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@fontsource/roboto": "^5.2.8",
"@fullcalendar/core": "^6.1.19",
"@fullcalendar/daygrid": "^6.1.19",
"@fullcalendar/interaction": "^6.1.19",
"@fullcalendar/list": "^6.1.19",
"@fullcalendar/react": "^6.1.19",
"@mdi/js": "^7.4.47",
"@mdi/react": "^1.6.1",
"@mui/icons-material": "^7.0.0",
"@mui/lab": "^7.0.0-beta.9",
"@mui/material": "^7.0.0",
"@mui/x-data-grid": "^7.28.2",
"@mui/x-date-pickers": "^7.28.2",
"@mui/x-tree-view": "^7.28.1",
"@mui/icons-material": "^7.2.0",
"@mui/lab": "^7.0.0-beta.17",
"@mui/material": "^7.2.0",
"@mui/x-data-grid": "^8.11.2",
"@mui/x-date-pickers": "^8.9.2",
"@mui/x-tree-view": "^8.11.2",
"date-and-time": "^3.6.0",
"dayjs": "^1.11.13",
"dayjs": "^1.11.18",
"email-validator": "^2.0.4",
"filesize": "^10.1.6",
"jspdf": "^3.0.1",
"mui-color-input": "^6.0.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-easy-crop": "^5.4.1",
"react-qr-code": "^2.0.14",
"filesize": "^11.0.2",
"jspdf": "^3.0.2",
"mui-color-input": "^7.0.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-easy-crop": "^5.5.1",
"react-qr-code": "^2.0.18",
"react-router-dom": "^7.4.0",
"react-zoom-pan-pinch": "^3.7.0",
"svg2pdf.js": "^2.5.0"
},
"devDependencies": {
"@eslint/js": "^9.21.0",
"@types/react": "^19.0.12",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.3.4",
"eslint": "^9.21.0",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-react-refresh": "^0.4.19",
"globals": "^16.0.0",
"typescript": "^5.8.2",
"typescript-eslint": "^8.24.1",
"vite": "^6.2.3"
"@eslint/js": "^9.35.0",
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
"@vitejs/plugin-react": "^4.7.0",
"eslint": "^9.31.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.3.0",
"typescript": "^5.8.3",
"typescript-eslint": "^8.38.0",
"vite": "^7.0.6"
}
}

@@ -137,8 +137,10 @@ function UsersTable(p: {
<GridActionsCellItem
icon={<SaveIcon />}
label="Save"
sx={{
color: "primary.main",
material={{
sx: {
color: 'primary.main',
},
}}
onClick={handleSaveClick(id)}
/>,

@@ -43,9 +43,13 @@ export function BaseAuthenticatedPage(): React.ReactElement {
setAnchorEl(null);
};
const signOut = () => {
const signOut = async () => {
handleCloseMenu();
AuthApi.SignOut();
try {
await AuthApi.SignOut();
} catch (e) {
console.error(e);
}
navigate("/");
auth.setSignedIn(false);
};

File diff suppressed because it is too large Load Diff

@@ -6,38 +6,38 @@ edition = "2024"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
log = "0.4.27"
env_logger = "0.11.7"
clap = { version = "4.5.32", features = ["derive", "env"] }
log = "0.4.28"
env_logger = "0.11.8"
clap = { version = "4.5.47", features = ["derive", "env"] }
lazy_static = "1.5.0"
lazy-regex = "3.3.0"
anyhow = "1.0.87"
actix-web = "4.10.2"
actix-cors = "0.7.0"
actix-multipart = "0.7.0"
lazy-regex = "3.4.1"
anyhow = "1.0.99"
actix-web = "4.11.0"
actix-cors = "0.7.1"
actix-multipart = "0.7.2"
actix-remote-ip = "0.1.0"
futures-util = "0.3.30"
diesel = { version = "2.2.8", features = ["postgres"] }
diesel_migrations = "2.1.0"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
mailchecker = "6.0.17"
redis = "0.29.2"
lettre = "0.11.15"
rand = "0.9.0"
bcrypt = "0.17.0"
futures-util = "0.3.31"
diesel = { version = "2.2.12", features = ["postgres"] }
diesel_migrations = "2.2.0"
serde = { version = "1.0.225", features = ["derive"] }
serde_json = "1.0.143"
mailchecker = "6.0.18"
redis = "0.32.5"
lettre = "0.11.18"
rand = "0.9.2"
bcrypt = "0.17.1"
light-openid = "1.0.4"
thiserror = "2.0.12"
serde_with = "3.8.1"
rust_iso3166 = "0.1.12"
thiserror = "2.0.16"
serde_with = "3.14.0"
rust_iso3166 = "0.1.14"
rust-s3 = "0.35.1"
sha2 = "0.10.8"
image = "0.25.6"
uuid = { version = "1.16.0", features = ["v4"] }
sha2 = "0.10.9"
image = "0.25.8"
uuid = { version = "1.17.0", features = ["v4"] }
httpdate = "1.0.3"
zip = "2.5.0"
zip = "4.3.0"
mime_guess = "2.0.5"
tempfile = "3.19.1"
tempfile = "3.20.0"
base64 = "0.22.1"
ical = { version = "0.11.0", features = ["generator", "ical", "vcard"] }
chrono = "0.4.40"
chrono = "0.4.42"

@@ -21,7 +21,7 @@ where
if POSTGRES_CONNECTION.with(|i| i.borrow().is_none()) {
let database_url = AppConfig::get().db_connection_chain();
let conn = PgConnection::establish(&database_url)
.unwrap_or_else(|_| panic!("Error connecting to {}", database_url));
.unwrap_or_else(|_| panic!("Error connecting to {database_url}"));
POSTGRES_CONNECTION.with(|i| *i.borrow_mut() = Some(conn))
}
@@ -38,7 +38,7 @@ where
POSTGRES_CONNECTION.with(|i| *i.borrow_mut() = None)
}
log::error!("Database query error! {:?}", e);
log::error!("Database query error! {e:?}");
Err(e.into())
}
}

@@ -30,7 +30,7 @@ pub async fn create_bucket_if_required() -> anyhow::Result<()> {
log::warn!("The bucket does not seem to exists, trying to create it!")
}
Err(e) => {
log::error!("Got unexpected error when querying bucket info: {}", e);
log::error!("Got unexpected error when querying bucket info: {e}");
return Err(BucketServiceError::FailedFetchBucketInfo.into());
}
}

@@ -34,18 +34,16 @@ impl AccommodationRequest {
}
accommodation.name = self.name;
if let Some(d) = &self.description {
if !c.accommodation_description_len.validate(d) {
if let Some(d) = &self.description
&& !c.accommodation_description_len.validate(d) {
return Err(AccommodationListControllerErr::InvalidDescriptionLength.into());
}
}
accommodation.description.clone_from(&self.description);
if let Some(c) = &self.color {
if !lazy_regex::regex!("[a-fA-F0-9]{6}").is_match(c) {
if let Some(c) = &self.color
&& !lazy_regex::regex!("[a-fA-F0-9]{6}").is_match(c) {
return Err(AccommodationListControllerErr::MalformedColor.into());
}
}
accommodation.color.clone_from(&self.color);
accommodation.need_validation = self.need_validation;

@@ -79,10 +79,7 @@ pub async fn request_reset_password(
match users_service::get_by_mail(&req.mail).await {
Ok(mut user) => users_service::request_reset_password(&mut user).await?,
Err(e) => {
log::error!(
"Could not locate user account {}! (error silently ignored)",
e
);
log::error!("Could not locate user account {e}! (error silently ignored)");
}
}
@@ -122,7 +119,7 @@ pub async fn check_reset_password_token(
RatedAction::CheckResetPasswordTokenFailed,
)
.await?;
log::error!("Password reset token could not be used: {}", e);
log::error!("Password reset token could not be used: {e}");
return Ok(HttpResponse::NotFound().finish());
}
};
@@ -156,7 +153,7 @@ pub async fn reset_password(remote_ip: RemoteIP, req: web::Json<ResetPasswordBod
RatedAction::CheckResetPasswordTokenFailed,
)
.await?;
log::error!("Password reset token could not be used: {}", e);
log::error!("Password reset token could not be used: {e}");
return Ok(HttpResponse::NotFound().finish());
}
};
@@ -196,7 +193,7 @@ pub async fn password_login(remote_ip: RemoteIP, req: web::Json<PasswordLoginQue
let user = match users_service::get_by_mail(&req.mail).await {
Ok(u) => u,
Err(e) => {
log::error!("Auth failed: could not find account by mail! {}", e);
log::error!("Auth failed: could not find account by mail! {e}");
rate_limiter_service::record_action(remote_ip.0, RatedAction::FailedPasswordLogin)
.await?;
return Ok(HttpResponse::Unauthorized().json("Invalid credentials"));

@@ -48,23 +48,20 @@ impl CoupleRequest {
}
}
if let Some(husband) = self.husband {
if !members_service::exists(couple.family_id(), husband).await? {
if let Some(husband) = self.husband
&& !members_service::exists(couple.family_id(), husband).await? {
return Err(CoupleControllerErr::HusbandNotExisting.into());
}
}
if let Some(d) = &self.wedding {
if !d.check() {
if let Some(d) = &self.wedding
&& !d.check() {
return Err(CoupleControllerErr::MalformedDateOfWedding.into());
}
}
if let Some(d) = &self.divorce {
if !d.check() {
if let Some(d) = &self.divorce
&& !d.check() {
return Err(CoupleControllerErr::MalformedDateOfDivorce.into());
}
}
couple.set_wife(self.wife);
couple.set_husband(self.husband);

@@ -183,9 +183,9 @@ pub async fn import_family(
}
if let Err(e) = req_member_data.to_member(member).await {
log::error!("Error while processing import (member {:?}) - {e}", req_id);
log::error!("Error while processing import (member {req_id:?}) - {e}");
return Ok(
HttpResponse::BadRequest().json(format!("Failed to validate member {:?}!", req_id))
HttpResponse::BadRequest().json(format!("Failed to validate member {req_id:?}!"))
);
}

@@ -95,11 +95,10 @@ fn check_opt_str_val(
c: SizeConstraint,
err: MemberControllerErr,
) -> anyhow::Result<()> {
if let Some(v) = val {
if !c.validate(v) {
if let Some(v) = val
&& !c.validate(v) {
return Err(err.into());
}
}
Ok(())
}
@@ -151,11 +150,10 @@ impl MemberRequest {
MemberControllerErr::MalformedEmailAddress,
)?;
if let Some(mail) = &self.email {
if !mailchecker::is_valid(mail) {
if let Some(mail) = &self.email
&& !mailchecker::is_valid(mail) {
return Err(MemberControllerErr::InvalidEmailAddress.into());
}
}
check_opt_str_val(
&self.phone,
@@ -187,23 +185,20 @@ impl MemberRequest {
MemberControllerErr::MalformedCountry,
)?;
if let Some(c) = &self.country {
if !countries_utils::is_code_valid(c) {
if let Some(c) = &self.country
&& !countries_utils::is_code_valid(c) {
return Err(MemberControllerErr::InvalidCountryCode.into());
}
}
if let Some(d) = &self.birth {
if !d.check() {
if let Some(d) = &self.birth
&& !d.check() {
return Err(MemberControllerErr::MalformedDateOfBirth.into());
}
}
if let Some(d) = &self.death {
if !d.check() {
if let Some(d) = &self.death
&& !d.check() {
return Err(MemberControllerErr::MalformedDateOfDeath.into());
}
}
check_opt_str_val(
&self.note,
@@ -221,11 +216,10 @@ impl MemberRequest {
}
}
if let Some(father) = self.father {
if !members_service::exists(member.family_id(), father).await? {
if let Some(father) = self.father
&& !members_service::exists(member.family_id(), father).await? {
return Err(MemberControllerErr::FatherNotExisting.into());
}
}
member.first_name = self.first_name;
member.last_name = self.last_name;

@@ -31,7 +31,7 @@ impl Display for HttpErr {
impl actix_web::error::ResponseError for HttpErr {
fn error_response(&self) -> HttpResponse<BoxBody> {
log::error!("Error while processing request! {}", self);
log::error!("Error while processing request! {self}");
HttpResponse::InternalServerError().body("Failed to execute request!")
}
}

@@ -36,16 +36,15 @@ async fn get_photo(id: &PhotoIdPath, full_size: bool, req: HttpRequest) -> HttpR
};
// Check if an upload is un-necessary
if let Some(c) = req.headers().get(header::IF_NONE_MATCH) {
if c.to_str().unwrap_or("") == hash {
if let Some(c) = req.headers().get(header::IF_NONE_MATCH)
&& c.to_str().unwrap_or("") == hash {
return Ok(HttpResponse::NotModified().finish());
}
}
if let Some(c) = req.headers().get(header::IF_MODIFIED_SINCE) {
let date_str = c.to_str().unwrap_or("");
if let Ok(date) = httpdate::parse_http_date(date_str) {
if date
if let Ok(date) = httpdate::parse_http_date(date_str)
&& date
.add(Duration::from_secs(1))
.duration_since(UNIX_EPOCH)
.unwrap()
@@ -55,7 +54,6 @@ async fn get_photo(id: &PhotoIdPath, full_size: bool, req: HttpRequest) -> HttpR
return Ok(HttpResponse::NotModified().finish());
}
}
}
let bytes = s3_connection::get_file(&match full_size {
true => photo.photo_path(),

@@ -75,7 +75,7 @@ impl FromRequest for FamilyAndAccommodationInPath {
Self::load_accommodation_from_path(family, accommodation_id)
.await
.map_err(|e| {
log::error!("Failed to extract accommodation ID from URL! {}", e);
log::error!("Failed to extract accommodation ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch accommodation information!")
})
})

@@ -85,7 +85,7 @@ impl FromRequest for FamilyAndAccommodationReservationCalendarInPath {
Self::load_calendar_from_path(family, accommodation_id)
.await
.map_err(|e| {
log::error!("Failed to extract calendar ID from URL! {}", e);
log::error!("Failed to extract calendar ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch calendar information!")
})
})

@@ -95,7 +95,7 @@ impl FromRequest for FamilyAndAccommodationReservationInPath {
Self::load_accommodation_reservation_from_path(family, reservation_id)
.await
.map_err(|e| {
log::error!("Failed to extract accommodation ID from URL! {}", e);
log::error!("Failed to extract accommodation ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch accommodation information!")
})
})

@@ -71,7 +71,7 @@ impl FromRequest for FamilyAndCoupleInPath {
FamilyAndCoupleInPath::load_couple_from_path(family, couple_id)
.await
.map_err(|e| {
log::error!("Failed to extract couple ID from URL! {}", e);
log::error!("Failed to extract couple ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch couple information!")
})
})

@@ -62,7 +62,7 @@ impl FromRequest for FamilyInPath {
FamilyInPath::load_family_from_path(&token, family_id)
.await
.map_err(|e| {
log::error!("Failed to extract family ID from URL! {}", e);
log::error!("Failed to extract family ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch family information!")
})
})

@@ -71,7 +71,7 @@ impl FromRequest for FamilyAndMemberInPath {
FamilyAndMemberInPath::load_member_from_path(family, member_id)
.await
.map_err(|e| {
log::error!("Failed to extract member ID from URL! {}", e);
log::error!("Failed to extract member ID from URL! {e}");
actix_web::error::ErrorNotFound("Could not fetch member information!")
})
})

@@ -43,7 +43,7 @@ impl User {
.as_deref()
.map(|hash| {
bcrypt::verify(password, hash).unwrap_or_else(|e| {
log::error!("Failed to validate password! {}", e);
log::error!("Failed to validate password! {e}");
false
})
})

@@ -125,13 +125,13 @@ async fn load_token_info(token: &LoginTokenValue) -> anyhow::Result<Option<Login
let token = match user_tokens.iter_mut().find(|t| t.key == key) {
Some(t) => t,
None => {
log::error!("Could not find token for key '{}' (missing token)", key);
log::error!("Could not find token for key '{key}' (missing token)");
return Ok(None);
}
};
if token.is_expired() {
log::error!("Could not find token for key '{}' (token expired)", key);
log::error!("Could not find token for key '{key}' (token expired)");
return Ok(None);
}
@@ -169,7 +169,7 @@ impl FromRequest for LoginToken {
let token = match load_token_info(&token).await {
Err(e) => {
log::error!("Failed to load auth token! {}", e);
log::error!("Failed to load auth token! {e}");
return Err(actix_web::error::ErrorPreconditionFailed(
"Failed to check auth token!",
));

@@ -27,7 +27,7 @@ pub async fn send_mail<D: Display>(to: &str, subject: &str, body: D) -> anyhow::
let mailer = mailer.build();
mailer.send(&email)?;
log::debug!("A mail was sent to {} (subject = {})", to, subject);
log::debug!("A mail was sent to {to} (subject = {subject})");
Ok(())
}

@@ -149,11 +149,10 @@ pub mod loop_detection {
impl LoopStack<'_> {
pub fn contains(&self, id: MemberID) -> bool {
if let Some(ls) = &self.prev {
if ls.contains(id) {
if let Some(ls) = &self.prev
&& ls.contains(id) {
return true;
}
}
self.curr == id
}
@@ -168,7 +167,7 @@ pub mod loop_detection {
None => false,
Some(id) => {
if curr_stack.contains(id) {
log::debug!("Loop detected! {:?}", curr_stack);
log::debug!("Loop detected! {curr_stack:?}");
return true;
}

@@ -64,7 +64,7 @@ fn redis_key(state: &str) -> String {
format!("oidc-state-{state}")
}
async fn load_provider_info(prov_id: &str) -> anyhow::Result<OpenIDClient> {
async fn load_provider_info(prov_id: &str) -> anyhow::Result<OpenIDClient<'_>> {
let prov = AppConfig::get()
.openid_providers()
.into_iter()

@@ -10,7 +10,6 @@ use crate::utils::string_utils::rand_str;
use crate::utils::time_utils::time;
use bcrypt::DEFAULT_COST;
use diesel::prelude::*;
use std::io::ErrorKind;
/// Get the information of a user, by its id
pub async fn get_by_id(id: UserID) -> anyhow::Result<User> {
@@ -25,8 +24,7 @@ pub async fn get_by_mail(mail: &str) -> anyhow::Result<User> {
/// Get the information of a user, by its password reset token
pub async fn get_by_pwd_reset_token(token: &str) -> anyhow::Result<User> {
if token.is_empty() {
return Err(anyhow::Error::from(std::io::Error::new(
ErrorKind::Other,
return Err(anyhow::Error::from(std::io::Error::other(
"Token is empty!",
)));
}
@@ -46,8 +44,7 @@ pub async fn get_by_pwd_reset_token(token: &str) -> anyhow::Result<User> {
/// Get the information of a user, by its account deletion token
pub async fn get_by_account_delete_token(token: &str) -> anyhow::Result<User> {
if token.is_empty() {
return Err(anyhow::Error::from(std::io::Error::new(
ErrorKind::Other,
return Err(anyhow::Error::from(std::io::Error::other(
"Token is empty!",
)));
}

@@ -5,7 +5,7 @@ pub fn sha256(bytes: &[u8]) -> String {
let mut hasher = Sha256::new();
hasher.update(bytes);
let h = hasher.finalize();
format!("{:x}", h)
format!("{h:x}")
}
/// Compute hash of a slice of bytes (sha512)
@@ -13,5 +13,5 @@ pub fn sha512(bytes: &[u8]) -> String {
let mut hasher = Sha512::new();
hasher.update(bytes);
let h = hasher.finalize();
format!("{:x}", h)
format!("{h:x}")
}

@@ -1,8 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
":automergeAll",
":enableVulnerabilityAlerts",
":ignoreUnstable"
]
"extends": ["local>renovate/presets"]
}