Summary: This diff introduces the. main sections and restyled resizable panes according to the Figma design
Reviewed By: cekkaewnumchai
Differential Revision: D23758349
fbshipit-source-id: 7f09574f6b5fb54551141c13667c664e1769f09a
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1532
Upgrade to Electron 10, in an attempt to fix random hard Electron crashes. Didn't fix it, but given the changelog of Electron with all the bug fixes, seems to be a good idea nonetheless :)
Changelog: Flipper now uses Electron 10
Reviewed By: nikoant
Differential Revision: D23565000
fbshipit-source-id: 3f07b8cf8c438147bde5314698d20046ac9f94cf
Summary:
I've already removed support for plugin format v1 and thus compilation on startup is not needed anymore and many dependencies can be safely removed.
I actually already removed them before that, but it looks like automerge returned them back somehow.
Reviewed By: mweststrate
Differential Revision: D23735001
fbshipit-source-id: 7b1ae655738a35e388f818fb27f80c5a0e8327de
Summary: Adds support for switching dark mode on the fly. Also added the option to apply certain settings without restarting Flipper, as that isn't needed in all cases.
Reviewed By: cekkaewnumchai
Differential Revision: D23625854
fbshipit-source-id: 82175ba10524daf1b48a65feec8c610460df9418
Summary:
allow-large-files
This makes the Ant.design component library available to Flipper
The CSS setup is unconventional, in the sense that the normal way to do this is to use a webpack loader to dynamically load the right less files, and a babel transform to automatically import the style sheets.
Since we use Metro, which is not very suitable for transforming non-JS(like) files, I figured that the simplest thing is to pre-compile the entire less theme. Which should be fine since we shouldn't be changing the less files very often, and since we don't ship a website, it is probably not too bad to have the full ANT theme for now in there, even though we don't use all components. It is 600 K of css. In the next diff the CSS is loaded conditionally, only if Sandy is enabled.
If the CSS turns out to be too big we can optimise this later to only import CSS for components we use by doing some Metro magic, but it doesn't seem to be trivial (that is, I couldn't get in to work in < 2 hours).
Reviewed By: cekkaewnumchai
Differential Revision: D23625855
fbshipit-source-id: 3ba810b2221dc0c7b719f66310e590c7748cf239
Summary:
- Removed compilation on startup which is not required anymore after switching to plugin spec v2.
- Removed from Node process ("static" package) all the dependencies which are not required anymore: e.g. metro, babel etc.
- Plugin loading code from node process moved to browser process and made asyncronous.
Some expected benefits after these changes:
1) Reduced size of Flipper bundle (~4.5MB reduction for lzma package in my tests) as well as startup time. It's hard to say the exact startup time difference as it is very machine-dependent, and on my machine it was already fast ~1500ms (vs 5500ms for p95) and decreased by just 100ms. But I think we should definitely see some improvements on "launch time" analytics graph for p95/p99.
2) Plugin loading is async now and happens when UI is already shown, so perceptive startup time should be also better now.
3) All plugin loading code is now consolidated in "app/dispatcher/plugins.tsx" instead of being splitted between Node and Browser processes as before. So it will be easier to debug plugin loading.
4) Now it is possible to apply updates of plugins by simple refresh of browser window instead of full Electron process restart as before.
5) 60% less code in Node process. This is good because it is harder to debug changes in Node process than in Browser process, especially taking in account differences between dev/release builds. Because of this Node process often ended up broken after changes. Hopefully now it will be more stable.
Changelog: changed the way of plugin loading, and removed obsolete dependencies, which should reduce bundle size and startup time.
Reviewed By: passy
Differential Revision: D23682756
fbshipit-source-id: 8445c877234b41c73853cebe585e2fdb1638b2c9
Summary:
Adding a copy button next to search box. Copy nt or bloks raw bundle.
Before that we had a contxt menu on left side bar, which didn;t look good when we have only one active bundles (check appden comments in diff bellow)
Reviewed By: mweststrate
Differential Revision: D23345480
fbshipit-source-id: 919e7fec1d1884f5e8980c3b6cc5a94eb3d69be1
Summary: Little ux tweak, there are some rare scenarios where you can end up in an empty plugin screen, made a small message.
Reviewed By: jknoxville
Differential Revision: D22846396
fbshipit-source-id: 0ad19f1c252112d78a5587e6633fee2d9542d5e1
Summary:
Handling issues typically start with: did you look at the Electron logs? Since Flipper is such an extensible tool, running in varying environments I think the console should be support as first class concept. Many errors are currently not shown to the user. This PR is a first attempt to fix that.
The implementation is based on https://github.com/samdenty/console-feed, which is used by quite some web based IDE like tools (like codesandbox), and offers a lot of goodies out of the box, like collapsing errors, objects, etc.
Edit: also added a counter keeping track of the amount of errors
N.B. no need to immediately review this diff, I'll import it to phabricator as soon as I can :)
## Changelog
changelog: Introduce 'Debug Logs' section to help users to troubleshoot issues or to provide more accurate reports.
Pull Request resolved: https://github.com/facebook/flipper/pull/1479
Test Plan: 
Reviewed By: jknoxville
Differential Revision: D23198103
Pulled By: passy
fbshipit-source-id: a2505f9fa59e10676a44ffa33312efe83c7be55d
Summary: Bringing this to the latest version everywhere.
Reviewed By: priteshrnandgaonkar
Differential Revision: D23051537
fbshipit-source-id: 5cad59ab6fcc57fc72df8ace985a7b5f39de2bda
Summary:
Fix long standing issue where text by default in Flipper is not selectable. Which is super annoying when working with tables, trying to copy error messages, etc etc. Wanted to fix it with ant.design, but got so annoyed by not being able to select an error I needed, that I fixed it now :-P.
This diff makes all text selectable by default, and then bails out for specific elements, like section headers, button captions, the left toolbar (navigation) and top toolbar to preserve the desktop app look & feel.
Fixes a popular papercut issue
Changelog: All text is now selectable by default in Flipper.
Reviewed By: passy
Differential Revision: D22897793
fbshipit-source-id: 7bc50a987e012595956c07d1997959a5480790aa
Summary:
This is just an initial setup from Flipper. I just ran `scarf flipper-plugin`, followed the iOS path, removed the native files (as we will use the JS infra directly later on) and submitted. :)
I followed this documentation/tutorial: https://www.internalfb.com/intern/wiki/Flipper/create-new-plugin/
(Followed iOS path, then removed native code as not needed)
Differential Revision: D22754500
fbshipit-source-id: 39130b4ee17c6bc72990eec34c466cfa7a650d17
Summary: Update electron-devtools-installer to fix issue blocking installation of dev tools for some users currently: https://github.com/MarshallOfSound/electron-devtools-installer/pull/140
Reviewed By: passy
Differential Revision: D22604024
fbshipit-source-id: f98d8d6e138283c54d5e1cf446b7049bb31b51a0
Summary:
Fixes a potential issue where double scrollbars could appear or entire main contents would be scrollable (when a plugin has a fixed height > window height) as maincontents was made scrollable as well in D22411617 (2ce65c1b3c)
Anyway this is nice clean up that makes our chrome layout more understandable (imho). The PluginContents wrapper is still very sad (used by ReactDevTools and Hermes debugger), but can hopefully be addressed with the sandy cleanup in the future
Reviewed By: nikoant
Differential Revision: D22431807
fbshipit-source-id: 113e8441e0c43a8b764f5cf27615ab93627c3197
Summary:
To know whether plugins should be mounted with the old setup or new setup (with a Provided / context based api), we need to be able to recognize whether a plugin is written with the old or new setup.
We do this by checking if the flipper-plugin dependency is declared as peer dependency. This we can to check for SDK compatibility as well.
Reviewed By: jknoxville
Differential Revision: D22043085
fbshipit-source-id: 21afabb6e58d86253a464470f4690c51cced87ab
Summary:
We've disabled web security in `BrowserWindow` (https://fburl.com/diffusion/0l0q669m). However, there is a bug in Electron 9 that makes this doesn't work as expected (https://github.com/electron/electron/issues/23664). Earlier, we've resolved this problem by specifying `no-cors` mode in requests. This strikes again in other plugin.
This diff applies a workaround commented inside the issue to allow to make CORS requests.
Reviewed By: nikoant
Differential Revision: D22306977
fbshipit-source-id: ea0f5e3f1c4080037df258a6c5ce1fc89d433c3b
Summary: Disabled producing inline source maps for debug builds. Source maps are already writte to "map" files, so this does not make sense to also inline them to the js bundle. Passing "sourceMapUrl" parameter to Metro fixed this.
Reviewed By: mweststrate
Differential Revision: D22159501
fbshipit-source-id: f06225cd43f44a7f93afcc32bb0501323b35d0c3
Summary:
Bumps [ws](https://github.com/websockets/ws) from 7.2.3 to 7.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/websockets/ws/releases">ws's releases</a>.</em></p>
<blockquote>
<h2>7.3.0</h2>
<h1>Features</h1>
<ul>
<li><code>WebSocket.prototype.addEventListener()</code> now supports the <code>once</code> option (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1754">#1754</a>).</li>
</ul>
<h2>7.2.5</h2>
<h1>Bug fixes</h1>
<ul>
<li>Fixed compatibility with Node.js master (651d6627).</li>
</ul>
<h2>7.2.4</h2>
<h1>Bug fixes</h1>
<ul>
<li>The <a href="https://nodejs.org/api/http.html#http_http_request_options_callback"><code>http.request()</code></a> <code>auth</code> option is now supported (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1734">#1734</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="41f5e4ff11"><code>41f5e4f</code></a> [dist] 7.3.0</li>
<li><a href="2e5c01f5b5"><code>2e5c01f</code></a> [feature] Make <code>addEventListener()</code> support the <code>once</code> option (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1754">#1754</a>)</li>
<li><a href="97ddfce983"><code>97ddfce</code></a> [ci] Test on node 14</li>
<li><a href="2b49c4821f"><code>2b49c48</code></a> Revert "[ci] Use GitHub Actions (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1644">#1644</a>)"</li>
<li><a href="82f05372ba"><code>82f0537</code></a> Revert "[ci] Test on node 14"</li>
<li><a href="b167d1cd45"><code>b167d1c</code></a> Revert "[ci] Update Coveralls GitHub Action to version 1.1.1"</li>
<li><a href="78e1c01959"><code>78e1c01</code></a> [ci] Update Coveralls GitHub Action to version 1.1.1</li>
<li><a href="e6949791fa"><code>e694979</code></a> [doc] Fix badge URL</li>
<li><a href="67983cbba4"><code>67983cb</code></a> [dist] 7.2.5</li>
<li><a href="18d773d1f5"><code>18d773d</code></a> [test] Fix failing tests</li>
<li>Additional commits viewable in <a href="https://github.com/websockets/ws/compare/7.2.3...7.3.0">compare view</a></li>
</ul>
</details>
<br />
[](https://help.github.com/articles/configuring-automated-security-fixes)
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
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1266
Reviewed By: nikoant
Differential Revision: D22118507
Pulled By: passy
fbshipit-source-id: 700f098e5c7b6ddb1dda27ef50974af5b73fe88c
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1224
Upgrade Electron-related dependencies to version 9.
Changes includes:
- force `fetch` to `no-cors` mode to get rid of CORS policy error while upgrading to version 9
- `keytar` returns promises so changes to reflect that ([reference](https://github.com/atom/node-keytar/blob/master/keytar.d.ts))
Reviewed By: passy
Differential Revision: D21862765
fbshipit-source-id: 25e236ee568934ee9c64dcc90f2fc9648c905b6a
Summary:
As title, this restores all of the functionality of the original plugin to but uses json-rpc to interact with fbsystrace in server mode.
Mostly at feature parity with the old plugins, need to update the following in my next diff:
- Better fbsystrace error surfacing
- Pipe all all output to 'Console'
- Support non-select type options
{F239554690}
I think that the authentication issues with Tracery might go away in prod - according to https://fb.workplace.com/groups/flippersupport/permalink/889080114905981/ this seems like a dev issue. But the "Open in Browser" functionality is working fine.
Reviewed By: nslingerland
Differential Revision: D21668522
fbshipit-source-id: fa3b887c7b5dedc08c62a9d579e1112d7f8e0323
Summary:
Install plugins to pending directory first to enable installing new versions of existing plugins. On startup Flipper moves all the plugins from pending directory into installed plugins directory.
Auto-update, after downloading a plugin package, will also extract it to "pending", so after restart update will automatically be applied.
Reviewed By: mweststrate
Differential Revision: D21929713
fbshipit-source-id: 141b106415e941156ae598cf810ab3bed8c76ced
Summary: Use interface PluginDetails everywhere where plugins are handled and removed PluginDefinition type which was effectively a subset of PluginDetails
Reviewed By: mweststrate
Differential Revision: D21927456
fbshipit-source-id: 434ebeef955b922cc11757e78fbba8dec05f1060
Summary:
Each time when the plugin starts (which is also when you re-enter it, even if the switch is on in the UI), will query Unity for all counters.
There's also a button to manually refresh the list.
I added a button to filter 0 counters (since there are a lot of them). It will pulse while it's filtering (on by default).
Differential Revision: D21923242
fbshipit-source-id: 0dc54eb8b460fe68a22aa86f43a5115a70728092
Summary: Load either installed or bundled version of plugin depending on which is newer.
Reviewed By: mweststrate
Differential Revision: D21858965
fbshipit-source-id: aa46eafe0b5137134fadad827749672441f2c9e5
Summary:
Bumps [mkdirp](https://github.com/isaacs/node-mkdirp) from 1.0.3 to 1.0.4.
<details>
<summary>Commits</summary>
<ul>
<li><a href="b694079b54"><code>b694079</code></a> 1.0.4</li>
<li><a href="2d42170b9f"><code>2d42170</code></a> Remove unnecessary process.umask()</li>
<li><a href="4d59b810ed"><code>4d59b81</code></a> update tap</li>
<li><a href="117328b713"><code>117328b</code></a> remove outdated example</li>
<li><a href="7cd4e9eb9a"><code>7cd4e9e</code></a> correct gitignore</li>
<li>See full diff in <a href="https://github.com/isaacs/node-mkdirp/compare/v1.0.3...v1.0.4">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=mkdirp&package-manager=npm_and_yarn&previous-version=1.0.3&new-version=1.0.4)
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)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
<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)
- `dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1210
Reviewed By: passy
Differential Revision: D21838219
Pulled By: mweststrate
fbshipit-source-id: c9fe6920a65a1fcede07579899a50620f459b949
Summary:
Scuba doesn't work when running on laptops, so developers often run a canary just to see that their logging works. This attempts to give a Scuba-like view (Scuba UI does a lot, I'm just showing a simple samples-like view) of the data you report in real time.
## Unity
* `ScubaFlipperPlugin` - very similar to our Pigeon/Logview plugins.
* `ScubaLogger` - notice that I'm ignoring the sample rate (weight) to give as much signal as possible since a local Unity usually doesn't have a lot of traffic/logs.
## Flipper
* `index.tsx`
* Aggregates incoming data from Unity:
* `messages` - all messages, keyed by the scribe category.
* `columns` - keeps track of all the columns per table. This can grow over time (different messages can have different columns; Scuba does the same - using the union of all columns from all rows). I'm doing this here (and not while rendering a specific table) since this allows me to run the aggregation only once when a message arrives instead of every render (which React can do many of).
* Chooses between one of the two following components.
* `ScubaTables.tsx` - shows all known tables so far, with a count of rows (just so I'll have something to show in table...). Each row has a button to view this table.
* `ScubaTable.tsx` - probably the only interesting part is not using explicit widths in the table (since I don't know what data I'll have). Instead, I just use `horizontallyScrollable` on the table and let it decide. It will squeeze everything in the window's width, but let's you expand/scroll as needed.
Differential Revision: D21715926
fbshipit-source-id: 6f1c4f7f77c3b047dcb35a4e9b8173a7378af198
Summary:
Using this diff as baseline for fblite composer.
Demo in this post https://fb.workplace.com/groups/503571760094149/permalink/934762916975029/
## Next
* UI
* Add binary buffer (clone/re-send)
* Support multiple messages as flow
* Persistance
* More feedbacks from post
{F238376954}
Reviewed By: timur-valiev
Differential Revision: D21701994
fbshipit-source-id: 020733034968acb5c02a1f79bfc256a1a13d6ef8