Hangs / stalls in Cosmos.Direct

Describe the bug
We are running MS fhir-server 2.2.82 scaled to two instances with a CosmosDB backend (direct connection mode). We are occasionally seeing hangs / stalls in one or both instances, sometimes resolving by themselves after 5-10 mins, other times triggering autoheal and application restart after 15 minutes.
FHIR Version?
R4
Data provider?
CosmosDB
To Reproduce
Steps to reproduce the behavior:

Run fhir-server normally for a while
???
incoming requests eventually start timing out, until fhir-server starts responding again or is restarted automatically by Azure auto-heal

Expected behavior
fhir-server does not stop responding unless requests are causing load beyond what the application is scaled to handle
Actual behavior
Once in every 3-14 days, we see hangs in fhir-server that do not seem to be tied to resource exhaustion. This happens with the most current version (2.2.82) as well as previous versions. We have not been able to identify any particular usage pattern before these hangs in our environment, and they happen even at times where memory, CPU, and CosmosDB RU usage are low (5-10%).
The last time this happened one instance kept running without issue, with response times around 25 ms, while the other instance timed out for simple GET requests (/Patient/{id}, /RelatedPerson/{id} etc). There were no particularly resource-consuming requests logged before this, and it responded normally to all the requests in the minutes leading up to the timeouts, typically within 10-50 ms. CPU percentage for the app service was around 10-15% and memory percentage around 25%.
Stack trace from Azure diagnostics:
This thread is calling Task.Result and synchronously waiting on a Task object. The caller function identified for the maximum number of threads is Microsoft.Azure.Documents.Rntbd.SystemUsageMonitor.RefreshLoopAsync.

HelperMethodFrame_1OBJ
System.Threading.ManualResetEventSlim.Wait
System.Threading.Tasks.Task.SpinThenBlockingWait
System.Threading.Tasks.Task.InternalWaitCore
System.Threading.Tasks.Task.Wait
Microsoft.Azure.Documents.Rntbd.SystemUsageMonitor.RefreshLoopAsync
Microsoft.Azure.Documents.Rntbd.SystemUsageMonitor.<Start>b__20_0
System.Threading.Tasks.Task.InnerInvoke
System.Threading.Tasks.Task+<>c.<.cctor>b__277_0
System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop
System.Threading.Tasks.Task.ExecuteWithThreadLocal
System.Threading.Tasks.Task.ExecuteEntryUnsafe
System.Threading.Tasks.Task.ExecuteFromThreadPool
System.Threading.ThreadPoolWorkQueue.Dispatch
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback
DebuggerU2MCatchHandlerFrame

Another hang just now, only 3 days after the previous one. Around 12 minutes of downtime, resolved by triggering manual restart of app service. Similar stack trace to the one above, in addition this one:
HelperMethodFrame
Microsoft.Health.Fhir.Api.Features.Context.FhirRequestContextMiddleware+<Invoke>d__2.MoveNext
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Health.Fhir.Api.Features.Context.FhirRequestContextMiddleware+<Invoke>d__2, Microsoft.Health.Fhir.Api]]
Microsoft.Health.Fhir.Api.Features.Context.FhirRequestContextMiddleware.Invoke
Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.Invoke
Microsoft.Health.Api.Features.Headers.BaseHeadersMiddleware+<Invoke>d__2.MoveNext
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Health.Api.Features.Headers.BaseHeadersMiddleware+<Invoke>d__2, Microsoft.Health.Api]]
Microsoft.Health.Api.Features.Headers.BaseHeadersMiddleware.Invoke
Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1+<ProcessRequestAsync>d__2[[System.__Canon, System.Private.CoreLib]].MoveNext
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1+<ProcessRequestAsync>d__2[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Server.IIS]]
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1[[System.__Canon, System.Private.CoreLib]].ProcessRequestAsync
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext+<HandleRequest>d__180.MoveNext
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext+<HandleRequest>d__180, Microsoft.AspNetCore.Server.IIS]]
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.HandleRequest
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Execute
System.Threading.ThreadPoolWorkQueue.Dispatch
DebuggerU2MCatchHandlerFrame

@klimkjar - We haven't seen this in our own managed service version and so can't reproduce to troubleshoot more. Did you have a previous version that didn't hang?

Hi @CaitlinV39  - we have had unexplained hangs since the start, partially mitigated by scheduling a weekly automatic restart. Our production instance has been running an older release and we attributed this as the most likely cause, however after upgrading the hangs persist - if anything they seem more frequent now.
Here is a fresh example from yesterday (now running on 2.2.95):

@klimkjar Unfortunately what you're sending us doesn't get called from our code base so there isn't much we're going to be able to do to help troubleshoot this. I'm going to close for now as can't reproduce.

Hi Caitlin, revisiting this. The Cosmos provider seems to have been a red herring. We've been working with Microsoft Azure Support to help debug this with the help of some memory dumps captured while the stalls are occurring. As per their analysis,

...the problem seems to be a huge number of configuration elements that are cached by IIS configuration reader system. Once the cache size is exceeded and the configuration reader tries to reduce that size by getting rid of stalled configuration data, All HTTP request traffic execution within the application is blocked until the cache is cleaned.

This cleanup stalls all incoming requests, typically for 5-15 minutes. The configuration elements are from the /RelatedPerson and /Patient controllers, which are the resources we have the most traffic on.
Attaching the dump analysis as well.
dump_analysis.txt


Logger Minutes should be double digits

Fixes a minor display issue where the minutes if they are in the single digits, only displays a single digit.

👍  Awesome find!

Actually we should not merge this in favor of changing the logger date format to ISO 8601.
--
See #213


Missing Parameters for Technologies

There are a couple (at least two) technologies where the parameters "Fuel Costs" and "Emission Factor" are missing:

Technology: chp, Technology_type: gas, input_energy_vector: light oil
Technology: generator, Technology_type: combustion engine, input_energy_vector: natural gas

I can't say right now if there are any other technologies affected but those are the main reasons, why we have no consistent results for the current base case in 2030 and 2050, since the resulting exceptional low cost make them way more preferable compared to the others.

I will look into it

I updated the corresponding values.
Now all fossil-based energy transformation technologies have a value for the parameter "emission factor", except for nuclear and  biomass and biogas. The latter are assumed to be carbon neutral.
The parameter "fuel costs" is assigned for all fossil-based energy transformation technologies, including biomass and biogas, but not for energy transformation processes from waste.
All renewables energy transformation technologies based on wind, solar, hydro or geothermal have neither "emission factor" or "fuel costs". The same goes for the storage and transmission technologies.


Experimental: LineLens not working?

Using the non-experimental branch, I can use the "FSharp.lineLens.enabled": "replaceCodeLens" setting in VSCode. I really like this feature as I can have LineLens enabled and CodeLens disabled (I find it really frustrating how CodeLens messes up line spacing and the code moves around the page as it finds references - just a personal thing). Unfortunately LineLens doesn't appear to work on the experimental build - CodeLens displays instead.
As an aside, the new changes you have made are utterly brilliant. Old Ionide broke things on my mac, it got so slow that VSCode couldn't keep up with the speed of me typing and was unusable. In contrast, the experimental branch is very responsive and I don't get any of these issues at all.
I also think the Info Panel view is excellent and I found it useful immediately. The "lock" functionality is a bit inconsistent for me currently, but I'm sure that'll be smoothed out in future. I know this is all a big tangent and not the appropriate place at all, but I didn't know where else to say thanks and that the recent changes are very well received!

I'm glad experimental Ionide is working well :-)
LineLens support should be released in the latest experimental (0.3.5)

Good news, thanks!


Shadowing signature fields causes weird errors

I was just defining a signature like this:
class Signature(dspy.Signature):
    __doc__ = textwrap.dedent(
        """I gave my language model a task, but it failed. Figure out what went wrong,
        and write instructions to help it avoid the error next time.""",
    )

    task_description: str = dspy.InputField(desc="What I asked the model to do")
    model_output: str = dspy.InputField(desc="The output of the model")
    error: str = dspy.InputField(desc="The validation error trigged by the models output")
    explanation: str = dspy.OutputField(desc="Explain what the model did wrong")
    instructions: str = dspy.OutputField(desc="Instructions for the model to do better next time")

