From c4c9746a8e059bc718507bd1c3a73539e7c589d2 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:17:56 +0530 Subject: [PATCH 01/14] update pear info (#99) Co-authored-by: Vivek Singh --- reference/pear/cli.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/reference/pear/cli.md b/reference/pear/cli.md index 3df802a..e5decea 100644 --- a/reference/pear/cli.md +++ b/reference/pear/cli.md @@ -115,16 +115,20 @@ Use this to indicate production release points. --checkout=n|current Set a custom release length (version) ``` -## `pear info [key]` +## `pear info [channel|key]` Read project information. -Supply a key to view application info +Supply a key or channel to view application information. -Without a key pear info shows Pear info +Supply no argument to view platform information. ``` - --json Newline delimited JSON output + --changelog View changelog only + --full-changelog Full record of changes + --metadata View metadata only + --key View key only + --json Newline delimited JSON output ``` ## `pear dump [dir]` From 9ebb687611bc404d3f6b25e61a7b4659049519d9 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:07:38 +0530 Subject: [PATCH 02/14] add trust dialog info (#102) * add trust dialog info * fixes * fix warning note --- assets/trust-dialog.png | Bin 0 -> 35039 bytes guide/sharing-a-pear-app.md | 22 +++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 assets/trust-dialog.png diff --git a/assets/trust-dialog.png b/assets/trust-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9c63e0185a6a17f249560674b37f07685e7624 GIT binary patch literal 35039 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 W+6ch9Ey93-ev+cHB2_|q0sjYB)Rl7p literal 0 HcmV?d00001 diff --git a/guide/sharing-a-pear-app.md b/guide/sharing-a-pear-app.md index b280f66..952e04a 100644 --- a/guide/sharing-a-pear-app.md +++ b/guide/sharing-a-pear-app.md @@ -93,7 +93,27 @@ With another machine or friend that has `pear` installed execute the `pear run < pear run pear://nykmkrpwgadcd8m9x5khhh43j9izj123eguzqg3ygta7yn1s379o ``` -When `pear run` is executed on the peer machine the staged application should open on that peer. If the application is being opened for the first time on the peer it has no state at all, so the application may show a loader until it's ready to reveal. +When `pear run` is executed on the peer machine there will be a security prompt to add the key to a list of trusted applications by typing 'TRUST'. + +When running a terminal application using an untrusted key for the first time the prompt would be: + +``` +pear run pear://nykmkrpwgadcd8m9x5khhh43j9izj123eguzqg3ygta7yn1s379o +✖ Key pear://nykmkrpwgadcd8m9x5khhh43j9izj123eguzqg3ygta7yn1s379o is not known + +Be sure that software is trusted before running it + +Type "TRUST" to allow execution or anything else to exit + +Trust application? +``` +The trust dialog is a security mechanism in Pear that appears when the user tries to run an application from an unknown or untrusted key for the first time. In case that the app is run in detached mode, for example, when clicking on a pear link in the browser, the trust dialog is a GUI (Graphical User Interface). + +![Trust dialog](../assets/trust-dialog.png) + +> During development with `pear dev`, applications are automatically trusted, as they are assumed to be safe for testing purposes. Trust dialog can be suppressed using the `--no-ask-trust` flag with `pear run` in which case the application will automatically decline unknown keys. + +The application has no state when it's opened for the first time, so the application may show a loader until it's ready to reveal. The application staging machine that is running the seeding process should show output similar to: From 33dd6e8c8ba6916d83a07e6c1fa188c0ecb19ece Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:48:35 +0530 Subject: [PATCH 03/14] remove pear repl (#103) Co-authored-by: Vivek Singh --- reference/pear/cli.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/reference/pear/cli.md b/reference/pear/cli.md index e5decea..64750f8 100644 --- a/reference/pear/cli.md +++ b/reference/pear/cli.md @@ -152,12 +152,6 @@ and then becomes the sidecar. --mem memory mode: RAM corestore --attach-boot-io include initial sidecar I/O (if applicable) ``` - -## `pear repl` - -Connect to a Read-Eval-Print-Loop session with sidecar. - -A key is printed out, use with repl-swarm module to connect. ## `pear versions` From e5c142c9b325dd3733554334d7103292dabbb425 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Mon, 6 May 2024 13:24:01 +0530 Subject: [PATCH 04/14] update modules and update package.json (#106) * update modules and update package.json * fix --- .../bare/nodejs-compatibility-with-bare.md | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/reference/bare/nodejs-compatibility-with-bare.md b/reference/bare/nodejs-compatibility-with-bare.md index 23dbe5a..693eee8 100644 --- a/reference/bare/nodejs-compatibility-with-bare.md +++ b/reference/bare/nodejs-compatibility-with-bare.md @@ -1,22 +1,32 @@ # Node.js Compatibility with Bare -Bare offers seamless compatibility with Node.js counterparts. +Bare offers great compatibility with Node.js counterparts. Most of the modules and APIs used by developers are covered and supported. ## Currently supported modules - +* `assert`: [`bare-assert`](https://github.com/holepunchto/bare-assert) (through `npm:bare-node-assert)` +* `buffer`: [`bare-buffer`](https://github.com/holepunchto/bare-buffer) (through `npm:bare-node-buffer)` * `child_process`: [`bare-subprocess`](https://github.com/holepunchto/bare-subprocess) (through `npm:bare-node-child-process)` * `console`: [`bare-console`](https://github.com/holepunchto/bare-console) (through `npm:bare-node-console)` +* `crypto`: [`bare-crypto`](https://github.com/holepunchto/bare-crypto) (through `npm:bare-node-crypto)` * `events`: [`bare-events`](https://github.com/holepunchto/bare-events) (through `npm:bare-node-events)` * `fs`: [`bare-fs`](https://github.com/holepunchto/bare-fs) (through `npm:bare-node-fs)` * `http`: [`bare-http1`](https://github.com/holepunchto/bare-http1) (through `npm:bare-node-http)` +* `https`: [`bare-https`](https://github.com/holepunchto/bare-https) (through `npm:bare-node-https)` * `inspector`: [`bare-inspector`](https://github.com/holepunchto/bare-inspector) (through `npm:bare-node-inspector)` +* `module`: [`bare-module`](https://github.com/holepunchto/bare-module) (through `npm:bare-node-module)` * `os`: [`bare-os`](https://github.com/holepunchto/bare-os) (through `npm:bare-node-os)` * `path`: [`bare-path`](https://github.com/holepunchto/bare-path) (through `npm:bare-node-path)` * `process`: [`bare-process`](https://github.com/holepunchto/bare-process) (through `npm:bare-node-process)` * `readline`: [`bare-readline`](https://github.com/holepunchto/bare-readline) (through `npm:bare-node-readline)` * `repl`: [`bare-repl`](https://github.com/holepunchto/bare-repl) (through `npm:bare-node-repl)` +* `stream`: [`bare-stream`](https://github.com/holepunchto/bare-stream) (through `npm:bare-node-stream)` +* `timers`: [`bare-timers`](https://github.com/holepunchto/bare-timers) (through `npm:bare-node-timers)` +* `tls`: [`bare-tls`](https://github.com/holepunchto/bare-tls) (through `npm:bare-node-tls)` * `tty`: [`bare-tty`](https://github.com/holepunchto/bare-tty) (through `npm:bare-node-tty)` * `url`: [`bare-url`](https://github.com/holepunchto/bare-url) (through `npm:bare-node-url)` +* `util`: [`bare-utils`](https://github.com/holepunchto/bare-utils) (through `npm:bare-node-util)` +* `worker_threads`: [`bare-worker`](https://github.com/holepunchto/bare-worker) (through `npm:bare-node-worker-threads)` +* `zlib`: [`bare-zlib`](bhttps://github.com/holepunchto/bare-zlib) (through `npm:bare-node-zlib)` ## Config for the Node.js stdlib @@ -25,18 +35,28 @@ To get the full Node.js compatible layer that Bare currently supports add the fo ```json { "dependencies": { + "bare-assert": "^1.0.1", + "assert": "npm:bare-node-assert", + "bare-buffer": "^2.3.0", + "buffer": "npm:bare-node-buffer", "bare-subprocess": "^2.0.4", "child_process": "npm:bare-node-child-process", "bare-console": "^4.1.0", "console": "npm:bare-node-console", + "bare-crypto": "^1.0.0", + "crypto": "npm:bare-node-crypto", "bare-events": "^2.2.0", "events": "npm:bare-node-events", "bare-fs": "^2.1.5", "fs": "npm:bare-node-fs", "bare-http1": "^2.0.3", "http": "npm:bare-node-http", + "bare-https": "^1.0.0", + "https": "npm:bare-node-https", "bare-inspector": "^1.1.2", "inspector": "npm:bare-node-inspector", + "bare-module": "^1.2.5", + "module": "npm:bare-node-module", "bare-os": "^2.2.0", "os": "npm:bare-node-os", "bare-path": "^2.1.0", @@ -47,10 +67,22 @@ To get the full Node.js compatible layer that Bare currently supports add the fo "readline": "npm:bare-node-readline", "bare-repl": "^1.0.3", "repl": "npm:bare-node-repl", + "bare-stream": "^1.0.0", + "stream": "npm:bare-node-stream", + "bare-timers" : "^1.0.0", + "timers": "npm:bare-node-timers", + "bare-tls": "^1.0.0", + "tls": "npm:bare-node-tls", "bare-tty": "^3.2.0", "tty": "npm:bare-node-tty", "bare-url": "^1.0.7", - "url": "npm:bare-node-url" + "url": "npm:bare-node-url", + "bare-utils": "^1.0.0", + "util": "npm:bare-node-util", + "bare-worker": "^1.0.0", + "worker_threads": "npm:bare-node-worker-threads", + "bare-zlib": "^1.0.0", + "zlib": "npm:bare-node-zlib" } } ``` From 61da1fed26086377e9dd386d34ab23d654a151cb Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Thu, 9 May 2024 18:19:23 +0530 Subject: [PATCH 05/14] add pear exit (#107) --- reference/pear/api.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reference/pear/api.md b/reference/pear/api.md index 8572c14..35e0ad5 100644 --- a/reference/pear/api.md +++ b/reference/pear/api.md @@ -362,6 +362,10 @@ will be waited upon until resolution before calling the next teardown handler. Restart the application. +### `Pear.exit(code)` + +Exits the process with the provided exit code. + ### `Pear.updates(listener ) => streamx.Readable` The `listener` function is called for every incoming update with an `update` object of the form: From 0972c04a5b6b3d3a4d94ebcc74d753e5059b3196 Mon Sep 17 00:00:00 2001 From: David Mark Clements Date: Tue, 14 May 2024 17:21:21 +0200 Subject: [PATCH 06/14] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a023e62..755220a 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ Welcome to the Internet of Peers ## Table of Contents -### Pear runtime +### Pear Runtime -References for utilizing the Pear runtime. +References for Pear Runtime. * [Command-Line-Interface (CLI)](./reference/pear/cli.md) * [Application-Programming-Interface (API)](./reference/pear/api.md) From adfa3789483c3fbbd7a62fdbdc94f1aff1ddd6f1 Mon Sep 17 00:00:00 2001 From: David Mark Clements Date: Tue, 14 May 2024 17:22:04 +0200 Subject: [PATCH 07/14] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 755220a..5bfb12f 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ References for Pear Runtime. * [Application-Programming-Interface (API)](./reference/pear/api.md) * [Application Configuration](./reference/pear/configuration.md) -> The Pear runtime uses [Bare](https://github.com/holepunchto/bare) JavaScript runtime, which is a small and modular JavaScript runtime for desktop and mobile. To learn more, see [Bare Reference](./reference/bare/overview.md). +> The Pear Runtime uses [Bare](https://github.com/holepunchto/bare) JavaScript runtime, which is a small and modular JavaScript runtime for desktop and mobile. To learn more, see [Bare Reference](./reference/bare/overview.md). ### Guides -Guides on using the pear runtime to build and share P2P applications. +Guides on using the Pear Runtime to build and share P2P applications. * [Getting Started](./guide/getting-started.md) * [Starting a Pear Desktop Project](./guide/starting-a-pear-desktop-project.md) From f8936b1cdd640d5a65538bf452eddd76a3682276 Mon Sep 17 00:00:00 2001 From: Thomas Verstreken <111072251+ThomasFarstrike@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:57:28 +0200 Subject: [PATCH 08/14] Fix spelling (#109) --- howto/work-with-many-hypercores-using-corestore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/howto/work-with-many-hypercores-using-corestore.md b/howto/work-with-many-hypercores-using-corestore.md index 66770b7..7194664 100644 --- a/howto/work-with-many-hypercores-using-corestore.md +++ b/howto/work-with-many-hypercores-using-corestore.md @@ -37,7 +37,7 @@ await Promise.all([core1.ready(), core2.ready(), core3.ready()]) console.log('main core key:', b4a.toString(core1.key, 'hex')) // Here we'll only join the swarm with the core1's discovery key -// We don't need to announce core2 and core3, because they'll replicated with core1 +// We don't need to announce core2 and core3, because they'll be replicated with core1 swarm.join(core1.discoveryKey) // Corestore replication internally manages to replicate every loaded core From 03289a500d906c9ebff8f7a92f8f4448d45f5275 Mon Sep 17 00:00:00 2001 From: Thomas Verstreken <111072251+ThomasFarstrike@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:13:08 +0200 Subject: [PATCH 09/14] Add missing import of process (#108) * Add missing import of process * Add missing (bare-)process * Add missing (bare-)process * Add missing (bare-)process --- howto/connect-to-many-peers-by-topic-with-hyperswarm.md | 3 ++- howto/connect-two-peers-by-key-with-hyperdht.md | 6 ++++-- ...create-a-full-peer-to-peer-filesystem-with-hyperdrive.md | 3 ++- howto/share-append-only-databases-with-hyperbee.md | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/howto/connect-to-many-peers-by-topic-with-hyperswarm.md b/howto/connect-to-many-peers-by-topic-with-hyperswarm.md index 279ae80..922d7c2 100644 --- a/howto/connect-to-many-peers-by-topic-with-hyperswarm.md +++ b/howto/connect-to-many-peers-by-topic-with-hyperswarm.md @@ -16,7 +16,7 @@ Create the `peer-app` project with the following commands: mkdir peer-app cd peer-app pear init -y -t terminal -npm install hyperswarm hypercore-crypto b4a +npm install hyperswarm hypercore-crypto b4a bare-process ``` Alter the peer-app/index.js file to the following: @@ -25,6 +25,7 @@ Alter the peer-app/index.js file to the following: import Hyperswarm from 'hyperswarm' import crypto from 'hypercore-crypto' import b4a from 'b4a' +import process from 'bare-process' const swarm = new Hyperswarm() Pear.teardown(() => swarm.destroy()) diff --git a/howto/connect-two-peers-by-key-with-hyperdht.md b/howto/connect-two-peers-by-key-with-hyperdht.md index 8faaa8d..c0027bd 100644 --- a/howto/connect-two-peers-by-key-with-hyperdht.md +++ b/howto/connect-two-peers-by-key-with-hyperdht.md @@ -21,7 +21,7 @@ Create the `server-app` project with the following commands: mkdir server-app cd server-app pear init -y -t terminal -npm install hyperdht b4a +npm install hyperdht b4a bare-process ``` Alter `server-app/index.js` to the following: @@ -29,6 +29,7 @@ Alter `server-app/index.js` to the following: ```javascript import DHT from 'hyperdht' import b4a from 'b4a' +import process from 'bare-process' const dht = new DHT() @@ -57,13 +58,14 @@ Create the `client-app` project with the following commands: mkdir client-app cd client-app pear init -y -t terminal -npm install hyperdht b4a +npm install hyperdht b4a bare-process ``` Alter `client-app/index.js` to the following: ``` javascript import DHT from 'hyperdht' import b4a from 'b4a' +import process from 'bare-process' console.log('Connecting to:', process.argv[2]) const publicKey = b4a.from(process.argv[2], 'hex') diff --git a/howto/create-a-full-peer-to-peer-filesystem-with-hyperdrive.md b/howto/create-a-full-peer-to-peer-filesystem-with-hyperdrive.md index 3d7783f..4f5f0c8 100644 --- a/howto/create-a-full-peer-to-peer-filesystem-with-hyperdrive.md +++ b/howto/create-a-full-peer-to-peer-filesystem-with-hyperdrive.md @@ -165,7 +165,7 @@ In a new terminal, create the `bee-reader-app` project with these commands: mkdir bee-reader-app cd bee-reader-app pear init -y -t terminal -npm install corestore hyperswarm hyperdrive debounceify b4a +npm install corestore hyperswarm hyperdrive debounceify b4a bare-process ``` Adjust the `bee-reader-app/index.js` file to: @@ -176,6 +176,7 @@ import Corestore from 'corestore' import Hyperbee from 'hyperbee' import debounce from 'debounceify' import b4a from 'b4a' +import process from 'bare-process' // create a Corestore instance const store = new Corestore(Pear.config.storage) diff --git a/howto/share-append-only-databases-with-hyperbee.md b/howto/share-append-only-databases-with-hyperbee.md index d55d828..7d62a36 100644 --- a/howto/share-append-only-databases-with-hyperbee.md +++ b/howto/share-append-only-databases-with-hyperbee.md @@ -164,7 +164,7 @@ Finally create a `core-reader-app` project: mkdir core-reader-app cd core-reader-app pear init -y -t terminal -npm install corestore hyperswarm hyperbee b4a +npm install corestore hyperswarm hyperbee b4a bare-process ``` @@ -174,6 +174,7 @@ Alter the generated `core-reader-app/index.js` file to the following import Hyperswarm from 'hyperswarm' import Corestore from 'corestore' import b4a from 'b4a' +import process from 'bare-process' import { Node } from 'hyperbee/lib/messages.js' From 597700548c174495583aa3734118236cd913d0b3 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:43:30 +0530 Subject: [PATCH 10/14] add previewFor (#111) Co-authored-by: Vivek Singh --- reference/pear/configuration.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/reference/pear/configuration.md b/reference/pear/configuration.md index 9707ab9..400dd36 100644 --- a/reference/pear/configuration.md +++ b/reference/pear/configuration.md @@ -131,3 +131,11 @@ An array of entrypoints as staging start-points in addition to (deduped) main en #### `pear.stage.ignore ` An array of file paths to ignore relative to `package.json` file. + +### `pear.previewFor ` + +Allows a Pear application to use a different Pear application's storage by referring to it's key. This can be useful for testing production storage with test versions of the application. + + + + From f33dd39a532096838b51277d8a27959b22b2a664 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Wed, 12 Jun 2024 14:05:35 +0530 Subject: [PATCH 11/14] add pear worker (#113) * add pear worker * fixes --- reference/pear/api.md | 18 ++++++++++++++++++ reference/pear/configuration.md | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/reference/pear/api.md b/reference/pear/api.md index 35e0ad5..a93664e 100644 --- a/reference/pear/api.md +++ b/reference/pear/api.md @@ -261,6 +261,24 @@ async function logPrefUpdates () { logPrefUpdates().catch(console.error) ``` +## `Pear.worker ` + +Pear Worker is used to spawn processes and facilitate communication between the parent and child processes in the Pear Runtime. + +The spawned worker process inherits standard input, output, and error from the parent process. + +A bidirectional pipe is also created which enables communication between the parent and worker process. + +Reference counting is handled automatically to manage the sidecar lifecycle. + +### `const pipe = Pear.worker.run(key )` + +Spawns a new process with the specified key as the entry point. Resolves to a `Duplex` stream object representing a pipe. + +### `const pipe = Pear.worker.pipe()` + +Returns the communication pipe created to the worker process. Resolves to a `Duplex` stream object representing a pipe. + ## `Pear.media ` Media interface diff --git a/reference/pear/configuration.md b/reference/pear/configuration.md index 400dd36..56a2735 100644 --- a/reference/pear/configuration.md +++ b/reference/pear/configuration.md @@ -120,6 +120,14 @@ Enable transparency. Must be set for opacity to work. Background color (Hex, RGB, RGBA, HSL, HSLA, CSS color). +### `pear.links ` + +An array or object containing trusted Pear application keys. + +#### `pear.links.worker ` + +The key of the Pear application that contains the worker script. For more info, please check the [terminal](https://github.com/holepunchto/pear/blob/main/examples/terminal/index.js#L21) and [desktop](https://github.com/holepunchto/pear/blob/main/examples/desktop/app.js#L27) examples. + ### `pear.stage ` Staging configuration options. From 497a98ce96b62545325de8aef68c7cb68fbee7f0 Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Wed, 12 Jun 2024 14:59:04 +0530 Subject: [PATCH 12/14] add pear gc (#114) * add pear gc * fixes --- reference/pear/cli.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/reference/pear/cli.md b/reference/pear/cli.md index 64750f8..87bbb6c 100644 --- a/reference/pear/cli.md +++ b/reference/pear/cli.md @@ -170,7 +170,19 @@ Move user application storage between applications. --json Newline delimited JSON output ``` +## `pear gc [flags] [command]` +Perform garbage collection and remove unused resources. + +| Commands | Description | +|-------|---------------------------------------------------| +| releases | Clear inactive releases | +| sidecars | Clear running sidecars | + +``` + --json Newline delimited JSON output + --help|-h Show help +``` From 86ff2bf71dbb6e6e50002fc0b33629b846f2358c Mon Sep 17 00:00:00 2001 From: Vivek Date: Sat, 15 Jun 2024 23:59:30 +0530 Subject: [PATCH 13/14] typo fix in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5bfb12f..fae8cde 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Guides on using the Pear Runtime to build and share P2P applications. ### How-tos -Simple How-tos on using the essential builing blocks in Pear applications. +Simple How-tos on using the essential building blocks in Pear applications. * [How to connect two peers by key with HyperDHT](./howto/connect-two-peers-by-key-with-hyperdht.md) * [How to connect to many peers by topic with Hyperswarm](./howto/connect-to-many-peers-by-topic-with-hyperswarm.md) From 33984fb2723725b672956145af54dad08bc12d1e Mon Sep 17 00:00:00 2001 From: Vivek Singh <47470314+heyitsvi@users.noreply.github.com> Date: Thu, 4 Jul 2024 16:18:01 +0530 Subject: [PATCH 14/14] add-missing-flags (#116) --- reference/pear/cli.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reference/pear/cli.md b/reference/pear/cli.md index 87bbb6c..1e24164 100644 --- a/reference/pear/cli.md +++ b/reference/pear/cli.md @@ -70,13 +70,17 @@ Run an application from a key or dir. ``` - --dev Enable --devtools & --updates-diff + --dev|-d Enable --devtools & --updates-diff --devtools Open devtools with application [Desktop] --updates-diff Enable diff computation for Pear.updates --no-updates Disable updates firing via Pear.updates --link=url Simulate deep-link click open --store|-s=path Set the Application Storage path --tmp-store|-t Automatic new tmp folder as store path + --chrome-webrtc-internals Enable chrome://webrtc-internals + --unsafe-clear-app-storage Clear app storage + --unsafe-clear-preferences Clear preferences (such as trustlist) + --appling=path Set application shell path --checkout=n Run a checkout, n is version length --checkout=release Run checkout from marked released length --checkout=staged Run checkout from latest version length