[TASK] Bump up the minimum supported Kubernetes version

What's the task? Please describe

Kubernetes version support, min 1.26 to align with upstream (1.29 is planned to be released on 12/5, 1.28 and 1.27 are actively supported. 1.25 was EOS on 10/27.)

As per https://metrics.longhorn.io/, 1.25 and 1.24 are primary installed versions.
Rancher supported downstream cluster is RKE/2 1.26
RKE2 is supporting 1.28 - 1.26 which is aligned with upstream.
For the current Longhorn-supported versions, we will not change the existing supported min version of Kubernetes.

Describe the sub-tasks

[x] Run e2e tests to ensure all passed including installation and upgrade
[x] Support the supported K8s versions without issues
[x] Prevent upgrading from any unsupported K8s versions with notice info, especially for helm chart installation

Additional context

https://github.com/longhorn/longhorn/issues/7001
https://github.com/longhorn/longhorn/issues/2757
https://github.com/longhorn/longhorn/issues/3891
https://kubernetes.io/docs/reference/using-api/deprecation-guide/
https://endoflife.date/kubernetes

https://kubernetes.io/releases/patch-releases/#support-period

Test unsupported Kubernetes version:
> helm install longhorn ./chart/ --namespace longhorn-system --create-namespace
Error: INSTALLATION FAILED: chart requires kubeVersion: >=1.26.0-0 which is incompatible with Kubernetes v1.25.15+k3s2

Extra info about Kubernetes version support in public cloud providers is below:
AKS/EKS/GKE 1.25 support will soon reach out to EOL.

https://endoflife.date/google-kubernetes-engine
https://endoflife.date/amazon-eks
https://endoflife.date/azure-kubernetes-service

Also, RKE2/K3s 1.25 already reached EOL. They cover over 50% of installation from Longhorn usage metrics.

Sorry for the late comment. Up until now, we usually follow the convention that we only raise min supported Kubernetes version if keeping the current min K8s version makes it impossible to support the newest K8s version. Reference https://github.com/longhorn/longhorn/issues/3891#issuecomment-1131258472
Is it the case here?

Sorry for the late comment. Up until now, we usually follow the convention that we only raise min supported Kubernetes version if keeping the current min K8s version makes it impossible to support the newest K8s version. Reference #3891 (comment)
Is it the case here?

Sorry I wasn't aware of the usual conversion. However, for the upcoming v1.6.0 release, we are aiming to align with the upstream-supported version life cycle. Unlike this usual approach, I think the decision to adjust the minimal supported version is driven by the need to upgrade the Kubernetes dependency libraries for CVE fixes.
AFAIK Kubernetes maintains backward compatibility with the client, but this may not be true the other way around.
This approach is also observed with Rancher and RKE. If the expectation is for Longhorn to support all versions until it becomes impractical, then we should consider having full regression tests on all the supported versions to ensure compatibility.

Verified on master-head 20231211

longhorn master-head https://github.com/longhorn/longhorn/commit/722642abc5fc2cda610975c89a3464189addc5ac

Result Passed

[x] 1. We cannot install Longhorn v1.6.0-dev on k3s v1.25 using Helm; it throws an error: chart requires kubeVersion: >=1.26.0-0.

ryao@ryao-laptop:~/Desktop/longhorn/chart> helm install longhorn . --namespace longhorn-system --create-namespace
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ryao/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ryao/.kube/config
Error: INSTALLATION FAILED: chart requires kubeVersion: >=1.26.0-0 which is incompatible with Kubernetes v1.25.15+k3s2

[x] 2. Review the document : https://github.com/longhorn/website/pull/804
[x] 3. Execute coretest on k3s v1.26, v1.27, and v1.28

K3s Version
Test Job
Upgrade Job

v1.26.11+k3s1
Passed
Passed

v1.27.8+k3s1
Passed
Passed

v1.28.4+k3s1
Passed
Passed

Base on the discussion, we will revert the minimum version enforcement, and update the document to include the tested versions.

@roger-ryao the revert PR is merged. And you've tested the suggested version. So we just need another test to ensure the minimum Kubernetes enforcement is back to v1.21. Thank you.

Verified on master-head 20231212

longhorn master-head https://github.com/longhorn/longhorn/commit/69739d8a63231934c5f7bb0c70619130be25fe23

Result Passed

We cannot install Longhorn v1.6.0-dev on k3s v1.20 using Helm; it throws an error: chart requires kubeVersion: >=1.21.0-0.


tf-Java 1.14.0 can not open shared object file libtensorflow_frameword.so.1

System information

OS system: CentOS 7.3
TensorFlow installed from binary: import tensorflow from maven repo
TensorFlow version: 1.14.0
Python version: 3.6.5
CUDA/cuDNN version: cuda10-cudnn7

Describe the current behavior
We are using tensorflow java api to loaded a tensorflow model and a program exception is thrown. The exception information shows that the dependent resource file (libtensorflow_jni.so : libtensorflow_frameword.so.1) is missing.  We find that the tensorflow jar file contains this resource file, but the file failed to extract, resulting in an exception. We suspect this is due to the program filtering the files to be extracted by suffix names (.so).
Describe the expected behavior
The program can load model file successfully.
Code to reproduce the issue
The maven setting:
<dependency>
            <groupId>org.tensorflow</groupId>
            <artifactId>tensorflow</artifactId>
            <version>1.14.0</version>
</dependency>

import org.tensorflow.SavedModelBundle;
import org.tensorflow.Tensor;

public static void main(String[] args){
        String dir = "xxx" // model path
        savedModelBundle = SavedModelBundle.load(dir, "serve");
    }
}

Other info / logs
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/tensorflow_native_libraries-1568533726609-0/libtensorflow_jni.so: libtensorflow_framework.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at org.tensorflow.NativeLibrary.load(NativeLibrary.java:101)
at org.tensorflow.TensorFlow.init(TensorFlow.java:66)
at org.tensorflow.TensorFlow.(TensorFlow.java:70)
at org.tensorflow.SavedModelBundle.(SavedModelBundle.java:170)

We have a similar issue with the jar running with Ubuntu 18.04

@doladola Can you try with TF1.15.0rc1 and let us know whether the issue persists? Thanks!

I run into the same issue as well, @jvishnuvardhan could you refer a related commit so we could try it out?

It has been 14 days with no activity and the awaiting response label was assigned. Is this still an issue?

@oliverhu Finally TF1.15.0 stable version was released. Can you try it and let us know how it progresses. Thanks!

@jvishnuvardhan  thanks, will try it out. Just curious what is the supporting model (priority) for 1.15? Is 1.15 a LTS version or it is just some temporary release?

@oliverhu TF1.15 is a stable version. This is the final TF1.x version. I think this will be supported for an year only. We would suggest everyone to take a look at TF2.x which will be the only version going to be supported in future.  Thanks!

It has been 14 days with no activity and the awaiting response label was assigned. Is this still an issue?

Automatically closing this out since I understand it to be resolved, but please let me know if I'm mistaken.Thanks!

Hi, I just had the same problem following the getting started with maven and changing from 1.14 to 1.15 solved.


Add logic for checking if cluster requires privileged access

Some Kubernetes clusters are for privileged environments, such as a cluster running the production environment for an application. The issue with clusters running in privileged environments is that at the end of the day, someone needs to be able to administer them using kubectl in case something goes wrong. If that person forgets to change their context back to a cluster that's non-privileged, they risk running destructive commands while forgetting where they are pointing to.
This change to the auth plugin adds a safeguard for using privileged cluster contexts. It mimics the behavior of sudo, requiring user input every so often. This reminds the user where they are pointing to in case they got distracted or picked up work the next day where they left off the previous day. The safeguard itself is configured on the Kubernetes cluster the context is targeting, so no extra work needs to be done by the plugin to read more configuration from the filesystem or environment variables. The plugin just reads metadata from the cluster response it was already fetching. Timeout state is stored in /tmp so that it's out of the way, and something like a reboot isn't a problem because if the file is deleted the user will just be prompted again.

Oh cool! I didn't even know kubectl had this option. 😅 As thanks for introducing me to this, I have some probably-stupid questions 😄

Just to clarify my understanding here, when a cluster in my context is marked as privileged, gke-auth will pass that along in the authInfo.Exec, which will cause gke-auth to be invoked in interactive mode -- but what does that mean? I don't see code in here that handles being invoked interactively, unless I'm missing something.

This looks for a privileged resource label on the GKE cluster -- is that a common convention? I don't see it listed here, but maybe I'm not looking in the right place. I'm also not very familiar with GCP resource label conventions.

Just to clarify my understanding here, when a cluster in my context is marked as privileged, gke-auth will pass that along in the authInfo.Exec, which will cause gke-auth to be invoked in interactive mode -- but what does that mean? I don't see code in here that handles being invoked interactively, unless I'm missing something.

It seems like interactive mode just passes along stdin when the command is invoked from a terminal. It looks like if it's set to Always it'll fail if the command isn't run from an interactive session. Reading the docs this actually makes me think that it'll break automation that's running against privileged clusters. Maybe I can add some kind of environment variable that can be set to just bypass this in CI, like GKE_AUTH_BYPASS_PRIVILEGE_CHECK. What do you think?

This looks for a privileged resource label on the GKE cluster -- is that a common convention? I don't see it listed here, but maybe I'm not looking in the right place. I'm also not very familiar with GCP resource label conventions.

I'm not sure if there's an official label for this. Truthfully I didn't give it much thought until you asked. Maybe we should use some kind of namespaced label to avoid collisions. Something like gke-auth.privileged and gke-auth.timeout-seconds.

cc @eddiezane since he knows all things kubectl.
I really like the idea of signalling that the cluster should prompt for re-auth each time, and this seems like a place to do it. I'm not sure if there's precedent we should follow. If not, I think we should configure it in some gke-auth-specific way, until such a precedent exists.

I force pushed to keep the commit history nice, but basically I just added a flag that allows skipping the privilege check altogether. This will allow people to use the gke-auth plugin in automation that targets these clusters. I tried doing this by reading the KUBERNETES_EXEC_INFO environment variable for the interactive mode as documented here, but that environment variable only gets set when kubectl calls the plugin. When the context is initialized with a direct call to gke-auth that variable isn't set, so there's no way to configure it through there.