but this fails with
    raise TypeError(
TypeError: Field 'instructions' in 'Signature' must be declared with InputField or OutputField. field.json_schema_extra=None

Why? Because instructions is a "reserved word" of dspy.Signature.
There are a number of other reserved words, like fields, insert, prepend, append, equals.
At least a few of those have already caused me trouble in the past.
On top of that there are "pydantic reserved words", like schema that I've also had issues with.
Pydantic 2.x is trying to clean this up, by moving all their special words to the prefix model_, such as model_schema instead of schema. Just now I made a field with name model_output and got this warning from pydantic: "...pydantic/_internal/_fields.py:149: UserWarning: Field "model_output" has conflict with protected namespace "model_"
I think we should similarly move all the dspy related words to some prefix, like dspy_instructions, dspy_equals etc.
This causes only a small inconvenience for dspy backend developers (e.g. you are making a new optimizer), but make life a lot easier for end users (that is, people just defining a casual signature.)
On top of that, we should make sure to throw informative errors in the cases where there's still a clash. Like if the user uses model_schema or dspy_instructions as a field name for some reason.

An alternative idea is to move everything out of the Signature namespace and into the module.
Then you would do dspy.signature.instructions(sig) instead of sig.dspy_instructions.

A related issue is "reserved keywords" for dspy.Predict.
The forward method assigns special meaning to words like new_signature, signature, demos, config, lm, and _trace.
So if a user uses any of those words as names in a Signature, they'll probably also run into trouble.

Ah this is a good point. Moving things out of the name space makes sense. Maybe we can reserve just one word, e.g. sig._metadata

inputs is another reserved keyword

@arnavsinghvi11 I don't think anything was done to fix this problem, no?
Please correct me if I'm wrong. Otherwise I'll keep it open to help us keep track of the problem.


i18n: add translated Chinese & Japanese catalogs

WIP for now, since we need to hash out some details (untranslated strings) in the provided catalogs with our translators .
According to our translators, it's okay for some of the words in Chinese and Japanese catalog
to be left in English.

@miq-bot remove_label wip


teach 'uninit' how to remove git config sections

We need to run git config with the --remove-section arg. Fixes #529

:+1:


Double clicking window fails to maximize

Type: Bug
In Ubuntu 22.04, you can double-click a window title to maximize the window. This does not work with VSCode.
Workarounds:

enable system title bar (yuck)
triple click (works but is a bug)

Note: chromium also has this issue. See https://bugs.chromium.org/p/chromium/issues/detail?id=1439861
VS Code version: Code 1.85.1 (0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2, 2023-12-13T09:47:11.635Z)
OS version: Linux x64 6.5.0-14-generic snap
Modes:

System Info

Item
Value

CPUs
12th Gen Intel(R) Core(TM) i7-1265U (12 x 4109)

GPU Status
2d_canvas: unavailable_softwarecanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: disabled_softwaremultiple_raster_threads: enabled_onopengl: disabled_offrasterization: disabled_softwareraw_draw: disabled_off_okvideo_decode: disabled_softwarevideo_encode: disabled_softwarevulkan: disabled_offwebgl: unavailable_softwarewebgl2: unavailable_softwarewebgpu: disabled_off

Load (avg)
1, 1, 0

Memory (System)
31.03GB (25.25GB free)

Process Argv
--no-sandbox --force-user-env --unity-launch --crash-reporter-id dcf92d24-91a1-4788-904c-9cf8b86e9da2

Screen Reader
no

VM
0%

DESKTOP_SESSION
ubuntu

XDG_CURRENT_DESKTOP
Unity

XDG_SESSION_DESKTOP
ubuntu

XDG_SESSION_TYPE
wayland

Extensions (21)

Extension
Author (truncated)
Version

vscode-zipfs
arc
3.0.0

openmatchingfiles
bca
0.5.4

vscode-eslint
dba
2.4.2

gitlens
eam
14.6.1

EditorConfig
Edi
0.16.4

gitlab-workflow
Git
3.99.0

vscode-todo-highlight
jgc
2.0.8

select-highlight-minimap
mde
0.1.0

remote-containers
ms-
0.327.0

remote-ssh
ms-
0.107.1

remote-ssh-edit
ms-
0.86.0

remote-wsl
ms-
0.81.8

vscode-remote-extensionpack
ms-
0.25.0

remote-explorer
ms-
0.4.1

remote-server
ms-
1.5.0

vsliveshare
ms-
1.0.5905

restart-ts-server-button
qcz
1.0.1

text-power-tools
qcz
1.45.0

language-stylus
sys
1.16.0

vscode-terminal-here
Tyr
0.2.4

toggle-eslint
zen
0.0.3

A/B Experiments
vsliv368cf:30146710
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscorecescf:30445987
vscod805:30301674
binariesv615:30325510
vsaa593cf:30376535
py29gd2263:30899288
vsclangdf:30486550
c4g48928:30535728
azure-dev_surveyone:30548225
a9j8j154:30646983
962ge761:30933248
pythongtdpath:30769146
i26e3531:30792625
welcomedialogc:30910334
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
pythontestfixt:30902429
pythonregdiag2:30936856
pyreplss1:30897532
pythonmypyd1:30879173
pythoncet0:30885854
h48ei257:30885898
pythontbext0:30879054
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
dsvsc019acf:30933242

@matthias-ccri to clarify are you running VS Code under wayland mode as well ? (i-e) are you passing the flag --ozone-platform=wayland to VS Code ?

@deepak1556 I am not intentionally passing that flag. Is there a way I can verify that?
My ubuntu is running Wayland though, I believe.

It is very likely you are running VS Code under XWayland mode. You can verify if the flags are passed by inspecting the process explorer.
Can you check if the issue repros when running VS Code like code --ozone-platform=wayland

It doesn't look like any wayland or XWayland flags are being used. I launch vscode from the launcher panel.
When I run code --ozone-platform=wayland it says Warning: 'ozone-platform' is not in the list of known options, but still passed to Electron/Chromium and fails to open.
I installed vscode from the Snap store
$ which code
/snap/bin/code

$ code --version
1.85.2
8b3775030ed1a69b13e4f4c628c612102e30a681
x64

Sure thing! Hm, it doesn't like that flag either:
$ sudo snap install code-insiders --classic
[sudo] password for user:
code-insiders 800e60ab from Visual Studio Code (vscode✓) installed
user at machine in ~
$ code-insiders --ozone-platform=wayland
Warning: 'ozone-platform' is not in the list of known options, but still passed to Electron/Chromium.

You can ignore the warning, it just means that VS Code cannot use the flag but will be passed to its runtime. Does the application not open under wayland for insiders ?


Adds Button component and supports button "type" attribute

Let me know if you'd like me to handle this differently but I merged a branch of another fork which created a Button component to reuse everywhere  was used. I then slightly enhanced that by adding a new argument that Button can take: "type". The type attribute is important because the default value of the attribute within forms is "submit" which is almost always not what you want. The component defaults "type" to "button" if not defined

@abobwhite Can you remove the changes made by the build command lib/ dir, please? This process will be automatically made when we release a new version to npm...

@gabrielrtakeda The PR is updated. I also squashed and renamed my commits but it appears that the PR is still showing those original commits. Surely when you merge, you can rebase, though


Wrong analyzer suggestion for conditional operator

Dart plugin 3.19.2
Dart SDK version: 2.10.4 (stable)
[✓] Flutter (Channel stable, 1.22.5, on Mac OS X 10.15.7 19H2 darwin-x64)
[✓] VS Code (version 1.53.2)

Analyzer says, that I can replace this code with "if-else" condition.
final isInitialized = state is ReadyState ? state.isInitialized : false;
When I choose "replace with if-else", it becomes this:
        final isInitialized;
        if (state is ReadyState) {
          isInitialized = state.isInitialized;
        } else {
          isInitialized = false;
        }

Which is incorrect, of course.

I agree that the suggestion doesn't work for initializer expressions, especially with null safety.
The rewrite is wrong on multiple points:

Doesn't type the variable as bool,
Makes the variable final and late-initialized, but not marked late.

(What the analyzer should warn about, IMO, is to never use a conditional expression where one of the branches is a boolean literal. Such can always be written shorter using ||, && and ! instead: final isInitialized = state is ReadyState && state.isInitialized;)

The analyzer doesn't produce a diagnostic for the OP's case (either by default or via lint). What it does do is offer a code transformation option (which we refer to as a "quick assist"). The assist needs to be fixed to either not appear for conditionals in initializers or to add a type annotation and late modifier. For future reference, the class that implements the assist is ReplaceConditionalWithIfElse.

What the analyzer should warn about, IMO, is to never use a conditional expression where one of the branches is a boolean literal.

The lint avoid_bool_literals_in_conditional_expressions does that.

Failing test added in https://dart-review.googlesource.com/c/sdk/+/185493.

I think late is not necessary here.
The variable is initialized on both branches of the if statement.
So, it has better speed, and provides better guarantees (IMHO) without late.
void f(bool c) {
  int a;
  if (c) {
    a = 111;
  } else {
    a = 222;
  }
  print(a);
}

Fixe by https://dart-review.googlesource.com/c/sdk/+/186200.


Extract pytest Functionality as Plugin

The main repository should not bundle the pytest functionality with the main CPPython project. With the data extracted as a pytest plugin, developers of a CPPython plugin can install it as a development dependency, reducing end-product size.

Closed by #30


not working on YOGA 530

stdbuf -oL libinput debug-events|grep switch is not printing anything

well, that's a shame :) I mean, if the kernel doesn't send this event there's nothing this script can do. you may try your luck with the old, accelerometers-based script (it's in the old directory), but chances aren't that great.

@mujehoxe I'm working on this! Currently at the exploring stage and found the following:
joost@laptop:/dev/input/by-path$ cat /sys/bus/iio/devices/iio\:device0/in_angl0_raw
101
joost@laptop:/dev/input/by-path$ cat /sys/bus/iio/devices/iio\:device0/in_angl0_raw
139
joost@laptop:/dev/input/by-path$ cat /sys/bus/iio/devices/iio\:device0/in_angl0_raw
104
joost@laptop:/dev/input/by-path$ cat /sys/bus/iio/devices/iio\:device0/in_angl0_raw
75
joost@laptop:/dev/input/by-path$

Using chatgpt I found this readout for our hinge sensor. Turns out we can even read the angle and not just flipped/unflipped (it's wrong but seems proportional so that doesn't matter) and now I'll think of how to best make use of it in the simplest way. Will let you know!
@alesya-h would we want to integrate this into your repo, or is it too "different" and better to split off from here? I'm a total noob so if I'm missing some obvious way to easily integrate our device into here, do let me know :)


Powerline integration

Powerline is a plug-in for Vim written in Python that puts a lot of handy UI on one line at the bottom of the editor. It might be possible to fork/merge it into suplemon?

Thanks for the suggestion! It would likely be useful but it'd be a lot of work to add and I'd rather be in favor of plugins for suplemon. They can already add info to the top and bottom status bars so it's trivial to write plugins for displaying extra stuff there.


Uppercase count

Closes https://github.com/BlakeGuilloud/ganon/issues/193

[x] Running yarn lint does not trigger any linter errors
[x] The test of the method you have fixed is passing
[x] You have written a new skeleton method for someone else to work on!
[x] You have written tests to accompany your skeleton method

@ktilcu please check now.

Hey @hyades ! If you don't mind pulling in the latest master, we can get this merged in! thanks!

Oh I see. Someone else already made this countLowerCase skeleton

@ktilcu @BlakeGuilloud Haha. Okay added another one :)


Windows defender and other security vendors detect the program as malicious

Windows defender and 3 other security vendors detect released "genshin-audio-exporter.exe" v. 1.1 as malicious.
VirusTotal report
Seems like false positive. What exactly triggers these scanners?

The executable has other files packed inside for easier distribution. That might trigger it
Otherwise your guess is as good as mine


