Formula-Cookbook.md should explain what to deal with libtool

The Formula Cookbook should explain how to deal with libtool.
It's easy enough to figure out that libtool needs to become glibtool, but it's not at all clear should should happen on installation.
Cleanup.rb removes installed .la files, so it seems like running lib.install foo.la isn't the right thing. Some formulas (ok, just rtmidi?) seem to run lib.install Dir[".libs/*.a", ".libs/*.dylib"] which seems like an abstraction violation.
In my particular case, I have a Makefile with no install rule, and a build system that uses libtool. What does Homebrew want to install the library?

My attempt was https://github.com/Homebrew/homebrew-core/pull/10431.

Let's talk about it there. I'm not really sure what you're being asked and why it would be necessary to install .la files. Ideally make install handles all such things instead; if there's no make install then submitting one upstream is the best bet for other packagers to have an easier life too.


Control mostly not possible, RPM only read once

Most of the time, the fans do not react to setting a speed.
Sometimes, they do, though, but only for a short time (0.5 - 5 sec).
It feels like something else is overriding the setting, possibly the AMD Software itself...
Also, the fan speeds seem to be only updated when FanControl is starting up. At that time, the value is accurate, but it is never updated.
I have a Saphire Nitro+ RX 6800 XT, running on Win 11.
"AMD Software: Adrenalin Edition" version is 23.2.1

What are your fan settings looking like in Adrenalin? (Screenshot)

I tried several different settings.
Most notably this:

And that:

I created a unit test with only ADLXWrapper as a dependency.
This code only ever returns 0:
[Fact]
public void ReadFanSpeed()
{
    var wrapper = new ADLXWrapper.ADLXWrapper();
    var system = wrapper.GetSystemServices();
    var gpus = system.GetGPUs();
    var perf = system.GetPerformanceMonitor();
    var metrics = gpus.Select(perf.GetGPUMetrics).ToArray();
    while (true)
    {
        _testOutputHelper.WriteLine(metrics[0].GetFanSpeed().ToString());
        Thread.Sleep(1000);
    }

}

Stupid question, but from Adrenalin, it reads 0, so is your fan spinning?

Err... good point 😅
But: even when it's not 0, what I see with the above script is the same behavior as in FanControl:
It always shows the correct value first, and then repeats it on and on, no matter what the real value is.

Have you tried getting a new metrics everytime? Don't forget to dispose it after using it.

Did that just now, it works!
I coded it the same way your plugin works.
So this way is ok:
while (true)
{
    var metrics = gpus.Select(perf.GetGPUMetrics).ToArray();
    _testOutputHelper.WriteLine(metrics[0].GetFanSpeed().ToString());
    Thread.Sleep(1000);
}

I don't have a card myself, so all of this is pure guessing 😅
Now there are two possibilities.  1 => need to get a new ptr everytime you get a fan speed value, or as you did in your test, you need a new metrics object everytime and this one only has 1 set of value in time.

I'm not exactly sure what you mean...
Like this?
GPUMetrics metrics = null;
while (true)
{
    metrics = perf.GetGPUMetrics(mygpu);
    _testOutputHelper.WriteLine(metrics.GetFanSpeed().ToString());
    Thread.Sleep(1000);
}

I'm just preparing a PR for the Plugin

The whole structure of the sensors will need to be reworked since they assumed of only needing 1 metrics object ever.

So far so good :) PR incoming

Updated the fan sensor and temperature sensors.

Just saw your PR @oliverrahner, nice of you, but there was quite a lot more to do to make it work properly. Creating a new metrics object per sensor isn't ideal, since it can be shared between the temperature sensors too.

Ah, got you :) Nevermind, hope it did help though

I will test tomorrow! I'll probably not manage anymore testing today

Something went wrong... This pops up right after the start

logs?

I found two:

ADLXFanSensor.cs:26 [_metrics.Current might be null]
ADLXPlugin.cs:37  [_metricsProviders might be null]

After 57bb4c9, the situation is now:

current RPM is read reliably
control still shows the same behavior as before: sometimes the settings has no effect, and if it does, it only lasts some seconds before reverting back to the "standard"

This is the part that the plugin tries to control.  If you got it open with the graph visible, can you see the points move up and down with Fancontrol's command? Or do they revert back by themself?

When Advanced Control is enabled (so I can see the graph you mentioned), fan control by Fan Control never seems to work.
Even when I set a curve and modify it at will, the picture doesn't change.
I, again, tried to build an MWE for this, setting speed + 10% every 2 seconds and outputting the current speed one second later.
This pretty much sums it up:

In the middle, it worked, but before and after, it didn't... no change to AMD software in the meantime.

 Does it reverts to something?

No visible changes... sometimes the graph changes to a constant (horizontal line), but only if I refresh it somehow, e.g. by switching off and on the "Advanced Control". This seemed very unreliable.
Funny enough, even after I closed FanControl, sometimes the fan would turn up to 100% and then go back after a few seconds. When I reset the settings in Adrenaline, this stops. But there is no indication to be found that something is currently overriding Adrenaline's settings.
Btw, FanControl still crashes frequently, both at startup and during regular operation. There are no log entries.

While debugging the Plugin, I caught this exception during application exit:

Found the culprit... I hadn't noticed before that your code explicitly enables Zero RPM. So, even if I had "manual control" on, the settings would only get into effect when the Zero RPM zone was left. That explains the weird behavior.
If I now start Fan Control and **then ** disable Zero RPM from inside Adrenaline, everything works as expected, including immediate update of the graph inside Adrenaline.
All settings below 15% seem to be completely ignored by Adrenaline. So when I go from 100% directly to 0% (with steps of 50%), the fans will be set to 50%, because 0% will be ignored.
https://user-images.githubusercontent.com/2277681/220655091-ea1b0bc2-ae13-4dfe-8fa4-0f0ce0df66c6.mp4

The zero RPM thing is odd.   The plugin turns it on, as I want to be able to turn off the fan from FanControl by hitting 0%.
BTW the driver does have a function to give us the available speed range. In your case it's probably limited to 15-100.

Nothing responds as long a the temperature is below the Zero RPM threshold. That's why I saw this seemingly weird behavior.
When the Zero RPM setting is changed via the API, that doesn't seem to be visible in Adrenaline.
I will try that with a script again and let you now how that works.
I guess what could be a good rule would be:
Turn on Zero RPM only if target speed is 0% (or <= low threshold).
Otherwise, turn Zero RPM off so target speed will go into effect no matter the current temperature.

Doing a similar thing with newer Nvidia cards, makes sense  it works in a similar fashion.
Your above method should work. Still, there will be a "dead zone" in the control range, but I guess we'll have to live with it.  Otherwise we could valid speed range (15-100% in your case) to 1-100%, and set the 0 rpm mode at 0.  That would make it seamless.

I had already seen the ADLXWrapper :) But I'm not yet willing to install the prerequisites to build it myself, I'm not into C++ at all...
BTW, I spent some minutes looking at the wrong documentation from AMD because I followed your link in README.md, which points to https://gpuopen.com/adl/, but should instead point to https://gpuopen.com/adlx/.
The current wrapper doesn't seem to expose this function: https://gpuopen.com/manuals/adlx/adlx-_d_o_x__i_a_d_l_x_manual_fan_tuning__get_fan_tuning_ranges/
Regarding visibility of the Zero RPM state in Adrenaline:
The setting is updated when the control curve changes (e.g. via SetFanSpeed), but not when only the Zero RPM state changes.
I have decided to return my card in the next days and go for an Nvidia again instead 😅
So if you want some more tests done, I can only provide those for a very limited time range.

https://gpuopen.com/adl/, but should instead point to https://gpuopen.com/adlx/.

facepalm

The setting is updated when the control curve changes (e.g. via SetFanSpeed), but not when only the Zero RPM state changes.

Good to know
I will update the plugin with the changes I mentioned. If you got time sweet, otherwise, farewell to you onto the green team ;)

Feedback on the current status:
I like that the setting now "snaps" to the lower limit.

shouldn't that also happen on the upper limit? Even though I don't know if there are any cases out there where Max != 100
even when target speed is set to 0 and the fans turn off, the target setting still snaps to Min. If find this non-intuitive.

aren't you missing to reset _zeroRPMSet = false?

I was thinking whether it would be good to enable Zero RPM also if Min > val, not only if val == 0. When the user (or the curve) sets target_speed = 5, but Min == 15, what does the user expect? Effective 0 (if possible) or effective 15?
On the pro side for the current behavior: the only situation where the fans behave "unpredictably" is val == 0. In all other cases, he can be sure what happens.
On the pro side for the alternative: the system will, in doubt, be quiter.

@oliverrahner  good stuff .
Last commit pretty much addressed everything you posted.

_zeroRPMSet  is now handled properly
the val snapping with the minimum range will only happen if != 0.
I think I found why the dispose was firing an exception.   The helper needs to be "terminated" like it was "initialized" before disposing.

Brilliant, the functions work perfect now!
Unfortunately, the crash is not gone.
On the bright side: The call stack looks different 😂
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at ADLXWrapper.Bindings.ADLXPINVOKE.ADLXHelper_Terminate(HandleRef jarg1)
   at ADLXWrapper.Bindings.ADLXHelper.Terminate()
   at ADLXWrapper.ADLXWrapper.Dispose()
   at FanControl.ADLX.ADLXPlugin.Close() in D:\Coding\FanControl\FanControl.ADLX\ADLXPlugin.cs:line 43
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Close()
   at FanControl.Domain.ComputerAccessLayer.<>c.<Close>b__35_0(IBackendProvider x)
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Close()
   at FanControl.Domain.ComputerAccessLayer.Dispose()
   at Autofac.Core.Disposer.Dispose(Boolean disposing)
   at Autofac.Util.Disposable.Dispose()
   at Autofac.Core.Lifetime.LifetimeScope.Dispose(Boolean disposing)
   at Autofac.Util.Disposable.Dispose()
   at Autofac.Core.Container.Dispose(Boolean disposing)
   at Autofac.Util.Disposable.Dispose()
   at FanControl.App.OnExit(ExitEventArgs e)
   at System.Windows.Application.DoShutdown()
   at System.Windows.Application.ShutdownImpl()
   at System.Windows.Application.ShutdownCallback(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at FanControl.App.Main()

On the bright side: The call stack looks different 😂

Sigh
I can't see exactly what I'm doing wrong. Maybe it's an order of thing. Right now the helper is disposed last, but maybe it needs to go first, I don't know :/

Further finding:
Works:
var adlxWrapper = new ADLXWrapper.ADLXWrapper();
var systemServices = adlxWrapper.GetSystemServices();
//var gpuTuningService = systemServices.GetGPUTuningService();
//var gpus = systemServices.GetGPUs();

//gpuTuningService?.Dispose();
//gpus?.ToList().ForEach(x => x.Dispose());
systemServices?.Dispose();
adlxWrapper?.Dispose();

Crashes with ADLXWrapper.ADLXEception: Result: ADLX_ORPHAN_OBJECTS  Couldn't terminate ADLX:
var adlxWrapper = new ADLXWrapper.ADLXWrapper();
var systemServices = adlxWrapper.GetSystemServices();
var gpuTuningService = systemServices.GetGPUTuningService();
//var gpus = systemServices.GetGPUs();

gpuTuningService?.Dispose();
//gpus?.ToList().ForEach(x => x.Dispose());
systemServices?.Dispose();
adlxWrapper?.Dispose();

Crashes with System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.:
var adlxWrapper = new ADLXWrapper.ADLXWrapper();
var systemServices = adlxWrapper.GetSystemServices();
var gpuTuningService = systemServices.GetGPUTuningService();
var gpus = systemServices.GetGPUs();

gpuTuningService?.Dispose();
gpus?.ToList().ForEach(x => x.Dispose());
systemServices?.Dispose();
adlxWrapper?.Dispose();

I am not able to dig deeper into this, as my knowledge of memory management is not very deep...
I'll now shutdown, switch cards and put this issue aside ;)

@oliverrahner  thanks a bunch!

Thanks you for that great piece of software ;)

