Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Oct 25, 2025

Bumps actions/upload-artifact from 4 to 5.

Release notes

Sourced from actions/upload-artifact's releases.

v5.0.0

What's Changed

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

New Contributors

Full Changelog: actions/upload-artifact@v4...v5.0.0

v4.6.2

What's Changed

New Contributors

Full Changelog: actions/upload-artifact@v4...v4.6.2

v4.6.1

What's Changed

Full Changelog: actions/upload-artifact@v4...v4.6.1

v4.6.0

What's Changed

Full Changelog: actions/upload-artifact@v4...v4.6.0

v4.5.0

What's Changed

New Contributors

... (truncated)

Commits
  • 330a01c Merge pull request #734 from actions/danwkennedy/prepare-5.0.0
  • 03f2824 Update github.dep.yml
  • 905a1ec Prepare v5.0.0
  • 2d9f9cd Merge pull request #725 from patrikpolyak/patch-1
  • 9687587 Merge branch 'main' into patch-1
  • 2848b2c Merge pull request #727 from danwkennedy/patch-1
  • 9b51177 Spell out the first use of GHES
  • cd231ca Update GHES guidance to include reference to Node 20 version
  • de65e23 Merge pull request #712 from actions/nebuk89-patch-1
  • 8747d8c Update README.md
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Oct 25, 2025

Labels

The following labels could not be found: dependabot, dependencies, github-actions. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@kevalyq kevalyq added dependencies Pull requests that update dependencies dependabot Dependabot automated updates github-actions GitHub Actions workflow updates labels Oct 25, 2025
@kevalyq
Copy link
Contributor

kevalyq commented Oct 25, 2025

@dependabot rebase

@kevalyq
Copy link
Contributor

kevalyq commented Oct 25, 2025

@dependabot rebase

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Oct 25, 2025

Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry!

If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request @dependabot recreate.

@kevalyq
Copy link
Contributor

kevalyq commented Oct 25, 2025

@dependabot recreate

@kevalyq kevalyq merged commit 9e8d4ce into main Oct 25, 2025
11 checks passed
@kevalyq kevalyq deleted the dependabot/github_actions/actions/upload-artifact-5 branch October 25, 2025 21:48
kevalyq added a commit that referenced this pull request Nov 8, 2025
Root Cause Analysis:
- Deprecation warnings come from workbox-build@7.3.0 (latest version)
- Used by vite-plugin-pwa@1.1.0 (our PWA tooling dependency)
- Deprecated packages: inflight@1.0.6, glob@7.2.3, sourcemap-codec@1.4.8

