Summary: When running tests locally, some are quite flaky, and there is a lot of error logging noise. This diff doesn't remove all of it, but does reduce it significantly.
Reviewed By: nikoant
Differential Revision: D20034619
fbshipit-source-id: 183f74475b644f803b2f92b1b1301f4d0f6e193a
Summary:
Device management was inconsistent so far, this diff addresses the following issues
* pending a subtle timing issue, a physical android device might also show up as emulator, so effectively the device would be shown twice, but with the same content
* Metro devices now behave more like the android devices: offline devices are replaced if it comes online again
* Generalized this logic; the reducer now forces serials to be unique
* Fixed issue where a Metro device that disconnected due to a connection failure would be archived twice
* Use the metro connection url as serial, to have a slightly more future proof serial
Reviewed By: jknoxville
Differential Revision: D19996385
fbshipit-source-id: 0f6e3ddc6444542553d25cc3b592591652d688f2
Summary:
If the browser makes a network request, and it fails, this is _always_ logged to the console, despite any error handling being in place. (see https://stackoverflow.com/questions/43012334/silence-neterr-connection-refused)
This diffs doesn't use the browser network stack, but the node network stack instead, which doesn't suffer from the same fate.
Reviewed By: passy
Differential Revision: D19995684
fbshipit-source-id: 4ffc12b820620c5310c140c1a3af63e5d2053a50
Summary:
This diff turns the DevTools plugin from a normal plugin in a device plugin. The reason for that can be seen at the end of the test plan in the first stack of this diff: Regardless on which client you open the devtools, you are always looking at the react tree of the app that happens to listen at the appropriate port, unrelated to the actively selected app. This diff moves the plugin from being a client plugin to a device plugin, a Metro device plugin to be precisely, as of the latter there is only one and they should typically correspond (which is why we can trigger reload as done in the previous diff)
Currently we have a Flipper plugin inside the iOS / Android apps with one purpose: to select different ports to listen to on different devices. But this functionality was never implemented, nor seems there to be much demand for. So these plugin don't offer any actual value. The widely used standalone version of the react devtools (https://www.npmjs.com/package/react-devtools) doesn't offer port customization either, so this limitation seems to be acceptable.
To make sure that this change is backward compatible, we make sure to show the metro device if we find metro, regardless whether it is new enough to support log forwarding and reload commands (previously we only showed the device if it has the /events endpoint).
The only case I can think of we are killing with this approach is where people are debugging a RN app, but with having metro running. I doubt that is an actual case, but probably rickhanlonii knows more about that.
Furthermore this diff makes sure that the devTools can connect to physical android devices. Also, making it to the end of this explanation means that you have done most of the reviewing for this diff. The actual code diff is shorter.
Reviewed By: passy
Differential Revision: D19878605
fbshipit-source-id: 3f33e59d4f6e4cce39102420f38afee10018999f
Summary: A first simple version of pre-bundled plugin installation. Currently both pre-bundled and source-only plugins are supported. Pre-bundled plugins should have folder "dist" inside and package.json's "main" field should point to the entry point script there.
Reviewed By: passy
Differential Revision: D19834020
fbshipit-source-id: 7e0b495fb9666acbb22fc32ca2382339cd9dc72f
Summary: Show metro logs using the standard logs plugin
Reviewed By: passy
Differential Revision: D19697439
fbshipit-source-id: 032a9a6aa2d987945d2058e0ea494d74e5aa310e
Summary: Introduced Metro device and the possibility to directly connect to running Metro instances
Reviewed By: jknoxville
Differential Revision: D19445623
fbshipit-source-id: 31978d966a56007c48f795076d6651e23de0e38d
Summary: Adding a utility for capturing screenshots to the configured location without having to worry about where to store it or use buffers etc.
Reviewed By: mweststrate
Differential Revision: D19765926
fbshipit-source-id: d6b51c4ffafab7450e97a60468926d84a25a8c0f
Summary:
Adding a way to install plugins directly from package files. This is required for testing after packaging format changes.
Stage 1: refactored the plugin manager component file layout, no functional changes.
Reviewed By: jknoxville
Differential Revision: D19741085
fbshipit-source-id: bd9d72382ddc4894de5b3cd9a71877c799886fbf
Summary: This diff refactors the scattered logic of required plugins and default selection of the plugins into Group class. Also the same class handles the deeplink logic.
Reviewed By: mweststrate
Differential Revision: D19666745
fbshipit-source-id: c9427f0ddba643f0b32aac7b6f2496e2e3248b12
Summary: Changed the plugin display logic in SupportForm to show plugins which are enabled(includes device plugins) and plugins which has `exportPersistedState` defined.
Reviewed By: mweststrate
Differential Revision: D19643857
fbshipit-source-id: 7a4a5882507c06c6b6f9c481ee2c5c36ecc32ac6
Summary:
This diff makes sure that important errors are always shown to the user, such as an xcode version mismatch.
Also made some small styling improvements
Reviewed By: jknoxville
Differential Revision: D19660337
fbshipit-source-id: 24dfb4d98bfdd1666164403f87b6a4e1dc915ddb
Summary: Adds a status message when the one deeplinks to support form and the selectedClient doesn't support GraphQL plugin.
Reviewed By: jknoxville
Differential Revision: D19602900
fbshipit-source-id: 98a45ead2659bb229f4a1301e918e02dca05fc66
Summary: This diff adds support for the deeplink of support form for graphql groups.
Reviewed By: mweststrate
Differential Revision: D19583680
fbshipit-source-id: fc4505dc5f46c701f1e43fc47ee094fb0aa15d42
Summary:
This diff creates a small FPS graph to be able to see where we slow down the app. This visualizes two things
1. The amount of FPS we render at (from tracking.fps).
2. If we were not able to render at all (due to the main thread being blocked fully), we interpolate the graph and draw it in red.
Reviewed By: nikoant
Differential Revision: D19579115
fbshipit-source-id: 2421d724c6d514986759bc9d68b92a5e4f51e401
Summary:
Not all plugin names are created equal in flipper. For example, plugins would bear different names in the sidebar and in the plugin selection when making a support request / flipper trace. Fixed this and also introduced a `getPluginTitle` utility that produces this name consistently.
Plugin listview now also sort their items consitently with the sidebar.
Probably also fixed an error in the flipper export screen, where a correct TS error was supressed.
Reviewed By: jknoxville
Differential Revision: D19499404
fbshipit-source-id: c5b23a170d41d96799eb7899e249f70778717d45
Summary:
Currently Android development can be disabled in Settings, but iOS development not. Because of this Doctor always shows warnings to Android-only developers who has no iOS SDK installed. This change makes it possible to disable "iOS development" option in the same way as we already had for Android.
Additionally I changed Doctor warning to show more specific message if only iOS or only Android checks are failed with suggestion to disable the failing platform if it is not required.
Reviewed By: jknoxville
Differential Revision: D19538070
fbshipit-source-id: 234d2c6cf21083f9d6aebd63418aed7f9a78e922
Summary: This is useless as it's logged as key: total anyway.
Reviewed By: mweststrate
Differential Revision: D19501099
fbshipit-source-id: 08dcf76fbab8065356b34c6ed1524ef83703c46c
Summary: This isn't needed anymore as it's taken care of by the Client class when it fails to find it's own matching device.
Reviewed By: mweststrate
Differential Revision: D19499929
fbshipit-source-id: e54dea6e680a9fa3cd3572cdd65434922d51c4ea
Summary:
This diff improves two things:
1. Stats are now gathered on every `trackUsage` tick, rather than only when there is a selection
2. The stats now include a delta to compare it with the previous tick
Reviewed By: passy
Differential Revision: D19514231
fbshipit-source-id: 1854c1dc03c63a03db8c7040c185d2629e1b9ea2
Summary: Fixed the issue with empty plugin list on Windows because of env var length limit
Reviewed By: passy
Differential Revision: D19411466
fbshipit-source-id: 7fa390f7dd342e23e965b2135fbeb8e88e5857ef
Summary:
I want to make ping events fire when in background or foreground.
But doing that now could mess with some stats.
Setting this up so we have the data. If it comes to it, after this has been going a while,
we can add a filter to the existing queries for "isForeground=true" to preserve their behaviour.
Reviewed By: mweststrate
Differential Revision: D19428926
fbshipit-source-id: 7c175e9936dce52a59d17995dae61a82d23687f8
Summary: Gives us visibility on how many / which plugins, people are starring.
Reviewed By: mweststrate
Differential Revision: D19408420
fbshipit-source-id: cb08e2a5f9d1b31ea03e6f7df8fa61db26611e91
Summary:
Currently there are several issues caused by internal users not being logged in. E.g. the rating button doesn't work, flipper traces can't be uploaded etc.
However, the fact that the user is not logged in, is not reflected in the UI if the user has an API key, which is outdated.
See also the scuba query in the linked tasks; this happens for quite some users.
This diff fixes two things:
1. If auth tokens are invalid, this is properly reflected in the UI
2. If at startup the profile can't be loaded, a popup will be shown to log in.
Differential Revision: D19392735
fbshipit-source-id: 2be7c577ead671df16c626c0636e89245cebab14
Summary:
Previously, at 1-minute intervals, if the flipper window was focused on, it would report the currently active plugin.
We'd sum all those "ping" events and that would approximate the number of full minutes spent in total across all users.
It's quite coarse grained, if you're focused on the window for 30 seconds, there's a 50% change your ping will get used.
While being reasonable across many users, it doesn't allow analysis like how many plugins do people typically use in a session, because we probably won't see all the plugins they use.
New approach, for every minute flipper is open, report the focused and unfocused time spent in each plugin, as well as the total across all plugins.
This should give us the previous data but with much more precision.
Should be especially helpful for plugins with low numbers of users, you typically interact with emulators while using a plugin, so it's not continually in focus, so you miss a lot of usage events.
enhance_bladerunner
Reviewed By: nikoant
Differential Revision: D19392796
fbshipit-source-id: af9244e993edff9b381144ca587c3a77fdf8c98a
Summary:
When you run a simulator with a different version of the xcode version that is currently `xcode-select`ed, it won't work.
This causes problems in Flipper, and also RN and other tools.
Show a helpful warning in this case.
Need to dispatch it explicitly because console.errors only get surfaced in dev mode, not production.
Ideally this will be done in the doctor, but there's work to get it to report device/app specific problems first.
Reviewed By: passy
Differential Revision: D19345199
fbshipit-source-id: 45f95c6d33c81da2299d8d84c9179bebb5bfebe8
Summary:
Original commit changeset: 05d13aca7145
Attempt to upgrade `electron` as it instacrashed; `electron-builder` version 22.1.0 didn't sign package correctly and caused the instacrash,
Reduced the version to 21.2.0 (latest).
Reviewed By: passy, nikoant
Differential Revision: D18954671
fbshipit-source-id: bc2dbd4fec9afb51d9a535974651b13d195407b4
Summary: Collect run time stats on how much CPU plugins use
Reviewed By: nikoant
Differential Revision: D19161359
fbshipit-source-id: 96b020b1f23b5e8d2e602f0ff6c3aa80ea149792
Summary:
Ok this diff got a bit bigger than expected, but I think it makes it easier to understand what "plugin keys" are, and makes them less prone to error.
Previously pluginKeys were composed of: clientId#pluginName, where clientId was itself: app#os#device#device_id
But also, there were some plugin keys where the clientId was a device_id.
Now you deconstruct a plugin key, and will get a tagged object with type: 'device' or 'client', and the properties that they each have.
There is now no custom parsing of these afaik, let's keep it that way.
Since it took me a while to figure out what all these IDs are, I've documented it a bit in clientUtils.
Reviewed By: passy
Differential Revision: D18811848
fbshipit-source-id: eed2e2b5eedafb9e27900dbcf79a389fcaffae95
Summary:
When launching flipper release build, the initial window focus was wrong, so it appeared unfocussed.
Clicking away and then back to the window would fix it.
This should set the initial focus to be correct from the start.
Task has more details.
Reviewed By: mweststrate
Differential Revision: D18808306
fbshipit-source-id: 2c5828d0b3298594dc30f956bb14141e6cff5918
Summary: When user comes from a deeplink we will check if the user is part of the new GK, then we will open the new form otherwise old form.
Reviewed By: mweststrate
Differential Revision: D18764892
fbshipit-source-id: 512401f0370c3d4b16c9d88e16e8a4ca06148854
Summary:
Original commit changeset: eddfbb3571c7
Original commit changeset: f7300f527b65
Pains me to do this, but probably our best chance right now to get a release out.
Reviewed By: cekkaewnumchai
Differential Revision: D18687890
fbshipit-source-id: 05d13aca71457ca6dd19f5b45d58158ae223e66f
Summary:
- Make sure newly connecting apps are automatically selected
- Improved the sidebar UI by using more consistent, spacious styling, and giving some more attention to error states
Reviewed By: passy
Differential Revision: D18505636
fbshipit-source-id: 18b2c8e78be13aabb3a54c60553f6b0d1e613b27
Summary:
If a flipper file is imported, from now on we will show that fact in the sidebar to make it more clear we are looking at an imported device. Beyond that, those devices are marked as `(imported)` rather than `(offline)` to distinguish between offline and imported devices.
This should help with future feature like cross device applicable actions.
Reviewed By: jknoxville
Differential Revision: D18448190
fbshipit-source-id: 560084f010207c99cecd616e43a6cc02e62cbc7a
Summary: Moving some things around for the upcoming update support.
Reviewed By: jknoxville
Differential Revision: D18347572
fbshipit-source-id: b614fe3a87f8e7fdc0c11c0d3bfe4787c0914d17
Summary: Currently the app keeps to find iOS devices if when the tooling isn't properly set up, causing an error to appear every three secs. This change makes sure that happens only once. It also takes care of some run-away promises
Reviewed By: jknoxville
Differential Revision: D18346619
fbshipit-source-id: 12b581bee0d522b37b9e0c5d5b8dad0e4d2058d9
Summary:
When the CPU or kaois plugins are started, they show a buffer deprecated warning, caused by the fact that they ship their own adbkit version, which is unpatched.
This diff makes sure that the adbkit as shipped with Flipper is used instead.
Reviewed By: jknoxville
Differential Revision: D18327441
fbshipit-source-id: 9cab23b9701adc070210cc4133fc8760031bd1d7
Summary: Address the small regression introduced by D18173166. When closing the plugin manager after installing/removing, the store wasn't updated in between.
Reviewed By: jknoxville
Differential Revision: D18270821
fbshipit-source-id: 4ff54bc7607d06fa423cf8e673f216ae0a5d19da
Summary: In order to have update notifications, this must live outside the UI component, but it also gives some additional benefits like better testability of previously effectful UI.
Reviewed By: jknoxville
Differential Revision: D18173166
fbshipit-source-id: 1cacb6c7893423a7920a6620dfb76e631caba101
Summary:
Found some unused code from the rating prototype before switching to itsr.
Deleting it.
Reviewed By: cekkaewnumchai
Differential Revision: D18298155
fbshipit-source-id: 3529db17494f4f5bf7d7841460203d1c3856299a
Summary: Added a slug a while ago and it looks a bit better when shown in the bugnub.
Reviewed By: cekkaewnumchai
Differential Revision: D18083274
fbshipit-source-id: 5a9c8c126b5dcee92a697096ac3393a93a1690c3
Summary: Improved the display of error messages. Where previously only one error message could be displayed (quite obtrusively), with this change multiple errors can now be displayed and stack traces and further info can be hidden.
Reviewed By: passy
Differential Revision: D18036569
fbshipit-source-id: 2bc3dfa7a5196f931370a6e6dbf27c55b6cfb2bf
Summary: This diff adds the telemetry to track the source of the support form being launched.
Reviewed By: passy
Differential Revision: D17908752
fbshipit-source-id: 275812992884a471844fda40d1f636815a4a2346