Question: Inquiry Regarding LED Screen Procurement?

I think you should step back and start again from an unmodified repo. If you daisy chain two 64x64 panels together, they should work as a single 128x64 panel. Both variants (vortex and rotovox) use two 128x64 panels, so we know that part works. If the image is the wrong way up, it's because the panels are the wrong way up.
You can't adjust the rotation of the image in the software. The orientation of the scan lines, and the order they're addressed, is fundamental to how the device works. It times its output to where the current scanline is physically located in space.

Vortex assumes two 128x64 panels arranged with horizontal scanlines, placed back to back. In this configuration, both panels have line 0 at the top, and line 63 at the bottom.

Rotovox assumes two 128x64 panels arranged vertically (with their scanlines vertical), and both facing the same way. One of the panels is upside down compared with the other. The point of this arrangement is to ensure that each corresponding scanline is at the same radius. Line 0 of both panels is closest to the axis, line 63 is furthest from the axis.

If you want to replicate one of these setups using four 64x64 panels, arrange them in two chains of 2, with each chain arranged so that their horizontal scanlines are aligned. Check that this works using `rpi-rgb-led` with no display transforms applied. The panels have to be side by side, the same way up, with scanline 0 extending across the top of both panels.
(If that doesn't work, check whether `--led-rows=64 --led-cols=64 --led-chain=2` behaves the same way as `--led-rows=64 --led-cols=128 --led-chain=1` - the assumption I'm making is that they're equivalent, but I've never tested that.)

If none of that helps, it may still be possible to use make a smaller display using the 64x64 panels without chaining.

Inquiry Regarding LED Screen Procurement
(Please excuse my limited English proficiency; this message was translated with AI assistance.)

Dear Author,

I am a DIY creator from China. While attempting to replicate your project, I encountered challenges in procuring the specific LED screen used. I would like to clarify the details of the LED panel you employed.

From your referenced project link (about driving an LED screen with a Raspberry Pi 4), it seems you used a screen with a P1.875 pixel pitch, a 128x64 array, and FM6126 driver chips. Is this accurate? (Note: This information might differ from your actual setup.)

If correct, manufacturers in China have informed me that FM6126-driven screens are discontinued. Could you provide guidance on driver alternatives? If your screen uses a different driver chip (which we sincerely hope is the case), please specify the chip model so we can source compatible panels from other suppliers.

Additionally, you shared a product link that directs to a flexible LED screen with a soft rubber base (now discontinued). However, your YouTube video appears to show a rigid screen. Did you actually use a flexible screen in your project?

Your assistance would be immensely valuable. Thank you very much!

The panels I used were flexible - they were left over from another project. I removed the rubber backing and printed a rigid frame to hold them. There's no need for them to be flexible if you're sourcing new parts, you only need to be able to hold them back to back with around 20mm between them.

These panels use a shift register based addressing scheme on the `A` `B` and `C` pins. The code also supports panels using the more straightforward `ABCDE` addressing. You define which approach to use in the `gadget.h` file - `gadget_rotovox.h` uses `ABCDE`. If you get panels which use a different protocol, it's not a big job to add that. I've only implemented the protocols I was able to test on my own hardware.

We sincerely appreciate your help. We tested new display panels and modified the pin configurations, ultimately succeeding in activating the screen. However, we encountered new issues. If you are reading this message, please proceed to URL where we have posted our questions.

Display content exhibits tiling misalignment
We are pleased to report that with your guidance on modifying the pin definitions, we have successfully lit up the screen. However, when attempting to run content on the display, numerous errors occurred. Despite trying parameter adjustments, the display performance remains unsatisfactory.

Critical constraint:
In Mainland China, the only screen suitable for this project is the P2 model with 64x64 resolution. This hardware limitation has forced us to make code adaptations.

Below is the set of modifications we implemented that may impact display artifacts. All other changes exclusively pertain to output pin definitions. No further modifications beyond those specified have been executed.

#define PANEL_WIDTH 64
#define PANEL_HEIGHT 64
//width must be higher than height
//64*64 is the best
//if 128*64 ,the image is mixed together (4 pixels up)
#define PANEL_COUNT 4
//Cannot be lower than 2
//tried 4 and the image is same as w=128 and h=64
#define PANEL_MULTIPLEX 2 //Cannot be lower than 2
//tried 4 and the image is depart into 4 and cannot connect together
#define PANEL_FIELD_HEIGHT (PANEL_HEIGHT / PANEL_MULTIPLEX)

//#define PANEL_0_ORDER(c) (PANEL_WIDTH - 1 - c)
#define PANEL_0_ORDER(c) (c)
//changed and means nothing with the image
#define PANEL_1_ORDER(c) (c)

//#define VOXELS_X 128
//#define VOXELS_Y 128
//#define VOXELS_Z 128

#define VOXELS_X 64
#define VOXELS_Y 64
#define VOXELS_Z 64
//All the pixels in the space
#define VOXEL_Z_STRIDE 1
//changed into 2 and the image is longer and turn into 4 piece
//changed into 4 and the image is morre longer and turn into 8 piece
//happen with Error
#define VOXEL_X_STRIDE VOXELS_Z
#define VOXEL_Y_STRIDE (VOXEL_X_STRIDE * VOXELS_X)
#define VOXELS_COUNT (VOXELS_X*VOXELS_Y*VOXELS_Z)

//#define PANEL_0_ECCENTRICITY 13.5
//#define PANEL_1_ECCENTRICITY 0.375

#define ROTATION_ZERO 160

//#define VERTICAL_SCAN
//this must be changed
//tried to use when 64*64,and displayed well,but still a few pixels out of one 64*64 screen
#define CLOCK_WAITS 5
//#define CLOCK_WAITS 4
#endif

and this is what we get ↓

Image

We attempted to run all toys, but clearly observed that the images were tiled across the screen with a downward pixel offset (for the 64x64 screens, their left and right halves were essentially swapped, allowing the two serially connected screens to piece together the actual image). We tried to identify the root cause of this misalignment, but reviewing the entire project codebase made this effort impractical.

Additionally, with ./flight, the image was visibly rotated 90 degrees. Despite switching between vertical and horizontal modes, the image orientation remained unaffected. When running ./fireworks, the fireworks' position shifted to barely visible areas. Furthermore, after testing the Mantis Shrimp model file downloaded from the YouTube-provided link, only a small cluster of light points appeared on-screen, with no clear cause identified.

Our current hypothesis suggests potential incompatibility between our horizontally scanned screens and the project's intended display type. However, modifications attempting to address this mismatch proved ineffective.

We sincerely await your further assistance and greatly appreciate your support!

Image

（Our shrimp is still in its egg👇😢）
Image

（The panel we used）
Image

If you require additional details, please do not hesitate to contact us, and we will provide a prompt response.

If you chain them together (connect the output from the first panel to the input of the second panel), they should work like a single 128x64 panel

Actually we tried just like what you said,and we turned the panel physcally 90° to get the image.
This is what we get 👇

Image

Image

Image

The images displayed on the screen are consistently bisected, resulting in significant perplexity to us.

I just used 128x64 P1.875 flexible displays from AliExpress, they shipped from China. Remove the flexible rubber, find some M2.5 screws and you'll be able to rigidly mount them with the 3D printed frame.

@bradylangdale

Thank you for your assistance. But are you certain the display panels are compatible? In reality, we have sourced screens from multiple manufacturers, but most prove incompatible. We've attempted various methods, even purchasing corresponding drivers to analyze their output waveforms for adaptation, yet found no consistency. The project requires LED panels with FM6126/FM6124 driver chips. Despite testing numerous displays (at considerable expense), none could be activated.

Many Chinese manufacturers focus on custom orders, often failing to properly adhere to HUB75 interface protocols. The sales personnel responsible for these panels often lack technical expertise, primarily handling retail operations rather than engineering details. Technical specifications typically require contacting corporate engineers, who generally refuse to provide further information before bulk orders. This forces reliance on proprietary adapters for compatibility.

Attached is a screenshot from the adapter driver software we obtained, showing all supported driver types - demonstrating the complexity involved. Remarkably, during our search for Raspberry Pi DIY development solutions, we discovered the exact panel type shown in my photo. WAVESHARE has specifically developed LED panels for Raspberry Pi development.

The additional images show some of the other types of panels we procured (the rest are stored away, so these are the only ones I currently have on hand). All of these panels have been confirmed to be unactivatable on raspberry.

Image

Image

Image

Image

The panels above uses FM6253(For P1.875 ，the one without plastic frame) ，and LS9929N(P2 with plastic frame)

@IceSakura0001

The panel you pictured above uses features ACBDE pins on the interface. The code provided in the project uses ABC panels. You could get these panels to work but you'd need to support the additional pins when you bit bang.

Yes, they all adopt the ABCDE addressing method. We are using rotovox.h, which supports this approach.And we successfully powered on the screen, displaying correct (though incorrect coordinates) information.

Therefore, the primary issue we're currently facing is that the display is not rendering in the correct position, and the content appears tiled (with repeated sections at the edges).

You can see what happened above.

Ah apologies, I'm understanding the original issue. I'm not entirely sure what it could but it might be because rotovox assumes the panels are place tall side-by-side, with the rotational axis at the edge of each panel. vortex assumes the rotational axis is in the center of each panel. The horizontal and vertical scan section of the code affect this, but I haven't dug further and stuck with vortex for now.

If I understand correctly, you want to implement the horizontal, back-to-back layout of Vortex, but using 4 64x64 panels instead of 2 128x64.
If you daisy chain the panels, they can be treated as 2 128x64 panels, so the setup would be the same as for gadget_vortex -

PANEL_WIDTH 128
PANEL_COUNT 2
VOXELS_X 128
VOXELS_Y 128
VOXELS_Z 64