Also thinking about your comment some more, I'm not exactly sure if there's a way to prompt for full re-auth with GCP to access the cluster. To me that would be ideal. The thing is, the call to google.DefaultTokenSource grabs tokens from the application default credentials. That means that the authentication is long-lived, because it lasts as long as GOOGLE_APPLICATION_CREDENTIALS is set correctly or the user is still authenticated using the gcloud CLI. To prompt for re-auth would basically mean having to break that behavior somehow.
I can look into changing how we get the token source on each call. Maybe there's a way to do it without calling google.DefaultTokenSource that will allow us to do what we want.

I've been trying to reverse engineer the authentication flow that the gcloud CLI uses since it's not basic OAuth with a client ID and client secret. I haven't been able to figure out exactly how it's doing it.
If we were able to figure that out, it's something that Google could easily change out from under us, and their security might prevent us from using this flow anyways, so I don't think it's worth spending a lot of time on it.


TST: Fix

Small fixes to get tests to pass.

Thanks a lot!
Small question: Is the change from
with capture_stdout() as self._output_file:
to
with capture_stdout() as output_file:
just aesthetic or is there something else that I am missing?

While trying to get test_captured_out_filter to pass, I made tweaks to stdout capturing. The change to with capture_stdout() as output_file: seemed to have worked. But judging from the latest test run: https://travis-ci.org/IDSIA/sacred/jobs/373846074, there may still be an error.


flet build windows error .

hi i try you code for windows build script yml
how to fix . i set flet in requirements.txt file

I made a video: https://youtu.be/ObO-D2TD_wo


[BUG] file not ignored with files_ignore option

Is there an existing issue for this?

[X] I have searched the existing issues

Does this issue exist in the latest version?

[X] I'm using the latest release

Describe the bug?
I made three changes in my repo:

made some changes to looker-tests.yml (this is my GitHub Action file)
created a new file asdf.view.lkml
made some changes to blah.view.lkml

In my GitHub Action file:
- name: Get changed files
      id: changed-files
      uses: tj-actions/changed-files@v31
      with:
        files: |
          *.view.lkml
        files_ignore: |
          *.yml

The format is a bit skewed but the yaml file is good (validated through a validator).
Result: (from GitHub Action log)
Resolving repository path: /home/runner/work/my-repo/my-repo/.
  Retrieving changes between d7e13fe4b04934c06de9b4039be10379d0c78a22 (main) → eea8f209a1ad437fb925af42140104e5271b52af (lams-test-05)
  Getting diff...
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory

I also have a secondary step to echo the files changed. It shows nothing.
However, it works if I remove the with options:
- name: Get changed files
      id: changed-files
      uses: tj-actions/changed-files@v31

To Reproduce

in ubuntu-latest and my company repo (however cannot share it sadly)
configuration in above description
run GitHub Action for each pull_request into main

What OS are you seeing the problem on?
ubuntu-latest or ubuntu-20.04
Expected behavior?
should display a list of files changed and created
Relevant log output
Resolving repository path: /home/runner/work/my-repo/my-repo/.
  Retrieving changes between d7e13fe4b04934c06de9b4039be10379d0c78a22 (main) → eea8f209a1ad437fb925af42140104e5271b52af (lams-test-05)
  Getting diff...
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory
  grep: : No such file or directory

Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@markus-zhang-unity Can you include a more detailed log output with debug enabled (This requires a rerun of the workflow)


Adding Count to Query Parameters of Reweets service

Hello 👋🏾 , I noticed that you were missing the count parameter when adding parameters to the retweets service and, it caused the API to return a random of retweets even if the count was specified. I hope this helps 🙂

Thanks for the great PR! I will update the pub version with the fix in the next couple of days :)

Thanks for your help!


[benchmark] Reduce unreasonable setup times

This PR reduces setup time of 3 benchmarks that took unreasonably long to prepare their workloads. It brings them in compliance with the new BenchmarkDoctor rule: setUpFunction should take reasonable time (no more than 200ms). More details in the individual commit descriptions.

@eeckstein Please review 🙏

@swift-ci benchmark

Build comment file:
Code size: -O

TEST
OLD
NEW
DELTA
RATIO

Improvement

DictionaryKeysContains.o
15075
12323
-18.3%
1.22x

Performance: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

DataCount
37
40
+8.1%
0.93x (?)

Code size: -Osize

TEST
OLD
NEW
DELTA
RATIO

Improvement

DictionaryKeysContains.o
14155
11827
-16.4%
1.20x

How to read the data
The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false alarms. Unexpected regressions which are marked with '(?)' are probably noise. If you see regressions which you cannot explain you can try to run the benchmarks again. If regressions still show up, please consult with the performance team (@eeckstein).

Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@swift-ci smoke test


Feature: Multi Language Support

Summary
This pull request addresses issue #72 by implementing multi-language support across the website.
Changes

Language Dropdown: Introduced a dropdown menu that supports 9 languages: English, German, French, Spanish, Italian, Portuguese, Hindi, Simplified Chinese, and Traditional Chinese.
Localization Files: Added a locale folder containing JSON files for each supported language.
Translation Logic: Implemented translation logic using the i18n framework. All related functions are located in locale/languageUtility.ts.
Text Insertion Format: Updated various files to comply with the new format for text insertion.
Dynamic Categories: Refactored data/categories.ts into a function to facilitate translation. All necessary logic has been implemented.
Responsive Footer: Modified the footer layout to transform into a flex-col structure on mobile devices, ensuring adequate space for the language dropdown.

All changes have been tested. The page reloads to update the text strings to the new language
Contribution
This pull request resolves #72.

All translations were done in the website:https://translate.i18next.com

If needed to implement other languages, I can implement before merging

@rodriveiga01 Thank you so much for your contribution. It might take some time to review it as I don't have much time for the next 2 days. I hope you'll understand

Of course, take your time. Then let me know that you think

We need to cross-check different language content too. We can't rely on a single tool. @rodriveiga01 @dotslashbit

@omjogani Can you suggest some other ways to cross check?

@omjogani I agree on cross checking but do you mean like testing various translators or other thing?

@omjogani I agree on cross checking but do you mean like testing various translators or other thing?

Either we get tested by local people, who know that language very well OR another option could be Comparing translation with different tools.

I use camelCase in variables and functions and PascalCase on class and other important things

@dotslashbit I think it can go for production now

I use camelCase in variables and functions and PascalCase on class and other important things

That's convention, I mean to say meaningful naming.

@dotslashbit I think it can go for production now

We are good to merge @dotslashbit :green_circle:

@rodriveiga01 Thank you so much for your contribution, it really means a lot and @omjogani I really appreciate your efforts into reviewing all these PRs, your experience is really helping this project.
 I can't be more lucky than this 😊

I just want to help and this seems a great project to begin to contribute in open source. Let's continue to improve


Areas aren't enabled on restart

How to reproduce:

draw an area (I used box)
save area (Save Area... on Spatial menu - appears after lower right on draw), set title
note that new area is shown on Areas tab in Layers menu, and is enabled (ticked)
reload
note that new area is shown on Areas tab in Layers menu, but is no longer enabled
note that new area is not shown on map

I haven't dug far enough to work out if its not saved or not loaded (or both).

I believe this is by design to prevent infinite crashing on refresh. If you load too much data to the point the application crashes, on re-load it wont attempt to load the same data that crashed it.
Maybe if we can find a better way to address that issue, we can re-enable areas on refresh.
@wallw-bits  / @schmidtk

Greg is correct, this was by design. Given the temporal component to our queries, it isn't guaranteed (and quite unlikely in most of our users' cases) that the same data will be pulled each time the application is loaded. Even with the same filters/spatial queries, the temporal component will change the data volume.
If this behavior is added, I would recommend making it opt-in or something that can be configured on a layer-by-layer basis. For example, layers that do not require a spatial query to load are negatively impacted by this behavior. They will almost certainly load more data when the app is reloaded and query areas are disabled.

OK. I was treating the area as just being a named AOI, and using it to send to an upstream service that does my track filtering.
I'll find another way - perhaps a new layer. It was nice being able to use the existing drawing capabilities though.


Some text do not have a changed only an added date

When using the new units API and getting the translations via "changed:>=YYYY-MM-DD" you will not get all translations wanted. Translations which were only once touched get only an added date. So, those translations will not be fetched.

The fix is to query for both colums:
state:>=translated AND (added:>=1990-01-01  OR changed:>=1990-01-01)


Cannot access Console due to Registered callback does not match with the provided url Error when port offset is changed for the server

How to reproduce:

Setup postgres 11.5 as the primary db
User store store configured for database_unique_id
Go to deployment.toml and set port offset as 1

[server]
offset = "1"

Up the server and try to access console with https://localhost:9444/console

Getting below error in the UI

Server warning
[2022-01-11 12:37:19,883] [8e6cbd57-33a3-44d9-99b1-828c531b0506]  WARN {org.wso2.carbon.identity.oauth2.OAuth2Service} - Provided Callback URL does not match with the provided one.

Observation
Login to manegement console > List sevice providers > check oauth callback url for application console
Even though port offset changed by 1 these call back urls does not get updated automatically. Hence getting this error

Environment information (Please complete the following information; remove  any unnecessary fields) :
5.12.0 alpha 9
postgres 11.5
chrome 65
jdk 1.8.0_291
Ubuntu 20.04.3 LTS

@ShanikaWickramasinghe In 5.11 also, we need to change the callback URL manually. And it is not good to change the callback URL automatically .
https://stackoverflow.com/questions/65353663/myaccount-and-console-apps-in-wso2is-5-11-0-are-not-working-when-the-server-star/65354774#65354774

@ShanikaWickramasinghe In 5.11 also, we need to change the callback URL manually. And it is not good to change the callback URL automatically .
https://stackoverflow.com/questions/65353663/myaccount-and-console-apps-in-wso2is-5-11-0-are-not-working-when-the-server-star/65354774#65354774


Stubbed components slots aren't been rendered when 2 deep.

I put together a test case to show what I mean. It is very difficult to describe it in words. Essentially the produced snapshot of the test is incorrect. It should include all stubbed components and their slot contents as well.
https://github.com/rikbrowning/vue-test-utils-next/commit/53a0a13dc65935b45d63ba0abbb7179811eb7670

