Commit Graph

2479 Commits

Author SHA1 Message Date
Pascal Hartig
14b83ad050 Don't tear down server on disconnect
Summary: These safeguards were added based on a discussion in D35088208 (56e94394ca) but turned out to be counter-productive. Every time a client disconnects now, we're tearing down the socket and the server, allowing for no future connections.

Reviewed By: lblasa

Differential Revision: D36252605

fbshipit-source-id: c3b6f85dea4054505a47d24a72a4aac403371c0f
2022-05-10 08:45:57 -07:00
Andrey Goncharov
754afd0d2d Fix and re-apply "[flipper] Automatically set Android devices into the permissive mode"
Summary: Reverts D36263724 (0ee8f09fe5) and fixes the underlying crash by setting only physical devices in the permissive mode

Reviewed By: passy

Differential Revision: D36275055

fbshipit-source-id: 25a691e9c07e20a3341630db508795c133a9bd81
2022-05-10 08:42:58 -07:00
Andrey Goncharov
7b31a1c6b6 Add headless-demo plugin and its usage example
Summary:
Next steps:
1. Refactor it TS for consistency
2. Remove it in favor of tic-tac-toe integration

Reviewed By: mweststrate

Differential Revision: D36102002

fbshipit-source-id: 7dc930f67bed636159a2ec433d7405ab6ee09f97
2022-05-10 05:13:24 -07:00
Andrey Goncharov
b4498f070f Add flipper-server-companion to flipper-server
Summary: Start flipper-server-companion whenever a client connects to flipper-server and sets `server_companion` query parameter in a connection URL to true

Reviewed By: mweststrate

Differential Revision: D36098169

fbshipit-source-id: eb953e7d680b30aef1340f059264112387264c05
2022-05-10 05:13:24 -07:00
Andrey Goncharov
a6d7f98cfd Bundle headless plugins
Summary: Current temporary limitations: all headless plugins are bundled with Flipper.

Reviewed By: antonk52

Differential Revision: D36098168

fbshipit-source-id: c58abe41776157258a5c39a80a5c1a33cf3f42c5
2022-05-10 05:13:24 -07:00
Andrey Goncharov
1f2f799772 Setup globals and initialize flipper-server-companion
Summary:
We want Flipper plugins to share imports with Flipper:
- They must share the same React otherwise different Reacts could conflict with each other
- Other common modules are shared to decrease the bundle size for each plugin.

`setGlobalObject` provides shared modules to Flipper Plugins by adding them to the global context (window or process or global this).

In the headless context, we do not have React and other DOM-related libraries, so we provide stubs instead.

Reviewed By: passy

Differential Revision: D36130161

fbshipit-source-id: d30c59a6c3ae02e7f9244bc0bb5790079b771107
2022-05-10 05:13:24 -07:00
Andrey Goncharov
c1dc1788a5 Initialize flipper lib and render host in headless mode
Reviewed By: mweststrate

Differential Revision: D36130158

fbshipit-source-id: cfdd22456bd4674e027dbcf83e67bf52cd757cf7
2022-05-10 05:13:24 -07:00
Andrey Goncharov
98dde53cda Add companion logging
Summary: Add top-level error logging to flipper-server. Use the top-level logging mechanism in flipper-companion.

Reviewed By: lblasa

Differential Revision: D36252218

fbshipit-source-id: 58d22b3b9bd51e597b5250478640f54d10277861
2022-05-10 05:13:24 -07:00
Andrey Goncharov
e218b79de2 Implement companion
Summary: Add Flipper Server Companion implementation. It extends the list of commands handled by Flipper Server by adding commands to interact with device or app Flipper plugins.

Reviewed By: mweststrate

Differential Revision: D36130159

fbshipit-source-id: 2eb6ba0fbae0fa850eadb7d417aa476240994bd5
2022-05-10 05:13:24 -07:00
Andrey Goncharov
ecb92c195c Implement HeadlessPluginInitializer
Reviewed By: lblasa