leave `VERTICAL_SCAN` undefined

You say it's ABCDE addressing, so if you're starting with gadget_vortex, you'll need to undefine the shift register addressing and define the relevant pins for the address lines:

//#define ADDR_CLK 4
//#define ADDR_DAT 18
//#define ADDR__EN 15
//#define ADDR__EN_MASK (1<<ADDR__EN)

#define ROW_A xx
#define ROW_B xx
#define ROW_C xx
#define ROW_D xx
#define ROW_E xx
#define ADDR__EN_MASK (0)

You might also need to fiddle with `CLOCK_WAITS` - to get the highest framerate you want it as low as it will go without resulting in image corruption.

Image

I discovered that I must exchange P0_RGB_1 and P0_RGB_2, which were the root of the upside down problem. The original pin setup was correct in other programs, so there might be something wrong with the hardware.

But there is still something wrong with the image. As you can see:

Image

The whole image seems moved 8 pixels right.

Just now, while I was editing this reply, my colleague help me find an effective solution, so I'll document it here as well:
gadget_rotovox.h :
#define PANEL_0_ORDER(c) ((c + 8) % PANEL_WIDTH)
#define PANEL_1_ORDER(c) ((c + 8) % PANEL_WIDTH)

After modifying these parameters, the image in the left 8 columns of pixels became inverted. Our current hypothesis is that the most likely cause is a data exchange occurring in these 8 columns - the image information that should have been output to P0_RGB_1 was instead routed to P0_RGB_2. We attempted to fix this issue but were unsuccessful. This is what it looks like:

Image

Image

In short, we've largely achieved normal display functionality, but encountered issues when adjusting the image position to rotate around the correct axis.


Question: Add MiroTalk?

Hello @nitad54448,
What do you mean by `I get a certificate error` ?
If you using the MiroTalk SSL default certificates on: URL
At most the browser could tell you that it is an unknown certificate, you accept it and you can use Mirotalk in HTTPS.
I haven't tried caddy, I usually use Let's Encrypt for trusted certificates.
Regards

Add MiroTalk
_Best of JS_ is for the most popular open-source projects related to the web platform and Node.js.

What is the URL of the project you'd like to add to _Best of JS_?

GitHub: URL
Demo: URL

Before submitting the request to add a new project, please check the following points:

- ✅ The project is related to the web platform or Node.js
- ✅ The project has more than 100 stars on GitHub
- ✅ The project has thorough documentation in English
- ✅ The project is not deprecated and actively maintained

How would this project be tagged? (Pick one or several existing tags from this list: URL

WebRTC, Websocket, Real-Time

Also you can suggest new tags to add if you think _Best of JS_ is missing useful tags.

self-hosted, sfu, p2p, web-app, video-conferencing, video-call, voip, streaming, file-sharing, screen-sharing, whiteboard

Hello Miroslav @miroslavpejic85
Thank you for the suggestion, `MiroTalk` will be available on _Best of JS_ very soon.

About tagging:

- we have a `video` tag: URL
- we don't have `p2p` but we have `decentralized`: URL does it make sense to assign it to `MiroTalk`? Or should I rename it `p2p`, it would be better?

Thank you for your help! (tagging is so difficult 😅 )

Hello @michaelrambeau, thank you very much.

For this version, in case you could also add the video tag, so

bash
WebRTC, Websocket, Video, Real-Time

You're right, sorry, decentralized is fine in place of p2p.

In theory there are two versions of MiroTalk, this one (SFU) and the MiroTalk P2P (Decentralized)

## MiroTalk P2P

Best of JS is for the most popular open-source projects related to the web platform and Node.js.

What is the URL of the project you'd like to add to Best of JS?

GitHub: URL
Demo: URL

Before submitting the request to add a new project, please check the following points:

- ✅ The project is related to the web platform or Node.js
- ✅ The project has more than 100 stars on GitHub
- ✅ The project has thorough documentation in English
- ✅ The project is not deprecated and actively maintained

How would this project be tagged? (Pick one or several existing tags from this list: URL

WebRTC, Decentralized, Websocket, Video, Real-Time

Also you can suggest new tags to add if you think Best of JS is missing useful tags.

---

Does it make sense to add both of them, or just the first one ?

The difference between 2 you can check out here

Thanks to you and nice to meet you :)

@miroslavpejic85 Nice to meet you too 😄

Thank you for the explanations.

Just to confirm, there will be two projects on _Best of JS_:

- MiroTalk SFU
- MiroTalk P2P (this one will have the tag `decentralized`... that I should rename `P2P`maybe, I'm not sure which term makes more sense for most of the users)

@michaelrambeau Yeah :)

`MiroTalk SFU` - Tags: WebRTC, Websocket, Video, Real-Time
`MiroTalk P2P` - Tags: WebRTC, Decentralized (or p2p as you prefer), Websocket, Video, Real-Time

Thank you again!

Hello Miroslav @miroslavpejic85 , done, please check!

You look like the super star of the `Video` section 😄 : URL

image

...but sorry I made a mistake with the tagging, I'm going to fix it.

...done, please check again. The screenshot has been edited.

SFU implementation vs mesh Mirotalk
Hi. As ever, thanks for sharing your impressive work. I hope you take a breather sometime too heh.
In addition to your different hosting environments for the two (Railway won't suffice for mediasoup SFU?), I'm curious as to your experience with tangible differences in the two implementations. Specifically, if one has aspirations for clubhouse like audio-centric use, might that sans-video approach work upon the mesh version? Other comparisons, based on your experience would also be interesting to learn. Thanks!

`MiroTalk P2P`: URL

Architecture: `WebRTC Mesh` (peer to peer between browsers)

image

`Unlimited rooms, no limit of time`, supports `5 users in the single room` To have a good video-audio quality. The quality of the call is inversely proportional to the number of people on the call.

Required: `Client PC` (peers) must have a `good Bandwith and CPU`.

Deploy: Any host that support `Node.js` like: railway or heroku (Free service) or DigitalOcean for personal vm server (for a fee) ...

Bonus: There are an option to use it directly from your `LOCAL PC` and thanks to Ngrok you will be able to have conference and will be reached outside your local network, no matter where you are!

`MiroTalk SFU` (This one): URL

Architecture: `WebRTC SFU` (Server with Selective Forwarding Unit) using mediasoup

image

`Unlimited rooms, no limit of time`, and in theory `no limit of users`. Routing is a multiparty topology, where each participant sends its media to this integrated server, and receives all other's media from it.

Required: `Server` must have a `very good Bandwidth`, and good RAM and CPU.

Deploy: `VM` that support `Node.js and other stuff` like: DigitalOcean or amazon-aws (paid service) ...

Bonus: There are an Option to use it directly from your `LOCAL PC` by some extra settings and thanks to Ngrok you will be able to have conference and will be reached outside your local network, no matter where you are!

Based on the amount of users you have, you can choose the right solution for you :)

I hope I have clarified your doubts about the difference of the two versions?

Thanks and have a nice day.

Regards

Hi
I installed the SFU version on my LTS 20.04 selfhosted. It seems to work locally but not from outside. I did not get certificates but I use a caddy reverse proxy, which I configured correctly. I get a certificate error. Is there a way to use caddy's SSL certificates ?
Thanks

Good afternoon Miroslav, I have a question, how can I place your application on hosting, not in the way that you indicated in the documentation, but with the standard npm run build command, but the problem is when I run it, I get an error, how can I run the npm run build comm
New Bitmap Image
and here is an example what a normally compiled file looks like

Hello @VladimirGorin,
For questions please do not post here but join with us on Discord forum - `hepl-and-support channel`. Thank you!


Question: Usage of NonBondedForce.setIncludeDirectSpace(False)?

Not exactly like that, but what you can do is have the NonbondedForce compute only the reciprocal space term. Do that by calling `setIncludeDirectSpace(False)`. Then you can use a CustomNonbondedForce to compute the direct space part, both Coulomb and LJ, in whatever way you want.

Usage of NonBondedForce.setIncludeDirectSpace(False)
Hi,

I've created a very simple test case where I have 3 Coulomb forces:

1) NonBondedForce with PME
2) CustomNonbondedForce of a Coulomb potential with PeriodicCutoff
3) NonBondedForce.setIncludeDirectSpace(False) with PME

So if I'm not mistaklen, Force1 should be the sum of Force2 and Force3

Force1 and Force2 has values that I would except. Force3 seems completely off though.

Is this a bug? or am I missing something?

Thanks!

test_includedirectspace.zip

The direct space part of PME is not the same as the total energy. It's scaled by $\text{erfc}(\alpha r)$. See the manual for details.

Thanks Peter, I added the scaling to the direct space contribution Force2, but the Force3 is still extremely large and Force2 and Force3 do not sum up to Force1. What am I still missing? See the updated file.

test_includedirectspace2.zip

Also, I think you have small typo in the manual: Reciprocal space equation in 19.6.4 should be divided by k squared rather than m squared.

Yeah, this is kind of confusing. The difference comes from the exceptions. When you add an exception to a NonbondedForce, it means the interaction between a pair of particles should be computed with different parameters. But there's no way to do that in reciprocal space. PME spreads charge onto a grid and computes the interaction of the grid points with each other. There's no way to distinguish which bit of charge came from which particle. So it always includes all interactions, regardless of exceptions.

To compensate for that, we subtract them back off in real space. For most pairs of particles, we add $\text{erfc}(\alpha r)$ times the regular Coulomb energy. But for pairs that have exceptions, we instead *subtract* $\text{erf}(\alpha r)$ times the Coulomb energy, that being the energy that was incorrectly added in reciprocal space. You can use a CustomBondForce to do the same thing.

