Print limitation:  Data only in current view

This article is omitting the very significant and well-communicated point of user frustration that you can only print information in the current view.  Any data that you have to scroll to see is not printable.  I don't know why - in Tableau, Domo, Excel this is a built-in feature I never thought twice about scoping out in requirements when switching to BI.
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7bdf6ff3-a8d1-9d1d-e700-b2d3526c3ab3
Version Independent ID: 48937cff-0cde-3e81-6a03-7288562af6de
Content: Export reports to PDF - Power BI
Content Source: powerbi-docs/consumer/end-user-pdf.md
Service: powerbi
Sub-service: powerbi-consumer
GitHub Login: @mihart
Microsoft Alias: mihart

Thanks for your comment, @elleneg . This issue has been assigned to the doc author for review.

Hi @elleneg,
Thank you for contributing to the docs.  I've updated the article to include this limitation.  To see the PDF feature improved, add your vote to this idea on ideas.powerbi.com -- it's a really good idea.
Take care,
Michele


[Enhancement] remove delete restriction on the auto-increment table(#20702)

What type of PR is this：

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #20702
Problem Summary(Required) ：
In current implementation, when the auto increment column is value column but not the key column,
this kind of table can not support delete. The pr will remove restriction, but has some side affect as following:

If the delete-partial update conflict happen, partial update operation maybe lost.
If it is the streamload combine with the delete and partial update ops and manipulate on a row which has existed
in the previous version, all the partial update ops after delete ops maybe lost for this row if they contained in
different segment file.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

@Mergifyio backport branch-3.0


Running RE and a QTGui under the captive python shell of pycharm with live updating plots

Description
Instead of checking for the mpl qt backend in the block function it is now checked if there is PyQt.QtWidgets or Pyside.QtWidgets imported and then checked if there is a QApplication (QT Gui). Then it proceeds as before.
Motivation and Context
When using Pycharm the mpl backend is switched and checking for the qt backend isn't a good indicator. This results in the Qt Gui being blocked and freezing while executing a bluesky plan.
How Has This Been Tested?
Testing set of bluesky. Running Bluesky and PyQt in a few different setups.

fyi, the reason the bec unit tests are failing on windows is that the new check is inconsistent with the check in bluesky/callbacks/mpl_plotting::QtAwareCallback. The reason it's failing only on windows is because matplotlib on windows uses qtagg by default as it's backend if available, compared to linux where it defaults to agg.
i.e. where matplotlib.get_backend() == "qtagg" but there is no QApplication.instance(), previously it would have run this to create a new application, now it no longer does that -- and so events sent to the qt teleporter in QtAwareCallback never get received anywhere. It also points to a slightly wider issue - the plots don't pop up successfully for me if matplotlib is configured to use a qt backend but without an existing QApplication.

Thanks a lot for your insights. That's a quite new topic for me.
Sounds like a check here for no QApplication being available and creating one could be solving the problem?
I'm not sure what to make of the lint and ubuntu 3.10 test.

I'm not sure what to make of the lint and ubuntu 3.10 test.

For the lint, run ruff format & ruff check --fix locally and then commit the result (or manually fix any errors ruff flags up)
For the ubuntu 3.10 test, I think I've seen that test / similar tests be flaky before - it's doing timing, so prone to race conditions. Likely nothing to do with your change, you can probably just re-run that job.
I will let others comment on the best place(s) to check for/create qapplications & do the qt magic.

I suggest trying deferring as much work until in the block method rather than the __init__.

Did so. Currently I'm mainly trying to get the tests and scenarios I've set up to work and using the test pipeline for that. I hope that's okay.
Totally up for cleanup in the end.

@SHaringT I took the liberty of pushing commits that may fix the tests, feel free to drop them if you want.

@tacaswell that's very welcome. I'm a little puzzeled why ubuntu worked before and now fails.

I think @Tom-Willemsen got it right.  Previously the ubuntu tests don't have X11 set up so it was always falling back to Agg and we were not testing Qt at all on linux, where as on windows there is a graphical environment available and we do use Qt.
I think the failures we are seeing are "can Qt actually make a QAppliaction"
I suspect that we either need to add X11 to the CI jobs or adjust the logic so that we (bluesky) never tries to make a QApplication (which may have some impact on how people set up sessions...)

fyi @tacaswell with your latest commits and the following script on windows:
from bluesky import RunEngine
from ophyd.sim import det, motor
from bluesky.plans import scan
from bluesky.callbacks import LivePlot
import matplotlib
import matplotlib.pyplot as plt

print(matplotlib.get_backend())
plt.ion()
RE = RunEngine()
RE(scan([det], motor, 0, 1, num=2), LivePlot(y="det"))
input("done")

I get:
qtagg
...\.venv\Lib\site-packages\bluesky\callbacks\mpl_plotting.py:151: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
  fig, ax = plt.subplots()

where "will likely fail", does fail, with a segfault. On main this does work and brings up a qt plot. So this isn't just to do with unit tests.

It might be some CL disturbance. Locally the tests work (windows 10), the gui does not freeze and plotting graphs work fine in pycharm and create popups started from cli.

I think the issue is now that Matplotlib is being lazy about creating the QApplication as well and due to that a whole bunch of stuff not working quite right.
from bluesky import RunEngine
from ophyd.sim import det, motor
from bluesky.plans import scan
from bluesky.callbacks import LivePlot
import matplotlib
import matplotlib.pyplot as plt

print(matplotlib.get_backend())
plt.ion()
plt.figure()
plt.close('all')
RE = RunEngine()
RE(scan([det], motor, 0, 1, num=2), LivePlot(y="det"))
input("done")

If I change the example to the above it work (creating the figure forces the import of PyQt and the creation of the QApplication).

ERROR src/bluesky/tests/test_bec.py::test_simple[False] - RuntimeError: Invalid DISPLAY variable

That is progress (it broke in a new way) and confirms the "we were not using Qt on linux"!

ok, psuhed a pretty big refactor (and there is the chance to de-dent a whole lot of code but I did not do that here so the diff is readable).

Sorry, I thought this would be straight forward. Did not mean to send you into a quagmire and then take over the PR 🤦🏻 .

@tacaswell no need to apologize really. I have learned things, will look into your refactor tomorrow to learn some more and the problem seems to be solved; I'm happy.

I tried to reproduce the failing test locally and locally it's passing. Might be a problem because of the timings?


Updating "Migrating an Existing Subgraph to The Graph Network" page

I've fixed some readability issues.
Added "When not to Migrate?" section.
Added Curation Station links.

Done. @schmidsi
Also, changed the expired link:

Done. @azf20


Check of supported peripheral/function in main.cpp test files are misplaced

In all the test files (for example in mbed/libraries/tests/mbed/rtc/main.cpp),
where the peripheral/function is checked, the check of the peripheral/function must be placed after the includes:
Today it is:
#if !DEVICE_RTC
  #error [NOT_SUPPORTED] RTC is not supported
#endif
#include "mbed.h"
#include "test_env.h"

While it must be:
#include "mbed.h"
#include "test_env.h"
#if !DEVICE_RTC
  #error [NOT_SUPPORTED] RTC is not supported
#endif

cc @bridadan

Oops, dumb mistake. Sorry everyone! PR submitted: #1613


Failed to import Bob, use a slower version of mfcc instead

Hello, I've been trying to use your application but everytime I try to run gui.py or even speaker-recognition.py I get this warning message : "Failed to import Bob, use a slower version of mfcc instead". The thing is bob and his packages are installes and I have no idea how to use a slower version of mfcc.
Can I get some help please ?

Try import bob in a python shell:
import bob
import bob.ap

It may fail at some line. Bob has lots of packages, maybe you only installed some of them?
The error message means that it's already using a slower version. No need to worry.

Thanks for the reply. I have tried but I get the same errors. Here is the complete list of the errors I get when I try to execute gui.py :
Warning: failed to import Bob, use a slower version of MFCC instead.
Warning: failed to import fast-gmm, use gmm from scikit-learn instead
(process:1834): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Gtk-Message: Failed to load module "canberra-gtk-module"
(python2:1834): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Qt: Session management error: None of the authentication protocols specified are supported
I'm pretty sure I have installed all the bob packages needed

If you try:
cd src/feature
python2 -c 'import BOB'

you'll see the details of the error you're having.
It seems that the rest part of the error are because DBus or Qt on your system are not running properly. This could be caused of different reasons, and I can't tell what's happening.
If you're running it remotely with ssh, then make sure using ssh -X because GUI are not supported with plain ssh. If this doesn't solve your problem,  you may want to find someone around you who knows about GNU/Linux to see what's going on exactly.


Fixed default display height for ER-TFT, Changed default CS pin

Prev. CS was equal to CLK

Thanks for the fix @seeul8er.


aws_node_termination_handler

With this PR we add the aws_node_termination_handler addon to deal when a node experiences some interruptions (e.g., spot instance termination) draining the node safely, moving the workload to another node, and keeping the apps running smoothly.
Signed-off-by: Thiago Pagotto<EMAIL_ADDRESS>

😔


feat: windows user preferred & installed browsers

This PR implements USER not system preferred browsers as a single computer might have multiple accounts with different preferences, it also implements a list of all installed browsers, which would be nice to use for stuff like engine preference, where the developer could define a preferred engine like chromium or gecko and we could try to find that browser in those installed ones.
Windows only
Known issues:
getInstalledBrowsers will return html editors like vscode, vsstudio, jetbrains, notepad and notepad++
notably this repository doesn't have an eslint config defined, so I didn't know what coding styles to follow.
addresses #11
I do not believe however that checking by .html is a good idea, imho checking by https is a way better idea, but @CanadaHonk proposed .html files

checking by https is not a better idea, cause you can have fake browsers, like mine here or even the original project that I forked here
well, the original project declares that it supports html sadly, but mine only declares [http, https]
(http and https are the bare minimum you must support for windows to recognize it as a browser)

Closing as leaving for the future with a different/better implementation (discussed on Discord).


Feature/deadline

Fixed a potentially indefinite hang when collecting data from a website that requests an upgrade to websocket.
Accomplished by adding a deadline to the response body read.

Didn't mean to open this upstream yet. I meant to do it on my fork for a while to test.


Ability to show tooltips on a collapsed persistent drawer

Describe the desired behavior
Show the menu item title in a tooltip on hover when the persistent drawer is collapsed.
Describe the current behavior
No tooltips (tooltips are only available on the Rail variant)
Is this request related to a current issue?
Request from the IPM team
Additional Context

I would suggest we lump this in with the existing rail logic.
So if a user has a persistent drawer with openOnHover=false, we show the tooltips (unless they have disableRailTooltips set to true). This way a collapsed persistent drawer on hover would either:

Show the tooltip if the drawer expand on hover is disabled or
Expand to reveal the full drawer contents/title

If the suggestion above is confusing, we could add a separate prop for managing the tooltip for non-rail variants.


Fab in header

I have gone through these following points

[x]   Check latest documentation: https://docs.nativebase.io/
[x]   Check for existing open/closed issues for a possible duplicate before creating a new issue: https://github.com/GeekyAnts/NativeBase/issues
[x]   Use the latest NativeBase release: https://github.com/GeekyAnts/NativeBase/releases
[x]   Check examples from NativeBase KitchenSink https://github.com/GeekyAnts/NativeBase-KitchenSink
[x]   For discussion purpose make use of NativeBase Slack: http://slack.nativebase.io/
[x]   For queries related to theme, check Theme Variables from Docs and live NativeBase Theme Editor http://nativebase.io/customizer/

Issue Description

I am trying to use Fab in the header but facing 2 issues:

place in the exact left side
on open it hide behind the body, I would like to show in front of the body.

how I can achieve it?

node, npm, react-native, react and native-base version, expo version if used, xcode version
node > 10.5
npm > 6.7
react-native > 0.58.3
native-base > 2.11

@itcurves Using FAB in Header is something not as per design guidelines. Hence NativeBase won't support this. You can go ahead and fork NB to have your version of FAB.


Add nominees from Africa COVID-19 Response Toolkit

See blog: https://medium.com/africa-covid-19-response-toolkit/introducing-the-open-source-africa-covid-19-response-toolkit-6d4a571027a8
Add a new nominee for each of the projects listed therein. See our contributing guidelines for directions on how to nominate them.

Hello, I'm an Outreachy applicant. Can I work on this?

Hi @ijeomaemeruwa, absolutely! (and you don't need to ask for permission). As long as the issue is open, anyone is welcome to contribute. Looking forward to your contribution! 🙏 Thank you

@lacabra projects are in progress and official website is not available yet. Should I still mention it?

@318anushka as long as they have an open source code repository with a valid open source license, they should be included. If some don't meet this very basic minimum, you can make note of them and leave them out. Thanks 🙏

@lacabra I have created PRs for nominating 5 projects (Awareness SMS, Awareness website, Emergency Relief Package tracker, API, AWS Infrastructure) from the Africa Covid-19 Response Toolkit. Please review and let me know if any changes are needed in those. For now I have added the link to the repository for the website field.

Hi @rachita19082 i'm working on this already.


Copilot not working in Remote windows

This is a duplicate issue to https://github.com/microsoft/vscode-copilot-release/issues/3375 for information purposes only.
When using Copilot in with DevContainer, SSH, or WSL you will encounter that the Copilot Chat window is stuck in the setup state. The recording below shows the error state as well as a temporary workaround.
The error state is that the Chat window displays a button to suggests to you to "Use Copilot" or "Use Copilot for Free". When clicking the button, supposedly nothing happens.
The workaround:

Go to the extension management view
Disable the Copilot Chat extension on the remote
Reload the window
In the extension management view, enable the Copilot Chat extension on the remote

The workaround is necessary for each remote window.
We're working on a fix.

This issues was first reported as https://github.com/microsoft/vscode-copilot-release/issues/3366.

A fix will be release in the next official Insiders build, followed by a recovery build for Stable.

@sandy081 and me investigated further and the issue can be explained and reproduced:

connect to a remote (WSL, SSH) where we do not install Copilot automatically
run through the Copilot Free setup which will install Copilot locally and remote
reload window
now Copilot local is disabled, remote is enabled and there is a race condition in figuring out if Copilot is enabled or not
we think it is disabled because the local one is and that one wins

The fix is to query extensions without duplicates (local, remote) and only check for enablement of the one in the remote if connected to a remote: https://github.com/microsoft/vscode/pull/236552

Test Plan Item
Testing should be done with fresh user data dir and fresh extensions dir on stable build.
Local
1.)  without copilot extensions installed

go through free SKU setup
make sure copilot chat works
reload window, ensure it works

2.) with copilot extension installed