Update.  Found this sneaky one in a sample:
https://github.com/GPUOpen-LibrariesAndSDKs/ADLX/blob/b98ec6c3a1ba2ea31ff392f54c684788e7834ce8/Samples/csharp/DisplayEvents/DisplayEvents/mainDisplayEvents.cs#L56
They don't seem to call "acquire" first, but only release at the end.
The release is responsible for the reference count internally, which explains the ADLX_ORPHAN_OBJECTS error we've seen.
Updated the plugin with a "release" call for every IADLXInterface object at dispose time.

Found the culprit... I hadn't noticed before that your code explicitly enables Zero RPM. So, even if I had "manual control" on, the settings would only get into effect when the Zero RPM zone was left. That explains the weird behavior. If I now start Fan Control and **then ** disable Zero RPM from inside Adrenaline, everything works as expected, including immediate update of the graph inside Adrenaline.
All settings below 15% seem to be completely ignored by Adrenaline. So when I go from 100% directly to 0% (with steps of 50%), the fans will be set to 50%, because 0% will be ignored.
FanControl_Ui0l11Dre7.mp4

I'm getting the same or similar behavior today on my 7900XTX.

Controlling the GPU Fans only works if I manually disable Zero RPM, but disabling control of the fans from Fan Control automatically re-enables Zero RPM (which is desirable!).
The issue seems that it does not attempt to disable Zero RPM when enabling control of the fans, nor when doing fans speed adjustments.
Which behavior of the two would be preferable is up for debate, although I would prefer to see a toggle to enable Zero RPM in the expanded card, with the default being to disable Zero RPM automatically.

Additional notes:
It would appear that on this specific GPU or SKU (PowerColor Radeon RX 7900XTX Red Devil Edition 24G), the fan is at 27%, any value set lower than this will result in the GPU fans stopping to spin entirely regardless of the Zero RPM setting.
I've made a video showcasing a few tests and behaviors:
https://youtu.be/e1dvrGassSE

For anyone here still active like @XenHat , I've made some changes and ditch the graph editing in favor of using the "target fan speed" slider equivalent in the API. This requires "Advanced Mode" to be off.  I haven't found the API to toggle that manually, or it's an implicit state, I don't know.
So for anywone that want to give it a shot, disable "Advanced Control" in Adrenalin, then start FanControl with the newer version of the plugin.  My hope is that it will take a lot less ressources to control the fan since modyfing the graph was equivalent to 6 api calls, 1 per point (5) + apply.

Good news:
https://github.com/Rem0o/FanControl.ADLX/discussions/36


Create magic .github repo to manage community health files

https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file#supported-file-types.
Inspired by  Anton Babenko's terraform-aws-modules organization. I contributed a few changes to various repositories and stumbled upon his .github repo.
TODOs:

[x]  Create .github repo

https://github.com/infrashift/.github


Question regarding extensions

Please provide any additional information below
Hello,
I'm not sure if I'm missing something, but I couldn't find an answer to my question.  Is it possible to filter extensions so that the program only downloads files with a specific file type? For example "gif" from site x.
Help is appreciated.

Not built-in, but most sources use the "animated", "animated_gif", oir "gif" tags for those.
Some also support the "filetype:gif" metatag.

Thanks for your answer. I tried that before with "webm", which resulted in about 1000 files. Problem is not all webms are tagged as webm on the respective sites.  Would you consider adding a function to filter out certain extensions in the future?

