_=>panic!("don't call session_start with a SessionConfig different from HeadlessV0 and a LocalBroker configured for Headless")
_=>panic!("don't call session_start with a SessionConfig different from HeadlessV0 when the LocalBroker is configured for Headless")
}
}
}
}
// TODO: implement SessionConfig::WithCredentials . VerifierType::Remote => it needs to establish a connection to remote here, then send the AppSessionStart in it.
// TODO: implement SessionConfig::WithCredentials . VerifierType::Remote => it needs to establish a connection to remote here, then send the AppSessionStart in it.
"ng:n":"GraphQL Query",// edited with https://github.com/graphql/graphiql or https://github.com/graphql-editor/graphql-editor, displayed with highlight.js
"ng:n":"GraphQL Query",// edited with https://github.com/graphql/graphiql or https://github.com/graphql-editor/graphql-editor, displayed with highlight.js
"ng:crdt":"Automerge",// see https://github.com/frappe/datatable
"ng:crdt":"Automerge",// see https://github.com/frappe/datatable
"ng:n":"Table",// see https://specs.frictionlessdata.io/table-schema displayed with pivot table see https://activetable.io/docs/data https://www.npmjs.com/package/pivottable https://socket.dev/npm/package/svelte-pivottable/alerts/0.2.0?tab=dependencies
"ng:n":"Table",// see https://specs.frictionlessdata.io/table-schema displayed with pivot table see https://activetable.io/docs/data https://www.npmjs.com/package/pivottable https://socket.dev/npm/package/svelte-pivottable/alerts/0.2.0?tab=dependencies
"ng:compat":["as:Place","wgs:*","gn:*","file/iana/application/geo+json","file/iana/application/vnd.mapbox-vector-tile"],// see also https://github.com/topojson/topojson
"ng:compat":["as:Place","wgs:*","gn:*","file:iana:application:geo+json","file:iana:application:vnd.mapbox-vector-tile"],// see also https://github.com/topojson/topojson
"doc/chemistry":{//GPL!! https://github.com/aeris-data/ChemDoodle/tree/master/ChemDoodleWeb-8.0.0 or https://github.com/aseevia/smiles-3d-vue
"doc:chemistry":{//GPL!! https://github.com/aeris-data/ChemDoodle/tree/master/ChemDoodleWeb-8.0.0 or https://github.com/aseevia/smiles-3d-vue
"ng:crdt":"YText",
"ng:crdt":"YText",
"ng:n":"Chemical",
"ng:n":"Chemical",
"ng:a":"simplified molecular-input line-entry system (SMILES)",
"ng:a":"simplified molecular-input line-entry system (SMILES)",
"ng:compat":["file/iana/chemical/x-daylight-smiles"]// https://en.wikipedia.org/wiki/SYBYL_line_notation and http://fileformats.archiveteam.org/wiki/Chemical_data
"ng:compat":["file:iana:chemical:x-daylight-smiles"]// https://en.wikipedia.org/wiki/SYBYL_line_notation and http://fileformats.archiveteam.org/wiki/Chemical_data
},
},
"doc/ancientscript":{//https://dn-works.com/ufas/
"doc:ancientscript":{//https://dn-works.com/ufas/
"ng:crdt":"YText",// use Unicode and special fonts
"ng:crdt":"YText",// use Unicode and special fonts
// see also https://polifonia-project.eu/wp-content/uploads/2022/01/Polifonia_D2.1_V1.0.pdf
// see also https://polifonia-project.eu/wp-content/uploads/2022/01/Polifonia_D2.1_V1.0.pdf
// Music ontology http://musicontology.com/docs/faq.html with data based on existing databases https://musicbrainz.org/doc/MusicBrainz_Database/Schema https://github.com/megaconfidence/open-song-database https://www.discogs.com/developers
// Music ontology http://musicontology.com/docs/faq.html with data based on existing databases https://musicbrainz.org/doc/MusicBrainz_Database/Schema https://github.com/megaconfidence/open-song-database https://www.discogs.com/developers
// see SRO https://www.researchgate.net/publication/350158531_From_a_Scrum_Reference_Ontology_to_the_Integration_of_Applications_for_Data-Driven_Software_Development
// see SRO https://www.researchgate.net/publication/350158531_From_a_Scrum_Reference_Ontology_to_the_Integration_of_Applications_for_Data-Driven_Software_Development
// or the MIT license <LICENSE-MITorhttp://opensource.org/licenses/MIT>,
// at your option. All files in the project carrying such
// notice may not be copied, modified, or distributed except
// according to those terms.
-->
<scriptlang="ts">
import {
branch_subscribe,
active_session,
cannot_load_offline,
online,
get_blob,
} from "../store";
import {
Pencil,
} from "svelte-heros-v2";
import {t} from "svelte-i18n";
import {Button,Progressbar,Spinner,Alert} from "flowbite-svelte";
import {inview} from 'svelte-inview';
import {cur_tab,nav_bar,can_have_header,header_icon,header_title,header_description,cur_branch,set_header_in_view,edit_header_button,cur_app,load_official_app} from "../tab";
import NavIcon from "./components/NavIcon.svelte";
"pins_no_match":"Du hast nicht zweimal die gleiche PIN eingegeben",
"pins_no_match":"Du hast nicht zweimal die gleiche PIN eingegeben",
"almost_done":"Wir sind fast fertig!",
"almost_done":"Wir sind fast fertig!",
"save_wallet_options":{
"save_wallet_options":{
"description":"Es gibt 4 Optionen, die du auswählen musst, bevor wir dein Wallet erstellen können. Diese Optionen können dir helfen, dein Wallet zu nutzen und zu behalten. Wir möchten aber auch vorsichtig mit deiner Sicherheit und Privatsphäre umgehen.<br /><br />Denk daran, dass du in jedem Fall, sobald dein Wallet erstellt ist, eine Datei herunterladen wirst, die du privat irgendwo auf deinem Gerät, USB-Stick oder einer Festplatte aufbewahren solltest. Dies ist die Standardmethode, mit der du dein Wallet nutzen und aufbewahren kannst. Die folgenden Wahlmöglichkeiten können dir dein Leben ein wenig erleichtern.",
"description":"Es gibt 2 Optionen, die du auswählen musst, bevor wir dein Wallet erstellen können.",
"trust":"Vertraust du diesem Gerät?",
"trust":"Vertraust du diesem Gerät?",
"trust_description":"Wenn ja, wenn dieses Gerät dir gehört oder von wenigen vertrauenswürdigen Personen deiner Familie oder deines Arbeitsplatzes genutzt wird und du dich in Zukunft wieder von diesem Gerät aus anmelden möchtest, dann kannst du dein Wallet auf diesem Gerät speichern. Wenn dieses Gerät hingegen öffentlich ist und von Fremden geteilt wird, speichere dein Wallet nicht hier.",
"trust_description":"Wenn ja, wenn dieses Gerät dir gehört oder von wenigen vertrauenswürdigen Personen deiner Familie oder deines Arbeitsplatzes genutzt wird und du dich in Zukunft wieder von diesem Gerät aus anmelden möchtest, dann kannst du dein Wallet auf diesem Gerät speichern. Wenn dieses Gerät hingegen öffentlich ist und von Fremden geteilt wird, speichere dein Wallet nicht hier.",
"trust_toggle":"Mein Wallet auf diesem Gerät speichern?",
"trust_toggle":"Mein Wallet auf diesem Gerät speichern?",
"not_found_details_online":"The document could not be found locally on this device, nor on the broker.",
"not_found_details_offline":"The document could not be found locally on this device, and it seems like you are offline, so it could not be retrieved from any broker neither.<br/><br/>If you are opening this document for the first time on this device, you have to be online now so the document can be fetched.<br/><br/> We will try connecting and fetching it every 20 seconds.",
"cannot_load_offline":"You are offline and using the web app. There is currently a limitation on local storage within the Web App, and you need to connect to the broker every time you login with the Web App.<br/><br/>For now, the Web App does not keep a local copy of your documents. due to the limit of 5MB in localStorage. We will remove this limitation soon. Stay tuned!<br/><br/>Check your connectivity status in the ",
"header":{
"buttons":{
"edit":"Edit title, icon, intro",
"edit_profile":"Edit profile",
"bookmarked":"Saved",
"all_docs":"All Docs",
"groups":"Groups",
"channels":"Channels",
"inbox":"Inbox",
"chat":"Chat"
}
},
"errors":{
"InvalidNuri":"Invalid NURI"
},
"errors_details":{
"InvalidNuri":"The provided NextGraph URI is invalid"
},
"graph":"Graph",
"graph":"Graph",
"discrete":"Document",
"discrete":"Document",
"menu":{
"menu":{
@ -152,6 +180,10 @@
"mc":{
"mc":{
"label":"Magic Carpet",
"label":"Magic Carpet",
"desc":"Opens the Magic Carpet (like a clipboard, but better)"
"desc":"Opens the Magic Carpet (like a clipboard, but better)"
},
"archive":{
"label":"Archive",
"desc":"Archive documents that you don't need anymore"
}
}
}
}
}
}
@ -299,8 +331,8 @@
"2":"In your wallet, we store all the permissions to access documents you have been granted with, or that you have created yourself.",
"2":"In your wallet, we store all the permissions to access documents you have been granted with, or that you have created yourself.",
"3":"In order to open it, you will need to enter your <b >pazzle</b > and a <b>PIN code</b> of 4 digits. Your personal pazzle (contraction of puzzle and password) is composed of 9 images you should remember. The order of the images is important too.",
"3":"In order to open it, you will need to enter your <b >pazzle</b > and a <b>PIN code</b> of 4 digits. Your personal pazzle (contraction of puzzle and password) is composed of 9 images you should remember. The order of the images is important too.",
"4":"Don't worry, it is easier to remember 9 images than a password like \"69$g&ms%C*%\", and it has the same strength as a complex password. The entropy of your pazzle is <b >66bits</b >, which is considered very high by all standards.",
"4":"Don't worry, it is easier to remember 9 images than a password like \"69$g&ms%C*%\", and it has the same strength as a complex password. The entropy of your pazzle is <b >66bits</b >, which is considered very high by all standards.",
"5":"You should only create <b>one unique wallet for yourself</b >. All your accounts, identities and permissions will be added to this unique wallet later on. Do not create another wallet if you already have one. Instead, you will <b>import</b> your existing wallet in all the apps and websites where you need it.",
"5":"You should only create <b>one unique wallet for yourself</b >. All your accounts, identities and permissions will be added to this unique wallet later on. Do not create another wallet if you already have one. Instead, you will <b>import</b> your unique existing wallet in all the apps and websites where you need it.",
"6":"Your wallet can be imported with the help of a small file that you download, or with a QRcode. In any case, you should never share this file or QRcode with anybody else.",
"6":"Your wallet can be transferred from one device to another with the help of a small file that you download, or with a QRcode, or with a TextCode that you copy/paste. In any case, you should never share this file or QRcode with anybody else.",
"7":"We at NextGraph will never see the content of your wallet. It is encrypted and we do not know your pazzle, so we cannot see what is inside.",
"7":"We at NextGraph will never see the content of your wallet. It is encrypted and we do not know your pazzle, so we cannot see what is inside.",
"8":"For the same reason, we won't be able to help you if you forget your pazzle or PIN code, or if you loose the wallet file. <span class=\"text-bold\"> There is no \"password recovery\" option</span > in this case. You can note your pazzle down on a piece of paper until you remember it, but don't forget to destroy this note after a while."
"8":"For the same reason, we won't be able to help you if you forget your pazzle or PIN code, or if you loose the wallet file. <span class=\"text-bold\"> There is no \"password recovery\" option</span > in this case. You can note your pazzle down on a piece of paper until you remember it, but don't forget to destroy this note after a while."
},
},
@ -319,7 +351,7 @@
},
},
"choose_broker":"Please choose one broker among the list",
"choose_broker":"Please choose one broker among the list",
"register_with_broker":"Register with {broker}",
"register_with_broker":"Register with {broker}",
"for_eu_citizens":"European Union Citizens",
"for_eu_citizens":"European Union Server",
"for_rest":"For the rest of the world",
"for_rest":"For the rest of the world",
"enter_invite_link":"Enter an invitation link",
"enter_invite_link":"Enter an invitation link",
"scan_invite_qr":"Scan an invitation QR-code",
"scan_invite_qr":"Scan an invitation QR-code",
@ -362,18 +394,18 @@
"pins_no_match":"You didn't enter the same PIN twice",
"pins_no_match":"You didn't enter the same PIN twice",
"almost_done":"We are almost done!",
"almost_done":"We are almost done!",
"save_wallet_options":{
"save_wallet_options":{
"description":"There are 4 options to choose before we can create your wallet. Those options can help you to use and keep your wallet. But we also want to be careful with your security and privacy.<br /><br />Remember that in any case, once your wallet will be created, you will download a file that you should keep privately somewhere on your device, USB key or hard-disk. This is the default way you can use and keep your wallet. Now let's look at some options that can make your life a bit easier.",
"description":"There are 2 options to choose before we can create your wallet.",
"trust":"Do you trust this device?",
"trust":"Do you trust this device?",
"trust_description":"If you do, if this device is yours, or it is used by a few trusted persons of your family or workplace, and you would like to login again from this device in the future, then you can save your wallet on this device. To the contrary, if this device is public and shared by strangers, do not save your wallet here.",
"trust_description":"If you do, if this device is yours, or it is used by a few trusted persons of your family or workplace, and you would like to login again from this device in the future, then you can save your wallet on this device. To the contrary, if this device is public and shared by strangers, do not save your wallet here.",
"trust_toggle":"Save my wallet on this device?",
"trust_toggle":"Yes, save my wallet on this device",
"device_name_description":"To see which devices you are connected with, every device should have a name (e.g. Bob's laptop). Please enter it here.",
"device_name_description":"To see which devices you are connected with, every device should have a name (e.g. Bob's laptop). Please enter it here.",
"cloud":"Keep a copy in the cloud?",
"cloud":"Keep a copy in the cloud?",
"cloud_description":"Are you afraid that you will loose the file containing your wallet? If this would happen, your wallet would be lost forever, together with all your documents. We can keep an encrypted copy of your wallet in our cloud. Only you will be able to download it with a special link. You would have to keep this link safely though. By selecting this option, you agree to the",
"cloud_description":"Are you afraid that you will loose the file containing your wallet? If this would happen, your wallet would be lost forever, together with all your documents. We can keep an encrypted copy of your wallet in our cloud. Only you will be able to download it with a special link. You would have to keep this link safely though. By selecting this option, you agree to the",
"cloud_toggle":"Save my wallet in the cloud?",
"cloud_toggle":"Save my wallet in the cloud?",
"cloud_tos":"Terms of Service of our cloud",
"cloud_tos":"Terms of Service of our cloud",
"pdf":"Create a PDF file of your wallet?",
"pdf":"Should we create a PDF file of your wallet?",
"pdf_description":"We can prepare for you a PDF file containing all the information of your wallet, unencrypted. You should print this file and then delete the PDF (and empty the trash). Keep this printed document in a safe place. It contains all the information to regenerate your wallet in case you lost access to it.",
"pdf_description":"We can prepare for you a PDF file containing all the information of your wallet, unencrypted. In the next screen, once your wallet is ready, you will be able to download such PDF file. You should print this file and then delete the PDF (and empty the trash). Keep this printed document in a safe place. It contains all the information to regenerate your wallet in case you lost access to it.",
"pdf_toggle":"Create a PDF of my wallet?",
"pdf_toggle":"Yes, create a PDF of my wallet",
"link":"Create a link to access your wallet easily?",
"link":"Create a link to access your wallet easily?",
"link_description":"When you want to use your wallet on the web or from other devices, we can help you find your wallet by creating a simple link accessible from anywhere. Only you will have access to this link. In order to do so, we will keep your wallet ID and some information about your broker on our cloud servers. If you prefer to opt out, just uncheck this option. By selecting this option, you agree to the",
"link_description":"When you want to use your wallet on the web or from other devices, we can help you find your wallet by creating a simple link accessible from anywhere. Only you will have access to this link. In order to do so, we will keep your wallet ID and some information about your broker on our cloud servers. If you prefer to opt out, just uncheck this option. By selecting this option, you agree to the",
"ng:b":"PostRichViewer",// https://www.npmjs.com/package/prosemirror-to-html-js or https://prosemirror.net/docs/ref/version/0.4.0.html#toDOM https://prosemirror.net/docs/ref/version/0.4.0.html#toHTML
"ng:b":"PostRichViewer",// https://www.npmjs.com/package/prosemirror-to-html-js or https://prosemirror.net/docs/ref/version/0.4.0.html#toDOM https://prosemirror.net/docs/ref/version/0.4.0.html#toHTML
Own(BranchId),// The repo is a store, so the overlay can be derived from its own ID. In this case, the branchId of the `overlay` branch is entered here.
OwnV0(StoreOverlayV0),// The repo is a store, so the overlay can be derived from its own ID. In this case, the branchId of the `overlay` branch is entered here as PubKey of the StoreOverlayV0 variants.
None,// this is used by Overlay and User BranchTypes
None,// this is used by Overlay, Store and User BranchTypes
}
implBranchCrdt{
pubfnname(&self)-> String{
matchself{
BranchCrdt::Graph(_)=>"Graph",
BranchCrdt::YMap(_)=>"YMap",
BranchCrdt::YArray(_)=>"YArray",
BranchCrdt::YXml(_)=>"YXml",
BranchCrdt::YText(_)=>"YText",
BranchCrdt::Automerge(_)=>"Automerge",
BranchCrdt::Elmer(_)=>"Elmer",
BranchCrdt::None=>panic!("BranchCrdt::None does not have a name"),
}
.to_string()
}
pubfnclass(&self)-> &String{
matchself{
BranchCrdt::Graph(c)
|BranchCrdt::YMap(c)
|BranchCrdt::YArray(c)
|BranchCrdt::YXml(c)
|BranchCrdt::YText(c)
|BranchCrdt::Automerge(c)
|BranchCrdt::Elmer(c)=>c,
BranchCrdt::None=>panic!("BranchCrdt::None does not have a class"),
}
}
pubfnfrom(name: String,class: String)-> Self{
matchname.as_str(){
"Graph"=>BranchCrdt::Graph(class),
"YMap"=>BranchCrdt::YMap(class),
"YArray"=>BranchCrdt::YArray(class),
"YXml"=>BranchCrdt::YXml(class),
"YText"=>BranchCrdt::YText(class),
"Automerge"=>BranchCrdt::Automerge(class),
"Elmer"=>BranchCrdt::Elmer(class),
_=>panic!("Invalid CRDT name"),
}
}
}
}
/// Branch definition
/// Branch definition
@ -1318,7 +1396,7 @@ pub struct BranchV0 {
/// Branch public key ID
/// Branch public key ID
pubid: PubKey,
pubid: PubKey,
pubcontent_type: BranchContentType,
pubcrdt: BranchCrdt,
/// Reference to the repository commit
/// Reference to the repository commit
pubrepo: ObjectRef,
pubrepo: ObjectRef,
@ -1383,8 +1461,7 @@ pub enum BranchType {
Comments,
Comments,
BackLinks,
BackLinks,
Context,
Context,
Ontology,
//Ontology,
Transactional,// this could have been called OtherTransactional, but for the sake of simplicity, we use Transactional for any branch that is not the Main one.
Transactional,// this could have been called OtherTransactional, but for the sake of simplicity, we use Transactional for any branch that is not the Main one.
Root,// only used for BranchInfo
Root,// only used for BranchInfo
//Unknown, // only used temporarily when loading a branch info from commits (Branch commit, then AddBranch commit)
//Unknown, // only used temporarily when loading a branch info from commits (Branch commit, then AddBranch commit)
@ -1416,7 +1493,7 @@ impl fmt::Display for BranchType {
Self::Comments=>"Comments",
Self::Comments=>"Comments",
Self::BackLinks=>"BackLinks",
Self::BackLinks=>"BackLinks",
Self::Context=>"Context",
Self::Context=>"Context",
Self::Ontology=>"Ontology",
//Self::Ontology => "Ontology",
//Self::Unknown => "==unknown==",
//Self::Unknown => "==unknown==",
}
}
)
)
@ -1428,17 +1505,24 @@ impl fmt::Display for BranchType {
/// DEPS: if update branch: previous AddBranch commit of the same branchId
/// DEPS: if update branch: previous AddBranch commit of the same branchId
>All the data you exchange with us while using the broker is
>All the data you exchange with us while using this broker is
end-to-end encrypted and we do not have access to your
end-to-end encrypted and we do not have access to your
decryption keys, meaning that we cannot see the content of your
decryption keys, meaning that we cannot see the content of your
documents.</span
documents.</span
@ -279,7 +279,7 @@
to the broker. We collect general purpose information about your
to the broker. We collect general purpose information about your
device (OS version, browser version, and if you use the app, the
device (OS version, browser version, and if you use the app, the
version and date of last update). We do not have access to any
version and date of last update). We do not have access to any
unique tracking identifier of your device (like Android MAID or
unique tracking identifier of your device (like Android MAID/AAID or
iPhone IDFA). We could nevertheless be asked by law enforcement
iPhone IDFA). We could nevertheless be asked by law enforcement
authorities, depending on the jurisdiction of the server, to log
authorities, depending on the jurisdiction of the server, to log
the IP you use when connecting to the broker, and/or to provide
the IP you use when connecting to the broker, and/or to provide
@ -305,12 +305,18 @@
/>
/>
</svg>
</svg>
<span>
<span>
You can delete your account with us at any time by going to the
You can delete your account with us at any time by opening your NextGraph application, logging in,
link <span
and entering in the User Panel, then Accounts, then under Brokers "delete registration". Before deleting your account with us, make sure you register to another broker before, otherwise you will not be able to sync or share your data with any other users or devices</span
style="font-weight: 500;
>
color: #646cff;">account.{domain}/#/delete</span
</li>
> or by entering in your NextGraph application and selecting the
<liclass="flex space-x-3">
menu, then Accounts, then under broker "delete registration"</span
Q: I heard that with NextGraph there will be no more ToS to accept. Why then are there some ToS here? <br/> A: You are right that with NextGraph we can do without ToS, when the user is connecting to a self-hosted broker or to an NGbox. As those 2 options are not available yet, we only offer our public Broker Service Provider for now, which needs some ToS to be accepted. Very soon those 2 additional options will be available, but some users might still prefer using our brokers. In any case, the ToS here are minimal and with end-to-end encryption, your data is unreadable to us anyway.</span
>
>
</li>
</li>
<liclass="flex space-x-3">
<liclass="flex space-x-3">
@ -363,11 +369,11 @@
<span
<span
>By agreeing to those terms, you allow this software to store
>By agreeing to those terms, you allow this software to store
some personal data locally in localStorage, the equivalent of
some personal data locally on this device, in localStorage.
a cookie. This cookie contains your wallet and is never sent
This data contains your wallet and is never sent
to us. If you delete this cookie without keeping a copy of
to us. It only stays on this device or any other device where you will import your wallet.
your wallet somewhere else, then you will permanently loose
If you delete this data without keeping a copy of
your wallet.
your wallet somewhere else, then access to your wallet and all its documents will be permanently lost.