Summary: Before looking into performance bottlenecks, I thought it wise to upgrade to TypeScript as that is where all plugins are heading
Reviewed By: jknoxville
Differential Revision: D18829689
fbshipit-source-id: 4c515f240d742f77e89f3cbdff500c69afb3ac06
Summary: I noticed a bug where the export data perf events were not logged. The issue was that, it used the `Logger.getTrackTimeSince` method which used the `performance` from `perf-hooks` and not an ordinary performance object available in the global scope. So just importing performance from perf-hooks solved the issue.
Reviewed By: mweststrate
Differential Revision: D18887666
fbshipit-source-id: 66c24f47b95b25d2f3703c16c70cbe8b35fe0ec3
Summary: This had been there for way too long.
Reviewed By: mweststrate
Differential Revision: D18834089
fbshipit-source-id: 563aa04876910a7544a7f62865b146b933dbf570
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: Add tests for client-id / app name parsing. We've had a lot of bugs here in the past. Get some good test coverage so we have some assurance the shared utils for it won't be broken.
Reviewed By: jknoxville
Differential Revision: D18830269
fbshipit-source-id: 07c9755bbeae28c48580f44453d4010d6d3830b0
Summary: Just in case anything is broken, this will be helpful
Reviewed By: nikoant
Differential Revision: D18811849
fbshipit-source-id: 53947102dea38e526b4f565396f85fedf4ff2a15
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: One step towards getting away from constructing and destructing clientIds manually everywhere by splitting and joining #'s. Which has been VERY error prone in the past.
Reviewed By: passy
Differential Revision: D18809442
fbshipit-source-id: bd4d89d3eb3d59694aa735b19dbd73d122e59ba0
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: Slightly refactored JS api to make it work with new js app launcher
Reviewed By: jknoxville
Differential Revision: D18761757
fbshipit-source-id: edb8e5907765a9354e4c636be97d3cf6df63ee98
Summary:
Nobody moves the hackathon!
Fixed some circular deps warnings while waiting for another Diff to land
Reviewed By: priteshrnandgaonkar
Differential Revision: D18749645
fbshipit-source-id: 225fbea428dca02f0f4c920ee47b4ece3c3e370b
Summary:
* Added a button to clear Diff selection
* Added icons and color to the recording button
* Made App input field readonly
Reviewed By: priteshrnandgaonkar
Differential Revision: D18748538
fbshipit-source-id: 00ffb5d5c36f8f5394a353602f182aabd8237ee7
Summary: This diff refactors the `exportpersistedstate` and few of the functions in exportData.tsx to just expect the Redux State instead the store object.
Reviewed By: mweststrate
Differential Revision: D18733011
fbshipit-source-id: 56739917b49142ba4b6e79e7c16378fe60d6ac3b
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: 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:
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:
Styles the create support request form similarly to the details form, using the standard UI components.
N.B. Video section styling will be a separate diff
Reviewed By: jknoxville
Differential Revision: D18637989
fbshipit-source-id: f1cc6967b6841a55e770043f330e1a87ac7bfb50
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 introduces a set of components:
VBox: use this to group things vertically, it little more than a container that fills the full width and adds bottom margin (see screenshot: creating distance between the boxes)
HBox: use to divide a space horizontal in two, and distribute it over two children, supports growing the right side, left side or both equally. In the image used to reserve the necessary width for the image, and give the remaining space to the text
Info: A component that shows a message, prestyled with one of the four types: info, error, warning, pending.
{F222993480}
Reviewed By: jknoxville
Differential Revision: D18595291
fbshipit-source-id: 1957db1b606b2e44e3104b10d32ad8ce75af6adc
Summary: Collections of errors were not reported correctly in the UI. Also, reporting errors could crash flipper if the error is not serializable (for example due to being cyclic).
Reviewed By: jknoxville
Differential Revision: D18595257
fbshipit-source-id: 689b6dbfe5d7daa6d84bd703dba9daa6be2e6b82
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
Summary: This fixes a regression bug introduced by the rework sidebar selection: when trying to export a Flipper Trace flipper would error: 'No client exported' after making plugin selection
Reviewed By: priteshrnandgaonkar
Differential Revision: D18571143
fbshipit-source-id: c7a292e53cb79d0b2d95e09f8e9b041ae0d711cf
Summary:
Created as standard layout that can be used for both the import and export form
Standardized components used, so that we work towards a Design Framework that is consistent. Took inspiration from some existing plugins.
Also fixed weird sidebar transparency.
Reviewed By: passy
Differential Revision: D18504078
fbshipit-source-id: 7649abf7aa3eba8ba635337a41274bba93738e81
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:
To be used in the following diff and because it's super side effect
heavy, I didn't bother to implement tests for it.
Reviewed By: jknoxville
Differential Revision: D18479311
fbshipit-source-id: 5cbcae0ebf2de4558b993325e50f6a2da1ed3ea7
Summary: Initial setup for a support detail form. Will only show up if meta data is present in the flipper file, so use the attached one to see it.
Reviewed By: jknoxville
Differential Revision: D18479193
fbshipit-source-id: 61da089f1e883fea20b2422a6bea99b2f8a4434b
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:
Currently flipper export exports all connected the clients. This causes a few problems
1. This might often be unintended by the user, causing accidentally sharing (sensitive) information in the trace
2. This slows down things unnecesary. Especially if there is connected application, which is expensive, but not needed. See the attached video for the impact on exporting flipper: Export size reduzed from 11 to 0.5 mb. Export time from 20 seconds down to 1. (Flipper might not be a representative example, but imagine working on fb4a and having instagram on the emulator as well).
Reviewed By: priteshrnandgaonkar
Differential Revision: D18448194
fbshipit-source-id: f4de4c6dd89bda20251eb5f7423f7996339c8f2d
Summary:
This diff adds commit hash field in the support form v2 and we prefill the information.
If changes are not pushed to phabricator we will populate it with commit hash or else we will populate it with Diff number.
See the demo to understand the flow.
{F222000517}
Reviewed By: jknoxville
Differential Revision: D18427044
fbshipit-source-id: 80a58baca381e21203da5670e29144a7e8c2eeed
Summary:
Added more telemetry events for the following events
- Time taken for each plugin to fetch meta data
- Overall time taken for fetching all meta data
- Overall time taken for serializing plugins
- Time taken to serialize individual plugins with overridden serializer and deserializer methods
Reviewed By: passy
Differential Revision: D18349588
fbshipit-source-id: 2b3a6b663a9df4da45580fc0be5651a27ca4093d
Summary: Used by rating, I think.
Reviewed By: mweststrate
Differential Revision: D18347585
fbshipit-source-id: bbc84a42c34aae9805515c82f8d24cfd0817d8ed
Summary: Moving some things around for the upcoming update support.
Reviewed By: jknoxville
Differential Revision: D18347572
fbshipit-source-id: b614fe3a87f8e7fdc0c11c0d3bfe4787c0914d17
Summary: This diff lands improved sidebar navigation. The old functionality to order plugins based on last-recently-used, and cropping at 5 items has been removed. Instead, items can be starred and their position will be fixed. Together with the app switcher introduced this should lead to a cleaner, stabler, and more customizable UI.
Reviewed By: jknoxville
Differential Revision: D18299401
fbshipit-source-id: 29b7eb3a4130933c637f7c81834558bf738d5bf0
Summary: Making it a bit more human readable.
Reviewed By: passy
Differential Revision: D18271880
fbshipit-source-id: 10e8ba50957e9407b1436972f8a06915edf73dfb
Summary:
This diff introduces the following improvements which I got as a feedback from the user
1) Before this diff the text entered used to vanish away when one switched tabs and came back to the support form. This diff takes care of that.
2) With this diff user can rexport the flipper trace to override the previous cached state too.
- For this I had to update the UI to show flipper trace a separate input box, rather than appending it in the question field.
- This avoided the the appending of the text in flipper trace and facilitated the easy override of the trace
3) With this diff one can also override commit_hash without appending multiple text.
WWW changes: D18250494, Do not land until this diff is landed.
Reviewed By: passy
Differential Revision: D18257524
fbshipit-source-id: 119edadf90ac95cb296c10520239513f1fef905d
Summary: Adds telemetry for the export time and also logs the selected plugins.
Reviewed By: jknoxville
Differential Revision: D18244843
fbshipit-source-id: 36a3e8b9b456b59187918d19075a2c1ea0caef25
Summary: This diff calls JSON.stringify on the final export object instead of the custom serializer. As the custom serializer is slower, because it has to check for different types on its children before serializing it. Which adds to the complexity. The time gain which we get is 3x, that is with this change the export is 3 times faster. We required custom serializer, because the logs had `Date` which is not serializable. So that is being taken care while importing it.
Reviewed By: jknoxville
Differential Revision: D18171202
fbshipit-source-id: cd1b59b74dabb4c35a032dc7b54f183a68e37823
Summary: Before this diff whenever one called serialize method it showed `Serializing Flipper ` msg without showing the explicit details of which data we are serializing. Thus with this diff one can pass the status msg as an argument which will be displayed while serializing.
Reviewed By: jknoxville
Differential Revision: D18173024
fbshipit-source-id: a4e7e073498993626204061d4e774099f00b8c5a
Summary:
It shouldn't make a difference which one we import because they're
both mocked but only one works in the GitHub export.
Pull Request resolved: https://github.com/facebook/flipper/pull/599
Test Plan: yarn test; CI
Reviewed By: jknoxville
Differential Revision: D18083321
Pulled By: passy
fbshipit-source-id: 6d04390b4403bf291c201d3c17902304ea9b1c6e
Summary: This got broken during TS migration. Plugin failures were being logged as platform failures, and showing up in the wrong graphs.
Reviewed By: passy
Differential Revision: D18059046
fbshipit-source-id: 8209a0e852f62e221bf64cb5091115e3cac09fd9
Summary:
Centralizes the restart logic.
And adds ability for it to work in dev mode as well.
Reviewed By: passy
Differential Revision: D18008197
fbshipit-source-id: b76ac7935d5859dfdbb8cf593462f8ac02348181
Summary: Not a fan of the long lines, but if that's where prettier is going, let's roll with it.
Reviewed By: jknoxville
Differential Revision: D17905599
fbshipit-source-id: c4232d46d2ec0b7c743f6afd8349106c85f013b9