Add custom .ttf font results in vertical scaling of font texture, but does not update the glyphs

Hey everyone. I am working on implementing custom fonts and have looked high and low to solve my issue (Here, DearImGui, Veldrid Discord), but to no avail. Occasionally it seems some people have had the same problem, but tbh, the comments haven't been very helpful in figuring it out.
I am using the ImGui.NET.SampleProgram to try and load fonts as a test for now.
IDE is Jetbrains Rider and I'm currently developing on Linux Mint 22 Cinnamon
CPU: i7-8750H
GPU: Nvidia GTX 1060M
The font gets loaded, however when I call the RecreateFontDeviceTexture(), the glyphs from the font aren't being used, but the size of the texture is still changing. Perhaps the return pixel data of the GetTexDataAsRGBA32() is not getting updating with the ttf font I am using? I have no idea. Please excuse me if this is a beginner's question. This is my first time dealing with low-level rendering engines and ImGui, so it's taking me some time to learn how these things work and what you need to be aware of.
Here is everything I know to possible help out.
Font Atlas Texture after recreating font device texture

The vertical scaling here is based on the size of the new font I put in. Large font size = more vertical scaling
Adding font with a size of 64f (cropped)

The UV values for the font quads change when setting a new default font

Default ImGui font

My custom ttf font
How I am adding the font
_controller = new ImGuiController([The input params]);

//The TTF file gets copied to the build directory and the files are setup on program start.
ImFontPtr font = ImGui.GetIO().Fonts.AddFontFromFileTTF(Path.Combine(_fontRootPath, "AlteHaasGroteskBold.ttf"), 16f, null,
ImGui.GetIO().Fonts.GetGlyphRangesDefault());

_controller.RecreateFontDeviceTexture(_gd);

And just for reference - the RecreateFontDeviceTexture() function
public void RecreateFontDeviceTexture(GraphicsDevice gd)
{
       ImGuiIOPtr io = ImGui.GetIO();
       IntPtr pixels;
       int width, height, bytesPerPixel;
       io.Fonts.GetTexDataAsRGBA32(out pixels, out width, out height, out bytesPerPixel);
       io.Fonts.SetTexID(_fontAtlasID);

     _fontTexture = gd.ResourceFactory.CreateTexture(TextureDescription.Texture2D(
                (uint)width,
                (uint)height,
                1,
                1,
                PixelFormat.R8_G8_B8_A8_UNorm,
                TextureUsage.Sampled));

     _fontTexture.Name = "ImGui.NET Font Texture";

     gd.UpdateTexture(
                _fontTexture,
                pixels,
                (uint)(bytesPerPixel * width * height),
                0,
                0,
                0,
                (uint)width,
                (uint)height,
                1,
                0,
                0);

     _fontTextureView = gd.ResourceFactory.CreateTextureView(_fontTexture);
     io.Fonts.ClearTexData();
}

Welp, I solved it.
If anyone is using the ImGuiController.cs class, which comes with the ImGui Sample Program, here is the solution.
Steps

Add this to the RecreateFontDeviceTexture() function after creating the _fontTextureView.

_fontTextureResourceSet?.Dispose();
 _fontTextureResourceSet = gd.ResourceFactory.CreateResourceSet(new ResourceSetDescription(_textureLayout, _fontTextureView));

Go to the CreateDeviceResources() function and move the RecreateFontDeviceTexture() function call to the bottom of the function
Delete the _fontTextureResourceSet = factory.CreateResourceSet(new ResourceSetDescription(_textureLayout, _fontTextureView)); line from the CreateDeviceResources() function

I guess what happens is the texture gets updated, but the resource doesn't get updated? I have no idea, but all I know is that it updates the texture atlas.


CMS -> GS Connector API

Required for things like friends.

Implemented locally, implementing buddies among with this addition.


Should dask-mpi section be marked as not necessary in the docs?

See http://dask.pydata.org/en/latest/setup/hpc.html#using-mpi.
While working on and with dask-jobqueue, in particular on doc issues (See #118), I stumble on the question of dask-jobqueue for batch processing. I believe this is OK and will work in many cases (I've already used it this way), but it won't in some others where dask-mpi would be appropriate. See the part of the doc I'm working on:

While dask-jobqueue can perfectly be used to submit batch processing, it is
better suited to interactive processing, using tools like ipython or jupyter
notebooks. Batch processing with dask-jobqueue can be tricky in some cases
depending on how your cluster is configured and which resources and queues you
have access to: scheduler might hang on for a long time before having some
connected workers, and you could end up with less computing power than you
expected. Another good solution for batch processing on HPC system using dask
is the dask-mpi <http://dask.pydata.org/en/latest/setup/hpc.html#using-mpi>_
command.

Maybe we should clarify this between us and also in Dask docs?
cc @jhamman

I generally agree with the comments above. Though, https://github.com/dask/distributed/issues/2138, if implemented, would alleviate many of the relevant concerns here.

At first I thought so to, but I'm not so sure anymore. Depending on cluster use, resolving this issue could lead to scale method never returning, or returning at a ressource optimum that could decay right after depending on jobs start time and walltime. Different outcome, but mainly same concerns as described above.
The only way to solve this with dask-jobqueue would be to make it able to launch multi-node jobs with worker on it. But currently we've agreed on it being out of the scope of dask-jobqueue.


Investigate transaction delays

While sending money, the transaction of the sender is complete almost instantly, but the receiver has Pending for a longer time.
We should investigate if we can reduce the time that the transaction stays on Pending and becomes Completed.

One possible reason we might experience some transaction delays is that we set an expiry (2 minutes) for created incoming payments when making a payment directly to a payment pointer.
https://github.com/interledger/testnet/blob/3529d3a6f25180b9075216f83bd2be91dba91148/packages/wallet/backend/src/quote/service.ts#L112-L123
The reason for doing this is that in a FixedSend + payment pointer scenario, the incoming payment is created with no incomingAmount since we do not know how much liquidity the receiver should get. One option could be to manually complete the incoming payment, but we do know when this specific incoming payment is completed. Therefor, currently we wait for the incoming_payment.expired webhook and then mark the incoming payment as completed.


solving --help crash for pins2lts-mc

see comment on issue : https://github.com/utwente-fmt/ltsmin/issues/120

sorry to reopen, but it's not solved really
looking at the code, I believe the issue is that the help print is not protected against main proc only printing :
this is correct : https://github.com/utwente-fmt/ltsmin/blob/next/src/pins-lib/pins.c#L1220
this seems unprotected (though similar in nature) : https://github.com/utwente-fmt/ltsmin/blob/next/src/hre/hre_popt.c#L83
(same thing for printUsage just below, same function)

this behavior is still buggy, see test runs here :
https://travis-ci.org/yanntm/DockerMemoryTest
Relevant part of trace
$ lts_install_dir/bin/pins2lts-mc --help

Usage: pins2lts-mc [OPTIONS] <model> [lts]

Perform model checking on <model>

Options

      --strategy=<bfs|sbfs|dfs|cndfs|lndfs|endfs|endfs|renault|ufscc|ndfs>     select the search strategy (default: auto)

*** segmentation fault ***

Please send information on how to reproduce this problem to:

<EMAIL_ADDRESS>
along with all output preceding this message.

In addition, include the following information:

Package: ltsmin 3.0.0

Stack trace:

pins2lts-mc: malloc.c:2374: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.

                                                                               /home/travis/.travis/job_stages: line 57:  7343 Aborted                 (core dumped) lts_install_dir/bin/pins2lts-mc --help

The command "lts_install_dir/bin/pins2lts-mc --help" exited with 134.

I improved it with @yanntm suggestions, so I am closing this for now.


Better error propagation

Right now errors are only propagated as strings, improve that

Related: https://github.com/cschleiden/go-workflows/issues/212

Closed with: https://github.com/cschleiden/go-workflows/pull/217


Does dotnet vstest support multiple test projects targeting different frameworks at a time?

Recently we’re testing for test projects targeting netcoreapp2.1 and netcoreapp3.0.
We found that if we run “dotnet vstest” with test projects targeting netcoreapp2.1 or netcoreapp3.0 only, the result looks correct(and no warnings).
But when we tried to run the two kinds of dlls together in one single command, there was a warning popping out immediately:
Test run will use DLL(s) built for framework .NETCoreApp,Version=v3.0 and platform X86. Following DLL(s) do not match framework/platform settings.
NuGet.Commands.FuncTest.dll is built for Framework 2.1 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
However, the results looked correct even we had this warning.
I’m wondering how did this warning generated, and if it’s ok for us to run them in one command, and ignore this warning? Thanks!
I found a similar issue https://github.com/Microsoft/vstest/issues/1768
But since I'm testing for core only, so it may be different.
AB#1494523

@heng-liu
Yes. Since both the dlls are of .NetCoreApp, the runner will issue a warning saying that it has picked up the highest version of .NetCoreApp and will run tests in both the dlls. You can ignore the warning as long as the frameworks is .NetCoreApp in both.
Although, if you are trying to run dlls targeting two different frameworks, that is, say, one is .NETFramework v4.5, and the other is .NetCoreApp v2.1, the tests of full framework will be run and that of net core will be skipped.
Since you are testing for core only, you will find no other discrepancies.

Can someone please elaborate on "you can ignore the warning"?  Was this advice given because netcoreapp5.0 is able to execute binaries compiled for netcoreapp2.1?  Our goal is to detect when our code has problems when running on the older runtime, not if our code compiled for an older TFM works when running on a newer runtime. Hence it's important to us that the netcoreapp2.1 test assembly actually runs on that runtime.
For example, consider this:
C:\src\NuGet.Client\test\NuGet.Core.Tests\NuGet.Versioning.Test [dev-zivkan-pushToNewAzDOFeed ≡]> dotnet test .\bin\Debug\netcoreapp5.0\NuGet.Versioning.Test.dll .\bin\Debug\netcoreapp2.1\NuGet.Versioning.Test.dll
Microsoft (R) Test Execution Command Line Tool Version 16.8.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
Test run detected DLL(s) which were built for different framework and platform versions. Following DLL(s) do not match current settings, which are .NETCoreApp,Version=v5.0 framework and X64 platform.
NuGet.Versioning.Test.dll is built for Framework .NETCoreApp,Version=v2.1 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
A total of 2 test files matched the specified pattern.

Passed!  - Failed:     0, Passed:   885, Skipped:     0, Total:   885, Duration: 153 ms - NuGet.Versioning.Test.dll (net5.0)
Passed!  - Failed:     0, Passed:   885, Skipped:     0, Total:   885, Duration: 1 s - NuGet.Versioning.Test.dll (net5.0)

dotnet test's output shows on the last two lines that it ran both assembles on the net5.0 runtime. Is this a bug, or do we have to change our CI scripts to run each TFM in a different command line invokation?
@heng-liu  are you able to re-open this issue?

Sorry, I'm not able to reopen it.
Hi @vagisha-nidhi, @ShreyasRmsft ,could you help re-open this issue? Thanks!

This whole behavior is imho a mix of historical reasons when only running in process was possible, wrong assumptions and inability to effectively change the current behavior to make more sense for .NET Core.
This warning happens because using dotnet test with a dll will just direct the call to vstest.console. vstest.console will grab the whole set of assemblies and check if they are all targetting the same framework (by checking the assembly TargetFramework attribute). It then reports all the assemblies that are not targetting the same TFM as the one decides is the real framework to use. BUT what then happens is that it will run one testhost.exe for each dll and pass the runtime config of the actual project, so the dll will end up running with the correct runtime.
Comparing this with running dotnet test + sln. This will not happen because it will actually run one instance of vstest.console for each assembly, and so there is no conflict, because each vstest.console gets only single dll.
So for .NET Core assemblies this warning is wrong, and you can ignore it. And you can confirm that by running this:
<TargetFrameworks>net5.0;netcoreapp3.1;netcoreapp2.1</TargetFrameworks>

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject11
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            Assert.AreEqual(null, System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription);
        }
    }
}

