Matrix usage of switch

  1. "tap" mode prevents sending a message on release
  2. from Properties reference - Open Stage Control

Advanced syntax blocks (@{}, OSC{}, JS{{}} and #{}) are resolved at the matrix' scope (ie @{this.variables} returns the matrix' variables property, not its parent's)

If you want to have scoped advanced syntaxes you'll need to use a matrix of clone widgets instead (see clones_and_variables.json example from this thread.

EDIT: after reading point 2 again, I think I missed the issue.

Just to clarify, @{menu.values} is not related to the menu's actual value.

the props(jjs script) is running for every element in the matrix

Yes, that's how this property works, it's evaluated for each child (with a different different value for $ in JS blocks)