Skip to content

Conversation

@dependabot
Copy link
Contributor

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

Bumps react-dom from 18.3.1 to 19.2.0.

Release notes

Sourced from react-dom's releases.

19.2.0 (Oct 1, 2025)

Below is a list of all new features, APIs, and bug fixes.

Read the React 19.2 release post for more information.

New React Features

  • <Activity>: A new API to hide and restore the UI and internal state of its children.
  • useEffectEvent is a React Hook that lets you extract non-reactive logic into an Effect Event.
  • cacheSignal (for RSCs) lets your know when the cache() lifetime is over.
  • React Performance tracks appear on the Performance panel’s timeline in your browser developer tools

New React DOM Features

  • Added resume APIs for partial pre-rendering with Web Streams:
  • Added resume APIs for partial pre-rendering with Node Streams:
  • Updated prerender APIs to return a postponed state that can be passed to the resume APIs.

Notable changes

  • React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming <ViewTransition> Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
  • Add Node Web Streams (prerender, renderToReadableStream) to server-side-rendering APIs for Node.js
  • Use underscore instead of : IDs generated by useId

All Changes

React

React DOM

... (truncated)

Changelog

Sourced from react-dom's changelog.

19.2.0 (October 1st, 2025)

Below is a list of all new features, APIs, and bug fixes.

Read the React 19.2 release post for more information.

New React Features

  • <Activity>: A new API to hide and restore the UI and internal state of its children.
  • useEffectEvent is a React Hook that lets you extract non-reactive logic into an Effect Event.
  • cacheSignal (for RSCs) lets your know when the cache() lifetime is over.
  • React Performance tracks appear on the Performance panel’s timeline in your browser developer tools

New React DOM Features

  • Added resume APIs for partial pre-rendering with Web Streams:
  • Added resume APIs for partial pre-rendering with Node Streams:
  • Updated prerender APIs to return a postponed state that can be passed to the resume APIs.

Notable changes

  • React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming <ViewTransition> Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
  • Add Node Web Streams (prerender, renderToReadableStream) to server-side-rendering APIs for Node.js
  • Use underscore instead of : IDs generated by useId

All Changes

React

React DOM

... (truncated)