Which outputs the correct runtime identifier for each assembly (NET Core 4.6 is netcoreapp2.1), even thought the runtime reported in the summary is always net5.0:
Starting test execution, please wait...
Test run detected DLL(s) which were built for different framework and platform versions. Following DLL(s) do not match current settings, which are .NETCoreApp,Version=v5.0 framework and X64 platform.
UnitTestProject11.dll is built for Framework .NETCoreApp,Version=v3.1 and Platform AnyCPU.
UnitTestProject11.dll is built for Framework .NETCoreApp,Version=v2.1 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
A total of 3 test files matched the specified pattern.
  Failed TestMethod1 [31 ms]
  Error Message:
   Assert.AreEqual failed. Expected:<(null)>. Actual:<.NET Core 3.1.9>.
  Stack Trace:
     at UnitTestProject11.UnitTest1.TestMethod1() in C:\t\UnitTestProject11\UnitTestProject11\UnitTest1.cs:line 11

  Failed TestMethod1 [31 ms]
  Error Message:
   Assert.AreEqual failed. Expected:<(null)>. Actual:<.NET 5.0.0-rc.2.20474.5>.
  Stack Trace:
     at UnitTestProject11.UnitTest1.TestMethod1() in C:\t\UnitTestProject11\UnitTestProject11\UnitTest1.cs:line 11

  Failed TestMethod1 [41 ms]
  Error Message:
   Assert.AreEqual failed. Expected:<(null)>. Actual:<.NET Core 4.6.29130.01>.
  Stack Trace:
     at UnitTestProject11.UnitTest1.TestMethod1() in C:\t\UnitTestProject11\UnitTestProject11\UnitTest1.cs:line 11

Failed!  - Failed:     1, Passed:     0, Skipped:     0, Total:     1, Duration: 41 ms - UnitTestProject11.dll (net5.0)
Failed!  - Failed:     1, Passed:     0, Skipped:     0, Total:     1, Duration: 31 ms - UnitTestProject11.dll (net5.0)
Failed!  - Failed:     1, Passed:     0, Skipped:     0, Total:     1, Duration: 31 ms - UnitTestProject11.dll (net5.0)

What should be done on our side, is that the vstest.console should be changed to figure out the target runtime for each of the dlls. And pass it internally as a map, not just a single target framework. Then we should look if there is any scenario where it actually makes sense to report this warning, because at the moment I can't think of any.
This would also be the first step to being able to share single instance of vstest.console under dotnet test when msbuild is used, which would help us report results from parallel runs in a sensible way and not hang the console by outputting into it from two different sources.
@pavelhorak this is related to https://github.com/microsoft/vstest/issues/2080 but needs quite a bit of effort. Should we add it to the next milestone?

I believe this was fixed in the most recent VS2022 17.3 release. From the release notes:

vstest.console now supports running assemblies of different target platforms and target frameworks in one request.

If I run dotnet vstest on two different DLLs (one is .NET Framework and the other is .NET 6) it appears to work! My version is Microsoft (R) Test Execution Command Line Tool Version 17.3.0 (x64). I think this was done in https://github.com/microsoft/vstest/pull/3412 🎉

You are right :)


Allow Multiple Evaluators on the CLI

Right now the CLI just takes a single param to --eval, but we can probably take a list of evaluators and run them all.

Complete in d63a8f7ee1c9bfb881bb53770e3e84db34c2668b.


Folder Note view ignoring window width

In the folder note view for a folder note, it is not expanding or contracting the note to match the width available when you change the overall Obsidian window size.

This has been patched in the latest version

FYI unless I have some setting mixed up somewhere or an errant CSS declaration, this still doesn't seem to be fixed for me in the latest version (0.7.18)


Update eff to 6.0.0

Updates org.atnos:eff from 5.23.0 to 6.0.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.atnos", artifactId = "eff" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequest = { frequency = "@monthly" },
  dependency = { groupId = "org.atnos", artifactId = "eff" }
}]

labels: library-update, early-semver-major, semver-spec-major, commit-count:1

Codecov Report

Merging #315 (389ad9c) into master (8d938e6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #315   +/-   ##
=======================================
  Coverage   66.78%   66.78%
=======================================
  Files          19       19
  Lines         563      563
  Branches       21       21
=======================================
  Hits          376      376
  Misses        187      187

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 8d938e6...389ad9c. Read the comment docs.


BUG: Sidebar is not fixed at the left side of the screen

Hi Mr. @philipp-tailor. I'm using sveltekit and did this...
import Sidebar from 'svelte_sidebar'

const props = {...}

<Sidebar {...props} />

...inside my __layout.svelte file. The sidebar is showing. But the problem is that when I put this Sidebar component (for example, at the top of my other elements and components), it just goes above all my other components; it doesn't get fixed at the side like what's shown in the playground site.

Hello @zeddrix, thank you for trying out this package. Sorry for not answering earlier, I was on vacation without internet access. I hope that my answer still comes in time:
As you can see here, on the playground, the whole document body is laid out side-by-side in a flexbox. The reason is that I can't anticipate the exact placements / layouts in which users of the package might want to use it.
So if you place <Sidebar/> and your main page content container - let's say a - <main>...</main> inside an element with display: flex;, and define appropriate flex-grow / flex-shrink / flex-basis values to the <Sidebar/> like the example values used in the playground, you should be good to go.

Thank you @philipp-tailor! Really appreciate the help and reply!


fix: nested loop parfor display

As I described the nested parfor-loop request in #10 as a reply, I noticed this can be fixed by moving the IsThisBarNested check before the IsParallel check. With this update, it is also possible to have correct display behavior even if the inner loop is parallel. I hope this is useful 😅

Hi @tunakasif and thanks a bunch for this PR! :tada:
This fix looks as easy to review and merge as it gets but, bear with me, I am not a MATLAB user anymore for quite some time now.
I'll try to get a hold of a license and into the inner workings of this project again. So, this will probably take a bit but I hope the fix on your end will unblock your work until then.

Looks great! Problem could be recreated, fix works and tests are passing on my side :+1:
Thanks a bunch for your contribution and of course for using my progress bar =)

I'm glad it helped 😄 thank you for making coding in MATLAB bearable, I'm very content that there is a tqdm-like library for MATLAB.


Feat: Rework input validation process

+1 for the design.

I reorganized the code so that all the check/preprocess functions are in the preprocess module. I created 3 kind of functions:

validity checkers: they check that the input parameters and distributions given by the user are valid (if they are not the code will probably break or have undefined behavior).
preprocesses: they can consider that the inputs are already valid ; they can update/modify the parameters and distributions ; it is responsible to ensure the updated parameters and distributions are still valid. (I think this is what @arnaudon needs for the fit in #49 )
relevancy checkers: they check that the current parameters and distributions will give 'relevant' results ; they can take optional start_point and a context arguments to refine the checks.

WDYT @eleftherioszisis @lidakanari ?

LGTM, feel free to merge and update mine if it needs to be adapted to this

I have a few minor comments, but overall it's legitimate. One last thing, can we please use "relevance" instead of "relevancy"? I know they are synonyms, but my brain is triggered because "relevance" is the most used word. :D

I have a few minor comments, but overall it's legitimate. One last thing, can we please use "relevance" instead of "relevancy"? I know they are synonyms, but my brain is triggered because "relevance" is the most used word. :D

I changed for relevance, I didn't know it was more used than relevancy, I guess I'm an old school guy :)

I am good with the changes. @lidakanari I leave it to you to approve.

I just rebased on main, I guess if CI pass we can merge?


[auto3dseg] rectified Out of Memory (OOM) errors and timeouts within the dints algorithm

Rectified Out of Memory (OOM) errors and timeouts within the dints algorithm.

Rectified Out of Memory (OOM) errors;
Extended the timeout duration to avoid any synchronization anomalies during multi-GPU model training;
Optimized the batch size setting of sliding-window inferer for different devices.

/integration-test

/black


LogicApp/IntegrationAccount SDK

SDK for the LogicApps with integration account. Using the AutoRest composite client to support Logic Apps and Integration Accounts.

Can one of the admins verify this patch?

Hi @pankajsn, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (pankajsn). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@azuresdkci add to whitelist


Joins with more than three join partners segfault

On 0db1a2a478ce2102451a47c0be14ecb5ecb45e00 (current master), this causes a segfault:
test=# CREATE DATABASE test;
CREATE DATABASE
test=# CREATE TABLE a (x INTEGER);
CREATE TABLE
test=# CREATE TABLE b (x INTEGER);
CREATE TABLE
test=# CREATE TABLE c (x INTEGER);
CREATE TABLE
test=# CREATE TABLE d (x INTEGER);
CREATE TABLE