By the way, take a careful look at the API docs for `NonbondedForce.createExceptionsFromBonds()`. The second argument is the scale factor to apply to the Coulomb part of 1-4 interactions, *not* a number of bonds.

Thanks, that makes sense, a bit fiddly though haha.

However, I am still unable to get the right energy. Probably more things missing?

test_includedirectspace3.zip

Wouldn't it also make sense to do all these corrections automatically when someone requests NonBondedForce.setIncludeDirectSpace(False)?

You're almost there. You're just missing one exception in each molecule. Add this line

python
 bond_force.addBond(h1.index, h2.index, [q_h*q_h])

and then you get perfect agreement.

Point Electrostatics Combined -16738.596759002205 kJ/mol
Point Electrostatics SR -15283.173279924033 kJ/mol
Exception correction 84096.7892801077 kJ/mol
Point Electrostatics LR -85552.21275918589 kJ/mol

total combined: -16738.596759002205
total split: -16738.59675900222

The correction is computed in direct space, so if you say not to do direct space calculations, it doesn't get included. I know, it's confusing since it's a correction to the reciprocal space term and therefore conceptually seems like it should be part of the reciprocal space calculation. But that isn't where it's computed.

Oh my bad, thanks for catching that.

That makes sense. And splitting the SR / LR Coulomb is special enough case that it's okay that it's involved to do it.
But considering my starting point was just adding a C6 PME term without C12 (#4349), I wonder if that should be somewhat easier (specially considering openmm already only uses C6 term for PME).

(side note - actually now I'm thinking with respect to #4349 it might be better to have a normal LJ PME with both SR and LR with an arbitrary C12 and then just subtract the C12 term with a custom force)

But I don't really mind the additional steps - what I wonder is the computation cost. Do you think I'm accruing a lot more computational cost by for example splitting the Coulomb term this way with all the additional force terms? Or is that done efficiently inside openmm that it doesn't make much difference? Does it also depend on the platform?

That would certainly be the simplest way to implement it. The performance will be a bit worse because you're paying the cost of computing repulsion three times: once to add the C12 term, once to subtract it again, and once to compute whatever form you actually want to use.

Generally speaking, the cost of a CustomNonbondedForce is very similar to NonbondedForce, assuming they compute exactly the same function. There's one extra twist though, if you really want to get down into the details and get the fastest possible performance. erfc() is an expensive function to compute. When working in single precision, we instead use an approximation that's almost as accurate but a lot faster:

 URL

Supplying NonBondedForce LJ parameters where C12 = 0
Hi,

I would like to use NonBondedForce for Coulomb and C6, because I'd like to use LJPME for long-range interactions.

However, I have a completely different functional form instead of C12 to account for the repulsion, for which I use CustomNonBondedForce.

My question is - can I somehow supply LJ parameters so that C12 is equal to 0 while C6 is not?

If not, what alternative you would have for solving my case?


Question: [CoE Starter Kit - BUG] Audit Component Issue?

You will need to hire someone that can sit with you to fix your situation then. Your environment is not in a state that I can assist in debugging remotely.

There are partners that specialize specifically in CoE Starter Kit, so you could reach out to them for assistance. You can find some via you can find them via AppSource

As a reminder, although the underlying features and components used to build the kit (such as Dataverse, admin APIs, and connectors) are fully supported, the kit itself represents sample implementations of these features. While we do our best to help people use them as is, they are not a supported feature.

[CoE Starter Kit - BUG] Audit Component Issue
### Does this bug already exist in our backlog?

- [X] I have checked and confirm this is a new bug.

### Describe the issue

HI,

we are facing an issue in Audit component and would like to reinstall only audit component , can you please help me on this

### Expected Behavior

Post upgrade also , Flow is still show the old connectors in the flow

The flow is not upgraded and didn't change the connectors

### What solution are you experiencing the issue with?

Audit Log

### What solution version are you using?

3.3

### What app or flow are you having the issue with?

Admin | Sync Audit Logs

### What method are you using to get inventory and telemetry?

Cloud flows

### Steps To Reproduce

Post upgrade also , Flow is still show the old connectors in the flow

The flow is not upgraded and didn't change the connectors

### Anything else?

Post upgrade also , Flow is still show the old connectors in the flow

The flow is not upgraded and didn't change the connectors

This typically happens if the flow has unmanaged layers. If you open the CoE Admin Command Center app and navigate to CoE Flows, you can filter by area / search for the flow and it will show you an icon here if the flow has unmanaged layers - you can then click on "Remove solution layers" to remove the layers.
image

I have removed the unmanaged layer and also upgrade the audit log component. the flows is still showing the old connectors
image

I'm not sure what you mean by showing old connectors? The screenshot is what the current version of the flow looks like.

Actually when we upgrade the Audit log to version 3.3 , the Admin | Sync Audit Logs should look like

image

But when I have upgrade the version to 3.3 my flow looks like

image

You're right, I missed that.

Please share with me what you see when you open the solution layers of this flow
image

Please share with me what you see when you select the Solutions tab in the environment - you can filter this to only show solutions that start with Center of Excellence but please don't clip it and make sure the screenshot shows us all the Center of Excellence solutions in the environment including the version number
image

Hello,

it looks like you raised this with us in the past, and we informed you we were unable to assist any further due to complexity of your issues. Here's the thread URL

You will need to hire someone that can sit with you to fix your situation then. Your environment is not in a state that we can assist in debugging remotely.

There are partners that specialize specifically in CoE Starter Kit, so you could reach out to them for assistance. You can find some via you can find them via AppSource

As a reminder, although the underlying features and components used to build the kit (such as Dataverse, admin APIs, and connectors) are fully supported, the kit itself represents sample implementations of these features. While we do our best to help people use them as is, the kit itself is not a supported feature.

But my question is different, I will not be able to take help from Appsource.

I just need a one help, is it possible to delete the existing audit component and install new Audit component

[CoE Starter Kit - BUG] Admin | Sync Audit Logs: Error from token exchange: Permission denied due to missing connection ACL: Connection
### Describe the issue

Hi,

I have upgraded Audit log component, Now when I turn on the flow and run. There is an error being throwed.
Error: Error from token exchange: Permission denied due to missing connection ACL: Connection URL version -9223372036854775808, connection=unitedstates-002/commondataservice/shared-commondataser-872ccec3-0baf-4ee2-8c29-bfca1c1a89c0

"body": {
 "status": 403,
 "source": " URL
 "message": "Error from token exchange: Permission denied due to missing connection ACL: Connection URL version -9223372036854775808, connection=unitedstates-002/commondataservice/shared-commondataser-872ccec3-0baf-4ee2-8c29-bfca1c1a89c0"
 }
}

Can you please help me to resolve this.

### Expected Behavior

The flow should run successful and even the child flow should run successfully.

### What solution are you experiencing the issue with?

Audit Log

### What solution version are you using?

3.3

### What app or flow are you having the issue with?

Admin | Sync Audit Logs

### Steps To Reproduce

Post upgraded.
Turn on the Admin | Sync Audit Logs flow
Run the flow

### Anything else?

_No response_

Hello. Connections to custom connectors get broken on solution upgrade. It sounds like you knew that and tried to fix though.

If the normal fix up steps did not resolve, then you likely ended up with a bad connection, perhaps due to the wrong identity provider being selected as in issue 4808

If that occurs please try the steps outlined in issue 4961

Sorry for the complexity here!

ListDefns-TenantIDEnvironmentVariable
ListDefns-TenantIDEnvironmentVariable

{
 "statusCode": 403,
 "headers": {
 "x-ms-failure-cause": "apihub-token-exchange",
 "x-ms-apihub-obo": "false",
 "x-ms-apihub-cached-response": "true",
 "Date": "Tue, 04 Apr 2023 17:45:08 GMT",
 "Content-Length": "523",
 "Content-Type": "application/json"
 },
 "body": {
 "status": 403,
 "source": " URL
 "message": "Error from token exchange: Permission denied due to missing connection ACL: Connection URL version -9223372036854775808, connection=unitedstates-002/commondataservice/shared-commondataser-872ccec3-0baf-4ee2-8c29-bfca1c1a89c0"
 }
}

Hello, I'm afraid you appear to be on a very old version of the audit log solution or you have unmanaged layers preventing you from seeing our changes. We no longer fetch env vars that way.

Can you please share a screenshot with what solutions you have installed in this environment? Be sure to expand the indicated columns so that we can see full names
image

Please remove the unmanaged layer manually instead of through our tooling for both this flow and the child (in case it has one too):
image
image

If you are on 3.3 and dont have unmanaged layers, then that call should not be present. It shoudl look like this
image

I have followed the same steps to remove unmanaged layer. Unmanaged layers are removed.
But still i see old model of flow

image
image
image

Please help me to resolve this, I need to fix this issue on priority

I'm afraid I don't know how to assist as if you've really removed the unmanaged layer, and really have 3.3 installed, then you would not see the old bits.
Can you share this screenshot showing it not having unmanaged layers?
image
image

ok I've never seen that, where the core components are a layer on the flow. So I have no idea how you got there.
It should look like this
image

oh i thikn you didnt select the flow. You need to select the flow
image

ok from this, and the other bugs in your list, your environment is just in a broken and unknown state. I'm afraid we cannot help you get out of this. You should start from scratch in a clean environment.

All other flows in core are working fine.

Can help me to fix Audit component

I'm afraid I cannot. From looking at this and through all your bugs you are just in a completely unknown state. You will need someone that can put their hands on it in order to resolve this, or you need to start from scratch.

If you chose the former, there are partners that specialize specifically in CoE Starter Kit, so you could reach out to them for assistance. You can find some via you can find them via AppSource

As a reminder, although the underlying features and components used to build the kit (such as Dataverse, admin APIs, and connectors) are fully supported, the kit itself represents sample implementations of these features. While we do our best to help people use them as is, they are not a supported feature.

Your options are to start from scratch in a new environment or find someone that can sit with you (internally or by hiring a partner)

I have to fix in this environment itself, We cannot create new environment


Question: JXL->JXL processing (to remove alpha channel) drops color profile?

The `-x` flag in cjxl is only used for inputs that can't have color profiles embedded (PPM, ect), otherwise it's taken from the original file.
JPEG XL can use Color Enums instead of ICC profiles for common color spaces (sRGB, P3, Rec2020, ect). Usually this is only used for lossy, but it seems ImageMagick is incorrectly using Enums for lossless too. This has little to no impact visually, but it does remove the original ICC profile.

Using cjxl to recompress the source file retains the ICC in Lossless, and uses the sRGB Enum when set to lossy, confirming it as an ImageMagick bug. @sboukortt might know what area needs to be fixed though, likely just a missing flag.

JXL->JXL processing (to remove alpha channel) drops color profile
### ImageMagick version

7.1.1-44

### Operating system

Linux

### Operating system, version and so on

Fedora 41 x86_64

### Description

The Fedora 42 background images are going to be distributed in JXL format instead of the traditional PNG. Due to the limitations of the GNOME background system's timed-transition image blending, it's necessary that background images be stripped of their alpha channel before installation. We've been accomplishing that with a `magick -alpha off` command, which works fine on PNG images.

It works fairly well on JXL images as well (with an added `-quality 100`), but the output image no longer carries the same color profile as the input image.

### Steps to Reproduce

## 1. Unzip and examine the original file:

bash
$ unzip f42-01-day.zip
Archive: f42-01-day.zip
 inflating: f42-01-day.jxl

$ identify -verbose f42-01-day.jxl
Image:
 Filename: f42-01-day.jxl
 Permissions: rw-r--r--
 Format: JXL (JPEG XL (ISO/IEC 18181))
 Mime type: image/jxl
 Class: DirectClass
 Geometry: 4032x3024+0+0
 Units: Undefined
 Colorspace: sRGB
 Type: TrueColorAlpha
 Base type: Undefined
 Endianness: Undefined
 Depth: 8-bit
 Channels: 4.0
 Channel depth:
 Red: 8-bit
 Green: 8-bit
 Blue: 8-bit
 Alpha: 1-bit
 Channel statistics:
 Pixels: 12192768
 Red:
 min: 12 (0.0470588)
 max: 214 (0.839216)
 mean: 126.731 (0.496982)
 median: 133 (0.521569)
 standard deviation: 43.3644 (0.170056)
 kurtosis: -0.324868
 skewness: 0.0404497
 entropy: 0.749915
 Green:
 min: 5 (0.0196078)
 max: 224 (0.878431)
 mean: 137.296 (0.538416)
 median: 142 (0.556863)
 standard deviation: 47.5222 (0.186362)
 kurtosis: -0.608794
 skewness: -0.11526
 entropy: 0.76154
 Blue:
 min: 5 (0.0196078)
 max: 221 (0.866667)
 mean: 105.595 (0.414096)
 median: 90 (0.352941)
 standard deviation: 54.5139 (0.21378)
 kurtosis: -0.439243
 skewness: 0.766023
 entropy: 0.752578
 Alpha:
 min: 255 (1)
 max: 255 (1)
 mean: 255 (1)
 median: 255 (1)
 standard deviation: 0 (0)
 kurtosis: 0
 skewness: 0
 entropy: 0
 Image statistics:
 Overall:
 min: 5 (0.0196078)
 max: 255 (1)
 mean: 156.155 (0.612374)
 median: 155 (0.607843)
 standard deviation: 36.3501 (0.14255)
 kurtosis: -0.343226
 skewness: 0.172803
 entropy: 0.566008
 Rendering intent: Perceptual
 Gamma: 0.454545
 Chromaticity:
 red primary: (0.64,0.33,0.03)
 green primary: (0.3,0.6,0.1)
 blue primary: (0.15,0.06,0.79)
 white point: (0.3127,0.329,0.3583)
 Matte color: grey74
 Background color: white
 Border color: srgb(223,223,223)
 Transparent color: black
 Interlace: None
 Intensity: Undefined
 Compose: Over
 Page geometry: 4032x3024+0+0
 Dispose: Undefined
 Iterations: 0
 Compression: Undefined
 Orientation: TopLeft
 Profiles:
 Profile-icc: 9080 bytes
 Properties:
 date:create: 2025-03-11T23:48:07+00:00
 date:modify: 2025-03-11T08:05:06+00:00
 date:timestamp: 2025-03-11T23:48:55+00:00
 icc:copyright: Copyright 2015, Elle Stone (website: URL email: ellestone@ninedegreesbelow.com). This ICC profile is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License ( URL
 icc:description: sRGB-elle-V2-srgbtrc.icc
 mime:type: image/jxl
 signature: 6a090391cc3d126be6a5807503aeef4cfddce0c527120cbf76252cdaa7e4ddbd
 Artifacts:
 verbose: true
 Tainted: False
 Filesize: 1.93684MiB
 Number pixels: 12.1928M
 Pixel cache type: Memory
 Pixels per second: 13.1612MP
 User time: 2.440u
 Elapsed time: 0:01.926
 Version: ImageMagick 7.1.1-44 Q16-HDRI x86_64 22688 URL

The original image contains a 9k color profile, `sRGB-elle-V2-srgbtrc.icc`.

## 2. Process the image using ImageMagick to remove alpha channel

bash
$ magick f42-01-day.jxl -quality 100 -alpha off f42-01-day_noalpha.jxl

## 3. Examine the output file

bash
$ identify -verbose f42-01-day_noalpha.jxl
Image:
 Filename: f42-01-day_noalpha.jxl
 Permissions: rw-r--r--
 Format: JXL (JPEG XL (ISO/IEC 18181))
 Mime type: image/jxl
 Class: DirectClass
 Geometry: 4032x3024+0+0
 Units: Undefined
 Colorspace: sRGB
 Type: TrueColor
 Base type: Undefined
 Endianness: Undefined
 Depth: 8-bit
 Channels: 3.0
 Channel depth:
 Red: 8-bit
 Green: 8-bit
 Blue: 8-bit
 Channel statistics:
 Pixels: 12192768
 Red:
 min: 12 (0.0470588)
 max: 214 (0.839216)
 mean: 126.731 (0.496982)
 median: 133 (0.521569)
 standard deviation: 43.3644 (0.170056)
 kurtosis: -0.324868
 skewness: 0.0404497
 entropy: 0.749915
 Green:
 min: 5 (0.0196078)
 max: 224 (0.878431)
 mean: 137.296 (0.538416)
 median: 142 (0.556863)
 standard deviation: 47.5222 (0.186362)
 kurtosis: -0.608794
 skewness: -0.11526
 entropy: 0.76154
 Blue:
 min: 5 (0.0196078)
 max: 221 (0.866667)
 mean: 105.595 (0.414096)
 median: 90 (0.352941)
 standard deviation: 54.5139 (0.21378)
 kurtosis: -0.439243
 skewness: 0.766023
 entropy: 0.752578
 Image statistics:
 Overall:
 min: 5 (0.0196078)
 max: 224 (0.878431)
 mean: 123.207 (0.483165)
 median: 121.667 (0.477124)
 standard deviation: 48.4668 (0.190066)
 kurtosis: -0.457635
 skewness: 0.230404
 entropy: 0.754678
 Rendering intent: Relative
 Gamma: 0.454545
 Chromaticity:
 red primary: (0.64,0.33,0.03)
 green primary: (0.3,0.6,0.1)
 blue primary: (0.15,0.06,0.79)
 white point: (0.3127,0.329,0.3583)
 Matte color: grey74
 Background color: white
 Border color: srgb(223,223,223)
 Transparent color: black
 Interlace: None
 Intensity: Undefined
 Compose: Over
 Page geometry: 4032x3024+0+0
 Dispose: Undefined
 Iterations: 0
 Compression: Undefined
 Orientation: TopLeft
 Profiles:
 Profile-icc: 536 bytes
 Properties:
 date:create: 2025-03-11T23:50:54+00:00
 date:modify: 2025-03-11T23:50:54+00:00
 date:timestamp: 2025-03-11T23:51:34+00:00
 icc:copyright: CC0
 icc:description: RGB_D65_SRG_Rel_SRG
 mime:type: image/jxl
 signature: bb19320a637ffbb342d9fcf381ea825659dbf8c10ac02fd768311252f2a68c33
 Artifacts:
 verbose: true
 Tainted: False
 Filesize: 1.9296MiB
 Number pixels: 12.1928M
 Pixel cache type: Memory
 Pixels per second: 14.5702MP
 User time: 2.270u
 Elapsed time: 0:01.836
 Version: ImageMagick 7.1.1-44 Q16-HDRI x86_64 22688 URL

The image no longer has an alpha channel (that's good!), but has lost the ICC profile and other metadata.

## Delegate information:

bash
$ magick -list format|grep jxl
 JXL* JXL rw+ JPEG XL (ISO/IEC 18181) (libjxl 0.10.4)

### Images

Here's the first of the upcoming Fedora 42 background images, in source JXL format (with color profile):

f42-01-day.zip

Note: I tried extracting the color profile to an external file and reapplying it during processing with `-profile`, but unfortunately `exiftool` can't find the profile in the JXL file, and `exiv2` doesn't even _recognize_ the JXL file as a valid image, so I got nowhere with that.

I see no color changes with these two commands on IM 7.1.1.45 Mac OSX Ventura and libjxl 0.11.1. Please post your exact command line and your version of libjxl (see magick -list format)

magick f42-01-day.jxl -alpha off f42-01-day.png
magick f42-01-day.jxl -alpha off f42-01-day2.jxl

I posted both of those things.

I agree there are no visible changes. Personally I'm not bothered that the profile is lost, for these images. But I feel it _shouldn't_ be, since there are definitely users who **will** be affected by the loss of their color profile.

**I think there is a bug in either IM or libjxl.** When I copy the image, it changes the profile rather than preserving it on IM 7.1.1.45

magick f42-01-day.jxl f42-01-day2.jxl

Input image:
magick identify -verbose f42-01-day.jxl
 icc:description: **sRGB-elle-V2-srgbtrc.icc**

Output image:
magick identify -verbose f42-01-day2.jxl
 icc:description: **RGB_D65_SRG_Rel_SRG**

**Notice the change in profile names. But also the profile from the input image f42-01-day.jxl to the output image f42-01-day2.jxl has no suffix .icc**

**I think the IM developers need to look into this.**

I suspect that's normal, and just indicates that the custom profile is being lost. `RGB_D65_SRG_Rel_SRG` is one of the JPEG XL standard/default colorspaces; it's mentioned in the help output I quoted above. The other option is `RGB_D65_202_Rel_PeQ`. But an `-x icc_pathname=` argument is supposed to override that, and doesn't seem to in my experience.

I do not see -x icc_pathname= argument in the list of defines at URL

OK, but my main point was that there is no suffix ".icc" appended to the name. That may be the issue???

I wouldn't expect it to be, I'd expect that it's mapped to `-profile` in ImageMagick. And from reading the delegate code, it seems like it is, or at least should be (using library API calls). The fact that it's not working for me in either `magick` OR `cjxl` makes me think it's the library.

I was going to close this in favor of libjxl/libjxl#4164, because my inability to apply the same color profile using the `cjxl` encoder makes me suspect this is a libjxl bug more than an ImageMagick bug.

However, the jury isn't COMPLETELY in on that. Because:

1. I can use `djxl` and `cjxl` to convert the original file through JPEG (JXL->JPG->JXL), and the profile will be preserved at each step.
2. When I use ImageMagick to do the same thing, the profile survives the JXL->JPG conversion, but is again lost in the JPG->JXL conversion.

So, there may indeed be issues with ImageMagick's JXL encoding not preserving color profile metadata in situations where the JXL reference tools would.

I said it on the libjxl issue, but lossy encoding stores color space Enums (stripped down versions of common color spaces like sRGB, Rec2020, P3, ect) instead of the original ICC. It seems ImageMagick is allowing libjxl to use the Enums for lossless too. It shouldn't effect the visual representation, but it does delete the original ICC making it not truly lossless.

Thanks @jonnyawsom3

I see the issue now. The delegate's `WriteJXLImage()` _always_ calls `JXLEncoderSetColorEncoding()` (via `JXLWriteMetadata()`)... but the docs for that function clearly say that only one of `JXLEncoderSetColorEncoding()` or `JXLEncoderSetICCProfile()` can be used.

The delegate never calls `JXLEncoderSetICCProfile()` currently, and even if it did that would be invalid, because it's still going to unconditionally call `JXLEncoderSetColorEncoding()`.

...It **will** attempt to preserve any EXIF or XMP metadata by applying it to the output image with `JXLEncoderAddBox()`, but that doesn't help if the profile _isn't in_ an EXIF or XMP blob (like when it comes from a JXL input file, but possibly also via a PNG `iCCP` chunk or other non-EXIF/XMP source)... and from what @jonnyawsom3 says about the overrides I'm not sure profiles from those metadata blobs would be used either, if `JXLEncoderSetColorEncoding()` is still called.

The delegate is treating `JXLEncoderSetColorEncoding()` as essential, required metadata that must always be set on an image to be encoded. But from what I can tell based on the documentation and @jonnyawsom3 's comments, nothing could be further from the truth, and it should ONLY be used when explicitly _not_ applying an ICC profile.

Heh. The encoder even does this:

c
 if (image_info->quality == 100)
 basic_info.uses_original_profile=JXL_TRUE;

...But then makes a liar out of itself by never calling `JXLEncoderSetICCProfile()` to attach the original color profile that it's telling the decoder it's supposed to use.

(I think the assumption might have been that this tells the _encoder_ to use the original profile... but IIUC from the docs, it's actually just a flag for the _decoder_ that tells it how to decode the JXL file that's output by the encoder. If the profile doesn't get attached to that output, the flag doesn't really mean anything.)

Close, but the naming is throwing you off like many before. `basic_info.uses_original_profile` actually controls the internal color space, XYB for lossy and RGB for lossless. Libjxl will throw an error if you try to do lossless XYB.

I think you're right about SetICC and SetColorEncoding though.

losing color profile when ImageMagick converts JXL -> JXL to remove alpha, can't reapply with libjxl / cjxl
**Describe the bug**
When an input file in JXL format has an alpha channel and a color profile, removing the alpha channel using ImageMagick will also drop the color profile, which can't subsequently be reapplied with `magick` or `cjxl`.

**To Reproduce**
Using the attached file `f42-01-day.jxl` as an example:

console
$ # Original file has alpha channel, embedded color profile
$ magick identify -verbose f42-01-day.jxl |grep -E -i '(alpha|icc)'
 Type: TrueColorAlpha
 Alpha: 1-bit
 Alpha:
 Profile-icc: 9080 bytes
 icc:copyright: Copyright 2015, Elle Stone (website: URL email: ellestone@ninedegreesbelow.com). This ICC profile is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License ( URL
 icc:description: sRGB-elle-V2-srgbtrc.icc

$ # Remove alpha channel using ImageMagick
$ magick f42-01-day.jxl -quality 100 -alpha off f42-01-day_noalpha.jxl

$ # Resulting file has no alpha, but no profile as well
$ magick identify -verbose f42-01-day_noalpha.jxl |grep -E -i '(alpha|icc)'
 Filename: f42-01-day_noalpha.jxl
 Profile-icc: 536 bytes
 icc:copyright: CC0
 icc:description: RGB_D65_SRG_Rel_SRG

$ # Extract and attempt to reapply ICC profile
$ djxl f42-01-day.jxl f42-01-day.exif --icc_out=f42-01-day.icc -v -v -v
JPEG XL decoder v0.10.4 [SSE2]
Read 2030921 compressed bytes.
Decoded to pixels.
Encoding decoded image
Wrote output to f42-01-day.exif
4032 x 3024, 10758.651 MP/s [10758.65, 10758.65], , 1 reps, 2 threads.

$ # (exif file is empty, but icc file contains profile:)
$ file f42-01-day.icc
f42-01-day.icc: color profile 2.1, type lcms, RGB/XYZ-mntr device by lcms, 9080 bytes, 10-11-2015 12:18:56 "sRGB-elle-V2-srgbtrc.icc"

$ # Attempt to reapply to converted, alpha-stripped JXL using cjxl
$ cjxl f42-01-day_noalpha.jxl f42-01-day_new.jxl --quality=100 \
 --lossless_jpeg=1 -x icc_profile=f42-01-day.icc -v -v -v
JPEG XL encoder v0.10.4 [SSE2]
Read 4032x3024 image, 2165766 bytes, 8.9 MP/s
Encoding [Modular, lossless, effort: 7]
Compressed to 2165.8 kB (1.421 bpp).
4032 x 3024, 0.663 MP/s [0.66, 0.66], , 1 reps, 2 threads.

$ # Output file still has no embedded profile
$ magick identify -verbose f42-01-day_new.jxl |grep -E -i '(alpha|icc)'
 Profile-icc: 536 bytes
 icc:copyright: CC0
 icc:description: RGB_D65_SRG_Rel_SRG

**Expected behavior**
Profile is preserved during initial conversion with ImageMagick, and/or reapplied by cjxl when requested.

In addition, if cjxl ignores or rejects `-x icc_profile=` or any other option, some sort of message to that effect (along with, ideally, an explanation why) should be included in at least `cjxl -v -v -v` output. Silently not applying options set during conversion isn't particularly helpful.

**Input file**
`f42-01-day.jxl` in zip container: f42-01-day.zip

**Environment**
 - OS: Fedora 41
 - Compiler version: gcc 14.2.1
 - CPU type: x86_64
 - cjxl/djxl version string: cjxl v0.10.4 [SSE2]

**Additional context**
The input file is one of the background images which will be included in the upcoming Fedora 42. The background format is changing from PNG to JXL with this release.

However, due to a bug in the background handling code, to avoid graphical corruption PNG or JXL backgrounds _must not_ have an alpha channel.

The original source file is a Krita document, which is being exported to JXL from Krita. Krita's export process does not provide the option to export without an alpha channel -- if the output format supports alpha (as JXL does), it will be included in the export. Hence the need to remove the alpha channel post-export.

(Note: I'd originally reported this to ImageMagick (ImageMagick/ImageMagick#8022). However, after discovering I can't apply the profile using `cjxl` either, I no longer think this is an ImageMagick bug.)

I'm going to close this, as I have a PR open to fix IM's delegate code (ImageMagick/ImageMagick#8074), and it seems clear at this point that the bug lives there.

I still think it's a bit weird you can't embed an ICC profile into an existing JXL file that lacks one by using some variation of a command like,

bash
cjxl input.jxl output.jxl --quality=100 -x icc_pathname=profile.icc

...As that would be a handy feature for correcting files where the profile went missing. But, if it doesn't go missing in the first place, then I suppose it's not a worry.


Question: `__vite_ssr_import_meta__.glob is not a function` Error During SSR?

When ran without the parser, the tokenizer _will_ fail to distinguish regexps from division operators in some cases (because JavaScript cannot be tokenized without parsing). This is a known limitation, and not something that's fixable.

`__vite_ssr_import_meta__.glob is not a function` Error During SSR
### Related plugins

- [x] plugin-vue

- [ ] plugin-vue-jsx

### Describe the bug

This bug is a very strange one. When using SSR, I cannot use dynamic imports more than once in my Vue SFC if I add `class="whatever"` to the root element. Please see the minimal reproduction, but here is a brief rundown:

1. I'd like to do some ``import(`./dynamicA/${name}.json`)`` and some ``import(`./dynamicB/${name}.json`)`` in my Vue SFC... in other words, I'd like to using dynamic importing multiple times.
2. When I do, the second dynamic import fails if I add `class="whatever"` to the root element of my SFC.
3. This is very surprising outcome, because as a developer I wouldn't expect my `class` attribute and dynamic imports to have anything to do with each other.

### Reproduction

 URL

### Steps to reproduce

Please see the minimal reproduction `README.md` for reproduction steps.

### System Info

shell
System:
 OS: macOS 12.5
 CPU: (10) arm64 Apple M1 Pro
 Memory: 99.11 MB / 16.00 GB
 Shell: 5.8.1 - /bin/zsh
 Binaries:
 Node: 16.19.0 - ~/.volta/tools/image/node/16.19.0/bin/node
 npm: 8.19.3 - ~/.volta/tools/image/node/16.19.0/bin/npm
 Browsers:
 Chrome: 109.0.5414.119
 Safari: 15.6
 npmPackages:
 @vitejs/plugin-vue: ^4.0.0 => 4.0.0
 vite: ^4.0.4 => 4.0.4

### Used Package Manager

npm

### Logs

 Click to expand!

shell
/entrypoints/App.vue:8
 console.log("[dynamicB/test.json#message]", (await __vite_ssr_import_0__.default((__vite_ssr_import_meta__.glob("./dynamicB/*.json")), `./dynamicB/${name}.json`)).default.message);
 ^

TypeError: __vite_ssr_import_meta__.glob is not a function
 at asyncWrapper (/entrypoints/App.vue:8:110)

### 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.

# Detailed Update

It looks like the root cause of this issue is the output generated for `App.vue` before it is passed to `vite:import-glob` does not correctly quote the "class" attribute, causing it to be interpreted by Acorn incorrectly. Here is the relevant snippet from my output:

js
function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) {
 _push(` ${
 _ssrInterpolate(new Date())
 } `)
}

I'm not sure where exactly in the Vite/Rollup pipeline this code is generated. Would someone from the team be willing to jump in here?

The Acorn author said the cause of this issue is "not fixable" on his end. That leaves us with a scenario where dynamic import cannot be used more than once (and maybe potentially other issues) if the root element of a component has a `class` attribute. I think this should be resolved by having Vue add quotes around the property name.

Thanks for the detailed explanation! v1.0.1 should improve the regex to hand the cases. JS is complex 🤷

[BUG] `SyntaxError: Unterminated regular expression`...but there is no regular expression.
In my Vite project, I found that I was unable to use the dynamic `import()` function more than once when I made an apparently completely unrelated code change, prompting me to open an issue at URL From my stepping through the source code later, I now think I've tracked the issue down to this acorn-related function.

Here is the specific input I found which, when passed into the function, causes it to "break":

js
import __variableDynamicImportRuntimeHelper from "vite/dynamic-import-helper";
const asyncWrapper = async () => {
 const name = "test";
 console.log("[dynamicA/test.json#message]", (await __variableDynamicImportRuntimeHelper((import.meta.glob("./dynamicA/*.json")), `./dynamicA/${name}.json`)).default.message);
 console.log("[dynamicB/test.json#message]", (await __variableDynamicImportRuntimeHelper((import.meta.glob("./dynamicB/*.json")), `./dynamicB/${name}.json`)).default.message);
};

asyncWrapper();
const _sfc_main = {};

import { mergeProps as _mergeProps } from "vue"
import { ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate } from "vue/server-renderer"

function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) {
 _push(` ${
 _ssrInterpolate(new Date())
 } `)
}

import { useSSRContext as __vite_useSSRContext } from 'vue'
const _sfc_setup = _sfc_main.setup
_sfc_main.setup = (props, ctx) => {
 const ssrContext = __vite_useSSRContext()
 ;(ssrContext.modules || (ssrContext.modules = new Set())).add("entrypoints/App.vue")
 return _sfc_setup ? _sfc_setup(props, ctx) : undefined
}
import _export_sfc from 'plugin-vue:export-helper'
export default /*#__PURE__*/_export_sfc(_sfc_main, [['ssrRender',_sfc_ssrRender],['__file',"/Users/aryse/Projects/open-source/vite-ssr-issue-vue-sfc-dynamic-import/entrypoints/App.vue"]])

And here is the console output:

file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:3454
 var err = new SyntaxError(message);
 ^

SyntaxError: Unterminated regular expression (19:5)
 at Parser.pp$4.raise (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:3454:13)
 at Parser.pp.readRegexp (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:5136:36)
 at Parser.pp.readToken_slash (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4929:51)
 at Parser.pp.getTokenFromCode (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:5092:17)
 at Parser.pp.readToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4809:15)
 at Parser.pp.nextToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4800:15)
 at Parser.pp.next (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4761:8)
 at Parser.pp.getToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4765:8)
 at Object.next (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4776:30)
 at stripLiteralAcorn (file:///Users/aryse/Projects/open-source/acorn-test/index.mjs:22:42) {
 pos: 903,
 loc: Position { line: 19, column: 5 },
 raisedAt: 909
}