I could add a feature in the post-filtering to filter by extension, but not only is that not always possible (if Grabber does not know a file's extension yet), that would also be inefficient for huge amount of results: would you load all pages of the website and then filter out 99.9% of the results to only get webm for example? That would load a lot of stuff and be pretty slow for only a bunch of images.

Well I can only speak for myself of course, but I would definitely use it, even if it's slow. It'd be a huge help.


fix(cmd-api-server): TLS for tests on NodeJS 16

Describe the bug
The tests are failing on NodeJS 16, specifically the one marked below.
To Reproduce

Run the CI suite with NodeJS
Watch it burn

Expected behavior
Tests pass.
Logs/Stack traces
not ok 14 - packages/cactus-cmd-api-server/src/test/typescript/unit/config/self-signed-certificate-generator/certificates-work-for-mutual-tls-test.ts # time=10409.934ms
  ---
  env:
    TS_NODE_COMPILER_OPTIONS: '{"jsx":"react"}'
  file: packages/cactus-cmd-api-server/src/test/typescript/unit/config/self-signed-certificate-generator/certificates-work-for-mutual-tls-test.ts
  timeout: 3600000
  command: /opt/hostedtoolcache/node/16.1.0/x64/bin/node
  args:
    - -r
    - /home/runner/work/cactus/cactus/node_modules/ts-node/register/index.js
    - --max-old-space-size=4096
    - packages/cactus-cmd-api-server/src/test/typescript/unit/config/self-signed-certificate-generator/certificates-work-for-mutual-tls-test.ts
  stdio:
    - 0
    - pipe
    - 2
  cwd: /home/runner/work/cactus/cactus
  exitCode: 1
  ...
{
    # Subtest: works with HTTPS NodeJS module
        ok 1 - class present on API surface
        ok 2 - Instantiated SelfSignedCertificateGenerator OK.
        ok 3 - serverCert truthy
        ok 4 - serverCert.certificatePem truthy
        ok 5 - serverCert.privateKeyPem truthy
        ok 6 - serverCert.certificate truthy
        ok 7 - serverCert.keyPair truthy
        ok 8 - clientCert truthy
        ok 9 - clientCert.certificatePem truthy
        ok 10 - clientCert.privateKeyPem truthy
        ok 11 - clientCert.certificate truthy
        ok 12 - clientCert.keyPair truthy
        ok 13 - Server cert verified client cert OK
        ok 14 - HTTPS Server object truthy
        ok 15 - HTTPS Server is indeed listening
        ok 16 - HTTPS Server provided truthy AddressInfo
        ok 17 - HTTPS Server provided truthy AddressInfo.port
    [2021-05-06T23:52:07.645Z] DEBUG (test-generates-working-certificates): AddressInfo for test HTTPS server: {"address":"<IP_ADDRESS>","family":"IPv4","port":39525}
    [2021-05-06T23:52:07.655Z] DEBUG (test-generates-working-certificates): keylog:tlsSocket.address(): {"address":"<IP_ADDRESS>","family":"IPv4","port":39525}
    [2021-05-06T23:52:07.655Z] DEBUG (test-generates-working-certificates): keylog:data: "SERVER_HANDSHAKE_TRAFFIC_SECRET 06fa27e8112f22436dadf3053f20f76cb5866271b7878978a2eab76bb279f2bf c74821c1a5d9f9a49c3ff482b21e96f448ed7aba2a9f48f4749e863dff9874d0aee6497522f9e3eabf71766c8e345e47\n"
    [2021-05-06T23:52:07.655Z] DEBUG (test-generates-working-certificates): keylog:tlsSocket.address(): {"address":"<IP_ADDRESS>","family":"IPv4","port":39525}
    [2021-05-06T23:52:07.655Z] DEBUG (test-generates-working-certificates): keylog:data: "CLIENT_HANDSHAKE_TRAFFIC_SECRET 06fa27e8112f22436dadf3053f20f76cb5866271b7878978a2eab76bb279f2bf a9a805be47cd2a581c9c704e243f235aeb97681f652bd8b788b2e7bb73af5a8e6b4bb0e75309f8ca7fc9a195ea0b24a6\n"
    [2021-05-06T23:52:07.685Z] DEBUG (test-generates-working-certificates): keylog:tlsSocket.address(): {"address":"<IP_ADDRESS>","family":"IPv4","port":39525}
    [2021-05-06T23:52:07.697Z] DEBUG (test-generates-working-certificates): keylog:data: "EXPORTER_SECRET 06fa27e8112f22436dadf3053f20f76cb5866271b7878978a2eab76bb279f2bf b7165e3405a85717671af08c1055c3a60330bfa8f63607f22b1e70671b25422478f632376bc547dc319ede3915e20254\n"
    [2021-05-06T23:52:07.697Z] DEBUG (test-generates-working-certificates): keylog:tlsSocket.address(): {"address":"<IP_ADDRESS>","family":"IPv4","port":39525}
    [2021-05-06T23:52:07.697Z] DEBUG (test-generates-working-certificates): keylog:data: "SERVER_TRAFFIC_SECRET_0 06fa27e8112f22436dadf3053f20f76cb5866271b7878978a2eab76bb279f2bf 2a510ed4397b1489b9a6946747e94bd13bb01d97b1ab81299bb9cd367ed33a0426cab163cce60dcfa26c881b38ef6e2d\n"
        not ok 18 - Invalid URL: localhost
          ---
          stack: |
            Array.forEach (<anonymous>)
          at:
            line: 363
            column: 5
            file: node:internal/errors
            constructor: true
            function: NodeError
          type: TypeError
          input: localhost
          code: ERR_INVALID_URL
          tapCaught: uncaughtException
          test: works with HTTPS NodeJS module
          ...

        Bail out! Invalid URL: localhost
}
Bail out! Invalid URL: localhost
[2021-05-06T23:52:11.629Z] ERROR (test-generates-working-certificates): Failed to send request:  Error: Client network socket disconnected before secure TLS connection was established
    at connResetException (node:internal/errors:683:14)
    at TLSSocket.onConnectEnd (node:_tls_wrap:1588:19)
    at TLSSocket.emit (node:events:377:35)
    at endReadableNT (node:internal/streams/readable:1312:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'ECONNRESET',
  path: null,
  host: '<IP_ADDRESS>',
  port: 39517,
  localAddress: undefined
}

Cloud provider or hardware configuration:
GH Actions CI Ubuntu
Operating system name, version, build:
Ubuntu 20.04 LTS
Hyperledger Cactus release version or commit (git rev-parse --short HEAD):
main @ today
Hyperledger Cactus Plugins/Connectors Used
N/A
Additional context
Came up when I tried adding coverage for NodeJS 16 to the CI suite.
https://github.com/hyperledger/cactus/runs/2522373610?check_suite_focus=true#step:5:3415
cc: @takeutak @sfuji822 @hartm @jonathan-m-hamilton @AzaharaC @jordigiam @kikoncuo @petermetz @arnab-roy @jagpreetsinghsasan

This was fixed in an earlier PR of mine, forgot to close the issue back then.


Change to project space on openproject

Consider automatically changing to the project space on opening a project as this is the first thing one does 99% of the time, to see the current branch, recent changes etc. Maybe displaying the current branch and other stats too.

This may not actually be possible!


Clarify that Pro also is supported

It is not clear today that Pro is supported, only Business is "marked" - but the message from the Product Group is that Pro is enabled.
I have changed the marking in all the tables to visualize this.

Ref. #2284


CAPA v1beta2 breaks the subnet config

Issue
CAPA v1beta2 breaks the subnet config.
Links

Upstream issue
Upstream draft doc "Rethinking Networking in CAPA"

We will continue in https://github.com/giantswarm/roadmap/issues/1979. Support for managed network was merged into our CAPA fork, but is not in upstream (https://github.com/giantswarm/cluster-api-provider-aws/pull/437).

I opened https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/4637 to sync our test for the managed subnet functionality back into upstream. This avoids differences to our fork in the long run and ensures that nobody can accidentally break the functionality again.


chore: release 1.1.2

:robot: I have created a release *beep* *boop*
1.1.2 (2019-06-26)
Bug Fixes

docs: link to reference docs section on googleapis.dev (#63) (7e270e7)

This PR was generated with Release Please.

Release is at https://github.com/googleapis/nodejs-irm/releases/tag/v1.1.2

The release build has started, the log can be viewed here. :sunflower:

:egg: You hatched a release! The release build finished successfully! :purple_heart:


Inline tooltip blocks current lines when line wrap is on

Version: 1.0.4
When line wrap is enabled, the tooltip is always showing right after the first line, which effectively block the virtual 2nd line (which some linters mostly treat them as the same line)
Probably the tooltip should be shown after the last virtual line.
P.S. if the tooltip could be set to shown at the status bar, it would be the best.

Dupe of https://github.com/AtomLinter/Linter/issues/607 and https://github.com/AtomLinter/Linter/issues/608

Thanks. Didn't check.


Turn menu items on/off at run-time

Requested by a user company, menu items such as File > Save as... should be customizable.
"Customizable" means each one of the items can be turned on/off individually at run-time by e.g., a config file.

Example config file:
<menu id="file">
  <menuitem id="file-save-as" disabled="true" />
</menu>

Good idea! I think it will be better to make it based on user's roles and rights. For example, integrate with Spring Security.

That's an even better idea!
I'm not sure, but it would be an good idea to be able to turn them on/off in ui/menubar.xul like
<menuitem id="file-save-as" label="${Spoon.Menu.File.SaveAs}" command="spoon.saveFileAs()" disabled="spoon.checkMenuPermission(\"file-save-as\")" />

Then spoon.checkMenuPermission(String id) will check if the menu item should be disabled based on user's roles.

I found that even as of today menu items can be hidden by commenting out (or completely deleting) the corresponding XML element in ui/menubar.xul.
For example, commenting out file-save-as-vfs
<menu id="file">
  ...
  <!--<menuitem id="file-save-as-vfs" label="${Spoon.Menu.File.SaveAsVFS}" command="spoon.saveXMLFileToVfs()" />-->
  ...
</menu>

will give you a menu without the commented menuitem as below.

4d54235c60d9c21c89c0175be16f084aa2c58ceb supports attribute "disabled" to turn menuitems on/off.
The following ui/menubar.xul
<menu id="file">
  ...
  <menuitem id="file-save-as" label="${Spoon.Menu.File.SaveAs}" command="spoon.saveFileAs()" disabled="true" />
  <!--<menuitem id="file-save-as-vfs" label="${Spoon.Menu.File.SaveAsVFS}" command="spoon.saveXMLFileToVfs()" />-->
  ...
</menu>

will disable file-save-as and hide file-save-as-vfs.

Although Pentaho's XUL extends Mozilla's XUL (see here for details), it does not seem to support enable/disable items based on role/user.
The XUL spec should be further extended to support it, which would need more holistic design hence more time.
Thoughts, design/code contributions will be welcome.

Requested by a user company, menu items such as File > Save as... should be customizable.
"Customizable" means each one of the items can be turned on/off individually at run-time by e.g., a config file.

Example config file:
<menu id="file">
  <menuitem id="file-save-as" disabled="true" />
</menu>

is there any way to hidden or remove menubar ?

Currently, it is not possible to hide the entire menubar (File, Edit, View, Action, etc.).
Can you tell us why you want to hide it?

I want to embed webspoon in a iframe. It satisfies the needs without menubar,and what's more, the whole page layout looks better.


Emmet suggestions are expanding even while writing Javascript in JSX documents

Do you have a question? Please ask it on Stack Overflow with vscode tag
(Use Help > Report Issues to prefill these)

VSCode Version: 1.14.0-insider
OS Version: Windows 10

Steps to Reproduce:

While writing JS code in a javascriptreact document, emmet is inserting it's suggestions into the intellisense suggestions (such as forEach), and pressing tag creates JSX elements.

This behavior is also present in 1.13.1.
"Expand Emmet Abbreviation" seems to always be the default action in code completion when writing JSX.

This seems to affect only when "emmet.useNewEmmet": true in the settings. I actually like the new emmet though.
This must be hard to fix, how would it know it's not a good choice? Maybe enable the new emmet suggestion only inside specific areas, like when already inside the JSX tags.

I have removed the emmet auto complete for jsx files for now.
The command Emmet: Expand Abbreviation will still work. So feel free to use this command or bind a keyboard shortcut (not Tab)
You can still get auto completions for emmet by setting
        "javascriptreact": "html"

I am working on pulling the emmet completion provider into a separate module and have language specific extensions use it by passing the right language.
In that model, a React extension can register a completion provider that uses emmet completion provider and provide completions only when inside the tags in a jsx file.

@ramya-rao-a also, I wanted to point out that the this setting is not working - I'm still getting the emmet suggestions in the JSX files.
"emmet.excludeLanguages": [
    "javascript",
    "javascriptreact"
]

Actually, is there a way to disable emmet altogether? It's not letting me write any code - sometimes it overrides all intellisense, meaning I don't get ANY suggestions. And as said, the setting above doesn't seem to be working.

@kumarharsh Good catch on the emmet.excludedLanguages setting. Fixed with https://github.com/Microsoft/vscode/commit/9483e9fa6ad93b0dbe0ce64bdf2c3d4edb6e2a09
The fix will be out in tomorrow's Insiders build
In your screenshot above, is that a jsx file or javascript file?

If it is a javascript file, then the emmet autocompletes shouldn't appear unless you have specifically asked for it using emmet.syntaxProfiles

Please read https://github.com/Microsoft/vscode/issues/28286#issuecomment-310749096

@kumarharsh you can use the "emmet.useNewEmmet": false until this has been solved somehow adequately.

Actually, here is the best course of action

If you have emmet.useNewEmmet set to true

Assign a keyboard short cut (other than tab) for Emmet: Expand Abbreviation and use that when you want to use Emmet expansions on given abbreviation
If you are on stable (1.13.0 or 1.13.1) set "emmet.showAbbreviationSuggestions": false, "emmet.showExpandedAbbreviation": false to stop the emmet suggestions from showing up if you are mainly a jsx dev
If you are on 1.14 Insiders, then the emmet suggestions won't show up for jsx as explained in https://github.com/Microsoft/vscode/issues/28286#issuecomment-310749096, so you are good to go

If you have emmet.useNewEmmet set to false and are on Insiders, you are missing out on cool new features like multi cursor support for all Emmet Actions, emmet abbreviation suggestions in auto-complete for markup and css like languages

Note to verifier:

Set emmet.useNewEmmet to true
You should be able to use the command Emmet: Expand Abbreviation to expand abbreviations in jsx files
Emmet suggestions should not show up in the suggestion list in jsx files

In VS Code 1.15, emmet suggestions will show up in jsx files.
The noise has been greatly reduced and so will not be an annoyance as before.
If you do find it noisy, set "emmet.showExpandedAbbreviation": "inMarkupAndStylesheetFilesOnly"

@ramya-rao-a Thank you so much.


Issue with startup

Hello,
Do i need to keep the option to keep the upstream FreeBSD repo enabled? I changed it from enabled back to false and the BRO service doesn't seem to start and there are no logs to look at

Hi,
There is no need to keep upstream pkg repositories enabled.
Maybe you need to run this command into your pfSense firewall:
echo 'bro_enable="YES"' >> /etc/rc.conf
and restart.


Save position/windows size between sessions

Would be great if the position windows size was saved in between sessions. For example making the windows smaller next time I log in and open up messenger it'll be the same small size not making me have to resize it again.

I notice that it does, but not when using the snap feature, if you use it then it doesn't remember (only the last time you didn't use it). For windows 7 at least.

Two days ago I reinstalled Windows 10 and now Messenger doesn't remember the window size and position. It worked for me before. Any idea why? I can't find any settings for this.

Please try our new beta. See https://github.com/Aluxian/Facebook-Messenger-Desktop/issues/458
This should now be handled automatically.
I will however check for myslef before closing the issue.


docs(forms): :memo: add options to forms

This is a small PR for updating the forms documentation. It also fixes the form's data loading by awaiting all superValidate functions in +page.server.ts files.
Finally, the examples' forms now display sonner's toasts to show how to handle the form's results in the UI.
It will render different toasts depending on the form's result.
Enjoy ! 🎉

Hey, great example!
Where can I view this? It seems that the docs are not updated with this. Neither the examples.
Thanks in advance

Hey, great example!
Where can I view this? It seems that the docs are not updated with this. Neither the examples.
Thanks in advance

Here is the form example using sonner's toast : https://www.shadcn-svelte.com/docs/components/form

The current example does not show the toast.loading(Submitting...) and the code there either. I was searching for an example with server and client side validation and showing a toast for the loading, the error and the success state. I found this here but neither the Form.Root element nor the formsnap 'option' are no longer available. I would be interested in a 'full' solution. I know that svelte superform has the delayed property. Ideally that would be used to create the toast after a short delay if the server call was not successful. I think that would be a great example for the docs.

You can always test it on your side.
And if you feel like this should be an example in the docs, you might consider making a PR to the project !


Severe Security Issue: full read only access to git repos without authentication

Gitea version (or commit ref): dfad569, 1.7.1
Git version: 2.18.1
Operating system: Alpine Linux v3.8.2
Database (use [x]):

[x] PostgreSQL
[ ] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[x] Not relevant

Log gist:

Description
when using an url from a pull request, I can see the content of the pull request without authentication. After that I'm able to browse through all repositories - still without authentication.
...

Screenshots

this seems to be the visibility flag in the repositories. sorry.

This is a public repository.


feat(types): Add oidcPrompt and oidcLoginHint

Description

Checklist

[ ] pnpm test runs as expected.
[ ] pnpm build runs as expected.
[ ] (If applicable) JSDoc comments have been added or updated for any package exports
[ ] (If applicable) Documentation has been updated

Type of change

[ ] 🐛 Bug fix
[ ] 🌟 New feature
[ ] 🔨 Breaking change
[ ] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

!snapshot

Hey @octoper - the snapshot version command generated the following package versions:

Package
Version

@clerk/chrome-extension
2.1.3-snapshot.v20241216164111

@clerk/clerk-js
5.43.0-snapshot.v20241216164111

@clerk/clerk-expo
2.6.2-snapshot.v20241216164111

@clerk/localizations
3.9.3-snapshot.v20241216164111

@clerk/nuxt
0.1.3-snapshot.v20241216164111

@clerk/remix
4.4.3-snapshot.v20241216164111

@clerk/ui
0.3.3-snapshot.v20241216164111

@clerk/vue
0.1.3-snapshot.v20241216164111

Tip: Use the snippet copy button below to quickly install the required packages.
@clerk/chrome-extension
npm i<EMAIL_ADDRESS>--save-exact

@clerk/clerk-js
npm i<EMAIL_ADDRESS>--save-exact

@clerk/clerk-expo
npm i<EMAIL_ADDRESS>--save-exact

@clerk/localizations
npm i<EMAIL_ADDRESS>--save-exact

@clerk/nuxt
npm i<EMAIL_ADDRESS>--save-exact

@clerk/remix
npm i<EMAIL_ADDRESS>--save-exact

@clerk/ui
npm i<EMAIL_ADDRESS>--save-exact

@clerk/vue
npm i<EMAIL_ADDRESS>--save-exact


Check that at least one of the src paths in elm-package.json matches (or is a child of) the current project

From https://github.com/halohalospecial/atom-elmjutsu/issues/76, as suggested by @Positive07:

Also it must be noted that Elmjutsu traverses the path up until it finds an elm-package.json which may not actually belong to the current project. In addition to searching for the elm-package.json elmjutsu should check that at least one of the src paths matches (or is a child of) the current project otherwise there is no need to compile the elm files

As an example:
I have a project made in elm which has it's elm-package.json, this files is for the project itself, so the src path is set to the elm folder where I have all the .elm files or at least the main entry point. In this project folder I have a subfolder called old where I keep old .elm files which are not part of my project.
If I open the old folder with Atom, Elmjutsu searches for the elm-package.json if not found it goes up a directory and finds the elm-package.json of the project, and compiles all the .elm files in the elm folder, which have no relationship with the files in the old folder.
This could be avoided by checking that old is part of the src paths


Create new_uberon_import.md

First shot at adding documentation for UBERON imports. Sorry if I got anything wrong!

@matentzn actually, the core documentation is pretty good, I just had not find it.
"Standard ODK workflows" --> "Imports management" is perhaps a lot of jargon for those (like me) who are still getting started in the world of ontologies.
I'll close this PR now, we may think about other solutions in the future.

If you have suggestions on how to make this better, you can make an issue here:
https://github.com/INCATools/ontology-development-kit/issues
We want to make this really perfect, so any feedback is appreciated if you have ideas :)


