Skip to content

👷 ci: add concurrency control and timeout to workflow #1418

Merged
w3bdesign merged 7 commits intomainfrom
develop
Feb 26, 2026
Merged

👷 ci: add concurrency control and timeout to workflow #1418
w3bdesign merged 7 commits intomainfrom
develop

Conversation

@w3bdesign
Copy link
Owner

No description provided.

Add concurrency group configuration to cancel in-progress runs
when new commits are pushed to the same ref. Set 30-minute timeout
for react-doctor job to prevent hanging builds.
Prevents cypress tests from running indefinitely by setting a
maximum execution time of 30 minutes for the job.
Prevent CodeQL analysis jobs from running indefinitely by adding
a 30-minute timeout limit to the analyze job configuration.
Prevent lighthouse workflow from running indefinitely by setting
a maximum execution time of 30 minutes for the job.
Prevents the pa11y accessibility testing job from running
indefinitely by setting a maximum execution time of 30 minutes.
Prevent the repomix analyze job from running indefinitely by
adding a 30-minute timeout limit to improve CI reliability.
Add 30-minute timeout to prevent hanging jobs from consuming
unnecessary CI resources and blocking the workflow pipeline.
@w3bdesign w3bdesign self-assigned this Feb 26, 2026
@vercel
Copy link

vercel bot commented Feb 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dfweb-v4 Ready Ready Preview, Comment Feb 26, 2026 0:06am

@w3bdesign w3bdesign changed the title Develop 👷 ci: add concurrency control and timeout to workflow Feb 26, 2026
@sonarqubecloud
Copy link

@w3bdesign w3bdesign merged commit d622fd8 into main Feb 26, 2026
13 of 15 checks passed
@github-actions
Copy link
Contributor

🩺 React Doctor — Score: 89 / 100

Full diagnostics ``` > dfweb-v4@1.0.8 doctor /home/runner/work/dfweb-v4/dfweb-v4 > react-doctor . --verbose

react-doctor v0.0.29

✔ Select projects to scan › dfweb-v4, dfweb-v4
Scanning /home/runner/work/dfweb-v4/dfweb-v4...

  • Detecting framework. Found Next.js.
    ✔ Detecting framework. Found Next.js.

  • Detecting React version. Found React ^19.2.4.
    ✔ Detecting React version. Found React ^19.2.4.

  • Detecting language. Found TypeScript.
    ✔ Detecting language. Found TypeScript.

  • Detecting React Compiler. Not found.
    ✔ Detecting React Compiler. Not found.

  • Found 191 source files.
    ✔ Found 191 source files.

  • Running lint checks...

  • Running lint checks.
    ✔ Running lint checks.

  • Detecting dead code...
    ✔ Detecting dead code.
    ✗ Component "ErrorFallback" defined inside "ErrorBoundary" — creates new instance every render, destroying state
    Move to a separate file or to module scope above the parent component
    src/components/ErrorBoundary/ErrorBoundary.tsx: 32

    ⚠ preventDefault() on onClick — use a or routing component instead
    Use <form action={serverAction}> (works without JS) or <button> instead of <a> with preventDefault
    src/stories/components/Layout/NavigationLink.stories.tsx: 16

    ⚠ setClickCount(clickCount + ...) — use functional update to avoid stale closures
    Use the callback form: setState(prev => prev + 1) to always read the latest value
    src/stories/components/UI/Pill.stories.tsx: 45

    ⚠ Array index "i" used as key — causes bugs when list is reordered or filtered (3)
    Use a stable unique identifier: key={item.id} or key={item.slug} — index keys break on reorder/filter
    src/stories/components/Animations/MatrixCursor.stories.tsx: 99
    src/components/UI/ContentLoader.component.tsx: 31, 44

    ⚠ Use next/image instead of — provides automatic optimization, lazy loading, and responsive srcset
    import Image from 'next/image' — provides automatic WebP/AVIF, lazy loading, and responsive srcset
    src/components/Prosjekter/ProsjektCard.component.tsx: 44

    ⚠ 4 setState calls in a single useEffect — consider using useReducer or deriving state (2)
    Combine into useReducer: const [state, dispatch] = useReducer(reducer, initialState)
    src/components/Animations/MatrixCursor.component.tsx: 61
    src/hooks/useMobile.tsx: 14

    ⚠ Page without metadata or generateMetadata export — hurts SEO
    Add export const metadata = { title: '...', description: '...' } or export async function generateMetadata()
    src/app/page.tsx: 1

    ⚠ Inline render function "renderHeaderContent()" — extract to a separate component for proper reconciliation
    Extract to a named component: const ListItem = ({ item }) => <div>{item.name}</div>
    src/components/CV/GenericCVSectionContent.tsx: 22

    ⚠ useState initialized from prop "initialResponse" — if this value should stay in sync with the prop, derive it during render instead
    Remove useState and compute the value inline: const value = transform(propName)
    src/components/Kontakt/ContactForm.component.tsx: 28

    ⚠ scale: 0 makes elements appear from nowhere — use scale: 0.95 with opacity: 0 for natural entrance
    Use initial={{ scale: 0.95, opacity: 0 }} — elements should deflate like a balloon, not vanish into a point
    src/components/Animations/Grow.component.tsx: 18

    ⚠ Permanent will-change wastes GPU memory — apply only during active animation and remove after (2)
    Add will-change on animation start (onMouseEnter) and remove on end (onAnimationEnd). Permanent promotion wastes GPU memory and can degrade performance
    src/components/Animations/FadeInScroll.component.tsx: 37
    src/components/Animations/FadeIn.component.tsx: 35

    ⚠ Unused file (22)
    This file is not imported by any other file in the project.
    .eslintrc-custom-rules.ts
    sanity.cli.ts
    studio/sanity.cli.ts
    studio/sanity.config.ts
    studio/schema.ts
    src/config/env.ts
    src/hooks/useNavigation.ts
    studio/schemaTypes/index.ts
    studio/schemaTypes/schema.ts
    src/app/api/siteMapGenerator.ts
    src/lib/sanity/helpers.ts
    src/utils/eslint/index.ts
    studio/schemaTypes/documents/category.ts
    studio/schemaTypes/documents/cv.ts
    studio/schemaTypes/documents/navigation.ts
    studio/schemaTypes/documents/page.ts
    studio/schemaTypes/documents/project.ts
    studio/schemaTypes/documents/settings.ts
    studio/schemaTypes/objects/herocontent.ts
    studio/schemaTypes/objects/link.ts
    studio/schemaTypes/objects/pagecontent.ts
    src/utils/eslint/dist/index.js

    ⚠ Unused export: internalGroqTypeReferenceTo (2)
    src/types/sanity.types.ts
    src/e2e/cypress/support/functions.ts

    ⚠ Unused type: SanityImagePaletteSwatch (18)
    src/types/sanity.types.ts
    src/components/UI/Button.component.tsx
    src/components/UI/InputField.component.tsx
    src/components/Layout/Hamburger.component.tsx
    src/components/UI/PageHeader.component.tsx
    src/components/Animations/types/Animations.types.ts
    src/types/sanity-errors.ts
    src/components/Layout/NavigationLink.component.tsx

    ┌────────────────────────────────────────────────────────┐
    │ ┌─────┐ │
    │ │ ◠ ◠ │ │
    │ │ ▽ │ │
    │ └─────┘ │
    │ React Doctor (www.react.doctor) │
    │ │
    │ 89 / 100 Great │
    │ │
    │ █████████████████████████████████████████████░░░░░ │
    │ │
    │ ✗ 1 error ⚠ 56 warnings across 45/191 files in 2.5s │
    └────────────────────────────────────────────────────────┘

    Full diagnostics written to /tmp/react-doctor-0104154c-02d6-4306-9507-e9148de4c32c

    Share your results: https://www.react.doctor/share?p=dfweb-v4&s=89&e=1&w=56&f=45

Scanning /home/runner/work/dfweb-v4/dfweb-v4/studio...

  • Detecting framework. Found React.
    ✔ Detecting framework. Found React.

  • Detecting React version. Found React ^19.2.4.
    ✔ Detecting React version. Found React ^19.2.4.

  • Detecting language. Found TypeScript.
    ✔ Detecting language. Found TypeScript.

  • Detecting React Compiler. Not found.
    ✔ Detecting React Compiler. Not found.

  • Found 14 source files.
    ✔ Found 14 source files.

  • Running lint checks...

  • Detecting dead code.
    ✔ Detecting dead code.

  • Running lint checks...
    ✔ Running lint checks.
    No issues found!

    ┌─────┐
    │ ◠ ◠ │
    │ ▽ │
    └─────┘
    React Doctor (www.react.doctor)

    100 / 100 Great

    ██████████████████████████████████████████████████

</details>
> Powered by [react-doctor](https://github.com/millionco/react-doctor)

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