The `strip-literal` library used internally by Vite appears to be using the `acorn.tokenizer` function.

Here is my minimal reproduction:

js
import { tokenizer } from "acorn";

[...tokenizer("` `", {
 ecmaVersion: "latest",
 sourceType: "module",
 allowHashBang: true,
 allowAwaitOutsideFunction: true,
 allowImportExportEverywhere: true
})]

Which gives me the following error:

file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:3454
 var err = new SyntaxError(message);
 ^

SyntaxError: Unterminated regular expression (1:28)
 at Parser.pp$4.raise (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:3454:13)
 at Parser.pp.readRegexp (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:5134:47)
 at Parser.pp.readToken_slash (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4929:51)
 at Parser.pp.getTokenFromCode (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:5092:17)
 at Parser.pp.readToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4809:15)
 at Parser.pp.nextToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4800:15)
 at Parser.pp.next (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4761:8)
 at Parser.pp.getToken (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4765:8)
 at Object.next (file:///Users/aryse/Projects/open-source/acorn-test/node_modules/acorn/dist/acorn.mjs:4776:30)
 at file:///Users/aryse/Projects/open-source/acorn-test/index.mjs:3:5 {
 pos: 28,
 loc: Position { line: 1, column: 28 },
 raisedAt: 33
}

