Commit Graph

642 Commits

Author SHA1 Message Date
Michel Weststrate
55981b5259 Introduce pause button
Summary: ..and some earlier reviews comments has been processed + some fine tuning on the ui

Reviewed By: priteshrnandgaonkar

Differential Revision: D26816559

fbshipit-source-id: adf2586763be185ee8e7cc22b2827ecefe4e4cab
2021-03-16 15:03:45 -07:00
Michel Weststrate
525e079284 Implement deeplink, creating pastes, log deduplication
Summary:
This diff implements the remaining features in the logs plugin:

- deeplinking
- merging duplicate rows

The logs plugin source code has now been reduced from originally `935` to `285` LoC. All optimisation code has been removed from the plugin:

* debouncing data processing
* pre-rendering (and storing!) all rows

Finally applied some further styling tweaks and applied some renames to DataTable / DataSource + types finetuning. Some more will follow.
Fixed a emotion warning in unit tests which was pretty annoying.

Reviewed By: passy

Differential Revision: D26666190

fbshipit-source-id: e45e289b4422ebeb46cad927cfc0cfcc9566834f
2021-03-16 15:03:45 -07:00
Michel Weststrate
5c3a8742ef Introduce context menu
Summary:
Introduced a context menu for DataTable with some default options. Opted to put it under a visible hovered dropdown instead of on right-click, since this better alings with Ant's design guides (we don't have context clicks anywhere else I think), but if it isn't convincing we can still change it.

Included some default actions, to set up quick filters, and to copy values. For copying rows, implemented it to by default take the JSON from a row, rather than space separated values like in ManagedTable, as many existing plugins customize the onCopy handler to just do that, so it seemed like a better default since it is a richer format. If there are good use cases for the previous behavior, we'll probably find out after the old release :)

Introduced utility to copy text to clipboard in FlipperLib, but decoupled it from Electron.

Didn't include multi select yet, that will be done in a next diff.

Reviewed By: nikoant

Differential Revision: D26513161

fbshipit-source-id: b2b1b20b0a6f4ada9de2566bf6b02171f722c4aa
2021-03-16 15:03:44 -07:00
Michel Weststrate
11eb19da4c Introduce column filters
Summary:
Beyond a search across all columns, it is now possible to specific columns for specific values:

* for a row to be visible, all active column filters need to be matched (e.g. both a filter on time and app has to be satisfied)
* if multiple values within a column are filtered for, these are -or-ed.
* if no value at all within a column is checked, even when they are defined, the column won't take part in filtering
* if there is a general search and column filters, a row has to satisfy both

Filters can be preconfigured, pre-configured filters cannot be removed.

Reseting will reset the filters back to their original

Move `useMemoize` to flipper-plugin

Merged the `ui/utils` and `utils` folder inside `flipper-plugin`

Reviewed By: nikoant

Differential Revision: D26450260

fbshipit-source-id: 11693d5d140cea03cad91c1e0f3438d7b129cf29
2021-03-16 15:03:44 -07:00
Michel Weststrate
44bb5b1beb Introduced sorting, column visibility and column resizing
Summary:
Add support for resizable columns, column sorting, and hiding / showing columns

Moved some utilities from Flipper to flipper-plugin, such as Interactive and LowPassFilter

Split DataTable into two components; DataSourceRenderer which takes care of purely rendering the virtualization, and DataTable that has the Chrome around that, such as column headers, search bar, etc.

Reviewed By: nikoant

Differential Revision: D26321105

fbshipit-source-id: 32b8fc03b4fb97b3af52b23e273c3e5b8cbc4498
2021-03-16 15:03:43 -07:00
Pritesh Nandgaonkar
5df0fd6e52 Update the device name for DummyDevice type
Summary: This diff updates the device display name in the drop down for DummyDevice

Reviewed By: mweststrate

Differential Revision: D26945724

fbshipit-source-id: 6a82c6353f6d8dfe6d3a60e06f0f78d00c39ff59
2021-03-10 06:34:37 -08:00
Pritesh Nandgaonkar
50f31f9fe0 Update the device plugins supported devices arguments
Summary:
Device plugins won't work for DummyDevice type as the device id is a fake one for this.