Change the hover action for the minibuttons

Should show a blue background instead of displaying an underline of the text.

Project not used anymore. Archiving.


Support from_str math operators

It would be neat to support something like:
Amount::from_str("7 cBTC + 5 sats")
as opposed to a longer form:
Amount::from_str("7 cBTC").unwrap() + Amount::from_str("5 sats").unwrap()
or:
Amount::from_str("7000005 sats")
Seems like an interesting low priority hobby project if someone wanted.

I personally dislike reviewing or working on the amount module already because it is overly complicated, this is just begging for it to get worse.

Definitely NACK. We're not going to add an interpreter to amount parsing and eventually end up with the Rust compiler in the library...
If you want to make amounts easier, I suggest you do this:
pub trait U64Ext: Into<u64> /*I'm being lazy here */ {
    fn sat(self) -> Amount {
        Amount::from_sat(self.into())
    }

    fn cbtc(self) -> Amount {
        Amount::(self.into() * 1000000)
    }

    // ...
}

impl U64Ext for u64 {}

And then you write:
7.cbtc() + 5.sat()

and eventually end up with the Rust compiler in the library...

Then we could compile rust-bitcoin with rust-bitcoin :thinking:

Still missing docker in VM running on Minecraft's redstone running on Factorio's circuits.


Support the C-based facter 3.x with a better cronjob

For $::facterversion >= 3.0.0 we should not use the Ruby-based refresh-mcollective-metadata but instead just run facter --yaml as the old Ruby support is gone.
Includes new rake spec tests - all passing.

Cool!
But shouldn't we use
puppet facts --render-as yaml
which includes puppet's pluginsync facts instead of simple facter --yaml?
I'd prefer path to puppet to be editable through mcollective class parameter (puppet_exec_path, e.g.) also.

That's a great idea - and I wasn't aware of puppet facts --render-as yaml so thank you for introducing me to that.
New commit updates the README.md and includes new tests.

Agh stop press...
mcollective seems unable to parse the facts.yaml produced by puppet facts --render-as yaml :(
E, [2015-07-15T11:18:18.887008 #21662] ERROR -- : yaml_facts.rb:31:in `rescue in block in load_facts_from_source' Failed to load yaml facts from /etc/puppetlabs/mcollective/facts.yaml: TypeError: no implicit conversion of Puppet::Node::Facts into Hash
E, [2015-07-15T11:18:18.887156 #21662] ERROR -- : base.rb:45:in `rescue in block in get_fact' Failed to load facts: RuntimeError: Got empty facts

However, if I replace the facts.yaml with the one from facter --yaml and restart mcollectived then we're all good again :(
Advice welcomed!

The problem is the output which differs from facter --yaml
You may see puppet facts --render-as yaml returns facts as array within "values".
It works fine with
/opt/puppetlabs/bin/puppet facts --render-as yaml | sed -e'/^--- \!ruby\/object:Puppet::Node::Facts$/d;/^name:\ .*$/d; /^values:\.*$/d;s/^\ \ //g;' >/etc/puppetlabs/mcollective/facts.yaml 2>/dev/null
There is one more drawback.
Seems like puppet facts returns facts for "production" environment only, even if actual environment differs.
Maybe we should use erb/epp-generated yaml?

Hm, I'm also doing a bunch of improvements for Windows (PRs soon...), and I'm very much in favour of an approach which will work on both Linux and Windows - e.g. a chain of sed is not going to go far on Windows.
Aside from that, the sed is tough on the eyes.  What do you mean by the 'erb/epp' generated yaml?

I meant there is no nice way to deal with puppet facts.
I found another way here: https://projects.puppetlabs.com/projects/mcollective-plugins/wiki/FactsFacterYAML

Hm, that snippet is surely the basis of what became the refresh-mcollective-metadata cronjob in the first place? i.e. we've come full circle

Just ran into this as well, so I'm glad it's being worked on. Regarding puppet facts not being correct for facter, this thread from yesterday says that facter 3.0.2 (hopefully dropping in a few days) will be getting the -p flag back, so that might be the way to go.

As an extra consideration though, the output from facter -p --yaml and puppet facts find --render-as yaml differs. The puppet version seems to break structured facts out into multiple facts. For example, the puppet version contains
---
...
values:
...
  augeas:
    version: 1.4.0
  augeasversion: 1.4.0
...

while the facter version contains only
augeas:
  version: 1.4.0
...

Also note the other differences, like that the puppet version has the facts under the "values" key and the lack of --- in the facter version.

closing in favour of #228.


Add MinVer and generate unique releases

Let's add MinVer and on successful builds generate a release.

We could try this lib https://github.com/dotnet/Nerdbank.GitVersioning


fix #1972 (I think)

I think this does what I meant in #1972, but not sure about it

@kimrutherford


TypeError: No registered converter was able to produce a C++ rvalue of type class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > from this Python object of type list

RDKit version: 2021.03.5
OS: Windows
Python version (if relevant): 3.7.9
Are you using conda? Yes
If you are using conda, which channel did you install the rdkit from?
If you are not using conda: how did you install the RDKit?

Description
When I try to below code in jupyter notebook:
file_name_of_seed_structures = 'pKa_table.csv'
number_of_generated_structures = 1000
output_file_type = 'smiles'
if file_name_of_seed_structures[-4:] == '.csv':
dataset = pd.read_csv(file_name_of_seed_structures, index_col=0)
smiles = dataset.iloc[:, 0]
molecules = []
for smiles_i in smiles:
molecules.append(Chem.MolFromSmiles(smiles_i))
elif file_name_of_seed_structures[-4:] == '.sdf':
molecules = Chem.SDMoSupplier(file_name_of_seed_structures)
I get the following error message:
TypeError: No registered converter was able to produce a C++ rvalue of type class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > from this Python object of type list
KINDLY HELP ME FIX THE ABOVE ERROR.

I'm closing this because it is a question, not a bug report or enhancement request.
Please ask questions using the "Discussions" tab.


Implement Sharpe ratio Mod

Description
Implements Mod #15.
Checklist

Implementation:

[x] Implementation of the Mod in the gurobi_optimods installable package
[x] Tests for the Mod implementation in tests/
[x] Docstrings for public API, correctly linked using sphinx-autodoc

Documentation page:

[x] Problem specification with description tab and optimzation model tab
[x] Example of the input data format (use gurobi_optimods.datasets for loading data)
[x] Runnable code example
[x] Presentation of solutions

Closing this PR. Will open a new one shortly.


Throws Index Error For this Mapping

Thanks for your lib :) but why is there this error on this mapping? (no empty strings as such)
mis_spell_mapping = {
	'whattsup': 'WhatsApp', 'whatasapp':'WhatsApp', 'whatsupp':'WhatsApp','whatcus':'what cause', 'arewhatsapp': 'are WhatsApp', 'Hwhat':'what',
	'Whwhat': 'What', 'whatshapp':'WhatsApp', 'howhat':'how that','Whybis':'Why is', 'laowhy86':'Foreigners who do not respect China',
	'Whyco-education':'Why co-education',"Howddo":"How do", 'Howeber':'However', 'Showh':'Show',
	"Willowmagic":'Willow magic', 'WillsEye':'Will Eye', 'Williby':'will by'
}

  File "/root/anaconda3/envs/fastaiv3/lib/python3.6/site-packages/flashtext/keyword.py", line 665, in replace_keywords
    current_word += orig_sentence[idy]
IndexError: string index out of range

f_misspell = KeywordProcessor()
for k,v in mis_spell_mapping.items():
	f_misspell[k] = v

def spacing_some_connect_words(text):
    return f_misspell.replace_keywords(text)
df['abc'] = df['abc'].apply(spacing_some_connect_words)

Never mind, I guess I found the fix!
Thanks again for the lib :)

Welcome.
On Thu, Apr 25, 2019, 9:30 PM Aditya Soni<EMAIL_ADDRESS>wrote:

Never mind, I guess I found the fix!
Thanks again for the lib :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/vi3k6i5/flashtext/issues/79#issuecomment-486734390,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAXY3QVTGNGJ4EVWV4ICJYTPSHISZANCNFSM4HIOEIGQ
.

The fix is here, you
can make an update :)
On Thu, 25 Apr 2019, 21:31 Vikash Singh<EMAIL_ADDRESS>wrote:

Welcome.
On Thu, Apr 25, 2019, 9:30 PM Aditya Soni<EMAIL_ADDRESS>wrote:

Never mind, I guess I found the fix!
Thanks again for the lib :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/vi3k6i5/flashtext/issues/79#issuecomment-486734390,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/AAXY3QVTGNGJ4EVWV4ICJYTPSHISZANCNFSM4HIOEIGQ
.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/vi3k6i5/flashtext/issues/79#issuecomment-486734699,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFNPJJVRNNPIL62UCSUON6DPSHIWDANCNFSM4HIOEIGQ
.


