1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-29 00:57:50 +02:00
Commit Graph

99 Commits

Author SHA1 Message Date
51785d54dd
more reorganization 2021-10-27 11:29:03 +01:00
f951910dc2
reorganize all the things 2021-10-27 11:28:59 +01:00
mihaisc
cef0969065
Refactor aquarius calls (#917)
* aquarius refactor

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* fix highest liquidity

Signed-off-by: mihaisc <mihai@oceanprotocol.com>

* fix

* update search

Signed-off-by: mihaisc <mihai@oceanprotocol.com>

* remove test code

Signed-off-by: mihaisc <mihai@oceanprotocol.com>

* remove logs&unused dep

* remove old types

* fix bookmarks

* fix downloaded assets

* fix published list

* fix profile

* fix compute history

* fix compute

* fix edit compute

* remove old commented code
2021-10-21 10:24:00 +03:00
Moritz Kirstein
2961c5e631
Privacy policy update (#925)
* update right to data portability

* update right to data portability

* update right to data portability

* update right to data portability

Co-authored-by: MeikeMolitor <88214332+MeikeMolitor@users.noreply.github.com>
2021-10-18 10:03:58 +01:00
Moritz Kirstein
46a16a3043
GDPR Compliance (#796)
* add cookie utils

* add gdpr metadata for ppc

* add graphql typeDefs for GDPR metadata

* add ppc variable to app config

* add ppc user preference

* add switch component

* add ppc components

* add cookie consent provider

* add consent provider to wrapRootElement

* add ppc to app component

* add cookie button to footer component

* add ppc to site metadata query

* add styles for buttons in footer

* add switch component unit tests

* renewed siteMetadata json for testing

* add gdpr metadata for testing

* add cookie module unit test

* add cookie module tests

* add customizable format to time component

* add english privacy policy

* add privacy policy slugs to user preferences and appConfig

* add privacy policy components

* add autolink for policy md navigation

* only show language select for multiple policies

* add gatsby policy page creation

* use new privacy slug user preference

* add to top button styling for markdown pages

* add policies for de, es & fr

* add pointer events to toTop buttons css

* add privacy policy basic unit test

* outsource scroll button component

* import cleanup

* add customizable delay for debounce

* add scroll button unit tests

* add disclaimer component

* add disclaimer fields as optional fields in PublishJsonData

* add acces type disclaimer

* adjusted help for desc and author fields

* add disclaimer unit tests

* minor adjustment to test

* add print button to history page

* naming changes for better readability

* add cookies hash to policies

* ppc disabled per default

* fix react unknown prop for disclaimer

* minor adjustments to cookie utils

* add gdpr example file

* change exposed gdpr metadata scope by useConsent

* update README

* readme fixes

* emoji fix

* added imprint

* adjustments to gdpr.json structure and related graphql type

* add default values for ppc

* Update app.config.js

Fixed typo.

* change variable name for consistency, remove console logs

* readability

* adjust css selector order to be consistent

* Update fr.md

updated policy

* Update es.md

updated policy

* Update en.md

updated policy

* Update de.md

* fix type issue

* replace language select input with links

* remove scroll button from codebase

* change privacy policy route to /privacy

* remove Do Not Track detection

* add size to checkbox / radio inputs

* replace switch component with checkbox inputs

* fix plain text links

* remove console log

* refactor privacy policy pages to use PageMarkdown template

* setup useUserPreferences mock for unit tests

* unit tests forprivacy policy components

* setup discalimer to use alert component

* Apply .env suggestions from code review

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* move gdpr example to gdpr.json

* adjustments to address .env approach for appConfig.privacyPreferenceCenter

* update readme

* add small styling option to ppc

* update README

* add ppc unit tests

* update comments

* Update README.md

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* Merge print into profile history

* add inifiniteApproval to UserPreference fixture

* changed default styling of PPC to small

Co-authored-by: Frederic Schwill <41265505+fr-3deric@users.noreply.github.com>
Co-authored-by: MeikeMolitor <88214332+MeikeMolitor@users.noreply.github.com>
Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>
2021-10-12 09:00:57 +01:00
Norbi
4b34e2f347
Token approval split-up (#640)
* Token approval component

* check if datatoken approved

* display token amount on button, add approve function

* approve token based on token type

* approve token for trade, remove for pool lequidity remove action

* verify approval on amount change

* show action button only if amount is approved

* catch approve error and stop loadin

* display token amount with 2 decimals on trade token approval

* infinite approval and UI fixes

* fixed alert warning not showing, account id for approve

* wip

* fixed displayed token amount to approve for swap

* token amount text fix

* lint error fix

* package version update

* version fix

* downgrade version

* fixed error for no wallet connected

* update package-lock

* display token name, and changed amount precision

* removed empty file, fixed token switch error

* refactor for better user experience

* move content

* ExplorerLink console error fixes

* UI tweaks

* slightly changed button logic

* fix Trade form approvals

* cleanup

* don't block add liquidity button

* merge fixes

* hook dependency cleanup

* dtItem fix, error fixes based on asset network match

* disable action button if field is not valid, undefined trade tokens

* fix infiniteApproval user preference saving

* remove unneccessary string conversion

* used Decimal for dtAmount and oceanAmount

* changed token spender address

* bump ocean.js to vo.17.5

* fix lint

* replace Number with Decimal

* fix getting to add liquidity screen without wallet connected

* fix crash when switching coins after value input

Co-authored-by: Norbi <katunanorbert@gmai.com>
Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
Co-authored-by: mihaisc <mihai@oceanprotocol.com>
2021-09-30 12:54:44 +02:00
Bogdan Fazakas
f8ffcbac75
Account metadata header (#776)
* get all neded data for the header from 3box, aqua and subgraph

* fix tvl display error

* WIP metadata header styling

* added more styling for the header

* make page title optional so we can remove it on account page

* stroke change for svg images and default values

* more styling added to the header

* fixed linter

* added ocean balance to tvl

* update styling for statistcs

* fixed eror for go to my account from another account page

* updated styling for mobile use

* wip show more on explorer links and description

* properly display read more for explorer links and description

* replaced show more with 3box redirect on description

* change accounts default picture and check links length before display element

* use optional on links

* grid cleanup, new number unit, split up stats

* rename all the things, more profile header styling

* visual hierarchy, improve image loading experience

* layout flow & visual tweaks

* more description

* replaced account route  with profile when accesing a profile by the eth address

* use account id from url if exists when fetching data

* bump @oceanprotocol/art to v3.2.0

* styling, fallbacks, edge case fixes

* clean up Publisher atom, link to profile page

* fixed issue when switching to my profile from another profile

* output accountId, make it copyable, remove stats icons

* render tweaks, markup cleanup

* add 3box reference

* mobile tabs spacing tweaks

* text flow and spacing tweaks

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-09-01 13:56:34 +02:00
Bogdan Fazakas
69f02afd59 merge branch main into feature/account-page and fixed merge conflicts 2021-08-25 09:15:31 +03:00
Jamie Hewitt
a545f723e9
Add custom provider to publish form (#707)
* Creating custom provider box selection

* adding provider to Form publish validation schema

* validating custom provider URL

* WIP validation for custom provider

* validating provider uri

* adding success/ error messages

* conditional rendering of custom provider input

* remove console.log

* fixing textFormData

* Publishing custom provider URI in DDO

* Adding serviceEndpoint to Debug

* removing pre-checked default provider

* Refactoring to reduce code duplication

* removing console.log messages

* update submit text

* update submit text

* Placing custom provider field behind Advanced Settings

* removing provider field

* updating placeholder provider

* style for advanced setting button

* refactoring customProvider

* remocing template literal

* fixing linting errors

* restricting advanced publishing settings through env var

* updating example env

* adding custom provider to formAlgoPublish

* refactoring to reduce duplication

* Reducing duplication

* updating types and initial values

* Removing Custom provider input from main algorithm form

* Removing concole.log

* Chaning customProvider to providerUri

* changing customProvider to providerUri

* advanceSettings to PascalCase

* Removing unused useOcean()

* Using useSiteMetadata() hook

* Adding allowAdvancedPublishSettings to query

* Adding temporary console.log(ocean)

* Removing console.log
2021-08-20 15:49:15 +03:00
Jamie Hewitt
ccb5c22a80
Update price & pool tooltip content (#771)
* Adding description of each fee

* updating text

* Adding info about liquidity pool

* Adding tool tips for fixed pricing

* Explaining the pool

* removing broken link

* Update marketplaceFee in content/price.json

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>

* Update swapFee in content/price.json

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>

* Update poolInfo in content/price.json

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>

* Updating community fee tooltips

* Updating tooltip for marketplace fee

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-08-11 17:21:53 +03:00
Bogdan Fazakas
cfd5b6558e merged branch main into feature/account_page 2021-08-04 15:35:25 +03:00
Bogdan Fazakas
261348f883 replace history page and route with account 2021-08-04 15:21:57 +03:00
Jamie Hewitt
46cf119afe
Author metadata update (#763)
* Adding content for update author

* Updating types

* Updating DDO

* Bumping ocean.js

* Making the author optional

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-08-03 17:07:51 +02:00
Jamie Hewitt
60cac45e89
Adding fees to fixed pricing page (#758)
* Adding fess to fixed pricing page

* Adding tooltips to fixed price content

* Styling: Text align left

* create pricing styling updates

* remove console.log

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-08-02 12:18:46 +02:00
a7998abb99
Multinetwork UI additions (#729)
* add BSC to default chains

* searchbar visual tweaks

* race condition fix

* network name tweaks

* beta → v3

* use publish form titles to inform about network

* form actions refactor

* simplify network name on asset details

* visual indicator for selected chains on button

* lint fix

* more layout flow tinkering, collapsed search by default

* search field layout tweaks

* unknown network/gaia-x name fixes

* put back search cancel button in webkit

* space fixes

* cross browser visual fixes
2021-07-26 15:48:24 +02:00
Kris Liew
e02babf2c2
[EPIC] Free Pricing (#681)
* Free Pricing Option at create Pricing (#621)

* Free Pricing Option + env var toggle

* Create Pricing step msg

* Default 'allowFreePricing' to true temp for review

* Fix price 0 on free tab

* Attempt fix useSiteMetadata

* Fix linting

* Feature/free price support consume compute (#654)

* Update fetch free price

* Feedback change UI remove 0's

* update button msg && fix

* compute algorithm list show 'Free' instead of '0'

* updateMetadata() v3 workaround solution for free pricing (#677)

* compute algorithm list show 'Free' instead of '0'

* workaround editMetaData free price

* utils function for compute & download

* `allowFreePricing` default to false
2021-06-16 09:32:11 +08:00
Kris Liew
4fc5862654
Edit Advance Settings form for Edit Credentials & edit isOrderDisabled Flag (#655)
* #638 Initial design

* #638 fix import and get value from env file

* #638 Fix UI

* #638 Improved UI

* #638 Add deny credential and isOrderDisabled

* UI update

* Fix lint

* Attempt fix issue

* Revert "Attempt fix issue"

This reverts commit e3d916fe61.

* Extract default credential type

* Fix complexity issue

* Fix complexity issue

* Fix typo error

* Enhance UI

* Enhance Credentials Component UI

* Reduce duplication

* Revert "Reduce duplication"

This reverts commit e3bf6b4a2a.

Co-authored-by: KY Lau <kian_yee.lau@daimler.com>
2021-06-14 15:47:31 +08:00
Norbi
f0ed9f68cb
Add new custom form field for single value selection (#504)
* created BoxSelection component

* wip

* design changes

* integrate with form

* refactoring

* used inside appearance component

* WIP, added space between options

* adde new fields to BoxSelection used for chain selection

* fixed errors

* removed access type option from publish.json

* updated component for chain selection

* updated for compute type on publish dataset

* added component to dockerImageOpions

* removed Dotdotdot component from options

* remove space

* styling updates, fix React warning for terms checkbox

Co-authored-by: Norbi <katunanorbert@gmai.com>
Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-05-17 15:32:01 +02:00
e3c0fd3d85
switch visual order of edit compute settings 2021-04-29 00:26:09 +02:00
3319cf844d
mention compute restrictions throughout UI (#568)
* mention compute restrictions in publish forms

* copy

* results storage info
2021-04-28 19:59:56 +02:00
claudiaHash
c0157dff21
Add datatoken to algo publish form (#531)
* datatoken added to algo publish form

* init datatoken option with non empty values

* remove hacks

* use nonempty data token initial values

Co-authored-by: claudia.holhos <claudia.holhos@hpm.ro>
Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-04-26 13:43:58 +02:00
14e4cc3f68
Merge branch 'main' into feature/compute 2021-04-22 13:03:08 +02:00
Norbi
cf44ab7f51
Feature/allow changing of fixed rate price (#399)
* added price field to edit metadata form

* use method for updating price

* get exchangeId for setRate function

* setRate method update

* misc fixes

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* revert price

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* get correct exchange id

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* add price to MetadataEditForm interface

* fixed lint error

* disable update price on assets with dynamic price

* display price input only on fixed price

* price input changes

* fixed price input displayed when no price is set

* review fixes

* fixes

Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
Co-authored-by: Norbi <katunanorbert@gmai.com>
2021-04-22 12:55:11 +02:00
ea2f03d8cd
merge fix 2021-04-14 15:34:28 +02:00
Jamie Hewitt
7c09ceca06
Issue 366/dataset publish ux (#461)
* changing the info text for dataset input

* Updating error message for invalid dataset input

* chaning button styling to make it look more like a button

* fixing package-lock.json issue

* removing changes from package-lock.json

* adding onBlur event to validate the data input

* Removing autoclose on error message

* adding success message when the dataset is valid
2021-04-14 13:24:07 +03:00
claudiaHash
ccfb381d9d
Feature/issue474 algorithms timeout (#483)
* timeout added for algorithm publish

* publish algorithm fixes

* set termsAndConditions fix

Co-authored-by: claudia.holhos <claudia.holhos@hpm.ro>
2021-04-08 19:01:00 +02:00
432961b278
Merge branch 'main' into feature/compute 2021-04-01 17:29:29 +02:00
Bogdan Fazakas
18f2c99e78
Start compute job (#439)
* Wip start compute job

* Wip select algorithm design

* Asset selection form component, for start compute job (#442)

* prototype AssetSelection

* assetselection styling

* typing "fix"

* put back file info icon

* AssetSelection styling in context

* update start job method, fixed algo select, and fixed option typing

* compute logic update

* add has previous orders for algo asset

* fixed search algorithm assets in start compute form

* fixed lint errors

* updated previous order for algo logic and compute flow

* update use price hook and added buy DT for algo

* display only alg of type exchange and sort by value

* display only trusted algo for asset if field is set

* added logic for allow all published algorithms or no algorithms allowed

* asset selection style & spacing tweaks

* refactor get algorithms for compute and edit compute

* fixed form options and more refactoring

* new ButtonBuy component

* shared component between consume/compute
* dealing with various states: loading, previous orders, help text output

* effect dependencies

* move error output into toast

* formik data flow refactor

* ditch custom field change handler
* fix initialValues
* typed form data & validation
* fixes multiple form validation issues along the way

* isInitialValid → validateOnMount

* metadata display tweaks

* error feedback tweaks

* oler assets checks, confeti on succes job, market fee on order, removed algo compute logic

* more startJob logging

* feedback & messaging changes

* metadata display

* return all algos, fixed & dynamic priced ones

* fix DOM nesting

* messaging updates

* copy tweaks

* check algorithm previous history for both acces and compute sercive types

* handle start compute error

* extra checks on start compute response

* styling tweaks, fix toast UI errors

* AssetSelection: empty screen, tweak min/max height

* fix FRE issues on start compute

* check is ordarable before start compute job

* logging tweaks

* disable eslint no-unused-vars rule for some Apollo code blocks

* fix metadata editing for compute assets

* consider dataset timeout for compute too

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-04-01 17:21:08 +02:00
Norbi
96296008c9
Add custom network (#450)
* add custom network

* created announcement banner

* add custom network from banner

* show ADD CUSTOM NETWORK on MetaMask provider

* show add ocean to wallet action

* removed warningPolygon from alert

* removed customNetwork component

* remove Add custom network on asset details page

* Details use function from web3 to add token

* changed available on Polygon link, refactoring

* show Switch to Polygon when no wallet connected

* banner content for no provider and Polygon network

* change message when not provider and eth network

* changed warning and added announcement in site.json

* moved network logic inside Announcement, moved Announcement component

* added switch to ETH button, refactoring

* removed add mOcean action button

* moved location verification to App.tsx

* styling & copy updates

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-03-30 15:37:30 +02:00
Norbi
977a38e118
Edit compute dataset (#417)
* WIP

* created form for editing compute privacy

* used editComputePrivacy method

* select and update trusted algorithm

* display and select multiple trusted algorithms

* fixed update when trusted algorithm list not changed

* code refactoring

* moved separator inside condition

* moved functions and interface from EditComputeDataset component

* moved algorithmOptions to parent component

* used AssetSelection to display algorithms

* use AssetSelection to select trusted algorithms

* getAlgorithmsOptions function review

* review fixes

* removed unused imports

* merge fixes

* AssetSelection style & usability tweaks

* use custom radio & checkbox styles
* add simple search for name & DID
* spacing adjustments

* copy updates, remove raw algo input, hardcode allowRawAlgorithm

* copy

* AssetSelection usability tweaks

* make rows clickable
* tweak layout, style and markup

* use formik set function to update values

* sorted algorithm list, added checked field

* sort assetSelection list on user select

* fix getAlgorithmsForAssetSelection breaking on empty responses

* form debug output

* another empty publisherTrustedAlgorithms fix

* created separate algorithms state for the form, sort list on edit

* refactor

* use Formik functionality wherever possible
* unify transforming form data to final data

* fix form debug transformation

* fix form submit, fix defaultChecked

* refactor

* use Formik functionality wherever possible
* unify transforming form data to final data

* fix form debug transformation

* fix form submit, fix defaultChecked

* disable assetSelection when allowAllAlgorithms is true

* added loader to AssetSelection

* changed allowAllAlgorithms to allowAllPublishedAlgorithms

* fixed lint error

* updated transformComputeFormToServiceComputePrivacy

* lint fix

* modify publish defaults

Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
2021-03-25 08:34:07 +01:00
df587bb5b5
Merge branch 'main' into feature/compute 2021-03-17 12:58:13 +01:00
bdccb0966f
Web3/Ocean splitup + full Polygon/Matic support (#433) 2021-03-17 11:44:26 +01:00
e180ab0085
Merge branch 'main' into feature/compute 2021-03-09 19:18:47 +01:00
Bogdan Fazakas
a4f4de84fd
add sample file to edit metadata form (#419)
* add sample file to edit metada form

* bump oceanjs to 0.11.2

* retrigger checks

* added updated package-lock.json

* bump react hooks to 0.5.4

* bump ocean.js to 0.11.4 and react hooks to 0.5.5
2021-03-09 17:52:40 +01:00
Bogdan Fazakas
7ef538818a hide image/tag/entrypoint when pre-defined docker image is selected 2021-02-24 16:56:22 +02:00
Bogdan Fazakas
e92f759898 set default pre-defined docker image and renamed version field to docker image tag 2021-02-24 11:25:52 +02:00
ea9952cc56
typo 2021-02-23 10:50:15 +01:00
f79d8c2c91
content updates 2021-02-22 16:37:50 +01:00
41fd894ce6
output form titles 2021-02-22 16:28:56 +01:00
Bogdan Fazakas
92547533a5 refactor publish page content 2021-02-19 16:08:47 +02:00
Bogdan Fazakas
243283e434 disable aditional docker image fields for pre-defined containers 2021-02-19 13:44:04 +02:00
Bogdan Fazakas
707045071a added support for custom docker images 2021-02-18 14:53:32 +02:00
Bogdan Fazakas
7d25bc07ce added keep algorith private checkbox 2021-02-17 15:31:26 +02:00
Bogdan Fazakas
18cd6b6f01 WIP publish algorithm 2021-02-16 11:27:02 +02:00
Norby
a2fe2fdee0
Set, edit, and display timeout (#324)
* added timeout to publish asset

* add timeout to edit asses(wip)

* added timout to edit metadata form

* fixed wrong constant name

* fix options autosorting

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* Fixed autosorting in edit form

* Added "1 day" to timeout options

* Changed ternary operators to switch

* Feature/asset timeout (#325)

* Compute asset timeout

* Code styled

* Deleted unused import

* Display timeout for buy/download

* Switch case for timeout values

* Moved mapping function to /utils/metadata

* display timeout option not matching defined ones, map seconds to string

* handle update with no predefined timeout value, add weeks to map method

* Display timeout on button

* consume button text logic change

* whoops, revert wrong change

* small millisecondsToStr refactor

* copy tweaks

* template literal logic restore

* keep tweaking help text logic

* abstract into method
* change whole condition logic
* tweak hasDatatoken/hasPreviousOrder combination condition

* Unified seconds to string conversion methods

* getHelpText tweaks, small refactor

* copy editing, limit hardcoded timeout list

* fix mixup of map & filter

* use Timeout as label and be done with it

Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
Co-authored-by: claudiaHash <49017601+claudiaHash@users.noreply.github.com>
Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
Co-authored-by: Claudia Holhos <clawww1996@gmail.com>
2021-01-22 17:12:48 +01:00
de1bc11efe
add ropsten to network detection utilities (#294)
* add ropsten to network detection utilities

* mention ropsten in publish warning

* bump @oceanprotocol/lib
2020-12-11 18:30:51 +01:00
960c5b3234
Update metadata, the proper way (#292)
* prototype view switching

* refactor, more UI

* formik form setup & data flow

* debug output, fixes, refactor

* description preview refactor

* publish/update date changes

* output created & updated date at top of asset
* use ddo.created & ddo.updated everywhere
* stop pushing metadata.main.datePublished

* owner check for edit link

* all the feedback states and switching between them: loading, error, success

* refactor feedback, one component for publish & edit

* action & date output fixes

* move all content, iterate form fields from it

* UI updates

* styling tweaks

* ddo dataflow refactor, more useAsset usage

* more useAsset usage

* form actions styling

* prepare edit history component

* metadata output tweaks

* copy

* safeguard against profile urls without protocol defined

* refetch ddo after edit

Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro>

* switch author for dataTokenOptions in metadata preview

* refactor

* copy

* showPricing fix

* validation: minimum characters for title & description

* disable submit button when validation fails

* form validation fixes

* manually trigger onChange validation in publish & edit forms

Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
2020-12-10 14:30:40 +01:00
5824d35ef7
move purgatory asset warning and hide most metadata (#287)
* move purgatory asset warning, hide most metadata

* move copy, less metadata

* refactor

* move copy

* delay fix
2020-12-02 14:37:01 +01:00
f843641a45
More helpful output for Add Liquidity (#277)
* prototype

* add copy

* value update fixes

* calculation fun

* move copy

* move copy

* cleanup

* use Decimal

* fix

Co-authored-by: alexcos20 <alex.coseru@gmail.com>
2020-12-02 12:44:07 +01:00
97ec21d2e0
404 page (#268) 2020-11-19 21:55:16 +01:00