Another attempt at max_satisfaction_weight fixes

Replaces #474, refer to https://github.com/rust-bitcoin/rust-miniscript/pull/474#issuecomment-1272475306
This PR has two intentions:

Redefine max_satisfaction_weight to be the difference in TxIn weight between "satisfied" and "unsatisfied" states. In an "unsatisfied" state, we still need to include the scriptSigLen varint, as well as the witnessStackLen (for txs with at least one segwit spend).
Attempt further fixes to improve accuracy of max_satisfaction_weight.

Comments, tests and examples have been updated to reflect the above intentions.
Notes for reviewers
The new definition of max_satisfaction_weight can be seen in this comment:
https://github.com/rust-bitcoin/rust-miniscript/blob/08cff39fa862ff957c7ff96d17a0011dd6446f87/src/descriptor/mod.rs#L320-L339

@LLFourn A review when you have time would be appreciated :pray:

@apoelstra Could you please have a look at this PR when you have time? Would love to know your thoughts on these changes and proposed definition change of "satisfaction weight". Thank you in advance!

Thanks @danielabrozzoni !
I agree with all of your nits. ACK 238014a09c1ecd84a603d72dfa9ea1b64338a26d otherwise.
Definitely agree that we should keep the old method, deprecate it, and make a new one with a new name. This is fine to go into 9.1 (since I am going to try to release 9.0 ASAP, see #488 ). I have no opinion on name. max_weight_to_satisfy sounds fine to me.

I just pushed 734acee1fb941ba283e79c0603d413a4e0f4ac0f:

rebased
deprecated max_satisfaction_weight and introduced max_weight_to_satisfy instead, updated examples accordingly
fixed nits in docs
fixed some bugs in this PR's code (see https://github.com/rust-bitcoin/rust-miniscript/pull/476#discussion_r1025382147, and also the same bug was in the p2sh-p2wpkh case)

I opened https://github.com/rust-bitcoin/rust-bitcoin/pull/1467 to introduce TxIn::segwit_weight() and TxIn::legacy_weight(), then pushed here a rewording of the definition of max_satisfaction_weight, which hopefully is clearer.
For segwit inputs or legacy inputs included in segwit txs, it holds:
for i in 0..transaction.input.len() {
    assert_eq!(descriptor_for_input[i].max_weight_to_satisfy(), transaction.input[i].segwit_weight() - Txin::default().segwit_weight())
}

Instead, for legacy transactions, it holds:
for i in 0..transaction.input.len() {
    assert_eq!(descriptor_for_input[i].max_weight_to_satisfy(), transaction.input[i].legacy_weight() - Txin::default().legacy_weight())
}

Which I think is pretty neat :)
Once https://github.com/rust-bitcoin/rust-bitcoin/pull/1467 is merged and miniscript is up-to-date with the latest rust-bitcoin, I can add a test to verify that the two invariants above hold.

New definition and docs really makes a lot of sense. I think as close to making sense as you can when trying to explain this stuff. I couple of nits but otherwise utACK

It looks like this new version uses "ec-signatures" everywhere rather than "ECDSA`. I skimmed through the earlier discussion and didn't see, so I hope I'm not relitigating stuff, but I'm pretty sure that "ECDSA" is correct in every instance. Schnorr sigs are also EC sigs, and they are always 64/65 bytes.
Anyway I won't hold up this PR over that, it's not a huge deal.

It looks like this new version uses "ec-signatures" everywhere rather than "ECDSA`. I skimmed through the earlier discussion and didn't see, so I hope I'm not relitigating stuff, but I'm pretty sure that "ECDSA" is correct in every instance. Schnorr sigs are also EC sigs, and they are always 64/65 bytes.

I'm using "ECDSA signatures" almost everywhere (there's still one instance of "ec signatures" which I missed in src/descriptor/sh.rs, my bad), saying:
    /// Assumes all ECDSA signatures are 73 bytes, including push opcode and
    /// sighash suffix.
    /// Assumes all Schnorr signatures are 66 bytes, including push opcode and
    /// sighash suffix.

If you prefer to wait for tests before merging this, I can remove the "ec signatures" from sh.rs as well, otherwise, I can fix in the PR adding the tests, as you wish :)

I'm going to wait on @sanket1729 to merge this since it's non-trivial and he's been the primary maintainer of the library lately. I don't know what his timeline is, but I think you have time to add tests and tweak the docs :). I can quickly re-ack any minor changes.

ACK modulo requiring rebase

Rebased

Let's the new year with a bang!

Thank you @danielabrozzoni for taking this forward!

Thank you @danielabrozzoni for taking this forward!


Tests for dependencies reducer

@mik639 I just sent an invitation to become a collaborator on this repo :) I really appreciate the work you've done so far with this PR, I feel a lot better knowing our critical reducers are getting test support.
This is still a super new project so the conventions are still being established, but my current thinking is that collaborators can take a more active role in triaging/closing issues and reviewing/merging other folks' PRs (I think for the time being I'd like to retain control over accepting/rejecting any change with UI implications, but feel free to approve and merge PRs that are logic-only and relatively small).
And of course, this doesn't come with any additional expectation on my part, in terms of workload or commitment. Feel free to do as much or as little as you'd like.

Also, if you're interested, I set up a Gitter for Guppy. I expect Github issues/PRs will still hold most pertinent discussion, but I like having the option for a realtime chat for any other stuff :)
https://gitter.im/guppy-gui/Lobby

@joshwcomeau thank you for your confidence. I will continue with the tests at first :) I think it can help me get to know more about the project and be more useful :D


Translate

Hi, I'm a Chinese university student. I got a lot of benefit from your code 'os-tutorial'.It occurred to me that maybe I could translate them to Chinese in recent days.Therefore, I suppose I should ask your permission for the rights of translation.Likewise, I have several understandings on my own, so I'm thinking whether I can add some code lines to your finished codes. I will appreciate it if you allow me to do that. Hoping for your response.  Thanks so much! 谢谢！！

Hello, you are free to fork the code and make translations, no permission needed. Thanks for your interest!


show/hide Statusbar issue

show/hide statusbar has incorrect behaviour
https://github.com/user-attachments/assets/a88a2a61-e3fd-49dd-9f75-0282b4444e31

I'll take a look at it at the weekend

I'll take a look at it at the weekend

@ameer-taghavi @chrizuuu
I have resolved this Here, https://github.com/chrizuuu/react-native-gallery-preview/pull/12

Fixed in 1.2.3
@mehuljetani , as I mentioned in PR great thanks for your support, your fix was used in the context of StatusBar for android, for ios however I prepared another solution.

@chrizuuu, @mehuljetani
I added statusBarTranslucent to hide white gap in Modal in ModalContainer.tsx but why can't hide statusbar in android?

zoomed:

@chrizuuu, @mehuljetani
I added statusBarTranslucent to hide white gap in Modal in ModalContainer.tsx but why can't hide statusbar in android?
zoomed:

@chrizuuu @mehuljetani please review it 🙏🏻

@ameer-taghavi
As far as I know, this parameter doesnt hide the StatusBar but only causes the modal to render under the StatusBar.

@chrizuuu
Please add statusBarTranslucent to hide white gap in Modal 🙏🏻


Dariomws12

-ExternalEmailAddress appeared 2 times.

OPS Build status updates of commit 9d0d3f1:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit 9d0d3f1:
:clock10: Incremental building: average incremental building time is 12 min(s) 27 sec(s)

OPS Build status updates of commit 9d0d3f1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 45d3d78:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit 45d3d78:
:clock10: Incremental building: average incremental building time is 12 min(s) 27 sec(s)

OPS Build status updates of commit 45d3d78:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 6eae0f7:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit 6eae0f7:
:clock10: Incremental building: average incremental building time is 12 min(s) 28 sec(s)

OPS Build status updates of commit 6eae0f7:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 47bbddb:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit 47bbddb:
:clock10: Incremental building: average incremental building time is 12 min(s) 28 sec(s)

OPS Build status updates of commit 47bbddb:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit b6de80a:
:clock10: Preparing: average preparing time is 1 min(s) 12 sec(s)

OPS Build status updates of commit b6de80a:
:clock10: Incremental building: average incremental building time is 12 min(s) 28 sec(s)

OPS Build status updates of commit b6de80a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit a3bf3f9:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit a3bf3f9:
:clock10: Incremental building: average incremental building time is 12 min(s) 29 sec(s)

OPS Build status updates of commit a3bf3f9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit e05a396:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit e05a396:
:clock10: Incremental building: average incremental building time is 12 min(s) 29 sec(s)

OPS Build status updates of commit e05a396:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 9a72098:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit 9a72098:
:clock10: Incremental building: average incremental building time is 12 min(s) 29 sec(s)

OPS Build status updates of commit 9a72098:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 3ff140f:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit 3ff140f:
:clock10: Incremental building: average incremental building time is 12 min(s) 29 sec(s)

OPS Build status updates of commit 3ff140f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 9e5aaac:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit 9e5aaac:
:clock10: Incremental building: average incremental building time is 12 min(s) 30 sec(s)

1: Don't remove duplicate YAML blocks from parameter descriptions. There's always a reason why there is more than one. In this case, the ExternalEmailAddress parameter was required in the DisabledUser and EnabledUser parameter sets, and optional in MicrosoftOnlineServicesID and FederatedUser parameter sets. If you've tested and found this isn't true, you need to add or remove the square brackets from around the parameter in the Syntax block(s) at the top of the topic, and also move the parameters up or down in the list in the Syntax block(s) (required=near the top; optional=alpha within the rest). And, please comment in the pull request that you've tested this and absolutely confirmed the topic is currently wrong.
2: The first link in the Related Links section is what makes Get-Help <Cmdlet> -Online work correctly for all Exchange cmdlets. If you find the link doesn't work correctly, replace it with the docs.microsoft.com equivalent. I tested https://technet.microsoft.com/library/128467a7-b8b8-4fa6-bca9-1131301f18ce.aspx and it correctly redirected to https://docs.microsoft.com/powershell/module/exchange/users-and-groups/New-MailUser. Beware of transient issues with redirection. If a link that's formatted correctly.

