Skip to content

chore: sync ryan/dev security updates - #64

Merged
Ryson-32 merged 38 commits into
mainfrom
ryan/dev
Jul 26, 2026
Merged

chore: sync ryan/dev security updates#64
Ryson-32 merged 38 commits into
mainfrom
ryan/dev

Conversation

@Ryson-32

Copy link
Copy Markdown
Member

Summary

  • Sync the integrated ryan/dev line into stable main.
  • Includes the dependency security upgrade from fix(deps): resolve runtime security advisories #63: Prisma 7.9.0, Next.js 16.2.12, js-yaml 4.3.0, PostCSS 8.5.23, sharp 0.35.3, valibot 1.4.2, find-my-way 9.7.0, and fast-uri 3.1.4.
  • Removes the obsolete Hono overrides and Hono dependency path.

Validation

  • Public CI passed on fix(deps): resolve runtime security advisories #63.
  • npm audit --omit=dev: 0 vulnerabilities.
  • Full npm audit: only the known ESLint-chain brace-expansion advisory remains.
  • Lint, 1125 public unit tests, 3106 root unit tests, Prisma generation, type checks, Next.js builds, docs build, amd64/arm64 public test deployments, and Local Demo smoke passed.

No version bump, tag, GitHub Release, or Production deployment is included.

Ryson-32 added 30 commits July 13, 2026 19:58
Copilot AI review requested due to automatic review settings July 26, 2026 15:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.


const win = installWindow("#setup-token=setup-secret");
(globalThis as any).fetch = vi.fn(async () => response({ success: true }));
const setup = renderLogin({
Comment thread packages/core/src/subscription/import-error.ts Fixed
Comment thread packages/core/src/subscription/node-name-filter.test.ts Fixed
Comment thread packages/core/src/subscription/node-name-filter.test.ts Fixed
Comment thread packages/core/src/subscription/node-name-filter.test.ts Fixed

const win = installWindow("#setup-token=setup-secret");
(globalThis as any).fetch = vi.fn(async () => response({ success: true }));
const setup = renderLogin({
fix(security): keep regex validation linear
Copilot AI review requested due to automatic review settings July 26, 2026 15:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@Ryson-32
Ryson-32 merged commit 669ced2 into main Jul 26, 2026
10 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b842fb5b12

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}): Promise<boolean> {
return prisma.$transaction(async (tx) => {
const updated = await tx.subscription.updateMany({
where: { id: params.subscriptionId, updatedAt: params.expectedUpdatedAt },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid using updatedAt for refresh conflict detection

When a client fetches /api/subscriptions/:token/config.yaml while a refresh is in progress, generateSubscriptionYaml updates only lastAccessedAt, but Prisma's @updatedAt also bumps Subscription.updatedAt. This new predicate then treats that read/access-log write as a real subscription edit, so manual refresh returns SUBSCRIPTION_CHANGED and the cron path using the same updatedAt guard skips persisting fresh nodes. Use a revision/timestamp that is not touched by access logging, or update lastAccessedAt without changing the conflict field.

Useful? React with 👍 / 👎.

Comment thread local/scripts/subboost.sh
Comment on lines +418 to +419
read_env_file > "$candidate_env"
cp "$candidate_env" "$old_env"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Create update env copies with private permissions

During subboost update, this new rollback-staging path writes the full .env contents into $TMPDIR/subboost-manager.$$/candidate.env and then duplicates it as old.env using the caller's default umask; with the usual 022 umask and a default 0755 temp directory, other local users can read database/JWT/encryption/setup secrets while the update runs. Set a private umask or create/install these temp env copies with mode 600 before writing them.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants