[info request] Hosting the language server code in Blazor?

We're using this library to provide LSP support for Bicep. We have an browser demo at https://aka.ms/bicepdemo which calls into the compiler code directly using Blazor/WASM, using Microsoft.JSInterop to compile, emit diagnostics, get semantic tokens, and pass the results back to the Monaco editor, but we're not using the language server for this - instead we've created a few custom functions for it.
The monaco-languageclient library can be used to hook monaco up to a language server which would provide much of the functionality that VSCode offers in a browser. It would be extremely cool to be able to simply use the LSP in a browser without the need for a back-end server.
I'm curious as to whether anyone has tried to run this server code via Blazor before. I've been experimenting with it and am able to get the initialize request/response negotiation to take place, but I don't see the client/registerCapability request come through from the server. I suspect there may be some sort of message pump that needs to run, but am not at all familiar with the Reactive library that's being used. Any pointers that you can give me would be awesome!
Here's an example of the code changes I've been experimenting with to hook this up to monaco: main...antmarti/experiment/monaco_lsp

I was thinking about this a week or two ago, in theory things should "just work" because the language server is just a .NET Standard library.  This sounds fun, so I'll take a look at your code and see if I can get it running.

I'm curious as to whether anyone has tried to run this server code via Blazor before. I've been experimenting with it and am able to get the initialize request/response negotiation to take place, but I don't see the client/registerCapability request come through from the server. I suspect there may be some sort of message pump that needs to run, but am not at all familiar with the Reactive library that's being used. Any pointers that you can give me would be awesome!

If there is a message pump at play one of the challenges might be that pump using a dedicated thread. I don't think Blazor WASM supports threads yet. Certain BCL methods that interact with threading will "spin" and fry your CPU :)

Thanks,

I was thinking about this a week or two ago, in theory things should "just work" because the language server is just a .NET Standard library. This sounds fun, so I'll take a look at your code and see if I can get it running.

Thanks! If you need any pointers in getting it running, let me know. It should just work if you clone the repo and run:
cd src/playground
npm i
npm start

I've stuck some haphazard logging in which should get written out to the browser console.

For input the process scheduler runs on the thread pool, which I think should be fine.
https://github.com/OmniSharp/csharp-language-server-protocol/blob/master/src/JsonRpc/InputHandler.cs#L86
For output however... I think it by default runs a dedicated thread.
https://github.com/OmniSharp/csharp-language-server-protocol/blob/6371386ee90dde8a1c419f3dc8fc94e0c1bc35f0/src/JsonRpc/OutputHandler.cs#L58

Okay here's a possible quick fix.  When setting up the server... try this. IScheduler should be System.Reactive.Scheduling.IScheduler (or something like that)
options.Services.AddSingleton<IScheduler>(TaskPoolScheduler.Default);

I theory that should kick the output handler to use the IScheduler provided in the container based on how I think DryIoc will pick constructors.

@ryanbrandenburg @NTaylorMullen @TylerLeonhardt thoughts, should I just move to use the task pool scheduler for handing input/output?  At the time a dedicated thread "made sense" but honestly it probably doesn't matter.
Input is already on the task pool and working fine.
Output isn't however it does ensure ordering, so we shouldn't there shouldn't really be any big problems.

@ryanbrandenburg @NTaylorMullen @TylerLeonhardt thoughts, should I just move to use the task pool scheduler for handing input/output? At the time a dedicated thread "made sense" but honestly it probably doesn't matter.

Having a dedicated thread has been risky because if something doesn't ConfigureAwait(false) and blocks you're doomed. We've actually encountered that issue once or twice in VS (as I'm sure you recall) so relying on the task pool scheduler doesn't sound awful. Are there any other drawbacks?
All that said for extra background info, we run Razor's language server in-proc in VS today which I presume from the quick glance at this thread similar types of things are trying to be acheived.
Here's where we create our own abstraction to start the spinup of the O# framework bits in VS: https://github.com/dotnet/aspnetcore-tooling/blob/feb060660bf14c9da3f284a72fe5f86390d3ab65/src/Razor/src/Microsoft.VisualStudio.LanguageServerClient.Razor/RazorLanguageServerClient.cs#L126-L129
And here's our actual abstraction that can rely on in-proc or out of proc streams: https://github.com/dotnet/aspnetcore-tooling/blob/feb060660bf14c9da3f284a72fe5f86390d3ab65/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs#L72-L75

Okay here's a possible quick fix. When setting up the server... try this. IScheduler should be System.Reactive.Scheduling.IScheduler (or something like that)
options.Services.AddSingleton<IScheduler>(TaskPoolScheduler.Default);

I gave this a go, but didn't see any observable difference in behavior.
I did notice that the Reactive.Wasm library I'm trying to use to replace the schedule doesn't appear to be doing what it's meant to in .NET 5 - in particular these checks no longer seem to work:
https://github.com/reactiveui/Reactive.Wasm/blob/a226dc0bb4f010c248568eb67b0b8e5b768358f5/src/System.Reactive.Wasm/Internal/WasmScheduler.cs#L136-L137
https://github.com/reactiveui/Reactive.Wasm/blob/a226dc0bb4f010c248568eb67b0b8e5b768358f5/src/System.Reactive.Wasm/Internal/WasmPlatformEnlightenmentProvider.cs#L27-L28
In theory if they were working, I should be able to do:
options.Services.AddSingleton<IScheduler>(WasmScheduler.Default);

I'll see if I can fix up the above checks locally and get that working.

All that said for extra background info, we run Razor's language server in-proc in VS today which I presume from the quick glance at this thread similar types of things are trying to be acheived.

Thanks for the pointers! We have the language server running as a standalone exe, which we use for VSCode integration, but as an experiment, I'm trying to see if we can also host the language server fully in a web browser, using Blazor/WASM without a backend - I think that's where the complexity is mostly coming from. Is that something your team has attempted by any chance?

I think that's where the complexity is mostly coming from. Is that something your team has attempted by any chance?

Ah, ya I can definitely imagine that being difficult 😄. No we haven't tried that but I can just imagine how the threading models may make things more difficult in addition to things like file watchers

@david-driscoll I just got an end-to-end working with a very hacky change here:
https://github.com/OmniSharp/csharp-language-server-protocol/blob/6371386ee90dde8a1c419f3dc8fc94e0c1bc35f0/src/JsonRpc/OutputHandler.cs#L67
Instead of adding the message to the queue, I just sent it directly with:
ProcessOutputStream(value, CancellationToken.None).Wait();

So I think that definitely confirms that it's something to do with the scheduler. Interestingly, I noticed that in the version of the language server we're using (0.18.3) it is using TaskPoolScheduler.Default rather than EventLoopScheduler.
I'm going to try and get a more solid PoC together by replacing IOutputHandler in the IoC container.

interesting!
options.Services.AddSingleton<IScheduler>(ImmediateScheduler.Instance); also appears to work.
@anthony-c-martin are you on slack or msteams?

So I'm running into an error Request client/registerCapability failed with message: i.languages.registerDocumentSemanticTokensProvider is not a function.  Seems the monaco editor doesn't support semantic tokenization yet.  However, disabling that things seem to work.
Here's my branch for you reference from:
https://github.com/Azure/bicep/compare/Azure:antmarti/experiment/monaco_lsp...david-driscoll:davidd/experiment/monaco_lsp
Couple notes: I was building locally with the latest version of the library (0.19.0-beta.1) so the C# changes are the changes required based on the breaking changes I've documented.
Also I was able to simplify the interop a little bit by using StreamMessageReader/StreamMessageWriter and a Duplex stream.  This writes all the expected header information, so you don't have to serialize on the Blazor side, instead you just write the bytes directly into the pipe.  Sending from the server to client also happens similarly.

I've created this PR #458 so we can configure the schedulers specifically.

So I'm running into an error Request client/registerCapability failed with message: i.languages.registerDocumentSemanticTokensProvider is not a function. Seems the monaco editor doesn't support semantic tokenization yet. However, disabling that things seem to work.
Here's my branch for you reference from:
Azure/bicep@Azure:antmarti/experiment/monaco_lsp...david-driscoll:davidd/experiment/monaco_lsp
Couple notes: I was building locally with the latest version of the library (0.19.0-beta.1) so the C# changes are the changes required based on the breaking changes I've documented.
Also I was able to simplify the interop a little bit by using StreamMessageReader/StreamMessageWriter and a Duplex stream. This writes all the expected header information, so you don't have to serialize on the Blazor side, instead you just write the bytes directly into the pipe. Sending from the server to client also happens similarly.

This is AMAZING, thank you so much for your help! I ran into the same issue with the language client - looks like semantic support has only been added to a preview version, and that they haven't yet picked up the latest LSP spec. For now, since we've already implemented our own semantic token handler anyway, I've reverted back to using this for now until the language client has actual support for it.
I've pushed a demo of this here: https://bicepdemo.z22.web.core.windows.net/experiment/lsp/index.html

This has me thinking of making a Blazor Component that uses the monaco editor... but to try to make as much as possible of it actually live in C# and use the LanguageClient for interacting with it....
Other than the annoying part of converting the monaco api  into C#... ugh.

Right now I don't think I have the bandwidth to tie monaco and blazor together.  I might spike something out next weekend.  I looked at https://github.com/microsoft/monaco-editor/blob/master/monaco.d.ts and while I'm sure I could... that's a lot of code to keep in sync, so I would want to build out some sort of tool to integrate the two together.
I found this project, and posted an issue there https://github.com/canhorn/EventHorizon.Blazor.TypeScript.Interop.Generator/issues/31 to see what might be needed to support generation interop with monaco.d.ts as I'm just not prepared for the maintenance that would entail.
In the meantime there is recent activity on https://github.com/TypeFox/monaco-languageclient updating it to the latest version (that would include semantic tokens), you might be able to pin to the latest master branch and see if that works (I have not tried).

@anthony-c-martin are you on slack or msteams?

I'm on Teams -<EMAIL_ADDRESS>

Shoot now I want to run the PowerShell language server in Blazor!

I think you can, you'll just have to do something similar to the bicep solution using monaco + monaco-languageclient, it totally works, there might be some issues if you use the file system APIs but those can always be fixed.

@TylerLeonhardt feel free to reach out if you'd like any pointers for the Bicep code!

I'm skeptical the PowerShell API will "just work" in Blazor WASM but worth a shot. @anthony-c-martin how did you "start the language server" in Blazor WASM? I'd love to take a peak at how the language server is hooked up to Monaco Editor.

For context, I've used the Monaco-languageclient before, but only their stdio option where the language server was running in a separate process on the machine.

