Skip to content

Enable Dependabot npm version updates for the twelve standalone apps/* installs - #81

Merged
YasunoriMATSUOKA merged 1 commit into
mainfrom
feature/dependabot-per-app-coverage
Aug 24, 2026
Merged

Enable Dependabot npm version updates for the twelve standalone apps/* installs#81
YasunoriMATSUOKA merged 1 commit into
mainfrom
feature/dependabot-per-app-coverage

Conversation

@YasunoriMATSUOKA

Copy link
Copy Markdown
Member

What this changes

.github/dependabot.yml watched npm dependencies in the root workspace lockfile
only. The apps under apps/ install standalone — each owns its package.json
and lockfile, deliberately, so React 18 (hackathon) and React 19
(flea-market) stay isolated — and none of them was covered. They received
version updates from nobody; the dependency bumps that did land there came from
Dependabot's security updates, which scan every manifest in the repository
regardless of this file.

This adds one npm entry per directory that owns a lockfile.

Directories now covered

Directory Lockfile
apps/flea-market package-lock.json
apps/flea-market/functions package-lock.json
apps/hackathon package-lock.json
apps/hackathon/functions package-lock.json
apps/hackathon-lp package-lock.json
apps/hackathon-lp-2023 package-lock.json
apps/hackathon-lp-2024 package-lock.json
apps/hackathon-lp-2025 package-lock.json
apps/hackathon-lp-2026 pnpm-lock.yaml
apps/xymposium-lp package-lock.json
apps/xymposium-lp-2024 package-lock.json
apps/xymposium-lp-2025 package-lock.json

The list is exactly the set of lockfiles tracked in git, minus the root one.
apps/flea-market/worker and packages/* are absent on purpose: they have no
lockfile of their own and resolve through the root workspace entry, which is
unchanged.

apps/hackathon-lp-2026 installs with pnpm; package-ecosystem: npm is the
ecosystem that reads pnpm-lock.yaml.

Held majors carried over

Each imported app brought its own .github/dependabot.yml, which stays in the
tree but is inert — GitHub reads only the root file. Those copies carry reasoned
major holds, so the new entries carry them too. Every one was re-checked against
the manifest as it stands on main:

Directory Held Reason Still current
apps/hackathon react, react-dom, @types/react, @types/react-dom React 19 migration not scoped; this is what keeps the app installing separately from flea-market react ^18.2.0
apps/hackathon typescript TypeScript 6 unsupported by the toolchain typescript ^5.9.3
apps/hackathon daisyui, tailwindcss daisyUI 5 requires Tailwind 4; they move together daisyui ^2.52.0, tailwindcss ^3.4.19
apps/hackathon/functions typescript, eslint TypeScript 6 / ESLint 10 unsupported by the toolchain typescript ^5.9.3, eslint ^8.57.1
apps/hackathon/functions symbol-sdk v3 is a crypto-breaking rewrite symbol-sdk ^2.0.7
apps/flea-market/functions firebase-admin firebase-functions@7.2.5 peers on ^11.10.0 || ^12.0.0 || ^13.0.0, so 14 cannot resolve firebase-admin ^13.5.0
apps/xymposium-lp-2024 eslint (>=10) the eslint-plugin-react bundled with eslint-config-next still calls context.getFilename(), removed in ESLint 10 eslint ^9

One hold was not carried over: apps/hackathon's ESLint major. That app is
already on eslint ^10.9.0, so the hold is spent.

@types/node is held everywhere it is declared, for the same reason as the root
entry — it tracks the Node runtime major.

Conventions

Each new entry mirrors the existing ones:

  • schedule: weekly
  • cooldown: default-days: 7 — wait a week after a release before proposing it
  • a single group bundling minor + patch for version updates, so majors still
    open individually. Groups are named after their directory
    (hackathon-lp-2024-minor-patch, …) so a pull request title says which app it
    belongs to.
  • entries whose manifest declares @types/node hold its major, for the same
    reason the root entry does: it tracks the Node runtime major.

Two deliberate differences from the root entry:

  • open-pull-requests-limit: 5, not 10. Limits are per entry, not a shared
    budget; 5 caps how much of these twelve entries' output lands for review on
    any one weekly run.
  • One entry per directory, not one entry with directories:. The plural form
    is more compact, but combined with groups: it can bundle unrelated apps into
    a single pull request, and a grouped pull request spanning several directories
    goes stale the moment any one of those directories moves — build(deps): bump the npm_and_yarn group across 4 directories with 16 updates #76 is an open
    example, superseded by build(deps): bump the npm_and_yarn group across 3 directories with 16 updates #79 and no longer mergeable. GitHub's options reference
    does not document how directories and groups interact, so this takes the
    form whose behaviour is unambiguous.

What this does not do

It enables version updates. It does not resolve any existing Dependabot
security alert — security updates already run independently of this file — and
it changes no dependency: the only file touched is .github/dependabot.yml.

Expect a burst on the next weekly run: one grouped minor/patch PR per covered
directory, plus individual majors. The four static landing pages depend only on
firebase-tools, so their entries will be quiet after the first pass;
apps/xymposium-lp-2025 has no dependencies at all yet and its entry is a
placeholder that starts working when it gains some.

Worth knowing before merging the PRs this produces: apps/hackathon,
apps/hackathon/functions and the static landing pages have no checks workflow,
so their pull requests will arrive with nothing verifying them, and
ci-flea-market runs on apps/flea-market/** but only exercises the frontend —
a green check there says nothing about apps/flea-market/functions. Those
updates need a local build before merge until the coverage gap is closed.

Verification

  • YAML parses.
  • Validates against the SchemaStore dependabot-2.0 schema.
  • The set of directory values across the npm entries matches the set of
    lockfile directories tracked in git exactly — no directory missed, none listed
    that has no lockfile.
  • Every new entry was checked to carry the same schedule, cooldown and group
    applies-to / update-types values as the root entry.
  • Every ignore rule was checked to name a dependency the directory's manifest
    actually declares, and one still below the held major.
  • The existing github-actions and root npm entries are unchanged apart from
    the comment above the latter, which claimed the apps were deliberately not
    enumerated and is no longer true.

… updates

The npm configuration only watched the root workspace lockfile, so the twelve
standalone installs under apps/ -- each owning its package.json and lockfile --
received no version updates at all. The bumps that did land there came from
Dependabot's security updates, which scan every manifest regardless of this
file.

Add one npm entry per directory that owns a lockfile, matching the conventions
of the existing entries: weekly schedule, a 7-day release cooldown, and minor +
patch bundled into a single grouped pull request so majors stay separate. Each
group is named after its directory, so a pull request title says which app it
belongs to.

One entry per directory rather than a single entry listing them under
`directories:`: combined with `groups:`, that form can bundle unrelated apps
into one pull request, and such a pull request goes stale the moment any one of
those directories moves -- #76 is an open example, superseded by #79.

Carry over the held majors from the per-app Dependabot configs of the source
repositories (apps/<name>/.github/dependabot.yml, inert since GitHub reads only
the root file): React 18 and the Tailwind 3 / daisyUI 2 pair in hackathon,
TypeScript 5 and symbol-sdk 2 in its functions, firebase-admin 13 in
flea-market's functions (firebase-functions 7 peers on ^11 || ^12 || ^13), and
ESLint 10 in xymposium-lp-2024, whose bundled eslint-plugin-react still calls
the removed context.getFilename(). Each hold was re-checked against the current
manifest; hackathon's ESLint hold is deliberately not carried over, as that app
is already on ESLint 10.

apps/flea-market/worker and packages/* stay absent: they have no lockfile of
their own and are already updated through the root workspace entry.

The per-app limit is 5 rather than the root entry's 10 to cap how much lands for
review on any one weekly run.
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41f75def-03eb-4965-a790-d2995603f92d


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@YasunoriMATSUOKA
YasunoriMATSUOKA merged commit 8147cfa into main Aug 24, 2026
3 checks passed
@YasunoriMATSUOKA
YasunoriMATSUOKA deleted the feature/dependabot-per-app-coverage branch August 24, 2026 13:55
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.

1 participant