I did some digging around the code and think I may have found the issue.
When creating a stub we are creating a render function and passing the ctx.$slots in directly. The issue here is I think that any child slots inside that stub are not getting passed through the vnodeTransform and therefore not being rendered correctly.
I changed the render function to the follow:
  const render = (ctx: ComponentPublicInstance) => {
    const slots = ctx.$slots
      ? Object.keys(ctx.$slots)
          .map((k) => ctx.$slots[k])
          .map((f) => {
            if (f) return f()
          })
      : []
    return h(tag, ctx.$props, renderStubDefaultSlot ? slots : undefined)
  }

and it started rendering out stubs inside of the first stub.
I am sure that code could be far neater, I apparently suck at writing typescript, but I think that we need to call the slot functions before passing them into the h function. Reading the examples in the vue docs they all seem to call the slot function before passing the result to the h function.

I have taken a stab a reworking renderStubDefaultSlot, the issue being that it doesnt really provide full backwards compatibility with v1.
I pushed a commit https://github.com/rikbrowning/vue-test-utils-next/commit/d9309d48264031ec83a9211c8baced8f5e87a088 and I am looking for feedback.
renderStubSlot can be a boolean or an object. When false nothing is rendered in the slots. When true all slots passed in are rendered. Note that slots that do not exist in the component you are stubbing will still be rendered. This may cause some false positives by rendering slots that won't actually be rendered in the browser. When an object you can specify slot property values into the slots. Essentially allowing you to stub slot prop values.
 config.renderStubSlot = {
        'component-with-slots-stub': {
          scoped: { boolean: true, string: 'test' }
        }
      }

The above config will pass in { boolean: true, string: 'test' } to the scoped slot of component-with-slots-stub.
Thoughts?

I didn't get a chance to look at the reproduction or look into this deeply yet, but

doesnt really provide full backwards compatibility with v1

Is going to be a blocker. We have renderStubDefaultSlot for this exact reason - backwards compatibility.
Issues like this come up a lot - ultimately, the purpose of shallow is to stub things. If you want a full DOM tree, I'd generally recommend using mount.

@lmiller1990 with regards to the backwards compatibility. v1 would render all slots in a stub not just the default one. Now in v2 only the default gets rendered with the renderStubDefaultSlot option. The feature would be to extend that option (I would suggest renaming) to render all provided slots in a stub.

Please give me a day or two to go over this and really understand the implications. Like you said, this is quite hard to "explain", but the code sample you've provided will help a lot. Thanks!
I try to take things to do with stubs pretty cautiously, since they've caused a few unexpected breaking changes in the past.

I'm experiencing the same issue. I thought I could solve the issue by doing something like
      global: {
        stubs: {
          AppLayout: {
            template: "
<slot name='left'></slot><slot name='right'></slot>
"
          }
        }
      }

But my snapshot renders with
Received:
I know I've had success with this approach in the past.

@rikbrowning thank you
My 2¢ here since I'm working for a month on compatibility layer beween v1 and v2: I really love current behaviour and I think it is worth to keep it.
The reasoning is simple - IMO the library should not provide an easy way to shoot yourself in a leg by testing something which never appears in real world output and as you've mentioned in your commit - your approach allows user to build assertions vs non-existent slots when using renderStubSlot true
Users who are migrating from v1 to v2 could provide an intermediate layer (by wrapping mount) to make stubs render all slots if needed. This will be a bit more troublesome for shallowMount case, but I really think that benefits of building a safer v2 outweigh our migration pain

@xanf sorry for my delayed response.
I was thinking about this more last night and do we not already allow users to put props on stub components which the stub component might not accept? In which case how is that different from rendering slots that might not get used. In fact I would make the case that rendering all the slots allows the user to ensure that what they are actually passing through their slots matches their expectations. Now whether the stubbed component uses those slots is really up to that component. In which case using mount would be the functionality that you want not shallowMount.
If we really wanted to introduce safety we should allow configuration of slots that a stub has and render those out, thus matching reality a lot closer than only allowing rendering of the default slot.
One point I would like to call out is the documentation on upgrading from v1 https://next.vue-test-utils.vuejs.org/migration/#shallowmount-and-renderstubdefaultslot This documentation doesn't explicitly highlight that any slot other than the default will not work even when enabling the new config property. Maybe perhaps suggest the recommendation of using mount to render deeper slots?

^ Updating docs is always a good idea, if you want to make a PR improving them, that'd be great.

I want to use this but can't find it anywhere in the docs. Does anyone have an example for how to use it? I tried setting config.global.renderStubDefaultSlot = true at the top of my test file and it didn't have any effect, the slot isn't rendered. I also tried it in beforeEach()

I am not sure that is supported / possible rn @rocifier, can you rework your component (or avoid the need to stub/mock)?

@lmiller1990 with regards to the backwards compatibility. v1 would render all slots in a stub not just the default one. Now in v2 only the default gets rendered with the renderStubDefaultSlot option. The feature would be to extend that option (I would suggest renaming) to render all provided slots in a stub.

This what we are experiencing too.
Is there any movement on this issue?
Just to reconfirm:

v1 would render all slots directly inside the shallowMounted component
v2 renders none of those slots
v2 (with option renderStubDefaultSlot as true) the default slot is rendered. But not the others.

The docs don't indicate this is the case and it's not listed as a breaking change.
Is the suggestion really to just use mount? This isn't a 1:1 switch and there's legit reasons why now mounting all the children & running their JS isn't what you'd want.

Here's my solution for named slots content:
https://stackblitz.com/edit/vitejs-vite-w7qqun?file=tests%2FHelloWorld.test.ts
I took my inspiration from the stubComponentsTransformer.ts file:
https://github.com/vuejs/test-utils/blob/d7e3c2fb9b89592ae0db8f4806d332c8cea6c78e/src/vnodeTransformers/stubComponentsTransformer.ts#L91
I used config.plugins.createStubs to override the default and resolve all stubbed component slots.
vitest.setup.ts
import { createStub } from './tests/utils/stub';
import { config } from '@vue/test-utils';
import { defineComponent } from 'vue';

config.global.renderStubDefaultSlot = true;

config.plugins.createStubs = ({ name, component }) => {
  return defineComponent({
    ...createStub(name, component),
  });
};

stub.ts (I had to copy some functions from stubComponentsTransformer.ts because they are not exposed)
import type {
  ComponentObjectPropsOptions,
  ComponentOptions,
  ComponentPropsOptions,
  ConcreteComponent,
  VNodeTypes,
} from 'vue';
import { h } from 'vue';

/**
 * @see https://github.com/vuejs/test-utils/blob/d7e3c2fb9b89592ae0db8f4806d332c8cea6c78e/src/utils/vueShared.ts#L1
 */
const cacheStringFunction = <T extends (str: string) => string>(fn: T): T => {
  const cache: Record<string, string> = Object.create(null);
  return ((str: string) => {
    const hit = cache[str];
    return hit || (cache[str] = fn(str));
  }) as any;
};

/**
 * @see https://github.com/vuejs/test-utils/blob/d7e3c2fb9b89592ae0db8f4806d332c8cea6c78e/src/utils/vueShared.ts#L18
 */
const hyphenateRE = /\B([A-Z])/g;
const hyphenate = cacheStringFunction((str: string): string => {
  return str.replace(hyphenateRE, '-$1').toLowerCase();
});

/**
 * https://github.com/vuejs/test-utils/blob/d7e3c2fb9b89592ae0db8f4806d332c8cea6c78e/src/utils.ts#L131
 */
const isComponent = (component: unknown): component is ConcreteComponent =>
  Boolean(
    component &&
      (typeof component === 'object' || typeof component === 'function')
  );

/**
 * @see https://github.com/vuejs/test-utils/blob/d7e3c2fb9b89592ae0db8f4806d332c8cea6c78e/src/vnodeTransformers/stubComponentsTransformer.ts#L45
 */
const normalizeStubProps = (props: ComponentPropsOptions) => {
  // props are always normalized to object syntax
  const $props = props as unknown as ComponentObjectPropsOptions;
  // eslint-disable-next-line unicorn/no-array-reduce
  return Object.keys($props).reduce((acc, key) => {
    if (typeof $props[key] === 'symbol') {
      return { ...acc, [key]: [$props[key]?.toString()] };
    }
    if (typeof $props[key] === 'function') {
      return { ...acc, [key]: ['[Function]'] };
    }
    return { ...acc, [key]: $props[key] };
  }, {});
};

type SlotProps = Record<string, Record<string, unknown>>;

export const createStub = (
  name: string,
  component: VNodeTypes,
  slotProps: SlotProps = {}
) => {
  const anonName = 'anonymous-stub';
  const tag = name ? `${hyphenate(name)}-stub` : anonName;

  const props = isComponent(component)
    ? (component as ConcreteComponent).props
    : {};

  return {
    name: name || anonName,
    props,
    setup(props, { slots }) {
      return () => {
        const stubProps = normalizeStubProps(props);
        const resolvedSlots = slots
          ? Object.keys(slots).map((k) => {
              const slot = slots[k];
              if (slot) {
                return slot(slotProps[k] ?? {});
              }
            })
          : [];
        return h(tag, stubProps, resolvedSlots);
      };
    },
  } satisfies ComponentOptions;
};

We can then use shallowMount and override some component stubs to specify slot props.
const wrapper = shallowMount(HelloWorld, {
      props: {
        msg: 'the message',
      },
      global: {
        stubs: {
          Parent: createStub('Parent', Parent, {
            child: { message: 'Slot message' },
          }),
        },
      },
    });


Fix engima

This PR address this comment in Slack

We will know the bad ids only after we run the parser. I would create the bad_id file within ToolRunner.parallel_single_execution, so that once the tool is finished we would know there are bad genomes.

Not understanding here - the microtrait specific code understands whether the ID is bad or not, so doesn't it have to write the file?

No it doesn't have to. I am saying, as current code stands, we only know the bad ids once we run the parser (tool runner just skips the bad genome). But tool runner can collect bad genomes and write to a file so that we know it immediately after execution.

I must be missing something - the tool runner writes out an error file for the ID here: https://github.com/kbase/collections/pull/323/files#diff-93fe7edc56038d1dac9d90291799622f2dd22ba247b451665c83c97e99c5da63R73-R74
So we do know which IDs are bad without having to run the parser right? Or are you asking for something else?