test=# SELECT * FROM a JOIN b ON a.x = b.x JOIN d ON a.x = d.x;
 x | x | x
---+---+---
(0 rows)

test=# SELECT * FROM a JOIN b ON a.x = b.x JOIN C ON a.x = c.x JOIN d ON a.x = d.x;
server closed the connection unexpectedly
	This probably means the server terminated abnormally
	before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

In 5878dc7, this still works.

@mrks Thanks for reporting this!
@GustavoAngulo Looks like 7d083d546860ff91420cf56c5571b2abd340f004 (for #1150) is causing regression. Assigning to you to fix.
@chenboy Can you co-ordinate a fix for this.


Sticky Sessions: % traffic and canary

I have read the few issues previously closed regarding stickiness sessions.
Our use case is specifically for canary style deploys. We would like to send a % of traffic to the new version of an application to canary test it with users.  We require this to be sticky.  Imagine if we send a user to the new deployment with a new feature, and then they refresh the page and the feature is gone!
Without stickiness, the % distribution in fabio isn't really useful.  I'd like to hear some feedback on the design decisions that were made to decide on this.

That depends on your application but I get your point. Our apps are usually backwards compatible the blue/green scenario was to spin up the full set of instances but only send some amount of traffic to them to see whether an issue would show up and then flip.
Sticky routing usually creates more problems but I agree that this could be a useful feature. Need to think about this a bit.

+1

I think the simplest thing that could work would be to add sticky routing based on the src address or a header, e.g. a sticky=src or sticky=hdr:name option to the route.

+1

Canary releasing support in fabio sounds like a really useful feature to us as well.

Assuming I use a hash function to compute a value for one or more input variables how do I ensure that fabio always routes to the same host without keeping a connection table which has to be shared across all fabio instances? This wouldn't be stateless anymore.
The list of hosts can change at any time and ordering won't help (see example below). To take this approach you'd have to guarantee that a given target host will always get the same identifier and that the hash function will always map to that id if it exists.
Example:
# list of hosts for the given route in some stable order
hosts = ['a', 'k', 'x']

# hash fn for some input params, e.g. src ip
v = fn("<IP_ADDRESS>") // e.g. 10

# target host
host = hosts[v % len(hosts)] // 'k'

# now the host list changes
hosts = ['a', 'b', 'k']
host = hosts[v & % len(hosts)] // 'b' and not 'k'

Another consequence is that during brief times of unavailability of the target host requests would be sent to a different host and then again to the original target host once it comes back. That makes for very unpredictable behavior during times of deployments and upgrades.
fabio would have to try to reach the target host for that session and fail the request if that target host isn't available even though other hosts are available to handle the request since it cannot safely route the request to a different host. Sessions would have to time out...
A good example of why I don't like sticky lb :)
What about a different approach?
The above approach assumes that fabio is doing some magic to route incoming requests to the same target host based on some computed criteria independent of the current cluster configuration. What if we flip this around and make the first instance responsible for providing fabio with enough data to route subsequent requests for the same session to it?
I guess that is what you are already doing when setting a sticky session cookie but the canary use case doesn't necessary involve sticky session cookies. You just want people to be routed to a specific version of the service.
fabio could use a route id header or request param to find the correct target host and it is the responsibility of the app to set that. The instance would have to publish to consul which route ids it handles.
For the canary use case apps could always set a route id with the current version which would ensure that current users stay on version they started on unless there is no instance available with that version. This way you don't need special magic of source ip addresses. You can have clusters of old and new instances and both user groups would remain distinct. You could use this for a/b testing or for real sticky load balancing if each instance has a unique id.
Does that make sense? What do you think?


Launch controller does not have navigation controller instance"

Hi Dev Team... getting below message while using latest version
Error Domain=com.haptik.HPWebKit Code=-56 "Launch controller does not have navigation controller instance" UserInfo={NSLocalizedDescription=Launch controller does not have navigation controller instance, NSLocalizedRecoverySuggestion=Embed launch controller with navigation controller}
IDE - Xcode 13.3.1
Swift Compiler - 5
Minimum OS Support - 11.1

Hi Dev Team,
I'm also getting the same
"Launch controller does not have navigation controller instance"
I tried to open sdk from app delegate in flutter project getting same message ...

 AppDelegate.shared.nvc = UINavigationController(rootViewController:  UIViewController())
        AppDelegate.shared.nvc?.isNavigationBarHidden = true
        UIView.transition(with: AppDelegate.shared.window!, duration: 0.33, options: UIView.AnimationOptions.transitionCrossDissolve, animations: {
            AppDelegate.shared.window?.rootViewController =  AppDelegate.shared.nvc
        }, completion: { (finished) in

        })
        AppDelegate.shared.window?.becomeKey()
        AppDelegate.shared.window?.makeKeyAndVisible()

        do {
            try HPKit.sharedSDK.loadGuestConversation(launchController: AppDelegate.shared.nvc!, customData: nil)
            result(true)
        } catch {
            print(error)
            result(false)
        }


Quicklisp install fails

Unfortunately the project doesn't load from quicklisp.
cd ~/quicklisp/local-projects
git clone https://github.com/ak-coram/cl-frugal-uuid.git
Sbcl:
(ql:quickload "frugal-uuid") works.
Remark:
(ql:quickload :frugal-uuid) fails.
Think it should be consistently named as cl-frugal-uuid
Why only frugal-uuid for quicklisp?
Thanks.

@rpx99 Thanks for reporting this issue. Both of your examples ("frugal-uuid" and :frugal-uuid) seem to work for me on multiple implementations (even when cloning the repository as cl-frugal-uuid). The CI workflow also relies on the keyword version: https://github.com/ak-coram/cl-frugal-uuid/blob/main/.github/workflows/CI.yml#L47
What OS are you using?
I usually prefix my Common Lisp repository names with cl-, but since Quicklisp & ASDF are about Common Lisp I don't see the point in including the cl- prefix in the system and package names. The directory name itself shouldn't matter anyway since ASDF scans these directories for .asd files recursively (and for example can even find systems named :frugal-uuid/non-frugal/strong-random, which cannot be mapped to a directory name directly).
The directory name can also be simply specified as an additional argument to git clone if you prefer: git clone https://github.com/ak-coram/cl-frugal-uuid.git frugal-uuid
I'm a bit reluctant renaming the systems & packages at this point for compatibility reasons.

Thanks for your reply!
What I actually mean is that your project does not seem to be in quicklisp so that users can get it from the internet as a download. I did a (ql:update-dist "quicklisp") to get the latest packages (2023-21-10). But frugal-uuid does not seem to be available.
Cannot find an issue here (where you registered frugal-uuid):
https://github.com/quicklisp/quicklisp-projects/issues?q=is%3Aissue+frugal
Maybe you did send it in by e-mail?
http://blog.quicklisp.org/2015/01/getting-library-into-quicklisp.html
The missing download via quicklisp then brought me to the installation as a quicklisp local-project.
My observation installing using keyword :frugal-uuid turned out to be an issue with my Emacs. Sorry about that! (So no issue).
After all my hassle I was asking myself if the name was even correct I was using. So, is actually frugal-uuid or maybe instead cl-frugal-uuid correct? I was confused:
cl-frugal-uuid can be installed via Quicklisp
but the actual quickload command says :frugal-uuid
In the back of my mind it causes a mismatch error :-)
Cheers.

I see, that clears it up :)
I didn't request the library to be added to the default Quicklisp dist, but it is available via the Ultralisp dist (which should automatically track the latest version on GitHub): https://ultralisp.org/
Here are the instructions for installing using Ultralisp:
https://github.com/ak-coram/cl-frugal-uuid?tab=readme-ov-file#installation

For systems that are distributed via the default Quicklisp distribution, this library (and dependencies) have to also be in it.
Will you open the issue in Quicklisp Projects that? Else I can also do it.
The same has to be done for trivial-clock, or we switch to precise-time, which appears to support mac and mezzano, and should be in the next Quicklisp release.


Bug while working sync on VS Code

Error ID
6d65b0df-4cc4-4368-a50e-c563bc837bf3
What happened?
I was working on my Shopify app then suddenly the terminal notified me that the sync has stopped with a text telling THIS IS A BUG and i should submit an issue here !
What did you expect to happen?
the shopify app get updated according to the code on vs code
Steps to reproduce

Sync your app with vs code using terminal npx<EMAIL_ADDRESS>Work on your project
Suddenly the issue occured
btw I was reloading a lots the shopify app navigation page on chrome because it wasn't updating maybe it's because of taht

Anything else?
No response

We've made a number of improvements to ggt since this issue was opened, in particular:

https://github.com/gadget-inc/ggt/releases/tag/v0.4.0
https://github.com/gadget-inc/ggt/releases/tag/v0.4.7

Please retry with the latest version and feel free to re-open this issue if your problems persist.


Auto message sending to guardian when person leave or reach destination

Module should send a message either on Whatsapp or via message if a person leave or enter home or flat.

As BLE part is implemented so it should scan the host device and perform defined action on it


Remove trailing commas in gulp

Just some tidying up

Hey @van-nguyen can you put your text-align utils in a different pr and I will merge that, I have done your other changes in a diff commit. Thanks


No compatible devices could be found! // 60HE+ // MacOS Sonoma 14.5

Does not detect plugged in wooting 60HE+
MacOS Sonoma 14.5
wooting-analog-sdk is installed correctly
For apple silicon M2 Pro I had to:
sudo cp -r /opt/homebrew/Cellar/wooting-analog-sdk/0.7.0/lib /usr/local/

You need v0.7.5 of the Analog SDK for the 60HE+ to be detected https://github.com/WootingKb/wooting-analog-sdk/releases/tag/v0.7.5

I downloaded this release but I am unsure how to properly update the sdk due to unmatched file names from brew install

Sorry about the confusion. Do you have a proper way to install this release on apple silicon Mac?

No worries, the install for Mac currently is a bit jank. I had tried to update our homebrew tap with the latest version, but I remember running into some issues.
https://github.com/wootingkb/wooting-analog-sdk?tab=readme-ov-file#manual-1
There are some manual steps here, I noticed the plugins bit is a bit out of date. For the plugin bit, you just need to copy
wrapper/sdk/libwooting_analog_plugin.dylib to /usr/local/share/WootingAnalogPlugins/wooting-analog-plugin/


