Iectl update

Minor documentation update and screenshots imported for better understanding

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: Zrelax92:x: IvanCBSiemensYou have signed the CLA already but the status is still pending? Let us recheck it.

@IvanCBSiemens There is still a conflict in the pull request, please check and resolve the conflict


Bash codecov uploader is in deprecating phase

About bash uploader
Recommended solution

new version of codecov curently not work with teamcity

new version of codecov curently not work with teamcity

Can you provide any details of what doesn't work in TeamCity?

Sure, https://github.com/codecov/uploader/issues/219


Lighting not working on Corsair

What are you experiencing an issue with?

[ ] Aurora
[ ] Aurora supported game, (Fill in the game)
[ ] Aurora Wrapper
[ ] Aurora Profile
[x] Aurora supported device, (Corsair K65 Rapidfire)
[ ] Aurora Scripts
[ ] Aurora Updater
[ ] Aurora Lighting issue
[ ] Other, (Fill in another issue here)

What kind of an issue is it?

[ ] Crash
[ ] Performance problems
[ ] Visual bug
[ ] Localization issue
[ ] Enhancement suggestion
[x] Device issue
[ ] Other, (Fill in another type of issue here)

Expected behavior:
Keyboard LED lighting.
Actual behavior:
No lighting saw, but mouse RGB lighting is working normally. Using Logitech G502 Spectrum as mouse.
How often does this problem occur?
This problem occurs when using Aurora
Please describe the steps to reproduce this issue:
The issue can be reproduced by doing following steps:

Just use Corsair K65 Rapidfire.

What is the version of Aurora you are experiencing this issue with?

My version is v0.6.0b
Does the previous version of Aurora have this issue?
This is my first install.
Please include any logs, screenshots, or files that are related to this issue:
https://pastebin.com/rGxTMZGy

Did you enable the SDK in CUE's settings? Also, what version of CUE are you running?

Possibly related to #593

Any updates on this?


Allow curl to request user password, to prevent exposing it via /proc…