Two different things. One is for positive identification for each bad id, Tian is saying gathering all bad ids and write to a file.

How would that work given there could me many simultaneous ToolRunner instances running on different NERSC nodes and there's only one batch directory for all of them?


Add "bool" to GDScript reserverd keywords

Noticed that "bool" wasn't highlighted when used like export(bool) var is_xy = false

Hehe, this PR has more tags than lines changed :smile:


[conhost] Fix WM_GETDPISCALEDSIZE handler, use provided size instead of current window size

Summary of the Pull Request
The conhost window uses the window message WM_GETDPISCALEDSIZE to scale its client rect non-linearly. This is done to keep the rows and columns from changing when the window changes (font sizes scale non-linearly). If you size the window such that the text perfectly fits the width (and cursor is on the first row of the next line), dragging the window between monitors with different DPIs should NOT change how much of the text fits on each line.
https://learn.microsoft.com/en-us/windows/win32/hidpi/wm-getdpiscaledsize
The current code is assuming that the size that should be scaled is the current window size. This is sometimes the case, for example when dragging a window between monitors, but it is not always the case. This message can sometimes contain a size that is different from the window's current size. For example, if the window is maximized, minimized, or snapped (the size in these cases is the normal rect, or restore rect).
The msdn page above does (now) call this out, though it is possible that this was added after this conhost code was added...

The LPARAM is an in/out pointer to a SIZE struct. The In value in the LPARAM is the pending size of the window after a user-initiated move or a call to SetWindowPos. If the window is being resized, this size is not necessarily the same as the window's current size at the time this message is received.

This incorrect assumption can cause the conhost window to be unexpectedly large/small in some cases. For example:

Requires two monitors, set to different DPIs.
Size window somewhat small, and type text to fit exactly the width of the window, putting cursor on first row of next line.
Win+Left (or otherwise snap/arrange the window).
Win+Shift+Left (migrates the window to the other monitor)
Win+Shift+Down (restore window, can also click maximize caption button twice, maximizing then restoring)

Expected: The window should restore to the original logical size, with the text perfectly fitting one line.
Actual: The window restores to another size; it is the snapped size on the original monitor (the size of the window at the time it was changing DPI, in step 4 above).
References and Relevant Issues
This message (WM_GETDPISCALEDSIZE) is not widely used, but it is used by dialogs (user32!CreateDialog), since they also size their windows using font sizes. The code in this change borrows from the code in the dialog manager, user32!GetDialogDpiScaledSize.
Detailed Description of the Pull Request / Additional comments
The WM_GETDPISCALEDSIZE message contains the new DPI and the new size, which is an in/out parameter. It starts as the new window size, scaled to the window's current DPI, and is expected to be scaled to the new DPI.
The client area (the part with the text) is NOT scaled linearly. For example, if the font at 100% DPI has a height of 7, it could have a height of 15 at 200%. (And if it did have a height of 14, linearly scaled, it would surely not be linearly scaled at 150%, since fonts cannot have a height of 10.5.) To pick the right size, we need to resolve the font at the new DPI and use its actual size to scale the client area.
To keep the amount of text in the window the same, we need to remove the non-client area of the window (caption bars, resize borders, etc). The non-client area is outside the area with the text, and its size depends on the window's DPI and window styles. To remove it and add it back, we need to:

Reduce the provided window rect size by the non-client size at the current DPI.
Scale the client size using the new/old font sizes.
Expand the final size by the non-client size at the new DPI.

Validation Steps Performed
PR Checklist

[ ] Closes #xxx
[ ] Tests added/passed
[ ] Documentation updated

If checked, please file a pull request on our docs repo and link it here: #xxx

[ ] Schema updated (if necessary)

(Marking this one blocked per e-mail)

@microsoft-github-policy-service agree

@ekoschik please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement


Crashes on startup

Bot in launched sucessfully, auto summons to correct channel and then downloads and completes the download of a song off the auto playlist.
Error is as follow:
[Download] Started: https://www.youtube.com/watch?v=QKnqgx1Ytsk [Download] Complete: https://www.youtube.com/watch?v=QKnqgx1Ytsk Task exception was never retrieved future: <Task finished coro=<MusicPlayer._play() done, defined at /root/MusicBot-main/MusicBot/musicbot/player.py:209> exception=TypeError("create_ffmpeg_player() got an unexpected keyword argument 'before_options'",)> Traceback (most recent call last):   File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step     result = coro.send(None)   File "/root/MusicBot-main/MusicBot/musicbot/player.py", line 240, in _play     after=lambda: self.loop.call_soon_threadsafe(self._playback_finished) TypeError: create_ffmpeg_player() got an unexpected keyword argument 'before_options'
To me it looks like an ffmpeg player error but I don't know what to do to fix, restarting bot doesnt fix. Running review branch and is up to date as of 16:10 on Apr 21.

Update:
Reinstalling doesn't solve issue either. I deleted repo on my Ubuntu server and fetched from origin to make sure I had newest stuff. Still getting same error.
Running Ubuntu Ubuntu 14.04.4 x64 512 mb Memory 20gb disk from Digital Ocean

Issues were solved by talking to the people in the discord. Thanks for the help those two lovely people!


Service Request Automation for Microsoft Modern Workspace

What is Service Request Automation and Why is it Needed
Organizations of all sizes have been struggling with their Cloud Operations request management for years. The frequently raised similar kind of service requests contributes to higher service costs and unhappy customer. To pursue the digital aspirations of the enterprise, automation solutions hold the key. Fully automated platforms can be leveraged for end-to-end automation of service requests, thereby, reducing a lot of manual effort, which in-turn reduces the operational expenses of the organization.
Service request automation is, therefore, increasingly essential in today's fast-paced, digital-centric world. Automating service requests can help organizations streamline operations, improve response times, and optimize resource allocation. Let us break down the importance of service request automation as below:

Boosting Productivity: Instead of manually sifting through requests one by one, automation tools can manage and sort multiple requests at once, allowing staff to attend to more critical tasks.

Cost Efficiency: Think of automation as a one-time investment that pays off in the long run. With fewer manual processes, you'll often spend less on labor over time.

Handling Growth: As a business expands, the number of service requests can surge. Automation ensures you're prepared to manage this growth without constantly hiring more staff or expanding teams.

Always-On Service: While humans need breaks, an automated system doesn't. This means service requests can be acknowledged or even resolved anytime—day or night.

Consistent Quality: Automation follows specific rules and guidelines. This means every service request is tackled the same way, ensuring that all users get a consistent experience.

Immediate Responses: Instead of waiting for a human to acknowledge a service request, automated systems can provide instant confirmations, letting users know their request is being processed.

Better Use of Human Talent: By removing routine tasks from their plates, staff can focus on complex problems or tasks that require a personal touch.

Valuable Insights: With automation, you can easily collect data about the service requests you receive. This data can offer insights into user needs, peak times for requests, and areas that might need improvement.

Speedy Solutions: For standard issues, automation can provide quick fixes, meaning users don't have to wait long for solutions.

Reliability: Humans can occasionally overlook details or make mistakes, especially when overloaded. Automated systems, being rule-driven, reduce these oversights.

Transparent Tracking: Many automated systems log their activities. This not only offers insights into system performance but can also be crucial for keeping records for regulatory or quality purposes.

In essence, service request automation is like having a reliable assistant that handles routine chores swiftly and accurately, allowing the rest of the team to focus on more significant challenges and ensuring users get timely and consistent responses.
Reference architecture
Below is the reference architecture for the same.

Below is the process flow for the solution.

Pre-requisites and Steps required for Automation Framework Setup
To setup the automation framework, following are the pre-requisites and steps required to set up the service request automation process flow.
1. Application Registration

[ ] OAuth Provider - With details from Azure App Registration. Provide Client ID and Secret for authorization using Azure AD. Also provide the authorization as well as the token endpoints. This is used for triggering PowerShell Runbooks
[ ] OAuth API Script – This script is required to configure the OAuth Provider and is specifically
used to make a connection to Azure.
OAuth API Script.txt

2. Catalog Details
This will be needed only when the catalogs are not defined within the ServiceNow. In case the catalog items already exists, this step can be skipped.

[ ] Catalogs - High level request catalogs for requests and incidents. Catalogs represent area.
[ ] Category - Catalogs are created under Catalogs.
[ ] Catalog Items - Items are created under Category. They are the actual forms using which the requests are raised
[ ] Variables - They are part of Catalog Items and act as form fields

3. Workflows
Workflows are the business processes that are attached to the Requests, RITMs, SCTasks etc. for the business process flow. If the workflows are not defined, new workflow needs to be created for each service request, or existing workflow needs to be modified in case there is an existing workflow in place for end-to-end automations.
4. Users
Create User with Web Service Access Only and as Internal Integration User type only. This user will be required to access ServiceNow for request updates after the processing is done from Azure Automation
5. Outbound Rest Message

Endpoint -
https://management.azure.com/subscriptions/${sub_id}/resourceGroups/${rg_name}/providers/Microsoft.Automation/automationAccounts/${automationAcct_name}/jobs/${job_id}?api-version=2019-06-01
Http Method – Put method. Will be used to trigger the PowerShell Runbook
Authentication - OAuth 2.0
OAuth Profile - Select the OAuth Provider Profile created earlier

Scripted Rest API
After the process has been completed on the Azure Automation side, it sends back the updates to SNOW via the REST method. This REST URI is for the Scripted Rest API to perform updates to the requested item the corresponding and task.

Azure Configuration
1. Azure Active Directory App Registration for SNOW
Register app in Azure AD for SNOW request authorization. This is needed for communication between ServiceNow and Azure Automation

Azure Active Directory App Registration for Exchange Online
Register an application in Azure AD for Exchange Online. Provide this app ‘Exchange.ManageAs’ permissions within the API permissions.

Also, under Roles and Administrator, give this application “Exchange Administrator” role.
Under certificates and secrets, upload the .cer certificate
3. Create an Azure Automation Account
Create an Azure Automation Account for the Service Request Automation
- PowerShell Runbook
PowerShell Runbooks will be used for service request processing and post processing, it will send the updates back to
- Create shared resources
Create variables, and under certificates, upload the .pfx certificate created earlier as a part of the self-signed certificate. In production environment, however, we will need a valid certificate from the certificate authority.