tests: uart_async_api: Support atsamr21_xpro board

This commit adds the asynchronous UART API testing support on the SAM
R21 Xplained Pro board.
The SERCOM3 module is used as the secondary loop-back UART, which is
required to run this test.
Note that no external UART loop-back connection is necessary to run
this test, because the SERCOM3 UART TX and RX pads are configured to be
internally connected; it is, however, still necessary to configure the
pinmux because the module pads are not connected until the pinmux is
configured.
Signed-off-by: Stephanos Ioannidis<EMAIL_ADDRESS>To be rebased on top of #24572 (blocked by #24572).

@nandojve Can you test if this works on your SAM R21 Xplained Pro board?

Modified the test to use SERCOM3 on PA22/23 instead of SERCOM2 on PA12/13, since those pins are free and connected to an external connector on the board.

Hi @stephanosio, well done!
*** Booting Zephyr OS build zephyr-v2.2.0-1815-ga68a6b0a9b39  ***
Running test suite uart_async_test
===================================================================
starting test - test_single_read_setup
PASS - test_single_read_setup
===================================================================
starting test - test_single_read
PASS - test_single_read
===================================================================
starting test - test_chained_read_setup
PASS - test_chained_read_setup
===================================================================
starting test - test_chained_read
PASS - test_chained_read
===================================================================
starting test - test_double_buffer_setup
PASS - test_double_buffer_setup
===================================================================
starting test - test_double_buffer
PASS - test_double_buffer
===================================================================
starting test - test_read_abort_setup
PASS - test_read_abort_setup
===================================================================
starting test - test_read_abort
PASS - test_read_abort
===================================================================
starting test - test_chained_write_setup
PASS - test_chained_write_setup
===================================================================
starting test - test_chained_write
PASS - test_chained_write
===================================================================
starting test - test_long_buffers_setup
PASS - test_long_buffers_setup
===================================================================
starting test - test_long_buffers
PASS - test_long_buffers
===================================================================
starting test - test_write_abort_setup
PASS - test_write_abort_setup
===================================================================
starting test - test_write_abort
PASS - test_write_abort
===================================================================
starting test - test_forever_timeout_setup
PASS - test_forever_timeout_setup
===================================================================
starting test - test_forever_timeout
PASS - test_forever_timeout
===================================================================
Test suite uart_async_test succeeded
===================================================================
PROJECT EXECUTION SUCCESSFUL

Rebased
This PR can be merged now.

needs minor rebase since I merged the other PR.

needs minor rebase since I merged the other PR.

@galak Rebased


sample rate should be > 200ksps ?

Hi Frank!
my understanding of your wonderful code is very limited.
However, I think the whole code should run in a much higher sample rate.
We have a frequency deviation of +-75kHz, so we need at least 150kHz, better 200kHz of bandwidth for the FM audio signal.
Could you try running the code at an audio sample rate of > 200ksps ?
If I listen carefully to the audio quality, especially in silent moments of the music (I made some custom WAV files with Steely Dan music ;-)), I feel I could hear distortion/aliases in the higher audio frequs, so this could potentially be cured by a higher sample rate ?
But as I do not understand large parts of your code, this is pure speculation, but maybe worth trying it out ;-)
I used the code from 2021/01/23 10:00h CET

Good Idea. I'll next try to use a timer to directly trigger the DMA, then we can try to use a higher samplerate.
High frequencies: Is my code for the pre-emphasis correct? I took the de-emphasis from your code and swapped the factors.
A Question regarding the deviation: I thought the 75KHz is the sum - 75KHz/2 to the "left" and 75KHz to the "right" ?
It is directly connected to the volume problem in #4  So the volume can be fixed by using the correct frequency deviation (If I'm wrong with my assumption) - i'm using the half, currently.
I'll write a text of how it works in the next days. In short: It connects the Video-PLL to the MCLK-Output of I2S. There is a fixed divisor of 4, so the PLL uses 4 times the Frequency (i.e. 100MHz FM -> 400MHz PLL)
For FM, this frequency gets modified by the calculated deviation factor. So ideally, a volume correction should not be needed(?)
Quite possible there are some little bugs now, sooner or later we'll fix them ;)

Good Idea. I'll next try to use a timer to directly trigger the DMA, then we can try to use a higher samplerate.
High frequencies: Is my code for the pre-emphasis correct? I took the de-emphasis from your code and swapped the factors.
A Question regarding the deviation: I thought the 75KHz is the sum - 75KHz/2 to the "left" and 75KHz to the "right" ?
It is directly connected to the volume problem in #4  So the volume can be fixed by using the correct frequency deviation (If I'm wrong with my assumption) - i'm using the half, currently.
I'll write a text of how it works in the next days. In short: It connects the Video-PLL to the MCLK-Output of I2S. There is a fixed divisor of 4, so the PLL uses 4 times the Frequency (i.e. 100MHz FM -> 400MHz PLL)
For FM, this frequency gets modified by the calculated deviation factor. So ideally, a volume correction should not be needed(?)
Quite possible there are some little bugs now, sooner or later we'll fix them ;)

(FM: "volume" is the same as the frequency deviation)

(FM: "volume" is the same as the frequency deviation)

Yes, you are totally right and already fixed the problem: it is +-75kHz freq deviation, so 150 in total. And that also fixes the volume problem!
Pre-emphasis also seems to work now.
A text on how it works would be very much appreciated ! At the moment, no idea from my side . . . ;-)
Higher sample rate:

play WAV at 44.1 ksps
interpolate to 6 x 44.1 = 264.6 ksps
lowpass filter

Yes, you are totally right and already fixed the problem: it is +-75kHz freq deviation, so 150 in total. And that also fixes the volume problem!
Pre-emphasis also seems to work now.
A text on how it works would be very much appreciated ! At the moment, no idea from my side . . . ;-)
Higher sample rate:

play WAV at 44.1 ksps
interpolate to 6 x 44.1 = 264.6 ksps
lowpass filter

can be closed now.

can be closed now.


Simplify the special props handling in the Provider component

I think that the special props handling logic in the Provider component is partially redundant. key and ref are special and we do not need to filter them because the props object will never contain them.

Most props on a JSX element are passed on to the component, however, there are two special props (ref and key) which are used by React, and are thus not forwarded to the component.

https://reactjs.org/warnings/special-props.html

Makes sense, thanks.

No problem.


fixes(#27628): Implement Event Filtering for Webhook Integration URL Generation

Description:
Fixes: #27628
Following up on #25976, this PR introduces the ability to filter events when generating the URL for an incoming webhook integration. The new feature includes a checkbox UI for selecting events. The UI is designed with a two-column grid for better readability and responsiveness, replacing the three-column layout that was causing readability issues.
Screenshots and screen captures:
before:

After (large_screen):

After (mobile_screen):

Current documentation
After changes(docs): changes are shown in red container

Conversation while developing feat

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability (variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).

In the initial plans outlined in the issue description, a three-column grid for the checkbox UI on larger screens was proposed.
However, upon implementation, it became evident that the vertical and horizontal alignment of event texts within the checkboxes was not optimal. To address this, I made a decision to switch to a two-column grid for larger screens. This adjustment ensures better alignment and readability of event texts in the checkbox UI

As describe in three grid column

Two grid column

[x] Highlights technical choices and bugs encountered.

In the implementation, I utilized $(document).on("change", ".integration-event-checkbox", () => { update_url(true); }); to handle the event binding. This choice was made to overcome an event binding problem. Additionally, a new parameter, is_event_checkbox_change, was introduced in the update_url function. This parameter is passed every time a checkbox changes. To prevent redundant printing of events with each checkbox change, a condition !is_event_checkbox_change was added. This ensures that the checkbox is checked properly, and the events are updated only when necessary.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
Responsiveness is checked, internationalization was not mentioned in issue.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions, and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

Please provide feedback for my PR
Thank You :)

@sujalshah-bit - thanks for working on this issue!
You should review the documentation on commit discipline to get your PR ready for review. You might also want to go through the Git guide in the documentation as well since it looks like there's a merge commit in your commits that you'll also need to fix.

@laurynmm  i have changed PR. Please tell me is it ready for review or not.

@sujalshah-bit - This is definitely an improvement! The commit summaries look good, but the commit descriptions still need to be updated: https://zulip.readthedocs.io/en/latest/contributing/commit-discipline.html#commit-description.
I'll note that your first and second commits should probably be one commit as the first commit doesn't make sense without the implementation of the logic in the second commit.
I did pull down the changes and have a few notes on things to work on:

The checkbox shouldn't be disabled once an integration with events to filter is selected. It's possible that the user will want the notifications sent as direct messages and still want to filter the events sent.
The horizontal line should probably be above the generated URL and not above the event filtering checkbox.
The HTML inputs for the individual events checkboxes should probably be generated via a template and not in the javascript code. You could look at how append_custom_profile_fields works to get an idea of how this might work (though that is a bit more complicated as there are different types of inputs for those fields).

The documentation change in the final commit will need to be more extensive. The help center article for generating the integration URL will need to be updated as well as the webhooks URLs specification documentation. Ideally, the integration documentation will just list the supported events for that specific integration, and the help center / URL specification will have the details about adding those to the URL.
Let me know if you have any questions about the above notes and thanks again for working on this issue!

@laurynmm Thank you for your feedback and for reviewing my pull request. I have two main questions for you:

Regarding your third point on append_custom_profile_fields in integration_url_modal.js, I've examined the code and attempted to understand how I can derive inspiration to implement the logic for generating checkboxes via templates. However, I encountered an issue when trying to add selected_integration_data.all_event_types to html_body. Consequently, I'm finding it challenging to pass the variable (selected_integration_data.all_event_types) to the generate_integration_url_modal.hbs file.

Snippet from integration_url_modal.js:
const html_body = render_generate_integration_url_modal({
    default_url_message,
    max_topic_length: page_params.max_topic_length,
});

// ... (additional code) ...

dialog_widget.launch({
    html_heading: $t_html({defaultMessage: "Generate URL for an integration"}),
    html_body,
    id: "generate-integration-url-modal",
    html_submit_button: $t_html({defaultMessage: "Copy URL"}),
    html_exit_button: $t_html({defaultMessage: "Close"}),
    on_click() {},
    post_render: generate_integration_url_post_render,
});