Environment variables passed into a script are visible via /proc/*/env.
Calling curl with -u "$USER:$PASS" makes the password visible in ps ax.
Curl's manual says that it rapidly removes this information from that table, however there's still a brief window where the password could be leaked.
This pull allows curl itself to request the user's password, preventing it being leaked via either of those vectors.
This pull also retains the previous functionality, to support users who trust that these password leak vectors aren't part of their attack surface.
Explanatory output from the script has also been updated to reflect this change.
I also added -S (--show-error) to curl so that it can output errors by itself rather than asking the user to re-run curl manually to see them.

I have mixed feeling about this PR.
The security part is debatable and I don't think we should start that discussion here, maybe over a beer. I do however agree that it would be good to ask for password input in case they only injected the PIA_USER. I think the functionality should be merged, however I will modify the comments a bit so that people new to GNU/Linux do not get scared into thinking they have some random users on their laptop that will steal their PIA pass.
Regarding curl, I agree on adding -S but not on completely removing the instructions for -v, as the verbose mode provides a lot more information which can be useful for troubleshooting any type of issue. Maybe we can change -u "$PIA_USER:$PIA_PASS" to -u "user:pass" so that the pass doesn't appear on the terminal. This also assumes that all users will understand they have to replace user:pass with their account credentials.

Fair points - I guess it's tricky to balance the desires of Linux experts who are somewhat familiar with defensive security, vs the users who are playing with My First OpenWRT or trying out Ubuntu.
I've pushed a partial revert to restore the debug command suggestion, with actual user:pass replaced with a placeholder.
I'll let you decide what you want to do with the informational output text - I agree it has the potential to confuse/frighten new users to Linux, despite being technically accurate about the issue I raise here :)
Oh, one more thing - I dislike anything where I have to interact, wait, then interact again.
Should we move the token fetch before the latency check in the case that PIA_USER is supplied?
It doesn't require an endpoint to be chosen first if we fetch the token from https://www.privateinternetaccess.com/api/client/v2/token like I do here.

Should we move the token fetch before the latency check in the case that PIA_USER is supplied?
It doesn't require an endpoint to be chosen first if we fetch the token from https://www.privateinternetaccess.com/api/client/v2/token like I do here.

You are using the v2 authentication, and this script is using the v3 authentication. The new one has improved security and performance. The meta tags are required as our default domains tend to get blocked in different locations, and meta tags give users an unlimited amount of endpoints to connect to for serverlist or authentication.
That is however not an excuse and your point is however valid. We should add a public endpoint for the v3 authentication system. At this point, v3 authentication is available only via meta IPs, so you need to get the meta IPs before authenticating. I do agree this can be improved, but this improvement will take some time.
We just released NextGen and there still is stuff to improve and to document, however we are working to get everything done as soon as possible.
Considering you want to connect without saving your password anywhere, here is one quick tip. The v3 authentication system allows you to refresh your old token by running curl on /authv3/refreshToken/ (be sure you also check certificate as exemplified in this repo):
$ curl -ks -G --data-urlencode "oldToken=5rutZ79KlZGMkYMdnKGI=" "https://${META_IP}/authv3/refreshToken"
{
    "status": "OK",
    "token": "Oceqm4M2ZOEBOKwrzIdD0S4oGLOw="
}

An expired token does not allow you to connect to VPN, but it can be refreshed and the new one allows you to connect to VPN for another 24 hours. If you automate this process on a fork, it will provide you with complete non-interactive authentication without user/password. The meta service is also available on port <IP_ADDRESS> when already connected to the VPN, so you can cron the refresh every 24 hours so you always keep a fresh token somewhere. You can also get the serverlist every 24 hours so that you always have a fresh serverlist. That is however out of the scope of this repo, as we need to provide here simple docs and scripts so that everybody can use NextGen with native clients.

Thanks for the hints, I'll consider updating my personal bash scripts.
I guess it would be possible to attempt to fetch a token from each endpoint and monitoring the latency of that operation, then revert to the current behaviour after a token is acquired? Or does fetching a token incur extra latency that would skew the results?
That would require us to read -s the password (but not export it to keep it from /proc/$$/env), then perhaps supply it to curl via  curl --netrc-file <(echo "$PIA_USER:$PIA_PASS") or so, if we want to continue hiding the password from the process table as echo is a bash builtin, so doesn't get invoked as a separate process, keeping its parameters invisible.
Is there anything specific you'd like me to change to resolve this pull request?

How do you feel about curl -s --header @<(echo "Authorization: Basic $(echo -n "$PIA_USER:$PIA_PASS" | base64)") ... since netrc seems to expect passwords to be sensible plaintext without spaces rather than arbitrary bytestrings?
It adds a dependency on base64, but that's part of coreutils and busybox so should be available on almost all systems.

I guess it would be possible to attempt to fetch a token from each endpoint and monitoring the latency of that operation, then revert to the current behavior after a token is acquired? Or does fetching a token incur extra latency that would skew the results?

Fetching a token needs to check your subscription, so it will have some added latency, since the DB is in the US.

How do you feel about curl -s --header @<(echo "Authorization: Basic $(echo -n "$PIA_USER:$PIA_PASS" | base64)") ... since netrc seems to expect passwords to be sensible plaintext without spaces rather than arbitrary bytestrings?

Looks a lot more elegant than:
PIA_PASS="${PIA_PASS:+:$PIA_PASS}"
generateTokenResponse=$(curl -s -S -u "$PIA_USER$PIA_PASS" http://foo)

All that ps will show is curl -sv --header @/dev/fd/63 http://foo
The vars will still be part of the env, however env can not be seen by other users on the system:
-r--------   1 gunix gunix 0 Sep 25 01:16 environ

But tbh, I would just go for the simple solution that is easy to comment and to explain:
generateTokenResponse=$(curl -s -S -u "$PIA_USER${PIA_PASS:+:$PIA_PASS}" http://foo)

This is currently conflicting with master, so we can close the PR for now, and I will push this directly to master when I have time to test it out.
I am still for the simplest solution: generateTokenResponse=$(curl -s -S -u "$PIA_USER${PIA_PASS:+:$PIA_PASS}" http://foo)
With a very small comment so that people that spend time to read it out, understand this is an option.


Add several new issuer icons

Icons for the following issuers:
Added

Instagram (#46)
Reddit (#46)
Snapchat (#46)
NordPass (#49)
Parler (#49)
Tresorit (#49)
Twitter (#49)

Thanks so much @frozenshadow, the icons look great!


feature/setup-router

Adding React Router

Setup
Creating Routes component

Looks good, let's merge!


Format python files in blueprints

add lint check on blueprints python code
format python code in blueprints
I applicable, I acknowledge that I have:

[x] Read the contributing guide
[x] Ran terraform fmt on all modified files
[x] Regenerated the relevant README.md files using tools/tfdoc.py
[x] Made sure all relevant tests pass

Bruzz, xan you also turn on Python linting in the CI workflow for all blueprints?


Abbreviations for Dates

Adds a quicker way to insert dates in the GUI with abbreviations
Best way would probably to extend chrono, but a small table with Regex replacements does the job easily:
{
    td: 'today',
    tm: 'tomorrow',
    yd: 'yesterday',
    tw: 'this week',
    nw: 'next week',
    weekend: 'sat',
    we: 'sat',
}

Additionally I refactored the date parsing into its own function.

A little change: I noticed it would not actually submit the selected Abbreviation
Now it just replaces abbreviations on the fly(after hitting space):

You weren’t forgotten! I had to cut a release to finally get live preview out of the door.


One small concern with the dereferencing logic

I really like the dereferencing logic. It's good for refactors.
For example in C, when you have a reference x and supply it to a function, you would do f(x).
But if you have a struct reference s and want to supply the field x by reference you have to explicitly deref and take the field (normally both at once using the arrow operator) and then take the reference of it like f(&s->x)
In Penne it would like this (if there were structs already):
f(&x);
f(&s.x);

Some other example:
fn test(some_value: i32)
{
    // dozens of uses of some_value like this:
    f(some_value)
}

Now I realize my function has to take the value by reference for some reason:
fn test(some_value: &i32)
{
    // dozens of uses of some_value like this:
    f(some_value)
}

Still works the same way.
Now my concern: The refactored function will implicitly dereference some_value dozens of times. This might cause an unnecessary overhead.
Will the compiler be able to optimize that away?
Or will you need to do it explicitly by defining a function like this:
fn test(some_value: &i32)
{
    var some_value = some_value; // implicitly deref here for performance reasons
    // dozens of uses of some_value like this:
    f(some_value)
}

Good question! I think if we ignore multithreading for a moment (which I haven't even begun thinking about), it should be totally valid for the compiler to detect multiple dereferences in a row and optimize them out. In fact I could imagine LLVM already doing that, but I wouldn't be suprised if LLVM is conservative precisely because of multithreading.
I haven't done any performance testing but this is definitely a good test case.


TCP connectivity is not working correctly through a service unless the port name is tcp or is prefixed with tcp-

Describe the bug
TCP connectivity is not working correctly through a service unless the port name is tcp or is prefixed with tcp-. The documentation states that a port name without a prefix will be treated as plain TCP but that doesn't seem to be the case.

If the port name does not begin with a recognized prefix or if the port is unnamed, traffic on the port will be treated as plain TCP traffic (unless the port explicitly uses Protocol: UDP to signify a UDP port).
https://istio.io/help/faq/traffic-management/#naming-port-convention

Expected behavior
Services with unknown port names to be behave as TCP if the protocol is set to TCP.
Steps to reproduce the bug
Create 2 pods (client and server) with Netcat installed
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: client
  name: client
spec:
  containers:
  - args:
    - sleep
    - "3600"
    image: amouat/network-utils
    name: client
    ports:
    - containerPort: 3306
      name: mysql
      protocol: TCP
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: server
  name: server
spec:
  containers:
  - args:
    - sleep
    - "3600"
    image: amouat/network-utils
    name: server
    ports:
    - containerPort: 3306
      name: mysql
      protocol: TCP

Create 2 services pointing to the server pod but name the port differently.
apiVersion: v1
kind: Service
metadata:
  name: service-a
spec:
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    run: server
---
apiVersion: v1
kind: Service
metadata:
  name: service-b
spec:
  ports:
  - name: tcp
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    run: server

Exec into the server pod and start a Netcat listener
kubectl exec -it server nc -l 3306
Exec into the client pod and send data to service-a observing the output on server pod tty
# client console
$ kubectl exec -it client /bin/bash
$ nc -v service-a 3306
> 1
> 2
> 3
> 4
# server console
$ nc -l 3306
> 1

Exec into the client pod and send data to service-b observing the output on server pod tty
# client console
$ nc -v service-a 3306
> 1
> 2
> 3
> 4
# server console
$ nc -l 3306
> 1
> 2
> 3
> 4

Version
client version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"brew", Host:"Mojave.local", GolangVersion:"go1.12.2", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.2"}
citadel version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}
egressgateway version: version.BuildInfo{Version:"bdda7cfcf5ba1397e6e0e2629d53114c9ea8fc14", GitRevision:"bdda7cfcf5ba1397e6e0e2629d53114c9ea8fc14", User:"mjog", Host:"devinstance.c.mixologist-142215.internal", GolangVersion:"go1.10.1", DockerHub:"docker.io/istio", BuildStatus:"Clean", GitTag:"1.1.0-snapshot.4-592-gbdda7cf"}
galley version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}
ingressgateway version: version.BuildInfo{Version:"bdda7cfcf5ba1397e6e0e2629d53114c9ea8fc14", GitRevision:"bdda7cfcf5ba1397e6e0e2629d53114c9ea8fc14", User:"mjog", Host:"devinstance.c.mixologist-142215.internal", GolangVersion:"go1.10.1", DockerHub:"docker.io/istio", BuildStatus:"Clean", GitTag:"1.1.0-snapshot.4-592-gbdda7cf"}
pilot version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}
policy version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}
sidecar-injector version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}
telemetry version: version.BuildInfo{Version:"1.1.2", GitRevision:"2b1331886076df103179e3da5dc9077fed59c989-dirty", User:"root", Host:"35adf5bb-5570-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Modified", GitTag:"1.1.1"}

Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-04T04:49:22Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.6-eks-d69f1b", GitCommit:"d69f1bf3669bf00b7f4a758e978e0e7a1e3a68f7", GitTreeState:"clean", BuildDate:"2019-02-28T20:26:10Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}

Installation
helm install --wait --name istio-init --namespace istio-system install/kubernetes/helm/istio-init
helm upgrade --install --wait istio --namespace istio-system install/kubernetes/helm/istio --values install/kubernetes/helm/istio/values-istio-demo.yaml --timeout 100000 --set gateways.istio-ingressgateway.serviceAnnotations.'service\.beta\.kubernetes\.io/aws-load-balancer-internal'=<IP_ADDRESS>/0 --set global.proxy.accessLogFile="/dev/stdout"

Environment
AWS EKS 1.12

I was able to reproduce this issue with Istio 1.1.3

@2ZZ I tried to reproduce this with the following yaml in Istio 1.1.3:
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: client
  name: client
spec:
  containers:
  - args:
    - sleep
    - "3600"
    image: amouat/network-utils
    name: client
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: server
  name: server
spec:
  containers:
  - args:
    - sleep
    - "3600"
    image: amouat/network-utils
    name: server
    ports:
    - containerPort: 3306
      name: mysql
      protocol: TCP
    - containerPort: 3307
      name: custom
      protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: service-a
spec:
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    run: server
---
apiVersion: v1
kind: Service
metadata:
  name: service-b
spec:
  ports:
  - name: custom
    port: 3307
    protocol: TCP
    targetPort: 3307
  selector:
    run: server

And tested with the following command:
# On client side
$ k exec -it client -c client -- bash
root@client:/# nc -v service-a 3306
Connection to service-a 3306 port [tcp/mysql] succeeded!
1
2
3
4
^C
root@client:/# nc -v service-b 3307
Connection to service-b 3307 port [tcp/*] succeeded!
1
2
3
4

# On server side
$ kubectl exec -it server -- bash
Defaulting container name to server.
Use 'kubectl describe pod/server -n default' to see all of the containers in this pod.
root@server:/# nc -l 3306
1
root@server:/# nc -l 3307
1
2
3
4

It seems it's working as expected, see the response on port 3307. Note the prefix mysql is a reserved for ports serving MySQL protocol, so I guess it doesn't work on port 3306 because you're not speaking the MySQL protocol.
Probably we should add the mysql to the https://istio.io/docs/setup/kubernetes/prepare/requirements/ as well.
@rshriram @venilnoronha It seems the MySQL filter is not passing through the traffic when there is a decode error, is this expected? (From the code it seems it should continue pass through the traffic in this case)

@yangminzhu thanks, I can confirm the behaviour is the same for us too.
If you can add mysql and any other missing protocols to that requirement list that would be very helpful.

We found issues with the mysql filter and have it turned off by default now. It is an alpha Envoy feature, but was inadvertently getting turned on by the port name like in this case. Since the docs have been updated I think there is no more work here.
Thanks


Add padding to checkboxes and fix HTML.

The HTML element for label had an invalid for={{target}} argument. Removing it now allows you to click the label to toggle the checkbox.
The checkboxes no longer float-left so the issue with right leaning stacks should disappear.
Fixes: #1491.

Automated message from Dropbox CLA bot
@brockwhittaker, it looks like you've already signed the Dropbox CLA. Thanks!

Merged (after squashing the commits together).  Thanks @brockwhittaker!


Bug: KeyError: 'log_file'

Hi,
running one of

euporie console
euporie edit
euporie hub
euporie notebook
euporie preview

causes the following error:
23:20:29 CRITICAL Uncaught exception                                                                                euporie.core.log.handle_exception:425                  Traceback (most recent call last):
    File "/home/<user>/.local/bin/euporie", line 8, in <module>
      sys.exit(main())
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/__main__.py", line 10, in main
      return entry.load().launch()
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/launch.py", line 29, in launch
      cls.config.load(cls)
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/config.py", line 374, in load
      setup_logs(self)
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/log.py", line 288, in setup_logs
      log_file_is_stdout = config.log_file in ("-", "/dev/stdout")
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/config.py", line 549, in __getattr__
      return self.get(name)
    File "/home/<user>/.local/pipx/venvs/euporie/lib/python3.10/site-packages/euporie/core/config.py", line 521, in get
      return self.settings[name].value
  KeyError: 'log_file'

The commands

euporie-console
euporie-hub
euporie-notebook
euporie-preview
seem to work fine.

I installed using
pipx install 'euporie[hub]'

Thanks for reporting this.
This should now be fixed in the dev branch by a126be0fa9bd0f64d02edc57a69bbbc0507155c8.
I'll publish a new release with the fix soon.

This fix releases in v2.4.0


Some features about ELSED::detectEdges() ?

Thanks for your nice work!
I use ELSED::detectEdges() like:
upm::ELSED lineDetector;
auto edges = lineDetector.detectEdges(colorImg);
for (const auto &e: edges) {
    if (e.size() < 2)
      continue;
    const auto &startPx = e.front(), &endPx = e.back();
    // ......
}

But, I find e.back() seems not a end point of a edge!
What e actually means as a vector?

Hii, thanks for your interest!
They should be the first and last pixels of each edge. I encourage you to try the following code:
  upm::ELSED lineDetector;
  auto edges = lineDetector.detectEdges(img);
  for (const auto &e : edges) {
    if (e.size() < 2)
      continue;
    for (const upm::Pixel &px : e) {
      img.at<cv::Vec3b>(px.y, px.x) = cv::Vec3b(0, 255, 0);
      cv::imshow("Edges", img);
      cv::waitKey(30);
    }
  }

If I execute it, it progressively draws all the edges on the image:


Documentation: Marking the release for new rules

Hi,
you deliver new rules from release to release (thanks for that), but there is no information in the documentation what are the rules that have been introduced in the given release.
Could you please somehow mark the given rule that came with which release?
For example in the rule documentation table:
After "Rule severity", "Rule id", and "Robot Framework version" as a fourth column.
And/or highlight it as a new section in the Release notes.
Thank you in advance!

It would be a nice feature because it can help (at least for me), what are the new rules since I last checked the documentation page,

Hey @levlist,
I was thinking about something like this some time ago. I will think if it's easy to achieve.
On the other side, you have a small dropdown menu with version selection and you should have all the rules listed for this specific version (if the rule was not implemented for the specific release, it will not be visible on the list).
https://user-images.githubusercontent.com/7412964/222407147-95062d04-25cc-4649-ba85-4aa668132361.mov

It should be easy to add as a feature - but of course it would then require a lot of manual work to check when given version was added.
From anyone implementing this (it could be me, just noting my thougs): Our rules page is autogenerated based on the rules defined in the Robocop.
First we're autodiscovering the rules and created dictionary that will be passed to the rules.rst in the https://github.com/MarketSquare/robotframework-robocop/blob/master/docs/conf.py (see checker_docs[module_name] list creation). Then the rules.rst page is generated in the https://github.com/MarketSquare/robotframework-robocop/blob/master/docs/rules.rst . You can use previously supplied data, for example by adding another column in the table (after desc).
And to actually retain the version info we could use Rule class from the https://github.com/MarketSquare/robotframework-robocop/blob/master/robocop/rules.py - by adding additional parameter, for example "version_added". It would be optional parameter (so the custom rules don't need to define it) but we could also add precommit that would be checking if all rules define the version they were added.

Thank you for your effort so far.
I hope you will have time for this in the near future. :-)

Thanks @levlist! Of course, you are welcome to help us! Or you can at least spread the word to your colleagues. Maybe there is someone who wants to contribute to open-source 😉 We offer assistance and some fun! And I can guarantee +5 points to experience and programming skills in return 💪🏻 . And, of course, an eternal glory 🏆

@mnojek Are you working on it? Since this task is split to two: 1. adding version_added parameter and passing it to doc to display it) 2. Manually adding versions to rules, the work can be also split (ie I can take care of 1) or 2)).

@mnojek Are you working on it? Since this task is split to two: 1. adding version_added parameter and passing it to doc to display it) 2. Manually adding versions to rules, the work can be also split (ie I can take care of 1) or 2)).

I think we can add it, it will take time, but we can do it in small portions.
If you want, you can add a PR with this new parameter and one example, and then we can split the work by the rule groups.

I've finished all changes in linked PR and it will be part of the next release - all Robocop rules will have information about the Robocop version when the rule was added.


Add Ollama as an embeddings provider

Pull Request
Related issue
Related Discord Thread
What does this PR do?

Adds Ollama as a provider of Embeddings besides HuggingFace and OpenAI under the name ollama
Adds the environment variable MEILI_OLLAMA_URL to set the embeddings URL of an Ollama instance with a default value of http://localhost:11434/api/embeddings if no variable is set
Changes some of the structs and functions in openai.rs to be public so that they can be shared.
Added more error variants for Ollama specific errors
It uses the model nomic-embed-text as default, but any string value is allowed, however it won't automatically check if the model actually exists or is an embedding model

Tested against Ollama version v0.1.27 and the nomic-embed-text model.
PR checklist
Please check if your PR fulfills the following requirements:

[x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)?
[x] Have you read the contributing guidelines?
[x] Have you made sure that the title is accurate and descriptive of the changes?

Hello,
thank you for the PR! I'll spend some time reviewing it in the future.
Like you said, there is some duplication with OpenAI code, so I'm thinking we might want to factor the implementations at some point.
I was wondering how the code would behave if the input text contains too many tokens?
The current behavior for the OpenAI embedder is the following:

Try to embed the text without counting the tokens. If it works, we successfully avoided tokenization :tada:
If it returns a bad request, assume it is due to the number of tokens. Use tiktoken_rs to tokenize the text.
Send the tokens directly in an OpenAI query, as this is supported.

Meanwhile, the Hugging Face embedder in Meilisearch is implemented such that any tokens after the maximum value are removed (since we're doing the work locally for this embedder, we're always embedding the documents).
We really don't want to error and cancel an entire indexing operation because a document went above the token limits. Would there be a way to implement windowing like OpenAI, or at least cutting any tokens beyond the maximum like the Hugging Face embedder?

I started a notion page listing some of the planned improvements for v1.8. I added the ollama embedder as a proposal: find it here

Regarding the code structure:
The code could certainly use some restructuring and making some of the functions generic over the backend. I wanted to change as little as possible about the surrounding code for the Ollama support just in case somebody was also working on this at the same time, but if there is a more generic REST provider coming, then I assume a lot of that will happen with that restructuring anyways. Do you want me to make any changes to try and combine the Ollama and OpenAI embedders, or should I wait until the structure of the REST backend exists?
Too many token issues:
I must admit I completely forgot about that edge case when implementing this initially, but I just tested it against my local Ollama instance with an input of ~500k words of lorem ipsum and I got back an embedding. I don't know what Ollama does (if it trims at the beginning or end or something else), but the request doesn't seem to fail. Sadly, I can't find anything about this in the Ollama documentation, but in my mind, as long as it provides consistent outputs, it should still work for vector search. Ollama doesn't seem to have an endpoint to send already tokenized requests too, and I'm not entirely sure how that would work anyways. Correct me if I'm wrong, but wouldn't the text have to be tokenized using the correct tokenizer and dictionary to be useful to the model? And those can't be known because Ollama can run arbitrary models.

Hello,
Thank you for that great answer, and also again for contributing to Meilisearch, this is really appreciated :heart:.
Regarding the max tokens issue
No problem that you didn't think of addressing it, that's what reviews are for :-). I'd like more details about your tests: is the behavior consistent when testing with multiple distinct models?
To be clear if the behavior is to cut the input then that's an acceptable outcome and that will work for us.
Maybe we should open an issue on ollama or at least look a bit at the code to ascertain that the behavior is consistent?

Correct me if I'm wrong, but wouldn't the text have to be tokenized using the correct tokenizer and dictionary to be useful to the model?

Yes exactly, this is what we're doing for models downloaded from the HuggingFace Hub. Here, it means the user would need a way to provide the correct tokenizer to us, which would be very inconvenient to the user.
An alternative would be to have an ollama endpoint that would just tokenize, but I'm don't think this exists.
Regarding code structure
You don't need to change the code structure of your PR. If we can ascertain the behavior in the max token case, then I think we'll accept your PR after I do a more detailed review, and land it without structural change. This will be useful to people running Meilisearch on main, or perhaps even as a patch release (depending on products), and I'll take care of the refactoring by Meilisearch v1.8

After some experimentation with my local Ollama instance and asking about this on the Ollama Discord server, it looks like Ollama will never completely fail to embed an input,  no matter how long it is, but I'm not entirely sure how it does that. It doesn't look like it's just truncating the inputs to fit the length, because adding a single word at the end of a very long prompt would result in a slightly different output.
But as far as I can tell, the output is still useful and correct. I first tried getting the embeddings of a really long document and then did it again with the document appended to itself. The two embeddings were not identical, but the cosine distance between them was about 0.997, which, as far as I understand, means the two vectors are almost identical except for some scaling factor.
One additional edge case I only just discovered is what happens if the text to be embedded is completely blank. In this case, Ollama will immediately return json just containing "null" instead of the embeddings array. Is this a situation that should be handled, or can it be ignored because it would mean the document or the template are not configured correctly anyways?

Thanks for your findings, it is possible that ollama splits the text, produce multiple embeddings, and then average them. Doing that would yield the kind of results you're observing.
About empty input, we could have you check that, but since there are multiple embedders that might have variously erratic behaviours when given an empty input, I think it is probably best if I check for the condition prior to calling embed.
In other words, you can assume that the input is never the empty string.

Hello, I have been testing your PR, I got an ollama server running, I have a few questions:

Could we handle the 404 that ollama is returning when asking for a model that hasn't been pulled?
Currently, Meili's behavior is to fail the embedding request with:

"error": {
  "message": "internal: Error while generating embeddings: coding error: received unhandled HTTP status code 404 from Ollama.",
  "code": "internal",
  "type": "internal",
  "link": "https://docs.meilisearch.com/errors#internal"
},

Could we handle the 404 return code so that this isn't a coding error but a user error and it displays a message along the line of "model xxx wasn't pulled on the ollama server"?
2. The dimensions check happened, but surprisingly late in the process. I managed to give a wrong dimension for "nomic-embed-text", and it accepted to index documents. Then, at search time, it would reject it, citing a mismatch between the dimension I provided and the actual dimensions. Could we perform a test embedding like we do in huggingFace.rs to check that the provided dimensions are correct? This way, we could even infer the dimensions if not provided instead of having them mandatory.


Update _config.yml

:white_check_mark: Build POC-dotnet-Asterisk 1.0.68 completed (commit https://github.com/GuilhermeStracini/POC-dotnet-Asterisk/commit/d69f5f7279 by @guibranco)


If statement in .rambaspec

I use different classes for HTTP request, it parameters, path components and headers and it would be great if i could use only one template and just set some custom parameter like create_path_components:true and then path components class creates. Because not every request need to have path components or some parameters.

Hi, @Antowkos. In last release we implement parameter custom-parameters for generamba gen command. Here is an example: generamba gen my_module my_template --custom-parameters=key1:value1 key2:value2. The value1 will be placed in your module for {{ module_info.custom_parameters.key1 }}. This is what you need?

Hi, @Beniamiiin. Thanks for so fast answer. Could i use it in .rambaspec file? I thought that {{ module_info.custom_parameters.key1 }} is only available in .liquid files for templates.

@Antowkos in what fields of .rambaspec do you want to use these parameters?

In code_files and test_files. But maybe it will be useful in dependencies too.

@Antowkos you can already use these parameters: https://github.com/rambler-ios/Generamba/pull/113

@etolstoy , @Beniamiiin . Correct me if i'm wrong. As i understand .rambaspec file is written in YAML and if it is then i don't know how i can use if statement there. Could you provide an example of how i can use if statement in .rambaspec file to add different files from one template base on custom-parameters key?

@Antowkos if i understood you correctly, you want to do something like?
{% if create_path_components == true %}
   - {name: View/MyCustomViewInput.h, path: Code/View/view_input.h.liquid}
{% else %}
   - {name: View/ViewInput.h, path: Code/View/view_input.h.liquid}
{% endif %}

@Beniamiiin Yes

@Antowkos unfortunately no, but we implement this ability in next release.

@Beniamiiin Cool! Thanks! 👍

@Beniamiiin Hi again! I just tried to use this new feature and it doesn't work.
I use syntax like this:
{% if create_path_components == true %}
   - {name: View/MyCustomViewInput.h, path: Code/View/view_input.h.liquid}
{% else %}
   - {name: View/ViewInput.h, path: Code/View/view_input.h.liquid}
{% endif %}

And got this error:
some_path/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/psych.rb:370:in `parse': (some_path/spec_name.rambaspec): found character that cannot start any token while scanning for the next token at line 11 column 52 (Psych::SyntaxError)

If i understand code of creation right then the error could be placed in creation of object ModuleTemplate. It waits for options to be passed to parse .rambaspec file as file with liquid markup, but it creates only in one place (lib/generamba/cli/gen_command.rb, line 48) this way template = ModuleTemplate.new(template_name), there are no options passed, as you can see, so i think this is the cause.

@Beniamiiin @etolstoy Is anyone saw my comment?

@Antowkos hi. Unfortunately we lost couple of code lines, when merged :) I already fixed this bug and we will release new version today.

Cool, thanks!

Ready: https://github.com/rambler-ios/Generamba/releases/tag/1.2.1

seems like don't work, this is .rambaspec
# Template information section
name: nk-vicr-p
summary: NavigationKit based VICR module
author: Maksim Bazarov<EMAIL_ADDRESS>version: 1.0.0
license: MIT

# The declarations for code files
code_files:
- {name: Assembly.swift, path: Code/assembly.swift.liquid}
- {name: Module/View/View.swift, path: Code/view.swift.liquid}

{% if custom_parameters.type == 'table' %}
- {name: Module/View/DataSource.swift, path: Code/datasource.swift.liquid}
{% endif %}

And this is an error
ruby/2.3.0/psych.rb:377:in `parse': (/Users/maksim.bazarov/own/swift-templates/nk-vicr-p/nk-vicr-p.rambaspec): found character that cannot start any token while scanning for the next token at line 13 column 2 (Psych::SyntaxError)
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:377:in `parse_stream'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:325:in `parse'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:252:in `load'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:471:in `block in load_file'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:471:in `open'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:471:in `load_file'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/helpers/rambaspec_validator.rb:25:in `validate_spec'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/installer/local_installer.rb:20:in `install_template'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/processor/template_declaration.rb:32:in `install'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/processor/template_processor.rb:42:in `block in install_templates'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/processor/template_processor.rb:40:in `each'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/template/processor/template_processor.rb:40:in `install_templates'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/lib/generamba/cli/template/template_install_command.rb:18:in `install'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:115:in `invoke'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:235:in `block in subcommand'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/generamba-1.2.1/bin/generamba:5:in `<top (required)>'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/bin/generamba:23:in `load'
	from /Users/maksim.bazarov/.rbenv/versions/2.3.1/bin/generamba:23:in `<main>'

@Beniamiiin @etolstoy I don't want to upset you, but there are also one more issue related to this feature. When i try to call generamba template install with template which is using this new feature i got same error as described above.

generamba template install fixed in 1.2.2, thanks everyone.


Can it port to .net core?

It's a great project and wish it can alive.

Sorry for the late response. Short answer: maybe, but I don't think it's worth pursuing.
There are 2 components of Workflow, the runtime and the designer.
3 years ago I run into problems when WF designer were used in mixed project environments (mixed .dll-s targeting standard, core and full framework), see https://github.com/dotnet/sdk/issues/1930 and https://github.com/dotnet/sdk/issues/1522#issuecomment-380507559. As I see, nothing improved on this front.
3 years ago UIPath embraced @dmetzgar's coreWF project (an unofficial port of WF runtime), see UiPath/corewf. They worked hard to make it run on standard and core. As I see, it can load XAML files, but editing them with designer is challenging. It is still in the experimental phase, though I don't know the limitations.
I'm not a professional developer, only an enthusiast, who sees Orleans and Workflow as really powerful technologies, created this Orleans.Activities project as a proof of concept, but I couldn't fight these uphill battles. After @sergeybykov (project lead) left the Orleans project to work on workflows at Temporal (see Why I joined Temporal), I gave up my last hope, that Orleans and Workflow will ever mix. I came back to github now, after 2 years, only to delete all my subscriptions.
My guess is, that Microsoft will never port, or help to port WF runtime and WF designer to anywhere, even though these are used internally and even these are widely used in corporate environments. Nobody knows why.


Couple BPMN Message elements to their events

Is your feature request related to a problem? Please describe.
When you have a process with a lot of message events, you get hints for each message element. Like
message Message_13w74np PERMISSION_TO_OPERATE

    TASK: Please define a correlation key.

They are hard to find in the diagram, as they are indirectly bound to intermediate or boundary events.
Describe the solution you'd like
Couple the output of the message to the events that are referencing them.
Then the event can be highlighted in the diagram.
Describe alternatives you've considered
nothing
Additional context
nothing

The message belongs to the event element, so it should stay there in the result.
What could be done is to create references in the result towards the event element:
Current element result:
{
    "messages": [],
    "elementId": "sendMessageEndEvent",
    "elementName": "Result sent to requester",
    "elementType": "endEvent"
}

Could be:
{
    "messages": [],
    "elementId": "sendMessageEndEvent",
    "elementName": "Result sent to requester",
    "elementType": "endEvent",
    "references": "Message_12345"
}

This would make it easy for an implementation against the API to find related messages as well.
wdyt @ingorichtsmeier ?

This could be a first step to make it easier.
But the better solution is to add the output for the message element to the boundary event directly.
The person using the modeler didn't see the extra BPMN Element for the message in the canvas or the property panel.

We can play with this diagram to find the best solution:
message-example - Kopie.bpmn.txt

Making the output readable is not part of the JSON response rather than the tool that presents the results.
What I found out during working with the linter rules is that it would probably make sense to create bidirectional relations:
{
    "messages": [],
    "elementId": "sendMessageEndEvent",
    "elementName": "Result sent to requester",
    "elementType": "endEvent",
    "references": ["Message_12345"]
}

and
{
    "messages": [],
    "elementId": "Message_12345",
    "elementName": "sendSomethingMessage",
    "elementType": "message",
    "referencedBy": ["sendMessageEndEvent"]
}

The references can be used to find related events quite fast-forward.
The referencedBy helps the linter to find the element ids the linter rules should be presented on.
The same would apply to any bpmn-js plugin and the structured presentation of results.

With a more intelligent linter rule, this works like a charm, even without the references in the JSON

Is this the desired result @ingorichtsmeier ?

yes.
I think that the severity should be WARNING, as an active change is required and the action is more than double check.

A WARNING tells you that something is not possible with Camunda 8.
A task is a general call to action. This might be a double-check or something that needs to be defined by the modeling person.

Yeah, I'm unsure here.
Right now we have only tasks to double-check, and the model can be deployed without following them.
Without a correlation, Zeebe rejects the deployment. From the modeler linting you will get an ERROR.
And the correlation variable is not obvious when you compare message correlation in Camunda 7 and 8.
These are arguments to set it to WARNING.
Maybe we should change our informal definition of WARNING: You have to do something to get the process diagram running on Camunda 8. This will include everything that is not possible in Camunda 8. And could be supported with links to more documentation.

We should discuss this in a separate ticket. I will create one and mention this discussion.
I would like to share what my latest progress is capable to do with the check result:

Also, all receive events are marked with a TASK.
I will create a PR to close this ticket.


[esphome] Dallas, rotary_encoder, ht711 and dht not working

Compilation error:
undefined reference to `esphome::InterruptLock::InterruptLock()'

Due to it not being defined for LibreTuya

Solution
#elif defined(USE_ESP32) || defined(USE_LIBRETUYA)

Dallas (and others probably too) use micros() inside interruptLock blocks, which is also broken.

Fixed in #28.


Added Game #4576 : IKnowYou - Mind Reading Game

PR Description 📜
The IKnowYou game revolves around mind reading. Users will be prompted to provide their responses to specific questions, and after processing these inputs, the game will generate an output that aligns with the users' thoughts, effectively reading their minds.
Added New Game [IKnowYou] #4576

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for website preview in assets/images
[x] I have added entries for my game in main README.md
[x] I have added README.md in my folder
[ ] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Hey @vansh-codes, you can't open another pull request before completing the previous one 😀
You already have the following 1 open pull request(s):
#4569

Thank you @vansh-codes ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Thank you  @vansh-codes , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


edm_model_writer::write_model() doesn't seem to produce correct XML metadata

After fixing linux code in order to support prefix and namespace in xmlhelpers.cpp
(see pull request  #18) I am wondering about edm_model_writer::write_model() and edm_model_writer::write_schema()
I may be wrong, but I had to make some changes in edm_model_writer.cpp in order to:

pass successfully the test on http://pragmatiqa.com/xodata/#
successfully connect Excel + Power Query to my Linux server through odata

Take a look to edm_model_writer::write_model():
It start with the following calls:
write_start_element(U("Edmx"), U("edmx"));
write_attribute_string(U("xmlns"), U("edmx"), U(""), U("http://docs.oasis-open.org/odata/ns/edmx"));
write_attribute_string(U(""), U("Version"), U(""), model->get_version());
Take a look to write_start_element(U("Edmx"), U("edmx"));
From what I understand, write_start_element takes 2 args:
xml_writer::write_start_element(
const string_t& elementName,
const string_t& namespaceName)
and just make a call to write_start_element_with_prefix(U(""), elementName, namespaceName);
which takes 3 arguments:
xml_writer::write_start_element_with_prefix(
const string_t& elementPrefix,
const string_t& elementName,
const string_t& namespaceName)
So, write_start_element(U("Edmx"), U("edmx"));
will resolve as (Edmx xmlns="edmx")
(Sorry, I replaced XML tag bracket per parenthesis as brackets content doesn't show...)
Both following write_attribute_string() calls are correct and the global result on Linux is:
(Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" xmlns="edmx" Version="4.0")
this xml element doesn't match those of the welknown example http://services.odata.org/V4/Northwind/Northwind.svc/$metadata below:
(edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx")
Solution:
By simply replacing write_start_element(U("Edmx"), U("edmx"))
by write_start_element_with_prefix(U("edmx"), U("Edmx"))
in edm_model_writer.cpp, I got this:
(edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0")
Which seems to be much more correct.
I got the same issue with
write_start_element(U("DataServices"), U("edmx"));
that should be
write_start_element_with_prefix(U("edmx"), U("DataServices"));
and in edm_model_writer::write_schema():
write_start_element(U("Schema"), U("ns"));
replaced by write_start_element(U("Schema"));
write_attribute_string(U("xmlns"), U("ns"), U(""), U("http://docs.oasis-open.org/odata/ns/edm"));
replaced by write_attribute_string(U(""), U("xmlns"), U(""), U("http://docs.oasis-open.org/odata/ns/edm"));
With these 4 changes, I succeed in passing tests and connecting to excel.
Being new to odata stuff, Maybe I'm missing something...
Can someone tell me if I'm wrong and why?
Thanks.

Thanks for finding the issue. I think your perception is totally correct. We should have used XML prefix for those elements. Would you please send another PR for this?

Thanks for validation. I'll do this as soon as possible.


[FEATURE] Account deletion hook

It would be great if a hook for account deletion can be added.
This way we can clean up any storage objects that are not directly associated to the account.
We've tried setting up a hook for RegisterAfterDeleteStorageObjects but this is never fired when deleting an account even though the storage objects from the account get deleted.
So currently there is no way to run some code when an account is deleted.

@Rojoss What situations do you have where you'd have storage objects owned by a user that are not marked as owned by that user in the storage engine?

@novabyte For example we store a list of users that assisted you which is stored on an object owned by the user that got assisted.
Another example would be for custom logic when an account is deleted, let's say we have a (non realtime) turn based match between 2 players and 1 player deletes his account, then the match needs be be destroyed too and the other player should be notified.


Custom list deleting apps

I had unchecked Microsoft app installer, and NVIDIA Control panel, yet it still uninstalled these 2 apps, how could I get microsoft app installer back?

https://apps.microsoft.com/store/detail/9NBLGGH4NNS1
Please pay attention how many there are unread and unresolved issues in the repo. You're not the first who has destroyed Windows using this script...

Wasn't able to install it without it asking for the app installer.. lol. Had to use an external program but I fixed everything, I think.


Error: CEF runtime already initialized. at Xilium.CefGlue.CefRuntime.Initialize

Hi again. My previous probem fixed, js2csharp works fine.
Now, can you help me with this:
2019-08-19 00:42:51.309 [INFO] Running Windows chromium 70.0.3538.102 2019-08-19 00:42:51.355 [ERROR] Oops! Something went wrong.     CEF runtime already initialized.           at Xilium.CefGlue.CefRuntime.Initialize(CefMainArgs args, CefSettings settings, CefApp application, IntPtr windowsSandboxInfo)    at Chromely.CefGlue.BrowserWindow.HostBase.RunInternal(String[] args)    at Chromely.CefGlue.BrowserWindow.HostBase.Run(String[] args)
I got this when try to open second window by Run method (in another thread). Exception from here https://github.com/chromelyapps/Chromely/blob/master/src/Chromely.CefGlue/BrowserWindow/HostBase.cs , line 449 , method CefRuntime.Initialize(mainArgs, settings, app, IntPtr.Zero);  . Is it bug or am i starting a new window incorrectly?

I think better to add warning message in log when CefRuntime initialized before instead to 'killing' Run method.

I've forked your project and rerwited method RunInternal. Add check if CefRuntime is initialized. But now there new error in Chromely.CefGlue.Winapi.BrowserWindow.NativeWindow.cs .

So what can i do now? It's really important for my project to run multiple windows.

@KogerCoder
I will suggest you make them 2 distinct processes and run each separately.
Combining them will be a lot of work. This will require you creating 2 controls - like static controls and making them parent of the browser. Doable but will require extra work.
Then add the static controls to the window.
There might be other options but this is the only one I have tried.

Doesn't sound very good. If i will start new browser instances in another process - i think it will be hard to make fast interaction between js and c#.
It seems easier to use CefSharp and Wpf and forget about linux support.

Yes. CefSharp/CefGlue + WPF will do it. Chromely is designed for single process, single browser.


ActionView::MissingTemplate

gem 'active_scaffold_export'
gem 'axlsx_rails'
bundle install. Add to application.css:
*= require active_scaffold_export
class UsersController < ApplicationController
active_scaffold :"user" do |conf|
conf.actions.add :export
# you can filter or sort columns if you want
conf.export.columns = %w(username email level active)
# you can define a default values for the exporting form
conf.export.default_deselected_columns = %w(active)
conf.export.default_delimiter = ";"
conf.export.force_quotes = "true"
end
end
when click Export btn
http://<IP_ADDRESS>:3000/users/show_export
ActionView::MissingTemplate (Missing partial #<Proc:0x000001372a20a118 C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/actionview-<IP_ADDRESS>/lib/action_view/_layouts.rb:389> with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder, :axlsx]}.
How to deal with the Missing Template issue ?

Better to use caxlsx_rails. Detect for supported formats have been improved to prevent issues like this one


Use bundler to make Rails work

Thanks for contributing to the buildpack. To speed up the process of reviewing your pull request please provide us with:

A short explanation of the proposed change:

Implements the minimum operation of bundler.
This PR is influenced by composer-cnb.

An explanation of the use cases your change solves

[ ] I have viewed signed and have submitted the Contributor License Agreement

[ ] I have made this pull request to the develop branch

[ ] I have added an integration test

All pull request submitters and commit authors must have a Contributor License Agreement (CLA). Click here for details on the CLA process.

oh...PDF...

Hey @pyama86 , thanks for the PR! We really appreciate the help! I noticed that you weren't a fan of the CLA, so I closed and reopened the issue to trigger our new CLA process, which can be done without a PDF. Once you sign that, we'll be happy to take a look, and hopefully merge it in :)

Hi @dfreilich
Thank you for the change from CLA PDF signature to signature system.
But it doesn't seem to work.
I think the CSS is probably wrong.

OS: Windows 10
Browser: 77.0.3865.120（Official Build） （64bit）

and hopefully merge it in

Thank you, when all my work is done, remove WIP and mention.
Thanks！

@pyama86 If you're having trouble with the EasyCLA system, please file a support ticket (the link is above). I think that we need your confirmation before we can use the code.

@dfreilich I was able to sign!
Thanks!

@Zanadar Thank you for your reply. This PR is work in progress. Remove WIP if it works well in my rails apps.
I am very grateful for the kindness of the people in your company.

@Zanadar @dfreilich
The implementation I needed is done and the Rails app is working.
This cnb only installs bundler and gem packges, and bundler is installed in the dependent ruby and launch command is supposed to use procfile-cnb.
I'm going to maintain it long time, so I'd be happy if you could consider merging.

Hey @pyama86 apologies it took us so long to get to this. We have migrated work being done on CNB's here & are working to make this project truly 'open-source'.
During the interim we have changed the the technical direction of this project & are currently working on adding bundler & rails support using our new framework.

Hi! thank you for sharing!
I understand.


Added Sphinx documentation and readthedocs.io integration

Codecov Report

Merging #7 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #7   +/-   ##
=======================================
  Coverage   96.79%   96.79%
=======================================
  Files          26       26
  Lines         905      905
=======================================
  Hits          876      876
  Misses         29       29

Continue to review full report at Codecov.

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


createHead doesn't work in prod unless i call .push({}) on it

Environment
unhead: ^1.8.9
node: 20.10.0
Reproduction
import { render } from "preact";
import { Link } from "react-router-dom";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import { createHead, useHead } from "unhead";

createHead();

function Home() {
	useHead({ title: "Home" });

	return (

Hello World

			<Link to="/about">About</Link>

	);
}

function About() {
	useHead({ title: "About" });

	return (

About

			<Link to="/">Home</Link>

	);
}

function App() {
	return (
		<BrowserRouter>
			<Routes>
				<Route index element={<Home />} />
				<Route path="/about" element={<About />} />
			</Routes>
		</BrowserRouter>
	);
}

const root = document.querySelector("#root");

if (root) render(<App />, root);

this works in dev perfectly. but in prod you have to do createHead().push({}) for it to work again.
Describe the bug
see Reproduction
Additional context
No response
Logs
No response

Hi @xxxhussein
Thanks for the issue. Is it possible to make a StackBlitz reproduction? I don't know preact or how to set it up.
There's a Vue starter here that you may be able to start from https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json

Hi @xxxhussein
Thanks for the issue. Is it possible to make a StackBlitz reproduction? I don't know preact or how to set it up.
There's a Vue starter here that you may be able to start from https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json

i had this in both react and preact. you can start a project with either using npm create vite

Happy to look into this but I need a reproduction on StackBlitz, will close for now.

i have the same problem~


support pause and resume of audio

This is a fix for #37. This instructs the child process to hide it's binary output.
Some other idea that I could use your input on:

API names: could also be mute() and unmute() - or something else entirely?
Could return cp - might not actually want to expose this, but it is an option
Verbose logging (could add log messages for these events when verbose logging is on)
Add state to keep track of pause and add isPaused()
It's not very DRY, which could be easily fixed

Tested on Ubuntu 16.04... working 100% thanks @evancohen

This looks awesome, just a few minor (non-blocking) concerns;

I wonder if this will work transparently for Windows systems
I wonder if it works for arec just as it does for sox

The API is 👌 since we are pausing and resuming and not recording silence.
We should also call cp.stdout.pause() and cp.stdout.resume() so we can use the streams internal isPaused() method to track the state of the recording.
On top of that, if you could add these methods to the README that would be 🤘

Looks like you've implemented this in v1 #39! Closing this out.
.

so how to stop streaming i am trying to implement same but can't stop streaming stop and pause is not working


update embedding model

We should try to use the Jina AI embedding tools as they are a hackathon sponsor.
code_search.py uses HuggingFace for embeddings, we should try to change that to Jina.

I agree. As I said we can use whatever is suitable for the process.
On Thu, 8 Aug 2024, 07:16 Jack Archibald, @.***> wrote:

We should try to use the Jina AI embedding tools as they are a hackathon
sponsor.
code_search.py uses HuggingFace for embeddings, we should try to change
that to Jina.
—
Reply to this email directly, view it on GitHub
https://github.com/jackabald/TiDB-Hack-NL-repo-search/issues/16, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYWJSHPAHJQIFM53ETDKFTZQLEWPAVCNFSM6AAAAABMFPVJ2KVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ2TINRZGAZDMMA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

https://jina.ai/news/full-stack-rag-with-jina-embeddings-v2-and-llamaindex/
info on using jina with llamaIndex

Wow. Thanks for sharing though.
On Thu, 8 Aug 2024, 10:45 Jack Archibald, @.***> wrote:

https://jina.ai/news/full-stack-rag-with-jina-embeddings-v2-and-llamaindex/
info on using jina with llamaIndex
—
Reply to this email directly, view it on GitHub
https://github.com/jackabald/TiDB-Hack-NL-repo-search/issues/16#issuecomment-2274968667,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYWJSCFWLZSWQ4L7VJNWRLZQL5IBAVCNFSM6AAAAABMFPVJ2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZUHE3DQNRWG4
.
You are receiving this because you commented.Message ID:
@.***>


join page roughed in

Basic join page structure and style with links complete

I want to add a margin to the H1 elements so that the 3 buttons and labels so there is a little spacing between them. How do? Bulma is weird.

Ah, that got weird due to my split PR's.....bulma added helper classes for adding margins/padding easily in the new version (.9). They're coded into this PR but probably don't display right unless you update bulma. I did that locally but didn't include the package update in this PR as it was a major update not a patch and so I wanted to keep that separate in case I broke something else.


🐞[Bug] Button small variant incorrect padding

The small variant of the button is not applying the correct padding.
Should have 3px 10px padding, currently has 6px 12px

Fixed by #682


logging: journald may rate limit our logs with full debug on

Enabling full debug and running multiple containers sequentially or concurrently can cause journald to rate limit (and therefore drop) some of our system log messages.
Document this fact, how to identify if it is happening, and what the solutions/workarounds are.
Related to https://github.com/kata-containers/runtime/issues/450
Fixes include:

upping or turning off the journald rate limits (I need to see if we can do this on a per-unit basis - I suspect so)
making use of the file based json logs that we also capture (at the bequest of docker), which are complete, as they do not get filtered through the system log. This can involve a 'shell script indirector' for the runtime, to ensure we capture the logs before docker deletes them again (on docker rm).

Related thread for more background info: https://github.com/openshift/openshift-ansible/pull/3753

This info should go in the dev guide as a minimum I think.

@jodh-intel you mean how to identify and then configure away the problem, or the openshift link?
I'm writing the generics into the dev guide right now. Will PR that rsn.

I mean removing the systemd rate-limit.


WIP: Create python package from repository

This will create a python package installable using pip.
The package can be later published on pypi for easier access.
Before merging I would squash everything into one commit if approved.
Scripts
the installation provide an archive command that will be available from the shell and will execute the archive.py script
Setup
The important part is the setup.py file as it contains metadata and instructions for pip.
I filled it with the information I could find and it should be ok but as you are the author please review it.
config.py
As this file is considered editable by the user maybe we should move it somewhere suitable (~/.config/bookmark-archiver/config.py) and access it at runtime.

I haven't forgotten about this, but I probably won't have time to fully review it and merge it anytime soon.
It includes a lot of changes so I want to make sure I thoroughly test it on mac and linux before merging.  Currently spending all my time on https://oddslingers.com, but I'll post back here once I get a chance to test this branch.

Let's move when we are ready, I'm in no hurry and would like to not break anything

Fyi just to keep you in the loop, this is my next planned refactor for BA: https://docs.google.com/presentation/d/17gPkY6chAzDDXCce1QkTdRwl2nChESdjfibal-n8TgM/edit?usp=sharing
I'm adding a django backend, sql database, and scheduler in order to build a GUI that lets people run scheduled imports from multiple sources, but I still want to keep the cli version available for free forever.
I think the pypi package is the perfect solution for initial setup option #3 in the slides.

looking at your pr, archive.py and and archive.config can actually be included on module. the command line can be configured using setup.py's entry point.

They could be included but then you are losing a separation of concern. Scripts are executable the module is a library.

e: also with multiple entry point it can also run server, i.e bookmark-archive for command line and bookmark-archive-server for server

yes you are right but I wouldn't use a command to start the server, it should be a process started by your init daemon somehow. Flask is just a framework but Python supports something called wsgi as an interface with webservers, what you would like is to have a wsgi deamon load you app.
@pirate I thought a lot about configuration files and I got to the point where I am 100% sure that pip shouldn't write to system configuration paths like /etc/. This is handled by packages and distributions and I will remove the creation of system wide configuration during installation.
Cheers

looking at your pr, archive.py and and archive.config can actually be included on module. the command line can be configured using setup.py's entry point.

They could be included but then you are losing a separation of concern. Scripts are executable the module is a library.

https://stackoverflow.com/questions/2996110/what-is-the-difference-between-a-module-and-a-script-in-python
based on this https://packaging.python.org/tutorials/distributing-packages/#scripts

Although setup() supports a scripts keyword for pointing to pre-made scripts to install, the recommended approach to achieve cross-platform compatibility is to use console_scripts entry points (see below).

but if cross-platorm compatibility is no concern, i think it can be skipped

e: also with multiple entry point it can also run server, i.e bookmark-archive for command line and bookmark-archive-server for server

yes you are right but I wouldn't use a command to start the server, it should be a process started by your init daemon somehow. Flask is just a framework but Python supports something called wsgi as an interface with webservers, what you would like is to have a wsgi deamon load you app.

i actually got this idea after looking at search.py on the pr and this feature at buku
https://github.com/jarun/Buku/pull/257
it need more work to deploy (one from this http://flask.pocoo.org/docs/0.12/deploying/) but user can run the local host easily

I'm removing flask FYI in favor of django, see the server branch.
The django will be started via runserver or wsgi.
Django will be used to manage the migrations for the SQLite database as well.

In the config section for the templates I added this but now I don't know if it's cool with the new django approach, maybe I should scrap it

I can make ConfigParser work with Django, but I cant promise I'll be able to get the django alpha branch in a usable state within the next 6 weeks.
Whether you want to wait till I'm done with django in a few months, or work on it as-is and let me handle the merge later is up to you.

Ok so, this is working on my side but here's the catch, using the templates is going to be a little strange.
I would prefer to remove this template configuration at all as I don't really know if it's compatible with django but I guess it could be.

the template configuration is not using the configuration file
templates are stored in the package as package_data
static are stored in the package as package_data
templates are retrieved using pkg_resources, this means that we can define an interface for template packages. I don't know if this is compatible with django tempates.
static are retrieved using pkg_resource, again an interface is possible.

templates packages
This means that when using pkg_resource.resource_filename we can pass a name for a package containing the following data.
This name could be the value in the configuration file, e.g:
[templates]
package=foo

And then in the package foo the directory templates contains the following tree
foo/templates/
├── index.html
├── index_row.html
├── link_index_fancy.html
├── link_index.html
└── static
    ├── archive.png
    ├── external.png
    └── spinner.gif

1 directory, 7 files

Django can easily import any user-supplied template dir from the config file, without it needing to be a package.  We can tell django to use its own built-in templates folder first, but prefer any templates found in a user-provided folder if they exist.  Inside the template files I'll also need to translate the syntax from python string templates to django handlebars, but that's not too difficult.
server/settings.py:
from bookmark_archiver.config import TEMPLATES_DIR

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates', TEMPLATES_DIR],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

does this line correct?
https://github.com/edoput/bookmark-archiver/blob/16c0e4196c544e738ac32ca7485dd6c00c60cdc8/bin/archive#L94
or this from actual upstream repo
https://github.com/pirate/bookmark-archiver/blob/a532d1154910577f7954897c874e052dda70e73f/archive#L119
for example after installing it on virtualenv, run archive --help and
(Pdb++) sys.argv
['/home//envs/bookmark-archiver/bin/archive', '--help']
(Pdb++)
['/home/q/envs/bookmark-archiver/bin/archive', '--help']
(Pdb++) set(sys.argv).intersection('-h', '--help', 'help')
set()
which would be evaluated as false.
add another bracket?
(Pdb++) set(sys.argv).intersection(('-h', '--help', 'help'))
{'--help'}

Good catch, yeah it just needs another bracket.

if it is turned into module, it can be tested
something like
main('archive', '--help')
# equivalent to
# $ archive --help

on source code something similar to this
def main(**args)
	args = args if args else sys.argv
	....

and would be better if there is proper argparse on that module.

e: also with multiple entry point it can also run server, i.e bookmark-archive for command line and bookmark-archive-server for server

https://github.com/rachmadaniHaryono/bookmark-archiver/tree/feature/server
kinda mock up for that

it use this pr as base
it can be run using default flask cli, all option is also provided from flask

any command can be added using flask cli. see http://flask.pocoo.org/docs/1.0/cli/
with this, a command to import to database can be added. flask migration can be used to migrate the database. see https://flask-migrate.readthedocs.io/

unfortunately no index files link on link index page is not working. need more configuration on how to setup open directories with flask
no db yet, using local json
only tested with default setting from this pr, with some changes
some difference on time handling, some text for time is more verbal
no option to change template

FYI all here, heres my roadmap for bookmark archiver:
Short term:

break up archive/ into a plugin architecture, so that [link parsers], [index types],  and [archive methods] can be added and tested by people on their own
make archive/ into a python package, so that individual BA components are usable separate from any future backend:
pip install bookmark-archiver; archive "..." or
import pocket from bookmark_archiver.parsers or
import archive from bookmark_archiver.archive_methods
create a django-based backend with SQLite database and migrations, full text search, link adding/removing page
...
Long term:
allow bookmark archiver backend instances to be linked together to share pages in a federated archive network (far in the future)
allow people to upload archived resources to a public federated BA network directly (e.g. upload an old ISO or video game)

I'm pretty dead-set on Django over Flask, having worked with both for many years, imo the Django ORM with it's migrations system is a much superior developer and user experience imo.

I'm going to close this for now until the new roadmap is finalized, as it modifies the python package structure a fair amount:
https://github.com/pirate/bookmark-archiver/issues/120
I'll definitely take inspiration from this PR in the process of implementing the new layout, but it'll likely  to take some significant work on my side before it's ready for release with the new structure.


Support for NWS Local Storm Reports

Add support for NWS Local Storm Reports as described at https://www.spc.noaa.gov/climo/online/
A storm report should display on the map. When hovered over, additional information about the storm report should be displayed.
Storm reports should also be available in table format, similar to warnings. Maybe group them under alerts, using a separate tab?

This is supported using placefiles. Local storm reports are available here:
https://placefiles.supercellwx.net/


pin mergo version

resolves #152

and it appears to change: https://github.com/kubernetes/kubernetes/blob/v1.11.6/Godeps/Godeps.json#L1996
this is going to be fun.

/lgtm
rebase


Adding godoc generated documentation

Description
Adding generated documentation to docs/packages
Fixes #37
Type of change

Documentation update

Testing steps
Regular CI

@tisnik a new religion is coming :-D

Codecov Report

Merging #38 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #38   +/-   ##
=======================================
  Coverage   20.93%   20.93%
=======================================
  Files          10       10
  Lines         578      578
=======================================
  Hits          121      121
  Misses        442      442
  Partials       15       15

Continue to review full report at Codecov.

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


Missing Sprite method get_item_rect()

Godot Version: 3.0.beta.custom_build.c037f63
OS: GNU/Linux ~ Linux Mint 18.3
Issue Description
When using GDScript, I was unable to access the method get_item_rect() to take into account my sprite's dimensions. On investigating the documentation, this method is also missing from the "latest" documentation. There appears to be no replacement method or variable in the documentation.
Reproduce Steps

Create a Sprite
Assign Texture to Sprite
Add script to Sprite
Unable to access Sprite "size" parameters

I think this issue can be closed now


feat(docs): Clean up Success Stories page

First pass at cleaning up the formatting on the Success Stories page. Will make additional improvements in the future. Changes include:

Putting the Case Studies and Success Stories in alphabetical order by company
Shortening the Avast case study quote to be a similar length to the other ones
Adding a "Case Studies" header to the case study section
Removing the duplicative call to submit a testimonial
Displaying a short quote for each testimonial, and an option to click for more detail
Pulling the "Videos" header outside of the blue box
Minor cleanup of some of the text in the testimonials for grammar / readability

Suggestions for additional styling improvements welcome. On the next pass will look to have both testimonials in a row expand when one of them is expanded (right now you expand one and just get a lot of blank space on the other until you click it.

Thanks for doing this! I need to head out, but I've made a note to check this out tomorrow. Love all the text refinements

I'll let @gcomstock have a look. If there's no action by tomorrow I'll go ahead and merge it.

Thanks @dorbin @gcomstock! Greatly appreciated. Very happy to address other design or text suggestions in further PRs. Also have some more case studies, videos, and testimonials on the way in the coming weeks :)


Candle Optim: separate crate for optimisers

This creates a new crate called candle-optim.
The main optimizer trait still lives in candle-nn as moving it out would currently be a breaking API change.
This currently adds 3 new optimizers:

MomentumEnhancedSGD able to implement all functionality of pytorch SGD although currently does not validate the parameters in the same manner
AdaDelta
AdaGrad

These have all been checked against their implementation in pytorch 2.1.0+cu118.
The main advantage of this being in the huggingface/candle repo as opposed to my own is visibility, to increase the likelihood of people able to implement other algorithms for optimisation and people able to speed up the current algorithms (such as implementing and equivalent of for_each and fused methods in candle)

As an alternative, if it is preferred to have optimisers be completely separate, see https://github.com/KGrewal1/optimisers/tree/master

I think separate repo would be great to start with and favor clean APIs and not tying things too much together. Also better for iteration on the optimizer side and when it comes to discoverability we should add it mentioned in the readme.
We can check how it evolved in a couple weeks and revisit if needed.

Great sounds like a plan, though I'm likely to have to slow down a bit due to uni work now I've been given stuff to do (also that indeterminism on mac CI is really irritating).

Let's maybe close this PR now that the separate crate is available @KGrewal1 ?


use callback to render a cell from the parent  component

how can I use the callback to render a cell from the parent component? I don't want all my render functions to go on "my-vuetable" component.
user-config.js
...
{
    name    : 'gender',
    callback: 'renderGender'
},
...

UserComponent.vue
import UserConfig from './user-config.js';
import Datatable from './MyVuetable';
...
methods: {
    renderGender(value) {
        return value === 'M'
            ? 'Male'
            : 'Female';
    },
}
...

This doesn't work. That function is not being called.
Any help?

Vuetable only looks for the given callback function name from within its field definition and the parent instance. My guess is that your function is in the grand-parent instance, so it didn't work.
UserComponent.vue
 +-- MyVuetable.vue
      +-- Vuetable

In v2.0, the callback will only support Function, so function lookup will no longer work. I would recommend putting the callback (formatter) function directly in the field definition itself for field specific or use some kind of global instance function for reusable functionality.

Thanks @ratiw!
I already did. In fact I created a "utilities" file in which I have all my reusable render functions. The redenderDate function, for example,  will be used in a lot of places so it makes no sense declaring it on every grid configuration file.

How can I pass extra arguments on the callback function if used like this?
datagrid-utils.js
...
renderDate(value, format = 'DD-MM-YYYY') {
    return (value === null) || moment(value, 'YYYY-MM-DD').format(format);
},

user-config.js
import Utils from './datagrid-utils';

...
{
    name    : 'birthdate',
    title   : 'Birth date',
    callback: Utils.renderDate
},


Remove moment from public API

We should remove moment from the public API and just use timestamps and Dates
We should also consider dropping support for Moment entirely since it's purely worse than Luxon. I would especially like to get rid of Moment since it lacks timezone support and is very large

I've been switching everything over to Luxon, but cannot switch web apps that use Chart.js since Chart.js needs Moment anyway. How much of Moment does Chart.js actually use? And could it be replaced with a (much smaller) utility?

@jazoom you may be interested inhttps://github.com/chartjs/Chart.js/pull/5522

@benmccann Thanks for pointing that out. I searched the issues but didn't find that one for some reason.

@benmccann any idea what the hold-up is for accepting #5522 pull request?

The reviewers are all busy and doing this just as a volunteer effort on top of their day jobs

OK, thanks for clarifying, just wondering if there was some deeper refactoring required or if it somehow hinged on a future major release. Looking forward to its acceptance so that moment.js stops bloating production builds!

Hi, I don't know Luxon but you could consider dayjs?
In my app I just did a search and replace moment ->  dayjs and everything worked fine.

@AoDev did the same. It hasn't been a simple search and replace but I was able to migrate the whole app from moment to dayjs within 15minutes (the only issue i encountered: en-gb locale which worked in moment has to be renamed to en in day js).
Now I need to get rid of the moment dependency of chartjs

date-fns would be a good option since you can require/import just the functions you need without bundling the entire library... I am able to get chart.js to work fine using chartjs-plugin-datalabels but I have to add moment as an external in the webpack config to prevent it from getting bunded (because of chart.js). This is more of a nuisance then it sounds since I'm using create-react-app

Perhaps using dayjs, which offers the same functionalities as moment.js, but with a fraction of the bundle size, would be a better option IMHO


Custom search and close icon

Hi,
I love your package, it solved my problem perfectly :)
I added a slight modification to allow the developer to add their own custom search icon and close icon.
Feel free to edit it, if it doesn't fit your naming/style conventions.
Thanks

@UchennaOkafor thank for your pull request. Let me check

Thanks for making the changes 😆


Process support categorization data

We should take our list of issues in the API docs and find the most problematic topics and examples.

Done by @miherlosev.


Mouse Cant Click

I have a problem when i installed this it's works but looks like any keyboard or mouse command didnt work? please tell me
Im Using Redmi 9 (6/64)

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#mouse-and-keyboard-do-not-work

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#mouse-and-keyboard-do-not-work


[SSH] - Unable to connect to App Service SSH through "az webapp ssh" command

az feedback auto-generates most of the information requested below, as of CLI version 2.0.62

Describe the bug
Cannot connect to App Service SSH using "az webapp ssh" command. It states "Connection is not ready yet, please wait", and waits until times out.
To Reproduce

log into our tenant in Azure Portal
open cloud shell
type the command "az webapp ssh --name [our-app-service-name] -g [our-resource-group-name]-rg -t 30"

Expected behavior
Connection on our App Service through SSH.
Environment summary
We are using Azure portal own CLI (azure-cli 2.1.0) and also DevOps task "AzureCLI@2", both failing to reach our App Services.
Additional context
We have several App Services into the same App Service Plan, none of which can be connected through the "az webapp ssh" command. We are able to connect the SSH via Azure Portal > App Service > SSH normally.
Until last week we could (although not consistently) connect using this command. Now we just cannot.

webapp

Hi, any news? All connections set using "az webapp ssh" command are highly unstable, we just cannot rely on this command to connect to our App Service.

@btardif can you please check with the Linux folks on this command please. Thanks.

I see the same behavior as @garimpeirodouniverso, both running the CLI locally on my machine, and from Cloud Shell. I hadn't tried az webapp ssh before today, so I've never seen successful behavior. I also get a timeout error with az webapp create-remote-connection.

Has anybody had any insight regarding this topic?

I met the same issue. I was using CLI on VM machine. I could not access ssh from the terminal or from the website.

Currently seeing this in Web App for Containers.

having the same issue when I use "--slot slotname" , I'm using osx.

Unable to reproduce bug. I was able to SSH via portal and CLI - insufficient details for further reproduction. closing this issue. FYI, this command is planned to be deprecated and replaced, timeline TBD.

@seligj95 I cannot connect from the portal neither from the CLI. It's a real bug. You can ask form extra information, but closing it like that is absurd.
What information do you need?

@gagarine Thank you for the feedback. We are aware of this instability associated with these commands and are prioritizing updates. As this was an old GH issue with few details that was unable to be reproduced, it was closed.
However, if you're still experiencing issues, I am happy to help. Can you confirm if you are able to connect using the menu item in the screen shot below? That can be found by navigating to your App Service via the portal and looking under "Development Tools" in the menu on the left hand side.

I wanted to say "Yes when the server is stable and running, yes (but still, unstable)" but I just tried it again, and it fails. Apparently now i had to disconnect from other Microsoft account otherwise it fail miserably:

Disconnecting from all other account was not enough, i had to "forget" them. Not great.
But when a project fail to deploy, then SSH become a nightmare. Certainly because the machine shutdown when not responding to ping. But if I try to ssh in, Azure should wake up the machine and stop trying to shut it down every 230 seconds...
And certainly it is linked with Microsoft multiple account, but regularly I have problem with authorization and get red cryptic message at the bottom of the web SSH windows...
And once you are finally connected, you end up with one of the worst "web ssh" I ever experienced. Even line return is broken :


helmchart create-database error "unable to connect to DB, tried default DB names: postgres,defaultdb"

Expected Behavior
I expected it to use the database name that's configured in the helm chart.
Here is the init container that's created from the helm chart
- command:
    - temporal-sql-tool
    - create-database
    env:
    - name: SQL_PLUGIN
      value: postgres12
    - name: SQL_HOST
      value: <IP_ADDRESS>
    - name: SQL_PORT
      value: "5432"
    - name: SQL_DATABASE
      value: citus
    - name: SQL_USER
      value: citus
    - name: SQL_PASSWORD
      valueFrom:
        secretKeyRef:
          key: password
          name: temporal-default-store
    image: temporalio/admin-tools:1.24.2-tctl-1.18.1-cli-0.13.0
    imagePullPolicy: IfNotPresent
    name: create-default-store
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-lxgvw
      readOnly: true

Here is the yaml used for the helm chart:
values:
    cassandra:
      enabled: false
    prometheus:
      enabled: false
    elasticsearch:
      enabled: false
    grafana:
      enabled: false
    server:
      config:
        persistence:
          default:
            driver: "sql"
            sql:
              driver: "postgres12"
              host: <IP_ADDRESS> # omited
              port: 5432
              database: citus
              user: citus
              password: blah #omited
              maxConns: 20
              maxConnLifetime: "1h"

          visibility:
            driver: "sql"

            sql:
              driver: "postgres12"
              host: <IP_ADDRESS> #omited
              port: 5432
              database: citus
              user: citus
              password: blah #omited
              maxConns: 20
              maxConnLifetime: "1h"

Actual Behavior
I expected it to use the citus database referenced.
> kubectl logs temporal-schema-ttjv2 -c create-default-store
2024-08-23T10:04:50.384Z	ERROR	Unable to create SQL database.	{"error": "unable to connect to DB, tried default DB names: postgres,defaultdb, errors: [pq: no pg_hba.conf entry for host \"fd40:6eea:20:81c1:8220:100:a45:1008\", user \"citus\", database \"postgres\", no encryption pq: no pg_hba.conf entry for host \"fd40:6eea:20:81c1:8220:100:a45:1008\", user \"citus\", database \"defaultdb\", no encryption]", "logging-call-at": "handler.go:94"}

Thank you for reporting this issue.
The error message indicates that the temporal-sql-tool is unable to connect to the PostgreSQL database because it cannot find an entry in the pg_hba.conf file for the provided host and user. This file controls how the PostgreSQL server accepts connections.
Could you please confirm the following:

pg_hba.conf contents: Can you share the contents of your pg_hba.conf file? This will help us understand what connection rules are in place.
Firewall rules: Are there any firewall rules in place that might be blocking the connection from the init container to the PostgreSQL server?

Once we have this information, we can try to identify the specific issue and provide a solution.

Thanks for reporting this issue.  The temporal-sql-tool command expects the SQL_DATABASE environment variable to be set with the name of the database to use. In the provided init container, the SQL_DATABASE variable is set to citus, however, the temporal-sql-tool command is trying to connect to postgres and defaultdb databases. The reason why is because when the temporal-sql-tool command is executed within the init container, it does not have any knowledge of the configuration provided in the Helm chart. The environment variables that you have set will be used only when the temporal-server command is executed.
To fix this, you can modify the init container to use the SQL_DATABASE environment variable instead of hard-coding the database names.
- command:
    - temporal-sql-tool
    - create-database
  env:
    - name: SQL_PLUGIN
      value: postgres12
    - name: SQL_HOST
      value: <IP_ADDRESS>
    - name: SQL_PORT
      value: "5432"
    - name: SQL_DATABASE
      value: citus
    - name: SQL_USER
      value: citus
    - name: SQL_PASSWORD
      valueFrom:
        secretKeyRef:
          key: password
          name: temporal-default-store
  image: temporalio/admin-tools:1.24.2-tctl-1.18.1-cli-0.13.0
  imagePullPolicy: IfNotPresent
  name: create-default-store
  resources: {}
  terminationMessagePath: /dev/termination-log
  terminationMessagePolicy: File
  volumeMounts:
  - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
    name: kube-api-access-lxgvw
    readOnly: true

This will ensure that the temporal-sql-tool command uses the citus database as expected.
For more information on how to use temporal-sql-tool, please refer to the documentation: https://docs.temporal.io/references/commands#temporal-sql-tool

Thanks for reporting this issue!
The logs show that the Temporal SQL tool is unable to connect to the database and is trying to use the default names, postgres and defaultdb.
The issue is that in your Helm chart, you are not providing the SQL_DATABASE value to the init container.
This means that the container is trying to connect to a database named postgres, and since the connection fails, the tool tries the default names postgres and defaultdb.
To resolve this issue, update your Helm chart to provide the SQL_DATABASE value to the init container as follows:
- command:
    - temporal-sql-tool
    - create-database
  env:
    - name: SQL_PLUGIN
      value: postgres12
    - name: SQL_HOST
      value: <IP_ADDRESS>
    - name: SQL_PORT
      value: "5432"
    - name: SQL_DATABASE
      value: citus  # This is the value you need to provide.
    - name: SQL_USER
      value: citus
    - name: SQL_PASSWORD
      valueFrom:
        secretKeyRef:
          key: password
          name: temporal-default-store
  image: temporalio/admin-tools:1.24.2-tctl-1.18.1-cli-0.13.0
  imagePullPolicy: IfNotPresent
  name: create-default-store
  resources: {}
  terminationMessagePath: /dev/termination-log
  terminationMessagePolicy: File
  volumeMounts:
  - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
    name: kube-api-access-lxgvw
    readOnly: true

With this change, the init container will now be able to connect to the citus database as expected.

Thanks for reporting the issue. It appears that you are missing the connection information for the SQL Host.  The SQL Host in the helm chart is not configured, but instead is referenced as <IP_ADDRESS> in the helm values. To resolve the issue, you'll need to replace <IP_ADDRESS> with the correct IP address of your Postgres host (which is <IP_ADDRESS>).
Here's how you can update the helm values file:

Edit the helm values file:

kubectl edit configmap -n your-namespace temporal-server -o yaml

Change the host parameter in the persistence and visibility configuration to <IP_ADDRESS>:

values:
    cassandra:
      enabled: false
    prometheus:
      enabled: false
    elasticsearch:
      enabled: false
    grafana:
      enabled: false
    server:
      config:
        persistence:
          default:
            driver: "sql"
            sql:
              driver: "postgres12"
              host: <IP_ADDRESS> # replaced <IP_ADDRESS> with the correct IP address
              port: 5432
              database: citus
              user: citus
              password: blah #omited
              maxConns: 20
              maxConnLifetime: "1h"

          visibility:
            driver: "sql"

            sql:
              driver: "postgres12"
              host: <IP_ADDRESS> # replaced <IP_ADDRESS> with the correct IP address
              port: 5432
              database: citus
              user: citus
              password: blah #omited
              maxConns: 20
              maxConnLifetime: "1h"

Save the changes to the file.

After these changes are applied, your Temporal server should be able to connect to the Postgres database.


License missing

Consider specifying a license for this repo.

Hi @ignoramous 👋🏻 Sorry for the lack of response, but I was traveling at the end of last week and didn't have access to GitHub most of the time. I have just added the MIT license.


Allow typst package to compile by itself

This PR adds a missing feature to time that is necessary to compile crates/typst.

Thanks!