install copilot extension
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

3.) with copilot extension installed but disabled

install copilot extension
disable copilot extension
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

Remote: SSH / Devcontainers / WSL / Codespace
1.)  without copilot extensions installed

connect to remote
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

2.) with copilot extension installed locally

open a local workspace
install copilot extension
connect to a remote
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

3.) with copilot extension installed remotely

connect to remote
install copilot extension via extensions view
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

4.) with copilot extension installed locally and remote

open a local workspace
install copilot extension
connect to remote
install copilot extension via extensions view
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

5.) with copilot extension disabled remotely

connect to remote
install copilot extension via extensions view
disable it
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

6.) with copilot extension installed locally and remotely but disabled

open a local workspace
install copilot extension
connect to remote
install copilot extension via extensions view
disable copilot extension remotely
go through free SKU setup
make sure copilot chat works
reload window, ensure it works

After reading your previous answer, I jus !t kept the Github Copilot extension on the local app, and not WSL.
Then it perform perfectly on both local or remote with WSL.
Thanks

"logging": {
"trace": false,
"traceResponse": false,
"engineLogging": false
}

This should be fixed in the 1.96.2 release.


multistore restore: cannot import into non-IAVL store \"acc\": internal logic error

Context
I'm trying to start an Arabica consensus node and state sync it to the tip of the chain so that I can make progress on a separate issue.
Problem
When I run arabica.sh I encounter an error with state sync:
$ ./scripts/arabica.sh
celestia-app home: /Users/rootulp/.celestia-app
celestia-app version: 2.0.0