I've updated the event-filtering-instruction.md as per your suggestion, making it more extensive. However, could you please specify which documentation you are referring to, aside from that?

Thank you again for your assistance.

You'll need to create a new template for these inputs and then when the event filtering checkbox is toggled, the div you added to the generate_integration_url_modal would be updated for the events. If you run into more questions or doubts about this, then the best place to ask questions is on chat.zulip.org in the # development_help stream as more folks will be able to help answer questions.
You'll need to find the files that are linked to for the generate URL instruction. One file is in the help center documentation and the other is in the API documentation. Also, the updates to event-filtering-instruction.md don't need to be more extensive. The overall updates need to be more extensive, e.g. also update the help center and API documentation that are linked to.

@laurynmm  I have made the changes and also updated the PR comment added documentation screenshots.

@laurynmm I have gone through your changes and feedback,
as you mentioned:

If you check the option to filter events, and then uncheck that option, then the URL isn't updated to not have the events listed, see first screenshot

2. If you change the integration type after checking the filter events option, then the events aren't removed from the URL. To reproduce, select "AzureDevOps

I have addressed both bugs. And regarding your third point

3. The formatting for some

is now discussed on CZO. Once the design is finalized, I will implement all the changes.
I apologize for any inconvenience caused. In the future, I will consider your suggestions while making documentation changes. I still have one question: how can I conduct Q/A testing to save the reviewer's time in the future?

@sujalshah-bit - Sounds good. You can ping me for another review when that final point is figured out.
For QA and manual testing, you generally want to think about how users might interact with any UI changes you've made. Reading through the guide on manual testing in the docs might be helpful to just see breadth and thought processes around this kind of testing: https://zulip.readthedocs.io/en/latest/testing/manual-testing.html. Also, doing QA testing on other folks PRs (see the code review stream in CZO) can strengthen your skills in this area.

@laurynmm, I have implemented all the changes you outlined, including those discussed in the CZO thread. I believe the modifications are now ready for your review.

@laurynmm, could you please review this pull request? If any changes are needed, please let me know. Thank you!

@sujalshah-bit - Thanks for the pings to do another review for this PR. I've got it on the top of my list and should get to it either tomorrow or the day after.

It looks like some recent changes to how page_params work in the frontend of the project have broken your changes here...

@laurynmm  solved page_params issue also made the URL parameters in the right order.

For the individual events not having an id

Approach:

Mapping Over Events:

iterate over each event type in the all_event_types array using the map() method.

Generating Event IDs:

For each event type,  generate an event_id by replacing spaces with hyphens in the event name. This ensures that the event ID is a valid HTML ID and confirms to naming conventions.

Creating New Array of Objects:

construct an object for each event type containing both the original event name and the generated event ID.

Sorting the Array:

After generating the events_with_ids array,  sort it alphabetically based on the event names using the sort() method.

Rendering Integration Events:

Finally,  pass the events_with_ids array to the render_integration_events() function, which presumably renders these events in integration UI.

 // Generate event IDs for events without an 'id'
const events_with_ids = all_event_types.map((event) => {
    const event_id = event.replaceAll(/\s+/g, "-");
    return {
        event,
        event_id,
    };
});

// Sort the array of events alphabetically by event name
events_with_ids.sort((a, b) => a.event.localeCompare(b.event));

// Render integration events with event names and IDs
const events = render_integration_events({
    events: events_with_ids,
});

Tim suggested testing the logic, but I've never written any tests before. Could you recommend some quick resources to learn about and implement tests quickly?

@laurynmm  i have updated the PR with follow changes:

Change the flow made it according your feedback
made the small cleanups ( #integrations-event-container added this selector for more specific selection )
Remove unwanted input-group class.

Once the testing is clarified and updated, then I can do that.

Tim has approved, we can go through without writing test for this as it is not generating ID's in backend
However, I still want to clarify this point: Regarding the issue with the topic bug (if a topic name is added to the URL, and one unchecks the button for including a topic, then the URL is not updated), you mentioned that I can address this in a prep commit. However, I'm not entirely clear on what you mean by "separate prep commit." Does this imply that I should open a new issue and then fix it, or should I address it within this PR alone?

However, I'm not entirely clear on what you mean by "separate prep commit."

This means a separate commit on this PR, preceding the commits that implement the new feature here.

I haven't read all the discussion above, but playing with the PR, I'm worried that the experience when you uncheck all the events is confusing. Looks like that removes event filtering, so the result ends up being the same as if you had checked all events... Maybe we should disable the "Copy URL" button in that situation, to avoid having the user get unpredictable results?

I added a commit to #29287 to modify the /integrations documentation. Could you please pull it into this PR? It can be squashed with another commit as appropriate.

Disabling the 'Copy URL' button for that case makes sense to me. @sujalshah-bit - Let's make that update. It would be similar to how having the topic checkbox selected, but having the topic text blank.
For the documentation update, I had some thoughts that I posted on #29287. Though it might make more sense to iterate on a #documentation conversation in CZO?

I added a commit to #29287 to modify the /integrations documentation. Could you please pull it into this PR? It can be squashed with another commit as appropriate.

@alya, I'll pull that commit once @laurynmm thoughts are clarified.

Sounds good. @laurynmm a #documentation conversation in CZO sounds good.

I noticed that if the "Filter events that will trigger notifications?" option is checked and we make any changes in the topic section, it selects all events regardless of our previous selections.

@sujalshah-bit - Hmmm... that sounds like something we should fix in this initial implementation. Changing the integration (from GitLab to GitHub for example) should reset the URL and form back to a blank state.
But changing any of the other parameters (stream, topic, events) shouldn't impact what the user selected for the other parameters. I can imagine someone selecting a stream, adding a topic, selecting events, and then thinking "that topic isn't quite right", changing the topic and being frustrated that the events reset to everything being selected.

Sounds good. @laurynmm a #documentation conversation in CZO sounds good.

Done, see https://chat.zulip.org/#narrow/stream/19-documentation/topic/updating.20event.20filtering.20in.20integration.20docs.2C.20.2328294/near/1758034

I'll soon update the PR with the required changes. It's taking some time because integration_url_modal.js has been migrated  to typescript, so I also  have to migrate js code to ts

Updates:

Added the topic check back to the first commit in the series.
Updated the events parameter commit to have a clearer flow of checks for the logic of showing/hiding elements.
Updated the commit message and removed the reset to blank for the default/no integration case.
Updated the documentation commit for the changes in #29287 and removed the changes to incoming-webhooks-overview.md since that is covered in #29366.

@sujalshah-bit - It'd be great for you to review these updates and then post here with any questions or feedback.
Updated documentation screenshot:

Basecamp integration example

Thank you, @laurynmm, for the code reduction, the changes look good to me. I've noticed one thing: when no integration is selected, we still allow the user to choose a stream. However, when the user clicks on the stream, nothing happens. Ideally, I believe we should disable the stream dropdown if no integration is selected.

@sujalshah-bit - Yeah, good catch. Disabling that stream dropdown until an integration type is selected makes sense to me. That could be a separate prep commit (like the topic one) as this change would be tangential to adding the events parameter.

@laurynmm  made the change:

Disabling that stream dropdown until an integration type is selected.

@laurynmm made the changes.

Looks good to me. Marking for integration review.
Note that the failing CI is due to an issue unrelated to these changes.

This looks great, merged, thanks for all the work on this @sujalshah-bit and @laurynmm!


Can I use this package without a module? help not issue

Thanks for the great package it looks super powerful and well documented.
I'm a little stuck with how to use it though, I have a simple wordpress project that doesn't have any module loading.
So I popped in laravel mix (webpack) and I have it console.logging a const of a postcode with the expected result.. however I cant work out how to make a function so I can dynamically check various postcodes.
Is this package available outside of modules / imports or is there a handy tip you can pass on to make functions public?
Thanks

I have 2 guesses for how to do this on webpack - although I'm not very familiar with this bundler

I think Shimming might be the official solution for exporting bundled dependencies into global scope

Export the function you're interested to window

import { parse } from "postcode";

window.postcodeParse = parse;

You hero. As if it was that simple! I was trying to get it with window.parse, exporting default functions and all sorts!
Thanks so much :)


Dont steal focus when prompt response is completed

When Prompt response is completed, the CodeGPT 'ask' input field automatically requests the cursor focus.
To reproduce:

Ask prompt
Manually switch focus to Editor window
Wait until prompt complete

Expected:

Should NOT request focus if editor window or other ui component is currently in focus.
Should only request focus if the CodeGPT plugin is currently in focus

Hi @OrbiterToad,
Setting the focus on the text area's input after the completion was done on purpose. However, stealing the focus from other inputs is definitely a bug.
Unfortunately, the plugin hasn't been tested on Linux nor Windows, so there might be other things that I missed.
FYI, I really appreciate that you removed the rating from the marketplace and reported the bug here. I will try to fix the issue as soon as possible.
Best regards,
Carl

Hi,
Please try upgrading to the latest version to see if the problem still exists.
https://plugins.jetbrains.com/plugin/21056-codegpt/versions/stable/348931
Thank you!


minor tick 1px off from major tick

This is rare but it happens

fixed, although I probably wasn't going to lose any sleep over this 🙃


Adding high level steps to the existing playbooks

Signed-off-by: gprasath<EMAIL_ADDRESS>Added steps at the top of each playbook yamls.
Special notes for your reviewer:

Thanks for doing this @gprasath !! If possible, could you also rename the tasks to correspond to a step (steps that are spread across multiple tasks can be identified as, say, 1a, 1b, 2a, 2b etc..,) . This will help users/contributors that are viewing/debugging it.

Can we have a snippet of any one task executed post numbering? Or probably a partial o/p with --check flag. Just curious to know if the ")" has any impact :)

@ksatchit it gets printed as it is. Will paste the snippet here shortly