Differential Revision: D36130160

fbshipit-source-id: 6edff1c54bf5bf8cb85387bc2877788f947f97a6
2022-05-10 05:13:24 -07:00
Andrey Goncharov
deaf2359b1 Implement HeadlessClient
Reviewed By: lblasa

Differential Revision: D36130082

fbshipit-source-id: 00f9709d9a4f245063ae428521031afe74a521d6
2022-05-10 05:13:24 -07:00
Andrey Goncharov
5d346b4991 Add flipper-server-companion
Summary: Flipper Server Companion starts headless plugins and exposes them over the wire

Reviewed By: passy

Differential Revision: D36098170

fbshipit-source-id: 3b1b077d1fa4adca5c340ad4475b80b229586e1b
2022-05-10 05:13:24 -07:00
Andrey Goncharov
d795117910 Expose exports from the root of flipper-frontend-core
Summary: flipper-frontend-core shares logic between different desktop flipper clients: flipper browser ui, flipper electron, flipper headless

Reviewed By: passy

Differential Revision: D36129747

fbshipit-source-id: 598382ad3897701b307a16a42dc65d4c277b3e15
2022-05-10 05:13:24 -07:00
Andrey Goncharov
7cae3af507 Add plugin initializer to flipper-frontend-core
Summary: Extract plugin initialization

Reviewed By: mweststrate

Differential Revision: D36129748

fbshipit-source-id: db56e24388f7ed858d2173b67affa37de842a9b1
2022-05-10 05:13:24 -07:00
Andrey Goncharov
ea6c293726 Set global replacements in flipper-frontend-core
Summary: Extract setting global replacements from plugin initialization

Reviewed By: mweststrate

Differential Revision: D36129749

fbshipit-source-id: 6f5b3e27c1b798124b5f2772e9099899ce521d0a
2022-05-10 05:13:24 -07:00
Andrey Goncharov
658cd1544d Add AbstractClient to flipper-frontend-core
Summary: AbstractClient provides basic interaction with Flipper Server and manages plugins

Reviewed By: mweststrate

Differential Revision: D36129750

fbshipit-source-id: 056589666c45821d0af276e3a1572708e0a3b903
2022-05-10 05:13:24 -07:00
Andrey Goncharov
f0b5e7cadb Copy RenderHost, FlipperLib initialization, device definition to flipper-frontend-core
Reviewed By: passy

Differential Revision: D36129746

fbshipit-source-id: 15e32b9482d7fe3a24567d2e6bc087095b98226e
2022-05-10 05:13:24 -07:00
Andrey Goncharov
db49673d8a Setup flipper-frontend-core
Reviewed By: passy

Differential Revision: D36129751

fbshipit-source-id: 7e2a792de412a7ada8c58e0d3f0c6c2d18828996
2022-05-10 05:13:24 -07:00
Andrey Goncharov
5a5c0ce426 Export typeUtils from flipper-common
Reviewed By: passy

Differential Revision: D36098166

fbshipit-source-id: 0f3da1d17da8ff6d08bc05abe73f9657df3bc3b8
2022-05-10 05:13:24 -07:00
Andrey Goncharov
2854e75e9c Support exporting public API from a plugin
Reviewed By: passy

Differential Revision: D36098167

fbshipit-source-id: 90182248d0541a1d8eff92a391a56422537c0595
2022-05-10 05:13:24 -07:00
Andrey Goncharov
3dd7583fdc Add device-find, client-find server commands
Reviewed By: passy

Differential Revision: D36098171

fbshipit-source-id: f0d0bbefcafc57a6413f9ffe8da271419c0d4deb
2022-05-10 05:13:24 -07:00
Andrey Goncharov
50111ef24b Add headless plugin definition
Summary: Support explicitly marking headless plugins as "headless"

Reviewed By: passy

