Summary:
This is so much faster! This should allow us to more easily publish snapshots.
Pull Request resolved: https://github.com/facebook/flipper/pull/257
Reviewed By: danielbuechele
Differential Revision: D9630067
Pulled By: passy
fbshipit-source-id: 64c633933a971cc15371d2ee90c184e13b98e06a
Summary:
The logs plugin opened a new log connection every time it was activated and never closed the connection.
This is now changed. Once a device is connected, a log connection is opened. The logs plugin subscribes and unsubscribes to this connection. This allows the logs plugin it even access the logs from when it was not activated and ensures to only open on connection to read the logs. Logs are persisted when switching away from the plugin.
Also removes the spinner from the logs plugin, as it loads much faster now.
Reviewed By: jknoxville
Differential Revision: D9613054
fbshipit-source-id: e37ea56c563450e7fc4e3c85a015292be1f2dbfc
Summary:
First connection attempt to iOS device was only made after 3000ms. This caused all iOS devices only show up after this delay.
Now, the devices are queried immediately.
Reviewed By: passy
Differential Revision: D9613057
fbshipit-source-id: a14e3f02576ec5e159f4002bf68efe53236dcc50
Summary: Log counter had a bug that only allowed the number to go up to 2. To increment the number of the last row is read and increased. However, this failed and always fall back to 1.
Reviewed By: passy
Differential Revision: D9613056
fbshipit-source-id: dc73990eb26c7a6ecbc70b0fe50687607b8bf0ad
Summary:
- Cleans up iOS log listener code
- Retries to create a connection to the log stream if it failed
- logs errors with the log parser
Reviewed By: jknoxville
Differential Revision: D9613055
fbshipit-source-id: 33a24e474be62fc2a906f022a68547594f2e66c1
Summary: Now that android devices know their own serial, we can filter plugins by the selected device.
Reviewed By: passy
Differential Revision: D9481461
fbshipit-source-id: 4a53eea1e61caa09c3d63ca0076fbc1b6dceb99f
Summary:
Android devices don't always know their own serial.
But we do a certificate exchange using adb from the desktop, so we can provide it in the response.
After this the client will provide it every time it connects, so we can do things like filter plugins by device id.
For apps that have already done cert exchange, they'll continue to use 'unknown' as their id until they do it again with an up to date version of sonar.
We can think about forcefully stopping that, but I haven't done it.
Reviewed By: danielbuechele
Differential Revision: D9481460
fbshipit-source-id: f8932699711ebbec4260fabe32f87e6cdff920f2
Summary:
Right now, Travis is failing consistently because the Android build
time exceeds its limits - that's separate from the new publish step.
Let's limit what we do in the build step.
Reviewed By: jknoxville
Differential Revision: D9613247
fbshipit-source-id: f703237788f3a35d3f15fc8b9b45d6ebbb24c750
Summary: Logs often get cut off because there's too much noise.
Reviewed By: danielbuechele
Differential Revision: D9602056
fbshipit-source-id: 0b725f169a40c153835f63342e38f5d15556ac98
Summary:
Not encrypted with any OpenSSL version or LibreSSL, but with OpenSSL version one dot oh dot one eff.
Backwards-compatibility is hard.
Reviewed By: danielbuechele
Differential Revision: D9578686
fbshipit-source-id: 21c70b071d74cd37e6eb489cfff731efa314bbe6
Summary:
Removes the fix introduced in D9570518 and upgrading to `react-window@1.1.2` which fixes the problem in the library.
Also finetuning debounce times.
Reviewed By: passy
Differential Revision: D9582591
fbshipit-source-id: 92b008d29f96ce0f11f5cfb5d9e92175ae536ee2
Summary:
When starting with an empty table and adding rows, the scrollOffset of the table might end up with a negative value, which causes rows not to be rendered.
See https://github.com/bvaughn/react-window/issues/49 for more details.
This only calls `scrollToItem` when the table is actually scrollable to prevent a negative scrollOffset.
Reviewed By: passy
Differential Revision: D9570518
fbshipit-source-id: 5b08990a353a6d41d0f1bc5c1481d5a5e471bd94
Summary:
Looks like Travis is running on an ancient version of OpenSSL which is incompatible with OpenSSL 1.1, which I used to encrypt the secrets.
See output here: https://travis-ci.org/facebook/flipper/jobs/422172610
Reviewed By: jknoxville, danielbuechele
Differential Revision: D9570729
fbshipit-source-id: 01ad282bbb614bb5d51e09f1b2e4f8d5eeabe2a9
Summary:
Sonar was trying to convert folly dynamics containing NaN and Inf to json.
Folly doesn't allow this so we have to get rid of them before converting.
See https://fb.facebook.com/groups/230455004101832/permalink/483173632163300/ for more context.
`grep -r convertFollyDynamicToId fbsource/xplat/sonar` now returns results which all have `true` in the second parameter slot.
Reviewed By: danielbuechele
Differential Revision: D9570364
fbshipit-source-id: bf28b03e54b4987399e028a491d82451a8267d97
Summary:
As expected, this didn't work on the first try. Issues I've fixed:
- Actually switch back to snapshots.
- Use more widely compatible bash location.
- Don't exit (because of `set -e`) if `grep` returns with status 1.
Reviewed By: jknoxville
Differential Revision: D9556770
fbshipit-source-id: 0900e6498e7fc8e16c941e77927005573ca310d5
Summary:
Set up automatic publishing to Maven Snapshots if the current
VERSION_NAME ends in `-SNAPSHOT`.
Reviewed By: danielbuechele
Differential Revision: D9539838
fbshipit-source-id: 6e413fa3b02966946bb867eebe7ba8b863f291b9
Summary: This diff updates the iOS version update script to incorporate the change in folder from fbobjc to xplat.
Reviewed By: danielbuechele
Differential Revision: D9542137
fbshipit-source-id: 4cb48d1b14d3c94d000490c7a21260766d493fc7
Summary:
Table was missing support for some properties, that were supported previously, which caused some regressions. Support for the following properties was added:
- `multiHighlight: boolean = false`
- `autoHeight: boolean = false`
- `highlightableRows: boolean = true`
- `onRowHighlighted: Function`
Reviewed By: jknoxville
Differential Revision: D9549384
fbshipit-source-id: 1db2e7e8c6ad483d3d9d3a5814c76c564e9ba7f4
Summary: When table rows are chaning, we need to recaluculate all row heights. This was already done when filtering/searching, but there are other occurrences where we need to recalculate the heights (like clearing the table).
Reviewed By: passy
Differential Revision: D9540881
fbshipit-source-id: ef6e94c0330294d8196f946799a436aa5e9ce5c5
Summary: Removes the Accessibility panel from the layout inspector since all of these properties are shown (and logged) in the Accessibility Inspector along with other properties that may be useful. This will make it easier to track accessibility use and also will help more people discover the accessibility feature when they need it.
Reviewed By: blavalla
Differential Revision: D9523532
fbshipit-source-id: f6d3a745980ec631ec8bf2e59017382f4c2edd5a
Summary: Makes the code a bit cleaner and maintainable.
Reviewed By: passy
Differential Revision: D9496316
fbshipit-source-id: a59a41b12a57bb2eedc25b154c6f9b0cdc77dd8a
Summary:
V1 ios diagnostics complete.
This change adds a new section to the ios diagnostics screen that shows the current state of each step required to get sonar working.
The logs (transitions between states) are displayed below it.
SonarClient.mm is technically involved in the UI, by converting enums to emojis, I don't like this
but didn't get obj-C working with C enums so have left it like this for now.
Reviewed By: priteshrnandgaonkar
Differential Revision: D9378212
fbshipit-source-id: 091ce00e898a8038c680555123640b90d753fc09
Summary: Lets AX inspector live update the sidebar when a view is clicked (state may change) or accessibility focus changes (previously only updated the sidebar live if it became the focused element).
Differential Revision: D9489376
fbshipit-source-id: 8959f722370ce1d3a622b24c7b049b03f0d662e6
Summary:
Instead of reading version number for logging from `package.json` it is now fetched via electron. We usually don't update our version number in package.json and therefore all logs showed the same version number. the version number from `app.getVersion()` is set during the build process and reflects the actual version number that is used.
Removes unused `<Version />` component.
Reviewed By: jknoxville
Differential Revision: D9495745
fbshipit-source-id: 6999ea23a1e4f90d6591b3695e01a803a5f3ff85
Summary: Fixes some warnings that were caused by the switch to react-emotion.
Reviewed By: jknoxville
Differential Revision: D9483185
fbshipit-source-id: 8e49469772efd37f18342252653648618e644d55
Summary:
New release is out, so we no longer need the
SNAPSHOT.
Reviewed By: danielbuechele
Differential Revision: D9481795
fbshipit-source-id: d693f9cbbb6373835c3e3acc03a3c60f27a96262
Summary:
My benchmarks have shown react-emotion to be faster than the current implementation of `styled`. For this reason, I am converting all styling to [emotion](https://emotion.sh).
Benchmark results:
{F136839093}
The syntax is very similar between the two libraries. The main difference is that emotion only allows a single function for the whole style attribute, whereas the old implementation had functions for every style-attirbute.
Before:
```
{
color: props => props.color,
fontSize: props => props.size,
}
```
After:
```
props => ({
color: props.color,
fontSize: props.size,
})
```
Reviewed By: jknoxville
Differential Revision: D9479893
fbshipit-source-id: 2c39e4618f7e52ceacb67bbec8ae26114025723f
Summary: It looks like the iOS simulator screen recording tool expects a SIGINT instead of a SIGKILL (the default of node's ChildProcess.kill()) to indicate it should stop recording, save the video file and die cleanly.
Reviewed By: danielbuechele
Differential Revision: D9480678
fbshipit-source-id: 5f17bd288c7622ffa3c337cef311e5e4e462218a
Summary:
Disabling `atime` on Linux is quite common. (I don't have data to back this up,
but with my sample size of n=1, 100% fall into this bucket.) In that case,
the plugins will be cached indefinitely.
Using `ctime` on the directory doesn't really mean anything because it is
only affected by changes *to* the directory, not the files inside.
So, let's do this right and use the most recent change to any of the files
*inside* the directory instead.
Reviewed By: danielbuechele
Differential Revision: D9479491
fbshipit-source-id: 6945d7bf87defa67679cacdaf0a978d8ff1770c3
Summary: Switches elements from custom virtualization to react-window, so the custom implementation is not needed anymore and therefore can be removed.
Reviewed By: jknoxville
Differential Revision: D9447723
fbshipit-source-id: 7abcc077f87fe634a0e9517908db03398848bce7
Summary:
When changing the props of a table often, this might results in a lot of unnecessary rerenders. This could be mostly seen in the analytics plugin, which is sending a lot of messages in a short time.
The update of the table component is now debounced to only re-render every 150ms. This also affects searching and filtering and makes typing in the search input smoother.
Reviewed By: passy
Differential Revision: D9447722
fbshipit-source-id: 00e092e4e047e9c40e5a1ec2789644858acc18dd
Summary:
Tables were using a custom virtualization, which wasn't as performant as other solutions out there. In this diff, the table component is reworked for performance.
- removes `Table` component, because it was never used standalone, `ManagedTable` is what all plugins used
- uses `react-window` for `ManagedTable`
- reworks table highlighting and arrow-navigation to work with the new virtualization
- moves actual filtering out of `ManagedTable` into `Searchable` component for a better separation of concerns.
Reviewed By: jknoxville
Differential Revision: D9447721
fbshipit-source-id: 15eb2eb55eed9f49a0cb1ccfb2d748b3672fa898
Summary:
Linux appears to spawn a completely separate browser process whereas MacOS either
forks or uses a thread. Either way, Linux no longer has access to the parent
process's environment variables we use to look up plugins. Using
the remote module fixes that.
In the medium term, we should convert the `plugin` module to not rely on import effects
and instead use the IPC mechanism, making the plugin resolution asynchronous:
https://electronjs.org/docs/api/web-contents#contentssendchannel-arg1-arg2-
That would also allow us to do the plugin resolution while starting up the browser window,
lowering the startup time.
Reviewed By: danielbuechele
Differential Revision: D9423628
fbshipit-source-id: 76351f267864147c4494aadaf4e16ea636952118
Summary:
Currently travis just builds the pods which sample app depends on. The test case which the current setup misses it that it will fail to check if the required header files are exposed to public. The master is broken recently because a header file is not exposed publicly and sample app fails to build, whereas all the dependencies like Sonar and SonarKit build successfully. This PR updates the travis, so that it builds sample app rather than the dependent pods.
Pull Request resolved: https://github.com/facebook/flipper/pull/251
Reviewed By: jknoxville
Differential Revision: D9465234
Pulled By: priteshrnandgaonkar
fbshipit-source-id: 42ab7210d7fa5a3dc2927efee4b4dee95f15c6cd
Summary:
This diff adds FlipperStateUpdateListener in public headers, as SonarClient.h depends on it and the sample app depends on SonarClient.h.
This diff fixes the compilation error for Sample and SwiftSample
Ideally travis should have caught it. Fix for travis is coming.
Reviewed By: jknoxville
Differential Revision: D9462177
fbshipit-source-id: e3e0ec90f9083294d4a131989ec0eaee02b52791
Summary: Sidebar extensions are automatically added to main inspector sidebar but kept from accessibility side menu.
Reviewed By: xiphirx
Differential Revision: D9438644
fbshipit-source-id: 47a9cc630117e15be3368d78f2396f02796c998d
Summary:
Sonar isn't yet opening this activity remotely, but it's worth getting users to add it early, so that when it does, it will work.
Pull Request resolved: https://github.com/facebook/flipper/pull/250
Reviewed By: passy
Differential Revision: D9455599
Pulled By: jknoxville
fbshipit-source-id: 252f7e7f89751b188665ece4ab9f815fd90fe500
Summary:
Some apps have a default background color, for example black, making the diagnostic screen fully black.
Fix this by making sure the bg is always white so the text is readable.
Reviewed By: passy
Differential Revision: D9400682
fbshipit-source-id: a45744f833cb7fe5ca7db4dcdacc09f304670032
Summary:
Depends on #247.
Ensure that `libextra` is included when building sonar targets. My
cleanup was a bit too aggressive.
Fixes#246
Pull Request resolved: https://github.com/facebook/flipper/pull/248
Reviewed By: jknoxville
Differential Revision: D9420724
Pulled By: passy
fbshipit-source-id: f2d0625507a4897051840c95feefc534583b080f
Summary:
The plugin was part of the wrong package based on its directory. This
confuses Gradle and I'm frankly a bit surprised this ever built before.
Pull Request resolved: https://github.com/facebook/flipper/pull/247
Reviewed By: danielbuechele
Differential Revision: D9420595
Pulled By: passy
fbshipit-source-id: fd8e47ff242c4535b36e379df93b672eb8bb840d
Summary: Adds on hover descriptions for some of the more esoteric properties in the accessibility sidebar panel such as accessibility-focused and all the talkback derived properties. Also change talkback-focusable and talkback-ignored to both be talkback-focusable.
Differential Revision: D9381676
fbshipit-source-id: 55ce854da24241a7c89b0c122c4c3ebd77438dbb
Summary:
See https://github.com/facebook/flipper/issues/230 for a longer
explanation.
It turns out that many of the tasks in `native.gradle` (at least
`prepareGlog` which modifies files inside the source directory, but also
others) cause the cmake cache to invalidate.
Because we run those tasks unconditionally, we need to recompile all our
C++ code even when unmodified.
I fix this by adding a manual cache key to this which simply skips all
the tasks unless an up-to-date `external_cache_revision.txt` is found.
This is a bit hacky, but the alternatives are a) convincing cmake that
these modifications are not recompile-worthy which I have no idea how to
do and which might be impossible to do `mtime` on the files touches, or
b) having fine-grained `onlyIf` rules for every task which can easily
break. This seems the most straight-forward option.
Fixes#230.
Pull Request resolved: https://github.com/facebook/flipper/pull/242
Reviewed By: jknoxville
Differential Revision: D9381340
Pulled By: passy
fbshipit-source-id: a7db55aacac4a29076c29298d6c5b97d8bc91f66