4. Create Azure Key Vault
Create an Azure Key Vault and add the following secrets. Azure key vault is used to secure the credentials and other secrets and enables secure access. The key vaults can be used in cases where the scripts are run on Azure within the runbooks. In case of hybrid, we can use the encrypted feature of the runbook shared variables.

This is optional and the values within the Key Vault can be created as encrypted variables within
Shared Resources under Variables.

@neerajks77
Thanks for your feedback! We will investigate and update as appropriate.

@neerajks77
We are going to close this thread . if there are any further questions regarding the documentation, please tag me in your reply and we will be happy to continue the conversation.

Hi Ramanathan,
Good Morning!
I am really not sure as to the outcome of this submission. I got the
reference link to this page after I reported that I wanted to submit an
architecture in the Microsoft Architecture Center, but the page and the
links were not working. After I received the link, I created this
documentation as well as uploaded all the artefacts for review and
approval.
Having said that, please let me know if the submission has been approved or
needs further clarifications. Please let me know if you have any questions
or need further information.
Regards,
Neeraj
On Fri, 29 Sep, 2023, 7:28 am RamanathanChinnappan, <
@.***> wrote:

@neerajks77 https://github.com/neerajks77
We are going to close this thread . if there are any further questions
regarding the documentation, please tag me in your reply and we will be
happy to continue the conversation.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/architecture-center/issues/4231#issuecomment-1740212358,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJFKUOOHX6BIC7Q6JX7ZYZTX4YTNNANCNFSM6AAAAAA5FBGTTU
.
You are receiving this because you were mentioned.Message ID:
@.***>


Unify error response format

Replaces error=>String with errors=>Array error responses
Closes #351

cc @zenitraM I don't know if this may affect you, so just in case I prefer to bother you.

@alonsogarciapablo did you get to review this one?

@alonsogarciapablo ping?

Sorry @rochoa, I missed your mentions... Other than my comment: LGTM :+1:


MM-10700 - Updating image preview modal

Summary
MM-10700 - Updating image preview modal
Ticket Link
https://mattermost.atlassian.net/browse/MM-10700
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[ ] Ran make check-style to check for style errors (required for all pull requests)
[ ] Ran make test to ensure unit and component tests passed
[ ] Added or updated unit tests (required for all new features)
[ ] Has server changes (please link)
[ ] Has redux changes (please link)
[x] Has UI changes
[ ] Includes text changes and localization file (.../i18n/en.json) updates
[ ] Touches critical sections of the codebase (auth, posting, etc.)

Spinmint test server created at: http://i-03f0f75d9e71f9e14.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-03f0f75d9e71f9e14

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0a0013fa22c9f3b83.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-0a0013fa22c9f3b83

Spinmint test server destroyed

Waiting on merge to server PR to get test server going: https://github.com/mattermost/mattermost-server/pull/9003

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-033f86032f36798c1.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-033f86032f36798c1

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0d52b44cce6ec83d8.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-0d52b44cce6ec83d8

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server destroyed

Spinmint test server created at: http://i-06eeb7fa1a9c0a10b.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-06eeb7fa1a9c0a10b

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0804f5c0a997230f4.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-0804f5c0a997230f4

Spinmint test server destroyed

Looks great, thanks Asaad!

Spinmint test running for more than 7 days. This test server was terminated.


[5.7-beta][isolatedDeclarations][regression] Missing explicit type annotation false positive

🔎 Search Terms
explicit type annotation false positive isolated declarations
🕗 Version & Regression Information

This changed between versions 5.6.0 and 5.7.0-beta

⏯ Playground Link
https://www.typescriptlang.org/dev/bug-workbench/?target=7&noCheck=true&isolatedDeclarations=true&emitDeclarationOnly=true&ts=5.7.0-dev.20241010#code/PTAEAEGcBcCcEsDG0Bco4FcCmAoEEATLRAGwENYzp4B7AOzU133DpoGEALYga0dmx4w4LAFt40ACLFylavQDydEgE9+glvEg1y0LAWmkKVWnUjrmwsiRI0A7gClzoAGbXIliJE72AouOghLx87fwk9AgAxeBIsNDIAOgIE6EgcIPAXGKw6MlE40ETUnHhRAAcaWGhQAG8AFRUyrABfV1gaUVAAchcaGi6AbnSsAA8KqtBEehhXPtAAXlAACmhGrAB+NAamgEo0ADcaeAIFgD5a5qGgA
💻 Code
// @strict: true
// @declaration: true
// @noCheck: true
// @emitDeclarationOnly: true
// @isolatedDeclarations: true
// @allowJs: false
// @showEmit
// @showEmittedFile: a.d.ts

import {Type} from 'foo';

export const foo = (type?: Type): void => {};
                    ^^^^^^^^^^^ Parameter must have an explicit type annotation with --isolatedDeclarations.(9011)

🙁 Actual behavior
Error even though type annotation exists
🙂 Expected behavior
No error
Additional information about the issue
Sorry, I don't have time at the moment to bisect to the commit that introduced the regression

Based on some other recent issues I was looking at - this should report an error about lack of | undefined in the annotation.

Based on some other recent issues I was looking at - this should report an error about lack of | undefined in the annotation.

Interesting. Why is that so? Is that only when exactOptionalPropertyTypes is off?

Seems like a bug?
EOPT doesn't have any effect on parameters FWIW

Ah, it might be that the | undefined is required only when dealing with parameter properties (or however those are called). See https://github.com/microsoft/TypeScript/issues/60123 and https://github.com/microsoft/TypeScript/pull/60129
FWIW, this case here is likely also related to an unresolved type that is actually an error type (a special kind of any)


Please jax metal example with 64bit float support

.

Can you be more specific with what you mean by jax metal example? Also why do you need double (64-bit) precision?

I apologize, I had no time to finish the content, so I just added a dot(.)
To be more specific, I want to ask about the mnist example, I saw that both main.py and torch_main.py support metal backends, but jax_main.py doesn't support it. So I tried to install the jax-metal to test it on my end, and I saw that 64-bit is not supported. The reason why we need 64-bit is we are performing scientific codes requiring high-precision.

I see, so Jax may not support 64-bit. I would file an issue with Jax about that as we do not have any ties to the Jax Metal back-end.
If you are interested in higher precision in MLX, you can file an issue to the core repo. It's likely not a top priority for us, but may also not be that much work to have decent op coverage since most of our kernels are templated.


allow setting the BatchType for IMapper.CreateBatch - fixes CSHARP-410

Looks good, I'm adding batch type validation and I'll merge it.

I've added those checks to existing unit tests 3632f6c9032331dd79af7b001887619bb7ab00d4


Showing Rancher login screen is slow

Internal reference: SURE-5683
Reported in 2.6.3
Issue description:
Rancher Login screen and some screen is sometime slow, not always.
By watching debug screen, it spends always 42.x seconds.
It occurs on Windows 10 Google Chrome 107.0.5304.107 (Official Build, 64bit).
Windows 10 Edge 108.0.1462.54 (Official Build) (64bit) works fine.
By metrics, CPU and memory usage has no problem.
No network metrics is obtained.
Workaround: none
Actual behavior:
Rancher Login screen and some screen is slow.
Expected behavior:
Rancher Login screen and some screen is showed normally.
When the issue occurs, the login component spends 42 second.
Additional notes:

User cannot run on 2.6.9
Rancher server and downstream cluster are baremetal
Extensions disabled, barring Symantec Extension, and problem still occurs.

See JIRA for more info, but this is due to the request for the initial document load of dashboard taking many many seconds


Add a note about syntax toggle

Made in develop: https://github.com/HugoGiraudel/sass-guidelines/commit/396ffda32a1c3fca73765d1df175ae27f1aa53e9.


Dynamic- changes

48 to nfreq changes
added outputshape in the recalibration function

In order to make a pull request into the master branch, we would like to know what is the purpose of the changes, how they have been tested, and more detail.s


⚖ Register Validator: Test