Differential Revision: D35891387

fbshipit-source-id: 50b5acb3a7c52d7aedf32e271ebe6fc6d4fcef73
2022-05-10 05:13:24 -07:00
Andrey Goncharov
3ac93d301a Remove optional in plugin init/deinit
Reviewed By: mweststrate

Differential Revision: D35965072

fbshipit-source-id: 0be6b538d371e41b438263a6a4161b079861b293
2022-05-10 05:13:24 -07:00
Michel Weststrate
ee013e29fc Make sure public prettier plugin is recommended when developing on Flipper
Summary: On a fresh VS Code install, only the internal Prettier plugin is available, but not the open source version, which we need as the internal one doesn't work on Flipper (probably due to TypeScript?)

Reviewed By: lblasa

Differential Revision: D36275616

fbshipit-source-id: bccbbcd372f7a7ecca46eb83f5515543e611235c
2022-05-10 04:13:22 -07:00
Mengke Ding
0ee8f09fe5 Back out "Automatically set Android devices into the permissive mode"
Summary:
Original commit changeset: 471470c5ca91

Original Phabricator Diff: D35356211 (501abc6b55)

Recently, bloks users reported that android emulators lost connection upon launching Flipper. (S270689)

Manual bisecting indicates that remote emulators won't crash on v0.142.362128844 (4/6) but crash on 0.143.365099607 (4/21).

Looking at https://www.internalfb.com/code/fbsource/[history]/xplat/scripts/.flipperversion.v2, and backing out D35356211 (501abc6b55) fixes the issue.

It's still unclear why setting `setIntoPermissiveMode` would crash/disconnect the android emulators, I'd defer Flipper team to investigate this further but this diff should unblock all the android bloks emulator + Flipper use case.

Reviewed By: lblasa

Differential Revision: D36263724

fbshipit-source-id: e8674730c0185457f6eda347ce7d9a41f9e1a2a4
2022-05-09 16:04:14 -07:00
Kevin Strider
b38591a35c features docs
Summary:
Remove reference to limitation of an API to a particular platform or app.

We show in Flipper whether the plugin is compatible or not. For example, if an iOS device is connected, for plugins that don't support iOS, Flipper marks them as disabled and show a message.

Reviewed By: lblasa

Differential Revision: D36241811

fbshipit-source-id: 4f936279c8dd616fc95a4e6c3e149a0b74b98bd6
2022-05-09 05:46:04 -07:00
Pascal Hartig
045e0cc9fe App bundle for server
Summary:
This bundles up the Flipper Server in a Mac App Bundle which is identically in shape to a regular Desktop bundle. That means we can swap them out transparently without having to keep the layout in sync with Flipper Launcher.

It bundles nodeJS binary which we can later also provide for aarch64.

Reviewed By: aigoncharov

Differential Revision: D36140809