This diff updates the "supportedDevices" for the plugins.

Reviewed By: mweststrate

Differential Revision: D26944601

fbshipit-source-id: a29acc288f8f0c564f52db02914e7b0491b211d2
2021-03-10 06:34:36 -08:00
Pritesh Nandgaonkar
60994bd41f Rename ClientDevice to DummyDevice
Summary: Rename ClientDevice to DummyDevice. It is being currently used in the case when we do cert exchange through WWW/Distillery. In this mode we are not able to figure out the exact device id(instead we create a fake one) and thus we would not like to use Android or IOSDevice for such cases.

Reviewed By: mweststrate

Differential Revision: D26944415

fbshipit-source-id: f9f76e8997cf5402ba5627ae1959f5a11e078bb1
2021-03-10 06:34:36 -08:00
dependabot[bot]
6531b1ff5c Bump @ant-design/icons from 4.4.0 to 4.5.0 in /desktop (#2019)
Summary:
Bumps [ant-design/icons](https://github.com/ant-design/ant-design-icons) from 4.4.0 to 4.5.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/ant-design/ant-design-icons/commits">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@ant-design/icons&package-manager=npm_and_yarn&previous-version=4.4.0&new-version=4.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/2019

Reviewed By: mweststrate

Differential Revision: D26889248

Pulled By: passy

fbshipit-source-id: 753cc63b9417b5e33eb0593122b248fc0c69b0f7
2021-03-10 04:39:03 -08:00
dependabot[bot]
6ac66a0d2d Bump @types/archiver from 3.1.1 to 5.1.0 in /desktop (#2020)
Summary:
Bumps [types/archiver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/archiver) from 3.1.1 to 5.1.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/archiver">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/archiver&package-manager=npm_and_yarn&previous-version=3.1.1&new-version=5.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/2020

Reviewed By: mweststrate

Differential Revision: D26889183

Pulled By: passy

fbshipit-source-id: 60ab86160e29ebf53d8291bac14ef25da9c99e2e
2021-03-10 03:51:55 -08:00
Pritesh Nandgaonkar
226e042e1d Fix the broken xcode detection due to space
Summary: Due to the space in the path, `fs.pathExists` returned false even if the path was existent. Thus added `.trim()` to fix it.

Reviewed By: passy

Differential Revision: D26869404

fbshipit-source-id: 146a96262353177e786f5100a1dad9af7c7d398b
2021-03-08 04:59:42 -08:00
Pritesh Nandgaonkar
a2d559c8c0 Detect Physical iOS device without Xcode
Summary:
This diff adds the support of detecting physical device in Flipper even if the xcode is not installed and there is no cli tool installed.

See the demo.

Reviewed By: timur-valiev

Differential Revision: D26816588

fbshipit-source-id: 5f052998fcbe5c51385222d16df0e1855177b552
2021-03-05 11:36:20 -08:00
Ostap Manastyrski
b26ca1502d Remove time display on android screen recordings
Summary:
Changelog: Creating an Android screen recording no longer includes meta information like frame rate.

Context: https://fb.workplace.com/groups/flippersupport/permalink/1088379648309359/

Before:
{F454408806}

Reviewed By: mweststrate

Differential Revision: D26765408

fbshipit-source-id: 560d7ba4ff4ccff1b4a17f1c1073efe7638e397a
2021-03-05 10:28:36 -08:00
Michel Weststrate
f8faeb2690 Fix incorrect assumption on device id's
Summary: In dev mode a (further harmless) error will be triggered if the self inspection plugin is loaded, since the device_id is empty. empty device id's however are fine; the represent the host device (Mac / Win devices)

Reviewed By: passy

Differential Revision: D26814269

fbshipit-source-id: 281fc591c1df47092011b4140099fc7138718b43
2021-03-04 06:01:48 -08:00
Michel Weststrate
163799cf89 Fix exception that happens on focus change
Summary:
Fixing the previous resulted in a next exception, where blur / focus might be triggered directly as side effect of some running logic. I think this happens when entering a debugger statement causing the window to loose focus in favor of the devtools.

Wrapped the logic in setImmediate to make sure that it runs on its own stack, since this will prevent any potential future issues with programmatically focussing / blurring as well.

Reviewed By: jknoxville

Differential Revision: D26814270

fbshipit-source-id: 5ca430653a219d3c98d8bf925277de67d8a9eb20
2021-03-04 06:01:48 -08:00
Michel Weststrate
67e87c2fa5 Fix gray screen crash that might happen when gathering usage stats
Reviewed By: jknoxville

Differential Revision: D26814271

fbshipit-source-id: bd857a42ae6b2528e42c96d0865ae2c532ea345f
2021-03-04 06:01:48 -08:00
Michel Weststrate
05a7451173 Killed pluginStateRecorder
Summary: The state recorder was never updated for Sandy, nor is that really needed since Sandy offers better testing abstractions, and this was a stop gap with potential privacy concerns (due to recording real data). The feature didn't result in any actual test cases, so it seems we won't be missing out with this :)

Reviewed By: passy

Differential Revision: D26813798

fbshipit-source-id: 48ec11516fbc1a47a349a5799713ad05a7e1c73a
2021-03-04 06:01:48 -08:00
Pascal Hartig
39f0fa86cc Fix idb test (#1996)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1996

Erm, I'm a bit of a dummy. I didn't mock the access check, so it would actually
rely on idb being installed to run the tests correctly. Without, we'd fail like here
on GitHub: https://github.com/facebook/flipper/runs/2021551466

I couldn't quite figure out how to mock `fs.promises.access`, so I made the constructor
configurable, which doesn't seem that bad, actually.

Reviewed By: mweststrate

Differential Revision: D26778428

fbshipit-source-id: 120b8060ad3ccb1cecd8ce2b208733d5e1090a72
2021-03-03 08:06:42 -08:00
Pola Abram
d7fc17c12e Move list of valid origin prefixes for incoming WebSocket requests to a constant
Summary: Create a constant to hold all valid origin prefixes, for incoming WebSocket requests. This is to make it easier to add additional origins.

Reviewed By: mweststrate

Differential Revision: D26778708

fbshipit-source-id: b89bd8c8d8925b2863f12c319c6ecbeeb265fc42
2021-03-03 07:54:50 -08:00
Anton Nikolaev
fce723eaca Metro and Babel upgraded
Summary:
Upgraded Metro to 0.65.2 which contains the fix for regression which blocked us previously (https://github.com/facebook/metro/issues/641).
Also upgraded Babel to the latest available versions as anyway most of its packages were upgraded together with Metro.

Reviewed By: passy

Differential Revision: D26777168

fbshipit-source-id: f325e0ba46a95e15605a7b15a793d714b1027061
2021-03-03 04:42:43 -08:00
Michel Weststrate
90ac5f55a2 Add version number to error message
Summary: Minimal tweak to the soft crash error reporting: include the version number

Reviewed By: passy

Differential Revision: D26754416

fbshipit-source-id: d517d0bdb6bcf5c58b492c60b5bb8cc5f6b288f6
2021-03-03 03:17:34 -08:00
Anton Nikolaev
769b4d68bf Fix issue with migration producing undefined state for enabled plugins
Summary: I've modified migration to ensure it never produces "undefined" state. Before that this happened when migration is performed from version 0.75- to 0.77+ without 0.76 in between.

Reviewed By: mweststrate

Differential Revision: D26749830

fbshipit-source-id: 3a6599e80935060e8784103363abd617a7f1b7bd
2021-03-02 12:09:48 -08:00
Pascal Hartig
390f27a137 Start bridge abstraction
Summary: This is just an early start of centralising some ad-hoc logic we've got all over the place right now. Memoised do-we-have-idb calls with concatenated shell invocations. This gives us the opportunity to do a bit of testing, too.

Reviewed By: mweststrate

Differential Revision: D26694863

fbshipit-source-id: cd2b9883f90397802bbaae6030f7cb3881c565c2
2021-03-02 09:53:19 -08:00
Pascal Hartig
43242557aa Remove listDevices
Summary: Appears to be unused.

Reviewed By: mweststrate

Differential Revision: D26753922

fbshipit-source-id: 7a21b8242e4c8d2428a286bc6ef63adafe74a78c
2021-03-02 09:53:18 -08:00
Pola Abram
05bfaef75c Allow KaiOS apps (origin "app://") to connnect to the WebSocket server
Summary:
Packaged KaiOS apps have "app://" as their origin prefix (see the "origin" section in the documentation - https://developer.kaiostech.com/getting-started/main-concepts/manifest).

Accept WebSocket connections from any "app://" origin, so can connect to Flipper from apps running on KaiOS devices.

Reviewed By: priteshrnandgaonkar

Differential Revision: D26728925

fbshipit-source-id: 05f15fe464bf0dc977665fba1dd2b8d61a399fa6
2021-03-02 07:29:18 -08:00
Michel Weststrate
224ec4d5d6 Fix device cleanup
Summary:
Fixes https://github.com/facebook/flipper/issues/1989

We had some self healing side effect that would destroy devices when registering a new device with the same serial, if they weren't yet. Redux isn't too happy about that, causing the attached crash.

Instead introduced a utility to destroy devices, and log an error if the device life cycle isn't respected by the device implementations, rather than crashing we will now just waste some memory.

Changelog: Fix a crash when disconnecting metro devices

Reviewed By: passy

Differential Revision: D26749214

fbshipit-source-id: 4c185ac521d44c1337fac8a9145440123b8b784c
2021-03-02 03:58:55 -08:00
dependabot[bot]
d94b99b0ee Bump async-mutex from 0.2.6 to 0.3.1 in /desktop (#1984)
Summary:
Bumps [async-mutex](https://github.com/DirtyHairy/async-mutex) from 0.2.6 to 0.3.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/DirtyHairy/async-mutex/blob/master/CHANGELOG.md">async-mutex's changelog</a>.</em></p>
<blockquote>
<h2>0.3.1</h2>
<ul>
<li><code>withTimeout</code>: make Jest happy and cancel timer when the mutex is acquired.
Thanks to cantoine for the PR.</li>
</ul>
<h2>0.3.0</h2>
<ul>
<li>
<p>Deprecate <code>Mutex::release</code> / <code>Semaphore::release</code> and remove them from the
documentation. The methods are still available in 0.3.x, but will be removed in
0.4.0.</p>
<p>I don't like breaking existing APIs, but using those methods is inherently
dangerous as they can accidentially release locks acquired in a completely
different place. Furthermore, they are mostly useless for semaphores. I consider
adding them an unfortunate mistake on my end.</p>
<p>A safe alternative is the usage of <code>runExclusive</code> which allows to execute
blocks exclusively and automatically manages acquiring and releasing the
mutex or semaphore.</p>
</li>
<li>
<p>Add <code>Mutex::cancel</code> / <code>Semaphore::cancel</code> for rejecting all currently pending
locks.</p>
</li>
<li>
<p>Add <code>tryAcquire</code> decorator for lock-or-fail semantics.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="93f1ff7d6d"><code>93f1ff7</code></a> Changelog, bump version.</li>
<li><a href="3aad9351d7"><code>3aad935</code></a> Bump version.</li>
<li><a href="eed47b0425"><code>eed47b0</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/DirtyHairy/async-mutex/issues/34">https://github.com/facebook/flipper/issues/34</a> from cantoine/clear-timeout-fix</li>
<li><a href="38e59ba3b4"><code>38e59ba</code></a> Add clearTimeout and tests</li>
<li><a href="76fb6185d3"><code>76fb618</code></a> Point badge to action on gh.</li>
<li><a href="330854af56"><code>330854a</code></a> Typo.</li>
<li><a href="73992fee3a"><code>73992fe</code></a> Ups.</li>
<li><a href="b3870af6b6"><code>b3870af</code></a> Badge.</li>
<li><a href="13ad461682"><code>13ad461</code></a> Another stab at coveralls.</li>
<li><a href="3e5daebbb7"><code>3e5daeb</code></a> Remove travis, add coveralls to github workflow.</li>
<li>Additional commits viewable in <a href="https://github.com/DirtyHairy/async-mutex/compare/v0.2.6...v0.3.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-mutex&package-manager=npm_and_yarn&previous-version=0.2.6&new-version=0.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1984

Reviewed By: passy

Differential Revision: D26724090

Pulled By: mweststrate

fbshipit-source-id: 71a59fe1df200198fc437d2a87f72dde82ba4fa4
2021-03-02 01:23:06 -08:00
dependabot[bot]
fa258605da Bump open from 7.3.1 to 7.4.2 in /desktop (#1985)
Summary:
Bumps [open](https://github.com/sindresorhus/open) from 7.3.1 to 7.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/sindresorhus/open/releases">open's releases</a>.</em></p>
<blockquote>
<h2>v7.4.2</h2>
<ul>
<li>WSL: Fix mount point issue (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/224">https://github.com/facebook/flipper/issues/224</a>)  f4df68a</li>
</ul>
<p><a href="https://github.com/sindresorhus/open/compare/v7.4.1...v7.4.2">https://github.com/sindresorhus/open/compare/v7.4.1...v7.4.2</a></p>
<h2>v7.4.1</h2>
<ul>
<li>Windows: Fix error with forward slashes in path (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/220">https://github.com/facebook/flipper/issues/220</a>)  db8eb8f</li>
<li>WSL: Get drives mount point from wsl.conf (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/219">https://github.com/facebook/flipper/issues/219</a>)  36e9964</li>
</ul>
<p><a href="https://github.com/sindresorhus/open/compare/v7.4.0...v7.4.1">https://github.com/sindresorhus/open/compare/v7.4.0...v7.4.1</a></p>
<h2>v7.4.0</h2>
<ul>
<li>Remove usage of <code>wslu</code> (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/217">https://github.com/facebook/flipper/issues/217</a>)  315a480</li>
</ul>
<p><a href="https://github.com/sindresorhus/open/compare/v7.3.1...v7.4.0">https://github.com/sindresorhus/open/compare/v7.3.1...v7.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9babe05b3"><code>a9babe0</code></a> 7.4.2</li>
<li><a href="f4df68ab2f"><code>f4df68a</code></a> WSL: Fix mount point issue (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/224">https://github.com/facebook/flipper/issues/224</a>)</li>
<li><a href="f0533c0219"><code>f0533c0</code></a> 7.4.1</li>
<li><a href="db8eb8f30c"><code>db8eb8f</code></a> Windows: Fix error with forward slashes in path (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/220">https://github.com/facebook/flipper/issues/220</a>)</li>
<li><a href="02bff0124b"><code>02bff01</code></a> Replace deprecated API regarding Electron tip (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/221">https://github.com/facebook/flipper/issues/221</a>)</li>
<li><a href="36e9964505"><code>36e9964</code></a> WSL: Get drives mount point from wsl.conf (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/219">https://github.com/facebook/flipper/issues/219</a>)</li>
<li><a href="5ce319c848"><code>5ce319c</code></a> 7.4.0</li>
<li><a href="315a48046b"><code>315a480</code></a> Remove usage of <code>wslu</code> (<a href="https://github-redirect.dependabot.com/sindresorhus/open/issues/217">https://github.com/facebook/flipper/issues/217</a>)</li>
<li>See full diff in <a href="https://github.com/sindresorhus/open/compare/v7.3.1...v7.4.2">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=open&package-manager=npm_and_yarn&previous-version=7.3.1&new-version=7.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1985

Reviewed By: passy

Differential Revision: D26724088

Pulled By: mweststrate

fbshipit-source-id: 00ac9ff0aa15b2bfc1742e2a9e73da693781eabf
2021-03-02 01:23:06 -08:00
dependabot[bot]
10efc4dfa3 Bump react-color from 2.18.1 to 2.19.3 in /desktop (#1987)
Summary:
Bumps [react-color](https://github.com/casesandberg/react-color) from 2.18.1 to 2.19.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/casesandberg/react-color/commits">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=react-color&package-manager=npm_and_yarn&previous-version=2.18.1&new-version=2.19.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1987

Reviewed By: passy

Differential Revision: D26724081

Pulled By: mweststrate

fbshipit-source-id: c7b136546206dadfbd1a793360953b14586b219b
2021-03-02 01:23:06 -08:00
Michel Weststrate
afa2c6322a make lint error on missing keys
Summary: When exploratory testing Flipper, I generally see quite some React key warnings. So it seems that plugin devs often miss them. This diff will configure linting more aggressively to address that (it's not fool proof, but will find the most common cases).

Reviewed By: nikoant

Differential Revision: D26722707

fbshipit-source-id: e0d2b56de2422e1147f52c8e9150d00c7ee64bd2
2021-03-02 01:17:13 -08:00
Michel Weststrate
4b91e83b0a Add tracking to legacy Tabs component
Summary:
Per title

As requested in https://fb.workplace.com/groups/flippersupport/permalink/1080030509144273/

Reviewed By: fabiomassimo

Differential Revision: D26691262

fbshipit-source-id: d7863749700c4a0f3af736f251c9c3f03d4f71b9
2021-02-26 07:27:54 -08:00
Michel Weststrate
357d2991d5 automatically select reconnected clients
Summary:
Changelog: Flipper will no automatically select any newly connected client

This reverts D26250896 (2df117923c) to V5, which is to aggressively select new clients. The current behavior was too conservative and caused Flipper to jump to a different client, without returning, after reconnecting a disconnected device.

As reported in https://fb.workplace.com/groups/flippersupport/permalink/1084676302013027/

Reviewed By: fabiomassimo

Differential Revision: D26691046

fbshipit-source-id: b16af2052f58dc1d4254eb1e6ebbb5848c53ed7e
2021-02-26 07:27:54 -08:00
Michel Weststrate
f2689d3a5d Add device level icons
Summary: Gave every device an icon, and use it as fallback in case we don't have a client icon. Added an icon for the Flipper client. This gets (largely) rid of the 'blank' icons

Reviewed By: fabiomassimo

Differential Revision: D26691054

fbshipit-source-id: d83012e755ae5edb230747e88f9b2eac45450b19
2021-02-26 07:27:54 -08:00
Michel Weststrate
a5cd18c289 Register Flipper self inspection client under its own device
Summary:
There is currently a separate device for the Flipper inspection plugin. Figured it would be simpler and more logical to directly put it under the host device.

Might clean this up further in the future by having a `host` device and turning this into a device plugin

Reviewed By: fabiomassimo

Differential Revision: D26691053

fbshipit-source-id: 4f2fe890a1fff559b19b1599cc02017c45a635b9
2021-02-26 07:27:53 -08:00
Michel Weststrate
86e700f918 Fix device plugins targeting host device not showing up
Summary:
Fixes https://github.com/facebook/flipper/issues/1945

Changelog: Fixed an issue where device plugins targeting the host device didn't show up without connected clients.

Reviewed By: fabiomassimo

Differential Revision: D26690516

fbshipit-source-id: b46fd9bf06189354ed772581dc8db6b17104bea9
2021-02-26 07:27:53 -08:00
Anton Nikolaev
414e90730b Fixed possible null pointer crash on startup
Summary:
Fix for https://github.com/facebook/flipper/issues/1964

Changelog: fixed possible crash on startup after updating from a previous Flipper version to 0.77.0

Reviewed By: mweststrate

Differential Revision: D26664846

fbshipit-source-id: 6f9fabeaee8cfe1fa0df11bb57e27d659378a835
2021-02-25 09:18:11 -08:00
dependabot[bot]
9b371b2f78 Bump rsocket-flowable from 0.0.22 to 0.0.23 in /desktop (#1954)
Summary:
Bumps [rsocket-flowable](https://github.com/rsocket/rsocket-js) from 0.0.22 to 0.0.23.
<details>
<summary>Commits</summary>
<ul>
<li><a href="8e357291ed"><code>8e35729</code></a> v0.0.23</li>
<li><a href="5eece29159"><code>5eece29</code></a> ensures existing Buffer polyfills are overridden (<a href="https://github-redirect.dependabot.com/rsocket/rsocket-js/issues/114">https://github.com/facebook/flipper/issues/114</a>)</li>
<li><a href="e002a64d69"><code>e002a64</code></a> ensures connection closed if connect() subscription is cancelled (<a href="https://github-redirect.dependabot.com/rsocket/rsocket-js/issues/113">https://github.com/facebook/flipper/issues/113</a>)</li>
<li><a href="a94ebeab5b"><code>a94ebea</code></a> improves example</li>
<li><a href="6fb2aa519b"><code>6fb2aa5</code></a> removes proper handler</li>
<li><a href="d392b39843"><code>d392b39</code></a> adds missing rsocket-types package</li>
<li><a href="f85762d078"><code>f85762d</code></a> adds example of server-side with composite metadata</li>
<li><a href="195e9affd5"><code>195e9af</code></a> fixes formats and improves composite-metadata example</li>
<li>See full diff in <a href="https://github.com/rsocket/rsocket-js/compare/v0.0.22...v0.0.23">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rsocket-flowable&package-manager=npm_and_yarn&previous-version=0.0.22&new-version=0.0.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1954

Reviewed By: mweststrate

Differential Revision: D26605957

Pulled By: passy

fbshipit-source-id: 511bf81579216edc60ab4ab1f4a1adab1cd305c2
2021-02-24 11:31:05 -08:00
Michel Weststrate
3a6d7517a4 Fix a crash if a device disconnected while a Sheet was open
Summary:
A temporarily hack that was a left-over from the past where we could switch between Sandy and non-Sandy UI, caused Flipper to crash.

This is the first runtime crash we find with the new Crash reporting dialog last week :)

Changelog: Fixed an issue where Flipper could occasionally crash when disconnecting a device

Reviewed By: passy

Differential Revision: D26634620

fbshipit-source-id: 5ca0b14dee332859a4d8af27501f0916c55a1370
2021-02-24 07:56:23 -08:00
Anton Nikolaev
fa3ff83595 Rename star/unstar actions to enable/disable/switch
Summary:
Renamed actions "star" and "unstar" everywhere to "enable", "disable" and "switch". The logic behind original "star" action changed significantly, so this rename just makes everything much clearer.

Please note that as a part of rename persisted state fields "userStarredPlugins" and "userStarredDevicePlugins" were renamed. I've added a "redux-persist" migration for seamless transition.

Reviewed By: passy

Differential Revision: D26606459

fbshipit-source-id: 83ad475f9b0231194701c40a2cdbda36f02c3d10
2021-02-24 05:30:57 -08:00
Anton Nikolaev
e9bab76614 Auto-enable plugins for new users
Summary:
This is a very simple implementation of "profiles". It allows defining sets of plugins and associate them with GKs. Plugins from sets are automatically installed and enabled when a mobile app connected to Flipper for the first time (e.g. user has not already debugged same app before). Set is only enabled if user is passing the associated GK.
Sets are simply hardcoded for now.

Reviewed By: timur-valiev

Differential Revision: D26605371

fbshipit-source-id: 9bf0600d44381e047361d960558aa004960550c1
2021-02-24 05:30:57 -08:00
Pascal Hartig
adfc6e4f99 Demote errors in CertificateProvider
Summary:
Errors and warnings are both shown to users. I'm applying the rule of
thumb of using errors for non-recoverable problems that require *our*
intervention. All of these errors can happen under normal
circumstances.

Reviewed By: mweststrate

Differential Revision: D26577917

fbshipit-source-id: 12ba6725b6575bdf62141b01a16a5638c2c95701
2021-02-22 04:26:48 -08:00
Pascal Hartig
c010e22612 Reduce errors from androidDevice
Summary:
None of these are fatal. In fact, they're quite common for people
who've got Android enabled but no tools installed. So they're warnings
at best.

I'd like to find a way to guide people to the settings in this case
or use Doctor to disable Android support instead of retrying this
endlessly.

Reviewed By: mweststrate

Differential Revision: D26547577

fbshipit-source-id: 81e658fe3d95b2d12e76e4b635575f3e5a6fc53b
2021-02-22 03:37:35 -08:00
Pascal Hartig
11d2871893 Reduce error spam from adb start-server
Summary:
We do have a fall-back for this so there's no need to give this error or even
warning treatment. If the fallback fails, we already have a warning.

Reviewed By: mweststrate

Differential Revision: D26547277

fbshipit-source-id: 96ac91def7e6e111d32d3536d8796f347d6c519d
2021-02-22 03:37:35 -08:00
Pascal Hartig
e3d1e41cc1 Dedupe errors when sending
Summary: Keeps a small ring buffer of errors we're sending and checks if they're tracked. I'm sure there's a better data structure for this out there were we could have O(1) membership checks, but since we're not keeping that many errors to begin with and we're saving a lot of CPU that would go into sending the errors to Scribe, this should be a net positive.

Reviewed By: mweststrate

Differential Revision: D26488825

fbshipit-source-id: fdcf58e88d43864852c13e4741a7ab620d596094
2021-02-18 09:05:11 -08:00
Anton Nikolaev
f6026de2f0 Record video always in 1280x720
Summary:
Video recording for Android devices is quite unreliable now, because not all resolutions are supported:
https://android.stackexchange.com/questions/168944/unable-to-get-output-buffers-err-38-when-attempting-to-screen-record-emulator

In this diff I changed resolution for the captured videos to always be 1280x720 or 720x1280. These resolutions are always supported because they are used by default if device native resolution cannot be detected.

Changelog: Android video is now always captured in 1280x720 / 720x1280 to avoid the issue when video cannot be captured because of unsupported resolution (err=-38)

Reviewed By: mweststrate

Differential Revision: D26225203

fbshipit-source-id: 0f9491309bf049fd975f20e096c5c7362d830adc
2021-02-18 08:11:03 -08:00
Anton Nikolaev
c0010bea4c Fix to avoid loading of disabled device plugins
Summary: There is a bug right now that even for disabled plugins we're loading them. In particular, this led to the Flipper freezes caused by Logs plugin even if it is disabled.

Reviewed By: passy

Differential Revision: D26503012

fbshipit-source-id: 2068626f4637ced44c457ee1b7ba7fffdcf5aa47
2021-02-18 04:00:21 -08:00
Pritesh Nandgaonkar
6d2206769c Fix the regex to allow xcode from non standard location (#1939)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1939

This diff fixes T84865014. We used to assume in our xcode cli check that xcode will be run from standard /Applications folder. But as mentioned in the above tasks, its not always true.

Reviewed By: passy

Differential Revision: D26484287

fbshipit-source-id: 32d343dece53576f99cbbb6d193138e803505935
2021-02-17 09:45:19 -08:00
Michel Weststrate
d37f1c282a Fixed issue with reseting logs
Summary:
Noticed that subsequent `adb logcat` invocations are stateful, and we didn't clear it's state when clearing the logs in memory.

This is a bandaid to get back to the previous behavior. I am wondering whether it wouldn't be just much more intuitive to always clear the logs (`adb logcat -c`) before we start the streaming log listener, so that users are never shown old logs from before flipper was connected?

Also fixed a leak in cleaning up the log listeners that was revealed by the possibility to disable the log plugin

Reviewed By: nikoant

Differential Revision: D26450262

fbshipit-source-id: 5b426e2d0e1fafdbc512d48d22b7bd4f30b61309
2021-02-17 08:19:28 -08:00
Stacey Ilioukhina
bf8fbe3f70 Update Flipper to use grouped data
Summary: Updated FileList to traverse folders

Reviewed By: jdlehman

Differential Revision: D26372158

fbshipit-source-id: 16fadb179545cb701d0a970e3cc2411860ee8ed9
2021-02-16 15:15:36 -08:00
Anton Nikolaev
4390ff44ce Device plugin management (7/n): Show warnings for the device plugins defined in the legacy format
Summary: Show warnings for the device plugins defined in the legacy format and suggest to migrate them

Reviewed By: mweststrate

Differential Revision: D26459321

fbshipit-source-id: 4e45cd58a63a4ff9903ecaf12e6f9ba4a43e71e1
2021-02-16 10:50:20 -08:00