Commits

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 [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 18.3.1 to 19.2.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.0
  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. Please create them before Dependabot can add them to a pull request.

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

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Oct 25, 2025

Looks like react-dom is updatable in another way, so this is no longer needed.

@dependabot dependabot bot closed this Oct 25, 2025
@dependabot dependabot bot deleted the dependabot/npm_and_yarn/react-dom-19.2.0 branch October 25, 2025 21:06
kevalyq added a commit that referenced this pull request Nov 3, 2025
- Add explanatory comment for duplicate 512x512 icon (maskable purpose)
- Simplify onClose handler to inline arrow function with comment

Addresses Copilot comments #7 and #8.
kevalyq added a commit that referenced this pull request Nov 3, 2025
- Add explanatory comment for duplicate 512x512 icon (maskable purpose)
- Simplify onClose handler to inline arrow function with comment

Addresses Copilot comments #7 and #8.
kevalyq added a commit that referenced this pull request Nov 3, 2025
* feat: add PWA offline-first foundation

Implements core Progressive Web App infrastructure for offline-first
functionality:

Infrastructure:
- Vite PWA plugin with Workbox for service worker management
- Web App Manifest for installability (PWA)
- Auto-update service worker registration in main.tsx

Components & Hooks:
- useOnlineStatus hook for real-time network detection
- OfflineIndicator component for user feedback when offline
- Integration in App.tsx for global offline status

Caching Strategy:
- NetworkFirst for API calls (10s timeout, 24h cache)
- CacheFirst for Google Fonts (1 year cache)
- Glob patterns for static assets (js, css, html, fonts, images)

Assets:
- PWA icons (192x192, 512x512) with SecPal branding
- Manifest with theme color #3b82f6 (blue)

Testing:
- Comprehensive tests for useOnlineStatus hook (4 tests)
- Event listener cleanup verification
- Online/offline state transitions

This establishes the foundation for:
- Offline data access
- Background sync (future)
- Push notifications (future)
- IndexedDB integration (future)

* style: format PWA files with prettier

* fix: address Copilot PR review comments

- Fix icon paths: use .svg instead of .png (icons are SVG files)
- Remove manual service worker registration (VitePWA handles it)
- Remove empty onClose handler from Alert component
- Remove Retry button (alert auto-dismisses when back online)

Addresses all 6 review comments from GitHub Copilot.

* fix: remove unused imports

* fix: add required onClose handler with explanatory comment

Alert component requires onClose prop (Headless UI Dialog).
Handler does nothing as alert auto-dismisses when back online.

* fix: address 2 new Copilot review comments

- Add explanatory comment for duplicate 512x512 icon (maskable purpose)
- Simplify onClose handler to inline arrow function with comment

Addresses Copilot comments #7 and #8.

* perf: optimize noop function and make API URL configurable

- Extract empty onClose handler to noop constant to avoid creating new function on every render (addresses Copilot comment #2485115619)
- Make API URL configurable via VITE_API_URL environment variable with production default (addresses Copilot comment #2485115620)
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.
kevalyq added a commit that referenced this pull request Nov 19, 2025
…plicates, move test exports

- Remove NIST_TEST_VECTOR_1 (contained placeholder values, not real NIST data)
- Fix duplicate conditional logic in encryption.test.ts (tampering tests)
- Remove test vector exports from public API (index.ts)
- Add testVectors.test.ts to cover toHex/fromHex helper functions (8 tests)
- BufferSource casts kept in encryption.ts (required by TypeScript strict mode)
- BufferSource cast kept in checksum.ts (TypeScript requires it)

Copilot Comments Addressed:
✅ #1: Removed NIST_TEST_VECTOR_1 placeholder
✅ #2-5: Removed unnecessary BufferSource casts where possible
✅ #6-7: Fixed duplicate conditionals in tampering tests
❌ #8: BufferSource cast in checksum.ts REQUIRED by TypeScript
✅ #9: Moved test exports out of public API

Tests: 48/48 passing, 100% coverage maintained
Quality: TypeCheck passing, ESLint passing
kevalyq added a commit that referenced this pull request Nov 19, 2025
* feat(crypto): implement Phase 1 - AES-GCM-256 encryption utilities

Implements #172 (Phase 1 of Issue #143)

## Implementation Summary

### Added Files (TDD Approach)
- src/lib/crypto/testVectors.ts - NIST-validated test vectors for AES-GCM-256
- src/lib/crypto/encryption.test.ts - Comprehensive test suite (20 tests)
- src/lib/crypto/encryption.ts - AES-GCM-256 encryption implementation
- src/lib/crypto/checksum.test.ts - SHA-256 checksum tests (17 tests)
- src/lib/crypto/checksum.ts - SHA-256 integrity verification
- src/lib/crypto/index.ts - Public API exports

### Features
✅ AES-GCM-256 authenticated encryption
✅ HKDF-SHA-256 file-specific key derivation
✅ Master key generation/import/export
✅ SHA-256 checksums for integrity verification
✅ Zero-knowledge architecture (file keys non-extractable)
✅ Web Crypto API only (no external dependencies)

### Test Coverage
- 37/37 tests passing
- Encryption/decryption round-trip validation
- Auth tag tampering detection
- Ciphertext integrity verification
- Deterministic key derivation
- Large file support (1KB+ tested)

### Security Properties
- 256-bit AES-GCM keys
- 96-bit random IVs (unique per encryption)
- 128-bit authentication tags
- File-specific derived keys (non-extractable)
- Constant-time checksum comparison

Next: Phase 2 - ShareTarget encryption integration (#173)

* fix(crypto): Address Copilot review - remove NIST placeholder, fix duplicates, move test exports

- Remove NIST_TEST_VECTOR_1 (contained placeholder values, not real NIST data)
- Fix duplicate conditional logic in encryption.test.ts (tampering tests)
- Remove test vector exports from public API (index.ts)
- Add testVectors.test.ts to cover toHex/fromHex helper functions (8 tests)
- BufferSource casts kept in encryption.ts (required by TypeScript strict mode)
- BufferSource cast kept in checksum.ts (TypeScript requires it)

Copilot Comments Addressed:
✅ #1: Removed NIST_TEST_VECTOR_1 placeholder
✅ #2-5: Removed unnecessary BufferSource casts where possible
✅ #6-7: Fixed duplicate conditionals in tampering tests
❌ #8: BufferSource cast in checksum.ts REQUIRED by TypeScript
✅ #9: Moved test exports out of public API

Tests: 48/48 passing, 100% coverage maintained
Quality: TypeCheck passing, ESLint passing

* docs: fix markdownlint - add language identifiers to code blocks

* fix(docs): address Copilot comments - remove orphaned JSDoc, fix markdown structure

- Remove orphaned NIST JSDoc comment block in testVectors.ts
- Fix malformed markdown code blocks in IMPLEMENTATION_PLAN_ISSUE143.md
- Rename duplicate '## Encryption Flow' to '### Encryption Workflow'
- Add API reference example code block

Copilot Comments Addressed:
✅ #10: Removed incomplete JSDoc block (lines 14-20)
✅ #11: Fixed nested/malformed code blocks (lines 879-914)

Note: BufferSource casts in encryption.ts/checksum.ts REQUIRED by TypeScript strict mode
(Uint8Array<ArrayBufferLike> incompatibility - known TS limitation)

* fix(crypto): add missing BufferSource cast for iv parameter in decryptFile

TypeScript strict mode requires BufferSource cast for iv parameter
in crypto.subtle.decrypt call (line 215).

Fixes CI build error:
- error TS2769: No overload matches this call
- Type 'Uint8Array<ArrayBufferLike>' is not assignable to 'BufferSource'

All BufferSource casts are TypeScript strict mode requirement, not redundant.
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