Commit graph

392 commits

Author SHA1 Message Date
NaiJi e560de58e7 feat: Implement DNS provider picker page 2022-12-30 07:25:18 +04:00
NaiJi 18d3039dc4 chore: Create infrastructure for Digital Ocean DNS provider
Also rename hardcoded cloudflare names from backend
2022-12-17 14:26:19 +04:00
NaiJi 899c84c54f chore: Rename Check step to Installation
It just feels more convenient tbh...
2022-11-30 19:04:04 +04:00
NaiJi 8c6b56f61d fix: Make improvements by Code Review 2022-11-23 11:55:28 +04:00
NaiJi a70e793360 chore: Merge master into digital-ocean 2022-11-22 16:10:00 +04:00
NaiJi 3ba2c6f731 feat: Add refresh indicator on Recovery Key page to support drag gestures 2022-11-21 17:17:27 +04:00
NaiJi b2a5d57a1d feat(initializing): Add description and back button to server type step 2022-11-20 14:48:08 +04:00
NaiJi b53bb6d4dd refactor: Remove 'unused' warnings 2022-11-18 11:33:28 +04:00
NaiJi 0c4da8eb9f refactor: Move all API factories into encapsulated static class
Because it's very hard to track all different provider factories created in different cubits, if users reset application config the previous factories stayed unchanged which would lead to unexpected behavior
2022-11-18 09:49:04 +04:00
NaiJi 51dc4c67b2 feat(recovery): Implement access recovery routing for server providers 2022-11-17 11:14:34 +04:00
NaiJi 0234278c2c refactor: Rename server.dart to server_api.dart
Because the class is called ServerApi, not just Server, it's totally not consistent with all other apis
2022-11-16 04:24:40 +04:00
NaiJi bde364dde1 fix(digital-ocean): Adjust charts rendering for digital ocean values 2022-11-16 04:12:49 +04:00
NaiJi 92b417a103 feat(digital-ocean): Implement metrics for Digital Ocean 2022-11-15 08:00:10 +04:00
NaiJi a7cbde663e refactor(server-api): Generalize and encapsulate server metrics endpoints 2022-11-12 22:11:14 +04:00
NaiJi 10bdd4c800 refactor(server-api): Make general server info polymorphic
Removing Hetzner type hardcode from server page and replacing it with generic String-based metadata container
2022-11-11 07:32:01 +04:00
NaiJi cdc47ecdb3 refactor(ui): Move all pop up dialogs into general utils function
To not import get_it everywhere and encapsulate all the related dirt into utils.
2022-11-09 22:43:05 +04:00
NaiJi 59d186a8af fix(volume): Change raw int to DiskSize object in volume endpoints
We already have an abstraction for size, there is no need to pass size value as raw numeric variables
2022-11-04 16:19:39 +04:00
NaiJi 8c053f50b0 chore: Merge master into digital-ocean 2022-11-02 18:45:36 +04:00
NaiJi 86b80156fd refactor: Generalize DKIM usage into DnsRecords
- Replace raw DKIM String object with a general DnsRecord structure
- Implement network utils for common operations with networking concepts and structures
- Implement initializing page pop up to re-try server deployment in case of a random networking error
2022-10-30 18:23:47 +04:00
NaiJi 93c58323b2 chore: Merge master into digital-ocean 2022-10-26 20:41:45 +04:00
NaiJi aa3dee585b chore(dart): Fix warnings that appeared at Dart 2.18 SDK 2022-10-26 20:26:09 +04:00
NaiJi 5ddbfcb342 chore: Merge master into digital-ocean 2022-10-25 12:22:34 +04:00
NaiJi 20e4d9565b fix(assets): Fix broken strings for network domain elements 2022-10-24 16:19:39 +04:00
NaiJi df9ec28d02 fix(initializing): Adjust server location and type list cards 2022-10-21 08:33:47 +04:00
inexcode e7bb1dc16e feat(timezone): Design the search bar for 'Select Timezone' page 2022-10-20 22:33:40 +03:00
NaiJi e36a94ded5 feat(timezone): Implement search bar for 'Select Timezone' page 2022-10-20 22:29:19 +03:00
NaiJi cb1fe6eafd fix(initializing): Make provider and server type picking work 2022-10-20 18:44:29 +04:00
NaiJi eebff47d0c chore: Merge master into digital-ocean 2022-10-20 12:40:16 +04:00
NaiJi b40ab17197 fix(initializing): Move bloc provider from provider picker to initialization page 2022-10-19 18:43:01 +04:00
NaiJi 556df5aadc fix(assets): Remove string hardcode from domain setup page 2022-10-19 17:46:16 +04:00
NaiJi ea85ce6064 refactor: Apply formatting 2022-10-18 05:38:26 +00:00
NaiJi f5a75e6eb5 feat(initializing): Implement additional server type field for server installation 2022-10-16 01:16:47 +00:00
NaiJi 8a93af2b06 fix(region): Move region settings for provider api to factory 2022-10-16 00:51:10 +00:00
NaiJi 72760e7980 feat(initializing): Implement server type selection for initialization page 2022-10-15 21:51:37 +00:00
NaiJi fe820ef5be feat(initializing): Implement location selection step for initializing page 2022-10-15 19:49:31 +00:00
NaiJi 79e9334aca feat(pricing): Replace raw double with simple type Price 2022-10-12 01:42:45 +00:00
NaiJi 70330c59ab feat(digital-ocean): Implement provider picker pages 2022-10-11 20:11:13 +00:00
NaiJi a305e0b53f fix(assets): Change naming to conventional and consistent 'username' 2022-10-08 19:28:07 +00:00
NaiJi f4e588c435 fix(user): Replace cubit context read with state variable on login page 2022-10-08 19:22:08 +00:00
NaiJi 465af52350 Merge branch 'master' into validations 2022-10-08 19:18:33 +00:00
NaiJi c4f3b76414 fix(validations): Make validations and errors text more specific 2022-10-08 16:41:19 +00:00
NaiJi 7bad11967a refactor(job): Implement polymorphic predicate for job accessibility
Now every job type can impement canAddTo function to make JobsCubit know whether it can be applied or not
2022-10-07 17:50:18 +00:00
NaiJi db2f5c1342 fix(job): Fix server settings toogles not creating upgrade server job 2022-10-07 16:36:17 +00:00
NaiJi 699e2f676f refactor(service): Get rid of legacy common enums 2022-10-05 01:41:48 +03:00
Inex Code 129eb76a04 feat: MD3 app bars
Fixed #123 spent @2h
2022-10-04 13:36:37 +03:00
Inex Code c1cba41b7b fix(i18l): Un-hardcode service status descriptions 2022-10-04 11:05:26 +03:00
NaiJi d36c8e987d Completely refactor language asset files 2022-10-04 02:32:35 +03:00
NaiJi bb6d615d37 Fix 'start migration button' subtitle 2022-09-19 03:48:59 +03:00
Inex Code 10891881ae Service migrations 2022-09-19 03:21:08 +03:00
NaiJi d6d7a0dcb6 Implement rebuild server job for settings page 2022-09-19 03:00:40 +03:00
Inex Code 2a4c691f1e Pre-release testing bug fixes 2022-09-19 01:11:26 +03:00
Inex Code 900e07f364 Implement user password reset 2022-09-18 23:25:26 +03:00
NaiJi 35a617065e Implement root page pushing after extending volume button 2022-09-18 19:31:22 +03:00
NaiJi d9b82b1250 Implement volume extending button 2022-09-18 19:26:55 +03:00
Inex Code 8017c5ab4c Show services in Server Storage screen 2022-09-18 19:06:17 +03:00
Inex Code cb660eb2bb Refactor server_settings.dart to use vanilla ListTiles 2022-09-18 17:17:13 +03:00
NaiJi 39358a827f Implement migrate to binds logic 2022-09-18 17:05:41 +03:00
Inex Code 5ca4ee27e3 Introduce ListTileOnSurfaceVariant and refactor TextDetails on server details screen. 2022-09-18 16:24:17 +03:00
Inex Code 3d34f0bb55 Fix screens when no server initialized 2022-09-16 17:14:29 +03:00
Inex Code c84d16d8b7 Move files related to storage 2022-09-16 16:49:53 +03:00
Inex Code ae0295d959 Add storage usage to service screen, formatting 2022-09-16 16:36:51 +03:00
Inex Code 641e329725 Move DiskStatus to the server volume cubit 2022-09-16 14:28:17 +03:00
Inex Code 61d049118f Add animation for graph loading 2022-09-16 13:36:26 +03:00
Inex Code 5ca58a0cd3 Refactor network chart 2022-09-16 12:44:15 +03:00
NaiJi 11e58981b5 Implement migration process page 2022-09-16 12:08:31 +03:00
NaiJi e3d7f2b3d7 Fix ServerDetailsCubit exception 2022-09-16 11:06:27 +03:00
Inex Code 6e9bde827a Fix clipping on Cards with InkResponse 2022-09-16 01:01:41 +03:00
Inex Code 469fbde6c4 Replace brand_radio_tile.dart with segmented_buttons.dart 2022-09-16 00:59:37 +03:00
Inex Code 71a18695e4 Formatting fixes 2022-09-16 00:08:32 +03:00
Inex Code 6619e42cfa New providers page cards 2022-09-16 00:08:14 +03:00
Inex Code 0c31e7697c Refactor cards, move server details screen from modal to screen, move storage card to server screen. 2022-09-15 19:57:26 +03:00
inexcode 03c38f637f Initial charts rework 2022-09-15 18:40:02 +03:00
NaiJi dc72b6d1b2 Implement server settings page functionality 2022-09-15 02:31:25 +03:00
Inex Code 12d4cd23ec Binds migration screen 2022-09-14 19:46:38 +03:00
Inex Code 34837d8e29 Introducing InfoBox widget, small UI fixes 2022-09-14 19:45:50 +03:00
Inex Code 7e10c1324c Remove BrandDivider and use vanilla instead. 2022-09-14 16:37:29 +03:00
NaiJi c5eed6ace9 Improve server settings page 2022-09-12 20:38:22 +03:00
Inex Code ae8827975a Fix server_storage_list_item.dart colors and text 2022-09-09 17:55:04 +03:00
inexcode da63ce45c8 Simplify root SSH keys page 2022-09-08 18:39:49 +03:00
inexcode 2826892400 Add a new filled card style and fix red texts 2022-09-08 18:14:05 +03:00
inexcode 981b9865cd Fix users not changing SSH keys and remove SSH keys screen 2022-09-08 18:13:18 +03:00
inexcode 3eda30d924 Refresh DNS screen design 2022-09-08 10:53:25 +03:00
NaiJi 580da306e1 Fix extending volume button error 2022-09-06 15:33:12 +03:00
Inex Code 5f13be9339 Fix Hetzner size storage 2022-09-06 14:03:21 +03:00
Inex Code 6f5ffa0f80 Make DiskSize a constant constructor and fix slider on Volume resize screen 2022-09-06 13:27:27 +03:00
NaiJi 8d2fbb5100 Implement service page enabling/disabling and service restart 2022-09-06 13:25:28 +03:00
Inex Code 58479256c5 Refactor disk_size.dart and disk_status.dart to use getters 2022-09-06 12:17:44 +03:00
inexcode 979e8ee37a New user screen UI 2022-09-05 16:12:00 +04:00
inexcode 5f58022d42 Update user list screen to properly support newer cubit logic 2022-09-05 14:51:01 +04:00
NaiJi 88a1393a1d Move disk status converting to disk status constructor 2022-09-02 09:06:10 +03:00
NaiJi 503c8d37ea Implement server jobs cubit 2022-08-30 06:09:09 +03:00
inexcode 7d8f8e1d38 Rewrite services cubit and add basic service screen. 2022-08-30 00:35:06 +04:00
NaiJi d168845b98 Fix storage card size view 2022-08-29 23:15:48 +03:00
NaiJi d247f41da4 Fix broken installation state check 2022-08-29 22:54:06 +03:00
inexcode 254604d584 Fix money display 2022-08-29 22:43:42 +04:00
NaiJi 62db476575 Fix ipv4 bug 2022-08-29 21:18:07 +03:00
NaiJi d934a6a9cb Refactor graphql api, separate by logic 2022-08-26 22:28:01 +03:00
NaiJi a698d3e7b2 Add padding to About page 2022-08-26 06:41:16 +03:00
NaiJi 37d5ee9913 Implement ServerJob cubit 2022-08-25 02:45:02 +03:00
NaiJi 7bbdaf2ebe Last changes on storage pages and job backend logic 2022-08-24 08:35:49 +03:00
NaiJi d2c3d28b0f Merge from develop into graphql 2022-08-08 13:33:55 +03:00
NaiJi c230037351 Implement data_migration page and logic 2022-08-03 05:25:33 +03:00
NaiJi 96c7d7966a Update cubit for volume management and graphql 2022-08-01 02:10:37 +03:00
NaiJi c747dcd4ae Implement Server Storage card for provider menu
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-07-29 08:38:21 +03:00
NaiJi 7ead9a29ea Implement basic graphql api map structure 2022-07-25 17:06:55 +03:00
NaiJi dab2c569ec Fix installation Timer errors
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-07-22 19:22:10 +03:00
NaiJi dac310f913 Implement Dns Provider Api Abstractions 2022-07-14 16:34:08 +03:00
NaiJi 9993b09e7f Turn VolumeApiProvider into a mixin 2022-07-13 14:58:23 +03:00
NaiJi 37b7e9f839 Implement Provider Api Abstractions 2022-07-12 15:54:16 +03:00
NaiJi 0feb9bc299 Return to main page on backbutton press for some recovery pages 2022-06-15 07:58:02 +03:00
NaiJi 6a22e2db6f Fix revert routing errors 2022-06-15 06:23:54 +03:00
NaiJi f370a7fc91 Fix minor recovery routing problem 2022-06-10 18:15:43 +03:00
Inex Code 18d0c2c40f Bug fixes and linting 2022-06-10 00:13:06 +03:00
Inex Code bf03f61668 Bump version 2022-06-09 19:49:57 +03:00
NaiJi 3fbdc05469 Minor flow bugfixes 2022-06-09 09:51:29 +03:00
NaiJi 43411adf2c Bugfix About application page for desktop 2022-06-09 07:36:22 +03:00
NaiJi 80e0488700 Minor bug fixing
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-06-07 22:59:15 +03:00
NaiJi 2ac8e4366b Linting!
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-06-06 01:40:34 +03:00
Inex Code 4db0413c42 Linting 2022-06-05 22:36:32 +03:00
NaiJi 5909b9a3e6 Minor UI fixes on recovery key pages 2022-06-01 17:29:37 +03:00
Inex Code e8d5ecccf6 Add devices screen 2022-05-31 17:30:44 +03:00
Inex Code 7810c2a279 Fix recovery flow 2022-05-31 17:30:35 +03:00
Inex Code 8ec3b8c3e3 Finish recovery key screen 2022-05-31 02:06:08 +03:00
NaiJi 1db8e9556e Fix UI colors and such :)
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-30 19:55:09 +03:00
NaiJi ead19d2210 Finish recovery key workflow and pages
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-30 16:55:52 +03:00
Inex Code b60fb19ecc some ui fixes 2022-05-30 16:49:42 +03:00
NaiJi 72ef16c6f6 Implement recovery key pages and device cubit
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-26 04:02:06 +03:00
NaiJi 5dcaa060a1 Linting
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-25 15:21:56 +03:00
Inex Code 14acfdec6b Linting 2022-05-24 21:55:39 +03:00
NaiJi edce25ec55 Hot bug fixing of recovery flow
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-24 20:45:13 +03:00
NaiJi 7344858e86 Implement recovery backblaze page 2022-05-24 11:06:58 +03:00
NaiJi ac93a384e9 Implement recovery cloudflare page 2022-05-24 10:55:51 +03:00
NaiJi eddeac57d6 Implement server selection pages
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-21 01:56:50 +03:00
NaiJi eaa1ba143c Implement pages for server confirmation on restoring access
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-19 20:43:25 +03:00
NaiJi 6fd7f9400d Implement recovery by old token pages with mock .md
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-19 17:26:57 +03:00
NaiJi d8568fc82f Merge branch 'flutter-3' into naiji-dev 2022-05-19 12:09:31 +03:00
inexcode d2553b0d08 Add auth functions to server_installation_repository.dart 2022-05-18 13:39:11 +03:00
NaiJi 2d96b4505e Disable unavailable functionality when server is not created
- Remove create and upgrade server jobs when server is not there
- Disable root SSH panel page when server is not there
2022-05-18 12:07:14 +03:00
NaiJi 20f6e8156c Add recovery token pages 2022-05-18 02:18:26 +03:00
Inex Code bf79fb1adf - Refactor Hive boxes
- Delete SSH generation leftovers
- Migrate users box to an encrypted box
2022-05-17 23:08:28 +03:00
NaiJi 19bc780db1 Implement async validation of domain field on recovering access
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 19:06:24 +03:00
NaiJi 0d0a3a4fee Refactor App Config Cubit infrastrucute
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 16:31:34 +03:00
NaiJi 93215d90fb Implement fallback recovery method page
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 16:30:05 +03:00
NaiJi 7a719f15ce Implement first recovery device method page
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 15:45:20 +03:00
NaiJi ee53590ba0 Implement recovery method select page
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-17 15:33:30 +03:00
Inex Code b4145dc5c8 First steps to move to Material You 2022-05-17 01:41:00 +03:00
Inex Code 8b5bf24f3a Merge branch 'dynamic-theming' into flutter-3
# Conflicts:
#	lib/main.dart
#	pubspec.lock
#	pubspec.yaml
2022-05-16 23:44:12 +03:00
Inex Code cc91b14b44 Migrate to flutter 3 2022-05-16 23:30:14 +03:00
NaiJi 129c1bb4c6 Refactor infrastructure
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-14 05:54:40 +03:00
NaiJi 4a42733d31 Refactor infrastructure: cubits and endpoints
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
2022-05-13 16:57:56 +03:00
NaiJi 01b1f7462d Implement recovery domain page frontend 2022-05-11 21:37:08 +03:00
NaiJi ce3e046f5a Improve server endpoints, add recovery page
- Handle Dio error codes properly to avoid exceptions
- Improve en and ru assets
- Improve dns recordings failure handling
- Add recovery button to initializing page
- Add recovery pages group
2022-05-10 23:42:33 +03:00
NaiJi 4c7cf05578 Refactor FieldCubit creation for user forms
Move all cubit fields to a special factory which encapsulates all logic related to their default properties, which leaves possibility for future dependency inversion on that factory or future factories of other cubit fields (in case we will have to replace it with other implementations).
2022-05-04 19:58:47 +03:00
Inex Code c5fa712ef0 Test custom colors 2022-05-03 13:45:10 +03:00
Inex Code bef625a934 Update breaking fl_chart dependency 2022-04-05 18:50:47 +03:00
NaiJi 8d884af594 Fix users cubit, add changelog for 0.5.0 2022-04-03 22:54:18 +03:00
Inex Code 85235a2e7c Add SSH key adding and deleting 2022-03-23 17:07:52 +03:00
inexcode d240e493b1 Add user synchronization and SSH keys screen 2022-03-03 20:38:30 +03:00
inexcode e4bdd47848 Merge branch 'feature/service-configurations' into dkim
# Conflicts:
#	lib/logic/api_maps/hetzner.dart
#	lib/logic/api_maps/server.dart
#	lib/logic/cubit/backups/backups_cubit.dart
#	lib/logic/cubit/forms/initializing/cloudflare_form_cubit.dart
#	lib/logic/models/job.dart
#	lib/ui/pages/initializing/initializing.dart
#	lib/ui/pages/providers/providers.dart
#	pubspec.lock
#	pubspec.yaml
2022-02-18 02:37:15 +03:00
inexcode e925a1897a Fix some typos 2022-02-16 10:28:29 +03:00
inexcode 914d56ff87 DNS records cubit and screen 2022-02-16 10:09:53 +03:00
inexcode 83a2d19e37 Introduce new brand screen, use it for backups 2022-02-16 10:01:05 +03:00
kherel 7eff0968d0 update 2022-02-08 22:01:08 +01:00
inexcode a0edbd636d Refactor DNS checks 2022-02-08 09:59:19 +03:00
kherel 83ff387998 update 2022-02-07 08:53:13 +01:00
kherel 9566a6ad10 update 2022-01-25 18:02:32 +01:00
Inex Code de13b09f23 Add gifs to illustrate API token instructions 2022-01-25 18:02:31 +01:00
Inex Code 8622ed30f1 Add more instructions to UI 2022-01-25 18:02:31 +01:00
Inex Code 5957e5720b Add user deletion (for real) 2022-01-25 18:02:31 +01:00
Inex Code c937cfdbb4 Add gifs to illustrate API token instructions 2021-12-23 14:27:19 +00:00
Inex Code 85a27e8ee2 Add more instructions to UI 2021-12-23 13:52:12 +00:00
Inex Code 4ca873e794 Add user deletion (for real) 2021-12-20 15:25:31 +00:00
Inex Code 2b8c009ef1 Add button to force refetch backups list 2021-12-09 03:35:15 +00:00
Inex Code 35c1eea7f0 Fix error when error is null 2021-12-09 06:23:27 +03:00
Inex Code b40bea63d1 Backups and server upgrade 2021-12-06 18:31:19 +00:00
Kherel 139843dee8 fix 2021-10-13 23:49:24 +02:00
Kherel eac9078fad fix 2021-10-11 23:10:04 +02:00
Kherel 4ae77f33c8 fix 2021-10-05 22:43:12 +02:00
tester.nicolai 5c01d6a375 fixed RU app text 2021-10-05 22:38:10 +02:00
Kherel 2c4d0ea7d1 fix 2021-09-29 20:28:47 +02:00
kherel 3e7d003f21 service-states (#65)
Co-authored-by: Kherel <kherel@gmail.com>
Reviewed-on: https://git.selfprivacy.org/kherel/selfprivacy.org.app/pulls/65
Co-authored-by: kherel <kherel@gmail.com>
Co-committed-by: kherel <kherel@gmail.com>
2021-09-29 16:08:19 +03:00
Kherel 4942f67f37 update 2021-09-15 16:37:22 +02:00
Kherel d0023e5718 update 2021-09-15 15:15:54 +02:00
Kherel 90d64d8f51 update 2021-09-02 21:32:07 +02:00
Kherel 26607251d9 update 2021-08-29 17:02:51 +02:00
Kherel 84e9259ec2 update 2021-08-29 15:54:28 +02:00
Kherel 94a0e22b15 update 2021-08-29 11:50:24 +02:00
Kherel 1a8a4e7270 update 2021-08-18 12:44:46 +02:00
Kherel 3a5353dbf4 add validation 2021-07-29 11:34:26 +02:00
Kherel Kechil f53ad044c1 finish 2021-07-29 07:24:42 +02:00
Kherel 21611e63c7 commit 2021-06-20 23:08:52 +02:00
Kherel 9e8fdf2965 update 2021-06-08 20:52:44 +02:00
Kherel d3f494adeb update 2021-05-25 23:53:54 +02:00
Kherel 8ccb4f18f6 done 2021-04-22 20:04:24 +02:00
Kherel 536ef4b717 add salt to hash 2021-04-19 14:37:51 +02:00
Kherel 3676dc50f0 fix black theme 2021-04-10 12:06:29 +02:00
Kherel cd49f9fb45 add charts 2021-04-10 05:04:23 +02:00
Kherel aabad65698 update 2021-03-31 13:37:39 +02:00
Kherel ae3ec309cb add volume 2021-03-30 19:38:40 +02:00
Kherel 275ba21a47 fix 2021-03-26 14:53:21 +01:00