@ksatchit , As requested pasting the snippet of a task output.
TASK [4) Deploy percona mysql pod] *************************************************************************************************************************************
task path: /home/giri/new_fork/openebs/e2e/ansible/playbooks/hyperconverged/test-k8s-percona-mysql-pod/k8s-percona-pod.yml:81
changed: [localhost -> None] => {"changed": true, "cmd": "source ~/.profile; kubectl create -f demo-percona-mysql-pvc.yaml", "delta": "0:00:01.179809", "end": "2018-05-07 05:43:12.361670", "rc": 0, "start": "2018-05-07 05:43:11.181861", "stderr": "", "stderr_lines": [], "stdout": "pod \"percona\" created\npersistentvolumeclaim \"percona-db-claim\" created", "stdout_lines": ["pod \"percona\" created", "persistentvolumeclaim \"percona-db-claim\" created"]}


Need a cleaner way of reusing ObservationHeader

Currently, ObservationHeader has all possible dada header parameters to encompass the wide variety of dada files that we have (antenna voltages, beams, stats). While reading dada files, only a subset of these parameters are present, and since the header.get function has a
    if(strcmp("unset", _buffer) == 0) {
        throw std::runtime_error(std::string("The header key ") + key +
                                 " was unset");
    }

We always hit a runtime error. I have now changed this into a warning, but a more elegant solution of having a subset of dada headers for each file class, that gets passed on to the read_dada_header function of ObservationHeader.cpp is essential. Any ideas?