I'm skeptical the PowerShell API will "just work" in Blazor WASM but worth a shot. @anthony-c-martin how did you "start the language server" in Blazor WASM? I'd love to take a peak at how the language server is hooked up to Monaco Editor.

[credit goes to @david-driscoll for a lot of this code]
Here's where the server is being initialized:
https://github.com/Azure/bicep/blob/16d7eb7fd5a92dadf6704f1c49e9246cf52b4da9/src/Bicep.Wasm/Interop.cs#L43-L58
The Server class is our own, but is really a thin wrapper around the Omnisharp Server class. The important pieces here are initializing the input/output pipes, and overriding the scheduler with ImmediateScheduler.Instance.
Here's the C# method that the JS code invokes to send data from client to server:
https://github.com/Azure/bicep/blob/16d7eb7fd5a92dadf6704f1c49e9246cf52b4da9/src/Bicep.Wasm/Interop.cs#L62
Here's where the C# code invokes the JS code to send data from server to client:
https://github.com/Azure/bicep/blob/16d7eb7fd5a92dadf6704f1c49e9246cf52b4da9/src/Bicep.Wasm/Interop.cs#L78
Here's the JS code to setup the send/receive with the server:
https://github.com/Azure/bicep/blob/16d7eb7fd5a92dadf6704f1c49e9246cf52b4da9/src/playground/src/helpers/lspInterop.ts#L24-L34
On startup I'm initializing the Blazor code from JS and setting the interop variable which can be used to invoke Blazor code with the following:
https://github.com/Azure/bicep/blob/16d7eb7fd5a92dadf6704f1c49e9246cf52b4da9/src/playground/src/helpers/lspInterop.ts#L5-L14
If you follow through the TS code, you should be able to see how the above is hooked into monaco-languageclient. I'm probably going to try and refine this code at some point to see if I can clean up the use of globals, and also to see if I can use a webworker to run the Blazor code.

Right now I don't think I have the bandwidth to tie monaco and blazor together. I might spike something out next weekend. I looked at https://github.com/microsoft/monaco-editor/blob/master/monaco.d.ts and while I'm sure I could... that's a lot of code to keep in sync, so I would want to build out some sort of tool to integrate the two together.

Out of interest, what are the benefits of implementing the translation layer between LSP & monaco's "custom LSP" in C# vs relying on monaco-languageclient to do it? I quite like the clean separation of having the TS code handle the translation and communicating with the C# code via LSP.

I just think it would be pretty cool to have a fully featured wrapper for monaco from the C# side.  The added extra would make it it easier to consume using the client.

Probably because then @david-driscoll could guarantee that the monaco language client was up-to-date on the LSP spec.

Going to pin this issue for any passers by as it is truly a cool feature.

FWIW I think we need one of https://github.com/dotnet/aspnetcore/issues/17730 or https://github.com/dotnet/aspnetcore/issues/5475 to really unlock the power of this, because at the moment synchronous dotnet code locks up the UI thread, which feels a little janky when typing.
There's also this project which I haven't really investigated that might work as a stopgap: https://github.com/Tewr/BlazorWorker

I think a web worker would be perfect.  Your UI (TypeScript) starts the worker, and you interop with the worker using postmessage.  The worker then just has to interop with the language server.

Thank you guys, you helped me a lot to understand some ideas. I'm trying to build a small POC on blazor and monaco based C# code editor with code completion. However, I cannot get code completion to work.
What I've done:

in JS created monaco-editor and configured monaco-languageclient (in the same way as Bicep's playground)
in wasm created an interop class:

public class Interop
{
	private LanguageServer languageServer;
	private readonly IJSRuntime jsRuntime;
	private readonly PipeWriter inputWriter;
	private readonly PipeReader outputReader;

	public Interop(IJSRuntime jsRuntime)
	{
		this.jsRuntime = jsRuntime;
		var inputPipe = new Pipe();
		var outputPipe = new Pipe();

		inputWriter = inputPipe.Writer;
		outputReader = outputPipe.Reader;

		languageServer = LanguageServer.PreInit(opts =>
		{

			opts.WithInput(inputPipe.Reader);
			opts.WithOutput(outputPipe.Writer);
			opts.Services.AddSingleton<IScheduler>(ImmediateScheduler.Instance);
		});

		Task.Run(() => RunAsync(CancellationToken.None));
		Task.Run(() => ProcessInputStreamAsync());
	}

	public async Task RunAsync(CancellationToken cancellationToken)
	{
		await languageServer.Initialize(cancellationToken);

		await languageServer.WaitForExit;
	}

	[JSInvokable]
	public async Task SendLspDataAsync(string jsonContent)
	{
		var cancelToken = CancellationToken.None;
		Console.WriteLine("jsonContent");
		Console.WriteLine(jsonContent);

		await inputWriter.WriteAsync(Encoding.UTF8.GetBytes(jsonContent)).ConfigureAwait(false);
	}

	private async Task ProcessInputStreamAsync()
	{
		do
		{
			var result = await outputReader.ReadAsync(CancellationToken.None).ConfigureAwait(false);
			var buffer = result.Buffer;
			Console.WriteLine("ProcessInputStreamAsync");
			await jsRuntime.InvokeVoidAsync("ReceiveLspData", Encoding.UTF8.GetString(buffer.Slice(buffer.Start, buffer.End)));
			outputReader.AdvanceTo(buffer.End, buffer.End);

			// Stop reading if there's no more data coming.
			if (result.IsCompleted && buffer.IsEmpty)
			{
				break;
			}
			// TODO: Add cancellation token
		} while (!CancellationToken.None.IsCancellationRequested);
	}
}

Code completion doesn't work, because I haven't registered CodeCompletionHandler. I don't understand which one to use, because in Bicep you use a custom completion handler, in my POC I would like to use O# completion handler.
Do you have any hints on how to implement it?

I've made a solution, that compiles C# project into single-file UMD library: https://github.com/Elringus/DotNetJS
Tried to use the server with it, but not sure how to deal with input/output. Console.STD won't work, obviously. Can we somehow run the server via websocket?

Tried to use the server with it, but not sure how to deal with input/output. Console.STD won't work, obviously. Can we somehow run the server via websocket?

Nice, I'll check that library out!
Here's how I've been doing things in my experimental branch - using a simple send/receive method to pass JSONRPC back and forth from JS <-> C#:

C#: https://github.com/Azure/bicep/blob/4a4d193eff0492043ff350419c8c9693ad6d63b6/src/Bicep.Wasm/LspWorker.cs
JS: https://github.com/Azure/bicep/blob/4a4d193eff0492043ff350419c8c9693ad6d63b6/src/playground/src/helpers/lspInterop.ts

Not the most elegant/performant, but it works well enough for now. Being able to have client-side Blazor host a websocket would make this a lot nicer.

@Elringus I'm currently trying to use your library to get our OmniSharp-based Language Server to run in an VS Code Web extension. This sounds very similar to what you want to achieve. May I ask if you already managed to get that working? My current status is that I can run the language server in a Blazor project (thanks to the information in this thread), but in the web extension the server never finishes initialization.

@Skleni I've switched to Microsoft's reference LSP implementation in JS (https://github.com/microsoft/vscode-languageserver-node), while reusing the existing language-specific C# code via DotNetJS:

— this way we can get up-to-date LSP implementation and native webworker transport layer out of the box, while keeping all the handlers logic in C#.
Regarding VS Code, there were 2 issues with this workflow, but they're both solved in insiders stream now and should become available in the main stream in February:

https://github.com/microsoft/vscode/issues/138413
https://github.com/microsoft/vscode/issues/138780


4k-video-downloader: Update version to 3.8

Thank you for the contribution. It was merged directly as 26ccf0cf22092f77722e4d065e2fff8b01818b26 to keep commit history cleaner. Your contribution is still credited to you.


servo_power: Added support for chromebook servo boards

Servo is a debug board used for Chromium OS test and development. Among other uses, it allows
access to the built in power monitors (if present) of a Chrome OS device. More information on
Servo board can be found in the link bellow:
https://www.chromium.org/chromium-os/servo
based on: https://github.com/vflouris/workload-automation/commit/03ede10739add543251b7827621370e647878a26

Another minor nit: you create one csv file per power rail.  If you're going to generate a csv, why not put all the data collected in the file?

I can work around these nits for now so from my point of view, this can be merged as is.  They can be addressed later.


Pull Request failed

My pull request failed because AppVeyor was attempting to download a resource from codeplex that was not found.

@AntonyCorbett I add a code review comment on your #27 pull-request.

@giacomelli thank you. Are you sure you submitted the review? I don't see any review comments attached to the PR.

@AntonyCorbett sorry, I forgot to submit it, now is there.

@giacomelli thank you - I will make the required change and resubmit.

Closed by #27


Stack overflow for very large input text

I have a large input file. 319 kb, 12k lines of text. When it gets to about the fifth match, ctre dies with a stack overflow.
This is the regex used:

^[\t ]+luafn_([A-z_0-9]+)(([A-Za-z0-9_]+)([A-z0-9 _><:;,=?.]))([\n\t/])([!.\w ,!-`.='"[]/:;+()\r\n\t])\n[\s]+*/

MSVC 17.11.1 debug, with /Ob2, /Oi, /Ot. If I increase the stack size to 2 MB (it defaults to 1), it executes with no issue. Doesn't happen with /Ox.
I recognize this just may be how ctre needs to execute.
I can supply the original file if necessary.

I recommend using possessive repeat ++ which isn't backtracking, or at least lazy one +?. This should help, but also I noticed A-z in your regex. It doesn't seem right or intentional.
Main problem I see also (if I fix the A-z):
([A-Za-z_0-9]+)(([A-Za-z0-9_]+) this doesn't know where one group ends and second starts.

Is the ( in middle intentional as to match ( and not start group?

I've been using regexes for an embarrassingly long time and did not realize until you pointed it out that [A-z] matches some characters other than letters. 😅 I'll be changing that.
It looks like github formatting ate a few escapes. I can't figure out how to get github to show it properly. See it here on regex101.com. I'll update the original comment as well with this link. This should also answer your question about the seemingly mismatched capture groups.
The regex is intended to match this, picking out the name, return type, parameter names and types, comment. I created this regex using regex101.com. At least on regex101.com, the default behavior for the captured captures is for the i
luafn_void(ParamTester, float x, bool b, std::string s)
/*
another test function
*/
{
	float x;
	bool b;
	std::string s;
	lua.args().pop(x).pop(b).pop(s).done();
	Console::Msg("Int: {}, Bool: {}, String: {}", x, b, s);
	return lua.ret().done();
}

https://regex101.com/r/lzwAti/1 ... look at this approach where I'm avoiding greedy repeats and instead using possessive or lazy. Difference is Greedy needs to store every possible backtracking state, which can be a lot, and it's using system stack for it.

I tried the alternate regex. Interestingly, it's about 400 ms slower in release, from about 2200 to about 2600. (Definitely better than std::regex, which takes about 28 seconds.) It does remove the need to increase the stack space but if I'm being honest I'll take the extra 400 milliseconds with increased stack space. Undoubtedly the file it's parsing will get larger before the project is finished.
I thought this might be some form of "user error" from the start.

Alternatively you can try different combinations of lazy / possessive.

But generally regex is just code and one needs to write it like any other code.


Map drag is broken in Opera 12

Steps to reproduce:

Open a map in Opera 12
Try to drag it

Result: tiles don't move at all.
Versions: Opera 12.16, Ubuntu 14.04.
The bug occurs in current master. git bisect points at this commit: https://github.com/Leaflet/Leaflet/commit/6e5d3e26e64665e32749fe1caed6426e208d796b

Related #2574

Closing here unless you can point out really strong reasons to support such an obscure browser version that was superseded a long time ago.

Many people don't want move to Opera with webkit and continue to stay on the 12 version. Our statistics show that Opera 12 is used as often as the IE8.

OK, makes sense. I merged that pull — counting on you to make sure everything works on Opera 12. :)

Thank you! : )


VSCode Icon not shown on 2nd display

VSCode Version: 1.26.1
OS Version: 10.0.15063

Steps to Reproduce:

Use two (or more) monitors
Open a file with VS Code

On my primary monitor, the VS Code Icon shows up correctly in my task bar:

But on all other monitors, there is no VSCode icon displayed:

Also, there is no icon for "edit with code" when right-clicking on a file:

(by the way: what's the difference between "edit" and "open" in this context?)

Might be Electron related.

@mrmunch did it work before?

Adding @joaomoreno

Our distribution doesn't come with that edit with code action... you must've gotten that via some other way.
Does it work if you remove the shortcuts from the start menu and add them again?

@joaomoreno I did not install it with a start menu shortcut. But after adding it to the shortcuts, the icon on the second monitor shows up now, thanks!
But the second problem - "Edit with VS Code" - still occurs.

Good to know.
Edit with VS Code isn't something VS Code contributes. Another software must've set that up for you.


Update billboarding-and-tag-along.md - Removed MRDL disclaimer

Removed MRDL disclaimer

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

mixed-reality-docs/billboarding-and-tag-along.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Feature/cplp 3120/user bulk upload

Description
Created user bulk upload functionality in usermanagement
Why
To upload users in bulk
Issue
n/a
Checklist
Please delete options that are not relevant.

[X] I have followed the contributing guidelines
[X] I have performed a self-review of my own code
[X] I have successfully tested my changes locally

Attention - this is a release 23.12 feature and need to get committed against dev

Attention - this is a release 23.12 feature and need to get committed against dev

@jjeroch  Okay, change the base branch now


Specify explicit MicroBuildPluginsSwixBuildVersion

This was causing an issue with the internal build signing our vsix package.

@tmat


Bump score card plugin to 0.6.0

Hey, I just made a Pull Request!
Updated the version of score-card plugin to the latest version.
Now

more generic handling of score values are possible
scoring possible not only for systems, but for APIs etc as well

:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info): not sure, whether I shall add one (?)
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

How come this was closed?

How come this was closed?

It was already merged via PR #15679

Hi Jan,
I would like to use this plug-in to generate the score card to measure my service maturity from CI CD / DevOps covering code, build, test and operational excellence through a system we have built to score on them, also include DORA metrics as a maturity measures. Please advise how to use/customize this score card plugin for the backstage.


storage: improve flush logging

Currently, the log is like:
RowSet  flushed, DV #1(RS10),#2(RS9),#3(RS8),#4(RS7) flushed
6001215 rows deleted

There are two spaces between "RowSet" and "flushed", due to no RowSet gets flushed.
We should hide the "RowSet  flushed" part if nothing gets flushed.

Would like to take a shot at this!


ConvexPolygonShape2D::set_point_cloud is empty

As seen in the current master branch and noted by @Ovnuniarchos in 1155ac8 (btw please open a bug report when you see something like that, it's a bug):
void ConvexPolygonShape2D::set_point_cloud(const Vector<Vector2>& p_points) {

}

void ConvexPolygonShape2D::set_points(const Vector<Vector2>& p_points) {

	points=p_points;
	_update_shape();
}

https://github.com/godotengine/godot/blob/0b05739/scene/resources/convex_polygon_shape_2d.cpp#L40-L44

need to write a convex hull function for that :P


Tab randomly opening when splitscreen

Type: Bug

Open a project.
Open a file on left side and other on right side
While working on one of the sides, the file of the opposite side is opened with no reason on the side I am working on top.

 Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, .gif files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.
If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (Developer: Toggle Screencast Mode in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.
Happy coding!

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Allow easier (port) CLI configuration

allow for easier configuration:

when I want to switch between 2 nodes on the same localhost
I have to go through the config wizard every time, just to change the port number

It would be nice if I could change the Pyrsia CLI port via one command:
e.g.
pyrsia config edit --port 7888

and maybe even do this for every config option.
This way, we can still allow the host to be configured but remove it from the config wizard as specified in #1106

After analyzing the implementation, it seems there is no real need of keeping pyrsia config -a or pyrsia config --add. App getting the config by config::get_config and if there is no config, it creates a config with default values.

Feature is implemented using #1251


WELP

theres no developer branch
`local function GoldConverter(BackpackFrom, BackpackTo, Cap)
-- BackpackFrom Where are your Gold Coins
-- BackpackTo Backpack to move uncomplete stack
-- Cap to use gold converter [this is how it should be used]
local cont = getcontainer(BackpackFrom)
local cont1 = getcontainer(BackpackTo)
local coins = itemcount(3031,BackpackFrom)
if $cap < Cap and coins > 100 and itemcount(23722) > 0 then
for j=1,cont.itemcount do
if cont.item[j].count < 100 and cont.item[j].id == 3031 then
moveitems(3031,BackpackTo,BackpackFrom,cont.item[j].count)
elseif cont.item[j].count == 100 and cont.item[j].id == 3031 then
useitemon(23722, 3031, BackpackFrom)
end
end
end
if itemcount(3031,BackpackTo) > 0 then
moveitems(3031, BackpackFrom, BackpackTo, 100)
end
end
GoldConverter("Jewelled Backpack", "Zaoan Chess Box", 190)`
feel free to update anything

This isn't a bug report, it's a shambles. What exactly is the bug?

First of all I want to thank you for your PR @WeskerPower, but I'll ask some changes so we can extract the maximum functionality out of this.
Hoewever, I don't think it should be integrated with the library because it doesn't have any effect on scripting new code, it's a script wrapped in a function, and we want to avoid that (you can see some functions of my lib have this same behaviour, and that's why they're deprecated now), although I see you've put some effort on it, I'll tell you how we can work this out.
You can write this code again, this time following the Lua style guide, making it soft coded as much as it needs to be, for example what if I wanted to use other criteria other than the capacity? Now it's hard to change it, since you only allowed the capacity to be usable. That should be configurable and easy as possible so any final user could do it by him/herself.

As @leonardofalk pointed out, I don't believe this function fits the kind of work we're developing here. It has very little value when mixed with other code so it would be better suited as a script on the Lua Scripts section.
I'm closing this.


Remove stepping from default features

Objective
Fix #11931
Solution

Make stepping a non-default feature
Adjust documentation and examples

In particular, make the breakout example not show the stepping prompt if compiled without the feature (shows a log message instead)

Changelog

Removed bevy_debug_stepping from default features

Migration Guide
The system-by-system stepping feature is now disabled by default; to use it, enable the bevy_debug_stepping feature explicitly:
[dependencies]
bevy = { version = "0.14", features = ["bevy_debug_stepping"] }

Code using Stepping will still compile with the feature disabled, but will print a runtime error message to the console if the application attempts to enable stepping.

@james7132 to be able to merge, the readme need to be rebuilt. The two additional suggestions should match the template 🤞


⚠ Bofrost.de has degraded performance

In b31dbef, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1543 ms

Resolved: Bofrost.de performance has improved in a9cd498 after 6 minutes.


Ptstats

Added interceptors and unit tests for create, update, and delete
patient operations. These interceptors currently track only population
statistics. In addition to the unit tests I also tested the production
interceptors using a REST client and inspecting my local Postgres
database. Everything checks out!

Also for testing, see the "Postgres Setup Instructions" (postgres/postgres-setup.md) for steps to setup a local Postgres database. Currently these instructions are only for Mac.

@cjduffett: Is this the PR that you said we should ignore?  Should we just close it without merging it in?

This pull request is no longer valid. The correct interceptor code and tests is now in the synth-stats branch.


using 'cmake ..'  don 't find FindoneCCL.cmake

Using 'CMake'
Build xFasterTransformer
git clone https://github.com/intel/xFasterTransformer.git xFasterTransformer
cd xFasterTransformer
git checkout
Please make sure torch is installed when run python example
mkdir build && cd build
cmake ..
make -j
when cmake ..

We encourage you to use Docker to explore the usage of XFT (XFasterTransformer). If you need to compile from source, you can follow the step-by-step instructions provided in our README.md(https://github.com/intel/xFasterTransformer#built-from-source). This error could be due to the absence of the oneCCL dependencies. Please install it and try again.

这是来自QQ邮箱的假期自动回复邮件。

您好，我最近正在休假中，无法亲自回复您的邮件。我将在假期结束后，尽快给您回复。

Did you install the oneCCL and source the environment?
If not, you can install oneCCL from source or install oneAPI.

From source using provided script

cd 3rdparty
sh prepare_oneccl.sh
source ./oneCCL/build/_install/env/setvars.sh

From oneAPI following https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html

oneCCL's dependency has been removed. https://github.com/intel/xFasterTransformer/pull/92


video image distorted when recording local video andsave

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

clone https://github.com/livekit/client-sdk-android/tree/main/sample-app-record-local
Modify file sample-app-record-local/src/main/java/io/livekit/android/sample/record/MainActivity.kt

    room = LiveKit.create(
            appContext = applicationContext,
            options = RoomOptions(
                adaptiveStream = true,
                audioTrackCaptureDefaults = LocalAudioTrackOptions(
                    noiseSuppression = true,
                    echoCancellation = true,
                    autoGainControl = true,
                    highPassFilter = true,
                    typingNoiseDetection = true,
                ),
                videoTrackCaptureDefaults = LocalVideoTrackOptions(
                    deviceId = "",
                    position = CameraPosition.BACK,
                    captureParams = VideoCaptureParameter(1920, 1080, 30)
                ),
                audioTrackPublishDefaults = AudioTrackPublishDefaults(),
                videoTrackPublishDefaults = VideoTrackPublishDefaults(null, false)
            ),
            overrides = LiveKitOverrides(
                javaAudioDeviceModuleCustomizer = { builder ->
                    // Receive audio samples
                    builder.setSamplesReadyCallback { samples ->
                        videoFileRenderer?.onWebRtcAudioRecordSamplesReady(samples)
                    }
                }
            )
        )

build and run
See error

Additional context
The suspicion may be related to my specified resolution captureParams = VideoCaptureParameter(1920, 1080, 30)

Hello, may I ask if you were able to record successfully? After recording, I found that the videos were all black with no screen and only sound.


Add possibility to use community templates with create-turbo

Which project is this feature idea for?
Turborepo
Describe the feature you'd like to request
Currently, create-turbo creates a useful default setup with nextjs and docs as apps, and a shared ui package as example for using shared codes in apps.
I'd love to be able to reference different templates with create-turbo, similar to https://remix.run/docs/en/v1/pages/stacks.
It would be an awesome opportunity to involve the community and make getting started with turborepo even simpler.
Describe the solution you'd like
pnpx create-turbo --template {git-url|local-path}

I'm not too familiar with the interals of create-turbo, so I'm not sure what technical details would need to be considered for being able to use templates from the community instead of core templates (https://github.com/vercel/turbo/tree/main/packages/create-turbo/templates)
Describe alternatives you've considered
honestly: none so far

Took a little bit, but this finally landed! It's available now in canary, and we would love any feedback:
npx create-turbo@canary -e {git repo | or example}

awesome! thanks @tknickman !


Unexpected ambiguous call.

In code like this:
uniform uint gData;

uint getData()
{
    return gData;
}

struct DataObtainer
{
    uint data;
    uint getData()
    {
        return data;
    }

    uint getValue()
    {
        return getData(); /// This is ambiguous call
    }
}

[numthreads(16, 1, 1)]
void testGetData(uint3 threadID: SV_DispatchThreadID)
{
    DataObtainer obtainer;
    output[0] = getData();
    output[1] = obtainer.getData();
    output[2] = obtainer.getValue();
}

The call to getData() inside getValue() is reported as an ambiguous call. This is incosistent with C/C++, where the compiler will automatically prefer the member function getData(), without needing to explicitly specify this.getData() or ::getData().

I don't know if this is intentional behavior, but the solution should be simple. Overload resolution would just need to prefer functions with equal parents.

Yes this is just an oversight and we should fix it.


document bpf macros

The BPF macro's used to convince clang to generate correct code are not at all obvious. Please add comments to the source code so that others can read them.

@jrfastab Do you have links to specific macros that need further documenting?
The main one that came to mind for me was revalidate_data(), which explains what it does but not the rationale:
https://github.com/cilium/cilium/blob/e7e3e72a7db645a0cbc6733429945aaf93d70e34/bpf/lib/common.h#L87-L90


Rejoining streams tracks what last byte received is racy

When users rejoin streams after a disconnect the query can respond with the wrong number of bytes received. This is very rare and the backend rejects the clients from sending the data due to other checks, so there's no poisoning happening, however it sometimes causes clients to fall over.

Users might see a message like this: message: "Received out of order data. Got 1 7793024, expected 17825792 : In ByteStreamServer::write()"

Pretty sure I fixed this in #635


change font size in Files

What's the Problem?
I would like to reduce the font size but cannot find any settings to do so.
Solution/Idea
font size settings
Alternatives
custom themes
Priorities

Capability
Priority

This proposal will allow developers to accomplish W
Must

This proposal will allow end users to accomplish X
Should

This proposal will allow developers to accomplish Y
Could

This proposal will allow end users to accomplish Z
Won't

Files Version
No response
Windows Version
No response
Comments
No response

Preview version has a compact size option that reduces font size.

ok, thats a start, but can I set the font size somewhere like in custom themes? Unfortunately I havent found any attribute that I can use other than

@yaichenbaum is a custom font size option on the plan? Is it possible to change font size by custom theme?

Custom font sizes are already supported via custom themes https://files.community/docs/configuring/custom-themes.


prisma find RangeError: Maximum call stack size exceeded

Bug description
use clint api findMany or findUnique
ERROR [ExceptionsHandler] Maximum call stack size exceeded
RangeError: Maximum call stack size exceeded
at /Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48499:30
at Array.reduce ()
at selectionToFields (/Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48467:36)
at /Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48617:55
at Array.reduce ()
at selectionToFields (/Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48467:36)
at /Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48617:55
at Array.reduce ()
at selectionToFields (/Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48467:36)
at /Users/min/project/galaxy-system/node_modules/@prisma/client/runtime/index.js:48617:55
How to reproduce

Expected behavior
No response
Prisma information

Environment & setup

OS: Mac OS
Database: mongodb
Node.js v16.15.0

Prisma Version
prisma                  : 4.0.0
@prisma/client          : 4.0.0
Current platform        : darwin-arm64

in schema
type UsersRouterAuth {
auth     Boolean
children UsersRouterAuth[]
path     String
type     String
}


Add support for smallIcon property in Action and use it in MenuItem constructors

javax.swing.Action (http://docs.oracle.com/javase/7/docs/api/javax/swing/Action.html ) uses two keys to set the icon property of the components that are constructed with Action instances.  The two are LARGE_ICON_KEY and SMALL_ICON.  The LARGE_ICON_KEY is used to set the icon property of most Swing components that are AbstractButtons except for MenuItems.  The SMALL_ICON property applies when the Action is used to construct MenuItems.
scala.swing.Action should have defs for smallIcon.  The MenuItem constructor that takes an Action argument should assign MenuItem icon with the value from Action.smallIcon.
The existing icon defs in scala.swing.Action can remain unchanged.

var smallIcon has been introduced already a while ago. Closing.


Set version 4.2.0

Coverage remained the same at 88.578% when pulling 6127165e7802666b71e74ed0891eb58a93a05645 on bump-version into 6f2064f79004ceeff85101be616291f95b557e40 on master.


Include collector options in result object

Closes https://github.com/jhawthorn/vernier/issues/30

Thanks!


cloud tasks interface?

My team (I work on Chrome Operations, FWIW) has some new code that uses cloud.google.com/go/cloudtasks/apiv2
We'd like to write tests for it. Do you have a plan/priority to make a similar package for Cloud Tasks, e.g. cloudtasks/ctinterface/... ?

We do not. I would suggest either creating your own interface for the methods you need or keep using a the concrete client and use a fake in the test.


ARXIVNG-904 RemoveSubmission event "deletes" a submission

We already had a RemoveSubmission command, but it didn't do much. This change makes sure that the submission is marked as deleted by user in the database when the RemoveSubmission command is used. The command will only be valid for submissions that are not already removed, and that are not scheduled/published.
I also consolidated some redundant stuff on the Submission domain class: we were using both the status field as well as boolean fields (active, published, etc) that conveyed redundant information. It's kind of nice to have the latter as predicates, so I went ahead and changed them to read-only properties so that we can continue to use them but don't end up in weird states accidentally.

Coverage remained the same at ?% when pulling 270f1bd000b40f2a019f0a2f57192d5d0d56950b on feature/ARXIVNG-904 into ae445af1c08db0b716adfb65a44564a765ede257 on develop.


Grease data included in file header

Environment

OS: Linux
rage version: 0.9.2

What were you trying to do
Creating a plugin
What happened
After successfull test encryption via the plugin, the file header (in the encrypted file) not only included the keys wrapped with my plugin, but also some random grease data. I am not sure if I understand the spec here correctly. Is this intended to happen? I don't see why adding that to the header would bring any benefit. It seems to increase the file size unnecessarily.
-> my-plugin [...]
[...]
-> my-plugin [...]
[...]
-> @r9C{x-grease k#qL>i 2bU A;2E1 c~K8{S
2xeT0hKe3O8p8r+KvoMTHGxtT/TU6rYiJf6zaAdeLworBC/H7GYVWgwKjGBGKWSx
1DNhTkIih+iQQ3uctoAmIVqPBSQFEo8crEtJeiC9pOEE6G05x6vyYXW0CBqBetw4

--- [...]

[...]

Yes this is intentional. rage adds it randomly with low probability, with the intention of ensuring that age's one joint remains functional (that is, ensuring that age file parsers always handle stanza parsing correctly, instead of taking shortcuts based on the "expected" stanzas). See also my comments in https://github.com/str4d/rage/pull/365#issuecomment-1412169307.
The spec you referenced is the age-plugin protocol, which is separately greased. It shares the stanza format, but is otherwise independent (grease in that protocol doesn't become part of a file, and vice versa).


Protect getSettings from picking up empty assignments

There are cases where (for whatever reason) PrusaSlicer emits a variable definition at the end with an empty value. For example, in my case it was emitting:
; printer_model =
This line, when processed via getSettings(), results in "", true. Notice the true at the end. It thinks this is a legitimate value when in reality it's just empty.
The problem is that when one tries to "overwrite" this in PrusaSlicer, you can only put custom G-code before the variables dump at the end.
; printer_model = J1  <--- this is emitted by my custom "End g-code"
.... lots of lines of g-code...
; printer_model =      <---- this is emitted by PrusaSlicer

Therefore, no matter what you do, as long as getSettings() returns a true, the value that we emit gets overwritten by an empty string, and in my case it results in a "invalid G-code"

Thanks bro.


feat: add initial status page implementation

@alili
could you please take a look when you have time?
I will be very grateful for help with styling

Sorry, I'm late
I have been working on the cloud version recently, so I wanted to do this page a little later.
Thanks for your work, I'm going to move up the development schedule for this page, and make it looks better🐶

That looks awesome @alili !!!!
Thank you very much!


Web Version Renders White Outline On Transparent Surfaces Of Elements

This is a transparent row element containing two text elements. The transparent row appears to have a white outline rendered on the bottom side. This is not the case in the desktop version.
// Code that should reproduce the issue
row = instance_create_depth(0, 0, depth, obj_gm_ui_row);
row.set_margin(5);
row.set_padding(0);
textbox_in_row1 = instance_create_depth(0, 0, depth, obj_gm_ui_textbox);
textbox_in_row1.margin_right = 10;
textbox_in_row1.text_content = "1st Row Element";
textbox_in_row2 = instance_create_depth(0, 0, depth, obj_gm_ui_textbox);
textbox_in_row2.text_content = "2nd Row Element";
row.add_childs([textbox_in_row1, textbox_in_row2]);

Image Of Web Version Of Current Demo

Has been fixed in<PHONE_NUMBER>5aea9f1410c9f885441ebadf783e0e
https://github.com/greenpixels/game-maker-ui-library/commit/23645815175aea9f1410c9f885441ebadf783e0e


Allow multiple VCLs to be created

Declaring more than one varnish::vcl will cause a duplicate resource error due to Exec[vcl_reload] being declared from within the varnish::vcl definition. This patch moves Exec[vcl_reload] into the varnish::service class.

How embarrassing!  Thanks for fixing.


feature: support running under windows service

Would you be open to a PR that under windows on load
a. detects if running as a windows service
b. if so, uses the windows service start, stop callbacks that enable running under windows services.
Could use either:
https://godoc.org/golang.org/x/sys/windows/svc
or https://godoc.org/github.com/kardianos/service

The idea sounds interesting. Could you please explain a little bit more how do you propose to register the service. From what I understood a) and b) rely on an already installed service to detect and manage it.

The final goal of this would be to enable running caddy directly as a windows service which requires some callbacks and a control loop. Secondary items to address are making it easy to install and auto-sense when it is being run as a service or in cmd.
The kardianos/service package wraps the x/sys/windows/svc package on windows and exposes a uniform API for all platforms. A decision on if this change should be windows specific or not would need to be made.
An example of the service in action may be found here: https://github.com/kardianos/service/blob/master/example/logging/main.go
The following code is an excerpt from the above link and contains the code that installs, starts, stops, restarts, and removes the services:
	if len(*svcFlag) != 0 {
		err := service.Control(s, *svcFlag)
		if err != nil {
			log.Printf("Valid actions: %q\n", service.ControlAction)
			log.Fatal(err)
		}
		return
	}
	err = s.Run()

If there isn't a control flag, then it simply runs the service. The Run() method does a detection if it is running under a service manager or not which determines how it runs the executable (on windows, if it should use the service callbacks or now).
Even if you don't include or use the code to control the service, windows ships with a command called "sc" users could use to install, start, stop remove services, though most windows users who aren't sysadmins know of it.
You may wish to integrate a control flag to enforce the user to provide a Caddyfile location as the CWD is not settable for windows services.
The delta for this pull request that used the kardianos/service package would be:

Add a flag called something like "-instance-name", optional to identify different caddy service instances. (this flag could be omitted).
Add a flag called something like "-service", used to install, start, restart, stop, uninstall services.
In the main, probably replace app.Wg.Wait() with serviceInstance.Run() (still wait in a separate goroutine and signal stop when done). Care would need to be taken to not  get in the way of something like graceful restarts or similar, if that is a goal.
In the main func, define the service. The service name could be "Caddy{{if instance name}}${{.InstanceName}}{{end}}". And populate the arguments for the Caddyfile location when installing the service.

I do like the idea of "caddy as a service" -- but hold out on any implementation details, since the letsencrypt branch is going to land in master soon, which completely refactors the entire core -- making it very easy to start, stop, and restart the listeners, making it very service-friendly.
So I like where this is going. Keep an eye on master to see when letsencrypt gets merged into it. After the next release, would be a good time to start working on this.

@mholt Sounds good.

@kardianos The merge is completed, and I don't anticipate any huge changes for the next little while, if you wanted to start looking into the service feature.

@mholt Would you prefer this in the form of windows only support that enables manually installing and running as a web service, or would you like to see two additional flags that allow cross platform installing and controlling as a service?

I just saw your repo at https://github.com/kardianos/minwinsvc - I haven't given it a once-over yet and I still need to figure out the answers to your questions. :smile: But we'll get around to it!

In the mean time,
if anyone is looking how to get Caddy setup as windows service. I recommend NSSM. It wraps CLI applications and manages their execution.

Hey @kardianos and others in this issue - thanks for your comments! There is a lot of good stuff here, so I have linked to this issue from a thread in our community forum where we are aggregating ideas/requests for Caddy plugins. It's quite possible, with Caddy 0.9, that maybe this kind of feature could be implemented as a plugin. I remember your pull request #588, kardianos, and it's totally possible, I think, to make it a plugin.
If you want to continue discussing this, feel free to start a new topic on the forum or re-open the issue. :+1:

yes, you could add a plugin that does one thing, import https://github.com/kardianos/minwinsvc and that's all. On non-windows compiles it would do nothing. On windows compiles it would allow registering as a windows service.
Or if you want you could import minwinsvc directly. It would do nothing for non-windows boxes, yet make it an option to run caddy as a windows service directly in windows. Either would work.
Neither would make a UI within caddy for easily setting up the service. Which is fine.

What would a plugin look like here? It would call RegisterPlugin() of course, but how would it get access to the *Instance to call ShutdownCallbacks() and Stop()?
I don't see where plugins have access to initiate a shutdown (as opposed to just reacting to a shutdown).

Registering/unregistering the service should only be triggered once, hence through a command line argument rather than a Caddyfile directive. Can plugins acces the args and prevent the server from starting if caddy is only used as a cli to register/unregister the service?

@Echsecutor this issue is limited in scope to enabling a compiled caddy.exe to be used as a service, and explicitly not about the process of registering it as a service. To do that you would use an external program, for example, sc create among others.

Plugins can register their own command line flags, yes.

@mholt So how would a plugin that decided that caddy should shutdown communicate that up to caddy? E.g. how would it call executeShutdownCallbacks()? Windows service messages are basically a different kind of signal and handling them should hook into the standard shutdown system.

Still working on those details...

@mholt any progress here on the plugin api?

@infogulch Yes, @hacdias will have some news regarding this on April 20, or after he gets back from his trip.

Awesome. Eagerly awaiting the live event! I'll certainly try to join via livestream. :)

FWIW, @hacdias helped work on this plugin which is now available: https://caddyserver.com/docs/hook.service


Please add 2 more rows!

Is your feature request related to a problem? Please describe.
The quantum wordle is a ton of fun, my friend and I complete it every day, but it consistently feels like we need just 2 more rows to really logic it out.
Describe the solution you'd like
Add 2 more attempt rows
Additional context
Quantum wordle might be better than actual wordle. Thank you for making an awesome application

Thank you for the feedback. In the coming days, I will add a prompt at the end of the 6 turns (or maybe 8) if the player wants to keep guessing.


Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://<IP_ADDRESS>:62359/3XFQsmwBQTY=/ws

Steps to Reproduce
This error is happening for me on Windows 10, with my emulation with Android Studio when I run my project. The app builds and starts running, but then loses the connection between the console and the phone, so I can't do hot reloads.
Logs
Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling
software rendering with "--enable-software-rendering".
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...                                              0.7s
Resolving dependencies...                                           2.2s
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                         3.8s
Built build\app\outputs\apk\debug\app-debug.apk.
Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri =
http://<IP_ADDRESS>:62359/3XFQsmwBQTY=/ws

Flutter Doctor
'''
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.7.8+hotfix.3, on Microsoft Windows [Version 10.0.14393], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
[√] Android Studio (version 3.4)
[√] VS Code (version 1.36.1)
[√] Connected device (1 available)
• No issues found!
'''
I've been through several similar threads but haven't found a solution. Would appreciate any support.

Do you use the default emulator that comes with android studio?
If yes, i had the same issue and installed a new emulator that solved the problem

I installed the newest OS on the Nexus 5 I think, is that what you mean? @Lucas0Braz

No, try to create a new emulator in android virtual devices

@Lucas0Braz that's what i did before. I'm doing it again now as per your advice, but I had to create my own emulator Nexus 5x previously as well.

Are you using a Q/API29 emulator? If so, and downgrading to P/28 resolves the issue, then this is likely a dupe of #33050.


Microsoft Stream retention period for Teams meeting records

Under Prerequisites for Teams cloud meeting recording it notes:

1 As of August 20, 2020, access to the meeting recording file will expire after 21 days for users with A1

I read the 21 day period as only applying to users who start a recording who are licensed with A1.
Later in the article Where your meeting recordings are stored it states:

Meeting recordings are stored in Microsoft Stream cloud storage. Recordings are retained and available for viewing and download for 21 days

So the 21 day period is not specific to A1 licensed and users and is for anyone who meets the pre-requisites?
There is no mention of the 21 day retention period in the Teams meeting recording end user documentation.
It is unclear how long a Teams meeting recording is being kept for in Microsoft Stream and whether users need to act to retain them.

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

ID: 976b8a9b-5a3e-1f3b-b848-d1dfbfd3389d
Version Independent ID: 2b13a471-3baf-0086-439a-f94abb162fd6
Content: Teams cloud meeting recording - Microsoft Teams
Content Source: Teams/cloud-recording.md
Service: msteams
GitHub Login: @tonysmit
Microsoft Alias: tonysmit

@mheptinstall Thank you for submitting feedback and contributing to the docs. We are currently investigating this.


Fix URL in readme

The URL for the Mattermost Documentation goes to https://docs.mattermost.com/configure/enable-ai-copilot.html but that just redirects to docs itself. I guess it is https://docs.mattermost.com/configure/enable-copilot.html

Thank you @JtheBAB!


links show for emojis

for example "https://cdn.discordapp.com/emojis/810228878428864589.png?v=1&size=40" and the the emoji shows under it

soonTM, i'll make the link render the emoji


Collaborate on changes?

Hi ulion,
Thanks for maintaining this library, it's been a great help. I've been working with jsonform but keep running into problems with the original library.
I'd like to make some changes to add some features and fix some issues but some of them are breaking changes. Instead of creating a whole new fork to compete with yours, would you be interested in  collaborating on these changes?
The main areas I want to improve are:

Create standard array functions - make a set of standard functions that can be used to work with arrays

Remove duplicated code in 'array' and 'tabarray'
Make it easier for everyone else to create their own array views

Add extra view callbacks (e.g. view.onAfterRender())

Let parent views manipulate/interact with the child template after it's been generated (no easy eay to do this at the moment).

Bring tests up to date

Split up source files

Working with a ~4500 line file gets really frustrating.

Would you be interested in discussing these items or accepting pull requests in these areas?
Thanks,
-Coridyn

Hi, Coridyn, glad you can work on jsonform, I did some fix and little
enhancement on the original fork, and now maintain my dev fork, add feature
I will using, fix bug if I can.
so, I will help you, and as long as the code is relative stable and works,
I can merge your changes.
2015-03-29 16:01 GMT+08:00 Coridyn<EMAIL_ADDRESS>
Hi ulion,
Thanks for maintaining this library, it's been a great help. I've been
working with jsonform but keep running into problems with the original
library.
I'd like to make some changes to add some features and fix some issues but
some of them are breaking changes. Instead of creating a whole new fork to
compete with yours, would you be interested in collaborating on these
changes?
The main areas I want to improve are:

Create standard array functions - make a set of standard functions
that can be used to work with arrays
- Remove duplicated code in 'array' and 'tabarray'
- Make it easier for everyone else to create their own array views
2.
Add extra view callbacks (e.g. view.onAfterRender())
- Let parent views manipulate/interact with the child template after
it's been generated (no easy eay to do this at the moment).
3.
Bring tests up to date
4.
Split up source files
- Working with a ~4500 line file gets really frustrating.
Would you be interested in discussing these items or accepting pull
requests in these areas?
Thanks,
-Coridyn
—
Reply to this email directly or view it on GitHub
https://github.com/ulion/jsonform/issues/8.

--
Ulion

Thanks, I'll start making changes on my fork and send through pull requests as I finish things.


Deepcast - Translation error

Extension
https://www.raycast.com/mooxl/deepcast
Description
Translation error, regardless of the language, only for the "Translation" command.
Steps To Reproduce
Extension
https://www.raycast.com/mooxl/deepcast
Description
Translation error, regardless of the language, only for the "Translation" command.
Image
Steps To Reproduce
Translate anything use "Deepcast > Translate".
Current Behaviour
No response
Expected Behaviour
No response

Should be fixed with #8807

Thank you, how soon will the fix be published?

Probably in the next few weeks. I have to wait for a response from the other developers.

That PR was merged.
@raycastbot close this issue


DOC: Note that a pull request has to be explicitly opened

Note that the pull request has to be explicitly opened, which may not be obvious.
Remove the note about data -- we simplified the data upload process, and there is nothing to be concerned about when pushing anymore.

if using hub
My workflow for any project, assuming alias git = hub
git clone http.... // <- upstream remote is origin
git fork // <- remote is phcerdan. fork is created in my github account (user name and token previously created)
edit readme.md
git add -A
git commit -m 'Init commit`
git push phcerdan <- push it to my fork
git pull-request <- this will create a pull-request with github directly for me in origin!

Note that these are using the default expected names by hub, you can create PR against other remote names.

Thanks @thewtex, I was going to suggest exactly this change.

Note that these are using the default expected names by hub,

@phcerdan PR's would be welcome that update the default remote names to origin and ${githubUsername} from upstream and origin if this is possible in the setup scripts and documentation.


Create initial HTML file to display webpage

[ ] Mike
[x] Steven
[ ] Sam
[ ] Naishal
[ ] Luke
[ ] Alex

completed by Steven


Added The image and updated site file

Updated timezone, Updated Image

Hi  @danielseita
I've created a pull request for review. Here's a summary of the changes:
Timezone Configuration: Updated the timezone settings in _config.yml.
Gemfile Updates: Added necessary requirements to the Gemfile:
gem 'tzinfo', '~> 2.0'
gem 'tzinfo-data'
Member Profile: Added a new photo to the images directory and made corresponding updates to the members file.
Please review the changes and let me know if any modifications are required or if there are any other feedback points.

@Vishesh-Mittal please preview the website before testing, your photo is a .jpg but you wrote down a .png. I will fix this.

Fixed in #3


add MoneyInput component

closes #736
Context
Chatted with Nat on RX Workflow and decided that it would be helpful to bring in a MoneyInput component which aligns with their current efforts relating to incentive editing (as well as improving the overall validation experience for existing currency inputs)
Reviewer Expectations
Primary Reviewer: Gabe
Secondary Reviewer(s): Dom, Stephen, Nat
Testing
You can view a live build in Chromatic here: https://62d040e741710e4f085e0647-ppfritpjca.chromatic.com/?path=/docs/components-moneyinput--docs
One example test from RS in app/javascript/researcher/project_workspace/details/compensation_fields/index.jsx
Before:
https://github.com/user-interviews/ui-design-system/assets/37383785/8310a0e9-af02-4e05-9a6a-f185522f14ab
After:
https://github.com/user-interviews/ui-design-system/assets/37383785/c34426af-5bf9-49a5-8e51-3ed8f9ae1a9e

The dollar sign finally aligns with the numbers 😂


Adding 'website' configuration to GCS bucket causes panic

GCP project currently hosts 3 buckets set with FQDNs and the 'allUsers' permission making them public.  Request from software team that 404 responses are routed to 'index.html'.
Implement the following change in my Pulumi code (website section added to bucket creation):
const bucket = new gcp.storage.Bucket(bucketName, {
            name: bucketName,
            project,
            cors: corsPolicy,
            websites: [
                {
                    notFoundPage,
                    mainPageSuffix
                }
            ]
        });

Pulumi preview shows the addition of the websites.  pulumi up -y however results in the below:
Diagnostics:
  gcp:storage:Bucket (caseypayments.mindbody.io):
    error: Plan apply failed: all SubConns are in TransientFailure, latest connection error: <nil>

  gcp:compute:ProjectMetadata (default-metadata):
    error: Plan apply failed: transport is closing

  gcp:dns:RecordSet (origin-signin.casey.arcusplatform.io.):
    error: all SubConns are in TransientFailure, latest connection error: <nil>

  gcp:storage:Bucket (signin.casey.arcusplatform.io):
    error: Plan apply failed: transport is closing

  pulumi:pulumi:Stack (viserion-casey-robertson):
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x24ee67f]
    goroutine 153 [running]:
    github.com/pulumi/pulumi-gcp/vendor/github.com/terraform-providers/terraform-provider-google-beta/google-beta.resourceStorageBucketUpdate(0xc000157960, 0x2a7a6c0, 0xc000284820, 0x24, 0x4555700)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/terraform-providers/terraform-provider-google-beta/google-beta/resource_storage_bucket.go:395 +0xfff
    github.com/pulumi/pulumi-gcp/vendor/github.com/hashicorp/terraform/helper/schema.(*Resource).Apply(0xc000444800, 0xc000a4d450, 0xc0006dcd20, 0x2a7a6c0, 0xc000284820, 0x1, 0xc00084d688, 0xc00084d6a0)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/hashicorp/terraform/helper/schema/resource.go:292 +0x264
    github.com/pulumi/pulumi-gcp/vendor/github.com/hashicorp/terraform/helper/schema.(*Provider).Apply(0xc000445300, 0xc00084d868, 0xc000a4d450, 0xc0006dcd20, 0x0, 0x0, 0x0)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/hashicorp/terraform/helper/schema/provider.go:285 +0x18f
    github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi-terraform/pkg/tfbridge.(*Provider).Update(0xc0002e2b40, 0x320b5a0, 0xc0006b4e70, 0xc000a4d400, 0xc0002e2b40, 0x2a69c01, 0xc000612200)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi-terraform/pkg/tfbridge/provider.go:721 +0x70c
    github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi/sdk/proto/go._ResourceProvider_Update_Handler.func1(0x320b5a0, 0xc0006b4e70, 0x2d2b660, 0xc000a4d400, 0x2d6aa60, 0x4553fa0, 0x320b5a0, 0xc0006b4e70)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi/sdk/proto/go/provider.pb.go:1367 +0x86
    github.com/pulumi/pulumi-gcp/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1(0x320b5a0, 0xc0006b4300, 0x2d2b660, 0xc000a4d400, 0xc000793e60, 0xc000793e80, 0x0, 0x0, 0x31c2e60, 0xc00025be20)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc/server.go:61 +0x360
    github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi/sdk/proto/go._ResourceProvider_Update_Handler(0x2db54e0, 0xc0002e2b40, 0x320b5a0, 0xc0006b4300, 0xc000a4d3b0, 0xc0002c0c00, 0x320b5a0, 0xc0006b4300, 0xc000a53200, 0x45d)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/github.com/pulumi/pulumi/sdk/proto/go/provider.pb.go:1369 +0x158
    github.com/pulumi/pulumi-gcp/vendor/google.golang.org/grpc.(*Server).processUnaryRPC(0xc000001800, 0x321bce0, 0xc0004ba900, 0xc0001fc200, 0xc00033b110, 0x4526d40, 0x0, 0x0, 0x0)
        /home/travis/gopath/src/github.com/pulumi/pulumi-gcp/vendor/google.golang.org/grpc/server.go:971 +0x470

Deleting and recreating the bucket and/or writing a simple bucket-only stack from scratch does not exhibit this issue.

Just to check, what are the values of notFoundPage and mainPageSuffix in this example?
Looking at the source for the upstream terraform provider, it seems like there is an issue there (it's not actually clear to me how a change to "website" could ever actually work, since they seem to have an error where they do not initialize a field of a structure they are populating.

See https://github.com/terraform-providers/terraform-provider-google-beta/pull/706 which is a proposed fix for this issue in the upstream Google Beta Terraform Provider.

Going to close this out - the upstream PR has been merged and released :)

Which pulumi provider will this make it into?

@casey-robertson I believe if you update to the latest release then this should not be an issue anymore - can you try it and see?

Panic is gone.  However, once set, removing the config or setting to '' doesn't change anything in the GCP console.  Pulumi sees the change and it shows in the preview, but nothing gets set/updated.

Here's the config block I pass to the bucket code:
 websites: [
                {
                    mainPageSuffix: 'index.html',
                    notFoundPage: 'index.html'
                }
            ]

Run pulumi preview - no changes as expected.
Previewing update (MINDBODY-Platform/casey-robertson):

     Type                             Name                      Plan     Info
     pulumi:pulumi:Stack              viserion-casey-robertson
 >   ├─ pulumi:pulumi:StackReference  identityStack             read
     ├─ gcp:container:Cluster         local-dev                          1 warning
     ├─ gcp:container:NodePool        k8s-node-pool-private              1 warning
     └─ gcp:container:NodePool        k8s-node-pool-monitoring           1 warning

Diagnostics:
  gcp:container:NodePool (k8s-node-pool-private):
    warning: urn:pulumi:casey-robertson::viserion::gcp:container/nodePool:NodePool::k8s-node-pool-private verification warning: "region": [DEPRECATED] use location instead

  gcp:container:Cluster (local-dev):
    warning: urn:pulumi:casey-robertson::viserion::gcp:container/cluster:Cluster::local-dev verification warning: "region": [DEPRECATED] Use location instead

  gcp:container:NodePool (k8s-node-pool-monitoring):
    warning: urn:pulumi:casey-robertson::viserion::gcp:container/nodePool:NodePool::k8s-node-pool-monitoring verification warning: "region": [DEPRECATED] use location instead

Resources:
    31 unchanged

Remove the config block and run pulumi preview --diff
Previewing update (MINDBODY-Platform/casey-robertson):
  pulumi:pulumi:Stack: (same)
    [urn=urn:pulumi:casey-robertson::viserion::pulumi:pulumi:Stack::viserion-casey-robertson]
    > pulumi:pulumi:StackReference: (read)
        [id=MINDBODY-Platform/rhaegar/casey-robertson]
        [urn=urn:pulumi:casey-robertson::viserion::pulumi:pulumi:StackReference::identityStack]
        name: "MINDBODY-Platform/rhaegar/casey-robertson"
    ~ gcp:storage/bucket:Bucket: (update)
        [id=payments.casey.arcusplatform.io]
        [urn=urn:pulumi:casey-robertson::viserion::gcp:storage/bucket:Bucket::payments.casey.arcusplatform.io]
      - websites: [
      -     [0]: {
              - mainPageSuffix: "index.html"
              - notFoundPage  : "index.html"
            }
        ]

Run pulumi up and check the GCP console.... index.html is still there for both configs.

@stack72  ^^

Reopening since it seems there is still perhaps some issue here?

Hi @casey-robertson
I will investigate this tomorrow
Paul

Hi @stack72 - any updates?

Hi @casey-robertson
Can you help me try and figure out this error by giving me a config I can run and recreate it? I know you have posted something above but what do corsPolicy, notFoundPage and mainPageSuffix evaluate to be? I want to try and recreate exactly what the problem you are facing is still
I have a feeling what the problem is but I want to be sure of it before we can try and work out a fix
Thanks in advance
Paul

@casey-robertson ping :)

Ok I'll write a minimal program to recreate this.

index.ts
import * as gcp from '@pulumi/gcp';

// Create a GCP resource (Storage Bucket)
export const bucket = new gcp.storage.Bucket('testBucket', {
  name: 'mytestbucketforjson',
  project: 'mindbody-casey-robertson'
});

new gcp.storage.BucketIAMMember(
  'my-bucket-iam',
  {
    bucket: bucket.name,
    member: 'allUsers',
    role: 'roles/storage.objectViewer'
  },
  {
    // Track Pulumi component by attaching to parent.
    // https://pulumi.io/reference/programming-model.html#components
    parent: bucket
  }
);

// Export the DNS name of the bucket
export const bucketName = bucket.url;

this creates a public bucket ^
Now add website values:
export const bucket = new gcp.storage.Bucket('testBucket', {
  name: 'mytestbucketforjson',
  project: 'mindbody-casey-robertson',
  websites: [
    {
      notFoundPage: '404.html',
      mainPageSuffix: 'index.html'
    }
  ]
});

Pulumi CLI sees that change in the diff and creates the settings:
Outputs:
  ~ bucket    : {
        forceDestroy  : false
        id            : "mytestbucketforjson"
        location      : "US"
        name          : "mytestbucketforjson"
        project       : "mindbody-casey-robertson"
        requesterPays : false
        selfLink      : "https://www.googleapis.com/storage/v1/b/mytestbucketforjson"
        storageClass  : "STANDARD"
        url           : "gs://mytestbucketforjson"
        urn           : "urn:pulumi:dev::bucket-test::gcp:storage/bucket:Bucket::testBucket"
      + websites      : [
      +     [0]: {
              + mainPageSuffix: "index.html"
              + notFoundPage  : "404.html"
            }
        ]
    }
    bucketName: "gs://mytestbucketforjson"

Resources:
    ~ 1 updated
    2 unchanged

Duration: 2s

Reflected in gsutil:
 gsutil web get gs://mytestbucketforjson
{"mainPageSuffix": "index.html", "notFoundPage": "404.html"}

Now remove those settings.  I tried it two ways, change the values to ' ' and then 2nd, delete the entire code block so it's back to original.
Previewing update (dev):

     Type                   Name             Plan       Info
     pulumi:pulumi:Stack    bucket-test-dev
 ~   └─ gcp:storage:Bucket  testBucket       update     [diff: -websites]

Resources:
    ~ 1 to update
    2 unchanged

Updating (dev):

     Type                   Name             Status      Info
     pulumi:pulumi:Stack    bucket-test-dev
 ~   └─ gcp:storage:Bucket  testBucket       updated     [diff: -websites]

Outputs:
  ~ bucket    : {
        forceDestroy  : false
        id            : "mytestbucketforjson"
        location      : "US"
        name          : "mytestbucketforjson"
        project       : "mindbody-casey-robertson"
        requesterPays : false
        selfLink      : "https://www.googleapis.com/storage/v1/b/mytestbucketforjson"
        storageClass  : "STANDARD"
        url           : "gs://mytestbucketforjson"
        urn           : "urn:pulumi:dev::bucket-test::gcp:storage/bucket:Bucket::testBucket"
      ~ websites      : [
          - [0]: {
                }
        ]
    }
    bucketName: "gs://mytestbucketforjson"

Resources:
    ~ 1 updated
    2 unchanged

Duration: 2s

Query with gsutil again:
 gsutil web get gs://mytestbucketforjson
{"mainPageSuffix": "index.html", "notFoundPage": "404.html"}

Setting has not changed per Google's CLI tool.

Didn't add a corsPolicy to keep the test simpler.

Thanks @casey-robertson - I will try and recreate it and work out what is happening

Checking in - thanks!

Ping

Hi @casey-robertson
I tried to ping you on the community slack about this with a potential suggestion that this has been fixed - thoughts?
P.

Left on vacation the day you posted this.  Will check now.
On Fri, Jul 19, 2019 at 11:55 AM Paul Stack<EMAIL_ADDRESS>wrote:

Hi @casey-robertson https://github.com/casey-robertson
I tried to ping you on the community slack about this with a potential
suggestion that this has been fixed - thoughts?
P.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/pulumi/pulumi-gcp/issues/146?email_source=notifications&email_token=ADDLGHKH4NDCYKQ4MNA2AVTQAIEZ7A5CNFSM4HM6NJG2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2MO6XQ#issuecomment-513339230,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADDLGHMOEUTL6DXSBY7BJITQAIEZ7ANCNFSM4HM6NJGQ
.

Hi @casey-robertson
Ping on this
Paul

Hi @casey-robertson
I am going to close this out - if you still have the issue, then please let me know and we can look through it again
Paul

Finally reconnected with Paul - still investigating.


Maria: separation-of-concerns, 3 weeks

Learning Objectives

Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)

There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:

🥚: Understanding this material is required, it covers the base skills you'll
need to move on. You do not need to finish all of them but should feel
comfortable that you could with enough time.
🐣: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
🐥: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
🐔: These concepts or skills are not necessary but are related to this module.
If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
yourself without getting distracted from the module's main objectives.

[ ] 🥚 event-driven programming: identify the concept in a JS program via listeners & handlers
[ ]🥚 entry points: describe what an entry point is, there are 2 kinds in the programs for this module - initialization & interaction. identify them in a program
🥚 function roles: describe what function roles are and why they're important. they can identify a function's role given checklists for each role covered in this module:

[ ] listeners: functions that attach event listeners to the DOM
[ ] 🥚 handlers: entry point for user interactions
[ ] 🥚 utils (utilities): pure functions to help do things with data
[ ] 🐣 components: render data into DOM elements to display for the user
[ ] 🐥 custom events: create custom events events in your components, passing useful data between components and handlers

[ ] 🥚 DOM access: You read and write values from the DOM in an event handler
[ ] 🥚 es5 vs. es6: You can demonstrate the change in developer-experience pre and post es6 by stepping through in the debugger and explaining differences in scoping (global vs. script, block vs. local, modules) between two programs with identical user experience but different implementations.
[ ] 🥚 Scope Hierarchy: You is comfortable navigating different scopes in the browser's debugger to understand an existing application (script, module, closure, local, block)
[ ] 🥚 Code Splitting: You can use ES Modules to split your code into multiple files & folders according to function role, data, listeners and initialization. They can use generated dependency diagrams and documentation to understand and navigate this folder structure.
[ ] 🥚 Dependency Graphs: You can use a project's dependency graph to understand how it is organized and to navigate the source code.
[ ] 🥚 Development Strategies: You can write development strategies that have all of the program's state defined at the beginning, and separate each user story into interface and interaction tasks.
[ ] 🐣 Naming Functions: You can come up with clear and helpful names for the functions in your program. A good function name will take into account the function's role and the program's domain, like in the /naming-variables exercises from Debugging.
[ ] 🐣 DOM manipulation: You can manipulate the DOM when implementing level-appropriate user interactions
[ ] 🐣 Isolating Components: You can use a test.html file to render your components with different inputs
[ ] 🐣 Forms: You can do basic handling of form data via event.target.form
[ ] 🐣 Handling events: You can use the event argument to process user interactions, including bubbled events using event.target
[ ] 🐣 Passing Component Unit Tests: You can write vanilla DOM component functions to pass provided unit tests
[ ] 🐣 refactoring: refactor a single-script tutorial-style web page into multiple files using imports and exports
[ ] 🐥 reverse-engineering: You can incrementally reverse-engineer a level-appropriate user interaction following these steps:

init
Listeners
Handlers
(possibly): Utils, Components, Custom Events

[ ] 🐔 From Spec: given user stories, You can develop a site from scratch using a template repository.
[ ] 🐔 Writing Component Unit Tests: You can write unit tests to validate your component functions using BDD syntax

Week 1
I Need Help With:
<script type="module" src="./src/init.js"></script>
What is type=''module" here?
What went well?
I took my time to review DOM and only then started exercises so it was nice to get through this again and in more detail.
What went less well?
Since it took me some time to refresh DOM manipulation, I haven't studied 2-listeners-and-handlers and 3-stepped yet... I am going to catch up by Sunday class. Also if the meeting is still possible, it would be great to go through function roles one more time as we did on Sunday class.
I also have one small suggestion that would help me personally to be more efficient on coming classes.
I try to study more intensively at the beginning of the week to keep Sunday class learnings fresh. Therefore I am normally done with homework by Thursday and do my preparation for Sunday class. It is more complicated for me to study on Weekend because of domesticity. It would be really helpful for me to know about what we are going to learn on Sunday a bit in advance (on Thursday for example). I know that you normally let us know on Thursday/ Friday , so please keep doing it:)
Lessons Learned
Sunday Prep Work
I am studying 2-listeners-and-handlers and 3-stepped

What is type=''module" here?

Here is a nice explanation about it: https://javascript.info/modules-intro

I think we have addressed the others topics yesterday in the call, if not, let me know.

I think we have addressed the others topics yesterday in the call, if not, let me know.

Absolutely!
Thank you again for your time🙏

Week 2
Here is our project repo
I Need Help With:
I'm still a little confused with merging and rebasing. When I create a branch from other branch than master. How can I merge it with master then?
E.g
master-->maria_code1
maria_code1-->maria_code2
somebody changed master
How to merge maria_code2-->master
?
What went well?
I think I understood the separation of concerns concept more or less.
At least I was able to solve all exercises in 'separation_of_concerns' that I have tried.
With our project, we completed planning files in two days. I really enjoyed working in a team this time as it was fast and productive.
What went less well?
Since we split the work on the project by HTML and JS parts instead of user stories, it took me a lot of time to make my JS code fits HTML code of my teammate. Finally, we reviewed the result together and discussed separation topic.
At the moment, I have written the code for following user stories :
As a user I want to
chose items from a catalogue
see a list of chosen items in my basket
remove chosen items by changing amount by 0
add a new item to my list
You can see the separation in this branch. P.S I know the name of the branch is not good:)
After I spent huge amount of time by writing my own functions and thinking out separation, all exercises in our repo seem to be easy now:)
I am also happy that I was able to help some mates, because it is even more rewarding to see progress of others:)
Lessons Learned
Don't try to take any challenges:) Think if it needs to be taken.
Sunday Prep Work
Still working on our project

Week 3
I Need Help With:
Lint issue in my PR: [lab-brussels-1/Group6-separation-of-concerns-starter/pull/15]
What went well?
I have rewritten the JavaScript code for our group project with the aim of making it conciser and using objects for storing list. After some time and attempts I have manage to do it. We work well with my teammate, it's motivating.
What went less well?
The next two classes I will only be able to attend online, I'm a little worried about that.
Lessons Learned
Separate your code based on user stories.
The level of cooperation within the team depends on the motivation of its members.
Sunday Prep Work
I have watched  JS Event Loop.

Me
What was not clear, where did you get stuck?
At the beginning of the module, the separation of concerns concept was unclear and frightening for me.
Regardless of this module, I still have some doubts about npm checks and Git Branching.
What was clear, what did you master?
Throughout the module, I became more and more familiar with separation of concerns concept  by debugging examples, doing exercises and listening coaches.
Now I am familiar with:

 DOM access
 function roles
Code Splitting
Handling events
reverse-engineering

Where can you help others moving forwards?
I am always happy to share what I learned but not always feel like I should do it.

The Course
What can there be more of?
Assignments review to understand where you could do better.
What can there be less of?
Teamwork
What material were most helpful (from HYF or elsewhere)?
As usual, I think there is plenty of useful information in our repo that we can practice in Study lenses.
I did not use third party resources in this module.
Any suggestions for future classes?

Be prepared to the classes.


network-manager: 1.6.2 -> 1.8.2

Motivation for this change
Requires https://github.com/NixOS/nixpkgs/pull/29371 for nox-review without errors.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Thanks for the patch. Tested with wifi/wired connections, works well here <3

Hum actually when trying to setup my vpn so maybe an override for modprobe might be required ?

I was wondering why the nixos-rebuild succeeded even though I could not compile it from source.
I added autoreconfHook in nativeBuildInputs which got me a bit farther (than the previous error "substitute(): ERROR: file 'configure' does not exist") but I believe that's because the archive embeds already a configure script.
Now it fails on
./configure: line 27817: syntax error near unexpected token `1.0'
./configure: line 27817: `GTK_DOC_CHECK(1.0)'

even though I have gnome2.gtk-doc installed. Wouldn't it be best if the derivation could work from the source rather than the archive ?

The following patch seems to help. with-distro and with-libsoup flags seem useless now (configure: WARNING: unrecognized options: --with-distro, --with-libsoup )
https://github.com/teto/nixpkgs/commit/486e61d46994fd4cf514f8e635c43fb203994edf
There is  another problem I don't know how to fix
config.status: executing po/stamp-it commands
config.status: error: po/Makefile.in.in was not created by intltoolize.

Hmm weird that you need this patch. My compilation worked without any problems, but I will integrate your patch :)

