BK7231Q WA2 Module effettive support

I have in my hands 3 no-name Tuya switches equipped with the WA2 module on which I can't actually find any information.
I anticipate that all the systems for reading or writing the flash have not worked. I tried with "cloudcutter" until soldering but it never seems to respond.
Let me start by saying that I have about 20 conversions from Tuya to ESPHome done with various modules and systems and this is the first time I have come across this type of module and I am stuck with it.
The module is the WA2 equipped with a BK BK7231Q referenced as Tuya but not present on tuya site :(
I haven't found many references online on libretiny that the card exists as supported while on the only forums I've found it seems that some are able to flash but without ever making it work.
Ref: https://www.elektroda.com/rtvforum/topic3929272.html
Ref: https://community.home-assistant.io/t/unkown-tuya-chip/153591/17
I'm on the first step... flashing! :(
All my attempts have failed and my doubt is that the bootloader is actually not usable and requires flashing via direct SPI.
Before doing so, however, I would like to understand if the module is actually supported and has anyone managed to use it or not. (in the second case I suggest inserting the note for posterity in the documentation! :) )
Every test with every system result always with the same result:
➜ Firmwares > ltchiptool flash read BK7231Q wifi-switch-module_tiya_orgfw.bin -d /dev/cu.usbserial-0001
I: Connecting to 'Beken 7231Q' on /dev/cu.usbserial-0001 @ 115200
I: Connect UART1 of the BK7231 to the USB-TTL adapter:
I:
I:     --------+        +------------------------
I:          PC |        | BK7231
I:     --------+        +------------------------
I:          RX | ------ | TX1 (GPIO11 / P11)
I:          TX | ------ | RX1 (GPIO10 / P10)
I:         RTS | ------ | CEN (or RST, optional)
I:             |        |
I:         GND | ------ | GND
I:     --------+        +------------------------
I:
I: Make sure to use a good 3.3V power supply, otherwise the adapter might
I: lose power during chip reset. Usually, the adapter's power regulator
I: is not enough and an external power supply is needed (like AMS1117).
I:
I: If you didn't connect RTS to CEN, after running the command you have
I: around 20 seconds to reset the chip manually. In order to do that,
I: you need to bridge CEN to GND with a wire.
E: TimeoutError: Timed out attempting to link with chip
E: |-- File "**/Library/Python/3.9/lib/python/site-packages/bk7231tools/serial/__init__.py", line 42, in connect

or
➜  Firmwares > ltchiptool flash read BK7231Q wifi-switch-module_tiya_orgfw.bin -d /dev/cu.usbserial-0001
I: Connecting to 'Beken 7231Q' on /dev/cu.usbserial-0001 @ 115200
I: Connect UART1 of the BK7231 to the USB-TTL adapter:
I:
I:     --------+        +------------------------
I:          PC |        | BK7231
I:     --------+        +------------------------
I:          RX | ------ | TX1 (GPIO11 / P11)
I:          TX | ------ | RX1 (GPIO10 / P10)
I:         RTS | ------ | CEN (or RST, optional)
I:             |        |
I:         GND | ------ | GND
I:     --------+        +------------------------
I:
I: Make sure to use a good 3.3V power supply, otherwise the adapter might
I: lose power during chip reset. Usually, the adapter's power regulator
I: is not enough and an external power supply is needed (like AMS1117).
I:
I: If you didn't connect RTS to CEN, after running the command you have
I: around 20 seconds to reset the chip manually. In order to do that,
I: you need to bridge CEN to GND with a wire.
E: ValueError: No response received
E: |-- File "/**/Library/Python/3.9/lib/python/site-packages/bk7231tools/serial/protocol.py", line 210, in command
➜  Firmwares > ltchiptool flash read BK7231Q wifi-switch-module_tiya_orgfw.bin -d /dev/cu.usbserial-0001
I: Connecting to 'Beken 7231Q' on /dev/cu.usbserial-0001 @ 115200
E: ValueError: No response received
E: |-- File "/**/Library/Python/3.9/lib/python/site-packages/bk7231tools/serial/protocol.py", line 210, in command

I'have already try to use a banch power supply to power the module.
L.

BK7231Q is the oldest Beken chip, and is currently unsupported:
https://docs.libretiny.eu/docs/status/supported/#feature-support
The Beken "FreeRTOS BDK", which is the (formerly public) SDK used for BK7231T and N chips does only support T and N chips. BK7231Q support would require finding another SDK and writing another LibreTiny core from scratch.
Additionally, the bootloader is buggy and doesn't unprotect flash properly. Linking with the chip requires a power-cycle most of the times.
My post in the mentioned thread:
https://www.elektroda.com/rtvforum/viewtopic.php?p=20624538#20624538


Build a generic api for ejabberdctl command

Currently, we build an api(method) for every ejabberdctl command.
It turn out all the ejabberdctl command is sharing a lot of common part, i'd like to make them a common api/method to run all all the command.
probably name them runCommand.

I have been planning to add some MUC commands but if we had a generic runCommand method, the same functionality could be hard-coded (or piped from some other source) in the user's application level.


Fixed TF formatting to v12.

Fixed the formatting, now terraform (0.12) validate runs without errors and a plan/apply doesn't throw errors neither.
I also tried running the script to create an entire setup and make sure nothing is broken, all good.

fixes #16

testing now


Updates: add process title to request data | Clone document name to include name of auth_viewer and unique 10-digit string

On it

Changes made


[bug] server.host = true while run command vite --host

Describe the bug

// vite-plugin.js
function vitePluginConfigureServer() {
	return {
		name: "vite-plugin-configure-server",

		configureServer(resolvedConfig) {
			var server = resolvedConfig.config.server;

			// `vite --host`
			// server.host got 'true' not 'localhost' or others
			if (server.host == true) {
				throw `'server.host' expected be typeof string but got true`;
			}

			var host = server.host || "localhost";
			var protocol = server.https ? "https://" : "http://";
			server.cors = true;
			if (!server.origin) {
				server.origin = `${protocol}${host}:${server.port}`;
			}
		},
	};
}

// vite.config.js
import { defineConfig } from "vite";

export default defineConfig({ plugins: [vitePluginConfigureServer()] });

Reproduction
https://github.com/Fi2zz/vite-server-config
Steps to reproduce
npm install

npm run serve

System Info
System:
    OS: macOS 12.6
    CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
    Memory: 16.91 MB / 8.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 19.8.1 - /usr/local/bin/node
    Yarn: 1.22.10 - /usr/local/bin/yarn
    npm: 9.5.1 - /usr/local/bin/npm
  Browsers:
    Chrome: 112.0.5615.137
    Safari: 16.1
  npmPackages:
    vite: ^4.3.5 => 4.3.5

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Does that mean that I cannot access server.host in the configureServer hook and must explicitly declare server.origin ?


TS-4655: Remove SessionAccept pointer from SSLNetVConnection.

SSLNetVConnection never uses the SessionAccept pointer, so remove
it and the associated setter and getter. Tidy up the SSLNetVConnection
formatting a little.

FreeBSD build failed! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/424/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/318/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/425/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/319/ for details.

:+1:


Redis: Issue with GET command

Issue
Hi there.
Do have in mind I can be solely mistaken about all the case, but I cannot find the workaround or the solution, thus I thought I will create this issue. I am not very experienced with C or low-level Redis access.
I have met an issue with GET command.
I mean, the actual problem seems to be persistent - whenever I log out Redis response from reply object using fprintf it always returns a string similar to that one:
WARNING: (redis 37900) received a reply when no command was sent.
-ERR unknown command `$11`, with args beginning with

And my callback function looks like this:
void redis_callback(fio_pubsub_engine_s* engine, FIOBJ reply, void *udata)
{
    if(reply == FIOBJ_INVALID)
    {
        fprintf(stderr, "It appears that there was an error on Redis op");
    }

    fprintf(stderr, fiobj_obj2cstr(reply).data);
}

However, in case of simple SET with both key and value strings it just sets the value in the cache and all done.
But whenever I need to GET something I just receive the line above and no value from cache. Even though I am sure that the key is correct and it is in the cache. The value is there too. I managed to add a fprintf inside redis_engine.c file and it printed me twice or more time something about that:
$11
GET key

Assuming that my key is named key in Redis, of course.
So, to sum up, the issue in my case is about GET cause I cannot read values from cache, but it seems that it appears any time.
I use redis_engine_send function to call SET and GET commands to Redis server.
Setup
facil: 0.7.6
Redis: <IP_ADDRESS>, Windows 11/7.0.2, Debian 11, kernel: 5.15 (barebone, its not the same as build platform)
Build platform: Debian 11, WSL2, kernel: 5.15
gcc: 12.2.0
C compatibility: C-11
Possible cause
I suspect that the problem is somewhere inside the parser of redis commands.
I think so 'cause the problem occurs every time I send the command to the server.

Okay, I have fiddled a little with Redis via telnet connection.
Mentioned $xx is just a type of data which is returned with its character length.
Thus, I dont know if this is something on my part or is it actually something with resp_parser?

Hi @0fca ,
I'll try to be short as I have little time. If it's still unclear, please write me and I'll try again later.
Usually this error occurs when more responses are received than requests are sent. This could happen if your FIOBJ command contains too much data or more than one command.
The redis engine manages each command, validates the sending (in case of network interruption it will try the command again) and sends back the response to the callback.
If there are more commands than callbacks, it will error out, not knowing where to send the response. That's the logged error message you're seeing.
I will need more code to see where and what went wrong. Hopefully this helps enough so you can solve this yourself.
Good Luck!

Hi there.
Thank you very much for your time. I do appreciate it very much.
I will fiddle with it a little bit. I will check out whether is it a size of data block I try to save or is it something with format/binary structure of command string I encode into FIOBJ command object.
I will give you feedback despite its result - either will it be a success or failure.
Thanks again.
Thanmk you for your astonishing work with facil.

