Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
220 commits
Select commit Hold shift + click to select a range
94f6a09
Initial plan
Copilot Dec 29, 2025
2174874
Merge pull request #1 from Kushmanmb/copilot/install-yarn-dependencies
Kushmanmb Dec 30, 2025
7e3ee1b
Initial plan
Copilot Jan 17, 2026
c3460d0
Merge pull request #2 from Kushmanmb/copilot/add-transfer-filter-hook
Kushmanmb Jan 17, 2026
5713754
Initial plan
Copilot Jan 24, 2026
40d6a1e
Merge pull request #4 from Kushmanmb/copilot/fetch-etherscan-api-data
Kushmanmb Jan 24, 2026
f88c2ae
Initial plan
Copilot Jan 29, 2026
e6930cd
Add user registration form with validation and API endpoint
Copilot Jan 29, 2026
3970789
Fix linting errors in registration form and API route
Copilot Jan 29, 2026
3b2ed23
Address code review feedback: add autocomplete, fix validation, use L…
Copilot Jan 29, 2026
4f1d18a
Merge pull request #11 from Kushmanmb/copilot/add-user-registration-form
Kushmanmb Jan 29, 2026
1ced356
Initial plan
Copilot Jan 29, 2026
92ce8a7
Fix critical blockchain code errors - add error logging and validation
Copilot Jan 29, 2026
3bb3273
Fix remaining console.error to use logger for consistency
Copilot Jan 29, 2026
9e8dcf6
Add contract address validation in useRegisterNameCallback
Copilot Jan 29, 2026
df55fb5
Add comprehensive blockchain audit report
Copilot Jan 29, 2026
2ee3ec7
Update apps/web/src/hooks/useRegisterNameCallback.ts
Kushmanmb Feb 2, 2026
9f7a5c6
Merge pull request #12 from Kushmanmb/copilot/audit-blockchain-code-e…
Kushmanmb Feb 2, 2026
1b8470d
Initial plan
Copilot Feb 2, 2026
eac5e4e
Optimize performance: Fix O(n²) deduplication, improve DOM polling, a…
Copilot Feb 2, 2026
1deaf26
Fix ESLint warning: Add memoized functions to dependency array
Copilot Feb 2, 2026
2f101ed
Use useCallback instead of useMemo for function memoization
Copilot Feb 2, 2026
4e2f25f
Address code review feedback: Remove redundant check, clarify comment
Copilot Feb 2, 2026
3806ccc
Merge pull request #15 from Kushmanmb/copilot/improve-slow-code-effic…
Kushmanmb Feb 2, 2026
7e9b409
Initial plan
Copilot Feb 4, 2026
7cf5c81
Refactor API decorators to remove duplication
Copilot Feb 4, 2026
ea895f9
Refactor proof API routes to eliminate duplication
Copilot Feb 4, 2026
ee31de0
Refactor attestation hooks to eliminate duplication
Copilot Feb 4, 2026
778cd50
Address code review feedback for attestation factory
Copilot Feb 4, 2026
e69a80e
Merge pull request #16 from Kushmanmb/copilot/refactor-duplicated-code
Kushmanmb Feb 4, 2026
1e40e12
Create .gitignore file to protect private keys and sensitive data
Kushmanmb Feb 6, 2026
6d8942b
Initial plan
Copilot Feb 8, 2026
de9a3ba
Add contract source code API support to proxy route
Copilot Feb 8, 2026
9161f40
Add documentation and examples for contract source code API
Copilot Feb 8, 2026
2199581
Address code review: clarify SimilarMatch optional field
Copilot Feb 8, 2026
e698481
Initial plan
Copilot Feb 8, 2026
adc9c3d
Add mining reward stats API endpoint
Copilot Feb 8, 2026
d62dce5
Fix: Use validated blockCountNum instead of raw string
Copilot Feb 8, 2026
6df476d
Merge pull request #19 from kushmanmb-org/copilot/fetch-mining-reward…
Kushmanmb Feb 8, 2026
fa6d5a2
Initial plan
Copilot Feb 8, 2026
d9f437c
Update .gitignore
Kushmanmb Feb 8, 2026
60b9c3e
Add API endpoint for fetching block transactions from mempool.space
Copilot Feb 8, 2026
82ab689
Merge pull request #20 from kushmanmb-org/copilot/fetch-block-transac…
Kushmanmb Feb 8, 2026
46b79d0
Initial plan
Copilot Feb 8, 2026
459de54
Merge pull request #21 from kushmanmb-org/copilot/update-file-structure
Kushmanmb Feb 8, 2026
024a067
Create bearer.yml
Kushmanmb Feb 8, 2026
8a0300c
Merge branch 'base:master' into master
Kushmanmb Feb 8, 2026
21bbc6e
Merge branch 'master' into copilot/add-test12345-smart-contract
Kushmanmb Feb 8, 2026
a13f860
Merge pull request #18 from kushmanmb-org/copilot/add-test12345-smart…
Kushmanmb Feb 8, 2026
e9fed6a
Initial plan
Copilot Feb 10, 2026
e485b98
Enable corepack in GitHub Actions workflows
Copilot Feb 10, 2026
96b4c35
Add Node.js setup step to main.yml workflow for consistency
Copilot Feb 10, 2026
0cfece9
Merge pull request #23 from kushmanmb-org/copilot/enable-corepack-fea…
Kushmanmb Feb 10, 2026
7ae9864
Initial plan
Copilot Feb 10, 2026
6e5e8fb
Apply GitHub Actions workflow best practices
Copilot Feb 10, 2026
630a2a3
Add comprehensive workflow best practices documentation
Copilot Feb 10, 2026
0a7026c
Initial plan
Copilot Feb 10, 2026
0441c07
Install Jest TypeScript support and fix ESM module issues
Copilot Feb 10, 2026
88002f0
Merge pull request #28 from kushmanmb-org/copilot/add-jest-typescript…
Kushmanmb Feb 10, 2026
f432f23
Add comprehensive .gitignore patterns for private keys and data files
Copilot Feb 10, 2026
a7ab526
Merge pull request #27 from kushmanmb-org/copilot/manage-workflows-be…
Kushmanmb Feb 10, 2026
742dd04
Initial plan
Copilot Feb 10, 2026
1db5392
Add Test12345.sol example contract file and update documentation
Copilot Feb 10, 2026
31ff419
Improve Solidity contract with explicit visibility and memory location
Copilot Feb 10, 2026
15ceb2b
Merge pull request #36 from kushmanmb-org/copilot/add-pragma-solidity…
Kushmanmb Feb 10, 2026
929a04d
Initial plan
Copilot Feb 10, 2026
1d245cc
Initial plan
Copilot Feb 10, 2026
92165d9
Enhance .gitignore with comprehensive patterns for private keys and s…
Copilot Feb 10, 2026
945000a
Refine .gitignore patterns to be more specific and avoid catching leg…
Copilot Feb 10, 2026
7ccb152
Add .sol files to .copilotignore whitelist
Copilot Feb 10, 2026
3bc885f
Remove redundant patterns from .gitignore based on code review feedback
Copilot Feb 10, 2026
65d2b7c
Merge pull request #37 from kushmanmb-org/copilot/add-gitignore-for-s…
Kushmanmb Feb 10, 2026
b78367c
Merge pull request #38 from kushmanmb-org/copilot/add-sol-file
Kushmanmb Feb 10, 2026
16edfd5
Initial plan
Copilot Feb 10, 2026
e379905
Create composite action for Node.js setup with Yarn
Copilot Feb 10, 2026
ea5c1bf
Fix trailing spaces in composite action
Copilot Feb 10, 2026
08b91ff
Update documentation for composite action
Copilot Feb 10, 2026
cceb494
Initial plan
Copilot Feb 11, 2026
8bb9808
Configure git user.name and user.email for contributors and CI
Copilot Feb 11, 2026
688b605
Use --global flag for git config in CI setup
Feb 11, 2026
0e860d3
Merge pull request #42 from kushmanmb-org/copilot/configure-user-name…
Kushmanmb Feb 11, 2026
d5c3d97
Initial plan
Copilot Feb 11, 2026
a7cb784
Update Solidity pragma from 0.4.26 to ^0.4.18
Copilot Feb 11, 2026
8c2acaf
Add security best practices and improve Test12345 contract
Copilot Feb 11, 2026
da8f17b
Address code review feedback - improve contract security
Copilot Feb 11, 2026
715f4cc
Fix keccak256 syntax and clarify Solidity version guidance
Copilot Feb 11, 2026
4878892
Add complete audit trail and improve documentation
Copilot Feb 11, 2026
0e1f6dc
Clarify Solidity version compatibility for emit keyword
Copilot Feb 11, 2026
302938f
Merge pull request #45 from kushmanmb-org/copilot/update-solidity-ver…
Kushmanmb Feb 11, 2026
da6df08
Initial plan
Copilot Feb 11, 2026
474617f
Enhance .gitignore for comprehensive private keys and sensitive data …
Copilot Feb 11, 2026
7b97789
Refine .gitignore patterns based on code review feedback
Copilot Feb 11, 2026
d21a8e2
Add additional private key and data protection patterns to .gitignore
Copilot Feb 11, 2026
2214031
Refine patterns to avoid false positives based on code review
Copilot Feb 11, 2026
f0b5ef0
Merge pull request #48 from kushmanmb-org/copilot/add-accept-ownershi…
Kushmanmb Feb 11, 2026
ca9d3f2
Initial plan
Copilot Feb 11, 2026
662a6cc
Add zkpdf_lib with verify_pdf_claim function and tests
Copilot Feb 11, 2026
e681bfb
Fix linting issues in zkpdf_lib (use camelCase naming)
Copilot Feb 11, 2026
b3b398b
Add comprehensive documentation for zkpdf_lib
Copilot Feb 11, 2026
8759bf2
Address code review feedback: add constants and improve deprecation n…
Copilot Feb 11, 2026
91f3114
Merge pull request #51 from kushmanmb-org/copilot/add-verify-pdf-clai…
Kushmanmb Feb 11, 2026
d32028a
Initial plan
Copilot Feb 11, 2026
f018bad
Merge pull request #39 from kushmanmb-org/copilot/configure-actions-s…
Kushmanmb Feb 11, 2026
f2801b1
Fix React Hook dependency and image element warnings
Copilot Feb 11, 2026
61d8fac
Fix remaining React Hook and img element issues
Copilot Feb 11, 2026
61a0782
Reset animation frame ID to null after cleanup
Copilot Feb 11, 2026
aee3faf
Add clarifying comment for ref capture pattern
Copilot Feb 11, 2026
885b2f6
Merge pull request #52 from kushmanmb-org/copilot/fix-errors-using-be…
Kushmanmb Feb 11, 2026
d01ec8b
Initial plan
Copilot Feb 11, 2026
3d8049a
Replace ENS domain placeholder with kushmanmb.base.eth in crack-the-c…
Copilot Feb 11, 2026
bc2e8ed
Merge pull request #54 from kushmanmb-org/copilot/update-ens-domain
Kushmanmb Feb 11, 2026
3a4832d
Initial plan
Copilot Feb 11, 2026
e6b71f6
Add tests for contract source code verification API
Copilot Feb 11, 2026
b2192d8
Fix test consistency - add CompilerType and ContractFileName to all c…
Copilot Feb 11, 2026
fbd76f1
Merge pull request #55 from kushmanmb-org/copilot/configure-gitignore…
Kushmanmb Feb 11, 2026
a23315a
Initial plan
Copilot Feb 11, 2026
ba9b872
Create foundation.mdx with Base brand foundation guidelines
Copilot Feb 11, 2026
311cbdd
Fix grammar in foundation.mdx - add missing article
Copilot Feb 11, 2026
0c9571b
Initial plan
Copilot Feb 12, 2026
86855c5
Add deploy-mkdocs.yml workflow
Copilot Feb 12, 2026
79ec158
Fix pip cache key to use workflow file hash
Copilot Feb 12, 2026
da7789a
Merge pull request #59 from kushmanmb-org/copilot/create-foundation-m…
Kushmanmb Feb 12, 2026
69d1c5f
Initial plan
Copilot Feb 17, 2026
ea9560b
Replace node-fetch with native Node.js fetch API
Copilot Feb 17, 2026
83f0ddb
Initial plan
Copilot Feb 18, 2026
9b682cb
Implement ENS provider with getResolver() and setText() API
Copilot Feb 18, 2026
02887a0
Add documentation and demo files for ENS provider API
Copilot Feb 18, 2026
da06e25
Fix code review issues: remove unused code and fix typo
Copilot Feb 18, 2026
6951341
Add implementation summary document
Copilot Feb 18, 2026
c60cb07
Initial plan
Copilot Feb 18, 2026
7ae0501
Fix test failures and worker process cleanup issue
Copilot Feb 18, 2026
cd05df7
Merge pull request #62 from kushmanmb-org/copilot/update-twitter-hand…
Kushmanmb Feb 18, 2026
cb24eba
Address code review: add safety check for timeoutId
Copilot Feb 18, 2026
7a5d633
Merge pull request #63 from kushmanmb-org/copilot/fix-ci-pipeline-errors
Kushmanmb Feb 18, 2026
8ca2e4f
Merge pull request #61 from kushmanmb-org/copilot/update-fetch-functi…
Kushmanmb Feb 18, 2026
f44bd0f
Initial plan
Copilot Feb 18, 2026
264d87a
Add Makefile for parallel builds and update CI pipelines
Copilot Feb 18, 2026
c3e3c44
Add CodeQL security scanning, Dependabot, and update README
Copilot Feb 18, 2026
9b237ed
Update gitignore and CONTRIBUTING.md for new build system
Copilot Feb 18, 2026
42d94f8
Address code review feedback: improve parallelism and fix find command
Copilot Feb 18, 2026
caa7ce4
Add comprehensive implementation summary
Copilot Feb 18, 2026
c592bf6
Merge pull request #64 from kushmanmb-org/copilot/parallelize-backlog…
Kushmanmb Feb 18, 2026
d958ab4
Initial plan
Copilot Feb 20, 2026
b4af9af
Add gitpoap-bot and kushmanmb as reviewers to dependabot.yml
Copilot Feb 20, 2026
27b9af3
Merge pull request #65 from kushmanmb-org/copilot/update-kushmanmb
Kushmanmb Feb 20, 2026
261ab13
Initial plan
Copilot Feb 20, 2026
d46fb4f
Merge pull request #60 from kushmanmb-org/copilot/update-deploy-workflow
Kushmanmb Feb 20, 2026
7b98a5e
Add branch protection rulesets and policy documentation
Copilot Feb 20, 2026
298b5cb
Add comprehensive testing and summary documentation for rulesets
Copilot Feb 20, 2026
8b05cef
Fix: Remove reference to non-existent pull-request-rules.json
Copilot Feb 20, 2026
e4cb905
Merge pull request #66 from kushmanmb-org/copilot/create-manage-rulesets
Kushmanmb Feb 20, 2026
7206e4a
Initial plan
Copilot Feb 20, 2026
82cd16d
Initial investigation and plan for @metamask/key-tree/derivation issue
Copilot Feb 20, 2026
73aca84
Fix: Add e2e cache to .gitignore and remove from git
Copilot Feb 20, 2026
1e0f610
Fix: Update MetaMask extension to v12.9.0 to address key-tree derivat…
Copilot Feb 20, 2026
3df7250
Fix: Pin @coinbase/onchaintestkit resolution to exact version for pat…
Copilot Feb 20, 2026
14b6072
Merge pull request #67 from kushmanmb-org/copilot/update-key-tree-der…
Kushmanmb Feb 20, 2026
5616d1c
Initial plan
Copilot Feb 20, 2026
48de937
Add security.txt file to publish ownership information
Copilot Feb 20, 2026
ce6e67b
Use branch-agnostic URL for Policy link in security.txt
Copilot Feb 20, 2026
a38b2e2
Initial plan
Copilot Feb 20, 2026
e5003c9
Add KUSHMANMB_YAKETH_DISCOUNT_VALIDATORS address
Copilot Feb 20, 2026
c033ee0
Use checksummed address format for KUSHMANMB_YAKETH_DISCOUNT_VALIDATORS
Copilot Feb 20, 2026
b8ff652
Merge pull request #70 from kushmanmb-org/copilot/add-0xc0bc84e95864bdfd
Kushmanmb Feb 20, 2026
f85537d
Initial plan
Copilot Feb 20, 2026
1e157b0
Merge pull request #72 from kushmanmb-org/copilot/create-fibonacci-pr…
Kushmanmb Feb 20, 2026
2348c43
Initial plan
Copilot Feb 23, 2026
ec18b38
Replace console.error with proper logger and add ESLint rule
Copilot Feb 23, 2026
27aa9f7
Fix remaining console statements and lint issues
Copilot Feb 23, 2026
fd44059
Remove remaining console.log statements
Copilot Feb 23, 2026
fcbb89e
Fix API_KEY check to return error early
Copilot Feb 23, 2026
e3b5c6c
Merge pull request #73 from kushmanmb-org/copilot/fix-console-error-i…
Kushmanmb Feb 23, 2026
44cef7a
Initial plan
Copilot Feb 23, 2026
256ee4c
Add .gitattributes to configure GitHub Linguist
Copilot Feb 23, 2026
a282bbf
Simplify .gitattributes by removing redundant pattern
Copilot Feb 23, 2026
7958dc4
Merge pull request #69 from kushmanmb-org/copilot/publish-ownership-i…
Kushmanmb Feb 23, 2026
c9ba15c
Merge pull request #74 from kushmanmb-org/copilot/update-docs-for-new…
Kushmanmb Feb 23, 2026
e99f1a0
Initial plan
Copilot Feb 23, 2026
f54770f
Optimize GridHero and UsernameProfileSectionHeatmap performance
Copilot Feb 23, 2026
9dcf183
Address code review feedback: fix variable naming and null safety
Copilot Feb 23, 2026
9bbad73
Merge pull request #75 from kushmanmb-org/copilot/identify-slow-code-…
Kushmanmb Feb 23, 2026
d8c76c7
Initial plan
Copilot Feb 23, 2026
65aa168
Add contract verification CLI tool
Copilot Feb 23, 2026
251aaa6
Add ENS/Basename support to contract verification CLI
Copilot Feb 23, 2026
73bf7f0
Improve ENS/Basename documentation and help messages
Copilot Feb 23, 2026
af2a45e
Fix code review issues: typos, addresses, and ENS resolution
Copilot Feb 23, 2026
376110d
Merge pull request #76 from kushmanmb-org/copilot/verify-mycontract-o…
Kushmanmb Feb 23, 2026
675032c
Initial plan
Copilot Feb 25, 2026
c964b95
Add ALLOWED_OWNERS configuration with validation
Copilot Feb 25, 2026
cf22369
Add documentation for allowed-owners script
Copilot Feb 25, 2026
1f44c41
Merge pull request #77 from kushmanmb-org/copilot/add-allowed-owners-…
Kushmanmb Feb 25, 2026
d2977ee
Initial plan
Copilot Feb 25, 2026
780e86b
Implement claim function with Merkle proof verification
Copilot Feb 25, 2026
56ad775
Address code review feedback: clarify reentrancy protection and third…
Copilot Feb 25, 2026
5b27319
Add documentation for modern ETH transfer pattern using call instead …
Copilot Feb 25, 2026
5ce20c2
Add comprehensive implementation summary documentation
Copilot Feb 25, 2026
df460cc
Set owner to kushmanmb.eth / yaketh.eth address
Copilot Feb 25, 2026
3193a03
Add comprehensive contract deployment infrastructure and documentation
Copilot Feb 25, 2026
ad119b2
Add deployment summary and update README with contract deployment sec…
Copilot Feb 25, 2026
bb10cdd
Merge pull request #78 from kushmanmb-org/copilot/update-claim-function
Kushmanmb Feb 25, 2026
ec37c24
Initial plan
Copilot Feb 25, 2026
573e126
Add authorized address functionality with only-authorized functions
Copilot Feb 25, 2026
53e42d1
Fix: Only owner can update authorized address (security improvement)
Copilot Feb 25, 2026
cdce4d2
Merge pull request #79 from kushmanmb-org/copilot/add-only-owner-func…
Kushmanmb Feb 26, 2026
23a485a
Initial plan
Copilot Feb 26, 2026
ddf3c21
Initial plan
Copilot Feb 26, 2026
2c3dce8
Fix private key exposure and add secure environment variable validation
Copilot Feb 26, 2026
2a22259
Add comprehensive blockchain security improvements documentation
Copilot Feb 26, 2026
bab3846
Add 0x gasless quote API route with comprehensive tests
Copilot Feb 26, 2026
daea20d
Merge pull request #80 from kushmanmb-org/copilot/fix-blockchain-erro…
Kushmanmb Feb 26, 2026
b91fa32
Fix linting issues in gasless quote API route
Copilot Feb 26, 2026
6ece5ab
Address code review feedback: use URLSearchParams for proper encoding
Copilot Feb 26, 2026
d1d6820
Add API documentation for gasless quote endpoint
Copilot Feb 26, 2026
c05cbf2
Merge pull request #81 from kushmanmb-org/copilot/add-gasless-quote-r…
Kushmanmb Feb 26, 2026
bfb7590
Initial plan
Copilot Feb 26, 2026
e7feeab
chore(deps): bump the npm_and_yarn group across 1 directory with 14 u…
dependabot[bot] Feb 20, 2026
f9dc3d0
Incorporate rebased dependabot dependency updates
Copilot Feb 26, 2026
cbb0183
Add rebase summary documentation
Copilot Feb 26, 2026
61d4a4c
Fix hono version in documentation
Copilot Feb 26, 2026
1bac533
Merge pull request #82 from kushmanmb-org/copilot/rebase-dependabot-b…
Kushmanmb Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 24 additions & 6 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,34 @@ _shared_step: &shared_step
NODE_OPTIONS: --max-old-space-size=8192