Okay, I updated the pr. I also could fix the po/Makefile error.

Great now it compiles just fine even without the configure script.

Could you also bump the applet version, please? It will probably work better if they match.

Thanks for working on this.  1.8.2 at least is critical if you use NM for VPN connections because it contains this commit: https://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=6f61497a1beb20ff2f224d163685b78c7baa76b0
Other discussions:
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1624317
https://bugzilla.gnome.org/show_bug.cgi%3Fid=783569

I still fail to connect to my VPN but this might be unrelated to the PR and more having to strongSwan.
I would like to find the source of the sh: modprobe : commande introuvable ("command not found"). is that a nm shell script ? or a strongSwan ?  as for the "PKCS11 module '' lacks library path", I don't know if that matters.
sept. 16 14:40:49 jedha NetworkManager[12801]: Starting strongSwan 5.6.0 IPsec [starter]..
sept. 16 14:40:49 jedha NetworkManager[12801]: Loading config setup
sept. 16 14:40:49 jedha NetworkManager[12801]: Loading conn 'nm-ipsec-l2tp-26372'
sept. 16 14:40:49 jedha ipsec_starter[26401]: Starting strongSwan 5.6.0 IPsec [starter]...
sept. 16 14:40:49 jedha ipsec_starter[26401]: Loading config setup
sept. 16 14:40:49 jedha ipsec_starter[26401]: Loading conn 'nm-ipsec-l2tp-26372'
sept. 16 14:40:49 jedha NetworkManager[12801]: sh: modprobe : commande introuvable
sept. 16 14:40:49 jedha NetworkManager[12801]: sh: modprobe : commande introuvable
sept. 16 14:40:49 jedha NetworkManager[12801]: sh: modprobe : commande introuvable
sept. 16 14:40:49 jedha NetworkManager[12801]: sh: modprobe : commande introuvable
sept. 16 14:40:49 jedha NetworkManager[12801]: sh: modprobe : commande introuvable
sept. 16 14:40:49 jedha NetworkManager[12801]: found netkey IPsec stack
sept. 16 14:40:49 jedha ipsec_starter[26401]: found netkey IPsec stack
sept. 16 14:40:49 jedha ipsec_starter[26428]: Attempting to start charon...
sept. 16 14:40:49 jedha NetworkManager[12801]: <warn>  [1505540449.9427] vpn-connection[0x
sept. 16 14:40:49 jedha charon[26429]: 00[DMN] Starting IKE charon daemon (strongSwan 5.6.
sept. 16 14:40:49 jedha charon[26429]: 00[CFG] PKCS11 module '<name>' lacks library path
sept. 16 14:40:50 jedha charon[26429]: 00[CFG] dnscert plugin is disabled
sept. 16 14:40:50 jedha charon[26429]: 00[NET] using forecast interface wlp2s0

I bumped the applet version, @bkchr could you cherry-pick https://github.com/eqyiel/nixpkgs/commit/07b6a8f71d3ed53c9fd1fd81f0a856ee95cfb7b5?
I'm using both right now and it seems OK:
eqyiel@ayanami ~ % journalctl -u network-manager -b 0 -l | cat
-- Logs begin at Wed 2017-09-06 08:21:55 ACST, end at Sat 2017-09-16 18:23:01 ACST. --
Sep 16 18:19:25 ayanami systemd[1]: Starting Network Manager...
Sep 16 18:19:26 ayanami systemd[1]: Started Network Manager.
Sep 16 18:19:33 ayanami NetworkManager[1049]: libndp: ndp_sock_open: Failed to create ICMP6 socket.
Sep 16 18:19:33 ayanami NetworkManager[1049]: <error> [1505551773.9445] device (wlp3s0): addrconf6: failed to start neighbor discovery: failure creating libndp socket: Address family not supported by protocol (97)
Sep 16 18:19:33 ayanami dhclient[1441]: DHCPREQUEST on wlp3s0 to <IP_ADDRESS> port 67
Sep 16 18:19:33 ayanami dhclient[1441]: DHCPACK from <IP_ADDRESS>
Sep 16 18:19:34 ayanami dhclient[1441]: bound to <IP_ADDRESS> -- renewal in 20729 seconds.

(the errors are related to having disabled ipv6)

I could cherry pick, but I think you could also open your own pull request. As I understand that right, the applet is only for gnome? It you want, open a pr and link this pr :)

Added your commit and removed libselinux. nox-review is still running for the changes.

nox-review did not report any errors :)