Multiple Satellities in one Room

I have 2 Satellites in one Room, sadly i am not able to mix the Audio and send it to one rhasspy install. Is there any option to "group" those 2 Satellites? Currently both Satellites are triggering on Wake Word and it's a total mess.

Hmmm...do you have both satellites connected to the base via HTTP or MQTT? If it's HTTP, it's hard to do much since they're not really aware of each other. But there might be an option for MQTT.

I have everything connect via MQTT. Any Ideas on how to accomplish this?

Sure, you can set two different wakewords?
Otherwise, when both sat's here the wakeword, they respond
Can I ask what is the use of those 2 satellites in 1 room?

Yes, but two different wakewords is lame.
I use one sat for the whole room and the other for my headset. I can't mix audio, becaus of the delay added by my USB Headset.

I don't see any other options tbh.
But I also don't quite understand the use-case for having a sat for a whole room and another for a headset.
They basically control the same thing right? It's probably me, so sorry about that.
What might be possible, but also not a very nice solution, is to run 2 Rhasspy instances....

I am running multiple rhasspy instances in docker. But there is my problem: Both of them get triggerd at the same time.
Running Rhasspy on my Headset allows me to talk much quieter and in general recognition is much better.

I see, well you can separate the two instances and connect sat1 with server1 and sat2 with server2
This can be done by putting sat1 in all the Satellite ID field of server1 and sat2 in server2.
That way, sat1 does not trigger server2 and vice versa
What you cannot do with the same wakeword is to have a trigger from sat1 only, if sat2 also triggers the wakeword.
I suggest closing this issue and maybe go for a feature request here:
https://community.rhasspy.org/c/feature-requests/7

I have everything connect via MQTT. Any Ideas on how to accomplish this?

A small change to the dialogue manager could make this work. If it was aware that site ids were in a "group", then it could simply not start a new dialogue session if a member of the group already has one. So if a second wake up attempt comes in, it will be ignored.
I'm trying to think of what other uses grouping site ids this way might have.

So if a second wake up attempt comes in, it will be ignored.

This is excatly what i need! Grouping site ids. It's useful in every case where you have 2 mics close to each other (big rooms, headsets, smartphones). I could imagine many use cases.

nice idea.. But very often devices hear speakers from other rooms.. but these would not be "grouped"
What about something that checks for voice start time.. as sound waves travels at a set rate.. if any other device hears the wake word within X milliseconds only the first device should continue. It would not be very often that more than 2 devices get asked something all at the exact time in space.
My lounge room device can hear me in the kitchen speaking. but I would not "group" these devices
thought?

Yes, a configurable delay in milliseconds would be nice (0 for disabled). As already mentioned it is very rare that 2 people close to each other need to call Rhasspy at the same time. So there are no real tradeoffs, just benifits.
I think the most flexible way is to create custom groups, each with a custom delay of X milliseconds.

My lounge room device can hear me in the kitchen speaking. but I would not "group" these devices
thought?

These were exactly my thoughts.
I was about to raise this as a feature request, until I saw this issue thread.
I was hoping to for a way to say "turn on the light" and use the sat ID to determine in which room.
Don't want another light turning on due to it catching my voice also.
The Alexa works like this, which I'm trying to phase out.

Here's what I'm thinking for this: assume there's a new configuration option for a site id "group separator". By default, this is not set and Rhasspy's behavior is unchanged.
As an example, let's say the group separator is set to "." (period). Assume you have 2 satellites and a base station with these site ids:

base
living_room.satellite1
living_room.satellite2

Now, you wake up Rhasspy in the living room and both satellites detect it. With the group separator, the dialogue manager could split the site ids into <group>.<name> and notice that both <group> values are the same (living_room). In that case, the first session "wins" and the second session is quietly dropped.
Without the group separator, the second session would override the first (Snips' original behavior).
Thoughts?

I really like your approch, it doesn't even include changes to the GUI. Simply rename all sats and you are ready to go!

That looks like a good idea.
A couple of queries..

The WebSocket API currently includes a 'sideId' property. Would this remain, or would you plan to split it in to 2 properties (e.g. groupId, siteId)?

You mention if they are not grouped, the second session would override the first...
Say you have the following setup:

base
living_room.satellite1
living_room.satellite2
kitchen.satellite1

You speak a command in the living room, intended for the 'living_room' satellites.
The kitchen satellite then also picks up the speech in the distance. Would the kitchen satellite then override the living room satellite(s)?

Anything passing through the dialogue manager would be split, so this should work even if it comes from the websocket API

In that case, I'd say it might be better to name things like this:

base
upstairs.living_room.satellite1
upstairs.living_room.satellite2
upstairs.kitchen.satellite1

I assume the living room and kitchen are "upstairs". With the proposed extension, you would want to group all satellites that could potentially activate at the same time. I left "living_room" and "kitchen" in the site ids assuming the intent handler might care to  do something with them.

Just checking the start time, any satellite that starts a session within something like 100ms of the first item are dropped
No name changing
Simple. Any item in any room that hears the wake word and starts a session.. first in wins

In the Advanced settings, you can now set dialogue.group_separator as described above. For example:
{
    "dialogue": {
        "group_separator": "."
    }
}

With that, you can set the site ids of two satellites to be something like living_room.satellite1 and living_room.satellite2 (everything before the "." is the "group id"). As long as one satellite in the same group has an active session, others will not be able to start one. So no more double wake ups :)
Please re-open the issue if you find a bug!

I have been testing this out with two satellites in the same room, both using wakeword detection (Mycroft Precise custom trained networks) and am finding that this does not prevent double wakeups, in addition to blocking any dialogue sessions from the same satellite when one is already active. This is a bit of a problem since for some reason my dialogue sessions from any device take forever to end even after the intent has been handled, thus I cannot consecutively issue commands by waking it up again right after it's "finished" a session. Right now with the satellite grouping in use the way you've instructed here, I'm getting double wakeups and this blocking issue. Do you know what might be happening here?
Some logs for demonstration, you can see one of my satellites refusing to wake up again while it's "finished" dialogue session is still active for some reason. This does not happen without satellite grouping, I get consecutive wakeups every time.

I have:
- 1 master node

Name: master

Version: 2.5.10

Deployment: Docker

Arch: x86_64 / Debian Buster

Connexion: Ethernet

- 1 satellite node

Name: rdc.raspberrypi3

Version: 2.5.10

Deployment: .deb package

Arch: armhf / Debian Buster

Connexion: Wifi

Location: kitchen (can hear me from living room)

Wakeword: Raven (hey-flipper)

- 1 satellite node

Name: rdc.respeakercore2

Version: 2.5.10

Deployment: .deb package

Arch: armhf / Debian Buster

Connexion: Wifi

Location: living room (can hear me from the kitchen)

Wakeword: Raven (hey-flipper)

All nodes are using the same external MQTT server.
The problem
The problem is that my satellites are triggering at the same time and are both trying to handle the intent at the same time.
I find it weird because:

I configured "group_separator=." on my master
I added a prefix "rdc." on my two nodes

I wonder if I did something wrong on the config ?
NB:

I've tested and had the same behaviour on 2.5.9 and 2.5.10

rdc.raspberrypi3 has its own secondary wakeword (hey-rasspy)
I noticed that when I say "hey rasspy", only rdc.raspberrypi3 wakes up and manage the command.
If I use 1 different wakeword for each satellite, I have no problems.

I also noticed that Rhasspy is slower at handling requests when both satellites are running.
When I stop 1 of them, it gets lightning fast.

Here are the configs:
{
    "dialogue": {
        "group_separator": ".",
        "satellite_site_ids": "master,satellite1,satellite2,satellite3,rhasspy-sejour,rhasspy-rdc,rhasspy-salon,rdc.respeakercore2,rdc.raspberrypi3",
        "system": "rhasspy"
    },
    "handle": {
        "remote": {
            "url": "http://<IP_ADDRESS>:1880/gestionIntent"
        },
        "satellite_site_ids": "rhasspy-sejour,satellite1,satellite3,rhasspy-rdc,rhasspy-salon,rdc.respeakercore2,rdc.raspberrypi3",
        "system": "remote"
    },
    "intent": {
        "fuzzywuzzy": {
            "min_confidence": "0,5"
        },
        "satellite_site_ids": "master,satellite1,satellite2,satellite3,rhasspy-sejour,rhasspy-rdc,rhasspy-salon,rdc.respeakercore2,rdc.raspberrypi3",
        "system": "fsticuffs"
    },
    "mqtt": {
        "enabled": "true",
        "host": "<IP_ADDRESS>",
        "port": "1885",
        "site_id": "master"
    },
    "sounds": {
        "error": "${RHASSPY_PROFILE_DIR}/beep_ko.wav",
        "recorded": "${RHASSPY_PROFILE_DIR}/beep_ok.wav",
        "wake": "${RHASSPY_PROFILE_DIR}/beep_hi.wav"
    },
    "speech_to_text": {
        "satellite_site_ids": "master,satellite1,satellite2,satellite3,rhasspy-sejour,rhasspy-rdc,rhasspy-salon,rdc.respeakercore2,rdc.raspberrypi3",
        "system": "kaldi"
    },
    "text_to_speech": {
        "espeak": {
            "voice": "fr-FR"
        },
        "larynx": {
            "default_voice": "siwis"
        },
        "marytts": {
            "effects": {
                "effect_F0Scale_parameters": "f0Scale:1.1;",
                "effect_F0Scale_selected": "on",
                "effect_TractScaler_parameters": "amount:1;",
                "effect_TractScaler_selected": "on",
                "effect_Volume_parameters": "amount:0,5;",
                "effect_Volume_selected": "on"
            },
            "locale": "fr",
            "url": "http://<IP_ADDRESS>:59125/process",
            "voice": "enst-camille-hsmm",
            "volume": "1"
        },
        "satellite_site_ids": "master,satellite1,satellite2,satellite3,rhasspy-sejour,rhasspy-rdc,rhasspy-salon,rdc.respeakercore2,rdc.raspberrypi3",
        "system": "nanotts"
    }
}

{
    "dialogue": {
        "satellite_site_ids": "rdc.respeakercore2"
    },
    "handle": {
        "remote": {
            "url": "http://<IP_ADDRESS>:1880/gestionIntent"
        },
        "satellite_site_ids": "rdc.respeakercore2"
    },
    "intent": {
        "system": "hermes"
    },
    "microphone": {
        "arecord": {
            "device": "pulse",
            "siteId": "rdc.respeakercore2",
            "udp_audio_host": "<IP_ADDRESS>",
            "udp_audio_port": "8888"
        },
        "pyaudio": {
            "siteId": "rdc.respeakercore2",
            "udp_audio_host": "<IP_ADDRESS>",
            "udp_audio_port": "8888"
        },
        "system": "arecord"
    },
    "mqtt": {
        "enabled": "true",
        "host": "<IP_ADDRESS>",
        "port": "1885",
        "site_id": "rdc.respeakercore2"
    },
    "sounds": {
        "aplay": {
            "device": "pulse"
        },
        "system": "aplay",
        "wake": "${RHASSPY_PROFILE_DIR}/beep_hi.wav"
    },
    "speech_to_text": {
        "system": "hermes"
    },
    "text_to_speech": {
        "satellite_site_ids": "rdc.respeakercore2",
        "system": "hermes"
    },
    "wake": {
        "raven": {
            "keywords": {
                "hey-flipper": {
                    "enabled": true
                }
            },
            "udp_audio": "<IP_ADDRESS>:8888"
        },
        "satellite_site_ids": "rdc.respeakercore2",
        "system": "raven"
    },
    "rhasspy": {
        "listen_on_start": true
    }
}

