Summary:
Background for this diff: https://fb.quip.com/KqEfAlKYlgme
Some plugins don't respect that stuff (livefeed and graphql), but for others it seems to work fine.
This is just a PoC, there are some present bugs concerning the combination of selecting and bg plugins
Questions to investigate:
- [x] make sure that LiveFeed and GraphQL disconnect properly. There might be more plugins that need that
- [x] verifiy that we don't loose one of the original goals of background plugins, e.g. QPL collecting and sending data from device start. Does this still work as intended after this change?
- [x] how can we observe / measure improvements? Are dev builds more responsive after this? Is the layout inspector smoother for example because no QPL plugins are interweaved?
- [x] how is forward and backward compatibility?
- If Flipper is updated, but device not: No change I think, as getBackgroundPlugins() will return an empty set, and background plugins are initiated as usual, so old behavior
- If device is updated, but Flipper not, background plugins won't be started until they are selected. This is a degradation, but hopefully explainable.
- [x] Verify QPL buffer is not unbounded
- [x] Share architecutre changes with team
For Graphql updates: D20943455
Added runtime stats to monitor network traffic (sadly had to redo that since scuba couldn't handle the data format used at first, so probably will hold of landing this diff a week to make sure we can see some effects)
Follow up work:
[x] wait until we released the stat tracking before we release this, to be able to measure the effect?
[x] make sure graphql fix lands
[ ] use side effects abstraction
[ ] fix other background plugins (android only) or fix it in a generic way:
{F234394286}
Changelog: Background plugins will no longer receive a Flipper connection if they are disabled. This should significantly reduce the overall load of Flipper both on the device and desktop when unused plugins are disabled used, which could otherwise generate 10MB/s of network traffic certain scenarios. All plugins *should* be able to handle to this gracefully, but since this is quite a fundamental change, reach out to the Flipper team when in doubt!
Reviewed By: jknoxville
Differential Revision: D20942453
fbshipit-source-id: b699199cb95c1b3e4c36e026b6dfaee7d1652e1f
Summary:
Docusaurus 2 is quite a lot more powerful than docu 1 it turns out.
This should convert the website fully.
* [done] Go through migration guide https://v2.docusaurus.io/docs/migrating-from-v1-to-v2
* [done] Convert landing page html
* [done] Convert all images to img tags
* [done] Convert all .md files to .mdx
* [done] Make sure ui-doc generation and including still works
* [done] Scan every page visually for sanity check
* [done] Make sure footer still works
* [done] Make sure search still works
* [done] Change all links/ to links/index
* [done] Change all links.md to links
* [done] Add some custom css to make the navbar look like the old one and darken the footer.
Reviewed By: passy
Differential Revision: D21158717
fbshipit-source-id: 5f45b711b1b6fd5ece4c5c15c55635c7ebbfb568
Summary:
When using baseUrl in site config, it adds a prefix to all link paths.
But for assets, it doesn't work if you refer to them as `docs/assets/...`, you have to use just `assets/...`. Source: https://github.com/facebook/Docusaurus/issues/861
Reviewed By: passy
Differential Revision: D20796933
fbshipit-source-id: 2346e42b8b548f576a1e143f56ee5236eab55073
Summary:
I think this'll clarify how to use the lifecycle methods.
Diagram edit link: https://excalidraw.com/#json=5696112581148672,nDwD6t1BNXVreQ8YE8917g
Reviewed By: mweststrate
Differential Revision: D20645302
fbshipit-source-id: 0814dbe8421cfe8e85c297bd5bfb4a8f1a83c353
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/872
Move all the JS code related to desktop app to "desktop" subfolder.
The structure of "desktop" folder:
- `src` - JS code of Flipper desktop app executing in Electron Renderer (Chrome) process. This folder also contains all the Flipper plugins in subfolder "src/plugins".
- `static` - JS code of Flipper desktop app bootstrapping executing in Electron Main (Node.js) process
- `pkg` - Flipper packaging lib and CLI tool
- `doctor` - Flipper diagnostics lib and CLI tool
- `scripts` - Build scripts for Flipper desktop app
- `headless` - Headless version of Flipper app
- `headless-tests` - Integration tests running agains Flipper headless version
Reviewed By: passy
Differential Revision: D20249304
fbshipit-source-id: 9a51c63b51b92b758a02fc8ebf7d3d116770efe9
Summary: A small clarification after the question 7964772f82 (comments)
Reviewed By: jknoxville
Differential Revision: D19619402
fbshipit-source-id: c392c492fe5e9cd46d46c93f617288ac0a4d02a5
Summary: Added information that "Debugger for Chrome" extension is required to be able to debug in VSCode.
Reviewed By: passy
Differential Revision: D19599117
fbshipit-source-id: 7323fb59daae24fe6b914e9ddb450326b135ad2b
Summary: Updated "Debugging" page in Flipper docs: added instructions about debugging from Visual Studio Code and Google Chrome.
Reviewed By: mweststrate
Differential Revision: D19578864
fbshipit-source-id: c88c8278feb7c90fe77bde1d883c73079f2147f9
Summary: Added docs on how to write React-Native JavaScript based plugins
Reviewed By: passy
Differential Revision: D19344803
fbshipit-source-id: ad1ea66f1031760729fdaea8a7e6c1ef5dcd5439
Summary:
Since background plugins don't receive data anymore when not starred, we should hint the user about this.
For this diff, I reused the existing statusbar. Although this solution is quite ugly, I think it is better than introducing yet another notification / warning mechanism. Probably we should revisit the layout of this status bar in the future.
Reviewed By: jknoxville
Differential Revision: D19251588
fbshipit-source-id: 1dfd07be383d4ba318f344ebff4b08ed36194c58
Summary:
To avoid plugins to collect data forever and store it (if they are never opened), introduced a hard-coded default limit on how many events will be preserved.
A semantic change is that plugins have to be potentially resistant against missing events. So far, during testing, this didn't seem to cause any problems.
Reviewed By: jonathoma
Differential Revision: D19175912
fbshipit-source-id: 828be941e76b7356c9f5be7e5a49de9a7a31b0d2
Summary: It's not much, but at least more than nothing :)
Reviewed By: nikoant
Differential Revision: D18930725
fbshipit-source-id: b1e5fa203b0020de7b5f16d040808cbb247b8dd4
Summary: React 16 is not compatible with react-emotion 9 (it prints warnings, see also https://github.com/emotion-js/emotion/issues/644). So we should upgrade to 10.
Reviewed By: mweststrate
Differential Revision: D18905889
fbshipit-source-id: c00d2dbbadb1c08544632cb9bfcd63f2b1818a25
Summary: For plugins to be discoverable through NPM, they need to have `flipper-plugin` as a keyword. This adds this keyword to all existing plugins (although they are currently not distributed via NPM) and the webside/docs.
Reviewed By: passy
Differential Revision: D17395079
fbshipit-source-id: e42dd31ca39c3754cf729052ee783687748bafe8
Summary:
JS pages first, then client pages.
Would be nice if we had some sort of separator, but I think you can only have two levels.
Reviewed By: danielbuechele
Differential Revision: D15198312
fbshipit-source-id: 6c9f8d8775f513a55c256366448faed13b671767
Summary:
* Renamed to "Client Plugin API" to align with the "JavaScript Plugin API" page.
* Added some more info and reworded some parts.
Reviewed By: danielbuechele
Differential Revision: D15198192
fbshipit-source-id: 2c86b6a852e9ed52b0885eb5b7db8436028489d5
Summary: Documents init in the API reference and deletes the now redundant communicating page.
Reviewed By: danielbuechele
Differential Revision: D15198128
fbshipit-source-id: a9b88632b74edd7d9656ed888192db1fbe7f3642
Summary:
* Made the code snippets uniform across languages.
* Renamed to "Providing data to plugins" because sending hints at sending across the desktop-client connection which is misleading.
Reviewed By: danielbuechele
Differential Revision: D15198081
fbshipit-source-id: e2c318cdc6055c191f47e846b518c26dd21e4a68
Summary: This documents all pretty much the entire API.
Reviewed By: passy
Differential Revision: D15187834
fbshipit-source-id: 073c6a0dc40e3373967e9e5c5b7d44ab9c0aa07f
Summary:
The purpose of this page wasn't that clear to me, though the content is pretty focused. I've changed it from JS setup to JS Plugin Definition, and reworded it a bit.
I think it makes sense if this specifies everything to do with plugins on the file system, and the next page talks about what you do in javascript.
Reviewed By: passy
Differential Revision: D15184829
fbshipit-source-id: 6335ebc8d4297ffcbf1ab9860b4f055fe5bbcf87
Summary:
This page got lost in the reorganisation. Adding it back.
There's still work to be done on the content and organisation of these docs.
Reviewed By: passy
Differential Revision: D15184349
fbshipit-source-id: 76256ba53189579bec363903dc4068a421cafc98
Summary:
Please give feedback on the sidebar placement.
This is only the Android part. I'll put up a second diff copying the iOS thing over
but hope someone can commandeer that and check for accuracy.
Reviewed By: priteshrnandgaonkar
Differential Revision: D15181454
fbshipit-source-id: d32081feefbfb0ffc38890e835a7d5f6b78667ab
Summary: We have a templated function not requiring a downcast, so there's no need to use the non-templated one.
Reviewed By: passy
Differential Revision: D15167856
fbshipit-source-id: 2f125ac9ca62d7ac4c633127104d1cd2954a13fb
Summary: adding code tabs for Android, iOS and C++ to improve readability of pages.
Reviewed By: jknoxville
Differential Revision: D15167691
fbshipit-source-id: e7f602a3a1cbe39ef5da0a15bb0bbfc8f79e8ccc
Summary: Describes the interface that clients should conform to to implement the layout plugin.
Reviewed By: danielbuechele
Differential Revision: D15166234
fbshipit-source-id: b86303f18f33762f09cfc503ece856cfcc887493
Summary: I can't take credit for this, I found it in the internal wiki. Have just modernised it and made it public.
Reviewed By: danielbuechele
Differential Revision: D15165547
fbshipit-source-id: d59344aa6ad47be6ab32b88abcdfc14a7d20c775
Summary:
Specifies the API for implementing your own Flipper Client.
I believe this provides everything you need to know to build a flipper-compliant client.
The only snag is that the current certificate exchange procedure would require a change to allow for new OS's, device types etc. It would be much better if we had a TLS-opt out so you don't need to go through all that rigmarole.
Reviewed By: passy
Differential Revision: D15150550
fbshipit-source-id: 2878dcc174807c3f86c0562660e8a3e43e5777b1