Thanks, I wasn't sure what to do about that!

Can we move this forward?

@Phreedom @rickynils could you merge this pr?

@rickynils thanks!


perfs live in elixir-omg

elixir-omg hosts perf tests, we can use a docker image for that smoke test

@InoMurko maybe that's a not good idea because we won't detect changes in response speed.

@ayrat555 are you confident that smoke performance tests (as they're in elixir-omg) would catch meaningful, reliable results in cirleci? or is it enough to run them in spinnaker for a longer time?

are you confident that smoke performance tests (as they're in elixir-omg) would catch meaningful, reliable results in cirleci?

During my experiments, they caught monitor failures when I increased metrics values.

or is it enough to run them in spinnaker for a longer time?

I think both types of tests are useful.

During my experiments, they caught monitor failures when I increased metrics values.
What do you mean by monitor failures?
I think both types of tests are useful.
I still don't see why. Can you elaborate?

If you want to catch performance regressions, you need consistently isolated environment, otherwise your thresholds might be affected by non-isolating issues

Now we don't have such problems and circle ic perf tests catches regressions.

Show me 😁

https://app.circleci.com/pipelines/github/omgnetwork/elixir-omg/8939/workflows/bcebdc24-e205-4f32-b009-64455735beb2/jobs/87535
In this circleci ci run, I added sleeps so datadog monitors would fail

Wait, but this was testing perf code, not childchain performance regression, right?

do you mean the code that you deleted?
I thought you'll add new tests which will run through a docker container. Datadog has a monitor for /submit_block endpoint https://app.datadoghq.com/monitors/25732222

do you have data that shows that running perf smoke tests in elixir-omg and in childchain is beneficial?
do they show performance regressions (not performance tests) in watcher, watcher info or childchain?
I have never seen data that would show that. why?

because it's a smoke test and the sample rate is too short
the execution environment is not isolated enough that the results could be consistent between runs