Are you sure you want to delete: /Users/rootulp/.celestia-app? [y/n] y
Deleting /Users/rootulp/.celestia-app...
Initializing config files...
Settings seeds in config.toml...
Block height: 1769034
Trust hash: 110BF83440E24CDD5DA5F4D4872B85555EBBE52A590A8730F301C0BD046038F3
Enabling state sync in config.toml...
Downloading genesis file...
Starting celestia-appd...
4:25PM INF starting node with ABCI Tendermint in-process
4:25PM INF service start impl=multiAppConn module=proxy msg={}
4:25PM INF service start connection=query impl=localClient module=abci-client msg={}
4:25PM INF service start connection=snapshot impl=localClient module=abci-client msg={}
4:25PM INF service start connection=mempool impl=localClient module=abci-client msg={}
4:25PM INF service start connection=consensus impl=localClient module=abci-client msg={}
4:25PM INF service start impl=EventBus module=events msg={}
4:25PM INF service start impl=PubSub module=pubsub msg={}
4:25PM INF service start impl=IndexerService module=txindex msg={}
4:25PM INF Version info abci=0.17.0 block=11 cmtbft_version=0.34.29 commit_hash= p2p=8
4:25PM INF This node is not a validator addr=20EB400293E85D22227E1A403D46B39B52AA754C module=consensus pubKey=W/cXE0Gbhz5HR4k++QUOHao7XZYOZhnc7ekBiunNbGI=
4:25PM INF P2P Node ID ID=b7816c37f3a5a2e4f16727a7719a2cfb52f6242a file=/Users/rootulp/.celestia-app/config/node_key.json module=p2p
4:25PM INF Adding persistent peers addrs=[] module=p2p
4:25PM INF Adding unconditional peer ids ids=[] module=p2p
4:25PM INF Add our address to book addr={"id":"b7816c37f3a5a2e4f16727a7719a2cfb52f6242a","ip":"<IP_ADDRESS>","port":26656} book=/Users/rootulp/.celestia-app/config/addrbook.json module=p2p
4:25PM INF service start impl=Node msg={}
4:25PM INF Starting pprof server laddr=localhost:6060
4:25PM INF serve module=rpc-server msg={}
4:25PM INF service start impl="P2P Switch" module=p2p msg={}
4:25PM INF service start impl=Evidence module=evidence msg={}
4:25PM INF service start impl=StateSync module=statesync msg={}
4:25PM INF service start impl=PEX module=pex msg={}
4:25PM INF service start book=/Users/rootulp/.celestia-app/config/addrbook.json impl=AddrBook module=p2p msg={}
4:25PM INF service start impl=Mempool msg={}
4:25PM INF Ensure peers module=pex numDialing=0 numInPeers=0 numOutPeers=0 numToDial=10
4:25PM INF service start impl=BlockchainReactor module=blockchain msg={}
4:25PM INF No addresses to dial. Falling back to seeds module=pex
4:25PM INF service start impl=ConsensusReactor module=consensus msg={}
4:25PM INF Reactor  module=consensus waitSync=true
4:25PM INF Saving AddrBook to file book=/Users/rootulp/.celestia-app/config/addrbook.json module=p2p size=0
4:25PM INF Starting state sync module=statesync
4:25PM INF Downloading trusted light block using options module=light
4:25PM INF service start impl="Peer{MConn{<IP_ADDRESS>:26656} 74e42b39f512f844492ff09e30af23d54579b7bc out}" module=p2p msg={} peer={"id":"74e42b39f512f844492ff09e30af23d54579b7bc","ip":"<IP_ADDRESS>","port":26656}
4:25PM INF service start impl=MConn{<IP_ADDRESS>:26656} module=p2p msg={} peer={"id":"74e42b39f512f844492ff09e30af23d54579b7bc","ip":"<IP_ADDRESS>","port":26656}
4:25PM INF sync any module=statesync msg={}
4:25PM INF Discovered new snapshot format=2 hash="fz�J\v�U��٬��\x1a\t�&��B\b\x15��Rd��j���" height=1768500 module=statesync
4:25PM INF Discovered new snapshot format=2 hash="S�4\x1ere�vᑩ1\x14���g�#\rss�Brl\x13\"r�D�" height=1767000 module=statesync
4:26PM INF VerifyHeader hash=6891835A6CBF4D1D7B7E712FDD9DD12E617E3B0D41DE812B7B461CD96ED90881 height=1768501 module=light
4:26PM INF VerifyHeader hash=4C50C17F185CBEE9C1B1AA70954E145B3887764D685296D2A461177788ADD1ED height=1768502 module=light
4:26PM INF Offering snapshot to ABCI app format=2 hash="fz�J\v�U��٬��\x1a\t�&��B\b\x15��Rd��j���" height=1768500 module=statesync
4:26PM INF Snapshot accepted, restoring format=2 hash="fz�J\v�U��٬��\x1a\t�&��B\b\x15��Rd��j���" height=1768500 module=statesync
4:26PM INF Fetching snapshot chunk chunk=0 format=2 height=1768500 module=statesync total=1
4:26PM INF VerifyHeader hash=F030366F7B56EBE57BADECB2366FC208EAAC9E7CAEE14BB80E1142EC63B30A15 height=1768500 module=light
4:26PM INF Header has already been verified hash=6891835A6CBF4D1D7B7E712FDD9DD12E617E3B0D41DE812B7B461CD96ED90881 height=1768501 module=light
4:26PM INF Header has already been verified hash=4C50C17F185CBEE9C1B1AA70954E145B3887764D685296D2A461177788ADD1ED height=1768502 module=light
4:26PM INF Header has already been verified hash=6891835A6CBF4D1D7B7E712FDD9DD12E617E3B0D41DE812B7B461CD96ED90881 height=1768501 module=light
4:26PM INF Header has already been verified hash=F030366F7B56EBE57BADECB2366FC208EAAC9E7CAEE14BB80E1142EC63B30A15 height=1768500 module=light
4:26PM ERR failed to restore snapshot err="multistore restore: cannot import into non-IAVL store \"acc\": internal logic error"
4:26PM INF Applied snapshot chunk to ABCI app chunk=0 format=2 height=1768500 module=statesync total=1
4:26PM ERR State sync failed err="state sync aborted" module=statesync

I tried using a trust height (1,751,700) from before the v2 upgrade height (1,751,707) but it looks like Tendermint is trying to give the application a snapshot from after that trust height:
4:44PM ERR failed to restore snapshot err="multistore restore: cannot import into non-IAVL store \"icahost\": internal logic error"
4:44PM INF Applied snapshot chunk to ABCI app chunk=0 format=2 height=1768500 module=statesync total=1
4:44PM ERR State sync failed err="state sync aborted" module=statesync

Repro'ed on Mocha with mocha.sh. See logs

Confirmed via logs that the application doesn't mount stores before OfferSnapshot is invoked hence why we hit this error.

Resolved via https://github.com/celestiaorg/celestia-app/pull/3808


Version 3.0.0

3.0.0 Milestone
Overview
I know I only just hit the 2.0.0 milestone but I have a new target now, lets aim for 3 :+1:
Basically the 3.0.0 milestone is going to be one massive breaking change.  Everything is being rewritten into the electron framework.  This brings a couple of benefits and a couple of caveats and I'll outline them here
Pros

We can finally kick flash to the curb :smile:
It will be much easier for others to contribute, learning JS is a lot easier than learning C#
Basically all features can be mirrored across but with better support for external libraries (NPM is glorious) on the electron side of the fence
Everything I write can be built for Windows, OSX and Linux *ONE PLAYER TO RULE THEM ALL

Cons

Yeah, I added this section for the lolz, there aren't any cons :+1:

Upgrade Process
Moving from C# to electron in a smooth way will be no easy feat, my current plan is to have an upgrade process like so

Push final release of 2.X.Y
Push out an update notification
Because electron apps install to APPDATA (hooray for portable installs) we somehow need to trigger an uninstall of the original GPMDP
We do this by requesting UAC and running the uninstaller in silent mode
Once installed updates will be handled internally by Squirrel

What needs to be done
At some point over the next few days I'll be moving my work from Nucleus Player into a 3.0.0 branch in this repository.  Then Nucleus Player will cease to exist.  Once that move is complete I need to finish off a whole lot of features before even considering pushing out the upgrade
Checklist of Doom :boom:
Minimum Requirements :fallen_leaf:

[x] Ability to listen to music
[x] Global hotkeys

[x] Standard media keys work
[x] Custom media keys? #37

[x] Last FM support

[x] Log in through OAuth (more secure than user + pass)
Show currently scrobbled status on screen We should not replicate last.fm in app
View Last FM feed in App We should not replicate last.fm in app

[x] Dark Theme support

[x] Highlight color customization

[x] Mini Player support

[x] By transforming the main window
[ ] As a pop up from the system tray

[x] Custom Interface

[x] Remove unneeded google UI components
Make drag and drop upload work Requires a chrome extension

[x] Desktop notifications

[x] Mac (Wrap to force silent)
[x] Windows 7 (Implement manually)
[x] Windows 8 (Wrap to force silent)
[x] Windows 10 (Wrap to force silent)
[x] Ubuntu

[x] Taskbar Media Controls on Windows
[x] Settings

[x] Store window location
[x] Store window size
[x] Store highlight color
[x] Persist browser cache / cookies
[ ] Mini player controls on hover / always

[x] Upgrade path from GPMDP - win32 only

[x] Check if GPMDP is installed
[x] Attempt to trigger the uninstall (need to trigger UAC)
[x] Minimum delete files

[ ] Extra UI

[ ] Forward / Back buttons
[ ] Introduction to the app (A welcome screen / whats new)

[x] Auto Updater - Squirrel

[x] Windows
[ ] Mac OSX
[ ] Multiple streams (stable and beta)
[ ] Add a sanity HTTP check to ensure the update server is operating

[x] Internal Errors

[x] Capture internal errors and display in a desktop notification
[x] Notification when clicked should open the GitHub issue page (and prefill a bunch of info)

[ ] Testing

[ ] Setup mocha unit testing suite

[ ] Integrate into CI

[ ] Setup mocha electron suite

[ ] Integrate into CI

Nice to Have :beginner:

[x] Audio output selector support #47
[ ] Visualizer

[ ] Custom Visualizer
[ ] Full screen visualizer

[x] Equalizer

[ ] Turn off and on
[x] Basic equalizer sliders
[ ] Equalizer presets (take the ones from the standard android eq)

[x] Close to task bar

[x] When the app is "closed" only minimize it to task bar
[x] When this happens explain what is going on
[x] Give the user the option to "never tell me again"
[x] Allow the user to disable this action in the settings page

Testing Guidelines

All internal Electron main process code should be unit tested.  We use mocha
All internal Electron renderer process code should be unit tested if possible

If we can figure it out, UI based testing using Electron as a WebDriver target would be great.
NOTE: This list will be updated and possibly extended on regulary