I get the same `Unterminated regular expression` message when I run your minimal reproduction. More minimal:

js
[...tokenizer("`${{ class: 5 }}></`", {
 ecmaVersion: "latest",
})]


Question: Stack custom items even if NBT data order is different?

This seems to be a MMOitems bug not ItemsAdder bug.
As I said:

This is not an ItemsAdder bug.

Stack custom items even if NBT data order is different
### Terms

- [x] I'm using the very latest version of ItemsAdder and its dependencies.
- [x] I am sure this is a bug and it is not caused by a misconfiguration or by another plugin.
- [x] I've looked for already existing issues on the Issue Tracker and haven't found any.
- [x] I already searched on the plugin wiki to know if a solution is already known.
- [x] I searched the `#itemsadder-forum` channel on Discord for similar issues.
- [x] I tested that this issue persists on a **bare-minimum Server** as described in #4187.

### Discord Username (optional)

_No response_

### What happened?

After the plugin update, many things broke. 1st problem is, that order of nbt tags has been randomly changed, so now the old items cannot stack with a new one.

Image

causes issues like this (the purple item)

Image

gg

### Steps to reproduce the issue

Idk updete the plugin from 4.0.7 to 4.0.9

### Server version

Paper 1.21.1 v132

### ItemsAdder Version