steps:
- label: Build
- label: ":package: Build"
<<: *shared_step
parallelism: 1
commands:
- tools/ci/setup.sh
- yarn build
- make build

- label: Lint
- label: ":mag: Lint"
<<: *shared_step
parallelism: 1
commands:
- tools/ci/setup.sh
- yarn lint
- make lint

- label: ":test_tube: Unit Tests"
<<: *shared_step
commands:
- tools/ci/setup.sh
- make test-unit

- label: ":shield: Security Audit"
<<: *shared_step
commands:
- tools/ci/setup.sh
- make audit
soft_fail: true

- wait: ~
continue_on_failure: true

- label: ":bar_chart: Build Summary"
commands:
- echo "All parallel builds completed"
3 changes: 2 additions & 1 deletion .copilotignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*
*
!*.sol
8 changes: 8 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ module.exports = {
'react/jsx-filename-extension': ['error', { extensions: ['.jsx', '.tsx', '.mdx'] }],
'react/react-in-jsx-scope': 'off',

// Disallow console statements except in specific files
'no-console': [
'error',
{
allow: ['warn', 'info'],
},
],

// We utilize prop spreading
'react/jsx-props-no-spreading': 'off',

Expand Down
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# GitHub Linguist configuration
# This file tells GitHub which files to exclude from language statistics

# Lock files - exclude from language statistics
yarn.lock linguist-generated=true
package-lock.json linguist-generated=true

# Data files - these are large JSON data files that shouldn't affect language statistics
apps/web/src/data/**/*.json linguist-generated=true

# Generated mapping files
apps/web/app/**/premintsMapping.ts linguist-generated=true
178 changes: 178 additions & 0 deletions .github/WORKFLOWS_BEST_PRACTICES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# GitHub Actions Workflows Best Practices

This document outlines the best practices implemented in our GitHub Actions workflows and provides guidance for maintaining and creating new workflows.

## Best Practices Applied

### 1. Action Version Updates

All workflows now use the latest stable versions of GitHub Actions:
- `actions/checkout@v4` (previously v3)
- `actions/setup-node@v4` (previously v3)

**Why:** Using the latest versions ensures we benefit from security updates, bug fixes, and new features.

### 2. Permissions Management

All workflows now explicitly define permissions using the `permissions` key:

```yaml
permissions:
contents: read
```

**Why:** Following the principle of least privilege, workflows should only have the permissions they need. This reduces security risks if a workflow is compromised.

### 3. Concurrency Control

All workflows now include concurrency groups:

```yaml
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
```

**Why:** This prevents multiple instances of the same workflow from running simultaneously on the same branch, saving CI/CD resources and preventing race conditions.

**Special cases:**
- For security scans (Bearer), we conditionally cancel: `cancel-in-progress: ${{ github.event_name == 'pull_request' }}`
- For scheduled jobs (Algolia), we don't cancel: `cancel-in-progress: false`

### 4. Job Timeouts

All jobs now have explicit timeout values:

```yaml
jobs:
job-name:
timeout-minutes: 30
```

**Timeout values by workflow type:**
- Unit tests: 20 minutes
- Build/Lint: 30 minutes
- E2E tests: 60 minutes
- File size checks: 10 minutes
- Security scans: 15 minutes
- Scheduled updates: 20 minutes

**Why:** Prevents runaway processes from consuming CI/CD resources indefinitely.

### 5. Workflow Structure Consistency

All workflows follow a consistent structure:
1. Name and description
2. Trigger events (`on:`)
3. Permissions
4. Concurrency control
5. Jobs with timeouts
6. Steps

## Workflow Descriptions

### node.js.yml - Node.js CI
- **Purpose:** Builds and lints the codebase
- **Triggers:** Push and pull requests to master
- **Timeout:** 30 minutes

### main.yml - Unit Tests
- **Purpose:** Runs Jest unit tests
- **Triggers:** Push and pull requests to master
- **Timeout:** 20 minutes

### e2e-tests.yml - E2E Tests
- **Purpose:** Runs end-to-end tests with Playwright
- **Triggers:** Push and pull requests to master
- **Timeout:** 60 minutes

### bearer.yml - Bearer Security Scanning
- **Purpose:** Scans code for security vulnerabilities
- **Triggers:** Push, pull requests, and weekly schedule
- **Timeout:** 15 minutes

### file-size-checker.yml - File Size Checker
- **Purpose:** Validates file sizes in pull requests
- **Triggers:** Pull request opened or synchronized
- **Timeout:** 10 minutes

### update-algolia.yml - Update Algolia Search
- **Purpose:** Updates Algolia search indices
- **Triggers:** Manual dispatch and weekday schedule
- **Timeout:** 20 minutes

## Composite Actions

### setup-node-yarn
- **Location:** `.github/actions/setup-node-yarn/action.yml`
- **Purpose:** Provides a reusable action for setting up Node.js with Yarn
- **Features:**
- Sets up Node.js with specified version (default: 24.x)
- Enables Yarn caching for faster installs
- Enables Corepack for proper Yarn version management
- Installs dependencies with `yarn`
- **Usage:**
```yaml
steps:
- uses: actions/checkout@v4
- name: Setup Node.js with Yarn
uses: ./.github/actions/setup-node-yarn
with:
node-version: 24.x
```

## Guidelines for Creating New Workflows

When creating a new workflow, ensure you:

1. **Use latest action versions**
- Check [GitHub Actions Marketplace](https://github.com/marketplace?type=actions) for latest versions

2. **Define minimal permissions**
- Start with `contents: read` and only add additional permissions as needed

3. **Add concurrency control**
- Use `${{ github.workflow }}-${{ github.ref }}` as the group
- Set `cancel-in-progress: true` for most workflows
- Set `cancel-in-progress: false` only for critical scheduled jobs

4. **Set appropriate timeouts**
- Add `timeout-minutes` to prevent runaway jobs
- Choose values based on typical job duration plus buffer

5. **Use caching**
- Enable caching for dependencies (e.g., `cache: 'yarn'` in setup-node)

6. **Use reusable composite actions**
- Use `./.github/actions/setup-node-yarn` for Node.js setup with Yarn
- This composite action handles Node.js setup, Corepack enablement, and dependency installation
- Note: Checkout step is still needed before using this action

7. **Add workflow_dispatch when appropriate**
- Allow manual triggering for debugging and ad-hoc runs

8. **Document the workflow**
- Add comments explaining what the workflow does
- Update this document with new workflows

## Security Considerations

- Never commit secrets or sensitive data
- Use GitHub Secrets for API keys and tokens
- Review third-party actions before use
- Pin third-party actions to specific commits for security
- Regularly update action versions
- Keep permissions minimal

## Maintenance

- Review workflows quarterly for updates
- Update action versions when new releases are available
- Monitor workflow run times and adjust timeouts if needed
- Check GitHub's changelog for Actions updates

## Resources

- [GitHub Actions Documentation](https://docs.github.com/en/actions)
- [GitHub Actions Best Practices](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions)
- [Workflow Syntax Reference](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)
25 changes: 25 additions & 0 deletions .github/actions/setup-node-yarn/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: 'Setup Node.js with Yarn'
description: 'Sets up Node.js with Yarn package manager using Corepack'

inputs:
node-version:
description: 'Node.js version to use'
required: false
default: '24.x'

runs:
using: 'composite'
steps:
- name: Setup Node.js ${{ inputs.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
cache: 'yarn'

- name: Enable Corepack
run: corepack enable
shell: bash

- name: Install dependencies
run: yarn
shell: bash
47 changes: 47 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 10
reviewers:
- "kushmanmb-org/maintainers"
- "gitpoap-bot"
- "kushmanmb"
labels:
- "dependencies"
- "automated"
commit-message:
prefix: "chore"
include: "scope"
groups:
# Group all minor and patch updates together
development-dependencies:
dependency-type: "development"
update-types:
- "minor"
- "patch"
production-dependencies:
dependency-type: "production"
update-types:
- "minor"
- "patch"

# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
reviewers:
- "kushmanmb-org/maintainers"
- "gitpoap-bot"
- "kushmanmb"
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
Loading