Since PRs seem to be much rarer than pushes to main, it makes more sense to do it this way. Perhaps in the future, it would make sense to run it on all pushes, but the question would be how PRs are handled.
This implements the upstream changes from https://github.com/misskey-dev/misskey/pull/9314 but updated to our version of ESLint. Also updates TypeScript to 4.9.4 for all packages.