parent
dc4cf5ae13
commit
2b9b9107a5
@ -1,12 +1,116 @@ |
|||||||
# Changelog |
# Changelog |
||||||
|
|
||||||
All notable changes to this project will be documented in this file. |
Access the sub-sections directly : |
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
[App](#app) - [SDK](#sdk) - [Broker](#broker) - [CLI](#cli) |
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
|
||||||
|
|
||||||
## [0.1.0-preview.7] |
## App |
||||||
|
|
||||||
### Added |
### App [0.1.0-preview.7] - 2024-08-15 |
||||||
|
|
||||||
- |
#### Added |
||||||
|
|
||||||
|
- Wallet Creation : Downlaod Recovery PDF |
||||||
|
- Wallet Creation : Download wallet file |
||||||
|
- Wallet Login : with pazzle |
||||||
|
- Wallet Login : correct errors while entering pazzle |
||||||
|
- Wallet Login : with mnemonic |
||||||
|
- Wallet Login : in-memory session (save nothing locally) |
||||||
|
- Wallet Import : from file |
||||||
|
- Wallet Import : from QR code |
||||||
|
- Wallet Import : from TextCode |
||||||
|
- User Panel : Online / Offline status |
||||||
|
- User Panel : Toggle Personal Connection |
||||||
|
- User Panel : Logout |
||||||
|
- User Panel / Wallet : Export by scanning QRCode |
||||||
|
- User Panel / Wallet : Export by generating QRCode |
||||||
|
- User Panel / Wallet : Export by generating TextCode |
||||||
|
- User Panel / Wallet : Download file |
||||||
|
- User Panel / Accounts Info : basic info (not accurate) |
||||||
|
- Document Menu : switch Viewer / Editor |
||||||
|
- Document Menu : switch Graph / Document |
||||||
|
- Document Menu : Live editing |
||||||
|
- Document Menu : Upload binary file + Attachements and Files pane |
||||||
|
- Document Menu : History pane |
||||||
|
- Add Document : Save in current Store |
||||||
|
- Document class: Source Code: Rust, JS, TS, Svelte, React |
||||||
|
- Document class: Data : Graph, Container, JSON, Array, Object |
||||||
|
- Document class: Post (rich text) |
||||||
|
- Document class: Markdown (rich text) |
||||||
|
- Document class: Plain Text |
||||||
|
- A11Y : limited ARIA and tabulation navigation on all pages. not tested with screen-reader. |
||||||
|
- I18N : english |
||||||
|
- I18N : german (partial) |
||||||
|
|
||||||
|
## SDK |
||||||
|
|
||||||
|
### SDK [0.1.0-preview.6] - 2024-08-15 |
||||||
|
|
||||||
|
#### Added |
||||||
|
|
||||||
|
- js : session_start |
||||||
|
- js : session_start_remote |
||||||
|
- js : session_stop |
||||||
|
- js : user_connect |
||||||
|
- js : user_disconnect |
||||||
|
- js : discrete_update |
||||||
|
- js : sparql_update |
||||||
|
- js : sparql_query (returns SPARQL Query Results JSON Format, a list of turtle triples, or a boolean ) |
||||||
|
- js : branch_history |
||||||
|
- js : app_request_stream (fetch and subscribe) |
||||||
|
- js : app_request |
||||||
|
- js : doc_create |
||||||
|
- js : file_get |
||||||
|
- js : upload_start |
||||||
|
- js : upload_done |
||||||
|
- js : upload_chunk |
||||||
|
- nodejs : init_headless |
||||||
|
- nodejs : session_headless_start |
||||||
|
- nodejs : session_headless_stop |
||||||
|
- nodejs : sparql_query (returns SPARQL Query Results JSON Format, RDF-JS data model, or a boolean) |
||||||
|
- nodejs : discrete_update |
||||||
|
- nodejs : sparql_update |
||||||
|
- nodejs : rdf_dump |
||||||
|
- nodejs : admin_create_user |
||||||
|
- nodejs : doc_create |
||||||
|
- nodejs : file_get |
||||||
|
- nodejs : file_put |
||||||
|
- rust : session_start |
||||||
|
- rust : session_stop |
||||||
|
- rust : app_request_stream, gives access to: |
||||||
|
- fetch and subscribe |
||||||
|
- file_get |
||||||
|
- rust : app_request, gives access to: |
||||||
|
- create_doc |
||||||
|
- sparql_query |
||||||
|
- sparql_update |
||||||
|
- discrete_update |
||||||
|
- rdf_dump |
||||||
|
- history |
||||||
|
- file_put |
||||||
|
|
||||||
|
## Broker |
||||||
|
|
||||||
|
### Broker [0.1.0-preview.7] - 2024-08-15 |
||||||
|
|
||||||
|
#### Added |
||||||
|
|
||||||
|
- listen on localhost |
||||||
|
- listen on domain |
||||||
|
- listen on private LAN |
||||||
|
- listen on public IP |
||||||
|
- invite-admin |
||||||
|
- broker service provider : add invitation for user |
||||||
|
- serve web app |
||||||
|
|
||||||
|
## CLI |
||||||
|
|
||||||
|
### CLI [0.1.0-preview.7] - 2024-08-15 |
||||||
|
|
||||||
|
#### Added |
||||||
|
|
||||||
|
- gen-key |
||||||
|
- admin : add/remove admin user |
||||||
|
- admin : add invitation |
||||||
|
- admin : list users |
||||||
|
- admin : list invitations |
||||||
|
@ -0,0 +1,187 @@ |
|||||||
|
# Contributors or compilation guide |
||||||
|
|
||||||
|
- [Install Rust](https://www.rust-lang.org/tools/install) minimum required MSRV 1.74.0 |
||||||
|
- [Install Nodejs](https://nodejs.org/en/download/) |
||||||
|
- [Install LLVM](https://rust-lang.github.io/rust-bindgen/requirements.html) |
||||||
|
|
||||||
|
On openbsd, for LLVM you need to choose llvm-17. |
||||||
|
|
||||||
|
until this [PR](https://github.com/rustwasm/wasm-pack/pull/1271) is accepted, will have to install wasm-pack this way: |
||||||
|
|
||||||
|
``` |
||||||
|
cargo install wasm-pack --git https://github.com/rustwasm/wasm-pack.git --rev c2b663f25abe50631a236d57a8c6d7fd806413b2 |
||||||
|
``` |
||||||
|
|
||||||
|
then : |
||||||
|
|
||||||
|
create a file called `nextgraph/src/local_broker_dev_env.rs` with the content : |
||||||
|
|
||||||
|
``` |
||||||
|
pub const PEER_ID: &str = "FtdzuDYGewfXWdoPuXIPb0wnd0SAg1WoA2B14S7jW3MA"; |
||||||
|
``` |
||||||
|
|
||||||
|
once your ngd server will run in your dev env, replace the above string with the actual PEER ID of your ngd server. |
||||||
|
|
||||||
|
``` |
||||||
|
cargo install cargo-watch |
||||||
|
// optionally, if you want a Rust REPL: cargo install evcxr_repl |
||||||
|
git clone git@git.nextgraph.org:NextGraph/nextgraph-rs.git |
||||||
|
// or if you don't have a git account: git clone https://git.nextgraph.org/NextGraph/nextgraph-rs.git |
||||||
|
cd nextgraph-rs |
||||||
|
cargo build |
||||||
|
``` |
||||||
|
|
||||||
|
### Packages |
||||||
|
|
||||||
|
The crates are organized as follow : |
||||||
|
|
||||||
|
- [nextgraph](nextgraph/README.md) : Client library. Use this crate to embed NextGraph client in your Rust application |
||||||
|
- [ngcli](ngcli/README.md) : CLI tool to manipulate the local documents and repos and administrate the server |
||||||
|
- [ngd](ngd/README.md) : binary executable of the daemon (that can run a broker, verifier and/or Rust services) |
||||||
|
- [ng-app](ng-app/README.md) : all the native apps, based on Tauri, and the official web app. |
||||||
|
- [ng-sdk-js](ng-sdk-js/DEV.md) : contains the JS SDK, with example for: web app, react app, or node service. |
||||||
|
- ng-repo : Repositories common library |
||||||
|
- ng-net : Network common library |
||||||
|
- ng-oxigraph : Fork of OxiGraph. contains our CRDT of RDF |
||||||
|
- ng-verifier : Verifier library, that exposes the document API to the app |
||||||
|
- ng-wallet : keeps the secret keys of all identities of the user in a safe wallet |
||||||
|
- ng-broker : Core and Server Broker library |
||||||
|
- ng-client-ws : Websocket client library |
||||||
|
- ng-storage-rocksdb : RocksDB backed stores. see also dependency [repo here](https://git.nextgraph.org/NextGraph/rust-rocksdb) |
||||||
|
- ngone : server for nextgraph.one. helps user bootstrap into the right app. Not useful to you. Published here for transparency |
||||||
|
- ngaccount : server for nextgraph's Broker Service Provider account manager. Not useful to you. Published here for transparency |
||||||
|
|
||||||
|
### Run |
||||||
|
|
||||||
|
Build & run debug executables: |
||||||
|
|
||||||
|
``` |
||||||
|
// runs the daemon |
||||||
|
cargo run --bin ngd |
||||||
|
|
||||||
|
// runs the client |
||||||
|
cargo run --bin ngcli |
||||||
|
``` |
||||||
|
|
||||||
|
For the apps, see the [README](ng-app/README.md) |
||||||
|
|
||||||
|
### Test |
||||||
|
|
||||||
|
Please test by following this order (as we need to generate some files locally) |
||||||
|
|
||||||
|
``` |
||||||
|
cargo test --package nextgraph -r --lib -- local_broker::test::gen_wallet_for_test --show-output --nocapture |
||||||
|
cargo test -r |
||||||
|
cargo test --package nextgraph -r --lib -- local_broker::test::import_session_for_test_to_disk --show-output --nocapture --ignored |
||||||
|
``` |
||||||
|
|
||||||
|
Test a single crate: |
||||||
|
|
||||||
|
``` |
||||||
|
cargo test --package ng-repo --lib -- --show-output --nocapture |
||||||
|
cargo test --package ng-wallet --lib -- --show-output --nocapture |
||||||
|
cargo test --package ng-verifier --lib -- --show-output --nocapture |
||||||
|
cargo test --package ng-sdk-js --lib -- --show-output --nocapture |
||||||
|
cargo test --package ng-broker --lib -- --show-output --nocapture |
||||||
|
cargo test --package ng-client-ws --lib -- --show-output --nocapture |
||||||
|
``` |
||||||
|
|
||||||
|
Test WASM websocket |
||||||
|
|
||||||
|
First you need to install the `chromedriver` that matches your version of Chrome |
||||||
|
|
||||||
|
https://googlechromelabs.github.io/chrome-for-testing/ |
||||||
|
|
||||||
|
then: |
||||||
|
|
||||||
|
``` |
||||||
|
cd ng-sdk-js |
||||||
|
wasm-pack test --chrome --headless |
||||||
|
``` |
||||||
|
|
||||||
|
Test Rust websocket |
||||||
|
|
||||||
|
``` |
||||||
|
cargo test --package ng-client-ws --lib -- remote_ws::test::test_ws --show-output --nocapture |
||||||
|
``` |
||||||
|
|
||||||
|
### Build release binaries |
||||||
|
|
||||||
|
First you will need to have the production build of the frontend. |
||||||
|
If you do not want to setup a whole development environment for the frontend, you can use the precompiled release of the frontend available in `dist-file.tar.gz` that you can download from the release page. |
||||||
|
|
||||||
|
``` |
||||||
|
cd ng-app |
||||||
|
tar -xzf dist-file.tar.gz |
||||||
|
cd .. |
||||||
|
``` |
||||||
|
|
||||||
|
Otherwise, build from source the single-file release of ng-app |
||||||
|
|
||||||
|
``` |
||||||
|
npm install -g pnpm |
||||||
|
cd ng-sdk-js |
||||||
|
wasm-pack build --target bundler |
||||||
|
cd ../ng-app |
||||||
|
pnpm install |
||||||
|
pnpm webfilebuild |
||||||
|
cd .. |
||||||
|
``` |
||||||
|
|
||||||
|
then build the ngd daemon |
||||||
|
|
||||||
|
``` |
||||||
|
cargo build -r -p ngd |
||||||
|
``` |
||||||
|
|
||||||
|
you can then find the binary `ngd` in `target/release` |
||||||
|
|
||||||
|
The CLI tool can be obtained with : |
||||||
|
|
||||||
|
``` |
||||||
|
cargo build -r -p ngcli |
||||||
|
``` |
||||||
|
|
||||||
|
you can then use the binary `target/release/ngcli` |
||||||
|
|
||||||
|
For usage, see the documentation [here](ngd/README.md). |
||||||
|
|
||||||
|
For building the apps, see this [documentation](ng-app/README.md). |
||||||
|
|
||||||
|
#### OpenBSD |
||||||
|
|
||||||
|
On OpenBSD, a conflict between the installed LibreSSL library and the reqwest crate, needs a bit of attention. |
||||||
|
Before compiling the daemon for OpenBSD, please comment out lines 41-42 of `ng-net/Cargo.toml`. This will be solved soon by using `resolver = "2"`. |
||||||
|
|
||||||
|
``` |
||||||
|
#[target.'cfg(target_arch = "wasm32")'.dependencies] |
||||||
|
#reqwest = { version = "0.11.18", features = ["json","native-tls-vendored"] } |
||||||
|
``` |
||||||
|
|
||||||
|
to use the app on OpenBSD, you need to run the daemon locally. |
||||||
|
|
||||||
|
``` |
||||||
|
ngd -l 14400 --save-key |
||||||
|
``` |
||||||
|
|
||||||
|
then open chrome (previously installed with `doas pkg_add chrome`) |
||||||
|
|
||||||
|
``` |
||||||
|
env ENABLE_WASM=1 chrome --enable-wasm --process-per-site --new-window --app=http://localhost:14400 |
||||||
|
``` |
||||||
|
|
||||||
|
### Generate documentation |
||||||
|
|
||||||
|
Generate documentation for all packages without their dependencies: |
||||||
|
|
||||||
|
``` |
||||||
|
cargo doc --no-deps |
||||||
|
``` |
||||||
|
|
||||||
|
The generated documentation can be found in `target/doc/nextgraph`. |
||||||
|
|
||||||
|
### Contributions license |
||||||
|
|
||||||
|
Unless you explicitly state otherwise, any contribution intentionally submitted |
||||||
|
for inclusion in the work by you shall be dual licensed as below, without any |
||||||
|
additional terms or conditions. |
@ -0,0 +1,39 @@ |
|||||||
|
# Release 0.1.0-preview.7 |
||||||
|
|
||||||
|
_15 August 2024_ |
||||||
|
|
||||||
|
This release is not stable and should not be used for any productive work or to store personal documents. This release is meant as a **preview** of what NextGraph can do as of today and hints at its future potential. |
||||||
|
|
||||||
|
**Please note: The binary format of the Documents or Wallet might change, that might result in a complete loss of data. We will not provide migration scripts as the APIs and formats aren't stable yet.** |
||||||
|
|
||||||
|
If you previously installed any NextGraph app on your device, please uninstall it first, by following the normal uninstall procedure specific to your OS. If you have previously created a Wallet, it will not work with this new release. Please create a new one now. |
||||||
|
|
||||||
|
## App |
||||||
|
|
||||||
|
Please read the : |
||||||
|
|
||||||
|
- [Getting started](https://docs.nextgraph.org/en/getting-started) guide. |
||||||
|
- list of [features](https://docs.nextgraph.org/en/features). |
||||||
|
- the [CRDTs page](https://docs.nextgraph.org/en/framework/crdts) in the framework docs. |
||||||
|
|
||||||
|
## SDK |
||||||
|
|
||||||
|
The SDK for is not documented yet. |
||||||
|
|
||||||
|
## Broker |
||||||
|
|
||||||
|
The `ngd` daemon is release with the basic features listed in `ngd --help`. More documentation will come soon |
||||||
|
|
||||||
|
## CLI |
||||||
|
|
||||||
|
The `ngcli` daemon is release with the basic features listed in `ngcli --help`. More documentation will come soon. |
||||||
|
|
||||||
|
## Limitations of this release |
||||||
|
|
||||||
|
- you cannot share documents with other users. Everything is ready for this internally, but there is still some wiring to do that will take some more time. |
||||||
|
- the Rich text editors (both for normal Post/Article and in Markdown) do not let you insert images nor links to other documents. |
||||||
|
- your documents listed in your 3 stores do not display any title or content type, making it difficult to understand which document is which by just reading the 7-character ID of the documents. This will be addressed very quickly, as soon as the "Header branch" feature will be implemented. For the same reason (lack of this feature), and in the web-app only, when you will have created many docs with many modifications, the loading of your app can take some time because it is loading all the content of all the docs at startup. The native apps are already working well and do not suffer from this caveat. For the web-app, it is not the intended behaviour of course, but we need the "Header branch" feature to fix this. |
||||||
|
- The webapp has some limitation for now when it is offline, because it doesn't have a UserStorage. it works differently than the native apps, as it has to replay all the commits at every load. This will stay like that for now, as the feature "Web UserStorage" based on IndexedDB will take soe time to be coded. |
||||||
|
- JSON-LD isn't ready yet as we need the "Context branch" feature in order to enter the list of ontologies each document is based on. |
||||||
|
|
||||||
|
[See the full changelog here](CHANGELOG.md) |
Loading…
Reference in new issue