It should also say that parameters with multiple YAML blocks are currently being duplicated on docs.microsoft.com. I have a bug in to see what's going on (I think it's a recent change, but I can't say for sure).

OPS Build status updates of commit 9e5aaac:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit d7f7858:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

Thank you for this information!

OPS Build status updates of commit d7f7858:
:clock10: Incremental building: average incremental building time is 12 min(s) 30 sec(s)

OPS Build status updates of commit d7f7858:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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

OPS Build status updates of commit 39a7aab:
:clock10: Preparing: average preparing time is 1 min(s) 13 sec(s)

OPS Build status updates of commit 39a7aab:
:clock10: Incremental building: average incremental building time is 12 min(s) 30 sec(s)

OPS Build status updates of commit 39a7aab:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/users-and-groups/New-MailUser.md
:white_check_mark:Succeeded
View (exchange-ps)

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


in_tail  loses data when rotating big files - Option to having "infinite" rotate_wait?

When a big file is getting into in_tail - and logrotate is running (with delaycompress - old file is still exists with its format) - a data-loss can occur if rotate_wait isn't long enough.
The practice is to set rotate_wait into a longer value -> isn't there another option like wait until reaching the EOF in posfile - before letting the old file being dropped from the monitored files list?

like wait until reaching the EOF

This is difficult problem because EOF is not real EOF in streaming manner.
https://github.com/fluent/fluentd/blob/master/lib/fluent/plugin/in_tail.rb#L633
in_tail stops reading file when gets EOF. If the in_tail is faster than log written speed, in_tail also gets EOF before next write. So we can't use EOF for inifite wait.

Temporarily closed.
If someone has good idea to handle the case, please reopen it.


Avoid enforcing extra-only constraints