Why No Direct Fix:
- These are transitive dependencies outside our control
- workbox-build v7.3.0 is latest but hasn't updated yet
- npm overrides would force untested versions (breaks Gebot #2)
- Forking/patching violates maintenance principles

Solution:
- Document thoroughly in docs/KNOWN_ISSUES.md
- Link to upstream GitHub issues
- Accept as known limitation until workbox v8.x
- Monitor for updates (expected Q1-Q2 2026)

Impact:
- Security: No known CVEs
- Memory: inflight leak limited to build-time only
- Functionality: All features work correctly
- Build: No impact on process or runtime

Follows Die 5 Gebote:
- Gebot #2 (Qualität vor Geschwindigkeit): Accept reality vs hack
- Gebot #4 (Clean Code First): Document vs suppress
- Gebot #5 (Self-Review Mandatory): Analyze root cause properly

Relates to: vite-pwa/vite-plugin-pwa#854, GoogleChrome/workbox#3252
kevalyq added a commit that referenced this pull request Nov 16, 2025
- Remove redundant File→Blob conversion (File extends Blob)
- Extract DB version constant (DB_VERSION = 3) with sync warning
- Add MAX_RETRY_COUNT constant (5 retries) to prevent infinite loops
- Check max retries in syncFileQueue before processing
- Add useCallback to event handlers (prevent listener re-creation)
- Add schema sync risk warning comments in Service Worker

Addresses review comments #2, #4, #5, #8, #9 from PR #154
kevalyq added a commit that referenced this pull request Nov 17, 2025
* feat(fileQueue): Add IndexedDB file queue infrastructure

- Add fileQueue table to IndexedDB schema (version 3)
- Implement FileQueueEntry interface with upload states
- Create fileQueue utilities (add, get, update, retry, process)
- Add exponential backoff for failed uploads (max 5 retries)
- Implement storage quota monitoring
- Add 17 comprehensive tests with 100% coverage
- Placeholder for future Secret API integration

Related to #142

* feat(fileQueue): Add Service Worker integration and React hook

- Install idb dependency for Service Worker IndexedDB access
- Integrate FileQueue into Service Worker Share Target handler
- Store shared files directly in IndexedDB (replaces sessionStorage)
- Add Background Sync event listener for offline uploads
- Create useFileQueue() React hook with Dexie live queries
- Support Background Sync registration from client
- Add file IDs to shared file metadata

Related to #142

* feat(fileQueue): Migrate useShareTarget to Service Worker messages

- Update useShareTarget to receive files via SW messages
- Remove sessionStorage dependency for file sharing
- Add file queue IDs to SharedFile interface
- Update CHANGELOG with comprehensive FileQueue documentation
- Document migration from sessionStorage to IndexedDB

Related to #142

* fix: address Copilot review comments

- Remove redundant File→Blob conversion (File extends Blob)
- Extract DB version constant (DB_VERSION = 3) with sync warning
- Add MAX_RETRY_COUNT constant (5 retries) to prevent infinite loops
- Check max retries in syncFileQueue before processing
- Add useCallback to event handlers (prevent listener re-creation)
- Add schema sync risk warning comments in Service Worker

Addresses review comments #2, #4, #5, #8, #9 from PR #154

* feat: implement parallel processing and configurable options

Address all remaining Copilot review nitpicks:

- Parallel file processing with concurrency limit (default: 3)
  - Add processWithConcurrency helper function
  - Prevents sequential bottleneck for large queues
  - Configurable via parameter (Comment #3)

- Make quota update interval configurable
  - Add options parameter to useFileQueue hook
  - Default: 30s, customizable per use case (Comment #1)

- Enhance sync error handling
  - FILE_QUEUE_SYNCED message now reports success/failed counts
  - Add FILE_QUEUE_SYNC_ERROR message handler
  - Better visibility for background sync issues (Comment #6)

- Clarify exponential backoff logic
  - Improve comment to explain retry 0-4 timing
  - Document first retry vs subsequent retries (Comment #7)

All 17 fileQueue tests passing ✅
Addresses review comments #1, #3, #6, #7 from PR #154

* test: fix failing tests for IndexedDB file queue

- Update db.test.ts to expect version 3 and fileQueue table
- Fix useShareTarget.test.ts for new SW message architecture
  - Replace mockFiles expectations with undefined (files via SW)
  - Skip obsolete sessionStorage tests (now IndexedDB)
  - Skip replaceState tests (require SW message mocking)
- Fix fileQueue.ts TypeScript type guard

All 196 tests passing ✅ (11 skipped - require SW integration)
Fixes CI test failures

* chore: update package-lock.json for idb@^8.0.2

Fix npm ci failure in CI caused by package-lock.json mismatch

* test: improve useShareTarget coverage to 97.5%

- Replace obsolete sessionStorage tests with SW message mocking
- Add comprehensive Service Worker message handler tests (7 tests)
- Add history.replaceState tests with SW integration (3 tests)
- Test shareId matching/mismatching logic
- Test SW message listener registration/cleanup
- Test URL parameter combinations with files
- Test empty string handling in URL params

Coverage improved from 62.5% (48% on Codecov) to 97.5%
Only 2 lines uncovered (error edge cases)

26 tests passing, all new tests use proper SW mocking

* fix: address all 22 Copilot review comments on PR #154

Critical fixes:
- Create db-constants.ts to share DB_VERSION, MAX_RETRY_COUNT between app and SW
- Fix Service Worker retry logic: only mark failed after actual upload attempt
- Add exponential backoff cap (60s max) to prevent extreme delays
- Replace concurrency control with robust worker pool pattern
- Fix SW message fields: succeeded/failed instead of success/failed

Service Worker improvements:
- Validate trusted window clients before processing sync
- Distinguish transient vs permanent errors for retry logic
- Send detailed sync stats (succeeded, failed) to clients
- Use shared constants from db-constants.ts

Hook improvements:
- Add runtime check for Background Sync API availability
- Improve useCallback documentation for URL reading pattern
- Track 'skipped' files (backoff) separately from 'pending'
- Handle FILE_QUEUE_SYNC_ERROR messages

Code quality:
- Better error handling for corrupted IndexedDB
- Improved comments explaining empty dependency arrays
- Worker pool prevents concurrency limit violations
- Type safety improvements for Background Sync API

Refs: PR #154 review comments #2532254365-2532284285

* fix: address 7 additional Copilot review comments on PR #154

Critical fixes:
- Change placeholder uploadSucceeded to true to prevent retry exhaustion during testing
  (Comment #2532671518: false would mark all files failed after 5 syncs)

Documentation improvements:
- Add detailed schema documentation in storeFileInQueue with all fields listed
  (Comment #2532671538: Document duplicated schema to aid sync verification)
- Clarify exponential backoff comment about retry 0 meaning first attempt after failure
  (Comment #2532671525: 'first retry' was misleading)
- Document design decision to only upload when window clients exist
  (Comment #2532671535: Prevents uploads without user context/auth)
- Add note about DB connection opened per call (acceptable for 1-3 files)
  (Comment #2532671520: Future optimization opportunity documented)

Code simplifications:
- Remove redundant instance-level sync check (prototype check sufficient)
  (Comment #2532671531: Prototype check guarantees instance has property)
- Fix ESLint disable comment to use correct rule name
  (Comment #2532671530: react-hooks/set-state-in-effect not set-state-in-effect)

All changes maintain test coverage and fix issues identified in second Copilot review.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependabot Dependabot automated updates dependencies Pull requests that update dependencies github-actions GitHub Actions workflow updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants