fix(app-shell): one inbox feed for the bell and Home — already-read messages stop counting as "needs your attention" #967
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docs Links | |
| # Why this is its own workflow instead of a step in `ci.yml`'s `docs` job, which | |
| # is where this check lived when it first reached CI (#3213 / #3292, PR #3450): | |
| # `ci.yml` lists `'**/*.md'`, `content/**`, `docs/**` and `apps/site/**` under | |
| # `paths-ignore`, and GitHub has no per-job path filter. The published site is | |
| # built from `content/docs/**`, so a docs-ONLY pull request matched every ignore | |
| # pattern, started no workflow at all, and was never link-checked — while a | |
| # docs-only PR is the likeliest way an internal link breaks in the first place. | |
| # The step therefore only ever saw PRs that touched docs *alongside code*, plus | |
| # pushes to `main`; a broken link could land through a pure-docs PR and only turn | |
| # `main` red later, under an unrelated author (#3448). | |
| # | |
| # `control-bytes.yml` hit the same wall and its header names the consequence: a | |
| # gate that cannot see a markdown-only PR "rebuilds the hole it exists to close". | |
| # `changeset-guard.yml` is the second instance of the shape in this repo. | |
| # | |
| # Hence: no `paths` and no `paths-ignore` here, deliberately. | |
| # `scripts/__tests__/docs-links-workflow.test.ts` fails if either is ever added. | |
| # A `paths: content/**` filter would look tighter and buy nothing measurable: the | |
| # whole run is a checkout plus one `node` call — no install, no network, a few | |
| # seconds — and the filter would be a second, drift-prone copy of the script's | |
| # own scan surface. Keep it that way if you add checks here. | |
| on: | |
| pull_request: | |
| branches: [main, develop] | |
| push: | |
| branches: [main, develop] | |
| # Merge queue (objectui#3523 — see `ci.yml`'s trigger block for the full note | |
| # and the measurements behind it). This repository's queue is enforced by a | |
| # ruleset but had zero `merge_group` subscribers, so its required-check set | |
| # could only ever be empty. This gate is one of the two the audit found safe | |
| # to require today — deliberately unfiltered, so it reports on every shape of | |
| # pull request — and a required check that does not report on a queue build | |
| # stalls the queue until the ruleset's 60-minute timeout fails it. `types:` is | |
| # named although `checks_requested` is currently the only one GitHub defines. | |
| merge_group: | |
| types: [checks_requested] | |
| workflow_dispatch: | |
| concurrency: | |
| group: docs-links-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| docs-links: | |
| name: Internal Docs Link Check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '22.x' | |
| # Resolves every relative / `/docs/...` markdown link found in | |
| # `content/docs/**` against the files actually on disk. Reads the checkout | |
| # and nothing else, so no install is required. External URLs are a | |
| # different problem with a different tool — Lychee, in `check-links.yml`, | |
| # which sweeps both `content/docs/` and `docs/` on a weekly cron and on | |
| # demand, and deliberately gates nothing (#3449 fixed its scope; #3213 | |
| # decided it stays off pull requests). | |
| - name: Check internal docs links | |
| run: node scripts/check-doc-links.mjs |