Network Choice
drunemeton-1
Who are you?
I'm just testing the registering process.
Delegator address
okp41c7ex9676rf58qqxmplj6l7vl42anvd280458zx
gentx
{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","description":{"moniker":"your-moniker","identity":"6C36E7C076BFDCE4","website":"https://foo.network","security_contact":"validator@foo.network","details":"My validator"},"commission":{"rate":"0.050000000000000000","max_rate":"0.200000000000000000","max_change_rate":"0.010000000000000000"},"min_self_delegation":"1","delegator_address":"","validator_address":"okp4valoper1c7ex9676rf58qqxmplj6l7vl42anvd286jywu8","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"lRSVXJtlMF29/Qub0UZRq1sOy15hy2Z2oECrJQFzTTI="},"value":{"denom":"uknow","amount":"10000000000"}}],"memo":"dae0a32f2f92646a9587b28b8b24cbda22710799@<IP_ADDRESS>:26656","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Ar+cEbdK5Cz/vLXFtMQEkyR+Us64HETVTLGm9kiZldNA"},"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"sequence":"0"}],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""},"tip":null},"signatures":["SISzAAAaxXGsIVSUzWjP83/bqAq8kfRKyBmXMvt2TQ0FvxA9Z55fP7Ko30aJa63xKl3YJtjfA41oJUxtblUhVQ=="]}

😢 I couldn't process your request...

😉 Here is the corresponding PR: https://github.com/okp4/networks/pull/647

Closing as the test has been a success 😉


[WIP] feat: add solution_data table

There is something wrong with get_block currently, where the fetched block has more tables than the original block. Will look into it tomorrow.
Closes #56
Closes #55

The tests are locally passing. Marking ready for review but tests will fail until there is a new release of essential_base and the dependencies in this PR are updated to the new version instead of git dependencies.


Move specific projects ch5 to ch6

moved content at the bottom of chapter 5a under Specific Projects to chapter 5b under Specific Projects.


Message flags

Proposed change
Add a message flags enum to NatsMsg to indicate important message states:

Message payload is empty
Messages is a No responders error message

Use case
Currently we rely on message Data being null to indicate that a message is empty which doesn't work reliably when it comes to value types. For example for int a 0 (zero) might mean an empty payload or actual 0 being passed as payload. So we can't rely on the default values.
Also no-responders message from the server has a specific format which can be detected much easier and flagged while building the message.
Since NatsMsg is a struct we should be careful not to bloat it hence we can use a flags enum to minimize the impact.

Closing in favor of #277 and not to stretch already too big NatsMsg struct any further.


Changed DDSTextureLoader to initialize texture with correct subresource count using arraySize.

CommandContext::InitializeTexture was only being given mip count which resulted in only the first texture in a texture array / cubemap to be uploaded.

Thanks for the pull request.
If I can bother you to update one small thing... the Direct3D API refers to subresources as a single word instead of as two words, so if you could rename the variable "subresourceCount", I will pull this in.

No problem, all fixed up.


Left Margin doesn't scale well with body content

Describe the bug
Since Left margin element is an independent html component from the body content it doesn't scale as the body content size is increased beyond one page as indicated by the pink margin which stops at the end of first page in preview.
Also when the size of left margin is increased beyond one page the scroll position of left margin can be different from the scroll position of body content which leads to confusion while writing as well as when pdf generated depends upon the scroll position of left margin.
To Reproduce
Steps to reproduce the behavior:

Go to the project site
Add content to page such that it goes beyond one A4 page
Now Add content to left margin such that its size increase beyond one page
Then scroll the left margin a little down such that the sroll bar is somewhere in the middle position
Generate PDF

Expected behavior
If the current preview design is maintained as it is then the left margin element should increase its size as the body content size increases making the pink border extend to the next page in preview. Also, while generating pdf the scroll position of left margin shouldn't affect the final result.
If the current design is allowed to change then as per me whenever the page size increase beyond A4 the current page should not increase its size rather a similar A4 size page should be concatenated to the existing A4 pages and control should be transfer to the next page.
Screenshots

Pink border of left margin doesn't scale

Scroll position dependency
Preview:

PDF generated:

Desktop (please complete the following information):

OS: Windows 10
Browser Mozilla Firefox
Version 79.0 (64bit)

Additional context
Related Issue: https://github.com/saurabhdaware/text-to-handwriting/issues/81
Query
why we are adding a div element inside left margin container whenever a carriage return is pressed to enter the next line? Can't we just add the content in a single div element as done with body content?

why we are adding a div element inside left margin container whenever a carriage return is pressed to enter the next line? Can't we just add the content in a single div element as done with body content?

In that case, it will all be a same textarea so to write after margin, you will have to keep adding space. Also copy-pasted text will overflow to margin so they are different divs right now.
I think the issue with separate scrollbar in left margin will be solved if we solve #81
Not scaling till the end is an issue for sure! Keeping this open for that.


ci: adding Kokoro build config of Linkage Monitor for api-common-java

Part of https://github.com/GoogleCloudPlatform/cloud-opensource-java/issues/1041

This is Gradle too. Closing this for now.


A shorter unix-opts:define-opts for "common-case" worth the code?

The following macro
(defmacro expand-opts (&rest descriptions)
  "Each description should be of the format (name-as-keyword description &optional parser)."
  `(opts:define-opts
     ,@(let* ((used-short-names (make-hash-set))
              (get-unique-short-name
               (lambda (name)
                 (iter (for ch in-string name)
                       (when (and (not (hs-memberp used-short-names ch))
                                  (alpha-char-p ch))
                         (hs-ninsert used-short-names ch)
                         (return ch))
                       (finally (error #?"Could not find a unique short name for ${name}"))))))
         (iter (for description in descriptions)
               (destructuring-bind (name description &optional parser short) description
                 (let ((name-string (string-downcase (symbol-name name))))
                   (collect `(:name ,name
                                    :description ,description
                                    :short ,(or short (funcall get-unique-short-name
                                                               name-string))
                                    :long ,name-string
                                    :arg-parser ,parser))))))))

lets me use something shorter instead of unix-opts:define-opts:
(expand-opts
 (:help "Show this help text.")
 (:port "Port number on which to run the server." #'parse-integer)
 (:swank-port "Port number at which to start swank [default: 8080]" #'parse-integer)
 (:debug "Run in debug mode if specified" #'identity))

This doesn't take into account the case for :meta-var and :required, which I'd hope isn't "common case" either, or may be :required is, and can be easily accomodated.

that's something I wanted to do in a project of mine, thanks for sharing.

Hi @digikar99,
I agree that this would be useful, is it OK if I use the specified macro as a starting point for something in the repo? This would mean you release the code as something MIT licensed.

Oh yes, sure! I've in fact added to a branch on my fork, along with a few other things - and can issue a PR.

Oh please do! Sorry I haven't been active for some while, I'm trying to catch up now :)

Oh yes, that's alright; all of this is volunteer work, with no obligation for us to do it; it's okay to have other tasks that require our more immediate attention :D.
The PR is at #26. (For anyone who stumbles upon this thread in the future.)


[OSim KIT] 24.08 Release Checks

This issue tracks all relevant release checks for your KIT.

[!IMPORTANT]
Follow the guidance on how to use the templates.

Release Info
Please provide information on what you want to be included in the Eclipse Tractus-X release.
If you are not owner of this issue, please provide the information as comment to the issue.
Have your prepared content reviewed by a professional peer group before submitting it for committer approval.
Best practice: have a professional Peer review your prepared content before you submit for expert approvals.
Please link the open or merged PR that includes the changes.
Version to be included in Eclipse Tractus-X release: 3.0.0

KIT semantic version of change log.

Date of KIT publication must be aligned with overall release date.

https://github.com/eclipse-tractusx/eclipse-tractusx.github.io/pull/962

General

[x] CHANGELOG available and maintained
[x] Tractus-X Release Guidelines fulfilled

Adoption View

[x] Vision and Mission statement present
[x] Business Value statement present
[x] Semantic Models linked and described
[x] Logic / Schema available and described
[x] Business Process documentation available
[x] Access and Usage Policies documented
[x] Standards submitted / published via the Catena-X e.V. process and linked with current version (e.g., semantic models)
[ ] Tutorials available
[x] White Paper available
[x] Notice CC BY 4.0 licence statement available

Development View

[x] API Specification published on SwaggerHub
[x] Protocols available (e.g., dataspace protocol)
[x] Sample Data available
[x] Architecture integration into the overall Catena-X architecture and / or product architecture (e.g., Arc42) available.
[ ] Reference Implementation available

Operation View

[ ] Setup Guide available (e.g., installation guides)
[ ] Deployment Script available (e.g., helm charts)

Helpful Links

CX - 0133 Online Control and Simulation v2.0.0

/cc @theodorisinger

Hi @dominikoeh ,
thank you for all your efforts :), as the PR has been approved and already merged, I changed the status to done.


[CSL-928] Make UnsignedVarInt decode fail for non-normalized varints

Fix for CSL-928: allow only unambigious varint decode/encode

To be merged after check passed


Code Playground is broken if used with lowercase language that matches one of the pygment languages

For example, try creating a Code Playground with the language "rust". Please make sure that it's in all lowercase, and make sure you don't select from the typeahead suggestion for "Rust (rust, rs)".
Save it. Then try to use it. Notice it doesn't work.
CZO context

Thanks for catching this, @tridentpancake !
I think typing in rust should work just as if you had selected Rust (rust, rs) from the typeahead. Does that sound right?


default Timed traffic light

Fixes #540
Fixes #5
Updates #324

added Mass edit modifier key (ctrl) for creating a default timed traffic light.
Updated tutorial message on https://crowdin.com/translate/tmpe/42/en-en#8862
Added tooltip keybind in the code but I don't know how to add a new key on crowdin.

I created this city to test my timed traffic light in all cases (that I could think of).

Does the code verify that when a Timed TL is created, the directions are actually possible? By checking the lane connectors, lane arrows?

@kvakvs

Does the code verify that when a Timed TL is created, the directions are actually possible? By checking the lane connectors, lane arrows?

I call the LaneArrowManger.SeparateLanes() to setup turning lanes. This function does nothing on the segments that have the lane connector.
If you try it, you will see that it works just fine. I did actually thought this through. If one puts a green light toward a direction that cannot be used:
A) The user will not see it because the already existing GUI render overlay code hides such directions.
B) It causes no functional issues. All the happens is that cars will not go toward that direction.
Note that at each step I give a green light to one of the connected road segments to go to all directions. So no change of logic is needed if lane connector is used.

Tooltip.Keybinds: Auto TL not found. I have no idea how this works.

I added wiki documentation here:
https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/issues/540#issuecomment-558447480

Been slightly confused. Is 554 (this) and 540 are the same problem but one is the issue and another is the pull request? Please add "Fixes #540" in the description, so when this is merged, the other one will be closed too.

Was wondering about a way to make this algorithm testable
(i.e. separate it from the game engine) and then create a simple unit test?
And then you can call the same auto TL engine from the test. Maybe read some text inputs with junction configurations and then check that output TL parameters are what we expect.

@kvakvs

Was wondering about a way to make this algorithm testable

do you mean as part of this PR or another one?

Been slightly confused. Is 554 (this) and 540 are the same problem but one is the issue and another is the pull request? Please add "Fixes #540" in the description, so when this is merged, the other one will be closed too.

