Godot 3.x -> Godot 4.0 project converter

Implementation of project converter(currently 3.x -> 4.0, but it can be easily upgraded to handle new versions) https://github.com/godotengine/godot-proposals/issues/387
This PR contains #49053, so it would be good to merge that PR before this because it is needed to check if all functions exists even in builtin types.
Most of things are renamed by "whole word" feature and some with simple Regex.
Before conversion I suggest to use this tool - https://github.com/Scony/godot-gdscript-toolkit to unify code look with some big line length(converter doesn't support multi line expressions and won't support, because it would be too complicated) - e.g. find ./ | grep "\.gd$" | xargs gdformat --line-length 400
For me this is the best way to upgrade project:

Run tool to validate conversion godot4 --validate-convert-to-godot40 --headless(current directory must contains godot project)
Read output of previous command, validate variables and rename manually names which you don't want to rename automatically by converter

Checking for conversion - 23/138 file - "test/resources/test_assert_setget_test_objects/ControlChildMock.tscn" with size - 5 KB
    Checking file took 54 ms.
		Line (7) margin_bottom -> offset_bottom  -  LINE """ margin_bottom = 46.0 """
		Line (15) margin_bottom -> offset_bottom  -  LINE """ margin_bottom = 14.0 """
		Line (6) margin_right -> offset_right  -  LINE """ margin_right = 130.0 """
		Line (24) margin_top -> offset_top  -  LINE """ margin_top = -14.0 """

Make sure that your game/project works fine in Godot 3
Repeat steps from 1, until you will be sure that you want to rename all listed elements
Save changes to e.g. Git
Run converter godot4 --convert-to-godot40 --headless
Try to change project to be able to run it in Godot 4
Revert to Godot 3 project
Re-apply changes(of course if possible) which have been done in Godot 4, to speedup later iteration of conversion
Make sure that your game/project works fine in Godot 3
Repeat steps from 6, until there is no more things that can be changed in Godot 3, to simplify conversion and unify codebase with Godot 4 project

Also during converting, this text about current progress is printing to console
Trying to convert	65/138 file - "test/unit/test_stubber.gd" with size - 7 KB
    File was changed, conversion took 131 ms.
Trying to convert	66/138 file - "test/unit/test_utils.gd" with size - 2 KB
    File was not changed, checking took 50 ms.
.....
Converting ended - all files(802), converted files(319), not converted files(483).

Done things:

[x] - functions (also in builtin types)
[x] - classes
[x] - enums/constants
[x] - properties
[x] - tool to validate things which will be changed
[x] - gdscript keywords
[x] - signals
[X] - shaders(only 3 renames, but I can't find more)
[X] - advanced GDScript renames(like connect -> Callable) - only some, but can be easily added
[X] - C# (1:1 CamelCase conversion from GDScript functions)
[X] - Check if all new functions exists in Godot 4

Things which may be implemented in future

[ ] - Regex caching(Not sure if possible)
[ ] - Removing code duplication(for now there are some code duplication between validating and converting tool, which proably could be integrated into one function)
[ ] - csproj conversion

Problematic things:

Cyclic renames - e.g. in Skeleton3D choose_it change to select_this, but Node3D changes select_this to choose_it. So running tool, will renames all select_this functions to choose_it(assuming that this records have bigger index in function_renames array). Depends of the usage, some things may be renamed(this will broke other functions) when class is used more(like Node3D vs HTTPRequest).
Class split - Some classes like Geometry were split at two classes Geometry2D and Geometry3D, so all instances of Geometry are renamed to Geometry2D. If proper class is Geometry3D, then this needs to be fixed manually
Deferred functions - custom functions renaming(e.g. via regex), works only with proper syntax(arguments, parentheses etc.) so things like call_deffered which use little different syntax, won't be always fully renamed.
Properties changes - most properties are named by single or two simple words like alt. Renaming them, would broke a lot of users scripts, because this words are usable often.
Tweens - Tweens were completely rewritten(#41794) and now as base they use RefCounted instead Node, so can't be automatically converted. If want to have less amount of problems with converting, don't add Tweens to tree(try to instantitate them where needed). You may also use TweenSequence from  https://github.com/godot-extended-libraries/godot-next/pull/50.
Too big files - Files with size greater than 500KB are not checked, because it takes too long. If you have such files, consider saving e.g. resources or objects to different file.(Not sure about this, maybe big files will be re-enabled later)
await - all functions which use await keyword must have await word before
Windows - Windows are not longer children of Popups/Controls, so this may require additional changes to code/project

Tested projects:

Pole Mrowkowe - enum-int compare(GDScript)
Gut - editor_hint(TODO), null problem(GDScript), MARGIN_RIGHT(probably TODO), not dictionaty(Project/GDScript), funcref(TODO)
Lorien - Constant Initializer(GDScript), enum compare(GDScript), get_datetime(TODO)
Jetpaca - looks that Godot4 doesn't allow to use String && bool(GDScript), nill objects(GDScript)
Qarminer - Perfect conversion(some code needs to be enabled manually due availability more types in Godot 4 like Vector2i)
Pixelorama - broken project.godot(not sure) ,missing popup hide(Window not longer is child of popup - Project), enum int compare(GDScript), window_tite(TODO),  Vector2.INF(GDScript), extends BaseButton not works(GDScript), Tween(too complicated), constant initializer
Godot Demo projects - get_simple_path(not sure), to_lower not found in StringName(GDScript)
Material Maker - Crash in parse_dictionary(GDScript)
Godot Next - Cannot add String to StringName(GDScript), Function "keys" has the same name as a previously declared variable(Project)
Tanks of Freedom 3D - Cannot import(Godot)
TPS Demo - depth_draw_alpha_prepass shader(Godot?), await(TODO),
HeightMap plugin - already created variables(Project)

Legend:

Project - project problem, not sure but may be probably added check to converter
Godot - Godot bug(general)
GDScript - GDScript bug
TODO - I may this implement in future

It works now, but I don't why it prints(CI fails due this)
[ 67%] editor/converter.cpp:383:13: warning: 'void converter()' defined but not used [-Wunused-function]
  383 | static void converter() {
      |             ^~~~~~~~~

Hey @qarmin
I went ahead and merged in some of the extra function calls from my conversion scripts and committed them here:
https://github.com/godotengine/godot/pull/52093/commits/e5803a074c521afd00f8558e5864bc4fa27da821
A lot of them are for builtin types; others are renaming functions on classes that were also renamed. Whatever script was used to generate the original list probably missed those.
I think some of the ones that are commented out that are ambiguous are kind of important and probably better to assume the common case. For example, I consider Control.get_icon->get_theme_icon to be worth doing automatically, even though there are some rare cases in the Theme class and the TreeItem class that this would break.
FuncRef -> Callable is another one that needs to be addressed
There are many patterns that would be nice to do if we had a place to add more general purpose regular expressions that don't fit neatly into the functions or methods buckets:
Here are some regexes to handle cases I found to be common in my code, such as Transform.xform or connect(), using python's raw string syntax r"":
	("\\.xform", "*"), # Transform3D
	(r"([\w.]+)\s*\.\s*xform_inv\s*([^)]*)", r"((\2) * (\1))"), # Transform3D

	("pause_mode = 2", "process_mode = "),
	("pause_mode", "process_mode"),
	(r"\b(connect|disconnect|is_connected)(\s*)\((\s*)([^,]*),(\s*)(?!Callable)([^,\s][^,]*),([^,]*)([,)])", r"\1\2(\3\4,\5Callable(\6,\7)\8"),
	(r"\byield\s*\((.*?)\)\s*$|\byield (.*)$", "await \\1\\2"),
	(r"\byield\s*\(\s*(\S[\s\S]*?)(\s*,\s*)*[\"'](.*)[\"']\s*\)\s*$", "await \\1.\\3"),
	(r"\b@?master(\s*)func\b", "@rpc(master)\\1func"),
	(r"\b@?puppet(\s*)func\b", "@rpc(puppet)\\1func"),
	(r"\b@?remote(\s*)func\b", "@rpc(any)\\1func"),
	(r"\b@?remotesync(\s*)func\b", "@rpc(any,sync)\\1func"),
	(r"\bfunc(\s+)_init(\s*)\(([^)]*)\)[^:]*:", r"func\1_init\2(\3):"),
	(r"\bget_node(\s+)\((\s+)\@", r"get_node\1(\2^"),

These replacements would be only for EditorPlugin: adding the missing _ to some of the overridable functions like get_name and so on.
	(r"\bfunc(\s+)edit\b", r'func\1_edit', ['EditorPlugin']),
	(r"\bfunc(\s+)get_name\b", r'func\1_get_plugin_name', ['EditorPlugin']),
	(r"\bfunc(\s+)handles\b", r'func\1_handles', ['EditorPlugin']),
	(r"\bfunc(\s+)make_visible\b", r'func\1_make_visible', ['EditorPlugin']),

Finally some for export->@export syntax and setget->: set=..., get= syntax
EXPORT_PAREN = re.compile(r"^( *)(\bexport *)?(?:\(([^)]*)\))?( *var *[^=:]*)(: [^ =]*)?( *=[\s\S]*)?")
SETGET_PATTERN = re.compile(r"([\s\S]*)\bsetget\s*([^,]*)(?:,\s*)?([\s\S]*)")

My python script here has a bunch of code to handle that. The export one breaks in a few cases, for example if the line contains a comma. Replacing setget seems moderately reliable.
Clearly I can understand if these heuristics and regexes wouldn't make it in, but I just want to get the discussion going on some other legitimately useful changes.
With all of my regexes as well as the function&class name replacements which your change does well, it usually only requires a few small edits and replaces to fix the rest. The biggest one that my regex usually messes up is mismatching parentheses on the connect syntax, when used like if (something.connect("signal", self, "method")==OK)

This PR should be created in my repository, because for now there is 2 different PR which implements a little different functions(I added new commit yesterday and I will add probably another today).
Changes to functions are mostly OK, but I didn't like mixing function names with different things like
{ "cursor_set_line", "set_caret_line" }, // Good, only renames function
{ "OS\\.get_ticks_msec", "Time.get_ticks_msec" }, // Bad, renames class but only for some functions

Non casual renames like e.g. (r"\bfunc(\s+)edit\b", r'func\1_edit', ['EditorPlugin']), should be handled in rename_enums, rename_classes etc. functions(I don't like too much regex so it may took a while until I implement this).

@lyuma can you add real life examples(or even simplified) about your regex's from above/python script?
I'm quite bad at reading them, because a lot of better I work with this
(connect(A,B,C,D,E,F,G) != OK):  ->  (connect(A,Callable(B,C),D,E,F,G) != OK):

than
RegEx("\\bconnect\\(([^,^\n]+),([^,^\n]+),([^,^\n^\\)]+)");
reg_connect.sub(file_content, "connect($1, Callable($2,$3)", true);

Cyclic renames - e.g. in Skeleton3D choose_it change to select_this, but Node3D changes select_this to choose_it. So running tool, will renames all select_this functions to choose_it(assuming that this records have bigger index in function_renames array). Depends of the usage, some things may be renamed(this will broke other functions) when class is used more(like Node3D vs HTTPRequest) Cyclic renames are validated by tool.

This could be handled by renaming choose_it to something_temporary, renaming select_this to choose_it then renaming something_temporary to select_this.

Adding support for this, probably will require to add new array/function.
I'm not exactly sure if it is worth to do it - it will add some complexity but this problem probably happens only for some(I think max 10) methods.
I think it would be best to standardize these names, to not have such problems.

@aaronfranke @lyuma Do you have more examples what could be also replaced?
I've read your scripts and I think that I have implemented almost all things from them.
Now I'm waiting for merge #52571 and #52075 which will help to find more differences between versions

@qarmin Try using this tool on the Godot demo projects and see if there's anything else that can be automatically fixed. This is what I did to create my script, but the script is not a complete list of what can be automatically fixed in the demos.

@qarmin Don't know if this is helpful or within scope but GDQuest has a repository with a few design pattern demos (state machine and ECS) in both GDScript and C#. He does some black magic(for someone of my level at least) with references and i am not able to manually convert his demos to GDScript 2.0. I was able to do part of it only.
Maybe this could give you ideas.
https://github.com/GDQuest/godot-design-patterns

I just noticed this in the OP

await - not sure if yield -> await would easily convertable

Changing yield(object, signal) to await object.signal works in most cases. Only function yields can't be converted easily (you need to await whole stack).

If want to have less amount of problems with converting, don't add Tweens to tree(try to instantitate them where needed).

If you use the TweenSequence addon, it can be converted very easily.
btw, is scene conversion planned? There were some node properties or default values that have changed, also there are built-in resources (especially scripts) that might need conversion.

For now tool only search for files with gd, shader, tscn, tres, godot, cs and csproj extensions and for each type of file, execute different set of functions.
E.g. in gd files there is automatic conversion from instance -> instantiate, but not for tres or tscn, because it is used as keyword
[node name="HUD" parent="HUD" instance=ExtResource( 5 )]

If a file in the project is above 250KB  ERROR: File has exceeded the maximum size allowed - 250 KB, file size - 266944 KB it would not convert and leave the project half converted and in a broken state.

I added such limit, because some big files converted even in ~30 seconds, so at least testing is now faster and this limit can be changed to higher or even removed later.

Can the "too big file" error message at least mention the name of the file, please?

Update: Amazing!
Here are some of the things I had to manually change while porting my project:

OS.GetWindowSafeArea() -> DisplayServer.ScreenGetUsableRect() - many methods from OS were moved to DisplayServer
GetViewport().GetCamera() -> GetViewport().GetCamera3d()
In signals, I noticed that the Connect() arguments were automatically converted with new Callable(), thanks!, but the methods IsConnected() and Disconnected() follow the same approach too!
Overriding GetDragData and DropData methods in the Control class now have a prefix _, so they should be renamed to _GetDragData and _DropData
BbcodeText -> Text
Texture2D -> Texture
Transform -> Transform3D

I mainly use GDScript, so probably a lot of C# renames is missing
Things like Texture -> Texture2D are valid in GDScript because Texture is used only as class name(in C# probably this is used as property but probably can be used in  SetTexture way)

I recommend to make changes for the ping-pong loop.
has_loop = false -> loop_mode = 0 (Animation::LoopMode::LOOP_NONE)
has_loop = true -> loop_mode = 1 (Animation::LoopMode::LOOP_LINEAR)

If you want I can give you access to the project heartbeat code for testing, it's a sizeable codebase so it might be a good test case

One thing I'm struggling with is get_global_transform().xform() and xform_inv() - I think most of my projects have this idiom somewhere and I can't figure out what the 4.0 equivalent is. Considering transforming stuff is a fairly basic operation, it would be worth it imho to have it on the list of auto-fixes...

@Zireael07 the equivalent of xform and xform_inv in 4.0 is the * operator.

xform is already handled, but not sure if correctly,
this are tests from PR
valid = valid & test_conversion_single_additional(" Transform.xform(Vector3(a,b,c)) ", " Transform * Vector3(a,b,c) ", &GodotConverter4::rename_gdscript_functions, "custom rename");

valid = valid & test_conversion_single_additional(" Transform.xform_inv(Vector3(a,b,c)) ", " Transform / Vector3(a,b,c) ", &GodotConverter4::rename_gdscript_functions, "custom rename"); // TODO, it is valid?

@qarmin the equivalent of xform_inv is also the * operator just inverting the order, something like this:
# 3.0 = 4.0
Transform.xform(Vector3(a, b, c)) = Transform * Vector3(a, b, c)
Transform.xform_inv(Vector3(a, b, c)) = Vector3(a, b, c) * Transform

Good catch.
The diff in db18545cf113ba95bc5c7950c43649bbfae794b8 looks pretty good as far as converting A.xform_inv(B) to B * A
I've already (mostly) completed a port to 4.0, but when then engine is further along in alpha, I could run it on my 430-file 3.x codebase at some point and see what it gets right.

Should animation players be added to this? Since transform tracks got removed from the engine, none of these will be recognized by Godot 4, which leads to an empty animation player in the worst case scenario where all of the tracks are transform tracks. #55292 is such a case.
Replacing a single transform track with three individual loc/rot/scale tracks should be fairly straightforward, right?

Changing this is tres file is possible, but I need example how it looks in Godot 3 and how should it look in Godot 4 e.g.
anim/tracks = PoolByteArray(1 ,2, 3)

to
anim/pos = PackedByteArray(3)
anim/rot = PackedByteArray(2)
anim/tra = PackedByteArray(1)

Since also binary files like .anim and .res are changed, I think that this should be fixed directly in animation importer, because this tool cannot modify such files

Bump. I have a project that I'd like to port to 4.0, and it's big enough that manually fixing all of the problems is untenable. Can this be merged in ASAP so that people like me, who have projects to port, can make use of this (and possibly submit improvement requests) instead of this languishing in the PR queue?

Bump. I have a project that I'd like to port to 4.0, and it's big enough that manually fixing all of the problems is untenable. Can this be merged in ASAP so that people like me, who have projects to port, can make use of this (and possibly submit improvement requests) instead of this languishing in the PR queue?

I don't think it's ready for prime time yet. The only way to upgrade project with this PR right now is through the command line.
I'm not sure, but I think the goal is to make it seamless through the editor.
If you want to use the functionality right now, I would suggest just to build his PR with debug build, on my old 4 core CPU, it takes around 30 min.

At first https://github.com/godotengine/godot/pull/49053 needs to be merged, but still waits for reduz approval.
For now this PR is a little outdated, because some things changed and I don't rebase it too often.
I wait for clear message what exactly would happen with it, because if there is or will be another/better solution to upgrade Godot projects, then I don't want to waste time on updating this PR constantly.

Ping! Godot 4.0 alpha 1 just came out, and it's missing this incredibly vital feature!
I'd found some sort of a perl gist on GitHub, but it's missing quite a lot of stuff so I still have to do a lot by hand...

This PR contains #49053, so it would be good to merge that PR before this because it is needed to check if all functions exists even in builtin types.

Where is this method used exactly in this PR? I don't see any code that calls ClassDB::get_variant_method_list.
If it's not directly needed right now, it might be easier to merge the rest of the converter as agreeing on how to expose get_variant_method_list was the main point of debate.

get_method_list_by_type function was used to get list of methods from builtin types.
I expected that this code will find more breaking changes, but looks that not found any(at least yet), so it is not so important as I think that it would be.
I commented this code.

Not certain this is the best place to put it, but:
If you want to add an Open Source project to test it on and compare with a real life conversion : I'm currently porting Librerama from Godot 3.4 to Godot4.alpha7 in my own fork for now.
The first commit of my new branch is the auto-converted stuff from the existing Godot3 to Godot4 converting taking place in alpha7. And the rest are the manual conversion I'm currently doing.
I'll edit this post when I'm done, but I hope this can be useful.
Wish you the best, have a great weekend ^^

What are the blockers on merging this in a timely matter now?

Does the converter support theme property renames? Several theme properties were renamed in https://github.com/godotengine/godot/pull/60261, and there may be others as well.

One more shader rename that could be added: TRANSMISSION → SSS_TRANSMITTANCE_COLOR

I pushed an update to improve some names:

GodotConverter4 -> ProjectConverter3To4
converter.h -> project_converter_3_to_4.h
--convert-to-godot40 -> --convert-3to4
--validate-convert-to-godot40 -> --validation-conversion-3to4

And fixed build with RegEx module disabled.

Thanks!

Is this the right place to submit remaining methods which still need to be included in the converter as of Beta12?


Fix fullscreen dialog gallery example

Fixes https://github.com/flutter/flutter/issues/2956

LGTM
Thanks!


Add changeset_url to challenge schema

resolves https://github.com/osmlab/maproulette3/issues/178

I may not be titling the column name very well.  Basically we are adding a boolean to the challenge that will later determine if a url back to the challenge should be constructed and added to the changeset comment when a task is worked on.  The url is built in the FE and will attach it to the comment if changesetUrl is true.

Ok thanks, that makes sense.


oracledb connectString not possible

As documented by node-oracledb the oracledb driver supports some "exotic" connection strings.
The simplest ones resemble a URL, like the knex connectionParser stuff, but the more exotic ones do not.
In particular, I need to be able to reference entries in the tnsnames.ora file, as described here. The result is that the config passed to the oracledb driver should look like:
{
  user: 'dfdf',
  password: 'dfdf',
  connectString: 'nameOfConnectionInTnsNames'
}

The current implementation (big thanks to @atiertant for his work on this!) does allow this. In fact, it has hardcoded the connectString field to be the concatination of the host and database, see here
I purpose that users should be able to define the connectString parameter in the connection object passed to knex. That should allow even the most exotic oracle connectStrings
I'll make a PR for this.

@codyzu you are right, this could be interresting !


AccessViolationException when whisper_full_with_state is called

Hello,
When we start our pipeline, the Whisper model is downloaded and initialized.
However, when a speech event is detected and the "Process" method is called, in particular the "NativeMethods.whisper_full_with_state" method, we have an AccessViolationException with the comments : "Attempt to read or write protected memory." (see screen).
We tried to solve the problem using "whisper_init_from_file" insteed of  "whisper_init_from_file_no_state" in the LoadNativeContext() method of WhisperProcessorModelFileLoader.cs, or also to change "whisper_full_with_state" method with "whisper_full", without success.
Any suggestions?
Thanks !

It sounds like some memory accessing issue in the underlying library. Is it one of the examples in this library with some custom audio?
Is it reproducing all the time?
Can you share that audio with us?

Yes, the problem occurs regardless of the audio played.
We can't send you the audio for research privacy reasons.
To give you more details, we're trying to use Whisper in a real-time context with an IProducer<AudioBuffer, bool> that we pip to Whisper.
The voice activity detector used is this from Microsoft Psi.
After verification, we seem to have the exception presented above as soon as we receive the first audio event detected by the voice activity detector (bool true), and therefore a verbalization.

Is the generated audio at 16khz?
How are you getting the samples from that AudioBuffer to pass it to WhisperProcessor?
Are those samples mono or stereo and if stereo, how are they represented?
Also, can you, please, check if the issue is reproducible with the latest (1.5.0) version?

I have update for this cause for me it did not solve just update, I figured out that disposing factory is making entire model crashing on this very place. SO in order to have everything fucntional with Whisper model you CANNOT dispose factory.

Hello @janjanusek ,
Indeed, the factory (and processor) needs to stay "alive" as long as the processing is still happening as they held callback delegates which cannot be collected by GC.
As processing is happening in unmanaged code, these callbacks might be called at any time, so you need to manage their lifetime bound to the parent objects (processor / factory).
If you know that no processing is in progress, and that you won't start another one, you should be able to dispose factory / processor.


Incredibly slow query speed

In linqpad, basic queries run in about 0.1 seconds.
In NetPad, the exact same queries take 4 to 30 seconds. Sometimes it even times out
Is the any way I can improve the query speed in NetPad?
Here is a query for example
Vendors.Where(x => x.VendorId == 11594).Select(x => x.VendorId)
LinqPad: 0.003 seconds
NetPad: 4.1 seconds
Using NetPad v0.6.1 with latest .Net 8

There a couple reasons for this difference:

NetPad compiles an assembly and runs it in a new isolated process each time you run a script; ie. it uses process isolation. LINQPad on the other hand uses AppDomain isolation. A query in LINQPad runs in an isolated AppDomain within the same process (by default, LINQPad offers a way to run in an isolated process), so there is no overhead of starting up a new .NET process each time you run your script.
The timing you see in NetPad includes the time it takes to compile the script and the time it takes to start the isolated process, LINQPad's timing excludes any setup/teardown time.

While LINQPad supports .NET Core, its built using .NET Framework. NetPad is fully built using .NET Core, where AppDomains do not offer the same isolation features as they did in .NET Framework, so that's not an option. Reducing start-to-end timing is something I am personally invested in reducing and was thinking of opening a discussion on the topic to solicit input.
Restricting the "elapsed time" to actual "run time" and taking out the compiling/process-start timings is something on the agenda. While it will not make anything run faster, it will still be much more informative.
Keep in mind LINQPad has been around for a good 17 years, NetPad is pretty new, it needs a bit more time to catch up, but it'll get better :smile: Its a constant battle deciding which feature/enhancement to focus on next. The strategy so far has been focusing on core functionality.

Question. Is your query running against a database? Or is Vendors an in-memory collection?

Thanks for the info. Yeah running against a database.
Interesting to hear about the isolation issues. Better for security I guess, but seems a big step backward for this use-case!

The choice to not use AppDomains in NetPad is not a matter of security, but that AppDomains cannot, by design, be used to fully unload a compiled script assembly from memory. It just doesn't work like that in .NET Core. It did however in .NET Framework.
In .NET Core if you load an assembly into a separate AssemblyLoadContext (the AppDomain replacement in .NET Core) you cannot reliably fully unload that assembly from memory. It is highly dependent on what your script is doing, and what the assemblies you're referencing are doing too (example). Again, this is a limitation inherent to .NET Core. This means you're stuck with additional assembly(ies) in memory everytime you run your script. This results in the app using more and more memory as you continue to use it which, as you can imagine, isn't great. As of right now, I am unaware of a way around this when opting for in-memory execution.
That being said, efforts are planned to optimize and make execution faster.

While LINQPad supports .NET Core, its built using .NET Framework.

I am not sure this is correct.
IMHO it is as following:
Linqpad 6/7/8 is built on .NET Core. It runs on .NET Core and can therefore only run .NET Core stuff.
Linqpad <= 5 is built on .NET Framework and runs on .NET FX and can only execute NETFX stuff.

@davidroth I believe you are right. My info was outdated and thinking of LINQPad 5. LINQPad 6+ is indeed built with .NET Core.
An important contributor to slower speed when using a data connection is Entity Framework taking a relatively long time to initialize its model at runtime the first time you use it. LINQPad utilizes a client/server type structure to keep a query alive and running so when while the first run of the query might take some time, subsequent runs are much faster. You can see this EF init time in NetPad as well with something like this:
var sw = new Stopwatch();

sw.Start();
Vendors.Where(x => x.VendorId == 123).Dump();
sw.ElapsedMilliseconds.Dump();

sw.Restart();
Vendors.Where(x => x.VendorId == 456).Dump();
sw.ElapsedMilliseconds.Dump();

The second query will be much quicker. However since NetPad starts and then completely stops a script on each run, the EF initialization has to take place each time. I'm studying some options on how to implement a better experience, possibly using a similar approach to LINQPad. In the meantime the next NetPad release will contain a scaffolding option to use a compiled model for models that are very large (100s to 1000s of entities). PR: #197
Lastly, someone from the Linq2Sql team reached out to discuss adding Linq2Sql support to NetPad which might bring its own suite of perf improvements.

Ah yeah I noticed recently with Visual Studio extension called CSharpier it seems to use a client/server model, and I wondered if a similar method could help your situation. When the extension first starts, it loads a "permanent" process which I think is a small http server, then the extension talks to that
It's open source, maybe there could be some good tips in their code: https://github.com/belav/csharpier

Yes it would, although the intent was just to demonstrate the time it takes EF Core to initialize. Even if you used .First() you will find that the first query is significantly slower than the second one.


Polyphonetic in Chinese. How to handle?

Hi, what is your suggestion for handling polyphonetic in Chinese? Like 銀行 should be pronounced as (yin hang) not (yin xing). Currently, in Vall-E, it still pronounced as yin xing.

Turns our if I am type using Traditional Chinese and Simplified Chinese the result is different, therefore here I need to convert traditional Chinese to simplified Chinese first using OpenCC and now the result is okay.


Trouble with 3.x

when i composer update with：
{
"require-dev": {
"sven/flex-env": "^3.0"
}
}
Then：
Problem 1
- Installation request for sven/flex-env ^3.0 -> satisfiable by sven/flex-env[3.0.x-dev].
- Removal request for sven/flex-env == 3.0.9999999.9999999-dev
Change it to: "sven/flex-env": "3.0.x-dev", composer update ok ,but when i use: php artisan env:list
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'Sven\FlexEnv\Env' not found
with the Laravel 5.5

3.x isn't out yet: https://github.com/svenluijten/flex-env/releases. However, just doing composer require sven/flex-env should work as before, even on 5.5.
Let me know!

Thanks


bug: App cannot run on Ubuntu 22.04 LTS on WSL2 due to receiving SIGTRAP

Overview
I tried to use Opentrons App for linux on WSL2 and connect my OT-2 machine via an ethernet tunnel over ssh because no wireress access is available in my lab and I want to use Opentrons App in front of the OT-2 machine and in my office room.
On Ubuntu 20.04 LTS on WSL2, Opentrons App for linux Opentrons-v6.3.1-linux-b30754.AppImage works correctly. However, on Ubuntu 22.04 LTS, the app cannot start and quit with message Trace/breakpoint trap.
Linux kernel is kernel <IP_ADDRESS>-microsoft-standard-WSL2.
I'm not familier with AppImage debugging. but I tried to analyze the process with GDB and found that the app process received a SIGTRAP signal and there is a strange access to an address  0xaaaaaaaaaaaaaaaa in the backtrace.
$ gdb ./Opentrons-v6.3.1-linux-b30754.AppImage
(gdb) r
...
(node:522) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [Console]. Use emitter.setMaxListeners() to increase limit
(node:522) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added to [Console]. Use emitter.setMaxListeners() to increase limit
(node:522) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 finish listeners added to [Console]. Use emitter.setMaxListeners() to increase limit
Thread 1 "opentrons" received signal SIGTRAP, Trace/breakpoint trap.
0x00005555580f9be5 in ?? ()
(gdb) bt
#0  0x00005555580f9be5 in  ()
#1  0xaaaaaaaaaaaaaaaa in  ()
#2  0x2d31315862696c1e in  ()
#3  0x312e6f732e626378 in  ()
#4  0x00001a540033a100 in  ()
#5  0x00007fffffffd4d0 in  ()
#6  0x000055555e529994 in  ()
#7  0x00007f0031317806 in  ()
#8  0x000055555a81199e in operator new(unsigned long) ()

No log files were genrated in the log directory ~/.config/Opentrons/logs/ and no GUI window appeared on the display.
Steps to reproduce
No response
Current behavior
No response
Expected behavior
No response
Operating system
Linux
System and robot setup or anything else?
No response

@s-wakaba
Have you installed libfuse2 before running Opentrons App?
If not, please install that on your WSL.
sudo apt install libfuse2

@s-wakaba
if the above doesn't fix your issue, please contact to our support team.
support atmark opentrons.com


Bad rendering: go-grip (grip) vs Github preview

As a reimplementation of grip but local (without inet), is almost the same with my test files. But right now is not the same as GitHub markdown preview (GFM):
Bad rendering examples (GFM vs grip/go-grip):

GFM don't need two-spaces at the end of line for lineabreaks:

1st line.
2nd line.

Numbered Start (Lists), should be: 57 & 58

foo
bar

Smart Typography: in GFM should not be recognized

(c) (C)	copyright
(r) (R)	registered
(tm) (TM)	trademark

HTML Symbol Entities inside linecode

© ©
— —
™ ™

HTML Symbol Entities
Character Entities for HTML, CSS and Javascript

€ ¥ £ $ ¢ & ©
¾ ± ∑ ∫ ≤ ≈ ∠
Æ Ď ⇒ ↓ λ Γ
‡ — ⟨ ⟩ ♠
Œ æ ö
℘ ℑ ℜ ℵ
# Ӓ Ϡ � "
ℋ ∲ ⅆ
⮝ ⌈ ⌋

ആ ಫ

Definition List: not supported in GFM but rendered ok in go-grip.

Apple
:   Pomaceous fruit of plants of the genus Malus in
the family Rosaceae.
:   An American computer company.
Orange
:   The fruit of an evergreen tree of the genus Citrus.
First Term
: This is the definition of the first term.
Second Term
: This is one definition of the second term.
: This is another definition of the second term.

Emojis

Camping :tent: Be back soon.
That is so funny! :joy:
Classic markup:
:wink: :cry: :laughing: :yum: :tm:

Math (Inline)

This is an inline $f(x)$ function.
This is a block $$f(x)$$ function.

Marth: KaTeX

$\sqrt{3x-1}+(1+x)^2$

Math Block \\[...\\]

$${e}^{i\pi }+1=0$$

Flow Charts (Mermaid)

graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

Headerless: GFM does not support this, but grip does!

|--|--|--|--|--|--|--|--|
|♜|  |♝|♛|♚|♝|♞|♜|
|  |♟|♟|♟|  |♟|♟|♟|
|♟|  |♞|  |  |  |  |  |
|  |♗|  |  |♟|  |  |  |
|  |  |  |  |♙|  |  |  |
|  |  |  |  |  |♘|  |  |
|♙|♙|♙|♙|  |♙|♙|♙|
|♖|♘|♗|♕|♔|  |  |♖|

Oh I didn't know about this spec. I will implement the missing parts as soon as possible! Thanks for this hint.

I created seperate issues for all of these issues. Some of them are already fixed (like mermaid or emojis)! 👍


AccountDetails: Sublinks Need Adjustment for Different Chains

Sublinks for certain chains, such as SubSquare for asset hubs, should not be displayed in the AccountDetails component.

WORK IN PROGRESS


Minting Off By 1 Error

If a mint starts on block 40, ord will not let you mint until that block has already passed. Meaning the first block ord allows you to mint in is actually block 41.

I think there must something to ignore errors, I tried to find it last days, I think it's in core of ord wallet

We identified the issue here:
https://github.com/ordinals/ord/blob/08bbf566502533217d7c5d24287e9f93b3bfc8a8/src/index/entry.rs#L66
It looks like the height might be the last confirmed block and is 1 behind. If that's the intent, then one fix would be to have the statement be: if height < (start - 1) or if (height + 1) < start
But perhaps there's a bug in height causing the off-by-one. Thanks!

this is fixed in this PR: https://github.com/ordinals/ord/pull/3645

If a mint starts on block 40, ord will not let you mint until that block has already passed. Meaning the first block ord allows you to mint in is actually block 41.

u can download source code, make fix for ord/src/index/entry.rs and just compile, then replace ur exe in ord folder

Fixed in #3659. Thank you for reporting!


Install build essential and Bolt

Install Build Essential to build Gem native extension during pdk test unit.
Install Bolt to develop Bolt project in Visual Studio Code Dev Container.
Avoid EOL issues in Visual Studio Code Dev Container.

Hi @GMZwinge! Thank you for your contribution. I see the reason 🙏🏻 , but.. as .devcontainer/Dockerfile was removed from the pdk-templates, I was heading to drop it from this repo also actually. I'm heading to upgrade to latest pdk-templates and drop unmanaged files instead.

@jay7x Too bad that Dev Container was removed from PDK templates. It seems to make development easier and more reproduceable across platforms. I created https://github.com/puppetlabs/pdk-docker/pull/72 to be even more usable for a Dev Container.

There is nothing wrong with Dev Containers. I guess the reason to remove was because it's to hard to make it good for everyone..
Anyway, as this repo is a template (kind of at least, not in Github meaning) repo, that means every user should have their own fork/clone/copy of it with all additions they need (roles, profiles, unit tests, etc.). It's totally ok to add Dev Containers setup to their instance of the repo if they need it.


Use Object.entries polyfill

Codecov Report

Merging #28 (3b36a81) into main (0f467da) will decrease coverage by 0.16%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
- Coverage   94.14%   93.98%   -0.17%
==========================================
  Files          16       16
  Lines        2271     2277       +6
==========================================
+ Hits         2138     2140       +2
- Misses        133      137       +4

Impacted Files
Coverage Δ

src/_helpers.js
100.00% <100.00%> (ø)

src/url.js
98.63% <100.00%> (+<0.01%)
:arrow_up:

src/observable.js
72.08% <0.00%> (-1.42%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0f467da...3b36a81. Read the comment docs.


Use action builders

Replace direct creation of actions with use of action builders.

More fixes pushed following manual testing


OSSL_PROVIDER_available returns True for providers which are not listed in config file.

I am using Openssl-3 with FIPS provider and want to confirm that my algorithms are provided by the fips module. I have written a small C script for this:
#include <stdio.h>
#include <openssl/provider.h>
#include <openssl/evp.h>
#include <string.h>

int main(int argc, char *argv[])
{
    if (argc < 3){
        printf("Usage: ./canifips <digest algorithm> <provider-name>");
        exit(1);
    }
    EVP_MD_CTX * mdctx;
    EVP_MD * algo;
    mdctx = EVP_MD_CTX_new();
    char prov[] = "provider=";
    strcat(prov,argv[2]);
    algo = EVP_MD_fetch(NULL,argv[1],prov);
    if (algo == NULL){
        printf("cannot fetch the algorithm");
        exit(1);
    }
    printf("EVP_DigestInit_ex(mdctx,algo,NULL): %d\n", EVP_DigestInit_ex(mdctx,algo,NULL));
    printf("%s OSSL_PROVIDER_available: %d\n",argv[2],OSSL_PROVIDER_available(NULL,argv[2]));
    printf(OSSL_PROVIDER_get0_name(EVP_MD_get0_provider(EVP_MD_CTX_get0_md(mdctx))));
}

The script takes two command line arguments, digest-algorithm and provider.
Here are the contents of my conf file:
config_diagnostics = 1
openssl_conf = openssl_init
.include /Openssl/build/ssl/fipsmodule.cnf
[openssl_init]
providers = provider_sect
[provider_sect]
fips = fips_sect
base = base_sect
[base_sect]
activate = 1

The output for ./canifips MD5 fips:
cannot fetch the algorithm%

which makes sense as MD5 is not permitted by FIPS.
Also running ./canifips MD5 default results in:
cannot fetch the algorithm

which is expected, as default provider is not present in my config file.
./canifips SHA256 fips
EVP_DigestInit_ex(mdctx,algo,NULL): 1
fips OSSL_PROVIDER_available: 1
fips

which is again expected.
Since OSSL_PROVIDER_available returns 1 when a provider is loaded, I modified the code and moved the API call before EVP_MD_FETCH():
#include <stdio.h>
#include <openssl/provider.h>
#include <openssl/evp.h>
#include <string.h>

int main(int argc, char *argv[])
{
    if (argc < 3){
        printf("Usage: ./canifips <digest algorithm> <provider-name>");
        exit(1);
    }
    printf("%s OSSL_PROVIDER_available: %d\n",argv[2],OSSL_PROVIDER_available(NULL,argv[2]));
    EVP_MD_CTX * mdctx;
    EVP_MD * algo;
    mdctx = EVP_MD_CTX_new();
    char prov[] = "provider=";
    strcat(prov,argv[2]);
    algo = EVP_MD_fetch(NULL,argv[1],prov);
    if (algo == NULL){
        printf("cannot fetch the algorithm");
        exit(1);
    }
    printf("EVP_DigestInit_ex(mdctx,algo,NULL): %d\n", EVP_DigestInit_ex(mdctx,algo,NULL));
    printf("%s OSSL_PROVIDER_available: %d\n",argv[2],OSSL_PROVIDER_available(NULL,argv[2]));
    printf(OSSL_PROVIDER_get0_name(EVP_MD_get0_provider(EVP_MD_CTX_get0_md(mdctx))));
}

Now when I run ./canifips MD5 default:
default OSSL_PROVIDER_available: 1
EVP_DigestInit_ex(mdctx,algo,NULL): 1
default OSSL_PROVIDER_available: 1
default

I expected the output to be cannot fetch the algorithm but turns out openssl is able to load MD5 from default provider. Does the call to OSSL_PROVIDER_available load the library as well?
And I have not touched my config file during these changes, my config file is the same.

This bit of code overwrites memory and everything after is thus suspect.
    char prov[] = "provider=";
    strcat(prov,argv[2]);

It's not clear why you are seeing the behaviour you are.  OSSL_PROVIDER_available() can load the fallback providers (i.e. default) but it shouldn't with your configuration file.

We have some missing OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG) call somewhere.

marking as inactive, will be closed at the completion of 3.4 dev without further input

I think this should be closed.   There is a blatant buffer overrun corrupting things before the supposed problem...


statistics: sample count doesn't count samples over time

The sample count in the Statistics tool does not appear to be accumulating samples over time. It probably should
To reproduce

Load any data set with multiple time steps (e.g. katrina) and launch the Stats tool.
Add any variable and click Update. Make note of the count.
Increase the maximum time step and update. The count does not chage

Hi John,
I played with the GUI and cannot reproduce this problem. I also looked at the code and it seems the code is taking into account multiple time slices. Could you verify that it is actually occurring?
Thanks,
Sam

Works for me. I'm closing this.


ironstrings: increase stack size

closes #127
@llebout, can you test this fix on your side as well please?

@mr-tz On it

@mr-tz
The patch does seem to help for one function I think (though it may already have worked that way before too, or on some other versions of the sample I have).
0x1802b4d40 - It may have worked this way before too, found 3 strings while in manual analysis I was able to find much more. It seems like the emulator gets stuck on a condition or something and cannot reach all the code paths of the function.
What ironstrings with patch gave:
0x1802B4D40        0x1802B4FE0        0xD50              Function Pal.PalBuildObject.OnBeginInteractBuilding
0x1802B4D40        0x1802B523B        0xDD0              Function Pal.PalNetworkItemComponent.RequestDrop_ToServer
0x1802B4D40        0x1802B5536        0xD90              Function Pal.PalCharacterParameterComponent.OnDamage

Manual analysis string recovery results using a debugger and stepping through:
0x1802b4d40
"Function Pal.PalBuildObject.OnBeginInteractBuilding"
"Function Pal.PalNetworkItemComponent.RequestDrop_ToServer"
"Function Pal.PalCharacterParameterComponent.OnDamage"
"Function WBP_PalNPCHPGauge.WBP_PalNPCHPGauge_C.OnTakeDamage"
"Function Pal.PalPlayerState.SendDamage_ToServer"
"Function Pal.PalPlayerController.OnDamage"
"Function WBP_PlayerUI.WBP_PlayerUI_C.OnPlayerDamage"
"Function BP_MonsterBase.BP_MonsterBase_C.OnInflictDamage"
"Function Pal.PalDamageReactionComponent.ApplyDamageForHP"
"Function Pal.PalCharacterParameterComponent.OnDamage"
"Function Pal.PalDamageReactionComponent.ApplyDamageForHP"
"Function Pal.PalPlayerCharacter.IsGuildMaster"
"Function Pal.PalUIGuildMenu.IsAdminLocalPlayer"
"Function Pal.PalMapObjectDeathDroppedCharacterModel.IsSameGuildInLocalPlayer"
"Function Pal.PalMapObjectDeathPenaltyStorageModel.IsSameGuildInLocalPlayer"
"Function Pal.PalLocationPointBaseCamp.IsSameGuildWithPlayer"
"IsDying"
".OnPullTrigger"
"Function WBP_Map_Base.WBP_Map_Base_C.SetupLocationPointIcon"
"Function Pal.PalPlayerState.EnterChat_Receive"
"Function WBP_PalHUD_InGame_InputListener.WBP_PalHUD_InGame_InputListener_C.OpenChat"
"Function Pal.PalNetworkIndividualComponent.AddPlayerCharacterStatusPoint_ToServer"
"BP_SkillEffect"
"broadcast"

0x180138aa0 - Did not work at all like before, shows this recursion error

, and increasing Python stack size with sys.setrecursionlimit(5000) or higher lets it run for longer but it still cannot discover paths to targets, see log file for debug log.
0x1802ae880 - Did not recover any strings, I know there is numerous strings from manual analysis, one of which is TreasureBox_C
Debug log file, contains a run on single function mode for all three previously problematic functions
ironstrings-issue.log
Overall I think this patch gave mixed results, and the strings that were recovered after the patch I think could already be recovered before and no new strings were discovered.
Thanks a lot for working on this.

Hm, my guess is that not all paths for 0x1802b4d40 are explored correctly in flare-emu (more time would be needed to confirm). The same goes for 0x1802ae880 which has many blocks and paths.
To fix this, I think a closer look at flare-emu's iterateAllPaths and getPathsToTarget functions would be good next steps.
0x180138aa0 is massive (my IDA even complains about to many lines and the function stack is huge as well), so I think it's out of scope for the current usage of ironstrings.
FWIW with the fix here I get the 3 strings you mention above vs. 0 before.

merging this as a small improvement, but it's a not a complete fix


is not recognized as an internal or external command

Running Gradle task 'assembleDebug'...
'F:\imkit-flutter-quickstart-master' is not recognized as an internal or external command,
operable program or batch file.
Finished with error: Gradle task assembleDebug failed with exit code 1

请问您有正确配置好 flutter 的开发环境吗？请您运行下 flutter doctor 看下环境状况

F:\imkit-flutter-quickstart-master>flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel dev, v1.18.0, on Microsoft Windows [Version 10.0.18363.535], locale zh-CN)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
X Android license status unknown.
Try re-installing or updating your Android SDK Manager.
See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/windows#android-setup
for detailed instructions.
[√] Android Studio (version 3.6)
[!] IntelliJ IDEA Ultimate Edition (version 2019.3)
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
[√] Connected device (1 available)
! Doctor found issues in 2 categories.


update:  Add some Chinese model benchmarks

Chinese Model List:

[x] Qwen-14B
[ ] Qwen-7B (Some Error)
[x] AquilaChat2-7B-16K
[x] chatglm3-6B
[x]  YI-6B
[ ] Lingowhale-8B (Currently not supported.)
[ ] Chinese-LLaMA-2-7B

benchmark command
python3 -m benchmark.benchmark_serving \
--backend vllm \
--port 8080  \
--dataset ./ShareGPT_V3_unfiltered_cleaned_split.json \
--tokenizer <tokenizer dir> \
--trust-remote-code \
--obo-num 20 \ # Number of One By One requests
--input-lengths 128,512,1024,2048 \
--num-prompts 399  \
--output <output file path>

Thank you very much! Next time please submit 1 benchmark per PR so that

We can have better control of the project progress.
It's easier to review


Add op(roll) | feat(torchlib)

In _roll_input_wrangler:

convert shifts from int to tensor
convert dims from int or tensor to attributes list, so we can use loop in trace_only mode to process aten_roll(x, (y1, y2), (z1, z2)) case.

dims is a Sequence that is by default empty: int[1] dims=[]. It will not be None, or an int.

LGTM. The last batch of comments mostly around updating the signature/logic to match the aten signature.

Thank you!


use tmpfs instead of mkdir

https://lists.gnu.org/archive/html/help-guix/2024-01/msg00027.html points out that the XDG_RUNTIME_DIR could be handled better as a tmpfs mount. That said, it seems to be working okay as-is, so I'm not sure it will be worth fixing.

Fixed in 0.2 series


Incompatible with (at least) IntelliJ 2021.1.1

It is not possible to install this plugin for recent intellij versions.

IntelliJ IDEA Ultimate — 2020.3.3 — 2020.3.4

https://plugins.jetbrains.com/plugin/13954-prolog/versions/stable/116226

Although I'd suggest you to upgrade your IntelliJ IDEA. It's true that the plugin should support IDEA older than 2021.3. I'll see if there's a way to address this problem in next release.
For now you can try install older releases of this plugin as a makeshift solution.

Since 6bd2399 the plugin supports IntelliJ IDEA 2022.2.2, for which I shall consider this issue could be closed


radio dont work

the police radio system is not working

Have you configured a TURN server?

could you pass me a tutorial to set it up?

https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html

Issues are not for help.


add appendTo option

Attach Remodal wrapper DOM element to something other than document.body.
The reasoning behind this is that in component based UI's using libraries like React in real-world applications it is necessary to integrate 3rd party DOM manipulation libraries with the component architecture and lifecycle. Not being able to attach the modal to a component violates principles behind component based UI design by bleeding abstractions across components and will make your application more difficult to reason about and test.
It is recommended that the DOM that is rendered by react should not be mutated otherwise when it comes to re-render the component it cannot reconcile the differences and throws an error. There are some circumstances where it is acceptable, and by making this change we can use the Remodal library in component-based UI's by simply opening and closing the modal in the lifecycle hooks.

@VodkaBears is there any plan for merging this PR? We also have an Ember addon (ember-remodal) where this PR would be REALLY helpful.
Thank you guys (@VodkaBears && @deyceg)


MRTK Examples Hub

Overview
Based on our customer feedback, created MRTK Example Hub scene to make it easier to try out multiple example scenes without building & deploying each of them. It uses MRTK's Scene System.
Please check out new documentation in this PR for more details.
Changes

Added a new scene MRTKExamplesHub
Added materials/prefabs for the Hub scene's buttons
Updated some example scenes to normalize the size, distance, and position. (No code/content changes)
Added MRTKExamplesHubSceneSystemProfile for easier configuration. (includes the list of the example scenes)

Screenshots

Video
https://twitter.com/cre8ivepark/status/1154856489661554688?s=20

Awesome stuff! Have you tested FPS for all the scenes we demo here?

Updated ToggleFeaturesPanel pefab to show the Hub Home button only when it is used under Scene System.

Now it supports Eye Tracking scenes! Thanks @Cameron-Micka @sostel !

Updated ToggleFeaturesPanel pefab to show the Hub Home button only when it is used under Scene System.

Where else is it used?

Updated ToggleFeaturesPanel pefab to show the Hub Home button only when it is used under Scene System.

Where else is it used?

ToggleFeaturesPanel is prefab. Developers can include it to any scenes for Profiler/Hand Joint/Mesh control.

Where else is it used?

@sostel ToggleFeaturesPanel is prefab. Developers can include it to any scenes for Profiler/Hand Joint/Mesh control.

@cre8ivepark Ah cool! Good to know!

Working on some additional documentation.

Updated documentation:
https://github.com/cre8ivepark/MixedRealityToolkit-Unity/blob/mrtk_development_ExamplesHub/Documentation/README_ExampleHub.md
TODO: @Cameron-Micka @sostel Add a quick summary of why and how we are switching the profiles in the code.

Updated documentation:
https://github.com/cre8ivepark/MixedRealityToolkit-Unity/blob/mrtk_development_ExamplesHub/Documentation/README_ExampleHub.md
TODO: @Cameron-Micka @sostel Add a quick summary of why and how we are switching the profiles in the code.

@sostel do you want to write this part since you implemented the profile switching? If you don't have time I'm happy to write something up too.

Updated documentation:
https://github.com/cre8ivepark/MixedRealityToolkit-Unity/blob/mrtk_development_ExamplesHub/Documentation/README_ExampleHub.md
TODO: @Cameron-Micka @sostel Add a quick summary of why and how we are switching the profiles in the code.

@sostel do you want to write this part since you implemented the profile switching? If you don't have time I'm happy to write something up too.

Sorry, slow follow up. Was out yesterday. I was still discussing with a few folks (see thread above) whether the way that I "hacked" it, is the best way to proceed and to document. We may not want to encourage the way I did it? 😬

Updated documentation:
https://github.com/cre8ivepark/MixedRealityToolkit-Unity/blob/mrtk_development_ExamplesHub/Documentation/README_ExampleHub.md
TODO: @Cameron-Micka @sostel Add a quick summary of why and how we are switching the profiles in the code.
@sostel do you want to write this part since you implemented the profile switching? If you don't have time I'm happy to write something up too.
Sorry, slow follow up. Was out yesterday. I was still discussing with a few folks (see thread above) whether the way that I "hacked" it, is the best way to proceed and to document. We may not want to encourage the way I did it? 😬

No worries! That is a good point. If we know the delta between the normal profile and eye tracking profile we can try and mutate the state of the exiting profile at runtime like @StephenHodgson suggested. I wish profiles could inherit from each other, so it was easier to figure out that delta. 😥

Updated documentation:
https://github.com/cre8ivepark/MixedRealityToolkit-Unity/blob/mrtk_development_ExamplesHub/Documentation/README_ExampleHub.md
TODO: @Cameron-Micka @sostel Add a quick summary of why and how we are switching the profiles in the code.
@sostel do you want to write this part since you implemented the profile switching? If you don't have time I'm happy to write something up too.
Sorry, slow follow up. Was out yesterday. I was still discussing with a few folks (see thread above) whether the way that I "hacked" it, is the best way to proceed and to document. We may not want to encourage the way I did it? 😬

No worries! That is a good point. If we know the delta between the normal profile and eye tracking profile we can try and mutate the state of the exiting profile at runtime like @StephenHodgson suggested. I wish profiles could inherit from each other, so it was easier to figure out that delta. 😥

Yeah, I agree with them and you :D that replacing the entire config profile is ... eh... excessive :D  Would be lovely to simply exchange the Input Profile though dumdidum This is not just for my specific profile, but imagine bigger projects with lots of different scenes where users would like to clearly distinguish different sets of voice commands (instead of one veeeery long list of voice commands for the entire project). Even within one scene it would be nice to be more flexible in exchanging input states based on user preferences. Would be awesome if we could find a generic, flexible and convenient way to achieve this without tailoring it too much to our specific case here :)

@cre8tivepark can you resolve the conflicts here?

@sostel It still shows the gaze cursor in non-ET scenes. Could you please check?

@sostel There was a merge conflict in BaseCursor.cs. I resolved it by taking the prerelease branch.
Could you please take a look and see if you need to bring your changes?
Sophie's change - https://github.com/cre8ivepark/MixedRealityToolkit-Unity/commit/1bacb4a685aa06a751e951d004f4bd3fbe4eec99#diff-89d7de97a7cae3c9e2c96ea7bc566646
Conflicting changes in the prerelease branch - https://github.com/microsoft/MixedRealityToolkit-Unity/pull/5374

@sostel It still shows the gaze cursor in non-ET scenes. Could you please check?

@sostel There was a merge conflict in BaseCursor.cs. I resolved it by taking the prerelease branch.
Could you please take a look and see if you need to bring your changes?
Sophie's change - cre8ivepark@1bacb4a#diff-89d7de97a7cae3c9e2c96ea7bc566646
Conflicting changes in the prerelease branch - #5374

I'm at a full-day offsite today and tomorrow. So probably won't be able to take a look before Wednesday.

/azp run

Added DO NOT MERGE label since the gaze cursor/hand-ray on/off issues need to be addressed. Currently, it is broken.

Current status:

Eye gaze cursor is always visible
When you start using hand ray, hand interaction stops working


Installing 1.8.4 through Nuget does not update all the needed configuration reliably (targets) in the csproj files

Typescript version: 1.8.4 installed via Nuget (both MSBuild and Compiler packages)
We're an issue where some projects in our solution will compile correctly on our development environment, but not the the Build Server; We're using TSF and MSbuild
The solution consists of multiple Projects defining the presentation layer, written in Typescript and when compiled outputs a single SystemJS Module Bundle. The compilation step is done by Visual Studio / MSbuild
For some reasons, when running the build on TFS, it searches for some JS files, only in some projects
I have no ideas where it references those files, as they don't exist anyways (and they're not meant to)
To be clearer, think of project A that has multiple TS files:
    /projectA.export.ts                <- export/imports from the other files
    /folder1/someService.ts        <- exports a class
    /folder2/somethingElse.ts     <- exports a class
   /and so on

The output for this project is going to be a single file called say projectA.bundle.js that expeses all modules, so we can later do import {someService} from 'projectA'
So we never compile discrete TS to JS (these is no projectA.export.js or someService.js), and yet, TFS tries to locate them and wants to copy the somewhere
Anyone has ideas of what could be going on?
This is the relevant part of the ouput we get from the TFS build:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets (182, 0)
Could not copy the file "infrastructure.export.js" because it was not found.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets (182, 0)
Could not copy the file "_references.js" because it was not found.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets (182, 0)
Could not copy the file "database\issueTrakDatabase.service.js" because it was not found.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets (182, 0)
Could not copy the file "masterData.webmodel.export.js" because it was not found.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets (182, 0)
Could not copy the file "masterData.webmodels.js" because it was not found.
Exception Message: MSBuild error 1 has ended this build. You can find more specific information about the cause of this error in above messages. (type BuildProcessTerminateException)
Exception Stack Trace: at System.Activities.Statements.Throw.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

Update:
Seems that the issue was caused by conflicting <import> statements in the CSPROJ files
For some reasons, installing the Nuget packages didn't update/override all the needed configuration in there, for most projects (a few were fine). The strange thing is that beside the names, those projects are almost identical in term of configuration
I'll update the title to reflect this

The install script will only remove the imports that were added by default (e.g. in the default template). it literllay looks for the string:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

if you have changed that, or added it manually, or are using a custom import to inject all your targets in your projects, then it will not be removed; and you will need to remove it manually.
I will update the docs to reflect that: https://github.com/Microsoft/TypeScript/wiki/Configuring-MSBuild-projects-to-use-NuGet

@paulvanbrenk is there anything we can do here to make the experience better?

@OClement can you send me one of the project files where the NuGet install doesn't work as expected? (Preferably on a gist).

Sure
I just won't be able to do this now though
But I'll keep that in mind and post one as soon as I can
Thanks for the update
O.

Le 24 févr. 2016 à 14:06, Paul van Brenk<EMAIL_ADDRESS>a écrit :
@OClement can you send me one of the project files where the NuGet install doesn't work as expected? (Preferably on a gist).
—
Reply to this email directly or view it on GitHub.

We are having the same issue on the build machine; however, NuGet isn't a factor - we didn't install via the Nuget packages.
We are using a tsconfig.json file in the project and compiling to one output file.  When building on the server, we get the same behaviour where the build is attempting to copy .js files that don't exist.  Build seems to work when the tsconfig file is absent and the project settings are used.

@darrengillis
In our case, when we had those errors, it looked as if Typescript wasn't running at all
You might want to look in your csproj files and check the configuration you have in there
What I did to help isolate the problem is to remove all VS Typescript Tools, rename the typescript folder under `Microsoft SDKs1 folder in program files, to make sure that it couldn't find any TSC.exe in there, and kind of force MSbuild to use the one installed by Nuget
If you haven't installed TSC from nuget, then you must have installed it some other way; If you're using the VS Tools, you must make sure you have them on your build server as well. If you don't plan on using that, then either the nuget version or the npm version (ran through other build script) is what you need
Hope this help
@paulvanbrenk
Unfortunately I won't be able to provide a csproj anytime soon, sorry about that!

We are using VS Tools locally and on the server.  I can reproduce this locally running the similar build command that exists on the server:
"C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe" ".\Solution.sln" /nr:False /fl /p:SkipInvalidConfigurations=true /p:VisualStudioVersion=14.0 /m /p:OutDir="......\bin\" /p:Configuration="Release" /p:Platform="Any CPU"
This fails with the same output complaining about the .js files not being found.
Removing the "OutDir" resolves the TS issue but then any relevant assemblies are not copied (expected behaviour).  We need the assemblies copied and we don't need the build looking for the .js files.
This did work when using the project config settings and not tsconfig.  Removing the "out" attribute from tsconfig allows the build to succeed but this is most likely only because the .js files do now exist for the build to find/copy

@darrengillis  you're probably seeing #7322


Feature request: integrate with native scala compiler

The graal team at Oracle has put together instructions for how to compile the scala compiler to a native image:
https://github.com/graalvm/graalvm-demos/tree/master/scala-days-2018/scalac-native
https://www.youtube.com/watch?v=lQNXwb66eQ8
It would be nice to have an option in Gradle to use this instead of the JVM-hosted compiler.
This would reduce the time currently taken by JVM + GradleWorkerMain startup in compileScala and compileTestScala tasks.
Expected Behavior

org.gradle.api.tasks.scala.ScalaCompile could have an option to use the native scalac image and use that instead of starting another JVM for the compiler.
It could start with no incremental compilation support (zinc).
Current Behavior

ScalaCompile runs zinc/scalac as a java program in a gradle worker jvm, which incurs a startup cost.
Context

Trying to reduce the time spent in compileScala, compileTestScala, compileScoverageScala, and compileTestScoverageScala tasks -- especially in a multi-project build with lots of small subprojects (invoking the compiler lots of times).

The compiler worker is reused across compile tasks, so a native image won't save you much. At some point we'll even reuse them across builds, making a native image even less useful. So it's really not worth the extra complexity I think.


How to close colorpicker on touch screen?

Hello! This is a great Directive! I am using it in a mobile app, and it works fine except that I can't seem to close it once it's open. How would I go about it?

Color-dragging does not work in touch mode.


feat: instantiate2

So I'm against the idea about putting Token Generation Event (TGE) contracts into genesis:

It's pain to debug init scripts
It's almost impossible to predict start of cosmopark so you'll have to set really loose periods for contracts phases so it will take really long to run test
You'll have to maintain two repos instead of one
You can't deploy several sets of contracts
It's ugly
There is Instantiate2 msg which can help us avoid it.
I've added the proto into this PR and added this Msg into codec so now it can be used without replacing cosmos-client js lib

well. it seems address depends on instantiate msg which is ridiculous


🚧Refactor unit test assertions

Description:
To allow this pull request to be merged, please make sure that the following items of this pull request are complete.
This pull request closes #108
✅The pull request head branch must be a feature branch with the syntax 'feature/-sync-testing'.
✅The pull request base branch must be a 'main' or 'preview' branch..
✅The pull request head branch contains a valid issue number.
✅The pull request title matches the linked issue title exactly.
✅The pull request assignees match the assignees of the issue.
✅The pull request labels match the labels of the issue.
✅The pull request organizational projects match the organizational projects of the issue.
❌The pull requests milestone matches the milestone of the issue.

Additional Info:

Pull requests are automatically synced with the associated issue upon creation by one of the KinsonDigital workflow bots.
The associated issue is the issue number that is embedded in the pull request head branch.
The list above will be automatically updated as the pull request's various settings match or do not match the associated issue.
To manually sync the pull request to the issue, create a comment with the [run-sync] command.

Note You must be an admin member of the organization to use this command.

[x] Sync with the issue.  Use this to enable or disable this pull request from syncing with its associated issue.

[run-sync]


Because both the window_manager plug-in and this plug-in use NSWindowDelegate, there is an incompatibility problem between the two, which will cause all monitoring in window_manager to fail. This problem has been encountered in the macos_ui library.

  // === Closing Windows ===

  /// Tells the delegate that the user has attempted to close a window or the
  /// window has received a `performClose(_:)` message.
  void windowShouldClose() {}

Can this interface add a boolean return value? Used to control whether the window needs to be closed

The WindowManipulator’s initialize method has a named parameter called enableWindowDelegate. If it is set to false, macos_window_utils will not use the NSWindowDelegate.
Adding a return value to the Dart code is impossible due to the asynchronous nature of the platform channels, however, it’d be possible to override the return value of the windowShouldClose method of the FlutterWindowDelegate.
I’ll assign myself.

I know this method, but in macos_ui, When initializing the window using the following code：
 const config = MacosWindowUtilsConfig();
 await config.apply();

  Future<void> apply() async {
    WidgetsFlutterBinding.ensureInitialized();
    // Here is true
    await WindowManipulator.initialize(enableWindowDelegate: true);
    await WindowManipulator.setMaterial(
      NSVisualEffectViewMaterial.windowBackground,
    );
    if (enableFullSizeContentView) {
      await WindowManipulator.enableFullSizeContentView();
    }
    if (makeTitlebarTransparent) {
      await WindowManipulator.makeTitlebarTransparent();
    }
    if (hideTitle) {
      await WindowManipulator.hideTitle();
    }
    await WindowManipulator.addToolbar();

    await WindowManipulator.setToolbarStyle(
      toolbarStyle: toolbarStyle,
    );

    if (removeMenubarInFullScreenMode) {
      final delegate = _FlutterWindowDelegate();
      WindowManipulator.addNSWindowDelegate(delegate);
    }

    if (autoHideToolbarAndMenuBarInFullScreenMode) {
      final options = NSAppPresentationOptions.from({
        NSAppPresentationOption.fullScreen,
        NSAppPresentationOption.autoHideToolbar,
        NSAppPresentationOption.autoHideMenuBar,
        NSAppPresentationOption.autoHideDock,
      });
      options.applyAsFullScreenPresentationOptions();
    }
  }

It has actually set the parameter to true and relies on this parameter. I cannot modify it and may produce unpredictable behavior, such as the toolbar not being removed correctly, etc.
Do you have any idea to handle this ?

macos_window_utils 1.5.0 now provides the following methods:

preventWindowClosure
allowWindowClosure
isWindowClosureAllowed
closeWindow
performClose

These will allow you to prevent the window from being closable by the user as well as close the window programmatically.


Refactored migrations to use helpers

this removes a lot of code duplication and streamlines how we do
things across the codebase

@allouis @tpatel This PR should be ready for review now. It's just some more refactoring of 'add column' and 'add table' migrations that I missed last time. I've double-checked the columns myself, but can't hurt for others to look too 😀
I think it's easier to check commit by commit and you can keep context on what to check for.

Should the addTable helper be taking a static definition of the table at the point in which the migration was added, similar to our column migrations?
e.g.
addTable('name', {
  column: {definitions: 'here'}
});

@allouis Probably. When adding it to old migrations, should it be the column definition at the time the migration was created, or the current definition? 🤔
For this PR, I'm just bringing the migrations in line with each other - I can look into the column definition thing in a future one. 🙂

For this PR, I'm just bringing the migrations in line with each other - I can look into the column definition thing in a future one.

:ok_hand: Seems reasonable to me!

When adding it to old migrations, should it be the column definition at the time the migration was created, or the current definition?

Good question: IMO it should be the column definition at the time the migration was created - as that captures what was intended when it was written - BUT if it's a huge pain in the arse, current definitions won't hurt.


convert mdx components in web app to mdx components package

Closes #1103
Things to check

[ ] Did we remember to remove the components from components.js?
[ ] Did we remember to add each component to mdx-components/src/main/index.ts?
[ ] Did we remember to add the styles for each component to mdx-components/src/main/index.scss?
[ ] Did we remember to move over the stories files?
[ ] Did we remove all components that are re-exports of carbon ones in favor if the core carbon version?
[ ] Did we remember to update the unit test snapshots?
[ ] Did we remember to export the typescript props interface from each component (and export it from index.ts)?

Open questions

[ ] What do we do about the pages/mdx files. Should they be roped into the storybook stories in the mdx-components package?

Testing / reviewing
Compare the component visuals and functionality to what they were before the conversion.

@jdharvey-ibm @alisonjoseph we shouldn't need this page, once all of these MDX components are documented in individual Storybook stories.
https://next.carbondesignsystem.com/mdx

@mattrosno @jdharvey-ibm Let's wait until everything looks good and is approved before removing the test mdx pages, so we can review things in the site easily and compare to live.

we removed most prop warnings @jdharvey-ibm and the ones left behind are reasonable!


Use jte 1.0.0.

Hey @tipsy!
I finally considered jte stable enough to release a 1.0 version! I also built a small landing page for it with Javalin (https://jte.gg/).
Sorry about the jte tutorial delay, gonna sit down and write it the next days. It probably makes sense to publish it after the next Javalin version is out, right? Otherwise people won't have the extension and might be confused.

Congratulations @casid, getting to 1.0.0 is huge (most projects never make it).
I like your landing page, the gif showing the plugin is great. The "Why jte" section is a bit hard to read, did you consider using bullet points?

I think focusing on what makes your engine unique (compile time checks and intellij plugin) makes more sense than "easy to learn and fast", which is arguably true for a lot of engines.
You should share the news to online communities (reddit/hackernews) when you're ready. Especially if you frame it as "I just brought my first open-source project to version 1.0.0, people tend to be very receptive :)

Sorry about the jte tutorial delay, gonna sit down and write it the next days. It probably makes sense to publish it after the next Javalin version is out, right? Otherwise people won't have the extension and might be confused.

Yes, I agree. I can release 3.10.0 when you have the tutorial ready.

Awww thank you so much @tipsy! Just came home from work and read all your amazing feedback.
I've updated the website. You are right, the features make a lot more sense in that order. They also read a lot better after your suggestions. And the bullet points look a lot better and are more readable. Very, very much appreciated!
I've shared a post about it on hackernews this morning, but didn't receive a lot of feedback. Maybe the hackernews community is not soo excited about Java. Reddit is a good point, gonna give it a try soon!
I'm pretty sure to finish the tutorial this weekend :-)

You're very welcome! Try r/java and r/programming, let me know if you want help with the post.

I'm pretty sure to finish the tutorial this weekend

Looking forward to it :)


List: types not taking effect - "square", "circle" etc

Expected Behavior

"List" was supposed to render shape, ex: square, circle when appropriate "type" is passed in props.

Current Behavior

Sample Code:
import<EMAIL_ADDRESS>import { List, ListItem } from "@hover-design/react";

export default function App() {
  return (
    <div className="App">
      <List type="square">
        <ListItem>One</ListItem>
        <ListItem>Two</ListItem>
      </List>
    </div>
  );
}

Possible Solution

Steps to Reproduce (for bugs)

Copy the above sample code
Try it in CodeSandbox or your local project

Context

Your Environment

Version used: 0.1.8
Browser name and version: Safari 16.0, Chrome 105.0.5195.125
Operating System and version (desktop or mobile): macOS Monterey 12.6
Link to your project:

To add to that, list items get wrong classname assigned, fixed in #106


Add deploy with Core Tools to this Azure Functions doc that is #1 on Google, but very outdated

I submitted this product issue which has more context and detail on what I ran into, but long story short, deploying with Functions Core Tools is the preferred way to deploy, but it is missing from this how-to.
As I mentioned in that issue, this article is the number 1 result on google if you search for "azure functions how to zip deploy", and it's number 2 if you leave out "zip" and only search "azure functions how to deploy". This has serious search traffic yet is very misleading with what it suggests. Metadata is also very out of date.
I asked the dev in that issue if the other 3 deploy options listed here (AZ CLI, REST, Publish-AzWebapp) should be in here at all, or excluded. It seems to me that at best they can work, and at worst (which was my case) they just won't work. Either way, the very first section here should be an H2 Deploy with Core Tools, and have similar instructions to this how-to. It would be important to mention that the Core Tools can do everything (including the compressing), for you.
Then I would make it clear that the other options require a manual zip, and are fallbacks to using Core Tools and may not work.

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

ID: 4581be64-415a-804a-0a45-25b6976095c3
Version Independent ID: 0cae0e82-c263-e2cf-ea54-a783291f5746
Content: Zip push deployment for Azure Functions
Content Source: articles/azure-functions/deployment-zip-push.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

Thanks @trevorbye for the very good suggestion, and for the SEO info as well. I'm planning to work on zip deploy/run-from-package updates soon and will make sure to include your suggestions. #assign:ggailey777

@ggailey777 no problem, thanks for the responsiveness and taking a look!


why this block?

it is the same as just single 1x1xc conv.

It is not the same as a single 1x1 conv. you have in this case 2 kernels

same as groups=2
https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html


Feature/new oci images conventions

See https://github.com/iExecBlockchainComputing/iexec-result-proxy/pull/30


Candidates doesn't contain all candidates

Hi, i'm learning FIC and find an important error from your codes.
Rotating and flipping domain blocks makes 8 different blocks but 'zip' function doesn't do this correctly. The function zip allows lists(or something) which sizes all equal and concatenate element-wise.
candidates = list(zip(directions, angles))
I found that code makes only 2 candidates (1,0) and (-1,90). It can be corrected using 'itertools.product':
candidates = list(itertools.product(directions, angles))
It will increase the performance i think :)

Oh yes, you're right. Nice catch!
Do you want to do the PR?

Yeah it needs no additional library, good!
I want to do PR using that code. It took some time to me to understand that procedure since i'm almost new to git branching system. haha now i'm done

Haha first time is hard but you did well.
Have a nice day (or night)!


Writes log records twice. How to fix?

writes log records twice. How to fix? Here is code:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// Create the logger
$logger = new Logger('my_logger');
// Now add some handlers
$logger->pushHandler(new StreamHandler(__DIR__.'/test.log'));

// You can now use your logger
$logger->info('My logger is now ready');
$logger->info('Adding a new user', array('username' => 'Seldaek'));

Here is test.log:
~/code/proj$ cat test.log
[2018-08-07 16:01:30] my_logger.INFO: My logger is now ready [] []
[2018-08-07 16:01:30] my_logger.INFO: Adding a new user {"username":"Seldaek"} []
[2018-08-07 16:01:30] my_logger.INFO: My logger is now ready [] []
[2018-08-07 16:01:30] my_logger.INFO: Adding a new user {"username":"Seldaek"} []

Just tested this code and works as it should (server and cli). @wyattbiker can you please add more context to this issue (PHP version, etc) ?

@Seldaek Could I ask what caused duplicate logging?


Replace Bootstrap NgbModal with NzModal in the Workflow Execution

Replace Bootstrap NgbModal with NzModal in the Workflow Execution in order to remove Bootstrap.

There are some ngb modals still. do you want to double check?

That's the ngb modal for workflow Sharing.

There are some ngb modals still. do you want to double check?

That's the ngb modal for workflow Sharing.

Ok. Then do you want to keep those changes outside of this PR's scope?

Yes, I will remove it in a separate PR.
Sincerely,
Xinyuan Lin
On Sun, Feb 4, 2024 at 14:38 Yicong Huang @.***> wrote:

There are some ngb modals still. do you want to double check?
That's the ngb modal for workflow Sharing.
Ok. Then do you want to keep those changes outside of this PR's scope?
—
Reply to this email directly, view it on GitHub
https://github.com/Texera/texera/pull/2355#issuecomment-1925950171, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYCN6V5XTSZ446EWBNVPUTYSAEXHAVCNFSM6AAAAABCYP7MEKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRVHE2TAMJXGE
.
You are receiving this because you were assigned.Message ID:
@.***>


Unable to sort the site, as in 1.x

It looks like its functioning.
https://user-images.githubusercontent.com/31608805/232842186-4678b94c-822f-4f8c-bfb0-b3a4acb4a213.mp4

I get it, thanks!


docs: Correct the preposition reversed

You have to run this action before npm ci because npm ci removes node_modules first. If you don't, this action will lose its effect.

↓

You have to run this action after npm ci because npm ci removes node_modules first. If you don't, this action will lose its effect.

I made the mistake of reversing the preposition in #20. The example workflow is correct.

Thank you for updating the commit message.


introspectionQuery imported as undefined

I'm working on getting a copy-paste version of your test suite working but I'm running into the error that seems to indicate that the introspectionQuery imported from the graphql package is undefined.
Error: Must provide Source. Received: undefined.

Any insight into this would be super helpful.

Fixed in<EMAIL_ADDRESS>

Fixed in<EMAIL_ADDRESS>


Cannot parse the LEFT JOIN expression

It seems that the join syntax is not supported, here is a simple test
with t1 as ( select 1 as value ), t2 as ( select 2 as value ) select * from t1 left join t2 on true

line 0:84 <EOF> or ';' was expected, but got: "join"
with t1 as ( select 1 as value ), t2 as ( select 2 as value ) select * from t1 left join t2 on true

refer #37


Push all tags

Hi, could you please push all the tags?

Hi, I'm really not sure what you are asking for here. In any case, I'm happy to merge pull-requests.

https://github.com/bennoleslie/pexif/tags is empty.

That is because there aren't any tags.
I'm not really sure what problem you are having. What tags would you like?


Apache License or GPL?

Hi,
this project looks great, especially the image processing is awesome.
I wonder whether this is available under the Apache License 2.0 or under the GPL. There seem to be conflicting parts, the root of the project contains a license file saying it's Apache, but many file headers say it's GPL (e.g. https://github.com/renard314/textfairy/blob/master/image-processing/src/dewarp.cpp)
Best
Andreas

Basically all c++/c code written by me is GPL. So the header is correct. The rest of the app is  Apache2.


No support for SameSite cookie directive

Affected Version
All versions
Description
Cookies support an additional directive SameSite which we have no way of supporting in the current Cookie implementation (due to lack of parameters).
This is a problem because sites running over HTTPS and in iframes need to explicitly set this directive otherwise the cookies are not set (including session cookies).
Further support for SameSite in php's cookie functions has been added in 7.3.0, so anyone running older versions of PHP is going to struggle unless we completely rework how we set cookies.
Further info https://web.dev/samesite-cookies-explained/
I've managed to hack this together on a site of mine to make sure it works, but it does involve disabling PHP's native cookie handling for sessions and also manually setting cookies via adding set-cookie headers rather than using PHP's setcookie API.
Acceptance criteria

[ ] Feedback on Matt's PR is addressed
[ ] People can opt-in to use this feature in when setting their cookies
[ ] Sensible default value is provided (Lax, Strict or none)
[ ] Relevant doc is updated

Pull requests

[ ] https://github.com/silverstripe/silverstripe-framework/pull/9842

Seems like Matt's solution is pretty close to done. Might be worth taking this through a quick grooming to figure out what we want to do with it.

Matt's solution could have backwards conpatability concerns - there's another PR #9920 which takes the approach using config instead. I'm going to base a new PR off this, and in review we can discuss the merits and fallbacks.
I think for now having the ability to configure some value is better than nothing, and I'd like to avoid breaking anyone's custom cookie code (if, for example, someone implemented this in their own project, they may be subclassing some of our cookie classes and overriding the public methods, so any new parameters there would break their site). Adding it as a parameter would be a good exercise for a major.


v3.5.x changes the http response status codes

Pre-requisites

[X] I have double-checked my configuration
[X] I have tested with the :latest image tag (i.e. quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on :latest. If not, I have explained why, in detail, in my description below.
[X] I have searched existing issues and could not find a match for this bug
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened? What did you expect to happen?
In the latest images some endpoints change their status responses.
When a call this endpoints:

Calling the API with an invalid token.
Calling the API with a token without enough permissions.

I start returning a 404 when in previous version (3.4.x) the status code was a 401.
Also when:

Calling the API to stop a non existing workflow.
Calling the API to resume a non existing workflow.
I stop returning a 404 when in previous version (3.4.x) the status code was a 404.

Version(s)
v3.5.x
Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
It's an http call, not related with the workflow itself.

Logs from the workflow controller
Nothing to show.

Logs from in your workflow's wait container
Nothing to show.

Looks like this was duplicated/superseded by #13558 by a different user. Please try not to open multiple duplicate issues as issues are permanent and it is more to keep track of.

Yeah it was me with another account, sorry.

There's no way to delete issues 😕. Only GH support can do it and that's usually only for a security reason (publicly exposed token or vuln, etc)