Commit graph

426 commits

Author SHA1 Message Date
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 b48017508a Fix ProviderVolume cubit exception 2022-08-29 19:37:31 +03:00
inexcode c0ce019360 Add Services type and GraphQL endpoints with parsers. 2022-08-29 04:40:35 +04:00
NaiJi d934a6a9cb Refactor graphql api, separate by logic 2022-08-26 22:28:01 +03:00
NaiJi 9526035176 Fix volume size calculation 2022-08-26 19:46:30 +03:00
NaiJi a698d3e7b2 Add padding to About page 2022-08-26 06:41:16 +03:00
NaiJi 6014e385bc Implement ServerJobCard 2022-08-26 05:34:25 +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 c56a0f5976 Implement getApiTokens for graphql API map 2022-07-25 19:08:46 +03:00
NaiJi 7ead9a29ea Implement basic graphql api map structure 2022-07-25 17:06:55 +03:00
NaiJi d8ea528621 Add magic sleep before deleteVolume on creation failure
It seems Hetzner fails to accept our deleteVolume request so quickly after failing. We need to wait for about 10 seconds, I guess. The same magic sleep happens on deleteServer pack of requests. Please have patience...
2022-07-25 03:03:19 +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 5fd8a68597 Change volume size from Gb to Byte 2022-06-28 21:06:52 +03:00
NaiJi 0a919907c8 Implement hetzner volumes cubit 2022-06-27 10:07:11 +03:00
NaiJi 352351663f Implement endpoints for hetzner volumes 2022-06-24 00:34:09 +03:00
Inex Code 4afd40f5da Merge branch 'develop' into naiji-dev 2022-06-23 12:11:59 +03:00
NaiJi 7e2319bf21 Force domain to lowercase on recovery pages 2022-06-22 22:42:38 +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 313cfc7187 Bug fix error processing for installation cubits 2022-06-15 04:55:45 +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
Inex Code 3c3cb376e2 Fix null check on DNS check 2022-06-09 19:15:53 +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
Inex Code a096e7e732 Add recovery_key_cubit.dart 2022-05-24 19:11:51 +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
Inex Code fa6f74e884 Finish recovery flow cubit 2022-05-23 17:21:34 +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 df40a09419 Add cubit methods to try recover the server 2022-05-18 14:21:11 +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
inexcode dd77b99ac8 Rename Bnames boxes names to include the Box 2022-05-18 11:27:36 +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
NaiJi a56af9dbec Fix desktop theme 2022-05-17 02:42:46 +03:00
NaiJi f46ca7ad13 Merge branch 'flutter-3' into naiji-dev 2022-05-17 01:42:25 +03:00
Inex Code b4145dc5c8 First steps to move to Material You 2022-05-17 01:41:00 +03:00
NaiJi 10488d6832 Fix application failure on cloudflare 403 response
Check error response and show modal dialogue if domain couldn't be registered
2022-05-17 01:16:56 +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 31be961dd0 Implement server endpoints for tokens
get /auth/recovery_token
post /auth/recovery_token
post /auth/recovery_token/use
post /auth/new_device/authorize
post /auth/new_device
delete /auth/new_device
get /auth/tokens
post /auth/tokens
delete /auth/tokens
2022-05-10 02:16:36 +03:00
NaiJi 8d6cbfdfc9 Fix docstyle comments 2022-05-04 22:32:24 +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 9cec5e901a hardcode dark theme on linux for now 2022-05-03 15:18:06 +03:00
Inex Code c5fa712ef0 Test custom colors 2022-05-03 13:45:10 +03:00
NaiJi 4c99579f13 Fix username validation and exception handling
1. Refactor string validation classes
2. Rename string validation assets for length
3. Improve exception handling when server is not able to create requested server
2022-05-02 14:56:46 +03:00
Inex Code 4ddde34b47 Fix server deletion 2022-04-29 13:53:58 +03:00
NaiJi 834cddfe13 Catch wakelock exception on desktop 2022-04-29 13:45:15 +03:00
Inex Code cca55f82cc Encode password to base64 during server creation 2022-04-06 20:15:59 +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
inexcode 8de33ea19b Fix typo 2022-02-10 12:50:37 +03:00
kherel 7eff0968d0 update 2022-02-08 22:01:08 +01:00
inexcode d06e8976c5 Fix infect stage and DKIM 2022-02-08 09:59:35 +03: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
Inex Code f6508dfcad Attempts at string escaping 2022-02-02 12:53:21 +00:00
Inex Code 0bc3d9f31c Add DKIM key creation 2022-02-01 01:56:05 +00:00
Inex Code 88d5dbf010 Add more escaping to server infection 2022-02-01 01:55:09 +00:00
kherel 9566a6ad10 update 2022-01-25 18:02:32 +01:00
Inex Code 3cd187e416 Enforce alphanumeric bucket id 2022-01-25 18:02:31 +01:00
Inex Code 2dfb92f650 Fix wrong server name escaping symbol 2022-01-25 18:02:31 +01:00
Inex Code 72100e483a Replace all non-alphanumeric symbols during hetzner creation 2022-01-25 18:02:31 +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 e72df08453 Show that we are doing something when upgrading/restarting server 2022-01-25 18:02:31 +01:00
Inex Code 3a63e75e8e Fix nixos-infect link to use master, not rolling 2022-01-25 18:02:31 +01:00
Inex Code 893c5bb5c0 Enforce alphanumeric bucket id 2021-12-27 07:40:48 +00:00
Inex Code e7e9209cce Fix wrong server name escaping symbol 2021-12-26 21:41:53 +02:00
Inex Code 30937740b6 Replace all non-alphanumeric symbols during hetzner creation 2021-12-25 12:56:44 +00: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 9b2fe905e6 Show that we are doing something when upgrading/restarting server 2021-12-20 15:03:50 +00:00
Inex Code 1b42d3a382 Fix nixos-infect link to use master, not rolling 2021-12-16 14:26:40 +03:00
Inex Code f633fecd57 Fix backup list parsing 2021-12-09 03:44:05 +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
Inex Code 6011d6fdce Hotfix SPCVE-0001 2021-11-18 19:10:40 +00:00
Kherel 139843dee8 fix 2021-10-13 23:49:24 +02:00
kherel 43732fa866 Merge branch 'no-hash' into fix-deleting-server 2021-10-12 00:14:31 +03:00
Kherel eac9078fad fix 2021-10-11 23:10:04 +02:00
Kherel ba8b19193d update 2021-10-07 18:52:06 +02:00
Kherel 3bc9b23e8f update 2021-10-07 18:52:06 +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 1202e4ad53 change password generator 2021-08-18 11:36:40 +02:00
Kherel 5dea5234de fix 2021-07-29 14:09:10 +02:00
Kherel 3a5353dbf4 add validation 2021-07-29 11:34:26 +02:00
Kherel 933e8ffb90 fix 2021-07-29 07:29:33 +02:00
Kherel 1c352fd771 update 2021-07-29 07:28:46 +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 234515477c fix 2021-05-17 14:46:48 +02:00
Kherel e5758aa2bf fix 2021-05-17 14:40:06 +02:00
Kherel d4f315214b add reverse-dns 2021-05-17 14:38:38 +02:00
Kherel 8ccb4f18f6 done 2021-04-22 20:04:24 +02:00
Kherel 5b83b493f4 fix 2021-04-20 13:44:33 +02:00
Kherel 536ef4b717 add salt to hash 2021-04-19 14:37:51 +02:00
ilchub 695c91cba7 Changed infect script source from 'preproduction' to 'master' 2021-04-16 02:22:56 +03:00
Kherel 3676dc50f0 fix black theme 2021-04-10 12:06:29 +02:00
Kherel 6726c87de7 fix 2021-04-10 11:51:36 +02:00
Kherel cd49f9fb45 add charts 2021-04-10 05:04:23 +02:00
Illia Chub e4d5a4e01f Removed debug information 2021-04-01 16:03:04 +03:00
Illia Chub 10aeb6ba30 Incremented version number 2021-04-01 15:19:20 +03:00
Kherel 29b08b111a update 2021-03-31 16:33:58 +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
Kherel 804147b8d6 update 2021-03-26 14:38:39 +01:00
Kherel bc6c55b528 change http client 2021-03-26 00:30:34 +01:00
Kherel 20cca91e00 before change api_client 2021-03-25 21:09:56 +01:00
Kherel 7d12b85f89 fix markup 2021-03-25 09:54:39 +01:00
Kherel e4f154b4f5 fix 2021-03-25 09:46:07 +01:00
Kherel 3c683bef63 fix 2021-03-25 09:32:00 +01:00
Kherel 97c6fa435d fix 2021-03-24 14:12:09 +01:00
Kherel 6a9e72dc4c fix 2021-03-23 21:00:17 +01:00
Kherel 33f8f033c3 update 2021-03-23 20:57:44 +01:00
Kherel bb6de7ff67 update 2021-03-23 20:50:11 +01:00
Kherel 481a6e3d47 update 2021-03-23 20:21:42 +01:00
Illia Chub 971d8bdbdc Set fallback locale to en 2021-03-18 17:02:39 +02:00
Kherel 10fdb019ff update 2021-03-18 13:24:30 +01:00
Kherel dce4c41fd1 update 2021-03-18 08:26:54 +01:00
Kherel ab2893a075 update 2021-03-18 01:55:38 +01:00
Kherel 0ec549042c update 2021-03-15 16:39:44 +01:00
Kherel afd569ba96 update packages:before main migration 2021-03-14 20:18:51 +01:00
Kherel edadf10d05 update flutter 2021-03-14 19:44:35 +01:00
Kherel 6d43cb699b update 2021-02-17 17:20:09 +01:00
Kherel 0f35400eaa update 2021-02-17 15:30:02 +01:00
Illia Chub b469fdeda7 Added database password reference 2021-02-17 13:36:20 +02:00
Kherel 4f6137eaa1 update 2021-02-16 19:48:15 +01:00
Kherel 20166647ea update 2021-02-15 19:58:29 +01:00
Kherel a07a7247f5 update 2021-02-03 21:26:38 +01:00
Kherel 25a386d511 update 2021-02-03 20:51:07 +01:00
Kherel 3de01fe12b push 2021-02-02 19:24:56 +01:00
Kherel 7bafaa66be update 2021-01-27 20:54:37 +01:00
Kherel 9fe307b7e7 update 2021-01-27 19:33:00 +01:00
Kherel 0a99be6103 add vpn 2021-01-27 09:33:26 +01:00
Kherel 4936b157a1 update 2021-01-22 07:23:56 +01:00
Kherel 80213abf9b update 2021-01-21 22:01:42 +01:00
Kherel 7de50dd237 update 2021-01-21 08:35:38 +01:00
Kherel 618e426333 update 2021-01-19 13:14:02 +01:00
Kherel 6006564820 update 2021-01-19 13:12:10 +01:00
Kherel 21215685dd update 2021-01-19 13:05:40 +01:00
Kherel 4bfc3058a5 update 2021-01-19 09:38:02 +01:00
Kherel c7d45fbf76 update 2021-01-18 11:21:55 +01:00
Kherel 78e5e11f0d fix 2021-01-18 10:40:52 +01:00
Kherel a77c11f06c fix 2021-01-18 10:40:14 +01:00
Kherel 0c9dabc5cb Add response data in logger message 2021-01-18 10:38:21 +01:00
Kherel 08df778346 update 2021-01-15 13:24:09 +01:00
Kherel 5e13112486 update 2021-01-14 22:48:05 +01:00
Kherel 853e1fdbdd update 2021-01-14 19:45:10 +01:00
Kherel cf6e0b3495 add error observer 2021-01-13 17:45:46 +01:00
Kherel a8262229c0 update 2021-01-08 13:37:28 +01:00
Kherel 0ed5fbdd2e update 2021-01-06 20:25:53 +01:00
Kherel 9a749cf006 update 2021-01-06 18:35:57 +01:00
Kherel 6613949d12 update 2020-12-30 15:13:25 +01:00
Kherel 91aa2b860b update provider and bottom modal sheet 2020-12-10 21:33:19 +01:00
Kherel 600df97abf updage color generator 2020-12-08 20:47:50 +01:00
Kherel 9a8c16344f add dark theme 2020-12-08 20:26:51 +01:00
Kherel 7ebfc2c048 update project structure 2020-12-06 08:46:12 +01:00
Kherel a112d873eb update onboarding and providers 2020-12-06 08:28:31 +01:00
Kherel 80dee9dbab add users 2020-12-03 17:52:53 +01:00
Kherel 4875e3ee07 add more 2020-12-02 10:16:23 +01:00
Kherel 90df52e895 add service page 2020-12-01 20:08:19 +01:00
Kherel cd02c75e2f add localizations 2020-12-01 13:26:29 +01:00
Kherel b626b05a1a update first page 2020-11-30 11:03:55 +01:00
Kherel cbd00e87d3 add navigation 2020-11-29 21:07:46 +01:00