This is just the first phase. There are more features discussed for example inhttps://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/issues/540#issuecomment-552201203
Do you think we should continue working on those in the same issue (#540) or should I create a new issue?

I added in the translations. Is the code ready for approval? 😃

As you're steaming with new other ideas, i'm afraid once this is merged you won't have time to rework it and make it testable. Might as well consider that possibility now. If too complex i can let it slip for now, you might still want to do it later.
The idea is that you make algorithm not call any game or TMPE code, take some data structures as inputs, and output some data structures which will then be applied by the TMPE code to the game. This will allow us simulate those inputs during the test and check the outputs as they are simple numbers and structures now instead of game data.

@krzychu124

I have no idea how you created those translation files without building TM:PE Crowdin project, but they are wrong 😄 All translation file are generated, we don't touch those files manually. I will push new translation to your branch 😉

Thanks. I downloaded the csv file from crowding and copied it in place of the already existing translations.

I am surprised they are ""all wrong" it worked for me when I tested it.

Maybe we should remove the manual download option on crowdin?

@aubergine10

Maybe we should remove the manual download option on crowdin?

That and wiki explanation. I still don't know how to do it.

@kvakvs

As you're steaming with new other ideas,
Thanks!

i'm afraid once this is merged you won't have time to rework it and make it testable. Might as well consider that possibility now.

There is going to be a second phase to add more clever quick-setup for timed traffic lights. I can add the tests then.

If too complex i can let it slip for now, you might still want to do it later.

Thanks I do prefer you to let it slip. Right now I have a lot of questions. I have no idea about how to implement unit tests, why do we even need these tests when we can test it on a city, why do you call  a test this big a "unit test", etc. Doing it later gives me time to think/discuss all of these.

Do you think we should continue working on those in the same issue (#540) or should I create a new issue?

Once this PR is merged, #540 will automatically be closed; so any new stuff or future additions should go in new issue.

To resolve conflicts pull master branch and choose all translation files to overwrite yours.

OK i resolved the merge conflicts as you said.

I'll do some testing on this tomorrow.

Note to self: Also, I need to create wiki page with docs

❌ I'm not seeing the Ctrl+Click mentioned in the tooltip:

✔ It is, however, mentioned in the adviser text.
❌ Upon ctrl+clicking an existing junction (that had traffic light and also junction restrictions), I got this error:

Will try and gather more infos on the error (can't see anything of use in the logs yet).

For ref, here is the junction I was trying to customise:

Tested on several more junctions:

⚠ Any junction with 1-way roads throws up the empty info box
✔ Works fine on junctions that have only 2-way roads

Following image shows where it works and where it doesn't:

@aubergine10  Also, it doesn't seem to factor in lane connectors (maybe those could be covered by later PR?)

Yes it does. Just like lane separation quick-edit feature it ignores noes/segments with lane connections (still puts the Timed traffic light but does not separate turning lanes).  Maybe it can be more clever see #575 . But not in this PR.

@aubergine10 I'm not seeing the Ctrl+Click mentioned in the tooltip:

The English translation for for keybind was empty
"Tooltip.Keybinds:Auto TL","","","","","","","","","","Ctrl+Klik: Szybka instalacja","","","","","","","Автоматичне створення світлофора з таймером"	C:\Users\dell\source\repos\Cities-Skylines-Traffic-Manager-President-Edition\TLM\TLM\Resources\Translations\Menu.csv	21	1

Its was also empty in crowdin. I just added it: https://crowdin.com/translate/tmpe/24/en-en#8945
@aubergine10 @kvakvs @krzychu124 I do not know how to download translations the right way. Can anyone please help me?

@aubergine10 ❌ Upon ctrl+clicking an existing junction (that had traffic light and also junction restrictions), I got this error:

I cannot reproduce this problem. I have a junction with junction restrictions and existing traffic light and i can quick-setup timed traffic light:

and this happens if I add a traffic light to a a junction that already has traffic lights ( this is of course correct behavior) :

@aubergine10 ❌ Upon ctrl+clicking an existing junction (that had traffic light and also junction restrictions), I got this error:

Again a matter of translation key being empty. TTL quick-setup is not supported here. There has to be at least 3 exits from the junction. In here just add a simple traffic light. I don't see the need for timed traffic light. If you do then comment on #575
I will add all the missing English translations to crowdin. then I will wait for help from someone to import them.

@aubergine10 I do not support level crossing. I just added code to show error message regarding this unsupported scenario. see #575

I do not know how to download translations the right way. Can anyone please help me?

You can download the .csv files and drop them in to the translations folder, then submit that to the PR - that's fine. Just be sure to leave a note in OP of PR listing which languages were changed and who changed them (so we can give credit in the change notes).
However:

All editing of the translations must occur via web interface of the Crowdin site; it is our single source of truth for current keys and translations
Adding new keys or languages to Crowdin needs to be done by an admin (myself, kvakvs, krzychu)

Note: I'm currently having some login issues with Crowdin (their support is investigating) so can't currently add languages or keys or approve translations.

@aubergine10 You can download the .csv files and drop them in to the translations folder, then submit that to the PR - that's fine. Just be sure to leave a note in OP of PR listing which languages were changed and who changed them (so we can give credit in the change notes).

This is exactly what I did: https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/pull/554#issuecomment-558854658 (If I understood correctly)
but then @krzychu124  told me: https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/pull/554#pullrequestreview-323330584

they are wrong 😄 All translation file are generated

So @aubergine10 or someone else: can you please tell me what did I do wrong last time so that I can fix it this time?
PS: Also later on somehow the English translation strings in crowdin got wiped out leading to the empty error messages you saw! One of life's mysteries!

OMG I totally forgot about left hand traffic! I will fix it soon.

Fixed it.

@aubergine10 @krzychu124 @kvakvs  The translations are in. This should be ready to merge


Imf::isOpenExrFile doesn't handle UTF-8 filenames properly

@lgritz has implemented a workaround for inconsistent UTF8 filename handling in Imf::isOpenExrFile
https://github.com/OpenImageIO/oiio/pull/1941/commits/056507c93da60148b9af6ee0390eda45f01696c1
Fix should occur in OpenEXR directly methinks

Note to those who may look at the above referenced OIIO PR: the magic is that in my overloaded Imf::IStream, I handled UTF-8 filenames properly when opening the files in the first place.
Feel free to swipe the code from OIIO, I'm happy to point somebody to the exact bits that are needed. The crux of it is this:
#ifdef _WIN32
std::wstring
Strutil::utf8_to_utf16 (string_view str)
{
    std::wstring native;
    native.resize(MultiByteToWideChar (CP_UTF8, 0, str.data(), str.length(), NULL, 0));
    MultiByteToWideChar (CP_UTF8, 0, str.data(), str.length(), &native[0], (int)native.size());
    return native;
}
#endif

FILE*
Filesystem::fopen (string_view path, string_view mode)
{
#ifdef _WIN32
    // on Windows fopen does not accept UTF-8 paths, so we convert to wide char
    std::wstring wpath = Strutil::utf8_to_utf16 (path);
    std::wstring wmode = Strutil::utf8_to_utf16 (mode);
    return ::_wfopen (wpath.c_str(), wmode.c_str());
#else
    // on Unix platforms passing in UTF-8 works
    return ::fopen (path.c_str(), mode.c_str());
#endif
}

Thank you sir!

One of my Windows users recently ran into an issue with OpenEXR and non-ASCII paths.  I confirmed the issue in Wine.  I cross-compile my program for Windows from Linux with MinGW64. The other libraries I use (libpng etc) had no such issues.  I got non-ASCII paths working (at least in Wine, Microsoft Windows remains to be tested) by deleting all the Windows-specific stuff in ImfStdIO.cpp:
sed -i "s/#ifdef _WIN32/#if 0/g" OpenEXR/IlmImf/ImfStdIO.cpp

This looks another case where we need a MINGW check in addition to the WIN32 check. Probably we should grep the whole codebase for other such instances.

The problem is that it now treats char-strings as UTF-8. In some way this is a good thing, but the typical convention on Windows is that char-strings (PSTR / LPSTR) when used with the -A version of WinAPI are encoded in the system ANSI code page (ACP), which in most cases is not UTF-8. To convert a string from ACP to UTF-8, I think the "native" way is to first use MultiByteToWideChar to convert it to UTF-16 as a wchar_t-string (LPWSTR), then back with WideCharToMultiByte to convert it to UTF-8. (Amusingly, OpenEXR will then convert it back to UTF-16 again to open the file with the wide API.)
If you are unaware of this and pass non-ASCII paths encoded in the system ACP to OpenEXR, you will fail to open the file. I don't think it has anything to do with MinGW.


refactor: split js bridge source code from lib source code

Motivation
Embedding js bridge source code into c make it hard to read and edit. Moving it appart was made possible by using xxd tool.

It open new possibility like using typescript for API and transpile to js for dist.
It improve dev experience and readability.
Allow linter and synthax analyzer to check the code.
Allow minification in order to reduce lib size.
Allow user to import type definition to better discoverability and usage of the API.

Possible improvements

Move error pages, svg and all big embedded content to specific file for better readability.
Set up minification.
Refactor js api.
Mirror type definition on accessible url (for instance deno.land can serve a subfolder as module and track the main project version as module specifier).

The idea of spitting the main code into multiple files is a great idea, but it comes with a cost.
Many users won't have xxd installed. Probably we should use a Python script to convert JS to C-Style, but I'm not sure.
Another option is using C23 Standard to use #embed to automatically embed JS file. But that means removing the TCC support.
I don't know what we should do honestly, but yes, splitting files is a good improvement.

I'm not sure that xxd is not installed. It seem's to be preinstalled on many linux distrib and came natevely on macos. It is also a part of git for windows (part of git bash tools).
I actually working on the js bridge (there is some errors, deprecated APIs, overcomplicated code, ...). And to simplify its maintenance and its integration for user I asking if typescript would be a good idea. So for compiling ts I propose to setup a devcontainer, it can be useful to ensure all dev have all necessary tools. As there is actually no linting or code formatter in the project, a devcontainer with adequat tools can be a good idea to homogenize and support development.
I don't known how the support of TCC matter (I'm not a C dev so I am not aware of current usage) but #embed is a interesting feature.

typescript would be a good idea

The Deno wrapper is written in TypeScript. So, no one will have an issue switching the WebUI-Bridge from JavaScript to TypeScript.

I propose to setup a devcontainer

I vote for the devcontainer to be optional, as many developers prefer to edit /client/webui.ts directly. But it's good to have containers for WebUI dev.

I don't known how the support of TCC matter

TCC is for users who want to produce a complete working GUI executable using WebUI in less than 1024 Kb. Also, TCC is used as a backend in V-WebUI.

Bridge

The Deno wrapper is written in TypeScript. So, no one will have an issue switching the WebUI-Bridge from JavaScript to TypeScript.

The JS bridge inside the c lib is totally independent from the Deno wrapper. For instance if you use TSX for your UI, as the client API is not typed it lack of usability.
Using typescript (or at least providing a d.ts definition file) can be a good improvement for discoverability, interoperability and simplify project integration. As it only used in source code it don't change the final execution (only js i embedded).
Moreover, using typescript bring checking tools for internal use (there is several issues in the bridge that are catched by typescript in my tests).
Devcontainer
Yes .devcontainer is only for simplify startup and project tools sharing (not mandatory). For instance there is no default formater or linter for the project and requiring from contributors to install project choosen tools can be complicated. Future CI/build improvements can take profit of it.

The JS bridge inside the c lib is totally independent from the Deno wrapper.

Yes, I meant that the original creator of WebUI already used TypeScript, so I don't see any issue in switching the bridge completely from JavaScript to TypeScript. It should just simply work in the browsers.

Bridge
Devcontainer

I totally agree with you. I guess this will be a very good improvement 👍


Support Swedish Coordination numbers ("Samordningsnummer")

It could be possible to add this as a separate validator, and not as part of personnummer,  but since the similar/corresponding D-number functionality in Norway is included in the norwegian fodselsnummer validator (and not as a separate validator), I found it more consistent to include Coordination numbers as part of the personnummer validator

Thanks for the change, looks good and I agree with your assessment  about consistency.


Compatibility with Evernote Web Clipper

Hi there. Great tool. However it's not compatible with Evernote Web Clipper. Perhaps because of how it modifies the URL of the doc to be displayed. Any way of fixing this? Cheers.
The main reason I loaded this tool was so that PDFs that wanted to download would instead be displayed in a browser tab so I could clip them.

The PDF is displayed in a Chrome extension, and Chrome extensions (e.g. Evernote WC) cannot modify pages within other Chrome extensions (e.g. PDF.js). With the current means, there is no way of fixing it.
PS. Next time, please open issues on the main issue tracker (https://github.com/mozilla/pdf.js/issues). If you expect a reply from me, include @Rob--W in the issue.


Enhanced footer contact section

Related Issue #399
Fixes:  #399
Description
Enhanced contact section by adding "mailto:" & "tel:".
Type of PR

[X] Feature enhancement

Screenshots / videos (if applicable)
Before

Static footer contact us section.

After

Added "mailto:" & "tel:"

Checklist:

[X] I have made this change from my own.
[X] My code follows the style guidelines of this project.
[X] I have performed a self-review of my own code.
[X] I have tested the changes thoroughly before submitting this pull request.
[X] I have provided relevant issue numbers and screenshots after making the changes.

@PriyaGhosal It's my humble request do not simply close PR if you encounter any conflict this is single page application so there will be always some changes even if I sync my branch with latest code there is still chance for conflict so let me handle the conflict here only rather then changing in my branch or on my local codebase.

last conflict was raised due to this. so if you encounter any conflict now please let me know.

@Amarjha01 Your pull request has been successfully merged! Don't stop here—continue contributing by addressing more issues and aiming to become a top contributor. Exclusive swag awaits for those who go the extra mile!
Great contribution to GSSOC'24 EXTENDED! 🎉


Swapped values() for itervalues() for python3 compatibility.

ignore_nodes = set()
process_in_wave1 = dep_graph.ind_nodes(ignore_nodes=ignore_nodes)
...
ignore_nodes.update(process_in_wave1)

process_in_wave2 = dep_graph.ind_nodes(ignore_nodes=ignore_nodes)
...
ignore_nodes.update(process_in_wave2)

process_in_wave3 = dep_graph.ind_nodes(ignore_nodes=ignore_nodes)
...

Closing. Py3 support has been added by #23.


Added a project url to jaxb-runtime

jaxb-runtime does not define a project URL in the pom file. In that case, maven inherits the value of the parent pom and appends the artifact id (see maven documentation).
By that maven resolves the URL to https://eclipse-ee4j.github.io/jaxb-ri/jaxb-runtime-parent/jaxb-runtime, which does not exist.
This PR fixes that issue by adding an explicit URL to the project.

This fix would help getting the project URL right in automatically generated dependency lists.

there are probably more places where this needs to be applied.

Yes. To all pom files that use a parent pom, don't define a URL.
So I guess to all of these:
./jaxb-ri/jxc/pom.xml
./jaxb-ri/runtime/impl/pom.xml
./jaxb-ri/runtime/pom.xml
./jaxb-ri/docs/www/pom.xml
./jaxb-ri/docs/release-documentation/pom.xml
./jaxb-ri/docs/pom.xml
./jaxb-ri/bundles/jxc/pom.xml
./jaxb-ri/bundles/osgi/osgi/pom.xml
./jaxb-ri/bundles/osgi/tests/pom.xml
./jaxb-ri/bundles/osgi/pom.xml
./jaxb-ri/bundles/runtime/pom.xml
./jaxb-ri/bundles/xjc/pom.xml
./jaxb-ri/bundles/core/pom.xml
./jaxb-ri/bundles/pom.xml
./jaxb-ri/bundles/ri/pom.xml
./jaxb-ri/xjc/pom.xml
./jaxb-ri/samples/pom.xml
./jaxb-ri/txw/runtime/pom.xml
./jaxb-ri/txw/compiler/pom.xml
./jaxb-ri/txw/pom.xml
./jaxb-ri/tools/osgi_tests/jxc/pom.xml
./jaxb-ri/tools/osgi_tests/osgi/pom.xml
./jaxb-ri/tools/osgi_tests/runtime/pom.xml
./jaxb-ri/tools/osgi_tests/xjc/pom.xml
./jaxb-ri/tools/osgi_tests/core/pom.xml
./jaxb-ri/tools/osgi_tests/parent/pom.xml
./jaxb-ri/tools/osgi_tests/pom.xml
./jaxb-ri/boms/bom/pom.xml
./jaxb-ri/boms/bom-ext/pom.xml
./jaxb-ri/xsom/pom.xml
./jaxb-ri/core/pom.xml
./jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml
./jaxb-ri/codemodel/codemodel/pom.xml
./jaxb-ri/codemodel/pom.xml
./jaxb-ri/external/relaxng-datatype/pom.xml
./jaxb-ri/external/pom.xml
./jaxb-ri/external/rngom/pom.xml

Should they all point to the same website or do they have different project-dependent pages?

Also note the while it should not be mandatory to sign-off commits any more, ECA needs to be signed. Right now, ECA check is failing and I see no way to verify that ECA has been signed

I signed it now

Should they all point to the same website or do they have different project-dependent pages?

let them point to the same website, please

I added the URL to all of them.

Can I ask you to also backport this to EE8 branch?

sure


[HOLD for payment 2021-12-27] Keyboard shortcut Modal is drag-gable, inconsistent with other Modals - Reported by: @parasharrajat

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Navigate to app
Login
initiate Keyboard shortcut Modal with 'command+?' on Mac or 'ctrl+?' on windows or Linux

Expected Result:
Modal popup should be consistent with other Modals in app.
Actual Result:
Keyboard shortcut Modal is drag-gable on Web. Inconsistent with other Modals in app.
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
Desktop App

Version Number: 1.1.19-0
Reproducible in staging?: Y
**Reproducible in production?:Y
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/44479856/146035440-bcd290b8-a618-4310-9c97-9936444d5a20.mp4
Expensify/Expensify Issue URL:
Issue reported by: @parasharrajat
Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1638992383386800
View all open jobs on GitHub

Triggered auto assignment to @sonialiap (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

Triggered auto assignment to @TomatoToaster (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Lol this is such a goofy bug 😄 Good find @parasharrajat. This makes sense for external so I'm going to make it such.

Small Fix:
Change the CONST.MODAL.MODAL_TYPE.CENTERED to CONST.MODAL.MODAL_TYPE.CENTERED_UNSWIPEABLE in KeyboardShortcutsModal
const modalType = this.props.isSmallScreenWidth ? CONST.MODAL.MODAL_TYPE.BOTTOM_DOCKED : CONST.MODAL.MODAL_TYPE.CENTERED_UNSWIPEABLE;

Upwork posting
@parasharrajat, here's a link for reporting the issue: posting

Triggered auto assignment to @parasharrajat (Exported)

Triggered auto assignment to @luacmartins (Exported), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

As, I reported this and it's a quick one so I would like to solve this.
Proposal

Change the type of Modal for web to CONST.MODAL.MODAL_TYPE.CENTERED_UNSWIPEABLE https://github.com/Expensify/App/blob/471566cfa0476f2a3708b402effe5f85771ba5fd/src/components/KeyboardShortcutsModal.js#L85

Thanks for the proposals! Given that both proposals are identical, we will proceed with @mananjadhav since they posted it first.

📣 @mananjadhav You have been assigned to this job by @luacmartins!
Please apply to this job in Upwork and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑💻
Keep in mind: Code of Conduct | Contributing 📖

I was thinking that I will get first dibs as I reported it. 🙂

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.1.21-1 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/6753

If no regressions arise, payment will be issued on 2021-12-27. :confetti_ball:

@bfitzexpensify I've applied to the job but haven't been hired on Upwork.

@mananjadhav @parasharrajat , I hired you both (different jobs), can you accept the offer then we'll get ya paid on the 27th?

7 days since deployment.  @mananjadhav, paid you and ended the contract — thank you!
@parasharrajat still waiting on you to accept the offer here for reporting. I'll check on this again tomorrow, but if there's no action, then @mallenexpensify can you pay and end this later this week? I'll be ooo from tomorrow for the remainder of the week.

@mallenexpensify, I am still awaiting payments for this. I canceled the previous offer. Could you please help me apply again? I can't apply again for the same job.

@mallenexpensify Bump.

Please apply here @parasharrajat https://www.upwork.com/jobs/~01e953329d9d0e2915

@mallenexpensify Applied.

@mallenexpensify
Ping for

Hired @parasharrajat , let me know when you have accepted and I'll pay

@mallenexpensify
Ping for

Paid for reporting and C+ @parasharrajat


Check for standard conditions (ready, inprogress) for unknown types (crds)

/reopen

@nan-yu please review (we can add tests for this as part of your pull #158

/assign mortent

/lgtm

I forget it was auto-approved. let me know if it requires a revert


Add drag/drop capabilities

Description

Implement dragging within and between columns
Implement dragging to track to delete a task

integrated jquery ui and touch punch


Upgrading to Moltin to version 3.12

I tried to run
yarn upgrade @moltin/sdk
npm install --save @moltin/sdk
Why does it fail ?

Hi @logicappsource
I was able to upgrade the SDK successfully inside a legacy project of mine.
I expect the issue you're running into is the use of Cart.
The react demo store uses 2.3.0 but there has been a breaking change since the demo was created.
I'd recommend you look at the NextJS demo store on how to use the newer version of the SDK.
I hope this helps 😄