{
    "dialogue": {
        "satellite_site_ids": "etage.raspberrypi3"
    },
    "handle": {
        "remote": {
            "url": "http://<IP_ADDRESS>:1880/gestionIntent"
        },
        "satellite_site_ids": "rdc.respeakercore2"
    },
    "intent": {
        "system": "hermes"
    },
    "microphone": {
        "arecord": {
            "device": "plughw:CARD=seeed8micvoicec,DEV=0",
            "siteId": "rdc.respeakercore2",
            "udp_audio_host": "<IP_ADDRESS>",
            "udp_audio_port": "8888"
        },
        "pyaudio": {
            "siteId": "rdc.raspberrypi3",
            "udp_audio_host": "<IP_ADDRESS>",
            "udp_audio_port": "8888"
        },
        "system": "pyaudio"
    },
    "mqtt": {
        "enabled": "true",
        "host": "<IP_ADDRESS>",
        "port": "1885",
        "site_id": "rdc.raspberrypi3"
    },
    "sounds": {
        "aplay": {
            "device": "pulse"
        },
        "system": "aplay",
        "wake": "${RHASSPY_PROFILE_DIR}/beep_hi.wav"
    },
    "speech_to_text": {
        "system": "hermes"
    },
    "text_to_speech": {
        "satellite_site_ids": "rdc.raspberrypi3",
        "system": "hermes"
    },
    "wake": {
        "raven": {
            "keywords": {
                "hey-flipper": {
                    "enabled": true
                },
                "hey-rhasspy": {
                    "enabled": true
                }
            },
            "udp_audio": "<IP_ADDRESS>:8888"
        },
        "satellite_site_ids": "rdc.raspberrypi3",
        "system": "raven"
    },
    "rhasspy": {
        "listen_on_start": true
    }
}

Feel free to request more traces and tests if needed.
Thank you very much for your help.
Best regards

Hello,
I noticed some mistakes in my rdc.raspberrypi3 satellite.
The site id wasn't correctly set for michrophone and handle
I updated it like this:
{
    "dialogue": {
        "satellite_site_ids": "rdc.raspberrypi3"
    },
    "handle": {
        "remote": {
            "url": "http://<IP_ADDRESS>:1880/gestionIntent"
        },
        "satellite_site_ids": "rdc.raspberrypi3"
    },
    "intent": {
        "system": "hermes"
    },
    "microphone": {
        "pyaudio": {
            "siteId": "rdc.raspberrypi3",
            "udp_audio_host": "<IP_ADDRESS>",
            "udp_audio_port": "8888"
        },
        "system": "pyaudio"
    },
    "mqtt": {
        "enabled": "true",
        "host": "<IP_ADDRESS>",
        "port": "1885",
        "site_id": "rdc.raspberrypi3"
    },
    "sounds": {
        "aplay": {
            "device": "pulse"
        },
        "system": "aplay",
        "wake": "${RHASSPY_PROFILE_DIR}/beep_hi.wav"
    },
    "speech_to_text": {
        "system": "hermes"
    },
    "text_to_speech": {
        "satellite_site_ids": "rdc.raspberrypi3",
        "system": "hermes"
    },
    "wake": {
        "raven": {
            "keywords": {
                "hey-flipper": {
                    "enabled": true
                }
            },
            "minimum_matches": "1",
            "probability_threshold": "0.6",
            "udp_audio": "<IP_ADDRESS>:8888",
            "vad_sensitivity": "1"
        },
        "satellite_site_ids": "rdc.raspberrypi3",
        "system": "raven"
    },
    "rhasspy": {
        "listen_on_start": true
    }
}

Now the behavior is:

I say the wake word (hey rhasspy)
Both satellites are catching it
I say a command ("donne moi l'heure" English --> "give me the time")
Both satellites are recognizing/handling the intent (GetTime)
Both satellites are sending the response via TTS

All of this happens on the same timeframe on my satellites.
Here are the logs:
Node: master
[DEBUG:2021-04-09 13:41:07,111] rhasspyserver_hermes: Sent 441 char(s) to websocket
[DEBUG:2021-04-09 13:41:05,781] rhasspyserver_hermes: Sent 437 char(s) to websocket

Node: rdc.raspberrypi3
[DEBUG:2021-04-09 13:36:27,027] rhasspyserver_hermes: Sent 437 char(s) to websocket
[DEBUG:2021-04-09 13:36:27,023] rhasspyserver_hermes: <- NluIntent(input="donne moi l'heure", intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='rdc.raspberrypi3', id=None, slots=[], session_id='rdc.raspberrypi3-hey-flipper-16260ade-35e0-47a4-84d0-965c76c344de', custom_data='hey-flipper', asr_tokens=[[AsrToken(value='donne', confidence=1.0, range_start=0, range_end=5, time=None), AsrToken(value='moi', confidence=1.0, range_start=6, range_end=9, time=None), AsrToken(value="l'heure", confidence=1.0, range_start=10, range_end=17, time=None)]], asr_confidence=None, raw_input="donne moi l'heure", wakeword_id='hey-flipper', lang=None)
[WARNING:2021-04-09 13:36:21,644] rhasspyserver_hermes: Dialogue management is disabled. ASR will NOT be automatically enabled.
[DEBUG:2021-04-09 13:36:21,643] rhasspyserver_hermes: <- HotwordDetected(model_id='/etc/rhasspy/profiles/fr/raven/hey-flipper/example-0.wav', model_version='', model_type='personal', current_sensitivity=0.6, site_id='rdc.raspberrypi3', session_id=None, send_audio_captured=None, lang=None)

Node: rdc.respeakercore2
[DEBUG:2021-04-09 11:41:07,146] rhasspyserver_hermes: Sent 441 char(s) to websocket
[DEBUG:2021-04-09 11:41:07,140] rhasspyserver_hermes: <- NluIntent(input="donne moi l'heure", intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='rdc.respeakercore2', id=None, slots=[], session_id='rdc.respeakercore2-hey-flipper-699c2a02-3302-4457-95af-4d20fd934fca', custom_data='hey-flipper', asr_tokens=[[AsrToken(value='donne', confidence=1.0, range_start=0, range_end=5, time=None), AsrToken(value='moi', confidence=1.0, range_start=6, range_end=9, time=None), AsrToken(value="l'heure", confidence=1.0, range_start=10, range_end=17, time=None)]], asr_confidence=None, raw_input="donne moi l'heure", wakeword_id='hey-flipper', lang=None)
[WARNING:2021-04-09 11:41:01,511] rhasspyserver_hermes: Dialogue management is disabled. ASR will NOT be automatically enabled.
[DEBUG:2021-04-09 11:41:01,506] rhasspyserver_hermes: <- HotwordDetected(model_id='/etc/rhasspy/profiles/fr/raven/hey-flipper/example-0.wav', model_version='', model_type='personal', current_sensitivity=0.6, site_id='rdc.respeakercore2', session_id=None, send_audio_captured=None, lang=None)

Dialogue management is disabled on my satellites, so I only configured "dialogue.group_separator": "." on the master.
Is it correct ?
Thank you for your help
Best regards

I think I've figured out the problem here, and it will be fixed in the next update to 2.5.10.
During audio playback, it's possible for a second satellite to sneak in and start a new session. My automated tests didn't include audio, so I never saw it. I'm using locks now in the dialogue manager to prevent this behavior.

Great ! Thank you for the feedback.
Let's wait for the next update 🙂👍

Hopefully fixed by now. Please let me know if this is still a problem.


Refactor createProbot function into a class

Moving to TypeScript makes it pretty obvious that Probot needs some refactoring. This is the start of that.
First up: refactor the createProbot function into a class.

refactor the createProbot function into a class.

Yesssss - I'm very much in favor of more OOP consistency throughout the codebase.


Using CAN 2.0 Classic Frame Format

Is there a setting in this library to specify CAN 2.0 Classic frame format? I have looked in documentation and the source but I don’t see it.

If you send a message formatted as a 'CANMessage' it should be sent as a CAN 2.0 format (either extended or standard)
If you refer to Page 13 of the PDF, you'll see the message constructor elements.

Thanks! I was way overthinking it. I looks like the receiveFDi method handles receiving CAN 2.0. Just need to look at the Type property for CAN_DATA and dispatch the message to a handler, correct?

Answer from Mitchy6 worked. Thanks again!


Fixed rlp related compile errors

Sorry, my bad. I had done this already, but had forgotten to push it. Fixed here:
badc616be896f89843208b4000d3d51f1c81304f


[Storage] az storage logging update: Add check for logging version

Description

Fix issue #13232
For table service, the supported version is only 1.0 .
Testing Guide

az storage logging update
History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

add to S171


Revise remark in AKV config provider topic

Fixes #13608
The original remark was ...

Disabled and expired secrets throw a KeyVaultClientException at runtime. Therefore, it's important that you update your application or replace or update a disabled or expried secret in the key vault before the provider attempts to load or reload a disabled or expired secret.

It was clearly mangled a bit on an ancient update back in 2017.
New remark on this PR ...

Disabled and expired secrets throw a KeyVaultClientException at runtime. To prevent the app from throwing, provide the configuration using a different configuration provider or update the disabled or expired secret.

Thanks @ps-tb! :rocket:

This is such a trivial change, that I'm going to go ahead with it and move on. 🏃


Documentation / repo / crates.io mismatch

The published documentation lists methods which do not exist in the latest version on Crates.io.
I also can’t find code in the repo which matches the documentation which is currently published.
Could you clarify what’s gone on here?

Crates.io says that the currently published version in 0.2.0 and docs.rs has the docs for 0.2.0
I don't publish from the repo with regularity, so keeping it updated with docs.rs or crates.io isn't a thing that is expected.
https://crates.io/crates/flame
https://docs.rs/flame/0.2.0/flame/
What methods are you not finding in the currently published version?

The documentation linked to by Crates.io is this one, not the docs.rs version, which does appear to line up with the published version. Looks like this was changed in 272e11fbc8d53ef99ddc4ebc7b24b96a2ad116f3

Oh damn it.

https://crates.io/crates/flame
Updated

Thank you! 😃


Issue with k8s.io/docs/admin/authentication/

Why kubernetes has used term "id token" in its documentation and not use "access token" for accessing Kube API from kubectl?
Access token is to be used for accessing some service like Kubernetes API (resource server in open id terminology). See use of access token as mentioned in Open Id specs: https://openid.net/specs/openid-connect-basic-1_0.html#TokenOK
"The Client can then use the Access Token to access protected resources at Resource Servers. "
Client should verify claims of Id token as mentioned in below link and it should not use it for accessing Kube API as it is mentioned in this Kubernetes page.
https://openid.net/specs/openid-connect-basic-1_0.html#IDTokenValidation.
IMO we are also failing to differentiate between resource server(=Kube API) and client(=kubectl) based on open id terminology.