FYI: I assume you are aware that the FIOBJ command should be basically an Array of Strings (or a single String). No need for Redis formatting of the command object.
The library handles the formatting part: https://github.com/boazsegev/facil.io/blob/f261935c6c8fc56d582f0a95e3992bcb324a1f26/lib/facil/redis/redis_engine.c#L175
On Tue, Dec 24, 2024 at 07:11, Lukas < @.***(mailto:On Tue, Dec 24, 2024 at 07:11, Lukas < wrote:

Hi there.
Thank you very much for your time. I do appreciate it very much.
I will fiddle with it a little bit. I will check out whether is it a size of data block I try to save or is it something with format/binary structure of command string I encode into FIOBJ command object.
I will give you feedback despite its result - either will it be a success or failure.
Thanks again.
Thanmk you for your astonishing work with facil.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

Yes, I do know, I took a look at it.
How I do try to send the GET command looks like that:
    int c_count = 6 + strlen(sess_id_raw);
    char* get_command_str = malloc(c_count * sizeof(char));
    snprintf(get_command_str, c_count, "%s %s", "GET", sess_id_raw);
    fprintf(stderr, get_command_str);
    FIOBJ get_command = fiobj_str_new(get_command_str, strlen(get_command_str));
    redis_engine_send(FIO_PUBSUB_DEFAULT, get_command, on_get_command, NULL);

The error I get on the on_get_command callback is actually a length of a string with GET itself.

Thank you for the example, I think this helps narrow down the issue.
I assume what you wanted was more on the lines of (sorry for the pseudo code rather than actual code, as I'm typing into GitHub):
FIOBJ cmd = fiobj_ary_new();
fio_ary_push(cmd, fiobj_str_new("GET", 3));
fio_ary_push(cmd, fiobj_str_new(sess_id_raw, strlen(sess_id_raw)));
redis_engine_send(FIO_PUBSUB_DEFAULT, cmd, on_get_command, NULL);
fiobj_free(cmd);

After all, in your example you have one long command string "GET ID_XXXX" rather than two command strings "GET" "ID_XXXX".

Thank you for your time.
It seems to work now after I changed it all to use FIOBJ Array.
However, I wonder why would single String cause all that fuss.
What's more it is not stated in the docs that the user shall only use FIOBJ Array object, is it?
If not, I could make a fix for it in the docs to add a note about the command object.


prism does not find api spec if the scenario has variable in the request

In prism, while running scenarios with following example
{$.ctx.host}/users/{$.ctx.user}/profile, it does not find the api specification /users/{id}/profile.
If substituted with a actual data like {$.ctx.host}/users/1/profile it will pick up the api specification

Can you please provide an example scenario that demonstrates the issue, the command used for Prism, and Prism's version?

Please provide a spec too.

@goodwillguy
{$.ctx.host}/users/{$.ctx.user}/profile is $.ctx.host set, should it be $.env.host?


Trawl tension measurement

Thank you for your contribution and interest in PoseiDAT @DujardinGijs
So far we've kept measurements more generic. From a data perspective this is more flexible and future proof but might be a bit more cumbersome to consume. All the values in the proposed schema are numerics so they could in theorie be added to a PoseiDAT journal as individual measurements provided we add them to the core/enum/measurement-type.json.
@daanpape could you weigh in on this in regards to the measurement data your are modelling. Have you already looked at trawl tension? I'm not opposed to a more specialised structure for complex data and this does look wel thought out. Perhaps you could add the equivalent example using current measurement objects.

@Qwerios for your info, @DujardinGijs is our engineer who is now expanding the uplink from the concentrator and thus also the PoseiDAT format. There was an internal discussion about the fact if we would split up the trawl tension into seperate measurements or to create a single structure.
We have opted for the single structure because the measurements are inherently connected together and meaningless as separate values. To clarify: when you measure trawl tension at port you must know the value at starboard at the exact same time to interpret the data. When we would split up the measurements of a trawl tension device it would be as if we would split up a GPS position with a separate latitude and longitude measurement.

Could you please supply a description for the PR next time then so I am aware of the source of this change. Seeing as how this is a public repository and I didn't know Gijs yet (nice to meet you!) it could have come from everywhere.
Your reasoning seems sound to me I'll see about merging this today

@DujardinGijs since you are still pushing changes can you let me know when you consider this done so I can see about merging it. Also it would be great if you could add a unit test with an example when it's complete

@Qwerios nice to meet u too, I have revert the scale measurement commit for an other pull request, i am currently adding some unit test and will let u know when its finished

@Qwerios I have added unit tests for the device measurements and the trawl tension measurement should be completed now and ready to merge


HSEARCH-2901 Introduce an SPI to get a SearchIntegrator from a SessionFactory

https://hibernate.atlassian.net/browse/HSEARCH-2901

Merged, thanks!


Display the lightning node pubkey

Sometimes a customer will not have an existing payment route to the seller lightning node. The payment will fail because of "No route found."
In this case, it might be useful to display the pubkey of the LND node. Then, the buyer can open a new channel if they want.

Closing this. I forgot that the pubkey is included in the payment string.


UI improvements

As show by @timozattol, minor UI improvements could be done (#68)

[ ] Repeat icons consistency
[ ] Navigation buttons should have an active state
[ ] Improve the close window button

:+1:

For the repeat icons, you can open those two in different tabs and see that they are not "aligned" vertically

https://github.com/KeitIG/museeks/blob/master/src/images/icons/player-repeat-one.svg
https://github.com/KeitIG/museeks/blob/master/src/images/icons/player-repeat.svg

But it's a very small detail

Thanks to @Suriteka, we can close this :)


[SciComp] Consider Migrating Team Project Management

Summary
Historically we have done our project management in GitHub Enterprise. This has worked fine but there have been a handful of times when we've wanted to share an open issue with a relevant person/team and been unable to do so (or at least not easily) because it isn't in "regular" GitHub. If we migrated our stuff to this repository, we'd have no issue sharing issues (though complete transparency certainly cuts both ways). An ancillary benefit would also be "walking the walk" of project management in GitHub which might inspire working groups to do the same (where appropriate/relevant).
Starting Tasks

[x] Migrate issue templates to this repo
[x] Create needed issue labels
[x] Open an issue to store this conversation for posterity
[x] Discuss with Angel
Identify further sub-tasks

Useful links

GitHub Enterprise repo: github.nceas.ucsb.edu/LTER/lter-wg-scicomp

Decision Reached
Seems like a good call to pivot our task management system to this org/repo. Plan is to (A) make needed project infrastructure here and (B) open new issues here. Old issues will largely be left alone in the prior place (so we don't have duplicated issues).
New Sub-Tasks

[ ] Make project(s) in LTER org for SciComp stuff

[ ] Link to this repo

[ ] Open a new issue in the Enterprise location as a reminder to not open new stuff there

Done!
Sub-issues opened so this can be closed


Dean/package manage with poetry

This change manages required packages and Python version using Poetry. The reasons I'm suggesting this change are:

Fully automates package installation.
Installs the correct version of Python for this project.
Keeps everything inside a virtual environment just for this project, avoiding conflicts with other projects.

This doesn't prevent a user from running the script on their local installation, if they desire.
Give it a try, let me know what you think!

Hey, thanks for the PR!
This looks pretty good. Following the instructions on my local system work, so that seems good.
How about leaving both sets of instructions in the README, one for non-poetry installs and one for using poetry? I know if I had come across this before, not knowing what poetry was, I would have seen this and assumed it was necessary, which would make me skip by using it, since I don't normally use poetry and wouldn't install it for a one off script like this.
You can decide the verbiage, or I can do it after merging the PR, doesn't matter to me, I just want it clear that poetry isn't necessary to run it.

In the case that you want to support running this directly as well, I would recommend that we add a requirements.txt so that the packages can be installed automatically with pip install -r requirements.txt. I've added that as well as a description to the README.

Agreed about the requirements.txt. And the contributing section is a nice touch.
And I appreciate the help from someone who seems to work more professionally in python than I do.
I'm going to resolve the conflict from my known issues section, merge this in, then tweak it a bit.

Happy to help! Nice to get a clean PR in every once in a while 🧼


Refactor submitTransactions to process subscriptions sequentially

This moves the subscription checking, wallet functions and processing to be done for each sponsorAddress group.
Opening this as draft to get some help on how to proceed.
The old flow was:

Get all subscriptions from airkeeper.json
Filter subscriptions by chain ID (i.e. chain provider)
Check that all filtered subscriptions pass the condition check
Group subscriptions by sponsor wallet address
Start fulfilling subscriptions for each sponsor wallet-group in parallel

The new intended flow:

Get all subscriptions from airkeeper.json
Filter subscriptions by chain provider
Group subscriptions by sponsorAddress
Start processing the subscriptions for each sponsorAddress sequentially
4.1. getSponsorWalletAndTransactionCount
4.2. if valid wallet data processSponsorWallet
4.2.1. checkSubscriptionCondition
4.2.2. if valid subscription fulfillPspBeaconUpdate
Process subscriptions for each provider

So if I've understood correctly, the next step is to combine steps 5. and 6. (Promise.all(sponsorWalletPromises) and Promise.all(providerPromises)) into one array, and then invoke new Lambdas for each element in that array?

So if I've understood correctly, the next step is to combine Promise.all(sponsorWalletPromises) and Promise.all(providerPromises) into one array, and then invoke new Lambdas for each element in that array?

I don't really understand. Where did you get Promise.all(sponsorWalletPromises)?
Also, you can't really pass a promise to Lambda function, it would have to be data needed for processing. But yes, the concept is the same.
These are the promises that would need to be turned into Lambda invocations
https://github.com/api3dao/airkeeper/blob/222d3ace95a743d2e081072ef21098898761d653/src/handlers/psp.ts#L317

it would have to be data needed for processing. But yes, the concept is the same.
These are the promises that would need to be turned into Lambda invocations

Sorry that was poorly worded, but this still answered the question I was going for  :smile:


[DPG] We should not use LLC or low level clients in public document /autorest commands

As we are using to data plane codegen as our product name, please update the our public docs and autorest commands to stop using LLC/ low level clients.
In Java, it seems we are still using the flag like  --low-level-client
https://github.com/Azure/autorest.java/blob/main/docs/generate/dataplane.md

@srnagar Any objection?

@lirenhe Any common name of option for it, if we change?

@lirenhe Any common name of option for it, if we change?

I would suggest '--data-plane' if this is not used.


fix: revert to ES2017 to fix function generator issues in react native

Fixes React Native record storage non-iterable async function generator issues due to TS configurations: #225
ES2017 was the highest target specifiable to not have not-iterable errors in React Native.
Signed-off-by: James Ebert<EMAIL_ADDRESS>

Codecov Report

Merging #226 (49a9807) into main (d9bcff7) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #226   +/-   ##
=======================================
  Coverage   89.01%   89.01%
=======================================
  Files         174      174
  Lines        3305     3305
  Branches      364      364
=======================================
  Hits         2942     2942
  Misses        360      360
  Partials        3        3

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 d9bcff7...49a9807. Read the comment docs.


Implement absent for deletion of charts

I would like to be able to define absent as part of a release in the helmfile. Upon helmfile sync all releases with absent: true will be deleted.
releases:
  - name: super-magician
    namespace: default
    chart: stable/prometheus-cloudwatch-exporter
    version: 0.2.0
    values:
      - prometheus-cloudwatch-exporter/values.yaml
    absent: true

I think this is a duplicate of https://github.com/roboll/helmfile/issues/197.

@andytom Thanks for chiming in! Yeah, this seems like a dup of #197.
@estahn Are we following you correctly? In case this is really a dup of #197, I'll close this as resolved after adding some doc.

@andytom @mumoshu Ah, perfect. That is what I was looking for.

@estahn Yeah, please! I'll close this via #371.


Assigning same element of list twice in AnyDataList.GetList() function

https://github.com/AssetMantle/modules/blob/master/schema/data/base/anyDataList.go#L47

anyDataList is deprecated


Add support new endpoint for Astar

Description the task
Add support new endpoint for Astar

Supported on v0.7.8


OBS: GO:0022405 ! hair cycle process and GO:0022404 ! molting cycle process

This terms adds no new information, as we have part_ofs for the entire cycle.
Seems like they were added for isa completeness?
Reported by: cmungall
Original Ticket: geneontology/ontology-requests/10940

Summing up:

Edit the following class labels to read ‘regulation of timing of x’ instead of ‘regulation of x’, e.g. 'regulation of timing of anagen' instead of 'regulation of anagen’:
regulation of anagen (+ pos and neg children)
regulation of catagen (+ pos and neg children)
regulation of exogen (+ pos and neg children)

Edit def accordingly

Add GOC:pr

Close.


KOGITO-1700 - Add optional configuration of Infinispan in BDD

https://issues.redhat.com/browse/KOGITO-1700
Things to discuss:

I found that for Infinispan env vars we use 2 maps (Quarkus/Spring Boot) in the operator framework:
https://github.com/kiegroup/kogito-cloud-operator/blob/d967c4f6331ab79d4ee71906058dd1bad2035bce/pkg/controller/kogitoapp/resource/deployment_config.go#L69-L82
But they are not public, so I cannot use them and have to use my own, see the addInfinispanEnvVars method. Basically I have to use if now. Can we make them public so they can be used in the test framework, wdyt?

I created the KogitoAppHolder to follow the pattern of KogitoServiceHolder in the framework. For KogitoApp it is not needed on the framework side right now (not used in the framework at all, just in the steps) but I wanted to be consistent with KogitoService.

First time, I tried to use the secrets but then found out that you cannot set an environment variable value from secret using Kogito CLI - maybe a proposal for a new feature? You can set just an environment variable name and its value. So right now I have fallen back to using plaintext passwords and it works :+1:

Commented out steps like Then Service "process-quarkus-example" contains <requests> instances of process because of currently not having a viable solution to properly fetch a large number of processes, i.e. using pagination. The list of features which belong to these commented steps is provided at the beginning of the performance feature file.

Of course, KogitoApp can now be configured for external Infinispan using:

| infinispan      | username | developer                 |
| infinispan      | password | mypass                    |
| infinispan      | uri      | external-infinispan:11222 |

Many thanks for submiting your Pull Request :heart: :racing_car:!
Please make sure that your PR meets the following requirements:

[x] You have read the contributors guide
[x] Pull Request title is properly formatted: [KOGITO-XYZ] Subject
[x] Pull Request contains link to the JIRA issue
[x] Pull Request contains description of the issue
[x] Pull Request does not include fixes for issues other than the main ticket
[ ] Your feature/bug fix has a unit test that verifies it
[x] You've tested the new feature/bug fix in an actual OpenShift cluster

First time, I tried to use the secrets but then found out that you cannot set an environment variable using Kogito CLI - maybe a proposal for a new feature? So right now I have fallen back to using plaintext passwords and it works +1

What environment variable do you mean? Kogito CLI has a possibility to define environment variables
-e, --env stringArray           Key/Pair value environment variables that will be set to the service runtime. For example 'MY_VAR=my_value'. Can be set more than once.
Or do you mean defining content of a secret?

First time, I tried to use the secrets but then found out that you cannot set an environment variable using Kogito CLI - maybe a proposal for a new feature? So right now I have fallen back to using plaintext passwords and it works +1

What environment variable do you mean? Kogito CLI has a possibility to define environment variables
-e, --env stringArray Key/Pair value environment variables that will be set to the service runtime. For example 'MY_VAR=my_value'. Can be set more than once.
Or do you mean defining content of a secret?
Edit - I guess you mean using ValueFrom pointing env variable value to some other object, right?

Ah, sorry, forgot to write it exactly (and I was reading this after me). Sure, env variables work - as I currently made it possible that way.

for point #1, I think we could move that to the infrastructure package

@radtriste You mean to the infinispan.go file?
https://github.com/kiegroup/kogito-cloud-operator/blob/c873d19970784825e8547f1367ee2649dfb2ab6f/pkg/infrastructure/infinispan.go#L1
And after that I would probably make these variables and constants public, wdyt?

Those are kogitoapp related.
So I would move them to kogito_app.go

Reviews addressed. utils.go now contains only functions to retrieve columns of a table and one parsing function which is used in the kogitoapp.go and the openshift.go.
Also infinispan secret, Kogito external secret and its keys are in infinispan.go right now and shared as that is something I believe we can share, this won't change as there is only one Infinispan and credentials should be shared among apps so only one kogito external secret is needed.

@spolti Can you please take a look as Zanini is away?

plus, ci is failing, can you please verify?

plus, ci is failing, can you please verify?

@spolti Unfortunately I am not able to log in to the Jenkins running on Openshift. I tried it using github but I am still returned back to the "Log in with OpenShift" page.

@spolti Are we ok with merging?

@spolti Unfortunately I am not able to log in to the Jenkins running on Openshift. I tried it using github but I am still returned back to the "Log in with OpenShift" page.

ask @msmagnanijr for ths instructions.


Docs: Magic Commands

Create documentation for the magic commands available in the magic_commands.py file and integrate it into the magic-commands.mdx file.

Magic Commands 🪄
The magic_commands.py file contains a set of special commands that can be used during chat sessions. These commands, referred to as "magic commands" 🪄, provide additional functionalities:

/reset 🔄: This command resets the chat session. It clears the chat memory and starts a new session.

/exit 🚪: This command is used to exit the chat session.

/history 📜: This command prints the chat history. It displays all the messages exchanged during the chat session.

/save 💾: This command saves the chat history to a file. The file is named as chat_history_{timestamp}.txt, where {timestamp} is the current date and time.

/copy 📋: This command copies the last response from NeoGPT to the clipboard.

/undo ↩: This command removes the last response from the chat history.

/redo 🔁: This command resends the last human input to the model.

/help ❓: This command displays a help message with the list of available commands.

If a command is not recognized, an error message is displayed 🚫.
To use a magic command, simply type the command in the chat session and press enter ⌨.

Magic Commands 🪄
The magic_commands.py file contains a set of special commands that can be used during chat sessions. These commands, referred to as "magic commands" 🪄, provide additional functionalities:

/reset 🔄: This command resets the chat session. It clears the chat memory and starts a new session.
/exit 🚪: This command is used to exit the chat session.
/history 📜: This command prints the chat history. It displays all the messages exchanged during the chat session.
/save 💾: This command saves the chat history to a file. The file is named as chat_history_{timestamp}.txt, where {timestamp} is the current date and time.
/copy 📋: This command copies the last response from NeoGPT to the clipboard.
/undo ↩: This command removes the last response from the chat history.
/redo 🔁: This command resends the last human input to the model.
/help ❓: This command displays a help message with the list of available commands.

If a command is not recognized, an error message is displayed 🚫.
To use a magic command, simply type the command in the chat session and press enter ⌨.

What do you think of this documentation, I have added added a little bit information but also  used the same messages as used when /help command is called.

This is correct. But in the docs

alright, i am on it

@ayushmorbar does the /redo send the response back to the model?


Implementation for distinct rate limiting

This PR is the implementation for distinct rate limiting.
The detailed description can be found in this issue: https://github.com/envoyproxy/gateway/issues/1150

I'd like hold this before https://github.com/envoyproxy/gateway/pull/1416 merged.

hey @zhaohuabing you probably need to run make generate and commit the changes for the CI to pass

Hi guys, sorry for holding this PR for so long. I'll finish it this week.

np @zhaohuabing, thanks for the update

I have already tested the distinct ip match in a local kind cluster.

Looks like the failed e2e test is irrelevant to this PR.
--- FAIL: TestE2E/OpenTelemetryAccessLog (31.07s)
--- FAIL: TestE2E/OpenTelemetryAccessLog/OTel (31.05s)


Ordering by duration doesn't work

See the screenshot:

this is solved now.

Fixed in https://github.com/stripe/timberlake/pull/40


Add continuous collection of profiles in java profiler

Add more accurate collection of java application profiles using async-profiler's dump command.
Description
This PR changes the way that async-profiler is invoked.
From now on gprofiler starts ap once and periodically issues dump command to retrieve the collapsed profiles.
Related Issue
#569
Motivation and Context
More accurate profiling and better performance due to having async-profiler loaded in process.
How Has This Been Tested?
Whole collection of java tests in repository was executed against this change.
Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have updated the relevant documentation.
[ ] I have added tests for new logic.

Several things need addressing (and the solution is underway):

[ ] async-profiler timeout needs to be reapplied once async-profiler gets ability to reset the timeout timer,
[ ] adjust output for cumulative frame count - async-profiler doesn't reset it, frame counts are increasing,
[ ] account for dump skew - time between last dump output and the next call to snapshot().

Java profiling is now truly continuous thanks to async-profiler timeout recycle functionality:
https://github.com/Granulate/async-profiler/pull/6 .

 Adjustment is correct in principle, but needs to take multiple profilers into account.

Output from profiler in continuous mode is now equivalent to output produced by profiler on master. Frame counts now cover only the snapshot window.

Please merge master & update async-profiler to the latest revision used in master, I'll get to reviewing this soon.

Done.

Added resettrace flag to async-profiler, which resets frame counts after dump. This removes need for adjusting collected stacks, mentioned in https://github.com/Granulate/gprofiler/pull/730#issuecomment-1476824409.

Also, adjusting for time skew is not needed. gProfiler does it automatically, when merging collected stacks from runtime profilers with system profiler.

One remaining task:

[ ] make async-profiler even more continuous, removing need to call status between dump calls.

Implemented smarter error handling in async-profiler with dumpactive flag. Command dump will now report error if profiler is stopped, letting java profiler know that it needs to restart profiling.
This removes need for status calls, making java profiling more fluent.


Add .editorconfig file

Just because it's a R&D project doesn't mean we're savages.
(more seriously, this lets editors like Atom and VsCode know that e.g. tabs should be space and stuff, for consistent formatting)

Well you weren't kidding when you said "accelerated process" =P


Feature request - Versioning

I think having a version history is a must for a CMS. Do you have a plan to add such feature?
If not, could you share any tips for anyone who would dare to build it? :) Thanks!

It does have a rollback feature where you can compare versions/revisions and rollback to previous revisions.
It's on the content tree settings for each content item

The option is called Revert


Angular Material 18 (Material 3) Custom Theme: Only Primary Color Applies

Is this a regression?

[X] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
Angular Material 17 (Material 2)
Description
I'm encountering an issue where only the primary color is applied when using custom themes in Angular Material 18.
However, this issue does not occur when using pre-built themes from @angular/material/prebuilt-themes (e.g., magenta-violet.css). The pre-built theme's accent and warn colors are applied correctly in those cases.
Reproduction
StackBlitz link: https://stackblitz.com/edit/stackblitz-starters-g9u5la
Steps to reproduce:

Create a new Angular project or use an existing one:

If creating a new project, run: ng new color-theme-issue
Navigate to the project directory: cd color-theme-issue

Install Angular Material 18:

Run: ng add @angular/material
Choose custom theme

Define custom themes in a Sass file (e.g., styles.scss):
   @use "@angular/material" as mat;

   @include mat.core();

    $theme: mat.define-theme(
    (
       color: (
           theme-type: dark,
           primary: mat.$violet-palette,
                 ),
 .                   ..
          )
      )

  :root {
      @include mat.all-component-themes($theme);
      }

Use Angular Material components in your template:
<button mat-flat-button>This should use the primary color</button>
<button mat-flat-button class="mat-button-accent">This should use the accent color (not visible)</button>
<button mat-flat-button class="mat-button-warn">This should use the warn color (not visible)</button>

Expected Behavior
All colors defined in a custom theme should be applied correctly to the Angular Material components, just like when using the pre-built themes from @angular/material/prebuilt-themes.

Actual Behavior
Only the primary color is reflected. The accent and warn colors are not visible in the components.

Environment
Angular CLI: 18.0.2
Node: 20.11.1
Package Manager: npm 10.2.4
OS: linux x64
Angular: 18.0.1
... animations, cdk, common, compiler, compiler-cli, core, forms
... material, platform-browser, platform-browser-dynamic, router
Package                         Version
@angular-devkit/architect       0.1800.2
@angular-devkit/build-angular   18.0.2
@angular-devkit/core            18.0.2
@angular-devkit/schematics      18.0.2
@angular/cli                    18.0.2
@schematics/angular             18.0.2
rxjs                            7.8.1
typescript                      5.4.5
zone.js                         0.14.6

Hi @DvirMon
I faced the same issue and after inspecting the material theme source i found solution for this.
Add @include mat.color-variants-backwards-compatibility($theme);  line at the end of your styles.scss and this should fix the colors.
Your styles.scss will be looks like this:
   @use "@angular/material" as mat;

   @include mat.core();

    $theme: mat.define-theme(
    (
       color: (
           theme-type: dark,
           primary: mat.$violet-palette,
                 ),
 .                   ..
          )
      )

  :root {
      @include mat.all-component-themes($theme);
      }

  @include mat.color-variants-backwards-compatibility($theme);
  @include mat.typography-hierarchy($theme);  // typography styles could be included too

I hope this helps.

Anyone know what "forwards" compatibility for colouring (in general, particularly buttons!!) is going to be?
Obviously this is using the MD2; primary, accent, warn ThemePalette, which is different to MD3.
Would rather "do this right" as started with MD3, then introducing tech debt.

I Create a new project in Angular 8
ng new theme-material-test
then run:
ng generate @angular/material:m3-theme

I put the colors, Primary, secondary and tertiary:

which created the page with the different themes, but without applying them, so I added this, as mentioned above:
{
@include mat.all-component-themes($light-theme);
}

@include mat.color-variants-backwards-compatibility($light-theme);
@include mat.typography-hierarchy($light-theme);

and even so, the colors I set in the theme are not applied correctly:
HTML (copy from angular material page):

Hello, {{ title }}

Congratulations! Your app is running. 🎉

        <button mat-raised-button>Basic</button>
        <button mat-raised-button color="primary">Primary</button>
        <button mat-raised-button color="accent">Accent</button>
        <button mat-raised-button color="warn">Warn</button>
        <button mat-raised-button disabled>Disabled</button>
        Link

The color input is no longer used for M3. Instead, you can create your own theme for different variants. For more on this, see https://material.angular.io/guide/theming#using-component-color-variants

The color input is no longer used for M3. Instead, you can create your own theme for different variants. For more on this, see https://material.angular.io/guide/theming#using-component-color-variants

Think this page needs to be far more prominent WRT Angular Material now, as all the library of components still display these colours, but don't cite (at least not easily!!) that they're only working via a backwards compatibility fix, and that probably for allot of users they're going to have to bring in more scss then previous.
I get it... I think.. I don't really, we've set-up the palette using the MD3 palettes (so I've given material.. primary, secondary, tertiary, error).. so what have i done that for?... can see most Angular Material users are going to be replicating incredibly similar scss updates e.g. for an error/warn button now, and of course with varying success, having to really tightly couple these and rely on the classes angular material provides, which from bitter experience are incredibly prone to changing/breaking (not to mention a PITA to get right for precedence), whilst my primary buttons and accent buttons have largely stayed intact!.
anyway... yer seems odd to me, only styles at the end of the day, but feels like an unnecessary barrier to entry.

The color input is no longer used for M3

even now Angular Material docs contain buttons with color="" inputs. Is it a sort of mistake?
@andrewseguin is it mean we should use only classes definitions on mat components?
may I ask you about a viable example for a case when we have a custom theme with more than 3 palettes?
As far as get-color-from-palette has been removed we should have the ability somehow to extend the theme with custom color-palette names, sometimes we have not primary, tertiary, neutral-variant or whatever, but just straight - primary, accent, warning, success, error, good, bad etc.
So previously it was possible to have custom palette maps, currently if we want to migrate to M3 properly, it requires changing palettes' mapping and theme usage.

When i tried using secondary color doesn't apply. For some reason even if i set it to primary it's always rendering my tertiary color
`@use '@angular/material' as mat;
$theme: mat.define-theme();
.tertiary-checkbox {
@include mat.checkbox-color($theme, $color-variant: secondary); <----- does not work
}`

I still dont get it with this MD3. I have 3 different colors primary, secondary, and tertiary. I want those colors visualized exactly on components such as button, icon but they seem to be not working properly, either the color is too bright or dark compared to my base color.

The color input is no longer used for M3. Instead, you can create your own theme for different variants. For more on this, see https://material.angular.io/guide/theming#using-component-color-variants

Is it correct to define styles like follows? It definitely works, but it seems redundant.
.primary-badge {
  @include mat.badge-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-badge {
  @include mat.badge-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-badge {
  @include mat.badge-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-badge {
  @include mat.badge-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-button {
  @include mat.button-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-button {
  @include mat.button-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-button {
  @include mat.button-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-button {
  @include mat.button-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-checkbox {
  @include mat.checkbox-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-checkbox {
  @include mat.checkbox-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-checkbox {
  @include mat.checkbox-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-checkbox {
  @include mat.checkbox-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-chips {
  @include mat.chips-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-chips {
  @include mat.chips-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-chips {
  @include mat.chips-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-chips {
  @include mat.chips-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-datepicker {
  @include mat.datepicker-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-datepicker {
  @include mat.datepicker-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-datepicker {
  @include mat.datepicker-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-datepicker {
  @include mat.datepicker-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-fab {
  @include mat.fab-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-fab {
  @include mat.fab-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-fab {
  @include mat.fab-color(m3-theme.$light-theme, $color-variant: tertiary);
}

.primary-form-field {
  @include mat.form-field-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-form-field {
  @include mat.form-field-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-form-field {
  @include mat.form-field-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-form-field {
  @include mat.form-field-color(m3-theme.$light-theme, $color-variant: error);
}

.surface-icon {
  @include mat.icon-color(m3-theme.$light-theme, $color-variant: surface);
}
.primary-icon {
  @include mat.icon-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-icon {
  @include mat.icon-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-icon {
  @include mat.icon-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-icon {
  @include mat.icon-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-option {
  @include mat.option-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-option {
  @include mat.option-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-option {
  @include mat.option-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-option {
  @include mat.option-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-progress-bar {
  @include mat.progress-bar-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-progress-bar {
  @include mat.progress-bar-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-progress-bar {
  @include mat.progress-bar-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-progress-bar {
  @include mat.progress-bar-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-progress-spinner {
  @include mat.progress-spinner-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-progress-spinner {
  @include mat.progress-spinner-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-progress-spinner {
  @include mat.progress-spinner-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-progress-spinner {
  @include mat.progress-spinner-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-pseudo-checkbox {
  @include mat.pseudo-checkbox-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-pseudo-checkbox {
  @include mat.pseudo-checkbox-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-pseudo-checkbox {
  @include mat.pseudo-checkbox-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-pseudo-checkbox {
  @include mat.pseudo-checkbox-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-radio {
  @include mat.radio-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-radio {
  @include mat.radio-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-radio {
  @include mat.radio-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-radio {
  @include mat.radio-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-select {
  @include mat.select-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-select {
  @include mat.select-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-select {
  @include mat.select-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-select {
  @include mat.select-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-slide-toggle {
  @include mat.slide-toggle-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-slide-toggle {
  @include mat.slide-toggle-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-slide-toggle {
  @include mat.slide-toggle-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-slide-toggle {
  @include mat.slide-toggle-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-slider {
  @include mat.slider-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-slider {
  @include mat.slider-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-slider {
  @include mat.slider-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-slider {
  @include mat.slider-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-stepper {
  @include mat.stepper-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-stepper {
  @include mat.stepper-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-stepper {
  @include mat.stepper-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-stepper {
  @include mat.stepper-color(m3-theme.$light-theme, $color-variant: error);
}

.primary-tabs {
  @include mat.tabs-color(m3-theme.$light-theme, $color-variant: primary);
}
.secondary-tabs {
  @include mat.tabs-color(m3-theme.$light-theme, $color-variant: secondary);
}
.tertiary-tabs {
  @include mat.tabs-color(m3-theme.$light-theme, $color-variant: tertiary);
}
.error-tabs {
  @include mat.tabs-color(m3-theme.$light-theme, $color-variant: error);
}

imho, this snippet should be included in the component themes

Defining color variants is definitely overcomplicated. Why is it so weird and uncomfortable to use in m3?

This is absurd, the old way of using color input was easy. This new way doesn't seem to work at all most of the times. Why are we reverting?

Respectfully, moving from Material 2 to Material 3 should be just as simple to configure and Primary, Accent, and Warn should be first class citizens specifying the color code you want on the component.
How long with Material 2 be supported?  It is much less of a hassle.

When i tried using secondary color doesn't apply. For some reason even if i set it to primary it's always rendering my tertiary color
`@use '@angular/material' as mat;
$theme: mat.define-theme();
.tertiary-checkbox { @include mat.checkbox-color($theme, $color-variant: secondary); <----- does not work }`

yeah those overrides are kind of broken when you include following line '@include mat.color-variants-backwards-compatibility($my-theme)'

I've created a mixin that generates classes for every available component variant. It will generate general-use classes like .error, .primary, .tertiary, .secondary, as well as component-specific styles like .error-icon or .tertiary-checkbox for more granular styling.
Then I replaced all [color] properties with an appropriate class, and it's working for me!
@use "sass:meta";
@use "@angular/material" as mat;

$variants: 'primary', 'secondary', 'tertiary', 'error';
$components: (
  'badge',
  'button',
  'checkbox',
  'chips',
  'datepicker',
  'form-field',
  'fab',
  'icon',
  'option',
  'progress-bar',
  'progress-spinner',
  'pseudo-checkbox',
  'radio',
  'select',
  'slide-toggle',
  'slider',
  'stepper',
  'tabs'
);

@mixin mat-component-variants($theme) {
  @each $variant in $variants {
    .#{$variant} {
      @each $component in $components {
        @if (is-variant-supported($variant, $component)) {
          @include meta.apply(meta.get-mixin("#{$component}-color", mat), $theme, $color-variant: $variant);
        }
      }
    }

    @each $component in $components {
      @if (is-variant-supported($variant, $component)) {
        .#{$variant}-#{$component} {
          @include meta.apply(meta.get-mixin("#{$component}-color", mat), $theme, $color-variant: $variant);
        }
      }
    }
  }
}

@function is-variant-supported($variant, $component) {
  @if ($variant == 'error' and $component == 'fab') {
    @return false;
  }

  @return true;
}

I agree with many of the comments above. This new system is horrifying in that it is very difficult and complex to use. Revert back. This makes angular material useless for those that don't want to mess with complex styling.

I've created a mixin that generates classes for every available component variant. It will generate general-use classes like .error, .primary, .tertiary, .secondary, as well as component-specific styles like .error-icon or .tertiary-checkbox for more granular styling.
Then I replaced all [color] properties with an appropriate class, and it's working for me!
@use "sass:meta";
@use "@angular/material" as mat;

$variants: 'primary', 'secondary', 'tertiary', 'error';
$components: (
  'badge',
  'button',
  'checkbox',
  'chips',
  'datepicker',
  'form-field',
  'fab',
  'icon',
  'option',
  'progress-bar',
  'progress-spinner',
  'pseudo-checkbox',
  'radio',
  'select',
  'slide-toggle',
  'slider',
  'stepper',
  'tabs'
);

@mixin mat-component-variants($theme) {
  @each $variant in $variants {
    .#{$variant} {
      @each $component in $components {
        @if (is-variant-supported($variant, $component)) {
          @include meta.apply(meta.get-mixin("#{$component}-color", mat), $theme, $color-variant: $variant);
        }
      }
    }

    @each $component in $components {
      @if (is-variant-supported($variant, $component)) {
        .#{$variant}-#{$component} {
          @include meta.apply(meta.get-mixin("#{$component}-color", mat), $theme, $color-variant: $variant);
        }
      }
    }
  }
}

@function is-variant-supported($variant, $component) {
  @if ($variant == 'error' and $component == 'fab') {
    @return false;
  }

  @return true;
}

This looks like it could work but I don't see how you apply those?
Can you expand on the example, please?


Karpenter conversion tool link broken

Description
How can the docs be improved?
In Karpenter conversion tool., undet Step 7, "Karpenter conversion tool." link broken.

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Fixed in PR #4749.


[INFO]: Waiting for db process to exit ...

Yo, we running Ubuntu and here's the neofetch o/p. we having an issue running the node that goes in a loop saying "[INFO]: Waiting for db process to exit ... "
v@v-System-Product-Name:~$ neofetch
            .-/+oossssoo+/-.               v@v-System-Product-Name
        `:+ssssssssssssssssss+:`           -----------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.3 LTS x86_64
    .ossssssssssssssssssdMMMNysssso.       Kernel: 6.2.0-36-generic
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Uptime: 26 mins
  +ssssssssshmydMMMMMMMNddddyssssssss+     Packages: 2293 (dpkg), 18 (snap)
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Shell: bash 5.1.16
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Resolution: 1920x1080
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   DE: GNOME 42.9
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM: Mutter
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM Theme: Adwaita
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Theme: Yaru-red-dark [GTK2/3]
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Icons: Yaru-red [GTK2/3]
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Terminal: gnome-terminal
  +sssssssssdmydMMMMMMMMddddyssssssss+     CPU: 13th Gen Intel i7-13700K (24) @ 5.300GHz
   /ssssssssssshdmNNNNmyNMMMMhssssss/      GPU: NVIDIA 01:00.0 NVIDIA Corporation Device 2704
    .ossssssssssssssssssdMMMNysssso.       Memory: 6456MiB / 31825MiB
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

v@v-System-Product-Name:~/shoggoth/node$ shog node run
[INFO]: Initializing node
[INFO]: Using default runtime path: /home/v/shoggoth
[INFO]: NODE VERSION: v0.1.5
[INFO]: NODE ID: SHOGN906a64403463eed272e5541449d0e67a
[INFO]: NODE HOST: <IP_ADDRESS>
[INFO]: NODE PORT: 6969
[INFO]: NODE PUBLIC HOST: http://<IP_ADDRESS>:6969
[INFO]: DB HOST: <IP_ADDRESS>
[INFO]: DB PORT: 6961
[INFO]: Starting node server
[INFO]: Explorer: http://<IP_ADDRESS>:6969/
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...
[INFO]: Waiting for db process to exit ...

obsoleted by v1.0.2


clarify the UPPER_SNAKE_CASE rule for enums (#527)

move rules 125 and 240 together (as they both are about enums)
MUST → SHOULD for 240
explain where the rule doesn't apply.

:+1:

:+1:


官网打不开了，数据库连接报错？

官网https://www.fecmall.com/挂了？

Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] Connection refused
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] Connection refused

磁盘满了，已经处理了


Setup nginx to properly serve bibserver

Currently just starting bibserver on the command line and proxying through to it. Need to set up proper processes. This may not be actually part of bibserver, but at least needs to be documented so people can find out how to do it.

solved with gunicorn pointed to from nginx


write all cout input to file so that it can be used in the server

write everything from cout into a file so it can easily be used (on the http server for example)

Why not just configure the logger to output to a file as well?

doesn't the logger output go to cout anyway? so it will should be routed to the file too.

I think it's just cleaner to let the logger handle all program output. That's what its there for after all

what's the reason for using the names "cout"/"cerr" instead of "stdout"/"stderr"?

c++ oriented I guess

So now this PR only redirects the logger output to a file called cerr.txt in the directory of the script.
Why cerr? Logger writes to stderr which is cerr in c++ and i didn't really think that it made a difference. I don't know. It's what I've always been using.

The logger should be enough for this, you dont need to reinvent the wheel.
👎

@MCSH look at the last commit. Redirecting the logger to somewhere useful is literally all it does. 2 Lines of code.

In unix every program should be a filter.

In Unix and Unix-like operating systems, a filter is a program that gets most of its data from its standard input (the main input stream) and writes its main results to its standard output (the main output stream). Auxiliary input may come from command line flags or configuration files, while auxiliary output may go to standard error.

This is just bad practice.


Add docs for short circuiting

.NET 8 has a new feature for short circuiting routes. We should document it.
Some notes that may be useful...
When routing matches an endpoint it typically lets the rest of the middleware pipeline run before invoking the endpoint logic. If that's not necessary or desirable, there's a new option that will cause routing to invoke the endpoint logic immediately and then end the request. This can be used to efficiently respond to requests that don't require additional features like authentication, CORS, etc., such as requests for robots.txt or favicon.ico.
app.MapGet("/", () => "Hello World").ShortCircuit();

You can also use the MapShortCircuit method to setup endpoints that send a quick 404 or other status code for matched resources that you don't want to further process.
app.MapShortCircuit(404, "robots.txt", "favicon.ico");

More info:

Issue: https://github.com/dotnet/aspnetcore/issues/46071
PR: https://github.com/dotnet/aspnetcore/pull/46713

cc: @Tratcher


Deprecate Observable, add ChangeNotifier, setup travis

Partial work toward https://github.com/dart-lang/observable/issues/10.
0.17.0
This is a larger change with a goal of no runtime changes for current
customers, but in the future Observable will become a very
lightweight interface, i.e.:
abstract class Observable<C extends ChangeRecord> {
  Stream<List<C>> get changes;
}

Started deprecating the wide Observable interface

ChangeNotifier should be used as a base class for these methods:

Observable.observed
Observable.unobserved
Observable.hasObservers
Observable.deliverChanges
Observable.notifyChange

PropertyChangeNotifier should be used for these methods:

Observable.notifyPropertyChange

Temporarily, Observable uses ChangeNotifier

Existing users of anything but implements Observable should
move to implementing or extending ChangeNotifier. In a
future release Observable will reduce API surface down to
an abstract Stream<List<C>> get changes.

Added the ChangeNotifier and PropertyChangeNotifier classes

Can be used to implement Observable in a generic manner

Observable is now Observable<C extends ChangeRecord>

When passing a generic type C, notifyPropertyChange is illegal

LGTM


do not log error for mount in specific cases

Related to #1974. The integration tests uses stderr to check if there are any errors. However, there are a number of cases where we want to mount with ENOTDIR or ENOENT error but we ignore these errors. Therefore, we do not want to log these errors. Otherwise the integration tests would be broken.
tag along: Bump rust version to 1.70 and fix some comments lint in integration test. As a side effect, this will trigger the integration validation test, so we can test the fix is actually working in CI.

Codecov Report

Merging #1973 (4dbf3c0) into main (65aceec) will decrease coverage by 0.03%.
The diff coverage is 0.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1973      +/-   ##
==========================================
- Coverage   65.30%   65.28%   -0.03%
==========================================
  Files         129      129
  Lines       14746    14750       +4
==========================================
- Hits         9630     9629       -1
- Misses       5116     5121       +5

What about tracing at the caller? It is beyond the role of the syscall mod to determine the type of error.

I made the change for mount only in this PR to unblock the CI. We can extend this to all syscalls in this mod, but I'd like to do this in another PR.

We can extend this to all syscalls in this mod, but I'd like to do this in another PR.

I agree with you. we should do it.

@utam0k since this PR hasn't been merged, I went ahead and clean up the syscall crate as well. All the simpler wrappers no longer log error and logs only at the caller site. I kept the other more complex functions such as pivot_root and close_range alone, since it makes sense to log the error there.

@utam0k Can we get a review if you have some time? I would like to merge this since this will unblock the integration validation test. I would also ask if it is possible to merge this in as is and address any reviews in a follow up PR since the integration validation CI is failing.

Hey @yihuaf I think utam0k is unwell, so I'll take a look at this instead. The changes look ok, and as you said, if there are any issues, we can fix them in follow up PR. The only question I  have is that this was opened because  we logged errors in mount calls which makes the tests fail. However, I still see that we are doing tracing::error in the mount calls' map_err . I think you had removed is in one of the commits, but it got re-added for some reason. Can you please correct me if I'm wrong? Otherwise this is fine, I'll approve this then so it can unblock rest of the work.

Hey @yihuaf I think utam0k is unwell, so I'll take a look at this instead. The changes look ok, and as you said, if there are any issues, we can fix them in follow up PR. The only question I have is that this was opened because we logged errors in mount calls which makes the tests fail. However, I still see that we are doing tracing::error in the mount calls' map_err . I think you had removed it in one of the commits, but it got re-added for some reason. Can you please correct me if I'm wrong? Otherwise this is fine, I'll approve this then so it can unblock rest of the work.

@YJDoc2 Thank you for taking a look. So issue that caused the integration failure is the syscall::mount logging error. It is removed in this PR (https://github.com/containers/youki/pull/1973/files#diff-b7916a1b6e425d0953faba26141b604a4b71e65782a58c78dd6f59f620916dccR470). The right thing to do is logging at the caller of the syscall::mount. There are a few places where the syscall::mount will return ENOTDIR or ENOENT, but the caller ignores these error because it is expected. This happens for example in the masked_path (https://github.com/containers/youki/pull/1973/files#diff-9773882fbf80be1f21b71393425530b52a9fc276cd89e5f0910d2435ca45fbb5R217). In this case, ENOENT is considered successful because a non-existent path is considered to be masked already (not accessible).
I believe all the tracing add you see are at the caller of syscall::mount. In most cases, the mount call failure indicates an actual failure, so we log them, unless the error case is handled.
I will also add one more commit to trigger the integration_validation test, so we can be complete in this PR.

Hey @yihuaf Thanks for the detailed explanation! I think I got the actual call site and implementation mixed up originally. This looks good then, and once the CI pass, I'll approve and merge. Thanks a lot!


Use var for FOM email notifications, not hard coded

Throw this into an environment variable and populate using the GitHub workflows.  We can still use a shared email as a fallback/default.
https://github.com/bcgov/nr-fom/blob/main/api/src/core/mail/mail.service.ts#L19

See also #198, probably worth doing the two together.

Fixed by https://github.com/bcgov/nr-fom/pull/225


Get the application properties object from the app class.

Declaring and getting the application properties object on the app level.
Then getting the application properties object from the app class.

Victoria looks beautiful ! :+1:


Update cf-core to Atomic Design

As part of the v4 atomic design update, convert the appropriate bits of cf-core to the atomic design principles. Component should be broken out into appropriate atoms, molecules, and organisms.
How to Build an Atomic Component
Atomic Design Workflow
Making Sense of Atomic Design
Where to find existing Atomic Work

Atomic PRs

v1 atoms

v1 molecules

v1 organisms

[x] Code

[x] Docs

[ ] Sandbox

[ ] PR https://github.com/cfpb/capital-framework/pull/367

Just adding a note to include Avenir as the base font.

https://github.com/cfpb/capital-framework/pull/367

Turns out closing removes it from the milestone list. Reopening till we get a chance to review the milestones.


Contact form field end hook?

I'm using Formailer as my contact form backend and it requires me to add a hidden <input> with name _form_name to the contact form.
It doesn't seem this module has a similar contact/form-field-end hook. That's the only hook I need.

Extra parameter would be better, since this module allows generating multiple forms, hooks will affect all forms.
Please upgrade to module's v0.2.0, and then append the following parameters.
# params.toml
[[hb.contact.extra_fields]]
name = "_form_name"
type = "hidden"
value = "contact"

That works for me! Thanks!


Update Go version

Purpose
Issue #288
Update Golang version in CI
PR checklist

[ ] Add link to the issue
[x] Choose PR label
[ ] New unit tests added
[ ] Modified code has meaningful comments
[ ] All TODOs are linked with the issues
[ ] All comments are resolved

No related issue

fixed


Re-letter the sections so they are ordered by time of offering

Request from Pruim.

The work-around here, clearly, is to manually rename the sections.
Note that the schedule output should follow the new ordering. I haven't tested what happens with this.

Now that the CSV sorts itself, if you manually rename the sections they should be exported in the new alphabetical order.

An example would be beneficial to help us better understand the issue.


Move extensions.bzl to //cc to make buildifier happy

Fixing https://buildkite.com/bazel/rules-cc/builds/1269#c67c6eac-d195-4de7-ac07-6b3a57c364ce

Please ping me when I could rebase to resolve the CI failure.


[Android] Build TFLite QNN Delegate

Fix build scripts (*.mk files and build.gradle) for TFLite QNN Delegate.
Fix build-nnstreamer-android.sh to build TFLite QNN Delegate support.

This requries https://github.com/nnstreamer/nnstreamer/pull/4502 to be merged.

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #544. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ci.nnstreamer.ai/.


COMP: Use conjunction_v to check argument types of MakePoint, MakeVector

The previous approach, using the class template argument deduction guide of std::array appeared to trigger compile errors from  AppleClang <IP_ADDRESS>01044, as Mihail Isakov (@issakomi) remarked at https://github.com/InsightSoftwareConsortium/ITK/pull/4154#discussion_r1292840598, like:

Modules/Core/Common/include/itkPoint.h:371:20: error: no viable constructor or deduction guide for deduction of template arguments of 'array'
const std::array stdArray{ firstValue, otherValues... };
^
[CTest: warning matched] Modules/Core/Common/test/itkPointGTest.cxx:63:46: note: in instantiation of function template specialization 'itk::MakePoint' requested here
static_assert(std::is_same_v<decltype(itk::MakePoint(0))::ValueType, int> &&

The proposed approach is very much inspired by the std::conjunction example at https://en.cppreference.com/w/cpp/types/conjunction#Example specifically:
template<typename T, typename... Ts>
constexpr bool all_types_are_same = std::conjunction_v<std::is_same<T, Ts>...>;

static_assert(all_types_are_same<int, int, int>);

It would be nice if we could get clearer why the AppleClang compile errors that are addressed by this PR occurred in the first place. Does AppleClang 10.0.0/macOS 10.13 reject any attempt to do class template argument deduction (CTAD) for std::array? For example:
#include <array>
std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?

As I wrote at https://github.com/InsightSoftwareConsortium/ITK/pull/4154#discussion_r1298765302
Mihail (@issakomi) noticed before that Mac10.13-AppleClang-rel-x86_64 still seems to add a -std=c++14 compiler flag: https://github.com/InsightSoftwareConsortium/ITK/pull/4154#discussion_r1298921875 Shouldn't that be -std=c++17? Would that solve the compile errors? I hope Sean (@seanm) can still have a look!

@seanm Could you try -std=c++17, as Niels suggests in https://github.com/InsightSoftwareConsortium/ITK/pull/4157#issuecomment-1693014264?

Ping @seanm.

I've confirmed the compiler accepts the -std=c++17 flag, and made the change to my script.  We'll see tonight...

So the errors are still there: https://open.cdash.org/build/9062420/notes
We see the -std=c++17 flag there now. Either it didn't work, or the way I'm passing -std=c++17 is itself incorrect...

Should we merge this now?

@seanm @dzenanz Thanks for your feedback

Should we merge this now?

I would still like to know if the example at https://github.com/InsightSoftwareConsortium/ITK/pull/4157#issuecomment-1693014264 fails on AppleClang 10.0.0/macOS 10.13, when C++17 is enabled. Sean, can you still tell us?
#include <array>
std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?

builder22:Desktop builder$ cat test.cxx
#include <array>

int main ()
{
    std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?
    return 0;
}

builder22:Desktop builder$ xcrun clang --version
Apple LLVM version 10.0.0 (clang-1<IP_ADDRESS>)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

builder22:Desktop builder$ xcrun clang -Weverything -fsyntax-only -std=c++17 test.cxx
test.cxx:5:5: warning: 'auto' type specifier is incompatible with C++98 [-Wc++98-compat]
    std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?
    ^~~
test.cxx:5:17: warning: generalized initializer lists are incompatible with C++98 [-Wc++98-compat]
    std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?
                ^
test.cxx:5:16: error: no viable constructor or deduction guide for deduction of template arguments of 'array'
    std::array x{1, 2, 3};  // What does AppleClang 10.0.0 say?
               ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tuple:223:64: note: candidate function template not viable: requires 0
      arguments, but 3 were provided
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
                                                               ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tuple:223:64: note: candidate function template not viable: requires 1
      argument, but 3 were provided
2 warnings and 1 error generated.

Thanks @seanm I think we may ignore the warnings about being "incompatible with C++98". But the error is problemetic:

error: no viable constructor or deduction guide for deduction of template arguments of 'array'

I guess this means that we cannot yet write such simple code, like std::array x{1, 2, 3}, as long as we need to support that particular platform. Because the included Standard C++ Library implementation does not yet have a deduction guide for std::array.

I still like static_assert((std::is_same_v<TVariadic, TValue> && ...)) slightly better than using conjunction_v, as I said at https://github.com/InsightSoftwareConsortium/ITK/pull/4157#discussion_r1293658527 but that's just a matter of style. If this PR (using conjunction_v) solves those compile errors, I'm fine with having it merged as it is now.

@seanm does this PR solve the compile errors?

@seanm does this PR solve the compile errors?

It does.  I vote to merge.


Not copying type alias properly

When a type is aliased, it doesn't copy the type correctly
https://play.golang.org/p/3vuXlS75wJx
package main

import (
	"fmt"
	"github.com/mitchellh/copystructure"
	"time"
)

type Date time.Time

func main() {
	now := time.Now()
	d := Date(now)
	fmt.Printf("now = %+v\n", now) // now = 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
	fmt.Printf("d = %+v\n", d)     // d = {wall:13454110244426743808 ext:1 loc:0x572620}

	// time clone
	nowClone := copystructure.Must(copystructure.Copy(now))
	now2 := nowClone.(time.Time)
	fmt.Printf("now2 = %+v\n", now2) // now2 = 2009-11-10 23:00:00 +0000 UTC m=+0.000000001

	// alias clone
	d2Clone := copystructure.Must(copystructure.Copy(d))
	d2 := d2Clone.(Date)
	fmt.Printf("d2 = %+v\n", d2) // d2 = {wall:0 ext:0 loc:<nil>}
}

type Data time.Time creates a new type and not an alias. The alias syntax in Go is type A = B. If you did type Date = time.Time, then it works.
Therefore, copystructure doesn't know how to decode a Date. You'll have to setup a new custom copier for that (it is trivial, see: https://github.com/mitchellh/copystructure/blob/master/copier_time.go).


notebook cell add cell dropdown menu items  are displayed horizontally

on windows, the add cell button dropdown for the cell is not showing the options vertically

the main toolbar works as expected

Interesting - this doesn't repro for me...

Doesn't repro for me, either. Let's move this out of June.
@alanrenmsft can you see if you can repro this still with latest RC bits?

well, i can open repro this with insider build. what is the delta between master and the release branch for notebook features? anything could cause this?

Yup, can confirm this repros on master for me too now. Probably the VS Code merge. Assigning to @halerankin to look at

This is a Windows only issue, right?

Looks like this was caused by:
https://github.com/microsoft/vscode/commit/01b37c6b5d991f959f0b31a58055fecf6bc52729#diff-13d0c92933a37f90318d68f52e3c22d0
with the anchorAsContainer property in dropdown.ts being set to true in all cases.
There's a fix that went in as part of https://github.com/microsoft/vscode/commit/f8577ad1b6d8b5ed0bd0fade90aec430e0bada1e
This may fix our issue; let's re-evaluate when we get this commit as part of a vscode merge. Was able to verify that not hardcoding anchorAsContainer to true does fix this:

This has since been fixed.


pull request for e2e test at 11/12/2016 18:15:09

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

Details

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


Add template option to README example

the --template command line option is referenced on DefinitelyTyped, so it should be shown here to prevent confusion.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thanks!


fix today() failing if start_date is None - fixes #119

simply added an "or today" to prevent result.sort from failing.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 99.32%. Comparing base (41f0112) to head (d48d7fe).
Report is 36 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##              main     #120      +/-   ##
===========================================
- Coverage   100.00%   99.32%   -0.68%
===========================================
  Files            2        3       +1
  Lines          363      444      +81
===========================================
+ Hits           363      441      +78
- Misses           0        3       +3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@bkleinen Thanks for the pull request.
Two notes:

To reproduce in Things, how do I make a task in Today where task['start_date'] is None?
In Python, you can do datetime.datetime.today().date().isoformat().

@bkleinen In case this got lost, I'd like to repeat the question from https://github.com/thingsapi/things.py/issues/119 and the comment above. If I don't hear back within a week, I'll close this.

@bkleinen Closing this due to no answers coming back. Happy to open again once you return. (/cc @AlexanderWillner)


Adding "Support OyasumiVR" on readme & "short desc" to steam store page for Bahasa.

Tell me if something wrong about these PR :)

Thanks for updating the readme!
There is one small issue with your PR: The README_ID.md file is in the root of the repository, however, the readme files are supposed to be generated. These generated readmes can be found in docs/readmes/generated.
These generated files should however not be edited directly. The texts can be edited in docs/readmes/src/id/texts.txt, similar to how you've already updated docs/readmes/src/id/tokens.json here. If you're missing certain sections to translate, you can use the english texts.txt as a reference.
Once texts.txt and tokens.json are updated, the readme file can be generated from it (as well as the steam store description).

Thanks for updating the readme!
There is one small issue with your PR: The README_ID.md file is in the root of the repository, however, the readme files are supposed to be generated. These generated readmes can be found in docs/readmes/generated.
These generated files should however not be edited directly. The texts can be edited in docs/readmes/src/id/texts.txt, similar to how you've already updated docs/readmes/src/id/tokens.json in this PR. If you're missing certain sections to translate, you can use the english texts.txt as a reference.
Once texts.txt and tokens.json are updated, I can generate the readme file from it (as well as the steam store description).

Ah sorry, I'll fix it quickly now.

Looking good! Thanks for the updates ^^
Merging this now


Remove deprecated koji.config methods

@arist0tl3 For review

addService - updated and tested successfully.
projects - updated.
portExistingCode - updated and tested in editor, but sounds don't update dynamically in remix preview.

@arist0tl3 Ready for you to take another look. Let me know if additional changes are required or if it's ready to push. Thanks!


Recreating a container with new LTS gives 500 error

Before you start please confirm the following.

[X] Yes, I've searched similar issues on GitHub.
[X] Yes, I've checked whether this issue is covered in the Portainer documentation or knowledge base.

Problem Description
When trying to recreate a container I get and error: Request failed with status code 500
However, the container is recreated
This only happened after the upgrade
Expected Behavior
A notice that the container was recreated successfully, and a recreated container
Actual Behavior
An error 500, but a recreated container
Steps to Reproduce

Log in
Choose Environment by clicking on it
Choose Containers
Choose container
Click re-create
Check to re-pull image
Click recreate button
See error 500 in the top right corner
Click containers on the left
Click the container again
See the status of running for a few seconds

Portainer logs or screenshots

  | Error | Failure | Unable to retrieve containers | 2024-08-27 11:59:48
-- | -- | -- | -- | --
  | Error | Failure | Request failed with status code 500 | 2024-08-27 11:58:57
  | Error | Failure | Request failed with status code 500 | 2024-08-27 11:50:12
  | Error | Failure | Request failed with status code 403 | 2024-08-27 11:38:15
  | Error | Failure | Request failed with status code 403 | 2024-08-27 11:38:04

Portainer version
2.21.0
Portainer Edition
Business Edition (BE/EE) with 5NF / 3NF license
Platform and Version
Docker 24.0.7 (API: 1.43)
OS and Architecture
linux x86_64 Ubuntu 22.04.4 LTS
Browser
Firefox 129.0.2
What command did you use to deploy Portainer?
version: '3'
services:
  portainer-ee:
    container_name: Portainer-Compose
    hostname: portainer-compose
    image: portainer/portainer-ee:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /Data/Portainer/:/data
    ports:
      - 9000:9000
      - 9443:9443
    healthcheck:
      test: ['CMD', '/portainer', '--version']
      retries: 3
      interval: 30s
      timeout: 10s
    restart: always

Additional Information
I tested this through cloudflare tunnel, and swag (nginx) reverse proxy.  Containers were not ones hosting the proxy.

The above comment asking you to download a file is malware to steal your account; do not under any circumstances download or run it. The post needs to be removed. If you have attempted to run it please have your system cleaned and your account secured immediately.

The above comment asking you to download a file is malware to steal your account; do not under any circumstances download or run it. The post needs to be removed. If you have attempted to run it please have your system cleaned and your account secured immediately.

Yeah, I figured as much.  Thanks for confirming.

Can you check your browser's developer console to see if there's any additional detail on the error? In Chrome, open Developer Tools, go to the Network tab, then attempt the recreate again. Find the call that gave the 500 error (it should be in red), select it and select the Response tab. This detail will help us figure out the underlying problem.

Can you check your browser's developer console to see if there's any additional detail on the error? In Chrome, open Developer Tools, go to the Network tab, then attempt the recreate again. Find the call that gave the 500 error (it should be in red), select it and select the Response tab. This detail will help us figure out the underlying problem.

XHRPOST
https://$URL/api/docker/2/containers/975e66c4dd40e0d23a6d2bd0e048af6ff9242a2af110776b3a380f6015f6729b/recreate
[HTTP/2 500  10778ms]
message	"Error recreating container"
details	'Create container error: "specify mac-address per network" requires API version 1.44, but the Docker daemon API version is 1.43'
Here's a container I was running it on (I removed the other containers in the stack, but there are no stack-wide things set):
version: "3.3"
services:
freshrss:
container_name: Freshrss-Compose
hostname: freshrss-compose
image: freshrss/freshrss:latest
environment:
- TZ=America/New_York
- CRON_MIN=3,23,43
volumes:
- /Data/RSS/data:/var/www/FreshRSS/data/
- /Data/RSS/extensions:/var/www/FreshRSS/extensions
healthcheck:
test: /etc/init.d/apache2 status || exit 1
interval: 30s
timeout: 10s
retries: 3
restart: always

Ah, you're running an out of date version of Docker (sorry, I didn't spot that initially). Docker 24 reached end of life a couple of months ago, and Portainer 2.21.0 is built to support Docker 26 and above. I'd recommend updating your version of Docker and this should hopefully resolve the issue for you.

@jamescarppe:
I want to upgrade my Portainer from previous LTS to current LTS and I wonder how I should do it - I mean, should I update Portainer and then Docker on my Linux VM, or should I upgrade Docker first and then Portainer?

Ah, you're running an out of date version of Docker (sorry, I didn't spot that initially). Docker 24 reached end of life a couple of months ago, and Portainer 2.21.0 is built to support Docker 26 and above. I'd recommend updating your version of Docker and this should hopefully resolve the issue for you.

That makes sense, thanks.  It might not hurt to have a specific warning calling out ubuntu as that's the most recent version in the default repo.

I'll second the warning as I ran into this issue using Flatcar Linux on my end. Looking at their website, they plan to move to Docker 26 by roughly October for Stable (it's looking like they are skipping 25).

https://github.com/portainer/portainer/issues/11882

#11882

So is this due to portainer not supporting docker engine versions, and deliberately putting in an error, or that docker is providing different responses when accessing the socket?  If it's the 1st item, then why have a manual check, simply have it in the release notes.  If the 2nd, then I guess it is what it is.

@jamescarppe:
I want to upgrade my Portainer from previous LTS to current LTS in the next few weeks (if some bugs appears AKA waiting for 2.21.1 ;)), and I wonder how I should do it - I mean, should I update Portainer and then Docker on my Linux VM, or should I upgrade Docker first and then Portainer?

Either is generally fine. I'd probably do Docker first then Portainer - there's nothing that will majorly break in Portainer from the Docker upgrade, it's just specific functionality that doesn't work. If you're updating Portainer right after you wouldn't even notice.

It might not hurt to have a specific warning calling out ubuntu as that's the most recent version in the default repo.

The official Docker install instructions for Ubuntu recommend using the official Docker repository rather than Ubuntu's default apt repos. Our install instructions also explicitly mention following the official Docker instructions.

So is this due to portainer not supporting docker engine versions, and deliberately putting in an error, or that docker is providing different responses when accessing the socket?

The error is from the Docker API and is based on the version of the library we're using to interact with it. To resolve CVEs in earlier versions we needed to update the library version, and changes between the versions means that the library we're using requires API version 1.44, whereas Docker 24 is API version 1.43.
Where possible we highly recommend updating to a newer version of Docker. We list the versions we test against for each release in our documentation - for 2.21.0 LTS this is Docker 26 and 27.

So what's the connection between https://github.com/portainer/portainer/issues/11882 and this one if this is not a duplicate of that one?

So what's the connection between #11882 and this one if this is not a duplicate of that one?

They are essentially duplicates, yes. The primary difference is the expected supported Docker versions for 2.21.0 LTS versus the 2.20.x release. For clarity, I will close #11882 as a duplicate of this.

@jamescarppe you, yourself indicated that the Expected Behavior is Container recreation to succeed.

Correct. We are discussing internally the next steps and I'll report back here when I know more.

As a note, if I stop the container, then re-create, behavior is normal, no issues.

i understand that you need to use the docker version 26/27, but, for example, at synology, the official docker has 24 version. . .

Unfortunately I'm having the same issue with my Synology NAS. I tried rolling back to 2.20.3 which should be easy enough as a short term solution, however the Container wouldn't start up due to the DB which has been upgraded apparantly.
@jamescarppe If you guys can't find a good solution is it possible to simply copy back the Database Backup and roll back to 2.20.3? I saw that one has been created in the Portainer Config folder but I'm unsure where to copy this and if there are other dependencies when rolling back.
Thanks!

Thanks for the template, sent that yesterday. In the meantime for Synology the workaround is to Pull and (Re-)Deploy via Stacks, at least it works there and we can update our Containers until Synology updates the Docker Version.

2.21.1 fixes the issue.  Good to go, thank you.

So.. the docs still states that 2.21.1's docker versions are: 26.0.2 and 27.0.1 (https://docs.portainer.io/start/requirements-and-prerequisites).
But this issue only happened on Docker 24 and below. Does this mean 24 is still ok with portainer 2.21.1?

2.21.1 fixes the issue. Good to go, thank you.

Can you please link Pull Requests with issues?
And there are no commits between 2.21.0 and 2.21.1 tags: https://github.com/portainer/portainer/compare/2.21.1...2.21.0

Can you please link Pull Requests with issues?

I believe #12178 is the PR for this. We're in the process of adjusting our workflows in GitHub so I'll raise this with the team.

And there are no commits between 2.21.0 and 2.21.1 tags: 2.21.1...2.21.0

Not sure why that's not showing any. If I switch the order it shows the commits. https://github.com/portainer/portainer/compare/2.21.0...2.21.1

So.. the docs still states that 2.21.1's docker versions are: 26.0.2 and 27.0.1 (https://docs.portainer.io/start/requirements-and-prerequisites).
But this issue only happened on Docker 24 and below. Does this mean 24 is still ok with portainer 2.21.1?

On that page we also say:

The following tables list all of the configurations that we have tested, validated and consider to be functional. If a variant is not listed, it doesn't mean it won't work, it just means it hasn't been tested.

Docker 26.0.2 and 27.0.1 are what we tested against in our automated and manual testing suites for the release. For this specific Docker 24 issue we of course tested against Docker 24. Where possible we recommend updating to a version of Docker that is not end-of-life, but understand that for Synology users in particular this is easier said than done.

Not sure why that's not showing any. If I switch the order it shows the commits. 2.21.0...2.21.1

Ahh, right. So this is GitHub bug for this function:


How to do filtering

Is your feature request related to a problem? Please describe.

After aggregation, I would like to only forward windows to the next stream where a certain condition holds.
Describe the solution you'd like

I think this could be done with a WHERE clause, but so far I have neither found documentation on it, nor been able to express this in the query language.
Describe alternatives you've considered

None, but as filtering is a listed feature, I am assuming there is some way to do this.
I also searched through the issues, but did not really find an answer.
Additional context

SpringQL helps you reduce data size by filtering, aggregation, and projection.

I got your point.
We are planning to change programmers' interface from SQL-like language to Beam Model.
ref: https://github.com/SpringQL/SpringQL/issues/97
It may take a long time so please be patient.

And is it also true that it currently is neither possible to join multiple streams neither by a multi-join like
FROM sensor_1
JOIN sensor_2
    ON sensor_1.motor_id = sensor_2.motor_id
JOIN sensor_3
    ON sensor_1.motor_id = sensor_3.motor_id

nor by "writing" to an intermediate stream like
CREATE STREAM join_1 (
    motor_id INTEGER NOT NULL
    reading_1 FLOAT NOT NULL
    reading_2 FLOAT NOT NULL
);

CREATE PUMP pump_join_1
    INSERT INTO join_1
[...]
    FROM sensor_1
    JOIN sensor_2
        ON sensor_1.motor_id = sensor_2.motor_id;

CREATE PUMP pump_result
    INSERT INTO results
[...]
    FROM join_1
    JOIN sensor_3
        ON join_1.motor_id = sensor_2.motor_id;


City improvements fall off the bottom of the window in manager when there are too many.

There should be a more button for a second page.  Will try to upload a second screenshot from original civ.
The issue::

This has already been implemented in these commits:
https://github.com/SWY1985/CivOne/commit/04284ebb6a550830034a063b13ecc4f661755b3f
https://github.com/SWY1985/CivOne/commit/74c6dd820b34c54345a904abcad4b21109098ebf


How not to build plugin with google chart

Hi,
Your project is really cool but I have a good suggestion. Why you don't build your js plugin with directly the google charts loader inside it ?
It's more simple to include your plugin into our grafana server using this and, in that case, we don't have to modify the index.html file
Thanks

@kumaravel29 That would be great if it was self-contained when you release the 6.x compatible version.

Tried including the google charts in the plugin itself. But the Sankey chart does not seems to be available with the function. Any suggestions/links related to this would be appreciated.

Not sure you can:

Can I use charts offline?
Your users' computers must have access to https://www.gstatic.com/charts/loader.js in order to use the interactive features of Google Charts. This is because the visualization libraries that your page requires are loaded dynamically before you use them. The code for loading the appropriate library is part of the included script, and is called when you invoke the google.charts.load() method. Our terms of service do not allow you to download the google.charts.load or google.visualization code to use offline

From: https://developers.google.com/chart/interactive/faq

Perhaps ask Grafana Devs if you can include it in some other way?

Looks like some other plugin's use externaly hosted .js files too. Search for MathJax.js in this file to see the imported src URL: https://github.com/algenty/grafana-flowcharting/blob/master/src/libs/viewer.min.js
Looks like this in the browser:
<script type="text/javascript" src="https://www.draw.io/math/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>