I noticed you have created an item under Settings for "Persistent browser cache/cookies".  Would it be possible to make this optional?  Once you release this I plan on making a portable version that I will run off a flash drive and I don't need/want my cache to continually grow taking up more and more space on my flash drive.  With 2.1.1, the cache is currently at 400MB and growing, it there was a way to flush the cache or disable it across sessions it would be very helpful.
I think it is useful to save the settings and cookie/login information across sessions, but I think saving the cache across sessions should be optional.
I'm looking forward to see what you've done with the new release.

@Devo7v With this completely rewritten app I believe the need for a "portable" version will be nullified.  Electron installs go to your AppData\Local directory so they are inherently "portable".  No admin permissions will be needed ever to run this app

@MarshallOfSound I understand that the program will be "portable" and I want to thank you for doing that.  My concern is that the cache may become huge taking up a lot of space on the flash drive.  What I'm asking is if there is (or will be) a way to either disable or flush the cache after every use.

@MarshallOfSound Whether or not I should have at this point, I played around with the new 3.0 version and you've definitely improved upon the current release.  I think we have some disconnect between our definitions of "portable".  It seems that when you refer to portable you mean a program that doesn't require admin rights; you have absolutely accomplished this.  When I'm referring to portable I mean something I can run off of a flash drive, doesn't leave any files on the host computer, and I can take with me to any computer.
The way 3.0 is currently configured my only option is to copy all 4 directories (Local\GPMDP_3, Local\SquirrelTemp, Roaming\Google Play Music Desktop Player, and Roaming\GPMDP_STORE)  from the AppData folder to my flash drive and then take it to another computer and copy all 4 directories to the AppData folder.  Depending on how big the Roaming\Google Play Music Desktop Player gets this could take quite a bit of time to copy things back and forth.
My suggestion would be to have all 4 of these directories located within 1 folder and have everything work off of relative paths so it doesn't matter where that folder is located.  Hopefully this makes sense.  Ideally what I'm trying to do is run this entirely off of a flash drive without having to move things back and forth between the flash drive and the computer.

Because I am using the Squirrel.Windows installer and workflows I cannot choose why my app ends up.  Squirrel will put it in AppData because that is where Squirrel apps go, the only folder I have control of is Roaming\GPMDP_STORE and I am planning on making that folder obselete soon anyway.
TLDR: I can't put all those folders in the same place
TLDR2: Whats the point in running it off a flash drive..........

At work we use common computers, similar to what you would have set up in a computer lab at a school.  When you log on to a computer you can do most things you would do on a normal computer, but when you log off anything you did or saved on that computer gets wiped out.  So the next time I log in I would have to re-download GPMDP and set everything up again.
To get around this I've been using PortableApps that run and save everything to a flash drive.  Even though this is a specific use case, not everybody owns a computer so whether they're working on school computers, library computers, or a cyber cafe, they can take all their programs and files with them.

I have a (theoretically small?) feature request. It's probably too late to work into 3.0.0, but I would love the option to have the display order for playlists in the menu to be re-arrangeable (probably via drag and drop). I know GPM doesn't do this, so I could see you not wanting to differ in that respect, but having switched from Spotify to GPM, not having the playlist I just made at the top of the list is infuriating to me. I know it appears in the Recent Activity list, but that's inconsistent and doesn't appear in the main navigation menu.
Alternately it might be cool if there was a "recent playlists" sublist at the top of playlist list, or even just a "recent Activity" link in menu (would save 1-2 clicks and some scrolling).
Thanks for considering.

This won't hit 3.0.0 but I'll look into it for a later release.  I try to keep mucking around with GPM itself to a minimum.  It breaks too regularly.
You could just name your playlist "_YOUR NAME" that would force it to the top

Well this was done lol


Problem: BigchainDB main/parent process does not handle signals

Problem
Starting bigchaindb in the terminal and pressing Crtl+C works just fine. All child processes are terminated.
However, starting bigchaindb (e.g. with nohup) and then killing it (either with SIGTERM or SIGINT) will not result in bigchaindb shutting down properly. Only the main process exits. The child processes stay hanging around.
Solution
Handling the following signals SIGTERM, SIGINT, SIGQUIT in the BigchainDB parent process. The parent process is named bigchaindb.
$ pstree -p
...
           ├─bigchaindb(19610)─┬─bigchaindb_exch(19631)───{bigchaindb_exch}(19633)
           │                   ├─bigchaindb_ws(19629)───{bigchaindb_ws}(19634)
           │                   ├─bigchaindb_ws_t(19630)
           │                   ├─gunicorn: maste(19628)─┬─gunicorn: worke(19632)
           │                   │                        ├─gunicorn: worke(19635)
           │                   │                        ├─gunicorn: worke(19636)
           │                   │                        ├─gunicorn: worke(19637)
           │                   │                        └─gunicorn: worke(19638)
           │                   ├─{bigchaindb}(19639)
           │                   └─{bigchaindb}(19640)
...

To kill the parent and all the linked child processes now the USER can send any of the above mentioned signals.
 So IMO, might as well handle all the signals which allow for graceful shutdown.
e.g. We cannot handle SIGKILL i.e. kill -9 <pid> because it terminates a process immediately and is sort of a last resort. Similarly, SIGSTOP. For SIGKILL and SIGSTOP the user can use the following i.e.
$ pgrep bigchaindb | xargs kill -9 bigchaindb

Issues Resolved
Resolves #1662
Resolves #1279 (This issue is not relevant anymore)

I tried a simpler patch locally - it successfully handles startup and shuts down gracefully when the root process receives SIGTERM, SIGQUIT or SIGINT.
Those signals are propagated to the child processes without an explicit signal handler (daemon=True does the trick); p.join avoids zombies in the situation when gevent is too quick to shutdown; the ABCI server has some signal handling inside app.run that works.
Could you check if it works for you too?

@ldmberman yes, it works for me. Seems like I don't need to do:
for p in bigchaindb.BIGCHAINDB_PROCESSES:
    p.join()

As well as:
for p in bigchaindb.BIGCHAINDB_PROCESSES:
    p.terminate()

@muawiakh cool! Also, custom signal handling and custom ABCI server startup does not seem to be required.

@muawiakh Could you please update the docs (like simple_network_setup) and add a little description about how to stop BigchainDB?

@kansi done, please review the latest changes.

Let me try rendering the docs locally before you merge this PR.


[Rancher2] Typo in Generate and View Traffic page

Request Summary:
Typo in Generate and View Traffic page.
Details:

URL: https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/setup/view-traffic/
Description: "namesace"should be "namespace".

https://github.com/rancher/docs/commit/ddda2168c88381b79548fa1ba0b10438412fda96


feat(anvil): add --prune-history flag

Motivation
ref https://github.com/foundry-rs/foundry/issues/3478
add --prune-history to opt-out of full state history and only keep the current state

Solution

This may impact usage of blockhash(...) for historical blocks?

I just tried to run a deploy script against an anvil node with --prune-history and encountered a bunch of these errors:

Is there something about this flag that would keep scripts from working properly?

I just tried to run a deploy script against an anvil node with --prune-history and encountered a bunch of these errors:

Is there something about this flag that would keep scripts from working properly?
(see also #3623 for motivations behind using this flag)

I am facing this issue. Have you found any solution to this one?


The vandermonde matrix is not invertible?

Intel ISA-L told that using this way to construct Vandermonde matrix does not guarantee the invertible property for the sub matrix. I hope to get help from you.
Do I make a mistake or in your condition, this works well engough?

Yes Vandermonde matrix does not guarantee invertable for sub matrix.
Use the Cauchy matrix instead.

Do I make a mistake or in your condition, this works well engough?

I do not get what you mean about the "mistake".
Here I have a short explain about the invertibility which might help you a bit: http://drmingdrmer.github.io/tech/distributed/2017/02/01/ec.html#vandermonde-矩阵的可逆性


Disable unique name in scene when making a node the root node

Fixes #94487.  Now when setting a node as the root, it should strip the unique name access.  Undo should restore the previous state.

Thanks!


compatibility with Node

Hello,
Thank you for this awesome work!
This is question rather than an issue.
Is this Module compatible with the latest version of Node ?
Thanks

The module is primary for browsers, but should in theory work on node if using indexeddbShim which now shims indexedDB on node using sqlite.
If you mean to build it, it is compatible with node 4 and node 6. I don't see any reason why it shouldn't be compatible with node 7 as well though.
$ node --version
v6.5.0

While trying Dexie.js with IndexedDBShim. we got some errors :
{ MissingAPIError: indexedDB API not found. If using IE10+, make sure to run your code on a server URL (not locally). If using old Safari versions, make sure to include indexedDB polyfill.
    at new e (~/dist/StorageManager.js:28:6136)
   Error
       at getErrorWithStack (~/node_modules/dexie/dist/dexie.js:309:12)
       at new DexieError (~/node_modules/dexie/dist/dexie.js:420:19)
       at ~/node_modules/dexie/dist/dexie.js:1971:35
       at executePromiseTask (~/node_modules/dexie/dist/dexie.js:930:9)
       at new Promise (~/node_modules/dexie/dist/dexie.js:723:5)
       at Dexie.open (~/node_modules/dexie/dist/dexie.js:1957:45)

While trying Dexie.js with IndexedDBShim. we got some errors :

this is because dexie by default assumes there will be a global window object (ie that global.window will be defined), so you have to set
require("indexeddbshim").setGlobalVars(global);
global.window = global

Node's global is shared across modules.

Thanks for the support.
It has been solved a while ago as you suggested above.
I forgot to close the issue.
Cheers!

Happy that this was solved. However, Dexie does not rely on window to be defined though. You can provide the indexedDB api without putting it onto window.
var Dexie = require('dexie');
Dexie.dependencies.indexedDB = indexedDB;
Dexie.dependencies.IDBKeyRange = IDBKeyRange;

Also possible to set it per instance:
var db = new Dexie('dbname', {
    indexedDB: indexedDB,
    IDBKeyRange: IDBKeyRange
});

Also described in http://dexie.org/docs/Dexie/Dexie

Thanks for the your last suggestions @dfahlander. However, I got an error :
 Dexie.dependencies.IDBKeyRange = IDBKeyRange;
                                             ^
ReferenceError: IDBKeyRange is not defined

Here is snippet of the code :
...........
import Dexie from 'dexie';
import indexedDB from 'indexeddbshim';

  Dexie.dependencies.indexedDB = indexedDB;
  Dexie.dependencies.IDBKeyRange = IDBKeyRange;

  // global.window= global;
  // setGlobalVars(global.window);
  // window.shimIndexedDB.__useShim();
  // cwindow.shimIndexedDB.__debug(true);

  let storageName = 'cache';

  const db = new Dexie(storageName, {
    indexedDB: indexedDB,
    IDBKeyRange: IDBKeyRange
    // indexedDB: window.indexedDB, // or the shim's version
    // IDBKeyRange: window.IDBKeyRange // or the shim's version.
  });

IDBKeyRange must be extracted from the indexedDB module. Don't know what it exports,  but in principle :
import {indexedDB, IDBKeyRange} from 'indexeddbshim';

Pinging @brettz9 for some help. Brett, is it possible to import {IDBKeyRange} along with indexedDB from indexeddbshim in node?

I have tried, I got again the window is not defined error message!

Are you getting the error from Dexie or from the shim?

IDBKeyRange must be extracted from the indexedDB module. Don't know what it exports, but in principle :
import {indexedDB, IDBKeyRange} from 'indexeddbshim';

That would be a nice update imo, I think at the moment we might have to do something like:
var { setGlobalVars }  = require("indexeddbshim");
var thing = {};
setGlobalVars(thing);
var { indexedDB, IDBKeyRange } = thing;

We can't easily use the internal modules directly either because there is a build step for indexeddbshim.

Happy that this was solved. However, Dexie does not rely on window to be defined though.

Ah my mistake, thanks for correcting me!

Note: you'll have to use the master branch of indexeddbshim at the moment, because the latest release doesn't support Node.

@dfahlander Are you getting the error from Dexie or from the shim?

The error is from the shim not Dexie.
However, I don't have errors! If I define window as global in Node as the following:
let { Dexie } = require("dexie");
let setGlobalVars = require("indexeddbshim");

 global.window= global;
 setGlobalVars(global.window);
 window.shimIndexedDB.__useShim();
  cwindow.shimIndexedDB.__debug(true);

  let storageName = 'cache';

  const db = new Dexie(storageName, {
      indexedDB: window.indexedDB, // or the shim's version
    IDBKeyRange: window.IDBKeyRange // or the shim's version.
  });

@erikvold I'll try your code!

Will try to take a look as I have a chance--trying to wrap up a current PR first...

This is now being reported as fixed (per changes in master) at https://github.com/axemclion/IndexedDBShim/issues/259 .
Regarding the ideal export syntax for IndexedDBShim, I sympathize with that and added issue https://github.com/axemclion/IndexedDBShim/issues/283 . Note, however, that our current approach allows us to define the properties as non-enumerable, etc. as is expected by W3C tests.

I was struggling with this as well.
This is what worked for me.
const db = (name => {
	require('indexeddbshim')(global);

	let Dexie = require('dexie');
	global.shimIndexedDB.__useShim();
	global.shimIndexedDB.__setConfig({checkOrigin: false});

	return new Dexie(name, {
		indexedDB: global.indexedDB,
		IDBKeyRange: global.IDBKeyRange
	});
})('cache');

A quick cut/paste example, based on the responses above:
const setGlobalVars = require('indexeddbshim')
const Dexie = require('dexie')

//
// Configure Dexie to use the IndexedDB shim.
//
// The intermediary shim object is required so we can pull out the objects
// we need to configure Dexie without needing to pollute the global namespace.
//
// checkOrigin:false is required to avoid  SecurityError Cannot open
// an IndexedDB database from an opaque origin.
//
const shim = {}
setGlobalVars(shim, {checkOrigin: false})
const { indexedDB, IDBKeyRange } = shim
Dexie.dependencies.indexedDB = indexedDB
Dexie.dependencies.IDBKeyRange = IDBKeyRange

// Test Dexie
const db = new Dexie('hellodb')
db.version(1).stores({
  tasks: '++id,date,description,done'
})

db.tasks.bulkPut([
  {date: Date.now(), description: 'First item', done: 0},
  {data: Date.now(), description: 'Second item', done: 1},
  {data: Date.now(), description: 'Third item', done: 0}
]).then(() => {
  db.tasks.where('done').above(0).toArray().then((tasks) => {
    console.log(`Completed tasks: ${JSON.stringify(tasks, 0, 2)}`)
  })
}).catch((e) => {
  console.error(`Error: ${e}`)
})

I'm trying to use Jest to test some database stuff using TypeScript. Can't get the shim thing working in TypeScript. So what I did was have a regular .js file with the configuration code and export it as a function called configureDexieForNode. And then I call that function in my Jest tests in a beforeAll method. It works! But how do I reset Dexie in the afterAll so it works in the browser? How to get it back to its regular/normal state when not in the testing environment?
const setGlobalVars = require('indexeddbshim')
const Dexie = require('dexie')

export function configureDexieForNode() {
    const shim = {}
    setGlobalVars(shim, {
        checkOrigin: false
    })
    const {
        indexedDB,
        IDBKeyRange
    } = shim
    Dexie.dependencies.indexedDB = indexedDB
    Dexie.dependencies.IDBKeyRange = IDBKeyRange
}

@jmagaram Your function configureDexieForNode() should not run in beforeAll, but once, globally per node process, and never for browser. There's no such thing as resetting it back to normal since we're talking about two different environments requiring different setups. I think you could go for calling configureDexieForNode() using Jest's global setup configuration.


使用Chrome无法识别到串口

使用Chrome无法识别到串口，是否需要插件的支持

Hello @HoGC  - Can you please elaborate a bit more about this issue?
What I got using the Google translate of the message is that Chrome browser is unable to detect the USB serial, asking for turning on a plugin?
Can you please check this link - https://support.google.com/chrome/answer/6362090?hl=en&co=GENIE.Platform%3DDesktop

Very likely it is the same issue as https://github.com/espressif/esp-launchpad/issues/7#issuecomment-1426663204, I'll close this one as a duplicate.


chore: update redis to >= 4.6.0

SUMMARY
redis has a fixable high finding in version 4.x
CVE-2023-31655 (7.5)
Depending this webpage version 4.6.0 should not be affected https://scout.docker.com/vulnerabilities/id/CVE-2023-31655?s=pypa&n=redis&t=pypi&vr=%3D4.5.4
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS
redis 4.6.0 is installed after this change
ADDITIONAL INFORMATION
Hint: CVE-2023-28859 (6.5) is NOT part of this pull request as it is only fixable with redis V5.x.x which is outcluded in setup.py at the moment (<5.0)
Info is based on this page: https://scout.docker.com/vulnerabilities/id/CVE-2023-28859?s=pypa&n=redis&t=pypi&vr=<5.0.0b1  (fixed in V5.x)

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Hint: checked also other pages with CVE informations.
A few say it should be fixed with 4.6.0 - some not ... I am not sure ...
If it is less critical to update it might be good to update in any case - if there is a bad impact it might be also good to wait for 5.x updates? I am unsure here ... :/

This should not have any impact but I don't see https://nvd.nist.gov/vuln/detail/CVE-2023-31655#match-9248899 impacting 4.X

@dpgaspar I am also confused more and more while reading the CVE documentations ... shall I close this pull request, what do you think? I still don't know if it is "redis direct" why the scans show this as bad dependency (refer up the screenshot from docker scout with the docker-scout link) ...

I checked in multiple repository scans now, seems only docker scout is marking this as "bad" - could also be an issue with docker-scout analyser itself (?)
for testing purpose I made a dirty upgrade in the 3.1.1 to use redis 4.6.0 to see if scout is still marking it as bad
from apache/superset:3.1.1

USER root:root

RUN pip uninstall redis --yes
RUN pip install redis==4.6.0

USER superset:superset

=> it is gone in scout then
If the update to 4.6.0 is not bad it might still be good to switch to it (even if it might not be a CVE inside) to avoid false-positive findings.


ChangeDetectorRef.detectChanges() necessary after window.resize event update

Change detection does not seem to be run after a component property is updated via a window.resize event handler. It is necessary to call ChangeDetectorRef.detectChanges() to force change detection. Using OnPush with ChangeDetectorRef.markForCheck() does not work.
Dart SDK Version (dart --version)
Dart VM version: 2.4.0 (Wed Jun 19 11:53:45 2019 +0200) on "linux_x64"
AngularDart Version (i.e. 4.0.0, 5.0.0-alpha+5, MASTER)
Angular Version 5.3.1
Whether you are using Windows, macOS, or Linux (if applicable)
Linux
Whether you are using Chrome, Safari, Firefox, Edge (if applicable)
Chrome
Any other packages or constraints we should know about
None
We are using this to detect window width changes and make decisions about what components to display accordingly. Example code illustrating the issue below:
Deprecated But Works:
import 'dart:html';

import 'package:angular/angular.dart';
import 'package:angular_components/utils/browser/window/module.dart';

@Component(
  selector: 'test',
  template: "
Current Width = {{width}}
",
//  changeDetection: ChangeDetectionStrategy.OnPush,
)
class TestComponent implements OnInit {

  final ChangeDetectorRef _changeDetectorRef;

  int width = getWindow().innerWidth;

  TestComponent(this._changeDetectorRef);

  @override
  void ngOnInit() {
    getWindow().addEventListener("resize", updateWidth);
  }

  updateWidth(Event event) {
    width = getWindow().innerWidth;
    print("New Width = $width");
//    _changeDetectorRef.markForCheck();
    _changeDetectorRef.detectChanges();
  }
}

Recommended But Does Not Work:
import 'dart:html';

import 'package:angular/angular.dart';
import 'package:angular_components/utils/browser/window/module.dart';

@Component(
  selector: 'test',
  template: "
Current Width = {{width}}
",
  changeDetection: ChangeDetectionStrategy.OnPush,
)
class TestComponent implements OnInit {

  final ChangeDetectorRef _changeDetectorRef;

  int width = getWindow().innerWidth;

  TestComponent(this._changeDetectorRef);

  @override
  void ngOnInit() {
    getWindow().addEventListener("resize", updateWidth);
  }

  updateWidth(Event event) {
    width = getWindow().innerWidth;
    print("New Width = $width");
    _changeDetectorRef.markForCheck();
//    _changeDetectorRef.detectChanges();
  }
}

Somewhat new to AngularDart so I could be totally overlooking another reason the width change is not being shown in the template, but I can't find anything that looks wrong.
Is this a bug in change detection or could it be an overlooked reason not to deprecate ChangeDetectorRef.detectChanges()?

I use dom_ruler from angular_components. That seems to work with markForCheck.

Sorry for the delayed response. This is working as intended. Browser events are run outside the Angular zone, so by default Angular doesn't trigger a change detection cycle (which is why it only works for you when you call detectChanges() manually).
The correct way of scheduling another change detection cycle is to re-enter the Angular zone when handling a browser event:
class TestComponent implements OnInit, OnDestroy {
  TestComponent(this._changeDetectorRef, this._ngZone);

  final ChangeDetectorRef _changeDetectorRef;
  final NgZone _ngZone;

  StreamSubscription<void> _windowResizeSubscription;

  @override
  void ngOnInit() {
    _windowResizeSubscription = window.onResize.listen((event) {
      _ngZone.runGuarded(handleResize);
    });
  }

  @override
  void ngOnDestroy() {
    _windowResizeSubscription.cancel();
  }

  void handleResize() {
    ...
    _changeDetectorRef.markForCheck(); // If using OnPush.
  }
}

On a side note, make sure you remove the event listener to prevent a leak! This is more easily done using the onResize stream from dart:html.
This is how event bindings in templates are implemented, they get wrapped in the following method which performs the steps shown above:
https://github.com/dart-lang/angular/blob/44d8ee96f03e54fadb1fbdf0e021570f8d88f6da/angular/lib/src/core/linker/views/render_view.dart#L134-L139
You can read more about this here: https://github.com/dart-lang/angular/blob/master/doc/advanced/async.md


flutter_lints

When I tried to test the app I was greeted with this error:
"Error Getting Packages"
"Check the following custom dependencies: flutter_timer_countdown: ^1.0.6."
"Because [app_name] depends on flutter_timer_countdown ^1.0.6 which depends on flutter_lints ^2.0.0, flutter_lints ^2.0.0 is required.
So, because [app_name] depends on flutter_lints 3.0.0, version solving failed."
I believe the version 1.0.6 is still using flutter_lints ^2.0.0 and the current flutterflow uses flutter_lints ^3.0.0

I think this issue is best filed against flutter_timer_countdown; It'll either need to rev it dep on flutter_lints (or likely move the dep to a dev_dependency).


prisma2 dev -  Admin UI error

I am getting this error while using prisma2 dev

Can you please try clearing the website's data using devtools and trying this again?
Also, please share your datamodel with us so that we can reproduce this if it's a bug.
Also, make sure you are running the latest version of the CLI(npm i -g prisma2@latest)

I am using prisma2@latest. Here is my data model.
datasource db {
 url      = "file:data.db"
 provider = "sqlite"
}

generator js {
  provider = "photonjs"
}

model User {
  id        String   @default(uuid()) @id
  createdAt DateTime @default(now())
  email     String   @unique
  name      String?
  role      Role     @default(USER)
  }

enum Role {
  USER
  ADMIN
}

After clearing the website's data using devtools, now I am getting this error

Hey @ansarizafar, sorry for the delay in this response! We've made some significant changes to the Studio over the last few weeks, so could you try and install the latest preview of prisma2 (preview-3) and try this again?
I believe enums are what were causing this issue. Please let me know if you still see a crash and I'll look into it.

@madebysid I tried running prisma2 dev and I got this error (screenshot below).
Error in Photon:
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:026fb27c-0dca-4e05-bb45-21aa0b78bbf0:actix-net-worker-1' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:36049d81-bcb8-4cb4-a99a-3a9cd7e390e5:actix-net-worker-2' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:08883cb4-3010-4fdf-bac2-d3e828cbc5ba:actix-net-worker-3' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:aaf554e7-aa55-4469-9ce7-bf24e2c18956:actix-net-worker-4' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:5cef9958-214f-46bb-bcc0-b3c779ecdc51:actix-net-worker-5' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"users\".\"id\", \"test\".\"users\".\"username\", \"test\".\"users\".\"email\" FROM \"test\".\"users\" WHERE 1=1 ORDER BY \"test\".\"users\".\"id\" ASC OFFSET $1",
    [
        Integer(
            0,
        ),
    ],
)
[/root/.cargo/git/checkouts/prisma-query-a8c45647247f5d6d/1107e25/src/connector/postgres.rs:118] visitor::Postgres::build(q) = (
    "SELECT \"test\".\"Post\".\"id\", \"test\".\"Post\".\"createdAt\", \"test\".\"Post\".\"updatedAt\", \"test\".\"Post\".\"title\", \"test\".\"Post\".\"published\", \"RelationTable\".\"id\" AS \"__RelatedModel__\", \"RelationTable\".\"author\" AS \"__ParentModel__\" FROM \"test\".\"Post\" INNER JOIN \"test\".\"Post\" AS \"RelationTable\" ON \"test\".\"Post\".\"id\" = \"RelationTable\".\"id\" WHERE ((\"RelationTable\".\"author\" IN ($1) AND 1=1) AND 1=1) ORDER BY \"RelationTable\".\"id\" ASC",
    [
        Text(
            "cjyou04tu0000838ut2zov7d8",
        ),
    ],
)
thread 'arbiter:83a90145-3f90-4ea6-b15a-0b4d049f58c2:actix-net-worker-6' panicked at 'Missing field for serialization.', src/libcore/option.rs:1034:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:381
   6: rust_begin_unwind
             at src/libstd/panicking.rs:308
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::option::expect_failed
             at src/libcore/option.rs:1034
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: core::ir::lists::build_list
  12: core::ir::Builder::build
  13: <prisma::req_handlers::graphql::GraphQlRequestHandler as prisma::req_handlers::RequestHandler>::handle
  14: prisma::http_handler
  15: <F as actix_web::with::FnWith<T,R>>::call_with
  16: <actix_web::with::WithHandlerFut<T,S,R> as futures::future::Future>::poll
  17: actix_web::pipeline::PipelineState<S,H>::poll
  18: <actix_web::pipeline::Pipeline<S,H> as actix_web::server::handler::HttpHandlerTask>::poll_io
  19: actix_web::server::h1::Http1Dispatcher<T,H>::poll_handler
  20: actix_web::server::h1::Http1Dispatcher<T,H>::poll
  21: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  22: <actix_web::server::channel::HttpChannel<T,H> as futures::future::Future>::poll
  23: <actix_net::service::and_then::AndThenFuture<A,B> as futures::future::Future>::poll
  24: futures::future::chain::Chain<A,B,C>::poll
  25: futures::task_impl::std::set
  26: futures::task_impl::Spawn<T>::poll_future_notify
  27: tokio_current_thread::CurrentRunner::set_spawn
  28: tokio_current_thread::scheduler::Scheduler<U>::tick
  29: tokio_current_thread::Entered<P>::block_on
  30: std::thread::local::LocalKey<T>::with
  31: std::thread::local::LocalKey<T>::with
  32: std::thread::local::LocalKey<T>::with
  33: std::thread::local::LocalKey<T>::with
  34: tokio::runtime::current_thread::runtime::Runtime::block_on

And interestingly, without changing a single line of code or doing anything for that matter, the error message changed after some time on page refresh to show a new error:
Error in Photon:
{
  "name": "RequestError",
  "code": "ECONNREFUSED",
  "host": "localhost:35621",
  "hostname": "localhost",
  "method": "POST",
  "path": "/",
  "protocol": "http:",
  "url": "http://localhost:35621/",
  "gotOptions": {
    "path": "/",
    "protocol": "http:",
    "slashes": true,
    "auth": null,
    "host": "localhost:35621",
    "port": "35621",
    "hostname": "localhost",
    "hash": null,
    "search": null,
    "query": null,
    "pathname": "/",
    "href": "http://localhost:35621/",
    "retry": {
      "methods": {},
      "statusCodes": {},
      "errorCodes": {}
    },
    "headers": {
      "user-agent": "got/9.6.0 (https://github.com/sindresorhus/got)",
      "content-type": "application/json",
      "accept": "application/json",
      "accept-encoding": "gzip, deflate",
      "content-length": 201
    },
    "hooks": {
      "beforeRequest": [],
      "beforeRedirect": [],
      "beforeRetry": [],
      "afterResponse": [],
      "beforeError": [],
      "init": []
    },
    "decompress": true,
    "throwHttpErrors": true,
    "followRedirect": true,
    "stream": false,
    "form": false,
    "json": true,
    "cache": false,
    "useElectronNet": false,
    "body": "{\"query\":\"query {\\n  findManyUser {\\n    id\\n    name\\n    email\\n    post {\\n      id\\n      createdAt\\n      updatedAt\\n      title\\n      published\\n    }\\n  }\\n}\",\"variables\":{},\"operationName\":\"\"}",
    "method": "POST",
    "forceRefresh": true
  }
}

This is what I get when I run the query in my Postgres DB.
test=# SELECT "test"."users"."id", "test"."users"."username", "test"."users"."email" FROM "test"."users" WHERE 1=1 ORDER BY "test"."users"."id" ASC OFFSET 0;
            id             | username |      email
---------------------------+----------+-----------------
 cjyou04tu0000838ut2zov7d8 | Alice    |<EMAIL_ADDRESS>
I am using a Postgres backend and I was able to run create and run migrations and have data in the DB - in fact, the database shows up for a second and the screen quickly repaints itself to show this error.

I spent a lot of time scratching my head with these errors as well.
The docs mention the following:
https://github.com/prisma/prisma2/blob/master/docs/relations.md#1n
"If one side of the relation is missing, Prisma implies the field name based on the name of the model it is pointing to."
I have found that not to be the case when it comes to running prisma2 dev. Explicitly defining each side of the relation in the schema.prisma file was the only way I could get those errors to go away.

@madebysid  I have installed preview3 but I am unable to run Prisma2 dev because of this issue https://github.com/prisma/prisma2/issues/2

@tvvignesh The first error you've quoted looks like something went wrong while making the query, and it does look like something with our Postgres connector. Did @mikeslade's suggestion help?
Could you show me your prisma.schema? I'd like to try and reproduce this so we can get on a fix!
The second issue is a transient one that I'm looking at right now. It looks like studio/photon fails to connect to the underlying binary. It should go away after a refresh. I've created a separate issue (https://github.com/prisma/prisma2/issues/299) for it. Expect a fix in an upcoming version!

@mikeslade Would it be possible to create a small reproduction and create a new issue with your findings? That would definitely help fixing it!

@ansarizafar Ah that should be resolved soon. #2 is probably the best place to get updates.

@madebysid The core issue seems to be related to missing data/references. With a simple model like this:
model User {
  id    String  @default(cuid()) @id @unique
  name  String
}

model Group {
  id    String  @default(cuid()) @id @unique
  name  String
  employee Employee[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

model Employee {
  id    String  @default(cuid()) @id @unique
  name  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

everything works fine if all the tables are seeded. If we don't seed Employee in this example, then we get the following error (note that "User" is the highlighted field in Studio before the error hits):
Error in Photon:
{
  "name": "RequestError",
  "code": "ECONNREFUSED",
  "host": "localhost:39113",
  "hostname": "localhost",
  "method": "POST",
  "path": "/",
  "protocol": "http:",
  "url": "http://localhost:39113/",
  "gotOptions": {
    "path": "/",
    "protocol": "http:",
    "slashes": true,
    "auth": null,
    "host": "localhost:39113",
    "port": "39113",
    "hostname": "localhost",
    "hash": null,
    "search": null,
    "query": null,
    "pathname": "/",
    "href": "http://localhost:39113/",
    "retry": {
      "methods": {},
      "statusCodes": {},
      "errorCodes": {}
    },
    "headers": {
      "user-agent": "got/9.6.0 (https://github.com/sindresorhus/got)",
      "content-type": "application/json",
      "accept": "application/json",
      "accept-encoding": "gzip, deflate",
      "content-length": 252
    },
    "hooks": {
      "beforeRequest": [],
      "beforeRedirect": [],
      "beforeRetry": [],
      "afterResponse": [],
      "beforeError": [],
      "init": []
    },
    "decompress": true,
    "throwHttpErrors": true,
    "followRedirect": true,
    "stream": false,
    "form": false,
    "json": true,
    "cache": false,
    "useElectronNet": false,
    "body": "{\"query\":\"query {\\n  findManyUser {\\n    id\\n    name\\n    group {\\n      id\\n      name\\n      createdAt\\n      updatedAt\\n    }\\n    employee {\\n      id\\n      name\\n      createdAt\\n      updatedAt\\n    }\\n  }\\n}\",\"variables\":{},\"operationName\":\"\"}",
    "method": "POST",
    "forceRefresh": true
  }
}

In a new app, it is not reasonable to expect that every table will have data at the outset. So, if a table is not seeded, the only workaround to get Studio to run without error is to explicitly document the relations:
model User {
  id    String  @default(cuid()) @id @unique
  name  String
  employeeUpdates Employee[] @relation(name: "EmployeeUpdates")
}

model Group {
  id    String  @default(cuid()) @id @unique
  name  String
  employee Employee[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

model Employee {
  id    String  @default(cuid()) @id @unique
  name  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User @relation(name: "EmployeeUpdates")
}

@tvvignesh The first error you've quoted looks like something went wrong while making the initial query, and it does look like something with our Postgres connector. Did @mikeslade's suggestion help?
Could you show me your prisma.schema? I'd like to try and reproduce this so we can get on a fix!
The second issue is a transient one that I'm looking at right now. It looks like studio/photon fails to connect to the underlying binary. It should go away after a refresh. I've created a separate issue (#299) for it. Expect a fix in an upcoming version!

@madebysid I have pushed the code with which I tried this here - https://github.com/tvvignesh/prisma-poc
Hope it helps. I have not yet tried what @mikeslade has mentioned here - will try it out and get back if it works.

@mikeslade That's interesting, I was pretty sure the ECONNREFUSED (#299) error had nothing to do with the data itself, but rather just the connection between Studio and photon. If you've been seeing these errors together, I might be wrong about that then. I'm investigating that error today, I'll let you know what I find.
@tvvignesh Thanks for that, I'll check that repo out!

@tvvignesh I was able to reproduce the error using the repo you've provided, it does not look related to this one, so I've created a separate issue for it: #309

@mikeslade @tvvignesh The ECONNREFUSED error should now be fixed with the latest alpha. It will land in preview.4 soon. From my investigation, it was a race condition between the binary being ready, and the Studio sending its first request. Let me know if you're still able to reproduce it though!

@madebysid I set up fresh docker environments running ubuntu:latest and postgres:latest instances. Installed<EMAIL_ADDRESS>binary version: 2ada5347b0000b7fe5171e41a4bec5b3d11c61e3
Here is the datamodel:
model User {
  id    String  @default(cuid()) @id @unique
  name  String
}

model Group {
  id    String  @default(cuid()) @id @unique
  name  String
  childGroups Group[] @relation(name: "ChildGroups")
  parent Group? @relation(name: "ChildGroups")
  type String?
  employee Employee[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

model Employee {
  id    String  @default(cuid()) @id @unique
  name  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

here is the seed:
import Photon from "@generated/photon";

export const photon = new Photon();

async function main() {
  const systemUser = await photon.users.create({
    data: {
      name: "Mike"
    }
  });

  if (systemUser) {
    await photon.groups.create({
      data: {
        name: "PARENT_GROUP",
        childGroups: {
          create: [
            {
              name: "CHILD_GROUP1",
              updatedBy: {
                connect: {
                  id: systemUser.id
                }
              }
            },
            {
              name: "CHILD_GROUP2",
              updatedBy: {
                connect: {
                  id: systemUser.id
                }
              }
            },
            {
              name: "CHILD_GROUP3",
              updatedBy: {
                connect: {
                  id: systemUser.id
                }
              }
            }
          ]
        },
        updatedBy: {
          connect: {
            id: systemUser.id
          }
        }
      }
    });

    // await photon.employees.create({
    //   data: {
    //     name: "John Smith",
    //     updatedBy: {
    //       connect: {
    //         id: systemUser.id
    //       }
    //     },
    //     group: {
    //       connect: {
    //         id: group1.id
    //       }
    //     }
    //   }
    // });

    // await photon.employees.create({
    //   data: {
    //     name: "Jane Doe",
    //     updatedBy: {
    //       connect: {
    //         id: systemUser.id
    //       }
    //     },
    //     group: {
    //       connect: {
    //         id: group2.id
    //       }
    //     }
    //   }
    // });
  }
}

main()
  .catch(e => console.error(e))
  .finally(async () => {
    await photon.disconnect();
  });

Running prisma2 dev after migrating and seeding the db results in the following error:
Error in script {message: "Error in Photon: ↵", stack: "Error↵    at Photon.request (/usr/lib/node_modules…ode_modules/prisma2/build/photon-worker.js:22:18)"} photon.users.findMany({
  select: {
    id: true,
    name: true,
    group: true,
    employee: true
  }
})

Interestingly, it doesn't seem to have recognized that there is a 1:n relationship between Users and Groups/Employees.

@madebysid If I change the datamodel to the following, then it works without error:
model User {
  id    String  @default(cuid()) @id @unique
  name  String
  updatedGroups Group[]
  updatedEmployees Employee[]
}

model Group {
  id    String  @default(cuid()) @id @unique
  name  String
  childGroups Group[] @relation(name: "ChildGroups")
  parent Group? @relation(name: "ChildGroups")
  type String?
  employee Employee[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

model Employee {
  id    String  @default(cuid()) @id @unique
  name  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  updatedBy User
}

@mikeslade That's perfect, I'll try and reproduce it with all the info you've given me!
However, this looks unrelated (at least at first glance), so let's continue the conversation here: #323 . I'll keep you updated there!

Since the original issue here is resolved, I'm closing this.
If new errors pop up, please file it under a new issue!

[]()


Added ParsingFetcher #275 that wraps a Raw type Parser and and Raw type Fetcher

Reading and parsing network/file fetch can be done at same step with single Fetcher.

Enhancement from the issue #275

note to self: if this is merged, add to kotlin artifact

I will close this PR because of different branch from my fork.

@magillus You can rebase it on feature/rx2 instead of closing it.

There were some merge conflicts etc. my PR is simple adding a file and unit test so was faster just create branch from feature/rx2


MudDataGrid Grouping hides rows when pager in use

Bug type
Component
Component name
MudDataGrid
What happened?
When I set Grouping on a column, the page loads and shows no records in the grid. It only happens when I have a MudDataGridPager in use:
<MudDataGrid T="JoinOrganisationRequestDto" ServerData="@(new Func<GridState<JoinOrganisationRequestDto>, Task<GridData<JoinOrganisationRequestDto>>>(ServerReload))" Groupable="true" GroupExpanded="false">
    <Columns>
        <PropertyColumn Property="x => x.OrganisationName" Title="Group" Grouping />
         <PropertyColumn Property="x => x.UserAccount.FirstName" Title="First Name" />
         <PropertyColumn Property="x => x.UserAccount.LastName" Title="Last Name" />
     </Columns>
     <PagerContent>
         <MudDataGridPager T="JoinOrganisationRequestDto" />
     </PagerContent>
 </MudDataGrid>

the image below shows the result. As you can see there are 3 records but none of them are visible.

Removing the pager makes the records appear.
Expected behavior
Records should be visible
Reproduction link
N/A
Reproduction steps

As described above

Relevant log output
No response
Version (bug)
6.12.0
Version (working)
?
What browsers are you seeing the problem on?
Chrome
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Groupable don't work with ServerData. QuickFilter had a similar bug #7998.
ServerData allows to load only the data displayed on the current page.
But Groupable needs all data to be loaded to work properly, but this loses the point of ServerData to load partially the data.
Currently, I propose to disable some grid features when ServerData is used, like Items (#8020), QuickFilter (#7998), Groupable, ...

Groupable don't work with ServerData. QuickFilter had a similar bug #7998.
ServerData allows to load only the data displayed on the current page. But Groupable needs all data to be loaded to work properly, but this loses the point of ServerData to load partially the data.
Currently, I propose to disable some grid features when ServerData is used, like Items (#8020), QuickFilter (#7998), Groupable, ...

Are you sure server data should have this functionality completely removed? I get that it will appear inconsistent to a user but perhaps a UI tweak to indicate what's happening would be more flexible?
I'm just thinking of circumstances such as if you page in 200 rows of server data it may still be useful to be able to group, quick filter... I checked this out because I'm implementing an export routine, server data would be the current page but still potentially useful.
I'm not sure what the issue above is though, I would expect from looking around the code it would group on the current page.

Diclaimer, I am not one of the authors of MudBlazor. It's just a proposition based on my limited experience.

Are you sure server data should have this functionality completely removed? I get that it will appear inconsistent to a user but perhaps a UI tweak to indicate what's happening would be more flexible?

It's a possibility, but is the work required to implement this worth it?

I'm just thinking of circumstances such as if you page in 200 rows of server data it may still be useful to be able to group, quick filter... I checked this out because I'm implementing an export routine, server data would be the current page but still potentially useful.

In this case, ServerData isn't a good fit. In this scenario, it's preferable to load all data and use MudGridTable.Items. So it's avoid all problem of ServerData.

I dig more how work grouping and my precedent assumption is false.

But Groupable needs all data to be loaded to work properly...

Groupable group only items of the page. So it don't need to load all items to work.

@williambuchanan2, can you reproduce in TryMudBlazor?


EPERM: Operation not permitted errno: 1

I am facing an issue when I ran the command bun run start
here is the complete picture
(devika) m0nku@pop-os:~/Documents/Temporary/devika/ui$ bun run start
$ vite build && vite preview
vite v5.2.13 building SSR bundle for production...
13622 |     else {
13623 |         process.stdout.write(output.substring(0, process.stdout.columns - 1));
13624 |     }
13625 | }
13626 | function clearLine$1() {
13627 |     process.stdout.clearLine(0);
        ^
EPERM: Operation not permitted
   errno: -1
 syscall: "write"
      fd: 15

      at write (native:1:1)
      at node:stream:171:43
      at clearLine$1 (/home/m0nku/Documents/Temporary/devika/ui/node_modules/vite/dist/node/chunks/dep-DEPSZ3SS.js:13627:20)
      at writeLine (/home/m0nku/Documents/Temporary/devika/ui/node_modules/vite/dist/node/chunks/dep-DEPSZ3SS.js:31570:87)
      at /home/m0nku/Documents/Temporary/devika/ui/node_modules/vite/dist/node/chunks/dep-DEPSZ3SS.js:31302:10
      at /home/m0nku/Documents/Temporary/devika/ui/node_modules/vite/dist/node/chunks/dep-DEPSZ3SS.js:31592:13
      at transform (/home/m0nku/Documents/Temporary/devika/ui/node_modules/vite/dist/node/chunks/dep-DEPSZ3SS.js:31328:26)
      at /home/m0nku/Documents/Temporary/devika/ui/node_modules/rollup/dist/es/shared/node-entry.js:19774:40

Bun v1.1.16 (Linux x64)
error: script "start" exited with code 1

hey buddy I'm not a project coder I just saw your issues and found this check out this https://github.com/stitionai/devika/issues/609

It did not help :)


Quill misbehaves inside of Shadow DOM

When embedding Quill inside a custom web component that uses the shadow DOM, Quill exhibits a number of odd behaviors:

Text cursor moves incorrectly when typing the first couple of characters. In this GIF, I type ABC but it comes out BCA:

Some styling options in toolbar do not have any effect:

Also, shortcuts like CTRL+C and CTRL+X for copy/paste do not appear to function at all.

There may be other issues I haven't yet discovered.
Steps for Reproduction

Visit https://jsfiddle.net/xgeuda36/
Type some things, try the styling buttons, etc.

Expected behavior:
Quill should behave the same whether embedded inside Shadow DOM or not.
Actual behavior:
Quill exhibits cursor, toolbar, and keyboard shortcut issues.
Platforms:
Tested on Chrome 125.0.6422.142 on Windows, and Safari 17.5 on iOS.
Version:
Quill 2.0.2

The fiddle to reproduce these issues is very small, it is merely this code:

We have the exact same problem since upgrading to v 2.0.2 v seems to be an ongoing issue with Quill. At least in 1.3.7 it was only issue 2
My fiddle https://jsfiddle.net/yov9c3mh/8/

does anyone know what is causing this? I'm trying to do some debugging, but un-clear why this is happening, My current thinking is that the events are being clobbered by the shadowdom


Fix type and update text on connect to hub page.

Fixes: https://issues.redhat.com/browse/AAH-402

@newswangerd LGTM


Remove additional db query from BigQuery scanner which conflicts with existing db session.

The project_id is not used by this scanner.  It's original purpose is to help identify where the bigquery dataset is coming from, which now can be done with the full_name.
Fixes #1711

Adding cla: yes label, as all commit authors are covered by CLA.