/remove-lifecycle stale

Actually, they are using ID Token and not the access token. That's a bigger issuer than just documentation. I really believe this is a design issue that should be addressed. Nobody else, that I know of, uses ID Token as bearer and probably not in the OIDC spec.


Add tag/branch for Laravel 5.5 (resupport)

Add tag/branch for Laravel 5.5 (resupport)
I'm using your package in one of my projects. Recently i wanted to updated my dependencies and noticed this package is no longer supporting Laravel5.5 on the branch dev-develop. My question to you is, can you make a separate branch or add a tag so i can require your package again in my dependencies.
Hope to hear from you soon, this is causing me trouble in my develop cycle atm.

Here you go 072c27c08173bca746c23816a09ef1267432767d 🙂
I re-thought this and concluded that since there's still no ETA on when to merge into master, and sicne this is a development branch, we can keep backward compatibility for now. Hopefully things will be stabilized soon & we're able to tag a gold release. Thanks for all your patience!


Missing of KR matrices and malfunction of addNorm utility

Are you sure this is a bug?
If unsure, please post your question/situation to the forum first: aidenlab.org/forum.html
Describe the bug
Hello,
I used the code below to dump observed KR matrix from .hic files, however, some .hic files don't have KR-normalized matrixes at a certain resolution. For example, one .hic file has KR normalization matrixes for chr11_25kb, chr11_50kb, chr11_100kb, chr12_25kb, chr12_100kb, but don't have the one for chr12_50kb. Although it worked perfectly with VC, we need KR-normalized matrix for our pipeline.
java -jar juicer_tools.jar dump observed KR sample.hic 12 12 BP 50000
The only message I got after running this code is as below:
WARN [2021-01-05T19:16:10,229]  [Globals.java:138] [main]  Development mode is enabled
No error message or any message. This is the only message that popped out.
I searched in the forum and found this post (https://groups.google.com/g/3d-genomics/c/vsUgDt21CF4/m/-lIByy3HBgAJ). It says it may because the KR normalization didn't converge, so no output was generated. And it suggests us to increase the iteration time for function computeKR in juicebox.tools.utils.original.NormalizationCalculations.java., so that the matrix can converge, following by running addNorm function to re-create KR vectors for the .hic file.
Before editing the code, I tried the addNorm function to see if it's working properly. However, when I ran the code below, I lost all normalized matrices under different normalization (KR, VC, VC_SQRT), different resolution, and different chromosomes (I tested 1-22 and chr1-chr22). Although the size of the .hic file is the same after running addNorm.
java -jar juicer_tools.jar addNorm sample.hic -j 10
java -jar juicer_tools.jar addNorm sample.hic -j 10 -w 500
This is the version of Juicer I'm using right now: Juicer Tools Version 1.22.01
So there are two main issues happening:

Some KR-normalized matrices are missing at a certain resolution for certain chromosomes.

After running addNorm, all normalization vectors are missing in the .hic file.

I will greatly appreciate it if you guys can give us some suggestions to fix those issues!
Thank you ahead!
Holden
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. macOS Mojave, Windows 10, etc]
Version [e.g. 1.6]

Additional context
Add any other context about the problem here.

I also got the same error. The matrix had no value after addNorm.

I have also encountered the same issue. In my case Im using HiC files from the latest release of ENCODE (processed with juicer 2.09 and juicertools 2.13.05). All HiC files seem to have been affected by this bug, and addNorm causes all values to be gone.

Can you clarify which normalizations were present before/after running
addnorm? Was there an error encountered during the run?
On Mon, Jan 24, 2022, 7:00 AM cbravo @.***> wrote:

I have also encountered the same issue. In my case Im using HiC files from
the latest release of ENCODE (processed with juicer 2.09 and juicertools
2.13.05). All HiC files seem to have been affected by this bug, and addNorm
causes all values to be gone.
—
Reply to this email directly, view it on GitHub
https://github.com/aidenlab/juicer/issues/201#issuecomment-1020073881,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABRT23PRX26KY4RN4V2I3C3UXVENRANCNFSM4V6SGPIA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

All default normalization work except for KR (NONE, VC, VC_SQRT and SCALE). Then after finding this issue I tested running myself addNorm (using ENCFF685BLG as example).  I can also provide the ids for the other hic files I am using, they come from the Deeply Profiled Cell Lines collection.

So this isn't a bug; KR has been deprecated in Juicer 2 in favor of SCALE, which converges more reliably and runs faster.

Also I'd recommend Straw over Dump; can read the Hi-C data directly into your language of choice.


Features/validator redesign

Changes summary

[x] Basic design of JobStore which keeps track of the active jobs and their updates. I kept this as generic as possible so we can reuse it in other subnets.
[x] Basic implementation of maintaining state of Jobs (adding new jobs until queue is the required size, changing job statuses)
[x] Basic (untested) implementation of intitial challenge preparation (hyperparam search etc)
[x] Placeholder approach for re-initializing a protein from the pdb identifier
[x] Non-waiting design of validator
[x] Restructuring of run_step and supporting arguments to enable the miners to be queried

@steffencruz I went into the body of the pandas store and I was finding a handful of bugs, particularly related to the load_table method. There was an issue where trying to load it into memory  wouldn't work since we are expecting a pdb id to be there. But it was getting saved without one, so therefore we would lose the pdb_id as an identifier. Honestly, it was a bit confusing as to how to fix this, or how you were expecting things to work, but I added some logic to fix this. please take a look!

Hey @mccrindlebrian so yes there was a minor bug there. The default behaviour of pandas io is the following:
to_csv will save the current index column as an additional column at position 0 by default. index=False prevents the writing of the column to disk.
from_csv will read the entire table and assume they are all columns by default. if you specify index_col it will use the string identifier of that column and set it to the index.
Therefore the following is the desired design
In [10]: import pandas as pd

In [11]: data = {'a':[1,2,3,4], 'b':[True, True, True, False], 'c':['b123','3odp','b8eb','9av2']}

In [12]: pd.DataFrame(data)
Out[12]:
   a      b     c
0  1   True  b123
1  2   True  3odp
2  3   True  b8eb
3  4  False  9av2

In [13]: df = pd.DataFrame(data).set_index('c')

In [14]: df
Out[14]:
      a      b
c
b123  1   True
3odp  2   True
b8eb  3   True
9av2  4  False

In [15]: df.to_csv('test.csv')

In [16]: pd.read_csv('test.csv')
Out[16]:
      c  a      b
0  b123  1   True
1  3odp  2   True
2  b8eb  3   True
3  9av2  4  False

In [17]: pd.read_csv('test.csv',index_col='c')
Out[17]:
      a      b
c
b123  1   True
3odp  2   True
b8eb  3   True
9av2  4  False

@steffencruz ahhh gotchya. Didn't know index_label was the parameter I was looking for. Glad to know that there was a better solution, I didn't like mine


The counter component is not centered when visiting the website.

Screenshot

In order to access the counter, I have to scroll up, which is a drawback. Please assign me this issue with the appropriate hashtags.

Now it has been already fixed


[ERR] agent: Coordinate update error: No cluster leader

i have deploy the consul latest version on kubernetes V1.10.0 .but the consul pod's log show these error message:
2018/07/20 11:26:11 [WARN] agent: Check "service:ribbon-consumer" HTTP request failed: Get http://DESKTOP-MCQSJ49:8504/health: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2018/07/20 11:26:15 [ERR] agent: failed to sync remote state: No cluster leader
2018/07/20 11:26:16 [ERR] agent: Coordinate update error: No cluster leader
the cluster doesnt work correctly.

its because one of the consul replicas must boot with -bootstrap option.
since is a single file statefulset, add the option -bootstrap-expect=3
if you are using 3 replicas fo consul

Getting the same error:

2018/11/15 10:29:08 [INFO] agent: Discovered LAN servers:
2018/11/15 10:29:08 [WARN] agent: Join LAN failed: No servers to join, retrying in 30s
2018/11/15 10:29:15 [WARN] raft: no known peers, aborting election
2018/11/15 10:29:15 [ERR] agent: failed to sync remote state: No cluster leader
2018/11/15 10:29:23 [ERR] http: Request GET /v1/kv/config/gateway-prod/?recurse&token=<hidden>, error: No cluster leader from=<IP_ADDRESS>:32798

==> Newer Consul version available: 1.4.0 (currently running: 1.4.0)

I also have this error.  I have everything running in a namespace.  Would that affect the label-based discovery, perhaps?  I can see pods are running if I select with labels:
kubectl -n consul get po -l app=consul,component=server
NAME       READY   STATUS    RESTARTS   AGE
consul-0   1/1     Running   0          6m
consul-1   1/1     Running   0          7m
consul-2   1/1     Running   0          7m

I've updated to 1.4.2 of consul, and I'm running on GKE: 1.11.6-gke.3
My consul logs indicate no discovered servers:
2019/02/01 16:58:45 [ERR] agent: Coordinate update error: No cluster leader
2019/02/01 16:58:48 [ERR] agent: failed to sync remote state: No cluster leader
2019/02/01 16:58:49 [INFO] agent: Discovered LAN servers:
2019/02/01 16:58:49 [WARN] agent: Join LAN failed: No servers to join, retrying in 30s

I'm not sure what to check at this point.  I have the -bootstrap-expect=3 enabled, but I wouldn't expect that to trigger anything if no other servers can be discovered...

I had the same error with a docker hosted consul cluster (not on kubernetes though) and it turned out all of my instances had auto generated the same node ids. As soon as I manually set the node id differently on each instance (using -node-id argument) all was fine. Perhaps something to try.

@micksear
I had same issue when running in a different namespace with Consul 1.5.1
Editing server.json fixed it:
  "retry_join": [
    "provider=k8s namespace=customnamespace label_selector=\"app=consul,component=server\""
  ]

Got the same error with bootstrap-expect=3 in my consul.yaml
All pods into the same namespaces.

Did somebody solve it?

Bumped into this issue today. The issue is caused by Affinity Settings:
By default, there are 3 replicas and if you have less than 3 nodes (e.g. 2), one pod won't come up and you will get the mentioned error. Thus, make sure that you have the corresponding node number.

Error from consul:
│     2020-05-29T04:25:01.506Z [ERROR] agent: Coordinate update error: error="No cluster leader"      │ │     2020-05-29T04:25:06.768Z [ERROR] agent.anti_entropy: failed to sync remote state: error="No clu │ │ ster leader"                                                                                │ │     2020-05-29T04:25:29.271Z [ERROR] agent.anti_entropy: failed to sync remote state: error="No clu │ │ ster leader"                                                                                │ │     2020-
but all consul pod's in running status & if we run consul join manually its working.
NAME              READY   STATUS    RESTARTS   AGE consul-server-0   1/2     Running   0          13m consul-server-1   1/2     Running   0          13m consul-server-2   1/2     Running   0          13m

This bug has not been resolved in the current version 1.9.1

@micksear
I had same issue when running in a different namespace with Consul 1.5.1
Editing server.json fixed it:
  "retry_join": [
    "provider=k8s namespace=customnamespace label_selector=\"app=consul,component=server\""
  ]

This resolved my issue for a cluster deployed into consul namespace, updated the server json to include below as per @e100
"retry_join": [         "provider=k8s namespace=customnamespace label_selector=\"app=consul,component=server\""       ],


