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: This diff always allows user to select the group irrespective of the validation error. We will show the validation error at the bottom before letting them submit.
Reviewed By: passy
Differential Revision: D19816805
fbshipit-source-id: ff576a2101a5ed548c56a2f08da8d27457ebf332
Summary:
Plugin to plugin deeplinking was broken because the state reducer was ignoring the parameter.
This fixes it.
Reviewed By: jonathoma
Differential Revision: D19791230
fbshipit-source-id: 158b3a6278f5e634093c4284018458883e9aa5ca
Summary: This diff removes the older support form as we no longer use it.
Reviewed By: jknoxville
Differential Revision: D19769541
fbshipit-source-id: ca2088e721f2895f2c8a1205889b0670477cc2d2
Summary: Shows warning when requiredplugin has empty data. It also makes the validation box as an error one, to distinguish between the two boxes.
Reviewed By: passy
Differential Revision: D19704910
fbshipit-source-id: ffd9413c3cd65c09f8b6019889191decefa6b6f6
Summary: Adds analytics for the selected group, failure cases and distinguishing between user clicks for the support form vs deeplink.
Reviewed By: passy
Differential Revision: D19697856
fbshipit-source-id: 62d5afa998d2096252570387c9a3df1c7c134e67
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:
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: This diff updates default plugin selected when group selection gets updated. This diff also makes sure that group selection is persisted when swtiching between different tabs.
Reviewed By: mweststrate
Differential Revision: D19578748
fbshipit-source-id: 6f401248fe32441e30cb5acbb9251e206866984a
Summary:
The 'starring' concept of plugins no longer covers the meaning of 'starring', as unstarred plugins will no longer receive data from background plugins, not be available in support request forms due to a lack of data etc. So this diff renames the feature to 'enabled'.
Also fixed an issue where selecting a non-enabled plugin wouldn't show it in the sidebar if the additional plugins are collapsed.
To make disabled plugins more clear, they are . now always rendered in gray.
The toggle button now delays its effect for better visual feedback
- [x] update side bar styling
- [x] remove bottom bar warning
- [x] details screen
- [ ] only open connection for active plugins (will be done in a next diff)
- [x] check archived / imported devices
- [x] make sure device plugins work correctly
- [x] check without GK's
Reviewed By: jknoxville
Differential Revision: D19470326
fbshipit-source-id: 9160a3434287561f56b1b741d5ba282ab6063ea8
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:
There are complaints about Android SDK being reported as "not installed" when it is actually installed. To address them, I changed the way how we detect SDK and also added some minimal actionable feedback for each check.
The problem with the previous implementation of Android SDK check via "envinfo" is that the library uses "sdkmanager" tool under the hood, and this tool doesn't work on Java 9+. To fix this I'm changing the way how we assume SDK is installed to simple check for "adb" tool existence.
Actionable feedback is shown on Doctor report when you click to an item.
Reviewed By: jknoxville
Differential Revision: D19517769
fbshipit-source-id: 1c21f1bdcd05c7c0ae3f97b9c3454efa2c861d26
Summary: The device.devicePlugins collection was not updated if new plugins were registered after creating a device. This diff fixes that.
Reviewed By: jknoxville
Differential Revision: D19536777
fbshipit-source-id: 11ed3c3383ae692ce74fd7a21704332fb319b9c4
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: Added button to reset Android SDK path to default + fixed default SDK path on Windows which I introduced in a previous diff and which before might be wrongly resolved to roaming data instead of local data folder
Reviewed By: jknoxville
Differential Revision: D19498899
fbshipit-source-id: e10865b528f55ea6b56873bdf9369c4b60dca89f
Summary:
Default path for Android SDK was set to "/opt/android_sdk" disregard the current OS.
On Windows it should be set to "%localappdata%\android\sdk" instead.
Reviewed By: passy
Differential Revision: D19496646
fbshipit-source-id: 86ce7df74b98eef5b7b0a556a5359bec8cb0dbc4
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:
If a plugin was registered beyond the initial start command, this didn't show up in the Flipper UI. The reason for this is that the client map is updated, but since that object is mutable, components won't detect nor reflect the change.
This diff changes to make sure a new plugin map is created if it is changed.
Reviewed By: passy
Differential Revision: D19345464
fbshipit-source-id: 3aa343e1739caf124a015c88680a94973b87f701
Summary: Added unique keys for each healthcheck and used them to save already seen failures. Later I will also use them for gathering doctor analytics.
Reviewed By: jknoxville
Differential Revision: D19301583
fbshipit-source-id: 0c0aa977ea73ce555e0d9fb8e8ead844624fb9cd
Summary: Doctor to show warning if Watchman is not available
Reviewed By: mweststrate
Differential Revision: D19298730
fbshipit-source-id: 68f915c63c5f78aad91f549aabda8d4d972f4e39
Summary:
This diff changes the sidebar navigation, fixing a bunch of issues:
It will be possible to quickly switch again between the same plugins in multiple apps
No need to expand-and-check the app dropdown until the app is connected
No need for ugly fallback selections if some app connects faster than another one
Reviewed By: nikoant
Differential Revision: D19272701
fbshipit-source-id: 10f5fab42391014ef4a4a4c91c529d93f8bfb125
Summary: Doctor sometimes can show false-positives and in such case there is no way to suppress showing warning message on each startup. To reduce annoyance I've added an option to save the problems already seen by user and show the Doctor warning only for new problems.
Reviewed By: mweststrate
Differential Revision: D19187095
fbshipit-source-id: 14c1fcc9674f47fbe0b5b0f2d5d1bceb47f7b45d
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:
This diff introduces the logic for queueing incoming messages rather then directly processing them you are behind the `flipper_event_queue` GK.
The reason the queue processing is a bit complicated is to make the queue can be processed non-blocking, can be cancelled, and is safe to concurrency issues.
The idea here is that the queue is processed when we switch to a plugin, report it's progress, and abort the process when switching to another plugin without loosing any work.
This diff does not include
[x] updates to the UI (**SO DON"T LAND IN ISOLATION**)
[x] metrics to see the effect
The effect of the changes can be seen when profiling the application, before this change there are very regular CPU spikes (see the small yellow bar on the top):
https://pxl.cl/TQtl
These go away when the events are no longer processed
https://pxl.cl/TQtp
Reviewed By: nikoant
Differential Revision: D19095564
fbshipit-source-id: 0b8c3421acc4a4f240bf2aab5c1743132f69aa6e
Summary:
Skip Android health-checks when the "Android Developer" option is disabled in Flipper settings.
Also made some refactoring to use immer for healthcheck reducer.
Reviewed By: mweststrate
Differential Revision: D19088322
fbshipit-source-id: 801d874b6e7e5af80802b4bf4313d98f1cee13f6
Summary: Added a setting "Match local fbsource chekout", which inverserly corresponds to the `ignore_local_pin` setting in `flipper-launcher.toml`.
Reviewed By: passy
Differential Revision: D19030456
fbshipit-source-id: deaaf4e873a00bbc4e8bd3034353cf580df95a36
Summary:
This diff is a refinement of D18780965, which fixed plugin preferences to be stored per device. Instead of storing plugin preferences globally, we now store them per app, so that every app can have their own favorites, which are shared regardless the device
Note that the current favorite selection will be lost.
Reviewed By: nikoant
Differential Revision: D19018169
fbshipit-source-id: acfa05ece8516840bb91aee4059886365b346582
Summary: It fixes the bug, where currently we show all active persistent plugins for the export functionality irrespective of the fact that the plugin is active for the selected client. With this diff we will only show active persistent plugins for the selected client.
Reviewed By: mweststrate
Differential Revision: D18890247
fbshipit-source-id: e567da0ccf04e051ca0eabb497a6bd72cc8a0d76
Summary:
Quite a bit of complex slicing going on there, so I think
this is quite useful to guard against future breakages.
Reviewed By: jknoxville
Differential Revision: D18853033
fbshipit-source-id: 36b17b8ce208cb320a193bceed86c89e010107e4
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:
- Point the Noitifications to the static view
- Add function to check activeness of static view
- Add `SupportRequestDetails` to type (needed?)
Reviewed By: mweststrate
Differential Revision: D18810149
fbshipit-source-id: a33f61f521f3db0dd2a73e56d99b12d029b46a57
Summary:
Fixes a couple of typo's and merges two very similar functions into one.
Now that there's a single way to create a clientID, we can get more strict about what it is and what it isn't.
Reviewed By: passy
Differential Revision: D18809741
fbshipit-source-id: 9a68e45bead38cc2917a6d4cd2cf461c309f3ede
Summary: When importing a flipper trace, while the user was on a static view, the first client would not be selected automatically
Reviewed By: passy
Differential Revision: D18782482
fbshipit-source-id: 6f59e06dead62ffe42acdd36232b92dffd3e30d6
Summary:
This is a change which I am not fully confident in, but I think it will make things better;
previously favorite plugins where stored per device. This means that when ...
- switching between devices
- switching between apps
- when viewing disconnected devices
- when loading devices from flipper traces
... the starred plugin preference would reset (especially for the last two: they have generated unique device names, so there would never be preferred items)
This Diff changes the plugin preferences to be global, so on every app and every device you have the same preferences (if they support the plugin). This assumes most people work mostly with the same limited set of plugins
Reviewed By: jknoxville
Differential Revision: D18780965
fbshipit-source-id: 3a560393b81e7d65ae01fb737938f8562843af13
Summary: This diff refactors the way appName is shown. We populate the appName through selectedApp, thus keeping different redux prop is not needed. This diff gets rid off the appName prop from the redux store and makes sure that appName gets updated on client change.
Reviewed By: mweststrate
Differential Revision: D18764685
fbshipit-source-id: 5ff94c83f84b03bbee34518aface46d4544af77f
Summary:
* Make sure uploadIDs are converted into CDN urls and displayed
* Changed type of uploadID's to strings, as numbers are
Reviewed By: priteshrnandgaonkar
Differential Revision: D18762974
fbshipit-source-id: d94af61b0bc114b5f0cc2bfcde98fd491058e971
Summary: This diff refactors the MediaComponent and moves it's upload logic to the support component. Also the state of the media component is stored in the redux store, so this solves the caching issue.
Reviewed By: mweststrate
Differential Revision: D18754736
fbshipit-source-id: b937f34180405025a6eb437bf2c2d589743e341b
Summary:
This diff adds the media files into the redux store. In the redux store they are stored as the following {fbid: description}, where fbid and description are integer and string respectively.
Ignore the rows getting highlighted automatically, there seems to be a bug in the ManagedTable. Talked to Michel and we agreed to replace it.
Reviewed By: mweststrate
Differential Revision: D18708815
fbshipit-source-id: 0aaf1b672c230312203691538091a717d69fb5ad
Summary:
Original commit changeset: ff84080d43fa
This re-adds JS client support. The original version had a small bug that inadvertantly wrapped support for Android emulators in the dropdown in a GK that was only meant to cover JS clients. This is addressed here.
Reviewed By: timur-valiev
Differential Revision: D18707485
fbshipit-source-id: ceea8e279a21111f96073f8b784e852f6313e2a4
Summary:
Original commit changeset: 56d1ca1a60ed
This broke Android support in some instances. We haven't had a chance to investigate this yet, but this should cleanly reapply, so we can figure out what happened after the release.
Reviewed By: cekkaewnumchai
Differential Revision: D18688590
fbshipit-source-id: ff84080d43fa481cc8c8c669a76aed15d0f8aa56
Summary:
### Connecting Flipper with JS apps by using electron's BrowserWindow and IPC
1. UI: there is a menu item in Devices tab which opens JS Emulator Launcher Sheet. Here we can configure URL to open and initial size of the window.
2. BrowserWindow, preloaded js: there is SupportJSClientPreload.js which initialize communication between flipper and app via electron's ipc
3. On flipper's side there is src/utils/js-client/serverUtils.tsx which contains most of JS emulator related code
4. Extracting of FlipperClientConnection: since we don't use RScocket to communicate with JS app I extracted needed methods to FlipperClientConnection (located in Client) and partly implemented them in JSClientFlipperConnection (requestResponse is just send a message now, doesn't return actual result)
Reviewed By: jknoxville
Differential Revision: D18572882
fbshipit-source-id: 56d1ca1a60ed2e51329b917021a09382cbb1ceec
Summary:
This diff enables a full roundtrip of exporting a bug report to file / link, and importing it again.
Styling is not part of this story.
Reviewed By: jknoxville
Differential Revision: D18636418
fbshipit-source-id: ef9a8e3622bdac9361f612d51415a593f4268b80
Summary:
This diff makes it possible to apply MC's to a currently running as part of the support form process.
Things _NOT_ done in the diff:
* make sure getUniverses and getGatekeepers returns valid configs (this broke since somewhere last week, opened T57918601 for that. However, before that this worked correctly
* provide a more interactive UI when applying MC's, such as beeing able to see a diff preview, ask confirmation before overriding current config, etc
Reviewed By: jknoxville
Differential Revision: D18452172
fbshipit-source-id: da3f24bccf88260282f86e2564e983a9ee217c2f
Summary:
- Basic Doctor UI showing issues with installation
- Run healthchecks in background on startup and show warning message if something is wrong
Reviewed By: jknoxville
Differential Revision: D18502599
fbshipit-source-id: 194939a080ba7412ed3293d95c533bfad7031d3b