fbshipit-source-id: fb3410626ab172ce0da48f1a4a1489da68450369
2022-05-09 04:19:55 -07:00
Pascal Hartig
39317adfb7 Disable flaky PluginContainer test (#3693)
Summary:
Keeps flaking out: https://github.com/facebook/flipper/runs/6308722109?check_suite_focus=true

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

Reviewed By: aigoncharov

Differential Revision: D36170437

Pulled By: passy

fbshipit-source-id: 471e702243d68d927287aad5d1fc1d8c392b059c
2022-05-09 03:35:52 -07:00
Kevin Strider
706dae0585 overview.mdx (Features - Network)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: mweststrate

Differential Revision: D36197861

fbshipit-source-id: b73787f04892d3f76938929ef84943f2031657e1
2022-05-06 07:44:46 -07:00
Kevin Strider
dc3d84b573 overview.mdx (Features - Sandbox)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: passy

Differential Revision: D36198283

fbshipit-source-id: 499133cc7265488203a248da2d1e519fc23a0d19
2022-05-06 07:44:02 -07:00
Kevin Strider
6269b71896 overview.mdx (Features - Navigation)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: mweststrate

Differential Revision: D36197599

fbshipit-source-id: 6fad2066d64f1f191b32639e1f36c24e103a91fb
2022-05-06 07:41:46 -07:00
Kevin Strider
89c0421517 overview.mdx (Features - Shared Preferences Viewer)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: mweststrate

Differential Revision: D36198043

fbshipit-source-id: 961d9b535f0869ae3db3bbdfcbc33be43773edd6
2022-05-06 07:34:09 -07:00
Flipper Bot
4b07c0f9d9 Flipper Release: v0.145.0
Summary: Releasing version 0.145.0

Reviewed By: cekkaewnumchai

Differential Revision: D36168545

fbshipit-source-id: 4cb68eb9c8c80a0018c2a617ce0704fd18ff0b47
2022-05-06 05:14:39 -07:00
Pascal Hartig
d05d3f9336 Upgrade more /desktop deps
Summary: Taking care of the remaining dependabot tasks In my queue.

Reviewed By: mweststrate

Differential Revision: D36131782

fbshipit-source-id: f8a5ce18bfab7c5d50a88d64f9516d67bba4bd6d
2022-05-05 08:07:44 -07:00
Pascal Hartig
342e22bd87 Upgrade more /desktop deps
Summary: More bumps for patch and minor releases. allow-large-files

Reviewed By: aigoncharov

Differential Revision: D36104098

fbshipit-source-id: 6db995e660afbe4febd72aa70ed8150cc16a8c93
2022-05-04 04:03:19 -07:00
Pascal Hartig
ef19d06239 Upgrade metro
Summary: Bunch of dependabot PRs showed that the signal is green, but still wanted to have all in one diff.

Reviewed By: aigoncharov

Differential Revision: D36102480

fbshipit-source-id: 88d472fdc2a910a7441a9e8164fe8af0f2d90f7b
2022-05-04 04:03:19 -07:00
Pascal Hartig
cc3aca0e8b Upgrade @types/node to one version everywhere
Summary: Caused some inconsistencies when running `tsc`. This brings them back in line.

Reviewed By: aigoncharov

Differential Revision: D36101548

fbshipit-source-id: b8f757c59f879911c9b0920fe11396246ffa37e2
2022-05-04 04:03:19 -07:00
Pascal Hartig
f9841764cc Re-enable project-wide tsc
Summary: On top of the stack, this should be green again.

Reviewed By: nikoant

Differential Revision: D36100200

fbshipit-source-id: 581e3d825ef8e088f6d5ed4b0fcdfea574121667
2022-05-03 09:55:04 -07:00
Pascal Hartig
3032736294 Fix type errors for flipper-server and flipper-ui-browser
Summary:
Before:

```
flipper-server/src/startBaseServer.tsx(222,30): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.
flipper-ui-browser/src/flipperServerConnection.tsx(25,9): error TS2322: Type 'Timeout' is not assignable to type 'number'.
```

Reviewed By: nikoant

Differential Revision: D36100188

fbshipit-source-id: 1913a43109a0e068394a188d362f6a9e473e7904
2022-05-03 09:55:04 -07:00
Pascal Hartig
e1d15fee15 Disable flaky test
Summary:
Test is flaky, causing failures on master.

{P498157360}

Reviewed By: lblasa

Differential Revision: D36004615

fbshipit-source-id: 484451f83459e42d459ed548525055d230e07734
2022-05-03 08:52:18 -07:00
Kevin Strider
d87fdafc9f overview.mdx (Features - Layout)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: passy

Differential Revision: D35898254

fbshipit-source-id: 67e3f3e344faf105f5a8f393c60441d6af3d62aa
2022-04-27 08:38:20 -07:00
Zeh Fernando
8f62ac8428 Add new icon
Summary: Add new icon for internal plugin

Differential Revision: D35835433

fbshipit-source-id: 7d859a923c2070cae349469813ba45d419318cd7
2022-04-27 06:44:22 -07:00
Kevin Strider
d31fe669a0 overview.mdx (Features - Images)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: passy

Differential Revision: D35897472

fbshipit-source-id: 4b3853cd805c8714c83a8d227395dec8e3ff888f
2022-04-27 05:09:11 -07:00
Kevin Strider
eea566f35a overview.mdx (Features - Leak Canary)
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).