Summary
In the dependency refactor (https://github.com/astral-sh/uv/pull/4430), the logic for requirements and constraints was combined. Specifically, we were applying constraints before filtering on markers and extras, and then applying that same filtering to the constraints. As a result, constraints that should only be activated when an extra is enabled were being enabled unconditionally.
Closes https://github.com/astral-sh/uv/issues/4569.

Link to the problematic change: https://github.com/astral-sh/uv/pull/4430/files#diff-6be6d80fe4821c47b70a372260f55e73b8da8182b8dcad7525d5cd3eb584532bR1285


fallback to dedicated allocation can skip budget/maxMemoryAllocationCount checks?

We love MEMORY_USAGE_AUTO* and CREATE_WITHIN_BUDGET.  It has allowed network forks to boot 4+ instances of the game for testing, and made the game more stable for artists working with editor + game + DCC tools on the side.  (A few small points of friction on switching over that I'd be happy to elaborate on elsewhere, if desired.)
But the primary point of this ticket -- I think we have run into a place where fallback to dedicated memory can ignore CREATE_WITHIN_BUDGET and also maxMemoryAllocationCount tests.  We're on 51c8b56 from July 22, 2022 (just last week).
An in-development game triggered maxMemoryAllocationCount failure in Vulkan validation layers.  We had a ridiculous number of vfx creating small uniform buffers, and a congested DEVICE_LOCAL|HOST_VISIBLE|... default pool.  I think I would have expected it to fall back to a different memory type in this case.
From what I can ascertain (snippets of dump below -- I can scrub the full thing for NDA'd material and upload if desired -- but this is a NV RTX 2060 SUPER on 516.59 drivers), we exceeded budget early with a combination of one ~28MB block alloc + a number of big 16MiB and 4MiB dedicated allocs.  The 28MB block filled up.
    "Heap 2": {
      "Flags": ["DEVICE_LOCAL"],
      "Size": 224395264,
      "Budget": {
        "BudgetBytes": 14536704,
        "UsageBytes": 209865088
      },
      "Stats": {
        "BlockCount": 4042,
        "BlockBytes": 122520000,
        "AllocationCount": 12036,
        "AllocationBytes": 122506240,
        "UnusedRangeCount": 162,
        "AllocationSizeMin": 64,
        "AllocationSizeMax": 16777216,
        "UnusedRangeSizeMin": 64,
        "UnusedRangeSizeMax": 832
      },
      "MemoryPools": {
        "Type 4": {
          "Flags": ["DEVICE_LOCAL", "HOST_VISIBLE", "HOST_COHERENT"],
          "Stats": {
            "BlockCount": 4042,
            "BlockBytes": 122520000,
            "AllocationCount": 12036,
            "AllocationBytes": 122506240,
            "UnusedRangeCount": 162,
            "AllocationSizeMin": 64,
            "AllocationSizeMax": 16777216,
            "UnusedRangeSizeMin": 64,
            "UnusedRangeSizeMax": 832
          }
        }
      }
    }
  },
[...]
  "DefaultPools": {
    [...]
    "Type 4": {
      "PreferredBlockSize": 28049408,
      "Blocks": {
        "0": {
          "MapRefCount": 7995,
          "TotalBytes": 3506176,
          "UnusedBytes": 13760,
          "Allocations": 7995,
          "UnusedRanges": 162,
          "Suballocations": [...many entries...],
          ]
        }
      },
      "DedicatedAllocations": [...many entries...]

Reading code and assuming some things (I may be arbitrarily incorrect in my understanding in places), seems like what may have happened was:
AllocateMemory -> AllocateMemoryOfType hit this just fine:
            // Protection against creating each allocation as dedicated when we reach or exceed heap size/budget,
            // which can quickly deplete maxMemoryAllocationCount: Don't prefer dedicated allocations when above
            // 3/4 of the maximum allocation count.
            if(m_DeviceMemoryCount.load() > m_PhysicalDeviceProperties.limits.maxMemoryAllocationCount * 3 / 4)
            {
                dedicatedPreferred = false;
            }

...but then proceeded to fail res = blockVector.Allocate (guessing Allocate -> AllocatePage skipped CreateBlock due to the freeMemory test), and subsequently did:
        // Try dedicated memory.
        if(canAllocateDedicated && !dedicatedPreferred)
        {
            res = AllocateDedicatedMemory( /*...*/

It does not appear that it re-checks maxMemoryAllocationCount on this path.
It also looks like the check for "within budget" for dedicated allocs is at the top of AllocateMemoryOfType inside CalcMemTypeParams, but only happens with VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT, so we probably missed that budget check on this fallback path?  (Had that check occurred, it might also have saved us.  I might just be missing something here, though!)
Could probably artificially recreate this situation and step through, if needed.
We have a local workaround, I think: we kicked the 16M and 4M allocations out, here -- tagged them especially as "avoid HOST_ACCESS and create a staging buffer if needed".  (We'd done something similar prior to VMA_MEMORY_USAGE_AUTO being available, so it was mostly just a matter of restoring that.)  So we might be in the clear.
But it seems possible we'll run into this situation again when VK_EXT_memory_budget extensions report low numbers, or similar.
We have a few things we need to do:

scale back our VFX draw count =)
dedupe some of these buffers based on contents/usage
possibly have them share a single large buffer

...but it felt like something that might be interesting to report upstream.
We toyed with calling once with CREATE_NEVER_ALLOCATE and then again without, but this has the side effect of skipping the "Heuristics: Allocate dedicated memory if requested size if greater than half of preferred block size." stuff, which is maybe undesirable.
I thought of a few other ways to potentially address this within the vma code, but ... I'm not sure I fully grok the implications of any of these thoughts.  Happy to describe or bodge together a PR or two for eyes, if helpful.

Thank you for reporting this issue and for the detailed description. We will investigate it.

A few small points of friction on switching over that I'd be happy to elaborate on elsewhere, if desired.

Any additional feedback is welcome. Please feel free to file a separate issue ticket on GitHub or contact me any way (e.g. via Twitter, LinkedIn) to discuss it further.


bugfix(TDI-38861) : fixed reject schema on syncLead operation

What is the current behavior? (You can also link to an open issue here)
https://jira.talendforge.org/browse/TDI-38861
What is the new behavior?
Please check if the PR fulfills these requirements

[X] The commit message follows Talend standard
[X] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[X] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[X] No

If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
Other information:

Pull request test result: success :star:


Interoperability between Windows apps and WSL

Please use the following bug reporting template to help produce actionable and reproducible issues. Please try to ensure that the reproduction is minimal so that the team can go through more bugs!

A brief description

Ability to reference a Windows application from the bash shell, and WSL applications from within Windows.  The current effect of WSL is two incompatible environments running on the same kernel.

Expected results

Windows application from the bash shell
$ notepad test.txt
Notepad should open test.txt
WSL application from Windows
C:/vim test.txt
Vim should open test.txt

Actual results (with terminal output if applicable)
Applications not found

Your Windows build number

Steps / All commands required to reproduce the error from a brand new installation

Strace of the failing command

Required packages and commands to install

See our contributing instructions for assistance.

Ah, I didn't realise.  Perfect!


Refund improvements

I would prefer the test coverage not to be reduced on a PR, but I'll allow it. Please find time to increase coverage by adding more tests in a future PR.

Thank you, we will


Some animations on low end windows 10 tablets are laggy

Opening and closing a full screen dialog is quite choppy, the last few momments where it grows slightly seem to get extended by a few seconds. Observed on a linx 810 quad core 1.8ghz atom tablet.
Would be good to have an option to downgrade the animation or disable it for certain elements to improve performance.

Hi, I will look at this, but out of curiosity, can you try this on your hardware and report back the results?
Stick this somewhere near startup of your app:
Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline), new FrameworkPropertyMetadata { DefaultValue = 30 });

Hi,
Yes limiting to 30fps seems to have made a little better, with out it I get the occasional laggy dialog opening, with it enable it's not as smooth as the desktop but is consistent. It could well be a hardware or wpf limitation. Have checked the processor loading (stays around 30-40% during dialog opening, memory is fine with 50% free, no other fullscreen apps running.

OK.  I will look into adding a zero-animation dialog opening mode, then with the above you can tune to your requirements.

Maybe we can also auto enable the zero animation dialog when low on battery

@SuicSoft please see new contribution guidelines.  We won't introduce any "application" logic.  That's not the responsibility of this library.  I'll help out a bit with the ability to switch this animation off; but the decision on when to do such things is an applications' responsibility.

Yeah , I think these kinds of things shouldn't be in the library. Anyways how about adding a Contributing.md file to the repo.

I've already added a link to it from the main readme.md

@ButchersBoy If you create a contributing.md , it will show a message at the top whenever you contribute to the repo

@SuicSoft OK, I'll do that.

There is now a new attached property:
materialDesign:TransitionAssist.DisableTransitions="True"
This is an inheritable property, so you could put it at your root (e.g Window or DialogHost) to switch off transitions where supported.  Then you could turn them back on at lower lever elements where performance is less than an issue.  I'm going to work through the transitions so they are aware of this property:

[x] DialogHost
[x] Drawer
[ ] Clock
[ ] Underline
[ ]  ???


Add logging for backend service

Add logger file for backend service to identify and debug issues more efficiently

Closing this issue as a logger file won't be accessible in the IBM Cloud Functions environment.
Instead, the Cloud Functions provides Activation Dashboard which shows all the activity logs for the backend service. And also additionally we can configure LogDNA for the Cloud Functions instance to capture the backend service logs in IBM Cloud.


Significantly widen the testing matrix for HACL*

This is essentially about testing the generated C code on a variety of platforms, OSes, and compiler toolchains. We don't need the advanced Everest CI for this since we don't care about having F* installed!
Quoting from Slack:

gcc-7 / aarch64 bionic (passing, minimal tests)
gcc-7 / linux64 bionic (passing, all C tests and extracted Low* tests)
gcc-5.4 / linux64 xenial (failing because of an OCaml binding issue, same as above + OCaml package build & test)
clang7 / linux64 xenial (failing because of the intrinsic, all C tests and extracted Low* tests)
clang / xcode 10 (failing because of: error: inline assembly requires more registers than available, same as above)
clang / xcode 11 (failing because of the intrinsic, same as above)as part of this CI work:
I put dist/c/test under version control
I wrote a mini-Makefile in dist/c/test so that one can run the extracted C tests without recompiling the world
these tests require "full kremlib" so I'm contemplating putting generated kremlib C code under version control so that it's easy to build without verifying/extracting kremlib

@parno @R1kM: I could not find a way to feature-test for the buggy LLVM version -- I tried all sorts of mini-tests that I was hoping would indicate whether the compiler we use has the register allocation failure, but none of them seem to capture the bug, and since I cannot repro on my machine, I gave up trying to use Travis as an oracle and now grep for the buggy version in cc --version
here's an excerpt from the diff listing all the things I tried:
+  # For posterity, here are a list of things that don't work
+  # - checking if cc will compile curve25519-inline.h
+  # - checking if cc will compile fsqr2 as is
+  # - checking if cc will compile fsqr2 marked as extern
+  # - checking if cc will compile fsqr2 as is with an extern caller in the file to
+  # prevent it from being eliminated
+  #
+  # In short, I couldn't figure out a minimal testcase for the error:
+  #   ./curve25519-inline.h:595:5: error: inline assembly requires more registers than available
+  #
+  # Furthermore, this error only seems to happen on the exact config Travis
+  # uses.
+  # - Installing XCode 10.0 (for MacOS 10.14, Catalina) does not give me the right LLVM build
+  # - Installing XCode 10.1 (for MacOS 10.14, Catalina) does not give me the right LLVM build
+  # - Installing XCode 10.3 (for MacOS 10.14, Catalina) bails because my OSX is too recent
+  cc --version | grep -q clang-1<IP_ADDRESS>

@Frosne @karthikbhargavan I fixed lib_intrinsics.h to disable the first definition in the case of clang -- please check you're happy with the fix
now with my two fixes we're only left with the OCaml bindings bugs which, once fixed, will allow this PR to be merged

I wrote a test based on https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81300 that detects whether the compiler miscompiles the intrinsics, triggered at ./configure-time. If it does, it uses @Frosne 's fallback implementation (in C) for the intrinsics.
The test correctly triggers for CC=gcc-5.4 -- interestingly, it also triggers for a specific build of clang-7 on linux but not on other architectures. I haven't been able to reproduce...

The test is not right because it ignores the bug about the argument order. I'm switching to a custom-made test that seems more reliable...

The test correctly triggers for CC=gcc-5.4 -- interestingly, it also triggers for a specific build of clang-7 on linux but not on other architectures. I haven't been able to reproduce...
this was because on this configuration, we had CC=clang but the configure script was hardcoding cc instead of $CC.

I've switched to a test based on a diff that checks whether the (minimized) testcase extracted from ECDSA exhibits different results with/without fallback implementations of intrinsics; if it does, it's a buggy compiler
I think we should be good for merging now


 Following an example.
If this PR passes the circle ci build the you can consider it working
Checklist:

[ ] Code has been tested locally by PR requester
[ ] Changes have been successfully verified by another team member

Progress

[x] Finished task
[ ] TODO

Coverage remained the same at 68.939% when pulling 03cc6553ab21e155c5accf98d58219cc64a4d08f on austincunningham:AEROGEAR-8465 into 75c489eb21ff23b28a292bf0bfd8ce246db5375a on aerogear:master.


No :Workspace command exposed?

👋🏻
Reading the docs it looks like I should see a bunch of panels displayed after the .setup() is executed (that doesn't happen, no errors either), but also that a :Workspace command should be exposed (but there isn't).
  use {
    "ldelossa/nvim-ide",
    config = function()
      require("ide").setup({
        icon_set = "default",
        panels = {
          left = "explorer",
          right = "git"
        },
      })
    end
  }

Try it without anything provided to "setup" at all?
I dont use Packer, but if you literally see nothing, I think this maybe a local issue, and not an issue with the plugin.

This is not exactly related since OP isn't doing it, but I did notice that if you lazy load with packer, the only lazy-loading mechanism that works is using the VimEnter autocmd event, which kinda defeats the purpose of lazy loading.
Ideally I'd like to be able to lazy-load so that nvim-ide only loads when I issue the :Workspace command, which you can do with packer like so:
  use {
    "ldelossa/nvim-ide",
    cmd = 'Workspace',
    module = 'ide', -- also load if anything tries to `require('ide')`
    config = function()
      require("ide").setup()
    end
  }

However when I set up like this, the :Workspace command is not created and it doesn't seem to work at all.
I'm not sure what exactly the issue is but something about nvim-ide is incompatible with lazy-loading, which IMO is actually a kind of big problem because it is the largest contributor to my startup time. Before adding nvim-ide, it was about 60ms, now its about 110ms.

The setup function is pretty simple, it starts a "WorkspaceController" which then implements all the smarts. You can debug this. TBH, packer has always been a nightmare for me, with the caching and compiling just never working smoothly.

FYI my original issue is fixed and was a user error it seems (although I had recompiled packer, it didn't take effect until today -- honestly no idea why because I don't use any cache plugins like impatient.nvim anymore due to similar issues where caching was causing me problems seeing updated config).
So with this in mind should I close this issue and @mrjones2014 open a separate issue for the lazy loading problem, or would you prefer this issue kept open?

I think it makes more sense for me to open a new issue and we can discuss lazy loading specifically there.

I've opened a separate issue and PR to resolve the issue, this one can be closed.


Keyboard Shortcuts Change When Expression Not Working

Issue Type: Bug
Was making a slight tweak to the alt+arrows default bindings since by default there are no bindings to get back to get back and forth between my 1: bash and 2: npm terminals (webpack watch). Saw that there were commands for it, but then noticed the Keyboard Shortcuts visual editor seems to not save changing the When expression. I see it flag the tab with a * for a second, so it definitely noticed the keybinding assignment change but doesn't take effect. Minor issue, but unexpected behavior nevertheless.

Go to Keyboard Shortcuts
Remove binding for workbench.action.terminal.focusNextPane
Add binding for workbench.action.terminal.focusNext (alt+UpArrow)
Right-click on When column for added binding, hit Change When Binding
Type and hit enter: terminalFocus

Expected
When binding for workbench.action.terminal.focusNext to be: terminalFocus
Actual
When binding for workbench.action.terminal.focusNext not set
Work around
Add the missing when property to the binding in keybindings.json manually.
VS Code version: Code 1.32.3 (a3db5be9b5c6ba46bb7555ec5d60178ecc2eaae4, 2019-03-14T23:43:35.476Z)
OS version: Windows_NT x64 10.0.17763

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (8 x 1992)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledsurface_synchronization: enabled_onvideo_decode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
15.82GB (8.64GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (7)

Extension
Author (truncated)
Version

vscode-eslint
dba
1.8.2

vscode-firefox-debug
hbe
1.7.8

mssql
ms-
1.5.0

PowerShell
ms-
1.11.0

debugger-for-chrome
msj
4.11.3

sort-lines
Tyr
1.8.0

vscode-icons
vsc
8.4.0

Its fixed in insiders and will be available in next release.


feat: add docker-compose for agent local connections

Signed-off-by: Char Howland<EMAIL_ADDRESS>

Tested on linux using the HOST_IP. I obtained which IP to use by running: docker run --rm -it --net=host eclipse/che-ip


PDFBOX-5487: Remove all space characters if contained within the adjacent letters

Please see PDFBOX-5487 and the comments below.
In the PDF attached in the Jira issue, there are 2 space characters which overlap with the adjacent letters of 2 Arabic  words. When sorting is enabled, this space gets shifted into the middle of a word.
This commit will remove such spaces just after sorting.

@noureldin-eg Any known side effects for this commit?

I never got any feedback in PDFBOX-5487. What I need to know is whether the contents in PDFBOX-5487-arabic.pdf-sorted-diff.txt are better in the lines with "new".

Hi @kaismh and @THausherr,
It has been quite some time since I created this PR, and I had thought it was already merged. I’m glad to revisit this and contribute to the library again. However, I will need a bit of time to set up the project and review the code.
Thank you for reminding me about this, and I’ll try to provide updates asap.

@THausherr The output is better for all arabic cases I tried, but not sure if it might break some situations or other languages. Might be better to have as an option

I'm reluctant to add a new option... it doesn't seem to be needed. I have around 100 local test files and only two were changed (only in the sorted output).
I'd still like to get some feedback by @noureldin-eg .

Any known side effects for this commit?

No known side effects for Arabic (and English) text extraction. I can't confirm its impact on other languages, but if you'd like, I could modify the implementation to apply this fix only when the unicode fall within the Arabic code pages.

whether the contents in PDFBOX-5487-arabic.pdf-sorted-diff.txt are better in the lines with "new"

Yes, the extracted contents are better after my commit. Specifically, the two key changes highlighted in the screenshots above and explained in the Jira issue have been addressed.


create_sql_agent: Prompt missing required variables: {'tools', 'tool_names'}

Checked other resources

[X] I added a very descriptive title to this issue.
[X] I searched the LangChain documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangChain rather than my code.

Example Code
few_shot_prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=PromptTemplate.from_template(
        "User input: {input}\nSQL query: {query}"
    ),
    input_variables=["input", "dialect", "top_k"],
    prefix=system_prefix,
    suffix="User input: {input}\nSQL query: ",
)

full_prompt = ChatPromptTemplate.from_messages(
    [
        SystemMessagePromptTemplate(prompt=few_shot_prompt),
        ("human", "{input}"),
        MessagesPlaceholder("agent_scratchpad"),
    ]
)

agent = create_sql_agent(
    llm=llm,
    db=db,
    prompt=full_prompt,
    verbose=True
)

Error Message and Stack Trace (if applicable)

ValueError                                Traceback (most recent call last)
Cell In[32], line 1
----> 1 agent = create_sql_agent(
2     llm=llm,
3     db=db,
4     prompt=full_prompt,
5     verbose=True
6 )
File ~\anaconda3\Lib\site-packages\langchain_community\agent_toolkits\sql\base.py:182, in create_sql_agent(llm, toolkit, agent_type, callback_manager, prefix, suffix, format_instructions, input_variables, top_k, max_iterations, max_execution_time, early_stopping_method, verbose, agent_executor_kwargs, extra_tools, db, prompt, **kwargs)
172         template = "\n\n".join(
173             [
174                 react_prompt.PREFIX,
(...)
178             ]
179         )
180         prompt = PromptTemplate.from_template(template)
181     agent = RunnableAgent(
--> 182         runnable=create_react_agent(llm, tools, prompt),
183         input_keys_arg=["input"],
184         return_keys_arg=["output"],
185     )
187 elif agent_type == AgentType.OPENAI_FUNCTIONS:
188     if prompt is None:
File ~\anaconda3\Lib\site-packages\langchain\agents\react\agent.py:97, in create_react_agent(llm, tools, prompt)
93 missing_vars = {"tools", "tool_names", "agent_scratchpad"}.difference(
94     prompt.input_variables
95 )
96 if missing_vars:
---> 97     raise ValueError(f"Prompt missing required variables: {missing_vars}")
99 prompt = prompt.partial(
100     tools=render_text_description(list(tools)),
101     tool_names=", ".join([t.name for t in tools]),
102 )
103 llm_with_stop = llm.bind(stop=["\nObservation"])
ValueError: Prompt missing required variables: {'tools', 'tool_names'}
Description
Create_sql_agent is throwing an error
System Info
langchain                                0.1.8
langchain-community                      0.0.21
langchain-core                           0.1.25
langchain-experimental                   0.0.52
langchain-openai                         0.0.6

Use agent = create_sql_agent(     llm=llm,     db=db,     prompt=full_prompt,     agent_type="openai-tools",     verbose=True ) and try again.

@liugddx  - Thank you for your inputs!
I tried and getting below error
NotFoundError: Error code: 404 - {'error': {'message': 'Unrecognized request argument supplied: tools', 'type': 'invalid_request_error', 'param': None, 'code': None}}
I am bound to use the resources which are available on azure platform, so not sure if i could use "openai-tools" in agent_type.
this is how i am initializing the model
llm = AzureChatOpenAI(azure_deployment='abc',
openai_api_key=aoai_api_key,
azure_endpoint=aoai_endpoint,
openai_api_version=aoai_api_version)

Hi @NikhilKosare,
You can use openai-tools with AzureOpenAI endpoint.
Use the latest langchain and langchain_openai version and initialize LLM like below
from langchain_openai import AzureChatOpenAI

os.environ["AZURE_OPENAI_API_KEY"] = " "
os.environ["AZURE_OPENAI_ENDPOINT"] = " "

llm = AzureChatOpenAI(
    openai_api_version="2023-05-15",
    azure_deployment="gpt-35-turbo",
)

You can follow this article for more info https://python.langchain.com/docs/use_cases/sql/agents#using-a-dynamic-few-shot-prompt
Let me know if this works for you.

I am trying to use the posted example but have been trying to modify it and use Ollama+mistral instead of OpenAI. I am able to get it working if I do not supply a prompt when using create_sql_agent. But I get this posted error when trying to use the dynamic few shot prompt as described in the link. Any help is much appreciated.

Getting the same error!

This error occurs when trying to use a different LLm, in this case its not possible to use "openai-tools". Did anyone manage to solve it?

Guys, the key to adapt it its to create the full prompt from scratch, following this format:

This is a printscreen from the original source of the langchain "create_sql_agent" method, it creates the prompt if no prompt is provided, but if it is, the prompt must be complete and in proper form, different from the "openai_tools" method that gets your prompt and insert it in the ReAct prompt somehow. When using a different Llm however, we have to build it from scratch:
You can have access to the prefix and suffix used in the create_sql_agent in here: https://github.com/langchain-ai/langchain/blob/master/libs/langchain/langchain/agents/mrkl/prompt.py
I suggest putting the sql prompt "system_prefix " from the tutorial (https://python.langchain.com/docs/use_cases/sql/agents/) in the prefix, but putting the "Here are some examples of user inputs and their corresponding SQL queries:" part in the final of format_instructions, and then create the few shot object like this:
example_prompt = ChatPromptTemplate.from_messages(     [         ("human", "{input}"),         ("ai", "{output}"),     ] ) few_shot_prompt = FewShotChatMessagePromptTemplate(     example_prompt=example_prompt,     examples=examples, )
And after this, call it in the template using .format():
`template = "\n\n".join(
[
PREFIX,
"{tools}",
format_instructions,
few_shot_prompt.format(),
SUFFIX,
]
)
prompt = PromptTemplate.from_template(template)`

@langonifelipe - Thank you so much for this! I am using Ollama locally and have followed your advice, getting it to work. For the avoidance of any doubt, the prompt should be like below:
from langchain_core.prompts import (
    ChatPromptTemplate,
    FewShotChatMessagePromptTemplate,
    PromptTemplate,
)

from langchain.agents.mrkl import prompt as react_prompt

examples = [
  {"input": "List all the characters in Anna Karenina",
   "query": "SELECT DISTINCT characterNames FROM novels WHERE novelName = 'Anna Karenina'"},
]

system_prefix = """
    You are an agent designed to interact with a SQL database.
    Given an input question, create a syntactically correct query to run, then look at the results of the query and
    return the answer. Unless the user specifies a specific number of examples they wish to obtain.
    You can order the results by a relevant column to return the most interesting examples in the database.
    Never query for all the columns from a specific table, only ask for the relevant columns given the question.
    You have access to tools for interacting with the database.
    Only use the given tools. Only use the information returned by the tools to construct your final answer.
    You MUST double check your query before executing it. If you get an error while executing a query, rewrite the query
    and try again.

    DO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database.

    If the question does not seem related to the database, just return "I don't know" as the answer.
"""

basic_suffix = """
    Begin!

    Question: {input}
    Thought: I should look at the tables in the database to see what I can query. Then I should query the schema of the most relevant tables.
    {agent_scratchpad}

"""

example_prompt = ChatPromptTemplate.from_messages(
    messages=[
        ('human', "{input}"),
        ('ai', "{query}")
    ]
)

few_shot_prompt = FewShotChatMessagePromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    input_variables=["input",
                     "agent_scratchpad"],
)

format_instructions = f"{react_prompt.FORMAT_INSTRUCTIONS}\n " \
                      f"Here are some examples of user inputs and " \
                      f"their corresponding SQL queries:\n"

template = "\n\n".join(
    [
        system_prefix,
        "{tools}",
        format_instructions,
        few_shot_prompt.format(),
        basic_suffix
    ]
)

prompt = PromptTemplate.from_template(template=template)

@avisionh ,
I am to trying to create an sql agent with ollama with few shot learning and facing the same issue.
Would you be able to share the full code?

I'm also using Ollama offline with llama3 following the same prompt template, can you suggest what tool to use?  I've been hitting the following error:
agent_executor = create_sql_agent(
File "/Users/yiyangwan/venv/lib/python3.10/site-packages/langchain_community/agent_toolkits/sql/base.py", line 181, in create_sql_agent
 runnable=create_react_agent(llm, tools, prompt),
File "/Users/yiyangwan/venv/lib/python3.10/site-packages/langchain/agents/react/agent.py", line 117, in create_react_agent
 raise ValueError(f"Prompt missing required variables: {missing_vars}")
ValueError: Prompt missing required variables: {'tool_names'}


More information needed

This page is a terrific resource for defining what metrics are supported. However, it really does need more information (or links to more information) to define what the metrics actually mean.
While some metrics are obvious, others are not - for example, for Microsoft.Web/serverfarms resources, what does the TcpEstablished metric mean? Does this mean inbound established TCP connections? Or outbound? Or the sum of both inbound and outbound?
This is relevant, as ideally, I'd like to create alerts based on outbound TCP connections, given the limitations on number of outbound TCP connections - but the lack of clarity around what the metric means doesn't help.

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

ID: a0a586c4-71fd-e60b-9c4c-1a3eb2443c74
Version Independent ID: 2f3706cc-073b-a310-8da4-2a5a90da6473
Content: Azure Monitor supported metrics by resource type - Azure Monitor
Content Source: articles/azure-monitor/platform/metrics-supported.md
Service: azure-monitor
Sub-service: metrics
GitHub Login: @rboucher
Microsoft Alias: robb

@andrewatfornax Thank you for bringing this to our attention. We are investigating to get you the information you are asking seeking clarification for.

@rboucher Could you please help clarifying the query and update the document as required?

Any word on this? I also had this exact same question regarding tcp established. Is this inbound, outbound, combo? Even if it's not added to the docs right away, this info would be super helpful right now

Hi @andrewatfornax  and @jrc356 . Understood.  I'll see if I can get you some help to explain how to create the an alert on outbound TCP connections.
And this description does help you figure that out.
Microsoft.Web/serverfarms  - TcpEstablished

@rboucher that would be swell. The documentation does not make it clear as to whether the metric "TcpEstablished" is outbound, inbound, combination, or what which is what I'm most interested in. I have some scaling rules in place on this metric but the lack of a clear definition of that metric has me wondering about this rule and any alerts

Hi @rboucher,
I agree with @Jrc356 - the metric descriptions are far too brief, and don't provide enough technical information for users who are really getting into the deep details of metrics. As @Jrc356 notes, "TcpEstablisted" doesn't tell us what direction we are talking about (inbound vs. outbound) or if it's a sum of both of these. (This is really important to me, because I'm interested in alerting on the number of outbound connections, to help identify cases where code has been deployed which is not correctly pooling or closing outbound connections, which can lead to outbound TCP port exhaustion - but will this metric allow me to do that, or not? The description doesn't give me enough technical information to make that decision.)
Please note that the ticket is not specifically about just this one metric though - many of the metrics need more details to be clear and useful.
Thanks.

Understood Jon and Andrew.   Each service provides their own descriptions and we in Azure Monitor aggregate that information into this article. That's not an excuse for unhelpful descriptions. I just have to pull in the right people who actually know the answer and can update the descriptions-- in addition to answering your questions.

No problems @rboucher - I understand it's not an easy change and I appreciate that you are looking into it! Thanks.

Just rehydrated the internal thread on this as it appears they still aren't fixed in the latest update.  Acknowledging that this is still a problem.

#label:"CreateAzMonWIFeb2021"
Have to check on status with PG.

Thank you for your contribution to the Azure Monitor documentation. We have created a workitem for this issue in our internal backlog database. We will prioritize it and make any necessary changes as we are able.
#please-close


Add solar irradiance variable(s)

It would be great if one or more surface variables related to solar energy for solar power forecasting, like downward short-wave radiation flux/surface solar radiation downwards or total cloud cover, could be added for evaluation.
Deterministic and probabilistic forecasts for solar power are going to be increasingly important for power grid operators, and understanding how existing and new forecast models perform in this area would be valuable.

Great idea. We don't have those variables downloaded at the moment (except for total_cloud_cover for ERA). Can you maybe point out which variables from these (https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels?tab=overview) you'd be interested in specifically?

Thanks!
I think Mean surface downward short-wave radiation flux would be the most relevant ERA5 variable for solar energy.
If you were interested in adding wind energy, 100m u-component of wind and 100m v-component of wind would be relevant.

Hi, we have updated our ERA5 dataset which now includes the downward flux but not the 100m winds: gs://weatherbench2/datasets/era5/1959-2023_01_10-full_37-1h-0p25deg-chunk-1.zarr
A related project at Google has a much more comprehensive copy: gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3
We will merge these versions soon but for now I will close this issue


GSD1010 export missing 17,957 species

The scientific_names table from the CoL+ exporter only contains 15,975 records for GSD1010 (FishBase), when it should have 33,932 living species and 55 living infraspecies:
mysql> SELECT count(*) FROM colplus_export.scientific_names WHERE database_id=1010 AND sp2000_status_id IN (1,4);
+----------+
| count(*) |
+----------+
|    15975 |
+----------+
1 row in set (0.53 sec)

The import metrics page reports acef:AcceptedSpecies=33,932 and acef:AcceptedInfraSpecificTaxa=55, so I think this is likely a bug with the CoL+ to Assembly_Global exporter.

As I wiped prod today I cannot verify, but I would guess it is rather related to the CoL assembly (sync) then the export itself which is GSD agnostic.

I tried to re-sync the sectors for GSD1010 and one did fail while trying to re-sync, but I didn't find any errors in the Kibana logs for any of those sectors before I re-synced:
PSQLException: ERROR: deadlock detected Detail: Process 25428 waits for AccessShareLock on relation 21549042 of database 21548559; blocked by process 26838. Process 26838 waits for AccessExclusiveLock on relation 21549072 of database 21548559; blocked by process 25428. Hint: See server log for query details.

The importer looks fine with 33,932 living species. I am syncing again the 6 sectors on prod right now

Results: 102.501 usages; 39.748 taxa; 33.931 acc species
Nearly perfect

@gdower how does the export look like, can we close the issue?

Conversion probably won't finish until tomorrow, but I'll re-open this if we have the same problem. Before the import statistics were correct but the CoL+ export statistics were incorrect.


Implement custom events

Summary
Feature context: #851
Public API
The main consideration for the public API to be exposed for tracking custom events is that the types of attribute values need to be constrained to the following Kotlin types: String, Int,  Double, Boolean and Long and the public API should only allow adding these types only.
val attributes = buildAttributes {
  put("sample-key-1", 123)
  put("sample-key-2", 123.45)
  put("sample-key-3", "sample-value")
  put("sample-key-4", true)
  put("sample-key-5", 123L)
}
Measure.trackEvent("custom-event", attributes)

This can be achieved by leveraging inline value classes in Kotlin which can provide type safety and performance benefits without the overhead of creating separate objects for each attribute value. Inline value classes allow us to wrap primitive types with additional type information at compile time, while still using the underlying primitive type at runtime.
For example, to represent an AttributeValue that can only have a string the following sealed interface can be used with the inline value class:
@Serializable(with = AttributeValueSerializer::class)
sealed interface AttributeValue {
    val value: Any
}

@Serializable
@JvmInline
value class StringAttr(override val value: String) : AttributeValue

Tracked as part of: #851

Tracked as part of: https://github.com/measure-sh/measure/issues/851


Add setting "Position for new recurring tasks in todo.txt"

Feature Request
What problem does it solve?
I'm using Sleek along with text editor. Sometimes I'd like to be able to split the file into sections for example:
# group 1 h:1
2024-05-01 task 1 t:2024-05-06 rec:7d
# group 2 h:1
2024-05-01 task 2 t:2024-05-06 rec:7d
# inbox h:1

Upon completion of task 1 I'd like to have following result.
# group 1 h:1
x 2024-05-06 2024-05-01 task 1 t:2024-05-06 rec:7d
2024-05-06 task 1 t:2024-05-13 rec:7d
# group 2 h:1
2024-05-06 task 1 t:2024-05-06 rec:7d
# inbox h:1

Inbox section is defined at the end of file and all new tasks created explicitly in Sleek UI goes here. I can visit this section in text editor and dispatch those tasks into groups.
Current Sleek's behaviour is adding new todos (created explicitly) and todos spawned from recurring tasks at the end of file:
# group 1 h:1
x 2024-05-06 2024-05-01 task 1 t:2024-05-06 rec:7d
# group 2 h:1
2024-05-06 task 1 t:2024-05-06 rec:7d
# inbox h:1
2024-05-06 task 1 t:2024-05-13 rec:7d

With this option on, only new tasks added explicity via Sleek UI would be placed at the end of file and respawned tasks would be placed under or above completed ones.
How does the user interface change to accommodate this request?
Add dropdown in settings with label "Position for new recurring tasks in todo.txt" with options

End of file
Above completed
Below completed

If this setting seems too niche to clutter the UI, I wouldn't mind just config.json option :)


[Ready for Review] Node Refactor ProjectOrganizer

Purpose
Originally included in https://github.com/CenterForOpenScience/osf.io/pull/2360/commits, now split into a separate PR dependent on https://github.com/CenterForOpenScience/osf.io/pull/2544.
Focuses on updates to ProjectOrganizer frontend and backend.
Changes
Add the ability to show project structure without revealing sensitive information. Before if a node was orphaned due to permissions issues it simply showed as a top level element of 'All My Projects'. Now a tree is constructed that shows the minimal set of nodes necessary to reach each node the user is a contributor on. Nodes that user can't see grayed-out and show no information.

Side Effects
These changes are largely restricted to ProjectOrganizer.

That greying is a little extreme and looks like a highlight. We should consider some other way of representing that data. Maybe everything is the same except the text is in italics, and perhaps some sort of icon overlay if we can find something that will work well?

If we do italics, we'll have to change the Smart Collections styling to something else. We could just replace the icon with a lock icon and leave the styling the same.

Ok, I like the idea of a lock. Updating to reflect these comments

@samchrisinger Can this PR be closed?

@sloria the referenced issue: https://github.com/CenterForOpenScience/osf.io/issues/2677 is still unaddressed.

OK, thanks Sam; will keep this open for now. @GaryKriebel @lbanner Let's get this in the queue, probably next epic.

Noted for next epic.


When use QOptionGroup, field is undefined in evaluatedProp function scope

Hi, Mr. Mesqueeb.
I've tried to use EasyForms to show partial forms that are shown as one but with steps or the like.
I have the schemas (partial forms) defined on js files separately, like this:
/*schema1.js*/
const mySchema = {
  schema: [
    {
      id: 'problematicID',
      label: 'Does it work?',
      component: 'QOptionGroup',
      type: 'checkbox',
      default: () => [],
      options: [
        { label: 'Yes', value: 1 },
        { label: 'No', value: 2 }
      ]
    },
    {
      id: 'doeswork',
      label: 'It does work :)',
      component: 'QInput',
      evaluatedProps: ['showCondition'],
      showCondition: (_, { formData }) => formData.problematicID === 1
    },
    {
      id: 'doesnotwork',
      label: 'It does not work :(',
      component: 'QInput',
      evaluatedProps: ['showCondition'],
      showCondition: (_, { formData }) => formData.problematicID === 2
    }
  ]
}

export default mySchema

And, for schema2:
const schema2 = {
  schema: [
    {
      id: 'sillyquestion',
      label: 'A Silly Question',
      component: 'QInput'
    }
  ]
}

export default schema2

My component looks like this:
<template>
  <div>
    {{ partial }}
    <EasyForm
      v-model="partial"
      v-bind="exampleProps[next]"
    />
    <q-btn
      label="Siguiente"
      @click="changeSection"
    />
  </div>
</template>

<script>
import mySchema from './schema'
import mySchema2 from './schema2'

export default {
  name: 'MultipleInput',
  data () {
    return {
      next: 0,
      partial: {},
      exampleProps: [mySchema2, mySchema]
    }
  },
  methods: {
    changeSection () {
      ++this.next
    }
  }
}
</script>

The schema with the OptionGroup component shows that the field 'problematicID' is undefined, then does not make the conditional rendering of the other fields in the schema.
I've tried to put a :key prop with the next counter assigned to it, now, it does not show any errors but does not make the conditional rendering either.
Also, if I change the order of the schemas in the array, does not make the conditional rendering, though.

I could circumvent this issue declaring the id of the field as a key, explicitly into the v-model attr.
So, partial look like this: partial: {problematicID: []}
But this should not happen since I'm separating the partial schemas of the form with unique keys.
You read it from an avocado.

@ChinuxParibus
Thanks for opening the issue.
I believe there are still problems with using numbers for the values in a QSelect or QOptionGroup.
If you change this to strings it should work:
/*schema1.js*/
const mySchema = {
  schema: [
    {
      id: 'problematicID',
      label: 'Does it work?',
      component: 'QOptionGroup',
      type: 'checkbox',
      default: () => [],
      options: [
        { label: 'Yes', value: '1' }, // see string for value '1'
        { label: 'No', value: '2' }
      ]
    },
    {
      id: 'doeswork',
      label: 'It does work :)',
      component: 'QInput',
      evaluatedProps: ['showCondition'],
      showCondition: (_, { formData }) => formData.problematicID === '1'
      // see string for value '1' in the showCondition

I will look into this further, but let me know if this solves your issue.

As for your other issue:

Also, if I change the order of the schemas in the array, does not make the conditional rendering, though.

I believe that perhaps the easy form is not re-rendered after making modifications to the schema prop passed. (but again, will need to double check.)
This is for performance reasons  → I'll need less watchers.
There are a million ways you can work around this. One way is to provide all possible orders inside the schema and have them shown or hidden via showConditions.

Another way is to re-render the entire easy-form by changing a key prop you apply to the easy
form tag. However, this might reset the user input, so you might need to also keep a copy of your
formData in the parent component.

Thanks for your kind response :)
That's exactly the behavior I'm looking for because the definition of my partial schemas have some "prelations" between them, so showCondition has to reset that partial form in particular. Maybe that's the reason why didn't throw any errors.
I'll be giving a try and I will let you know if it works.

@ChinuxParibus
Yeah basically you can do this:
<EasyForm :key="counter" />

and
return default {
  data () { return { counter: 0 } }
}

Then if you increment the counter, the form is re-loaded and therefore reset. :)
If you update the schema before you increment the counter, it gets reloaded with the new schema.
This is true for all Vue components btw, not just EasyForms. 😉

@ChinuxParibus the new version has dedicated documentation on how to reset the form!
see #16

@ChinuxParibus the new version has dedicated documentation on how to reset the form!
see #16


OnEnd event in Xamarin.Forms' AnimationView

Hi!
Our project needs to notice when a Lottie anim. just ends, so made a few changes to support it on Android and iOS. I'm making this PR to know:

whether this sounds good for you all, and in such case
whether UWP is mandatory too to merge it finally

Currently OnEnd fires when looping is disabled (at least on Android), but could be worked out to support it too.
Thanks in advance, good work bringing this to Xamarin :-)
PS: I've updated Forms sample to showcase this new thing.
Marcos

This change looks good, i'm just not sure about the naming convention FireOnEnd. What about just Finished?

I would like to see this as a bindable command as well. Not just an event 👍

Thanks everyone for your comments!
@martijn00 FireOnEnd() is just the public method in charge of actually triggering the event; however, OnEnd is the actual one –I tried to make it familiar along with OnPlay and OnPause. I agree on changing it to Finished() but just wanted to double check the former.
@modplug I believe we can currently turn the event into a Command through a Behavior, although I can do it as well too. I just feel that providing such as a Command but having the other ones (Play & Pause) as events might feel odd. What do you thing guys?

I don't agree as Play() and Pause notifies the view and a PlaybackCompletedCommand would notify the ViewModel via binding. Have a look at https://github.com/luberda-molinet/FFImageLoading/blob/master/source/FFImageLoading.Forms/CachedImage.cs for inspiration

I got your idea @modplug, and agree with it. Just wanted to mention current AnimationView exposes 2 events: OnPlay and OnPause which can be subscribed to be notified in the code-behind, for instance.
However, I agree OnEnd is a little bit different, since you just want the View-VM communication. I'll add it!
Thanks for your comments.

Great @MarcosCobena. Maybe you can add OnPlay and OnPlay as commands as well? It does make sense to expose them as commands if you want to be able to react to it in the view model

And can you rebase your branch to get rid of the conflict?

OK guys I think everything's in place now:

I've renamed OnEnd to OnFinish because of,
I've added FinishedCommand, along with PlayingCommand

I didn't add PausedCommand because I actually did it but found a different behavior between Android and iOS:

in Android pausing the animation and playing it back restarts it completely; however,
in iOS doing the same just resumes it where it was stopped

Also, pausing in Android currently fires OnFinish/FinishedCommand, so just wanted to discuss this before and maybe improve it in a future PR.
I've put some love in the MainPage as the slider was being hidden in Android, and you'll find too 2 convenient buttons at the top: Play & Pause :-)
Hope you like it! And thanks again for your comments!

@MarcosCobena good job. I would like to see UWP support for this before it gets merged. I think it's important to keep the different platforms aligned. I would also suggest that you change the name of the properties to be:
FireOnPlay = PlaybackStarted
FireOnFinish = PlaybackFinished
PlayingCommand = PlaybackStartedCommand
FinishedCommand = PlaybackFinishedCommand
Keep up the good work

@modplug done! I've aligned UWP –although am not super-happy with the approach, but it's the farthest we can go AFAIK without touching LottieUWP. Also, have renamed things as you proposed.


convert Command Not Found on Ubuntu 24.04

Have you checked that your issue isn't already filed?

[X] I read through FAQ and searched through the past issues, none of which addressed my issue.
[X] Yes, I have checked that this issue isn't already filed.

Bug description
The convert command from ImageMagick fails to run in workflows using the latest ubuntu-latest tag in GitHub Actions. I guess this issue occurs because ubuntu:latest now uses Ubuntu 24.04 instead of 22.04.
How to reproduce the bug
Just build a website with images and look into the logs.
Error messages and logs
Incremental build: disabled. Enable with --incremental
      Generating...
       Jekyll Feed: Generating feed for posts
       Imagemagick: Searching files in /home/runner/work/ardoco.github.io/ardoco.github.io/assets/img/
       Imagemagick: Generating image "/home/runner/work/ardoco.github.io/ardoco.github.io/_site/assets/img/icsa2019_poster-480.webp"
       Imagemagick: Command returned pid 1991 exit 127 with error sh: 1: convert: not found
       Imagemagick: Generating image "/home/runner/work/ardoco.github.io/ardoco.github.io/_site/assets/img/icsa2019_poster-800.webp"

What operating system are you using?
Not applicable (e.g. you're using GitHub Pages or other hosting)
Where are you seeing the problem on?

 I manually run the deploy action yesterday on this repo and everything run smoothly.

Yes, this action still uses "22.04.5" .. tbh I don't know how github decides whether to use 24.04 or 22.04 :D

Your deploy action is working just fine, and I can see that it is using the latest ubuntu tag. What is the problem?

Hi @dfuchss, I had the same issue. A temporary work-around is to replace the "ubuntu-latest" in the github workflow files with "ubuntu-22.04" (https://github.com/actions/runner-images?tab=readme-ov-file#available-images)
The corresponding files can be seen here: https://github.com/search?q=repo%3Aalshedivat%2Fal-folio ubuntu-latest&type=code

Your deploy action is working just fine, every run of deploy, and I can see that it is using the latest ubuntu tag. What is the problem?

In the logs you can see that the creation of webp files fail silently :) so the srcSet of the images are empty .

Now I understand. The action that failed is actually not using ubuntu 24.04 as can be seen in the warning. I don't think this is actually the problem.

Hi @dfuchss, I had the same issue. A temporary work-around is to replace the "ubuntu-latest" in the github workflow files with "ubuntu-22.04" (https://github.com/actions/runner-images?tab=readme-ov-file#available-images)

Did this work for you? If it didn't, we can be sure it is not a problem of ubuntu version.

Yes that works. After downgrading the version, the webp files are generated again.

@dfuchss @george-gca
I solved this issue by manually adding an extra step to explicitly run sudo apt-get install -y imagemagick in the workflow file. This step should be put before  - name: Install and Build 🔧.
...
      - name: Update _config.yml ⚙
        uses: fjogeleit/yaml-update-action@main
        with:
          commitChange: false
          valueFile: "_config.yml"
          propertyPath: "giscus.repo"
          value: ${{ github.repository }}
      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y imagemagick
      - name: Install and Build 🔧
        run: |
          pip3 install --upgrade nbconvert
          export JEKYLL_ENV=production
          bundle exec jekyll build
...

Can you send a PR for this? Only 1 suggestion, move all install code inside the Install and Build step, like this:
      - name: Install and Build 🔧
        run: |
          sudo apt-get update && sudo apt-get install -y imagemagick
          pip3 install --upgrade nbconvert
          export JEKYLL_ENV=production
          bundle exec jekyll build

and also do that for the axe and broken-links-site actions?

@george-gca
Sure. Made it at https://github.com/alshedivat/al-folio/pull/2906