4.0.9

### ProtocolLib Version

ProtocolLib version 5.4.0-SNAPSHOT-741

### LoneLibs Version

LoneLibs version 1.0.65

### Full Server Log

 URL

### Error (optional)

shell

### Problematic items yml configuration file (optional)

yaml

### Other files, you can drag and drop them here to upload. (optional)

_No response_

### Screenshots/Videos (you can drag and drop files or paste links)

_No response_

Sometimes the order of NBT data changes, this causes the game to think that they are a completely different items so they won't stack.
I will implement a way to stack items even if their NBT data order is different.

This is a Minecraft limitation, as I pointed out on multiple issues pages (listing them just for future reference.
- URL
- URL
- URL
- URL

New option `fix_unstackable_items_on_click` in `config.yml` will be added to enable this fix.
Items will be merged when you click in inventory if their NBT is likely to be the same.

It will ignore merging if:
- durability is different
- usages are different
- not same material
- not same custom item id (obvious)
- max stack is already reached

Item Tag Changed
### Terms

- [X] I'm using the very latest version of ItemsAdder and its dependencies.
- [X] I am sure this is a bug and it is not caused by a misconfiguration or by another plugin.
- [X] I already searched on this Github page to check if the same issue was already reported.
- [X] I already searched on the plugin wiki to know if a solution is already known.
- [X] I already searched on the forums to check if anyone already has a solution for this.

### Discord tag (optional)

나인#1927

### What happened?

1. Acquire an item.
2. Drop the item on the floor through the Q key.
3. Acquire items dropped on the floor.
4. The item tag has been changed.

### Steps to reproduce the issue

1. Acquire an item.
2. Drop the item on the floor through the Q key.
3. Acquire items dropped on the floor.
4. The item tag has been changed.

### Server version

1.19.4

### ItemsAdder Version

3.4.1-r3

### ProtocolLib Version

`

### LoneLibs Version

`

### FULL server log

_No response_

### Error (optional)

_No response_

### Problematic items yml configuration file (optional)

_No response_

### Other files, you can drag and drop them here to upload. (optional)

_No response_

### Screenshots/Videos (you can drag and drop files or paste links)

_No response_

Remove every other plugin (keep LoneLibs, ProtocolLib and ItemsAdder) and test if it still happens.
ItemsAdder doesn't edit dropped items NBT tag.

Cannot reproduce. NBT data is always the same otherwise they wouldn't stack.

 URL

This problem occurs if you create an item using mmoitems plugin.
ia config

 items36:
 display_name: '&f&l욕망의 구슬'
 permission: items
 mmoitem:
 type: material
 id: test
 resource:
 material: STICK
 generate: true
 textures:
 - item/36.png

mmoitems config
test:
 base:
 material: STICK

1. Discard the item.


Question: MCAD Multi-Cluster + KubeStellar Integration (Stage-1)?

Thanks @dumb000!,

@asm582 , I tagged this one as well with multi-cluster label.

MCAD Multi-Cluster + KubeStellar Integration (Stage-1)
### Feature Description

MCAD as one of the options for the job queuing and scheduling interface for KubeStellar.

### Proposed Solution

Stage-1: MCAD dispatcher deploys appWrappers to MCAD agent clusters and collects AppWrapper status via KubeStellar
Stage-2: new MCAD observability paths (e.g., metrics collection: Prometheus, Thanos, Observatorium, etc.) enable by KubeStellar

### Want to contribute?

- [ ] I would like to work on this issue.

### Additional Context

The gaps identified for stage-1 are the following:

i) MCAD dispatcher needs to create a KubeStellar EdgePlacement objects. The EdgePlacement object is used to select a target cluster to deploy a workload (e.g., AppWrapper)