Multiple tables in one react page

Hello,
I was trying to render several tables in one react page, but I am able to render only the first table. Is there a way to render several tables?

I'm able to render multiple tables on one page (but using the same component). Are you referring to multiple instances of the same component, or multiple components?

Thanks @devjeff  reply, @Lukis90, I think you have something wrong, it's not a bug for react-bootstrap-table, you can check the examples on http://allenfang.github.io/react-bootstrap-table/example.html#basic, everything work fine

@AllenFang i have this same issue. i can render 1st bootstrap table but if i try to add another table in another component it does not work


Server overwrites all users on first join after migration

Before using the script all user except host are able to join and play as normal, host is forced to create a new user.  As expected.
After running the migration script the user sav file for the old host is created as expected, replacing both existing sav files for the old host.
However when the resulting save is loaded, any user attempting to join will be prompted to create a new user which will overwrite their existing sav.  Evidently something being done to the Level.sav file is prompting the server to force all users to create new characters.

This same issue is occuring for me.

Thanks for reporting! A fix is being worked on. I'm closing this issue as a duplicate to https://github.com/xNul/palworld-host-save-fix/issues/26


[fix] expose init and render for adapters

Closes https://github.com/sveltejs/kit/issues/2249. There's still some desire to fix the TODO about whether there might be a better way to get the file path to the application, but that's outside the scope of https://github.com/sveltejs/kit/issues/2249, so I think we can close the issue and consider the TODO separately
It turns out that init also doesn't need to expose so many options. They're just used internally for prerender and preview
@jthegedus I'm not sure if it's possible for you to test this to see if it allows you to finally use the types? I haven't really tried doing an npm/pnpm link to an external project

I can test this out today with my adapter, cheers for the work and keeping me updated with progress :smile:

I still can't apply these types on import, I have to type a re-assignment of App for VSCode to work properly.
import * as App from '../output/server/app.js';
import {toSvelteKitRequest} from './firebase-to-svelte-kit.js';

/** @type {import('@sveltejs/kit').App} */
const app = App;

app.init();

typing the import like this does not work for me:
/** @type {import('@sveltejs/kit').App} */
import * as App from '../output/server/app.js';

nor this:
import {init, render} from '../output/server/app.js';

/** @type {import('@sveltejs/kit').Init} */
init();

This reassignment is nothing though compared to the public API being correct, which I believe this change fixes, so thanks for that :)

I wouldn't have expected the last two to change, but I'm surprised the last one doesn't work. What do you see with the last one that isn't working?


[Dev] Clinical Annotation Module

CNA annotation subworkflow from Yoann's pipeline

https://github.com/jinxin-wang/Genome_Sequencing_Analysis/blob/58718befe578c2f1317e404bd6eb5c92451930ec/workflow/rules/Facets/cnvFacets.smk#LL8C16-L8C25

mutation annotation subworkflow from Yoann's pipeline

https://github.com/jinxin-wang/Genome_Sequencing_Analysis/blob/58718befe578c2f1317e404bd6eb5c92451930ec/workflow/rules/Mutect2/Std/mutect2.smk#LL114C30-L114C92

Current state of the branch:

Dry-run : ok
DAG : ok
Exact same command line as MetaPrism: ok
Exact same scripts as MetaPrism: ok
Exact same annotations as MetaPrism: ok
Exace same filters as MetaPrism: to be checked

Tests: on going.


ActionType is always never

I'm trying to follow the tutorial, and I don't know why when making de declaration of my type Actions, is always return never. So this doesn't allows me to use the helpers.
I have this file structure
constants.ts
export const LOGIN = '@authentication/LOGIN';
export const LOGGED_IN = '@authentication/LOGGED_IN';
export const LOGOUT = '@authentication/LOGOUT';

actions.ts
import { createAction } from 'typesafe-actions';
import { LOGIN } from './constants';

export const login = createAction(LOGIN, action => {
  return (email: string, password: string) => action({email, password});
});

reducer.ts
import { ActionType, getType } from 'typesafe-actions';
import * as actions from './auth.actions';

export type AuthenticationAction = ActionType<typeof authenticationActions>; // Here it's always of type never

I'm doing something wrong, because I couldn't find the solution for this.
Regards

Hey @antony2809
v4 or v5?

V5

This is incorrect syntax, please check new API:
export const login = createAction(LOGIN, action => {
  return (email: string, password: string) => action({email, password});
});

@antony2809 I had the same issue just now.
I guess you are on the tutorial V4. (V5 tutorial seems under preparing)
please try on V4, then the above issue will be gone.


NotImplementedError: user_resource_abstract_base_class in 12.14 and above

Cookbook version
zookeeper 6.0.0
Chef-client version

= 12.14

Platform Details
Ubuntu 14.04 (aws)
Scenario:
Cookbook cannot converge.  It complains that the 'zookeeper' provider is not implemented.  This is implemented in a default provider.
ERROR: zookeeper[3.4.8] (zookeeper::install line 30) had an error: NotImplementedError: user_resource_abstract_base_class[zookeeper] (dynamically defined) had an error: NotImplementedError: NotImplementedError
Steps to Reproduce:
Converge zookeeper
Expected Result:
It works.  It does on all clients 12.13 and under
Actual Result:
Gives the error
ERROR: zookeeper[3.4.8] (zookeeper::install line 30) had an error: NotImplementedError: user_resource_abstract_base_class[zookeeper] (dynamically defined) had an error: NotImplementedError: NotImplementedError

Ditto here.
For time being did workaround by adding **--bootstrap-version 12.13.37**  to **knife ec2 server create** command.

This repository is for the chef-client cookbook and not the chef-client daemon itself. You'll want to file this issue against the zookeeper cookbook repository.

No, this is a Chef problem as it affects other cookbooks also.  Can you please point me to where the functionality change was documented.  Normally Chef warns it will be deprecated in later versions but in this instance it just broke between minor versions.

@DarrenV79 @sap2000 here is a commit, which is the reason.
The fix seems to be to replace Chef::Resource::User.new(...) with Chef::Resource.resource_for_node(:user, node).new(...)
I personally used Chef::Resource::User::LinuxUser.new instead of Chef::Resource::User.new
Hope this helps.


Add assignees to update merge request request

I despise the original maintainer of this library, half assing it entirely.
We need assignees for the workflow.

@liiri is it going to be published automagically or need to publish it manually?

@liiri is it going to be published automagically or need to publish it manually?

Manually, as described in the readme

@liiri is it going to be published automagically or need to publish it manually?

Manually, as described in the readme

👍🏽
I was lazy and the readme are not in the PR :)


experimental: new graphback runtime api

Relates to https://github.com/aerogear/graphback/issues/1071
TL;DR this is where we're at
import { graphback } from 'graphback'
import { CRUDService as service } from '@graphback/runtime'
import { PgKnexDBDataProvider as provider } from '@graphback/runtime-knex'

const db = new Knex(...);
const pubSub = new PubSub(...);

const options = {
  db,
  pubSub,
  service,
  provider,
}

const { schema, resolvers } = graphback(graphbackOptions)

// do your own db migrations

const apolloServer = new ApolloServer({
  typeDefs: printSchema(schema),
  resolvers
})

It's super prototypal but the whole idea is that you can pass in the uninitialised DataProvider and CrudService classes. I eventually see the CrudService class going away which would make the API even more intuitive. I didn't do it here but I think we can deprecate/remove the various functions like createKnexPGCRUDRuntimeServices, createKnexCRUDRuntimeServices for the more generic createRuntimeServices function I added.
Check the changes to the runtime-backend template to see how the API looks. This is by no means complete. It's more of an idea to get feedback on.
Things that I still haven't really figured out yet are:

how plugins should work with this API (hopefully we can continue to just load them and nothing else is needed)
how resolver composability will work. (wrapping, chaining etc)
where database migrations fit in. (Possibly the user just does them)

Suggestion for the moment would be to work on this PR to:

remove services.
remove resolver codegen
remove docs and usages for codegen
remove codegen usage

Merge this to CRUD feature branch and release change for testing.
Considering that most of the team is off for a while I will take look and try to apply this changes here.

Merging into feature branch to continue work and further refactor


Nameplates have blue outline

Ever since 7.1, all custom colored nameplates set through Player Track have a blue outline around the text, which doesn't look great with contrasting colors. Custom colors that are vanilla display just fine (friends, party members, etc)

Note to self: move over to dalamud service too.


site wireframe of dialogue widget

don't have permission to directly push changes to base repository so created a personal fork;
this push includes a basic wireframe for the dialogue widget

@sportsmanam, thanks for this! wireframes look good. we'll let this sit till Jan when we have time to talk it through properly with MP.


Multi verifier

Mapped issue #13

Is this needed now that we have https://github.com/keylime/enhancements/issues/22 ?

@mpeters I don't so, will close.


170124 table columns

works well on frontend, just string sorting is being pesky. i know you said the sort function is unnecessary but don't you need the logic to remember the direction as well as the record the column?

havent looked at this yet - wanted to go through with you

sounds good - i'm around today if you have any time spare


Add matrix tube sample accession support for amplicon notebooks.

amplicon notebooks rely on platemaps generated with spreadsheets instead of the new matrix tubes + VisionMate sample accession workflow. Generate new notebook that will allow to use the new matrix tube + VisionMate workflow.

@RodolfoSalido Should we work on this issue together or is there another person in the lab one of us can work with? Not sure what your schedule looks like currently.

I can work on this one. I think most of the codebase is already in metapool, just need to make a notebook and make sure it works well.


When printing the cheatsheet the text is really hard to read

Hi,
First off, love the work you put into this cheatsheet!
The only problem I have is that when I print it on a A4 size paper (which I do often with cheatsheets), the code sections are really hard to read.

Hi,
Thank you! And thank you for the feedback!
I will make a printable version which can be printed in multiple A4s.


Weighting data model

We need to decide how best to represent the weighting of options and how this matches up to services.
The initial idea from the product team is to have a primary and a number of secondary services for each quote.
Links #15

closing as duplicate of #15


Works partially with Tinymce3, not at all with Tinymce4

Can someone confirm whether sisyphus.js supports Tinymce3 or Tinymce4? From my tests it works partially with Tinymce3, but not at all with Tinymce4.
What I mean with 'partially' is that the Tinymce3 editor field is only saved when other fields of the same form are being edited. If the only thing you manipulate in the form is the Tinymce3 field, then these changes are not saved. It's seems like some kind of binder has not attached successfully to the Tinymce3 textfield.
I'm not very interested in sisyphus.js to support Tinymce3, but wonder what architecturally changed in Tinymce4 making it not work at all.

What is common for WYSIWYG editors is replacing input fields with divs/other elements and creating a shadow copy of original field; then content in div is synchronized with shadow field. What changed is probably they added more shadowing. This is all speculations as I am not a user of of TinyMCE.

This commit https://github.com/simsalabim/sisyphus/pull/111 makes sisyphys.js work with Tinymce4.

Awesome! When the author has addressed comments and rebased from current master it will be merged.

It is not working anymore with new version of Tinymce

Old news. The latest stable version of Tinymce as of now is 4.5.7, and as the title of the issue says, "Works partially with Tinymce3, not at all with Tinymce4".