You would then do the following in read_dada_header:
void read_dada_header(psrdada_cpp::RawBytes& raw_header,
                      ObservationHeader& header)
{
    auto safe_setter = [&](auto& val, char const* key){
        try {
            val.set(parser.get<typename decltype(val)::MetadataType>(key);)
        } catch (std::runtime_error& e)
        {
            BOOST_LOG_TRIVIAL(warning) << "Could not parse " << key << " from header";
        }
    }
    Header parser(raw_header);
    header.nchans     = safe_setter(header.nchans, "NCHAN");
    ```

Is the warning sufficient now? Should this be closed?

No, I will do this change once we merge the existing code to main.


Catch on Promise of Array Results in never[] Type

TypeScript Version:  2.3.1
Code
Using lib: ["es6"]
const z = Promise.resolve([1]).catch(() => {
    return []
});

z.then(array => array.map(x => x + 1))

Expected behavior:
The type of z should be Promise<number[]> and the above code should work.
Actual behavior:
The type of zis Promise<number[] | never[]>. This causes array.map(x => x + 1) to produce the cryptic error:
message: 'Cannot invoke an expression whose type lacks a call signature. Type '{ <U>(this: [number, number, number, number, number], callbackfn: (this: void, value: number, ind...' has no compatible call signatures.'

Duplicate of https://github.com/Microsoft/TypeScript/issues/7294

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.


Users have to re-enter personal data during the payment process

Issue: Users have to re-enter personal data during the payment process.
Impact: Unlikely to be a completion issue, however we've seen in previous Verify research that re-keying personal data like this is a major driver of negative perceptions of effort.
Evidence: None that I can reference easily, although I have observed this response many times when testing other services with Verify

Evidence from Oxfordshire:
Impact: Users might make mistakes as they become increasingly frustrated.
Evidence: “You know my address already, why do I have to enter a separate billing address?”
“You know my email address already.”
“Annoying I have to enter my address / email again.”
“Now it wants my account again!”

In round 3 - users still frustrated by re-keying data, though this is reduced with shift to LOA1, and improved perceptions of the service overall

Link to #568 and #567


Nants_data vs. Nants_telescope

Getting following error with read_miriad on paper green bank (16 antennas, 3 completely removed from data)
File "/home/user/src/pyuvdata/uvdata/uv.py", line 1470, in read_miriad
self.antenna_positions.value.reshape(3, self.Nants_telescope.value).T
ValueError: total size of new array must be unchanged

This is a bug with the old PAPER data being written by a dual-pol 8 antenna correlator with 16 single pol hookups.  Now read_miriad uses try/except and if this ValueError occurs, it will not write the antenna_positions attribute (which is not a required parameter).


[dbm] fix flapping sqlserver_version

What does this PR do?

We received customer reports about missing sqlserver_version. The problem is that we store the version in a cache that has a 1 day TTL, and we never refresh the cache. The fix is to refresh the cache during each check run.
You can see the problem here where I changed the TTL to 5 minutes:

Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Changelog entries must be created for modifications to shipped code
[ ] Add the qa/skip-qa label if the PR doesn't need to be tested during QA.
[ ] If you need to backport this PR to another branch, you can add the backport/<branch-name> label to the PR and it will automatically open a backport PR once this one is merged

We received customer reports about missing sqlserver_version. The problem is that we store the version in a cache that has a 1 day TTL, and we never refresh the cache.

:face-palm:


Using In a non typescript project

Hi! I'm trying to use rnr in a plain js expo project. Followed all the steps that apply to my project. But when I add the component is just a blank view.
Help would be appreciated

Hey @abimaelfrancot
Unfortunately it is not configured for plain js repos. It is still possible to use but it will require more work on your side.
Since you have followed the steps for getting-started, you will need to do the following as well:

Change .ts and .tsx files to .js and .jsx file extensions respectively.
Remove the types.ts files
Remove import statements for types at the top of the files.
Remove the types from the files.

If you're still having this issue, please provide a link to your public repository so that I can take a look at it.

Closing due to inactivity


Hm306 constants ci

Overview
This moves all constant generation into CI
It does not change backend constants as the generated one still needs to be integrated. This pr does add a comment on how to use the auto generated backend constants.
Includes:
Please see files for changes
Developer Checklist:

[x] The code follows the Quality Policy file on Google Drive
[x] My code has been developer-tested and includes unit tests
[x] I have considered proper use of exceptions
[x] I have eliminated IDE warnings

Notes:
This PR does not change anything to deployment. When deploying the client (whoever will work on that) you will need to generate constants before it can run correctly.
Refs:

HM-306

#89 seems relevant to this PR. It would be helpful to Steven to have some documentation on how the client CI works and what it is doing in the file perhaps. Or in the main README documentation.

#89 seems relevant to this PR. It would be helpful to Steven to have some documentation on how the client CI works and what it is doing in the file perhaps. Or in the main README documentation.

Let's add this as another User story, we dont have any documentation for that yet and it would be better for a task to create one from scratch.


Add context to error message if encryption key is missing

I was deploying a fresh install to Heroku and this tripped me up for 15 minutes.

Thank you @gmoore ✨


OWD project: Mixin docs on MDN

This is a write up of a project around mixin docs on MDN that I've started and that I'd like to introduce here some more, so that it becomes more transparent why we should do some work on this and what work is involved exactly.
Problem statement
What are mixins? Interface mixins in Web IDL are used in specifications to define Web APIs. For web developers, they aren't observable directly, however. They act as helpers to avoid repeating API definitions. This is useful in specifications, but is often confusing in documentation.

On MDN, web developers are confused when they see mixin docs as they can't instantiate them or do anything with them really.

https://stackoverflow.com/questions/43402321/is-settimeout-located-somewhere-besides-window
https://stackoverflow.com/questions/56307601/why-fetch-parameter-signal-is-not-documented

MDN is inconsistent. Sometimes mixins are documented straight from the specs. Almost like they are copied from there. Other times mixins are documented under a real interface, but not under all real interfaces implementing that mixin.
Mixins are really strange oftentimes. "NonDocumentTypeChildNode" is nothing web developers need to worry about directly.
ON BCD, we can't really get compat data of a mixin -- only the compat data of real interfaces. Often the compat data is different, for example when things were for a long time on Document already and are now also available with Worker.

https://github.com/mdn/browser-compat-data/issues/472  is a long standing BCD issues that presents all the problems with mixins in compat data.

Priority assessment
This table checks this project against the OWD prioritization criteria.

Criteria
Assessment

Effort
Large. About 22 existing mixin documentation trees exist. For each page tree there are about 5-50 pages to rework and new pages to be written as mixin members are often only documented for half of the real interfaces.

Dependencies
Needs to get done in compat data and in mdn/content at the same time. Requires redirects/moving pages to work on MDN.

Community enablement
Reading specs and understanding mixins and IDL can be complex, yet the work is shareable

Momentum
BCD collaborators (foolip, Daniel) and MDN content writers who constantly run into missing guidance for how to document mixins (Chris, Rachel, Joe) seem to really like having some momentum here. Also, the specs are usually stable for the fundamental APIs

Enabling learners
It would help to be less confusing. NonDocumentTypeChildNode.nextElementSibling is very weird; Element.nextElementSibling is more accessible.

Enabling professionals
This rework will bring more attention to detail and consistency to the docs which professionals would appreciate

Underrepresented topics / ethical web
N/A

Operational necessities
It is often a blocker that there are no clear guidelines on how to document a new API that uses mixins. (see e.g. the AriaMixin case that Rachel ran into). Once a mixin guideline is approved (first task of this project), there is no blocker anymore, though.

Addressing needs of the Web industry
It does clear up very confusing compat data by a lot. So it makes compat tables more clear and probably improves web developer's perception of web compat.

Proposed solutions

MDN stops documenting mixins directly.

This has been agreed on in https://github.com/mdn/content/issues/1940

BCD stops exposing mixin data and exposes data under real interfaces instead.

This had been agreed on in https://github.com/mdn/browser-compat-data/issues/8929

Task list

[x] Agree on how to document mixins on MDN
[x] Write/Update MDN contribution docs on how to document mixins
[x] Agree on how to deal with mixins in BCD
[x] Write/Update BCD data guidelines on how to add mixin compat data
[ ] Update existing MDN pages to avoid mixin pages (detailed tasks see below)
[ ] Update existing BCD files to avoid mixin data (detailed tasks see below)
[ ] Deal with the special cases (large mixins like WindowOrWorkerGlobalScope and friends). Likely come up with exception rules to the guidelines for practicability.

MDN tasks
The following mixin pages need to be updated/removed per the new guideline.

[ ] AbstractWorker
[ ] Body
[ ] ChildNode
[x] DocumentOrShadowRoot
[ ] GeometryUtils
[ ] GlobalEventHandlers
[x] HTMLHyperlinkElementUtils
[ ] LinkStyle
[ ] NavigatorConcurrentHardware
[ ] NavigatorID
[ ] NavigatorLanguage
[ ] NavigatorOnLine
[ ] NavigatorPlugins
[ ] NavigatorStorage
[x] NonDocumentTypeChildNode
[ ] ParentNode
[ ] SVGAnimatedPoints
[ ] SVGFilterPrimitiveStandardAttributes
[ ] SVGTests
[ ] SVGURIReference
[ ] WindowEventHandlers
[ ] WindowOrWorkerGlobalScope

BCD tasks
The following mixin data needs to be updated/removed per the new guideline.

[ ] AbstractWorker
[ ] Body
[ ] ChildNode
[x] DocumentOrShadowRoot
[ ] GeometryUtils
[ ] GlobalEventHandlers
[x] HTMLHyperlinkElementUtils
[ ] LinkStyle
[ ] NavigatorConcurrentHardware
[ ] NavigatorID
[ ] NavigatorLanguage
[ ] NavigatorOnLine
[ ] NavigatorPlugins
[ ] NavigatorStorage
[x] NonDocumentTypeChildNode
[x] ParentNode
[ ] SVGAnimatedPoints
[ ] SVGFilterPrimitiveStandardAttributes
[ ] SVGTests
[ ] SVGURIReference
[ ] WindowEventHandlers
[ ] WindowOrWorkerGlobalScope

Should we add HTMLOrForeignElement to the list?

Should we add HTMLOrForeignElement to the list?

I think we should

Should we add HTMLOrForeignElement to the list?

Hm, this didn't make the list in the first place because it has no BCD. Not sure how common it is for mixin pages to have no BCD but it can happen since the BCD for them is nonsense often.
Anyway, I added it.

This is all done except for GlobalEventHandlers and
WindowEventHandlers. I opened https://github.com/mdn/browser-compat-data/issues/12290 for BCD which, together with https://github.com/mdn/browser-compat-data/issues/7545 could be proposed as a new project that deals with event mixins and event compat data generally.


Example for overhang property of text doesn't actually illustrate what it claims to

There is no hyphen in the first paragraph. I can reproduce the (probably) intended behavior by adding #set page(width: 200pt) at he top

Once again, due to the default font switch probably. Missed a few things :(


Keep external listings up to date

Overview
We need to make sure that any external websites that have links to our projects are up to date so that people can get correct information.
Action Items

[ ] Identify and add links to this top section with all the sites that have info for the project
[ ] review monthly or quarterly (add when you reviewed with details on changes to the comments indicating changes)

Sites where CivicTechIndex.org is linked and how to edit

Brigade.Cloud | currently undergoing a rewrite see landing page google doc
Democracy Lab | see 1password vault for project

Resources/Instructions

Democracy Lab current details:

Democracy Lab current details:

Update 01/12/2021

Update 01/12/2021

Updated 01/12/2021

Updated 01/12/2021


No autosuggestions when using Ubuntu terminal with "Solarized Dark" theme

Hi, my stack is

Ubuntu 18.04
Default terminal with solarized dark theme
zsh
oh-my-zsh
git, zsh-syntax-highlighting and zsh-autosuggestions plugin

Sadly, with this setup I am not seeing any autosuggestions. It looks like this

As you can see, you can only see the cd but nothing that comes after. When I switch the theme to a different one you instantly see the suggestions

The setting was
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8 which should be grey according to this link https://github.com/zsh-users/zsh-autosuggestions/issues/172#issuecomment-226022265
However, it's not visible, it somehow uses the default text color of the terminal. When I change ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE in ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions to fg=black,bold or even to white for example, it still is not visible under Solarized Dark and it looks the same under different themes, so it doesn't seem like this setting is actually used under Ubuntu.
Any idea how I can make these visible?

Okay, I fixed this. This isn't a problem of zsh-autosuggestions. For anyone stumbling upon the same problem, it has to do sth. with the color palette the terminal is using, for example, I used the solarized colour palette.
Now, if I hover over a specific entry it says "Palette entry 8"  for example. If I edit this colour, this will change the syntax-highlithing colour.
So you don't need to only change the built-in scheme but also adjust your palette below the themes.

For those using iTerm2 with Solarized Dark theme, the suggestion color is in Preferences -> Profiles -> Colors. Change "Bright Black" under ANSI colors:

For those using iTerm2 with Solarized Dark theme, the suggestion color is in Preferences -> Profiles -> Colors. Change "Bright Black" under ANSI colors:

A setting of "50% Gray" worked well for me on iTerm with Solarized Dark Theme


[HMR] Edit files will cause full page reload.

Is this a bug report?
Yes

Can you also reproduce the problem with npm 4.x?

yes
Which terms did you search for in User Guide?

(Write your answer here if relevant.)
not relevant
Environment

node -v: 7.6
npm -v: 4.3
yarn --version (if you use Yarn): 0.27.5
npm ls react-scripts (if you haven’t ejected): 1.0.11

Then, specify:

Operating system: macOS 10.12.6
Browser and version (if relevant): chrome  60.0.3112.90

Steps to Reproduce

(Write your steps here:)

edit src/App.js
save

Expected Behavior

Only specific area will change.
Actual Behavior

Full page reload
Reproducible Demo

(Paste the link to an example project and exact instructions to reproduce the issue.)

Thoughts
webpack2 doesn't seem to have such issue.

This is not a bug but expected.
https://github.com/facebookincubator/create-react-app/issues/93
We may implement hot reloading of React components in the future (there is a pending PR) but we haven't had time to finish it yet.
You can use module.accept calls as explained in the linked issue to implement something manual yourself, although this won't preserve the state of components.

For those who are using with Typescript and has error Property 'hot' does not exist on type 'NodeModules'
add this line in react-app-env.d.ts
/// <reference types="react-scripts" />

declare var module: NodeModule;
interface NodeModule {
    hot: any     // this is only a temporary answer  😄
}


Ipyflex with Jupyterlite

Hi,  Ipyflex is a great library. Thanks for sharing!
I couldn't get Ipyflex to display in Jupyterlite.  If possible, please could you show an example of Ipyflex working in Jupyterlite.
Here is the sample code I used that didn't work.
import micropip
await micropip.install("ipyflex")
import ipyflex

ipyflex.FlexLayout(
    header={"title": "Test", "style": {"backgroundColor": "rgb(53 53 53)"}}, # , "buttons":["export","import"]
)

The widget doesn't display. I just get the "Loading widget..." text under the cell.

Hi @DougRzz, you can check out https://github.com/trungleduc/ipyflex-lite for a demo of ipyflex + jupyterlite.
Basically, you need to install the frontend part of ipyflex while building your jupyterlite site.

@trungleduc That is awesome. Jupyterlite is just incredible technology.
I think I forget to do a force refresh after I put ipyflex in the requirements. Thats why I was getting a Loading Widgets...
To load a template into ipyflex, I got this to work:
import json
import pyodide
import ipyflex

ipyflex.FlexLayout(
    style={"height": height}, #
    header={"title": "Experimental DASHBOAD", "style": {"backgroundColor": "rgb(53 53 53)"}},
    template_json=json.loads(pyodide.open_url("https://raw.githubusercontent.com/therestofyourURL/NC.json").getvalue()),
)


Trigger from CloudWatch Events -> SNS topic or Lambda rather than polling

Polling every external secret seems like a lot of unnecessary transactions.
SSM will tell you when a secret is updated via a CloudWatch Event. That event can either:

Pass the event to an SNS topic, which kubernetes-external-secrets is subscribed to
Pass the event to a Lambda function that could make a webhook call to a kubernetes-exernal-event endpoint.

kubernetes-external-secretswould still poll on start-up, and maybe once every hour or two, just in case.

This sounds great. We'd :heart: a PR :)

Slightly related to this, is it possible to trigger refreshes on a webhook of the service?  Then I could set my poll interval really high and do the SNS topic stuff out of band.  (It's unclear if SNS subscription needs to be core to the project since a webhook is enough).

Currently no webhook available but I think it would make sense to add one in some way. Not sure how it should be specified tho.
Should it just be really basic and trigger a repoll of everything or should you specify the secret (KES resource) to trigger polling for that specific one

Should it just be really basic and trigger a repoll of everything or should you specify the secret (KES resource) to trigger polling for that specific one

Either is fine.  The best catch all solution would be a "refresh everything" webhook (also easiest to trigger since you just hit an endpoint and don't care about HTTP body formatting).  Honestly secrets update so rarely that it would probably be just fine.  It could later be extended to support specific secrets.

/notstale

/notstale

Nostale

I don't think this is something we'll include in KES and I think it would be better to start a discussion and possible contribution in the go rewrite https://github.com/external-secrets/external-secrets


Xenobiology

About the PR
Adds specimen chambers. For now they can only be entered by humans and spawned through the admin menu. Will be used later to store xenobiological specimen.
New content:
Adds Xenobiological specimen, a type of mob which the player can feed in order to grow them into a mature specimen by feeding them food.
Adds specimen chambers to store and create specimens, allowing you to feed them while in the tube.
Specimen have Diet Component which is configurable through YAML using item tags to specify what the specimen would want to eat.
Adds crude homunculus specimen as the default placeholder specimen for other ones to come. He has the AI of a cat and likes to be fed Flesh, Junk Food and Processed Cheese.
Non-player changes:
Adds tags to some foods
Reworks OnPowerChanged() into an event.
Screenshots

Changelog

:cl: CrudeWax

TBH I'd prefer seeing more of the actual design in this because right now they're just like Unitystation's dummy machines that don't do anything.

I am working on a branch built on top of this one which adds specimen, I just decided to not pack that all into a single PR given the fact this one also adds the power event which might be needed by other programmers

i second whatever sloth said, we agreed way back to not add "placebo"-stuff thats essentially "yeah we'll give it actual functionality later, for now its only a sprite"

Alright, I'll try and add specimen

If you make the power event a separate PR it'll be speed merged.

https://youtu.be/YJwHBB10ZAc

The reason we don't have much for gameplay loops is because Floyd for example is still working on this https://hackmd.io/FwmGxNFLQy26PPuEw9kMow?view which, despite being very much WIP has a very clear direction on what the end product should be like and someone else could go to work on this.
It would be preferable to have some kind of long-term design doc as you need to assume that you may not be the one maintaining this. We already have systems where the original contributor has left and we're the ones holding the bag and more often than not it just ends up being deleted because no one wants to go to the effort of maintaining someone else's code, especially if it's from a new contributor.
Currently this is more of a prototype than anything where you just click food on it 5 times for a self-insert to pop out.
Like I've coded my own stuff in the game where I didn't have an endgame in mind (e.g. portals, puddles) because I was naive and I didn't have anyone around to tell me otherwise and are getting deleted, but stuff like guns (despite being shitcode) actually had a specific design behind it before I started working on it which most people are pretty happy with. I've frequently coded stuff that I've gone on to delete but it is still extremely useful for learning. Right now I have >300 branches on my local and at least 2/3 of them will never see the light of day (and probably never will).
I'm still going to review it code-wise regardless if it's merged or not as it'll still be useful.

I'll publish a design document on HackMD on this.
I was just making sure I can code this specific part before promising features I'll in all likelihood wouldn't be able to properly implement.

I was just making sure I can code this specific part before promising features I'll in all likelihood wouldn't be able to properly implement.

That's what contributors are for.

For future explorers I already sent the doc to Paul.

Still working on the PR, do not close it

Waiting on maintainer feedback on the design doc and if this should be added into the game.
I have minor fixes not pushed yet but I am still not certain what is going to happen to the PR.

Resuming work on PR


Android support

Is your feature request related to a problem? Please describe.
I want to run Matterbridge 24/7 in Android. My computer fan don't let me sleep
Describe the solution you'd like
I would like to install and run Matterbridge like an app (apk)
Describe alternatives you've considered
I tried to use Termux to run Matterbridge, i am a noob, I don't know how to do it (lack of knowledge), i think most of those errors i got surely was for it. If someone could help me i will be pleased
Additional context

@MijoHuer I am using android.  I am using Termux, but to use the mother bridge I need to compile it on my phone, install golang and compile it myself.

@mentalisit So to get it working I have to

Compile from the phone (matterbridge)
Compile and install Golang?

@mentalisit Итак, чтобы он заработал, мне нужно

Компиляция с телефона (материальный мост)
Скомпилировать и установить Golang?

https://github.com/42wim/matterbridge#building

I could not run the finished binary, so only do my own

I couldn't make the binary either. Anyway I thank you for helping me with this, i appreciate you 😁

I'm trying to do it on my android, but I'm not getting anyone to help me?

Estou tentando fazer no meu android, mas não estou conseguindo ninguém para me ajudar?

Como posso ajudá-lo ?

You could call me on the telegram. I'll explain better https://t.me/wandrius

So what was the solution? I tried to build on my phone but the binary seem not working.
~/matterbridge $ ./matterbridge-termux -conf mb.toml [0000]  INFO main:         Running version 1.25.2 [0000]  INFO router:       Parsing gateway kuro-kepompong [0000]  INFO router:       Parsing gateway t.me/halamanBelakang [0000]  INFO router:       Starting bridge: whatsapp.mywhatsapp [0000] FATAL main:         Starting gateway failed: Bridge whatsapp.mywhatsapp failed to start: failed to connect to WhatsApp: couldn't dial whatsapp web websocket: dial tcp: lookup web.whatsapp.com on [::1]:53: read udp [::1]:55518->[::1]:53: read: connection refused

problem with old version
use go install -tags whatsappmulti github.com/42wim/matterbridge@master

problem with old version. use go install -tags whatsappmulti github.com/42wim/matterbridge@master

It worked. Thanks!


Loading models

This package helped me a lot, so first, thanks for that!
The problem? I cannot load any model except for the ones from example. Chicken from local and a duck from web. I have 0 knowledge of 3d models and how they work, but I tried to load:

localGLTF2 -> all 4 versions from https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/Box

after adding, nodes are registered as added but nothing shows in space, nor are there any error messages.
Using the code from example and only using my models. Also, created a folder and put the .gltf in there while adding the folder path to assets, just as it is with Chicken model.

Yup, the buggy works... I need something netrual, simple, so I'm just gonna try loading models until I find a working one.
Im gonna close this issue for now then. Thanks!

@roby0970 there are loads of free models out there on the internet, but you can also just use blender (it's free) to create your own box or any other simple model and save it as gltf :)


lc-serve command not found

Sorry for the lack of detail, but after creating a jina.ai account and then performing the auth, and installing the project, I still can't seem to locate lc-serve - where is this file supposed to be or where does this script live?

This requires installing lc-serve itself:
pip install langchain-serve

Have you done this?

And if some reason, lc-serve command is still not found after langchain-serve installation, you can try python -m lcserve instead.

Yeah I had done the pip install langchain-serve, but I will try to do the python -m lcserve instead in a while. Thanks for posting, let me leave this open while I do some further testing. Should sync back up here in a few hours

I was having the same issue, but running it with python -m lcserve solved it for me, thanks!

@arthur-brainchain were you able to check this?

Closing as there are no updates.


Plugin Config

What does the bug relate to?

[X] Plugin's core
[ ] Debugger

Describe the bug
Hi there,
I have the following files in the project in ./src/utils:

util1.ts

function util1() { /* .... */}
export default util1;

util2.ts

function util2() { /* .... */}
export default util2;

index.ts

export {default as util1} from './util1';
export {default as util2} from './util2';

Then it's imported with import {util1} from 'utils'; in other files.
I've tried this config -
EntryShakingPlugin({
    targets: [
        {
            glob: 'src/utils/*.ts',
        }
    ],
}),

But I got an error Uncaught SyntaxError: The requested module '/src/utils/index.ts' does not provide an export named 'util1'. And it really doesn't provide util1 because index.ts is empty.
To Reproduce
What am I doing wrong? Is it possible to use this plugin on my file/import/export file structure?
Vite version
5.4.11
Additional context
No response

Hey!

    targets: [
        {
            glob: 'src/utils/*.ts',
        }
    ],

When using this glob pattern, you're actually telling this plugin that all three files (util1.ts, util2.ts and the index.ts are entry files. Which ends up with a circular resolution of cleaned-up files.
What you're probably looking to achieve here is to solely set the utils/index.ts as an entry file (not the other two files) so that whenever you import util1 from utils/index.ts) in some random file, it actually resolves to utils/util1.ts instead of involving that index.ts which would also cause utils/util2.ts to be processed).
Using the following config should get you on the right track:
    targets: [
        {
            glob: 'src/utils/index.ts',
        }
    ],

Please let me know :)

When using this glob pattern, you're actually telling this plugin that all three files (util1.ts, util2.ts and the index.ts are entry files. Which ends up with a circular resolution of cleaned-up files.

That being said, while my above suggestion is likely to help in your scenario, this shouldn't fail like that and the original (aka non-cleaned-up) version of util1.ts should be loaded instead of the cleaned-up one. I actually have a bunch of examples based on cross-entries scenarii so this still is worth investigating! Thank's for reporting!

Hi @Dschungelabenteuer,
Thank you for the quick answer.
Actually, I tried setting up only the index file as entry point with glob: 'src/utils/index.ts',, but it didn't help and I got again the error - `The requested module '/src/utils/index.ts' does not provide an export named 'util1'...
Also I went through your examples, tried a lot of different variants, but unfortunately I didn't get a working config.

Here's a simple example using the information you provided!

the entry point is set here
the utils folder is here
and the util1 is imported and used here

Hopefully this helps spot any difference between both your scenario and my repro attempt?

@Dschungelabenteuer, no, I don't have any other config options except targets.
But, I've found the reason why it doesn't work. There is only one difference between my code and your example.
You use relative paths for imports, but we use the vite-tsconfig-paths in our project. We have "baseUrl": "./src", in tsconfig and import utils like import {util1} from 'utils';
I tried to change it to relative path ../utils and it works as expected.
Is there an option to config the baseUrl in your plugin? Or any other way to do it?

Is there an option to config the baseUrl in your plugin? Or any other way to do it?

Unfortunately it 100% relies on Vite's own resolvers: they do all the path resolution work and this plugin never actually interacts with the tsconfig.json configuration by itself! Would you mind sharing the whole tsconfig.json file if possible?

Here is our tsconfig.app.json. TS version 5.6 / 5.7
{
    "compilerOptions": {
        "baseUrl": "./src",

        "target": "ES2020",
        "useDefineForClassFields": true,
        "lib": ["ES2023", "DOM", "DOM.Iterable"],
        "module": "ESNext",
        "skipLibCheck": true,

        /* Bundler mode */
        "moduleResolution": "bundler",
        "allowImportingTsExtensions": false, // disallow file extensions in imports
        "allowSyntheticDefaultImports": true,
        "isolatedModules": true,
        "moduleDetection": "force",
        "noEmit": true,
        "jsx": "react-jsx",
        "incremental": true,

        /* Linting */
        "strict": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "noFallthroughCasesInSwitch": true,
        "useUnknownInCatchVariables": true,
        "verbatimModuleSyntax": true // require `type` keyword for imports
    },
    "include": ["src"],
    "exclude": ["dist", "node_modules", "public"],
}

I solved the issue above by adding an alias:
        resolve: {
            alias: {
                utils: '/src/utils',
                hooks: '/src/hooks',
                // .....
            },
        },

But next we have more difficult structure with components:

src/components

Component1

Component1.tsx - export const something = '';   export default Component1;
index.ts - export {default, something} from './Component1';

index.ts - export * from './Component1';    export {default as Component1} from './Component1';

And, it's imported with import {Component1} from 'components';
I tried the glob pattern with wildcards ./src/components/*/index.ts and ./src/components/**/index.ts, and in both cases it  doesn't replace the paths correctly...

Hey! I'm sorry I couldn't look into it further last week. I've been trying to reproduce the issue for while now and didn't get any result. Are you using by any chance some metaframework? Would it be possible for you to set up a simple repro?

Hi @Dschungelabenteuer,
No, we don't use any metaframework on the project. I've created a simple project to demonstrate our file structure - https://stackblitz.com/edit/vitejs-vite-lwuyr4vf?file=src%2FApp.tsx,vite.config.ts
Unfortunately, I couldn't make your plugin to work on our structure. So, I've used your code as an example to write my own simple vite plugin. It works as expected and reduces the amount of loaded files from ~790 to ~360.
I also added it to the project above. Maybe this will help you somehow to understand the problem and improve your plugin.

Hi Alexander! I'm sorry you couldn't make it work out-of-the-box, but I'm glad you came up with a working solution and that this plugin still helped a little bit in some way :) Also, thank you for still taking the time to set up that repro, much appreciated! 🙏
I'll definitely dig into it soon!