ii) MCAD dispatcher needs to deploy AppWrappers and EdgePlacement objects to KubeStellar Workload Management Workspaces (WMW)

iii) MCAD dispatcher needs to use an informer library to collect appWrapper status from KubeStellar

@dumb0002 Thanks for creating this issue. We would need some more information on the gaps that you talk about.

@astefanutti @anishasthana Should the integration step happen through the ADR process?

Yep! We definitely shouldn't start any implementation work until that an ADR is approved.

Thanks, @anishasthana can you help with pointers to ADR to get started?

@asm582, I updated the information in this issue - let me know if additional changes are needed. Also, I created issue # #524 to focus on the k8s versioning issue only as suggested by @dmatch01 ,

We have an ADR template (and repository) at URL Can you please raise a PR there? We track any major decisions in that repo.

@dumb0002 @clubanderson could you folks work on an ADR proposing this integration before we proceed too far down the implementation path? Thanks!

@anishasthana We're still flush out the details of what this integration would be. Once we have a good handle on it we can generate an ADR. For now I'm good with closing this work item until we complete our investigation/evaluation of the KubeStellar technology.

@dumb0002 do you concur with my recommendation to close this work item for now and reopen once the initial investigation/evaluation is complete?

@dmatch01 yes, I agree! I am going to close this issue for now and let's reopen it later once our initial investigation is completed as you suggested.

MCAD Multi-Cluster using an old k8s version
### Description

MCAD Multi-Cluster uses the apiregistration.k8s.io/v1beta1 API version of APIService that is no longer served as of k8s v1.22.

### Proposed Solution

MCAD Multi-Cluster k8s version needs to be upgraded to a k8s version compatible with KubeStellar.
KubeStellar requires k8s version: v1.24.3

### Want to contribute?

- [ ] I would like to work on this issue.

### Additional Context


Question: Show percentage?

Hello, @TheRustyPickle. I'm sorry that I'm so busy (😢) that I have not researched about this issue.
So correct me if I'm wrong.
As I commented above, I found clap supports `clap_complete`. Could you take a look and see if it solves this issue?

Show percentage
While using the app, I found that sometimes I need to finish pomodoro timer early. In that case, I want to record how much did I spend - 70%, 50% for example. Let's make this option

This is adding new column named percentage

Maybe adding flag to `ls` would be fine. For example, `ls -p` would show the table with percentage columns.

