Summary: Release test plan updated to match the new release process and include some details which might be required in case something failed.
Reviewed By: passy
Differential Revision: D25618132
fbshipit-source-id: c39ceebe4569475554866097970a2410a992b6ae
Summary: Installed plugins loaded and make it impossible to debug plugin changes. We need to disable them by default for `yarn start`. To debug plugin installation and auto-update, need to use command `yarn start --plugin-auto-update` instead.
Reviewed By: passy
Differential Revision: D25639345
fbshipit-source-id: 99b59a90dc09ac33a3604487fe501774e5e6fc39
Summary: In D25584424 (V1), Sandcastle complained about trailing whitespace. This diff removes the adde description if none can be retrieved
Reviewed By: nikoant
Differential Revision: D25608443
fbshipit-source-id: a798bb0c40afaaafd55c90c70177f7c2af79af34
Summary:
I think there's a need for an "implementation details" section of the site. Especially as we're moving the rest of our wiki content there.
I see it as a good thing, because now we have a place for implementation details relevant to OSS contributors too, it's not all fb-specific.
Reviewed By: nikoant
Differential Revision: D25614909
fbshipit-source-id: 5ec081e6450a9ad1c30785ae4cca74b6fa0d2630
Summary:
Ran the wiki migration script on the Flipper_Internals wiki.
Deleted the pages mentioned in https://www.internalfb.com/tasks/?t=81712504
Also deleted hacking-launcher, which is now succeeded by the new "hacking-on-launcher".
Reviewed By: nikoant
Differential Revision: D25613387
fbshipit-source-id: b57b3e20f37b556774d7748477a1dbb7fe844812
Summary: This diff unifies setup and workflow information that was scattered a bit around into one cohesive 'Development workflow' subsection in the 'creating plugins' section of Flipper.
Reviewed By: nikoant
Differential Revision: D25612288
fbshipit-source-id: 5fa7f2d000fb7ab3e1b5c5a4fc8cc1f209252f41
Summary: There were 3 pages describing how to obtain a plugin instance, public, ios and android. iOS didn't differ from the public one, and android only in the fact that internally DI is available. So combined the pages with just an optional section for DI inside FB on Android.
Reviewed By: jknoxville
Differential Revision: D25588057
fbshipit-source-id: 3a54ae699130a4c5ba018220708f844a35a8d6a9
Summary: There was one public page for testing client plugins, and two internal ones. Combined it into a one pager, that has tabs per target, with separate content for internal versus external (didn't combine those as the testing frameworks recommended differ)
Reviewed By: nikoant
Differential Revision: D25588058
fbshipit-source-id: afa151ec0c3a5de26142938d3d389627716f1ff7
Summary: send data was documented twice, in the general client API, and in the internal docs where it was specifically combined with obtaining a plugin instance. However, that is a proper public API as well, so combined those two.
Reviewed By: nikoant
Differential Revision: D25588059
fbshipit-source-id: 7135a74b64a87d0c8c3f8f20f7f260469f52d41c
Summary:
Updated the release ent diagram using mermaid lib added in the previous diff.
nocommit until "docusaurus-plugin-internaldocs-fb" re-pointed back to npm in package.json.
Reviewed By: jknoxville
Differential Revision: D25594333
fbshipit-source-id: fd0b961c5265b8284d3c2e56e17b56fc38cc72c5
Summary: The upgrade script did all the work. Honestly surprised that it worked just like that.
Reviewed By: nikoant
Differential Revision: D25589100
fbshipit-source-id: 0c78bd43d9ddfcf2b10c9fcbb5bdc7c8dc42f734
Summary:
Previously we used <Link/> everywhere with useBaseUrl to avoid link destinations depending on the current url of the page.
This isn't necessary if you instead link to the **file name**, rather than the **url path**.
Then the links are resolved at build time, and work across imported markdown files etc.
This diff just does the pages under Features, because other ones will get conflicts. I'll do those later.
Reviewed By: nikoant
Differential Revision: D25589707
fbshipit-source-id: 35ca986e19fc2af1054b81d7253eeb3827947ab8
Summary:
Moving this file outside of the "FB Internal section" so we can get rid of it.
I think this file can probably be replaced by the "flipper marketplace" at some point, driven programatically by package.json files etc, but I'm not sure if such a page exists at the moment.
Reviewed By: passy
Differential Revision: D25588707
fbshipit-source-id: 0809c21b30410252ef146cfcd161b836849dbbf0
Summary:
The old Wiki (https://www.internalfb.com/intern/wiki/Flipper_Internals/hacking-launcher/)
is still mostly accurate but contains a lot of information about the deprecated Dewey pipeline.
Reviewed By: mweststrate
Differential Revision: D25586307
fbshipit-source-id: 82345510e19986f763bc0547d25330a0369309fb
Summary: Seems that all tabs were broken after migration to Docusaurus 2.
Reviewed By: jknoxville
Differential Revision: D25586214
fbshipit-source-id: 31a8da4e13fbac01911a03f1f4bab0d2837c9c9a
Summary:
This diff restructures the 'extending' section of the docs, and rebrands it to 'creating plugins'. It then restructures this section into 4 top-level items
* Tutorial
* Desktop plugin APIs
* Client plugin APIs
* Workflow
Pages are put under the relevant sections, including pages which were before under internal. Some pages that didn't relate directly to plugin development have been moved to other top level sections (e.g. testing RN).
I didn't do de-duplication between pages yet, that will be done in the next diff.
Overview of changes:
* Extending -> Creating Plugins
* Moved Extending > Other platforms to Setup > Other platforms (as this is about clients, not plugins)
* Moved Internal FB plugin development stuff into Creating Plugins
* Separated Creating Plugins into ‘Tutorial’, Desktop API Reference, Cient API Reference, Workflow
* Remove TypeScript strict page, we are already strict
* Moved QPL linters to api docs and named id QPL lints
* Grouped the different pages on extending Layout plugin (needs deduping still)
* Warning about avoiding custom styling in general
* Moved internal index page to the top of the navigation of FB Internal, rather than at the bottom
Reviewed By: passy
Differential Revision: D25585172
fbshipit-source-id: ba2aa891395097d6aa101809084b915f115ee69d
Summary:
Now in public, the setup page remains unchanged, well, the headings are one level smaller.
In internal, the page is divided into two sections: for buck based apps, and non-buck based ones.
Reviewed By: mweststrate
Differential Revision: D25565953
fbshipit-source-id: abf4316a28970cd93d0cc9b56dd707f00a674a48
Summary:
^
The navigation plugin also includes setup instructions which will be moved to it's own page next.
There are also now 2 navigation plugin feature pages. These still need to be consolidated.
Reviewed By: passy
Differential Revision: D25564150
fbshipit-source-id: 1fe0d853f6fa94ec62b39edacd268519fa18485a
Summary:
Putting both iOS setup guides next to each other.
I'm not sure what to call the oss one. It applies to cocoapods, swift, and pure objc.
Reviewed By: passy
Differential Revision: D25563988
fbshipit-source-id: a7ee2a0ae04e5753a74939b1c170d9a2f2ace1a9
Summary: Puts both the "Adding flipper to android apps" page next to each other, one for buck and one for gradle. The buck one is only internal.
Reviewed By: passy
Differential Revision: D25563688
fbshipit-source-id: 1937cfdd0d5129b54a8635efe6294ba39a26be8e
Summary: Unbundle most of plugins from Insiders version of Flipper. Users will need to install them from Marketplace.
Reviewed By: passy
Differential Revision: D25558043
fbshipit-source-id: 648b0d4c83d9096972b5463cdcaa3de23426bdda
Summary: Flipper receives a lot of messages which cannot be handled when plugins unbundled. Showing them as warnings is un-actionable with such big amount, so I disabled them.
Reviewed By: mweststrate
Differential Revision: D25557790
fbshipit-source-id: 1a0bc3df2848b194b72ea6d775ffabe416672fee
Summary:
Allow "uninstallation" of bundled plugins which means we mark them as uninstalled and not auto-updating anymore. Uninstalled bundled plugins are shown in "Detected in App" section together with Marketplace plugins where user can install them back.
Changelog:
Plugins can be uninstalled from sidebar in new Sandy UI.
Reviewed By: passy
Differential Revision: D25557789
fbshipit-source-id: 751cad68456313c069af639584541086efc7102b
Summary: Electron/Node.js does not garbage collects unloaded modules by default. Need to cleanup require.cache to fully unload them.
Reviewed By: passy
Differential Revision: D25545962
fbshipit-source-id: 4dce32f39e22adcd2b4f5a55853551379e786e7b
Summary: After unbudling plugins users will need to manually install them. To simlify this transition we can auto-install favorite plugins on every app connection, so users won't need to install plugins which they marked as favorite before.
Reviewed By: passy
Differential Revision: D25538638
fbshipit-source-id: 4ac3ad0c8c026d149f7ce0c4af07da3e8b909772
Summary:
New UX/UI for plugin auto-updates based on Sandy:
- disabled plugins auto-updated silently without any notifications as there is no active state for them so there is nothing to loose.
- enabled plugins can have some state and user can actually work with them, so we cannot reload them automatically. Instead, we show notification in the top of the plugin container asking user to reload the plugin when she is ready.
- if the auto-updated plugin failed to reload - show error notification.
- for non-sandy we continue using notifications as before.
Reviewed By: mweststrate
Differential Revision: D25530384
fbshipit-source-id: de3d0565ef0b930c9343b9e0ed07a4acb51885be
Summary:
I've re-designed interfaces describing plugins as I found that mental overhead working with them became too expensive because of slightly flawed design. However this cascaded changes in many files so you can see how extensively these interfaces used in our codebase.
Before this change we had one interface PluginDetails which described three different entities: 1) plugins installed on the disk 2) plugins bundled into Flipper 3) plugins available on Marketplace. It's hard to use this "general" PluginDetails interface because of this as you always need to think about all three use cases everywhere.
After this change we have 3 separate interfaces: InstalledPluginDetails, BundledPluginDetails and DownloadablePluginDetails and things became much type-safer now.
Reviewed By: mweststrate
Differential Revision: D25530383
fbshipit-source-id: b93593916a980c04e36dc6ffa168797645a0ff9c
Summary: Show progress reporting in sidebar during plugin download. Also handle plugin download errors and show them to user as notifications.
Reviewed By: mweststrate
Differential Revision: D25530385
fbshipit-source-id: 42bf0e65b4434d00c1465705ce9ec5c723df6841
Summary: This diff changes uninstallation procedure for plugins. Instead of deleting plugin files immediately we are keeping them, but mark them as "uninstalled". This makes it possible to re-install plugins quickly in case when user clicked "delete" by mistake.
Reviewed By: mweststrate
Differential Revision: D25493479
fbshipit-source-id: 9ff29d717cdd5401c55388f24d479599579c8dd3
Summary: Added UI for uninstalling plugins from sidebar. To avoid confusion between "disable" and "uninstall" and to reduce possibility of errors when plugins uninstalled accidentally by misclicks, I made it only possible to uninstall plugins after they are disabled. So for enabled plugins two steps are required for uninstalling.
Reviewed By: mweststrate
Differential Revision: D25454117
fbshipit-source-id: 28e67dc1ff2d39ad67e6d2770302a996affd9723
Summary:
This diff adds "download" button to the plugins shown in "Detected in App" section, so they can be downloaded, installed and enabled just in one click.
For now UI is very simple - there is no progress indication and no error handling for failed downloads. I'll add them in next diffs.
Please note that we are explicitly "star" every installed plugin to enable it straight away without additional clicks in "disabled" section.
Reviewed By: mweststrate
Differential Revision: D25393472
fbshipit-source-id: 0a224ea6d03db0ee9a70b7fa35ede9616c03d824
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1761
Plugin installed logic is quite complex and heavily relies on file system. So I added integration tests which uses in-memory file system. Here I've covered complex functions added in the previous diff of this stack.
Reviewed By: mweststrate
Differential Revision: D25393473
fbshipit-source-id: a823eb7d6707152a1c3717a6da25b6beee85801d
Summary:
This diff changes directory structure for installed plugins to allow installation of multiple versions simultaneously, e.g. to to allow downloading new plugin version while user is still using the previous one, and to have possibility of fast rollback to the previous installed if necessary. The new folder for installed plugins is located in `~/.flipper/installed-plugins` and has the following structure:
flipper-plugin-reactotron
1.0.0
...
package.json
1.0.1
...
package.json
flipper-plugin-network
0.67.1
...
package.json
0.67.2
...
package.json
The tricky part here is that we also need to migrate already installed plugins from the old folder `~/.flipper/thirdparty` to the new folder and maintain the new structure for them.
Another tricky part is that we need to periodically cleanup old versions. For now we will just keep 2 versions of each plugin. Cleanup is performed in background right after Flipper startup.
Reviewed By: mweststrate
Differential Revision: D25393474
fbshipit-source-id: 26617ac26114148f797cc3d6765a42242edc205e
Summary:
New section "Detected in App" in the main sidebar showing plugins which are supported by the currently selected client app, but not installed in Flipper.
Note that in this diff we only show them, there is no "install" button yet. I will add it in a next diff.
Reviewed By: mweststrate
Differential Revision: D25361915
fbshipit-source-id: 8fff6887a8ec04b3b59c939a758c8f801f42490f
Summary:
Separate dispatcher for periodic refreshing available plugins data from the Marketplace backend and caching it locally.
The plugin auto update downloader subscribes to these state refreshes and automatically schedules plugin update downloads when required.
Reviewed By: passy
Differential Revision: D25360897
fbshipit-source-id: 5b6d95b63ff47b8ae9ad8b12e2480d1fed524ca5
Summary: Extracted plugin marketplace API to a separate file and updated it to load full plugin manifests.
Reviewed By: passy
Differential Revision: D25181759
fbshipit-source-id: a63f9ce16249ccc170df148cef5c209fdc6d4d6d
Summary: The 'extending flipper' introduction page didn't contain anything meaty, so collapsed it into the tutorial introduction, cleaning up the top level navigation.
Reviewed By: passy
Differential Revision: D25531718
fbshipit-source-id: ca0f98186e889e13cb97be8818db3588738e5039
Summary:
Bumps [async-mutex](https://github.com/DirtyHairy/async-mutex) from 0.1.4 to 0.2.6.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/DirtyHairy/async-mutex/blob/master/CHANGELOG.md">async-mutex's changelog</a>.</em></p>
<blockquote>
<h2>0.2.6</h2>
<ul>
<li>Fix a nasty <a href="https://github-redirect.dependabot.com/DirtyHairy/async-mutex/issues/27">bug</a> related to
consecutive calls to <code>mutex::release</code>.</li>
</ul>
<h2>0.2.5</h2>
<ul>
<li>Nothing new thanks to NPM. Go away. Install 0.2.6.</li>
</ul>
<h2>0.2.4</h2>
<ul>
<li>Calling Semaphore::release on a semaphore with concurrency > 1 will not work
as expected; throw an exception in this case</li>
<li>Make the warning on using Semaphore::release and Mutex::release more prominent</li>
</ul>
<h2>0.2.3</h2>
<ul>
<li>Add alternate Semaphore::release and Mutex::release API</li>
<li>Work around build warnings with react native (and probably other bundlers)</li>
</ul>
<h2>0.2.2</h2>
<ul>
<li>Improve compatibility with older versions of node 13, thanks to <a href="https://github.com/josemiguelmelo">josemiguelmelo</a></li>
</ul>
<h2>0.2.1</h2>
<ul>
<li>Remove sourcemaps</li>
</ul>
<h2>0.2.0</h2>
<ul>
<li>Add a <code>Semaphore</code>, reimplement <code>Mutex</code> on top of it</li>
<li>Add a <code>withTimeout</code> decorator that limits the time the program waits
for the mutex or semaphore to become available</li>
<li>Support native ES6 imports on Node >= 12</li>
<li>Provide an ES6 module entrypoint for ES6 aware bundlers</li>
<li>Dependency bump</li>
<li>Switch from TSlint to ESlint</li>
<li>Enable code coverage in tests</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6cec83aa0b"><code>6cec83a</code></a> F*** NPM.</li>
<li><a href="2593cedbaa"><code>2593ced</code></a> Bump version.</li>
<li><a href="8331143c13"><code>8331143</code></a> Fix consecutive calls to mutex::release.</li>
<li><a href="e7bc6a43c9"><code>e7bc6a4</code></a> Dependency bump.</li>
<li><a href="2bfeb96e22"><code>2bfeb96</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/DirtyHairy/async-mutex/issues/24">https://github.com/facebook/flipper/issues/24</a> from nnoodle/master</li>
<li><a href="6191e6d22c"><code>6191e6d</code></a> Fixed a few spelling errors</li>
<li><a href="0ccb014c91"><code>0ccb014</code></a> Forbid Semaphore::release for concurrency > 1, documentation, bump version.</li>
<li><a href="391433bf0c"><code>391433b</code></a> Changelog, bump version.</li>
<li><a href="4b99572248"><code>4b99572</code></a> Add alternate release API.</li>
<li><a href="1dc676d2cf"><code>1dc676d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/DirtyHairy/async-mutex/issues/16">https://github.com/facebook/flipper/issues/16</a> from ranma42/patch-1</li>
<li>Additional commits viewable in <a href="https://github.com/DirtyHairy/async-mutex/compare/v0.1.4...v0.2.6">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1748
Reviewed By: mweststrate
Differential Revision: D25373190
Pulled By: passy
fbshipit-source-id: 4e45c55391aa136c78abeeb25a0783a0d37ccbce
Summary: This change will allow loading flipper not only internal build but also in builds that explicitly turn on LOAD_FLIPPER_EXPLICIT in build config
Reviewed By: timur-valiev
Differential Revision: D25369245
fbshipit-source-id: 9f8e5c7033aa4ded6ce7bc8cc5b5c252ba65692b
Summary:
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
<details>
<summary>Commits</summary>
<ul>
<li><a href="a2c5da8660"><code>a2c5da8</code></a> 1.3.8</li>
<li><a href="af5c6bb5dc"><code>af5c6bb</code></a> Do not use Object.create(null)</li>
<li><a href="8b648a1ac4"><code>8b648a1</code></a> don't test where our devdeps don't even work</li>
<li><a href="c74c8af35f"><code>c74c8af</code></a> 1.3.7</li>
<li><a href="024b8b55ac"><code>024b8b5</code></a> update deps, add linting</li>
<li><a href="032fbaf5f0"><code>032fbaf</code></a> Use Object.create(null) to avoid default object property hazards</li>
<li><a href="2da90391ef"><code>2da9039</code></a> 1.3.6</li>
<li><a href="cfea636f53"><code>cfea636</code></a> better git push script, before publish instead of after</li>
<li><a href="56d2805e07"><code>56d2805</code></a> do not allow invalid hazardous string as section name</li>
<li>See full diff in <a href="https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~isaacs">isaacs</a>, a new releaser for ini since your current version.</p>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/flipper/network/alerts).
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1759
Reviewed By: nikoant
Differential Revision: D25523894
Pulled By: passy
fbshipit-source-id: d3715a99973e3ead1a84ac665bd35270d793d478