Reviewed By: passy

Differential Revision: D35899228

fbshipit-source-id: 4ade5b28f1634e792fcf4582fe163d02e2f4fab4
2022-04-27 04:39:32 -07:00
Flipper Bot
cd7e8bd8d7 Flipper Release: v0.144.0
Summary: Releasing version 0.144.0

Reviewed By: passy

Differential Revision: D35960718

fbshipit-source-id: a2fc470a831f1788ce4fa2be23c758a1c205f0bb
2022-04-27 03:51:35 -07:00
Lorenzo Blasa
0327282313 Fixes an issue with no database selected
Summary:
^

Not exactly sure how to reproduce the issue. Having said that:
- A database id is a non-zero number (1..n)
- If there's no selected database and/or there's no databases, then selectedDatabase is '0', which is an invalid database id.
- It is safer to check if the selected database id falls within bounds before attempting to obtain the tables from it.

From Logview, if the database id is '0', which is invalid, then we attempt to access a database at index -1 (database[selectedDatabase - 1]) which is definitely invalid. The returned object is undefined and hence the error.

Changelog: Fixes an issue on the databases plugin when there is no selected database.

Reviewed By: mweststrate

Differential Revision: D35810827

fbshipit-source-id: 4c9f112eebcd0aa3fcd5df316749f48f3922381c
2022-04-22 03:59:00 -07:00
Lukas Kurucz
e7c56045f5 Add "MacOS" to supportedDevices (#3648)
Summary:
This is already supported, when running Flipper on Mac, so just need update schema.

One use case for `MacOS`, is to have a static plugin available to users before they launch any app/device. So this can be used as Welcome plugin, Documentation or any other "static" plugin not requiring any other device except the one running Flipper Desktop.

## Changelog

- add `MacOS` to supported devices

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

Test Plan: - Script `lint` should pass.

Reviewed By: antonk52

Differential Revision: D35810577

Pulled By: lblasa

fbshipit-source-id: e1a2948fdf67535d28b68eeab649214b44ebcf9c
2022-04-22 03:58:36 -07:00
Flipper Bot
94758c1204 Flipper Release: v0.143.0
Summary: Releasing version 0.143.0

Reviewed By: lblasa

Differential Revision: D35775016

fbshipit-source-id: a0c3bd46547f7a561e1de775796b93ea9cf3071e
2022-04-20 10:26:59 -07:00
Tommy Soh
c9981ffb1b Phoenix flipper - client plugin
Summary:
Created by running scarf flipper-plugin command as suggested in [doc](https://www.internalfb.com/intern/staticdocs/flipper/docs/extending/desktop-plugin-structure/).

Will be modifying test & index later to receive other data

- also created [GK](https://www.internalfb.com/intern/gatekeeper/projects/flipper_phoenixinternal/)

Question
- Is there a way to hide the plugin until feature is complete, besides GK?

Reviewed By: nikoant

Differential Revision: D35721694

fbshipit-source-id: 9052fbfd4530bb567f672b7f37153a62c7c75463
2022-04-20 10:00:46 -07:00
Andrey Goncharov
bd7a20d851 Enable Profiler
Summary: Show tab bar in React DevTools to allow switching to Profiler

Reviewed By: nikoant

Differential Revision: D35747309

fbshipit-source-id: ca7e65fdd30261aabc5f05fe10b451c115a92b7f
2022-04-19 07:52:32 -07:00