#### The percentage calculation
Let say 1 pomodoro is consisted of 25 minutes work and 5 minutes break. But during the percentage calculation, break is not considered.
For example, If the time passed 10 minutes from I started the timer then the percentage should be (10/25 * 100 = 40%).
If the time passed more than 25 minutes (that means it's in the break time), then the percentage should be 100%, because work time has gone.

Hello @TheRustyPickle ! Thank you for making PR and leaving comment here. Yesterday, I gave this issue to other person (#140). So.. how about this issues ? (#63 or #52). If you choose one of them, I will give you a detail guide if you need. Thank you again!

@docongminh

I can try working on #63. If you have any guide or tips, it would be quite helpful as well. Thank you, @24seconds!

@TheRustyPickle Ooops sorry. I missed this. I will write some guide soon.

[Update]
For anyone who is interested in this issue, please feel free to work on.

Hello @24seconds, I can work on this issue but I need suggestions on how to proceed. It seems the `Tabled` trait is implemented for the `Notification` struct, how would you recommend I should proceed to add the extra column when the `-p` flag is passed?

Hello @TheRustyPickle , thank you for being interested in this issue!
Yes, I also looked up the code and I think we can do this with latest `tabled` package version (v0.10.0)

There are two options. Take a look tabled README.md
To do this, we should upgrade the version of `tabled` package.

### Option1: use Disabled
Modify the `impl Tabled for Notification` part. Length should be 8. New column named `percentage`. Value should be `0%` to `100%`.

If the `list` is given, Disable the last column (`percentage`). If the `list -p` is given, then do not disable.

### Option2: use Merge
Do not modify notification.
When handling the `list -p`, create another table based on notification. The table has only one column named `percentage` and the values are `0%` to `100%`.
Merge current table and new table.

I think both are fine. What do yo think?

If you agree than I guess it would be nice to separate PRs
- one for upgrading `tabled` version
- the other one for implementing `show percentage` feature

Thank you so much! I haven't finished reading Tabled docs or readme yet. Sorry if the question came out as naive😅

Perhaps this one would be easier as the trait implementation function already has the data readily available?

Of course. Will work on upgrading the `tabled` version.

It's up to you @TheRustyPickle . Option1 or Option2 are totally fine. Or any suggestions are welcome.

Thank you!

Feature: command auto complete
### Description
When I use the git command, git supports auto complete. For example, I typed `git sta` and pressed `tab` then git showed suggestions. I can select one of suggestions with arrow keys (up/down) and tab and enter.

<img width="522" alt="image" src=" URL
Fig 1. `git sta` example

It would be nice for pomodoro to support this feature also

To-be

# After pressing the tab, then the terminal should show like this

Maybe using this can solve this issue?
- URL
- related blog: URL


Question: Could not open '/lib64/ld-linux-x86-64.so.2' during devcontainer build?

from version 0.0.16 and up featmake is now not a binary but a raw shell script, you can open it with any text editor

Could not open '/lib64/ld-linux-x86-64.so.2' during devcontainer build
I'm trying to create a small dev container via VS Code's "Add Dev Container Configuration Files" option. I have selected only a couple other features ("docker-in-docker", "go", "python", and "pre-commit").

Every time I select the pre-commit feature (also happens when manually adding the `"ghcr.io/devcontainers-contrib/features/pre-commit:2": {}` feature to the devcontainer.json) I see the following error when trying to build the devcontainer:

[2022-12-29T16:13:59.722Z] ------

#0 0.134 ===========================================================================
#0 0.134 Feature : Pre-Commit (via pipx)
#0 0.134 Description : Pre-Commit is a framework for managing and maintaining multi-language pre-commit hooks.
#0 0.134 Id : ghcr.io/devcontainers-contrib/features/pre-commit
#0 0.134 Version : 2.0.0
#0 0.134 Documentation : URL
#0 0.134 Options :
#0 0.134 VERSION="latest"
#0 0.134 ===========================================================================
#0 0.792 featmake: OK
#0 0.808 qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
[2022-12-29T16:13:59.722Z] #0 0.810 ERROR: Feature "Pre-Commit (via pipx)" (ghcr.io/devcontainers-contrib/features/pre-commit) failed to install! Look at the documentation at URL for help troubleshooting this error.
------
[2022-12-29T16:13:59.722Z] ERROR: failed to solve: executor failed running [/bin/sh -c cd /tmp/build-features/pre-commit_4 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh]: exit code: 255

For reference I'm running this on a 2021 16-inch MacBookPro with Apple M1 Pro processor (could the error be related to running this on an ARM processor?). Might I be missing something? The devcontainer works fine when removing the pre-commit feature and installing pre-commit manually (using pip3, for example).

Here's some more info from around the web on that error message for reference:

From this StackOverflow question: URL

Incidentally, in case it's helpful to another who lands here, I have the same
issue on an M1 Max MacBook Pro laptop attempting to do a `docker build` from a
company repo that should be a pretty well traveled path, but I might be the only
one (it's a small company) that has an ARM64 M1 "Apple Silicon" Mac. **_However
I found the solution (well, a solution) to my situation was exactly the opposite
of the solution to the OP's, and that was to
add_** `--platform=linux/amd64` **_to the FROM line of the docker file._**

Otherwise it was using an ARM64 image to start from without me being the wiser
but then later in the Dockerfile the build attempts to install and execute code
compiled for x86_64. Starting the build process by requesting the base image
be `linux/amd64` ends up with then the base image
having `/lib64/ld-linux-x86-64.so.2`. This probably means everything is being
emulated as x86_64 on the ARM64 CPU via `qemu-x86_64` and so if you have the
option to start from an ARM64 image and can compile within the container during
build time any software you can't install as ARM64 binaries, it'll probably go
faster when you later run the container on the M1 based Mac. I'm not able to try
that myself just yet for this case.

From this StackOverflow question: URL

If you are running this on an M1 macbook, it's possible that you are running a
native Arm image of ubuntu, instead of the emulated x86 image. If the
elasticsearch distribution you are trying to install is for x86_64, then it
attempts to link to the x86-64-native ld.so, which of course isn't present on
different platforms.

Either install the package for the arm platform specifically if they provide
one, or - more likely - run docker explicitly as the emulated x86_64 platform:

docker run --platform linux/x86_64

I've seen and dealt with that kind of issue before with other docker images, but I'm trying to use the VS Code built in options and UI for dev containers — not manually running `docker` from CLI, so the flag in this use case doesn't seem ideal.

Also, I'm curious as to why it might work fine out of the box with all the other features enabled except this one?

I think this is due to the fact that you are installing the amd64 binary of featmake.
See #246.

Should be fixed now that featmake and oras usage has been deprecated. Installation of pre-commit feature should be ARM compatible as any utility (including featmake`s replacement - dcontainer) is being installed on ARM as vanila pipx install, instead of a binary.

What is featmake?
Some Features seem to install a binary called featmake, but the source code for this does not appear to be publicly available.

 URL

Installing binaries of unknown origin may be unwelcome.

I think this is part of @danielbraun89's fancy new CLI that does some feature magic. I'm not personally on board, but it seems like this is the direction he's taking the project. 🤷♂

Regarding random binaries, yeah I think a link or something would be a good idea. The docs also need to be improved big time for this new direction too, both in this repo and in the CLI repo. @danielbraun89 I can help with that 😉📝

Regarding the public/private I wholeheartedly agree. I can find the spot that hosts the asset: URL but I can't really find out what generated it... 🤔

its a bunch of .sh files which uses oras to download and unpackage a feature package, set environment variable from its declared defaults, and then runs the features `install.sh` . I compiled the shell files using sch as a way of packaging them a single file without introducing another requirements( `unzip`) beyond `curl` and `oras` . In hindsight it doesnt add enough value to warrant it Ill just combine them all into a single merged .sh file and live with that 😄

For anyone looking like I was, the script mentioned above `merged_featmake.sh` is now just `featmake.sh` after (commit 3333faf)

@danielbraun89 @jcbhmr
### From what I can tell `featmake` tries to make `features` more modular, a worthy DRY goal! But irnoically, I'm worried it is repetitive of efforts.

Both CLIs...
* devcontainers/cli
* decvontainers-contrib/cli

...parse variables and pass/begin initialization (ex: `install.sh`).*

`decvontainers-contrib/cli`, python, runs inside the container, while `devcontainers/cli`, javascript, has access to docker outside the container and many more features.

**So why the duplication of efforts? Has anyone spoken to the maintainers of `devcontainers/cli` to see if they can modularize and extract the functionality we want to use for modularity and reused functionality?**
---------

A quick recap for those who don't know what `featmake` does. An exmaple...

If two separate features exists, A and B, such that...
- A. installs `Homebrew`
- B. installs `NeoVim` via `Homebrew`

...`feature B` reuses `feature A` by doing the following step...
From with Feature B's `docker/devcontainer`....
1. download `oras`
2. use `oras` to download and extract `feature A`
3. `featmake` parses `json` and becins initialization of `feature A`.

---------

All these steps seem to be implemented within the `devcontainers/cli` already.


Question: Reference id not matching with documentElement id?

The change was intended as it is in harmony with the secure-by-default philosophy that we have here. Please feel free to put up a PR to help us with our README.

Reference id not matching with documentElement id
**To Reproduce**

Receiving this response from Azure AD:

xml

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
 URL

 STRIPPED
 STRIPPED
 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 STRIPPED

 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport

When validating the signature, the documentElement of the SAML response is used and the reference id tries to match with the id of it. But they don't match, instead the reference id matches with the ` `-Element id, thus successfully validating the signature is not possible.

**Expected behavior**
Signature should validate successfully.

**Environment**

- Node.js version: 16.14.0
- `passport-saml` version: 4.0.4

Setting `wantAuthnResponseSigned` to false "solved" the issue so far. But I would really like to keep it active, to grant the highest security possible.

What did you get when testing over at URL If you got it to work, what options did you select on their web page?

Both Request and Response are valid. Do you have any other specific test in mind?

The error comes not from upgrading of a previous version.
Thank you for your hint about the behavior of Azure AD. I will take a deeper look at the configuration of Azure AD to enable response signing.
This indeed looks like it is not a bug in the first place but rather a configuration error now.
So we likely can close this issue, but please wait until I looked the config tomorrow.

@srd90 I've created a Wiki page that summarized this. Hopefully that will save you some time. Feel free to edit it, or let me know in an issue reply if you'd like some text added to it and I'll do it.

 URL

Thank you very much with your help.
I've looked at the SAML configuration and found the option to enable the response and assertion signing option.
It can be found, when editing the SAML certificate.

[BUG] Invalid document signature
Could you help me to know why I have this error after we updated from passport-saml to @node-saml/passport-saml:

Error: Invalid document signature
 at SAML.validatePostResponseAsync (/usr/src/server/node_modules/@node-saml/node-saml/lib/saml.js:510:23)
 at runMicrotasks ( )
 at processTicksAndRejections (node:internal/process/task_queues:96:5)

Perhaps your issue is the same as URL or URL If not, please post more information about the versions your running and a minimal test case. Ideally we'd like to see a PR with a test that fails.

We also encountered such error and the workaround was adding the following options:

js
 // After updating from `passport-saml` to `@node-saml/passport-saml`,
 // it started throwing `Error: Invalid document signature`
 // when testing SSO using Acadeum's Google SAML server.
 // Turns out that's a common issue and the workaround is to pass
 // `wantAssertionsSigned: false` / `wantAuthnResponseSigned: false` flags.
 // URL
 // URL
 wantAssertionsSigned: false,
 wantAuthnResponseSigned: false,

I encountered the same issue and after quite some digging in code this seems to be indeed because in `validatePostResponseAsync` method, the default value in `this.options.wantAssertionsSigned` is true if not specified in SamlConfig whereas it was false in v3.

@cjbarth are you sure this is an intended behavior ? I feel `wantAssertionsSigned` should be false if not specified in config

Ok I understand but then indeed it would be great to specify it in documentation, I can open a PR for that 👍
What would have been really helpful also is to add it as a breaking change in the changelog, I don't know if it's automatically generated or if it's possible to also update it now

I agree this would be useful to highlight as a breaking change in the Changelog.


Question: FS22 Lumberjack nopt working in multiplayer/dedicated server?

Please let me know if this version has resolved the issue: URL

I guess it will not do anything to your terrain issue caused by previously removed trees, but hopefully should prevent the problem occuring again.

FS22 Lumberjack nopt working in multiplayer/dedicated server
I noticed that deleting trees by using the chainsaw red ring no longer works in multiplayer. When the tree or stump is supposed to disappear the chainsaw snaps back a bit but just continues to saw and spew sahavings. Nothing else happens. In career mode it still works like a charm :)

Do we know why this is?

That must be due to the recent update to fix the un-deleted trees bug #4. I thought I tested that in MP, but I guess not! You can always go back to the previous release for now while I look into it: URL

Not sure how to download mods manually. Any chance you can point me in the right direction? Removing the mod from the server and uploading the previous release to the server and placing it in the mod folder on the harddrive seems like the logical way to go.

I think it was the most embarrasing mistake I've ever made!
image

At least easy to fix. New release incoming.

[BUG] Removing trees is cosmetic only
I used this mod to clear trees by waiting for the chainsaw indicator circle to turn red. Using the chainsaw will cause the tree to disappear. However, the tree is not actually removed but rather just made invisible.

You can test this by trying to change the elevation of the land where the tree is. Removing the tree the traditional way by cutting it down and then removing the stump with a machine allows the land to be changed. Unfortunately, if you use this mod to quickly remove the tree, it's impossible to cause the tree to not exist in ghost form.

Is there a fix for this in the meantime while you fix the mod? I don't see where original map trees are stored in the save game folder, only manually planted trees.

I've been trying to find a permanent fix for this since FS19, but have given up now. As a workaround you can either cut down the tree, then delete the stump and tree separately OR you can delete the tree directly, save the game and reload. Either of those should work as expected.

Is there anything that can be done about about the trees I've already, for lack of a better term, ghosted? I'm not afraid to dive in and get my hands dirty editing the files directly IF only I knew where to look. I can't find them anywhere.

In the future, I'll be sure to do as you say so thank you for confirming that part.

It should be fine if you just save the game and reload. Once all of the trees are reloaded from the savegame, the deleted trees should not be in the far distance (LOD) view anymore. HOWEVER, I've actually spent some time on this over the last few days and now have a fix working in single player. Still need to rewrite and test for multiplayer, but thanks for reminding me about it! :D

That's really great news! I found that quitting and restarting the game does NOT fix the issue. (I did notice the LOD effect at first. It didn't bother me since I'm not a detailed oriented person, it was the terrain that was really messing up my plans). I did find a work around but it's not ideal. Removing a file in the saved game (I forget what one, but it's not a simple plain text file) restored all the default trees for the map. It took a LOT of time and work, but I was able to remove those tree properly and flatten or raise the terrain.

I'm really glad you found a solution to the bug, this is a great mod!