Skip to content

Develop#47

Merged
Serph91P merged 147 commits intomainfrom
develop
Mar 15, 2026
Merged

Develop#47
Serph91P merged 147 commits intomainfrom
develop

Conversation

@Serph91P
Copy link
Owner

This pull request introduces several improvements to the project's automation, versioning, and developer experience. The main changes include the adoption of the Conventional Commits standard, enhancements to the release workflow for more robust version calculation and changelog generation, updates to security scanning and CI dependencies, and upgrades to frontend dependencies.

Adoption of Conventional Commits and Developer Guidance:

  • Added .github/copilot-instructions.md with detailed guidelines for commit message formatting using the Conventional Commits standard, including types, scopes, version bump rules, and examples. This helps ensure consistent commit messages for automated versioning and changelogs.
  • Added VSCode workspace settings (.vscode/settings.json) to provide commit message generation instructions for Copilot Chat, enforcing the Conventional Commits format for all contributors.

Release Workflow and Versioning Improvements:

  • Refactored the release workflow in .github/workflows/release.yml to:
    • Use the highest version tag (across both stable and prerelease/dev tags) to determine the next version, following semantic versioning and Conventional Commits for bump type (major/minor/patch).
    • Improve detection and handling of dev/prerelease tags and stable releases, including more robust tag parsing and changelog generation for both main and develop branches.
    • Adjust Docker image tagging logic to better distinguish between stable and dev releases. [1] [2] [3] [4] [5]

CI and Security Scanning Updates:

  • Updated GitHub Actions dependencies in .github/workflows/security-scan.yml:
    • Upgraded actions/upload-artifact from v6 to v7 for all artifact uploads.
    • Upgraded aquasecurity/trivy-action from 0.34.1 to 0.35.0 for all Trivy security scans.
  • Updated Docker Buildx setup action to v4 in the release workflow for improved build performance and compatibility. [1] [2] [3] [4] [5] [6] [7] [8]

Frontend Dependency Upgrades:

  • Upgraded several frontend dependencies in frontend/package-lock.json, including:
    • @typescript-eslint/eslint-plugin and @typescript-eslint/parser to 8.57.0
    • minimatch to 3.1.5 for ESLint-related packages
    • Multiple @rollup/rollup-* platform-specific packages to 4.59.0 for improved build support and bug fixes [1] [2] [3] [4] [5] [6] [7] [8]

These changes collectively improve the project's automation, release reliability, and developer onboarding experience.

- Add PlaybackActivity model for detailed playback session tracking
- Add activity API routes (/api/activity/) with list, stats, active sessions
- Add users API routes (/api/users/) with list, detail, activity endpoints
- Extend Emby sync with _sync_active_sessions() for real-time session tracking
- Add Users.tsx page with search, pagination, user stats
- Add UserDetail.tsx page with Overview/Activity tabs and time-based stats
- Add Activity.tsx page with global activity log, active sessions, stats cards
- Add LibraryDetail.tsx with Overview/Media/Activity tabs
- Extend libraries API with /details, /media, /activity endpoints
- Update navigation with Users and Activity menu items
- Library cards now link to detail view

Completes Phase 2 of PLANNED_FEATURES.md roadmap (Jellystat-style features)
Database:
- Add PostgreSQL support via POSTGRES_* environment variables
- Add asyncpg driver to requirements
- Create docker-compose.postgres.yml for PostgreSQL setup
- Keep SQLite as default for simple deployments
- Add connection pooling for PostgreSQL

Bug Fixes:
- Fix MediaItem.parent_id AttributeError by using series_id (external_id)
- Add parent_id column to MediaItem model for future use
- Fix Users API to fallback to UserWatchHistory when PlaybackActivity is empty
- Fix deprecation warning: regex -> pattern in Query parameters
- Remove 'Jellystat-style' comments from codebase

Improvements:
- Sync jobs now visible in Jobs view with execution logs
- Manual sync shows progress/errors in Jobs history
- Users page shows last watched from UserWatchHistory fallback
- Add column_exists() helper for SQLite/PostgreSQL compatibility
- Add table_exists() helper for SQLite/PostgreSQL compatibility
- Use information_schema for PostgreSQL column/table checks
- Use pragma_table_info for SQLite column checks
- Add IF NOT EXISTS for PostgreSQL ALTER TABLE commands
- Use SERIAL PRIMARY KEY for PostgreSQL auto-increment
- Build only linux/amd64 for faster builds
- Remove QEMU setup (not needed without cross-platform builds)
- Update release notes to reflect single architecture
- Add note about opening feature request for ARM support
- MediaCurator now has built-in watch statistics tracking
- Jellystat integration no longer needed
- Removed from frontend ServiceType, service options
- Removed from backend models and schemas
- Add separate sync jobs for each enabled service
- Show service sync status with running indicator
- Add manual 'Sync Now' button per service
- Display last sync result and duration
- Auto-refresh job status every 5 seconds
- New API endpoint POST /jobs/sync/service/{id}
- Service sync jobs show in job history
- Sync libraries, movies, series, episodes directly from Emby
- Path-based library association for proper linking
- Track user total_plays and total_watch_time_seconds
- Use external_id for watch data matching
- Include RunTimeTicks for watch time calculation
…eating duplicates

BREAKING CHANGE: Emby sync architecture completely redesigned

The core insight:
- Sonarr/Radarr CREATE MediaItems with file paths and metadata
- Emby PROVIDES watch statistics (plays, progress, favorites)
- Previous code created DUPLICATE items from Emby with different external_ids

New behavior:
- _sync_emby() no longer creates MediaItems
- Loads ALL existing items and builds path -> item mapping
- Matches Emby items to Sonarr/Radarr items by normalized PATH
- Updates library_id based on Emby library paths
- Applies watch data (play count, is_watched, favorites, progress) to matched items
- Updates user statistics and watch history

Key changes:
- Removed: external_id_to_item mapping (was causing duplicates)
- Added: path_to_item mapping with normalized paths (/ instead of \)
- track_watch_data() now uses paths, skips items not in database
- _sync_active_sessions() simplified to use only path_to_item
- currently_watching_ids -> currently_watching_paths
- Return value updated (Emby reports 0 added, only updated counts)

This fixes:
- Movies showing 0 plays (Emby data was on separate items)
- Libraries showing 0 counts
- Users showing no watch data
- Activity/history not tracking properly
WebSocket System:
- Add ConnectionManager (backend/app/core/websocket.py)
- Add /api/ws/jobs endpoint with ping/pong support
- Add progress callbacks to Sonarr, Radarr, Emby sync
- Integrate WebSocket broadcasts in all scheduler jobs
- Add Zustand job store (frontend/src/stores/jobs.ts)
- Add global WebSocket hook with auto-reconnect & toasts
- Rewrite Jobs page with live progress bars & running panel
- Add animated job count badge in Layout sidebar

Setup Wizard:
- Add backend API: /api/setup/status, test-connection, add-service, complete, skip
- Add 5-step frontend wizard (Welcome → Arr → MediaServer → Sync → Complete)
- Add SetupGate redirect in App.tsx for first-time setup
- Enforce service order: Sonarr/Radarr before Emby/Jellyfin

Docs:
- Update DEVELOPMENT_STATUS.md with new features
feat: WebSocket real-time job system + Setup Wizard
BUG-001 (CRITICAL): LibraryDetail.tsx complete rewrite
- Fix double /api/ prefix causing 404 errors on all API calls
- Migrate from manual useState/useEffect to React Query (useQuery)
- Remove local formatBytes, formatDuration, formatDate, formatRelativeTime
- Import shared utilities from lib/utils.ts
- Add proper light/dark mode classes throughout

BUG-002 (HIGH): Fix Login.tsx & Register.tsx light-mode
- Replace hardcoded dark classes with light/dark pairs
- Fix: bg-dark-800 → bg-white dark:bg-dark-800
- Fix: text-white → text-gray-900 dark:text-white
- Fix: text-dark-200 → text-gray-700 dark:text-dark-200
- Fix: border-dark-700 → border-gray-200 dark:border-dark-700
- Fix inputs: bg-gray-50 dark:bg-dark-800, proper placeholder colors

BUG-003 (HIGH): Fix ConfirmDialog.tsx light-mode
- Modal background, title, message, footer, cancel button themed

BUG-004 (HIGH): Fix Skeleton.tsx light-mode
- Base skeleton: bg-gray-200 dark:bg-dark-700
- Card/Stats containers: bg-white dark:bg-dark-800

BUG-005 (MEDIUM): Fix Toast theming in main.tsx
- Replace hardcoded hex colors with Tailwind CSS classes
- Toasts now respect light/dark mode automatically

BUG-006 (MEDIUM): Fix German locale in utils.ts
- Change formatDate and formatDateTime from 'de-DE' to 'en-US'
- Add formatDuration utility function for shared use

BUG-008 (MEDIUM): Call fetchUser on app init
- ProtectedRoute now calls fetchUser() on mount when token exists
- Ensures fresh user data instead of potentially stale persisted state

BUG-009 (LOW): Remove duplicate formatBytes from Preview.tsx
- Import from shared lib/utils.ts instead

BUG-010 (LOW): Fix manual debounce in Users.tsx
- Replace setTimeout-based debounce with useDebounce hook
- Layout.tsx: German strings → English (BUG-006 complete)
- ResponsiveTable: Add light mode classes (missing dark: variants)
- Activity.tsx: useDebounce hook, shared utils (formatDurationLong,
  formatWatchTime), ResponsiveTable migration, 3× recharts charts
  (Daily Plays area, Day-of-Week bar, Hour-of-Day bar)
- UserDetail.tsx: shared utils, ResponsiveTable migration
- Staging.tsx: ResponsiveTable migration
- Jobs.tsx: Executions table → ResponsiveTable
- App.tsx: React.lazy code-splitting for 13 pages with Suspense
- utils.ts: Add formatDurationLong and formatWatchTime shared functions
- DEVELOPMENT_STATUS.md: Update for Session 4
feat: UX improvements, recharts charts, code-splitting
- LibraryDetail.tsx: Migrate Media + Activity tabs to ResponsiveTable
- Activity.tsx: Add Library-Filter dropdown + Items-per-Page selector (10/25/50/100)
- UserDetail.tsx: Add Library-Filter on activity tab
- Dashboard.tsx: Add 3x recharts charts (Daily Plays, Day-of-Week, Hour-of-Day)
- PLANNED_FEATURES.md: Update Phase 2/3 status, add Implementation History
- DEVELOPMENT_STATUS.md: Update for Session 5
…docs

feat: Phase 2 enhancements - ResponsiveTable, filters, dashboard charts
…ccessibility

BUG-011: PlaybackActivity position_ticks/runtime_ticks Integer→BigInteger
- Emby tick values exceed int32 max (~2.1B), e.g. 70223183889
- Added PostgreSQL migration (ALTER COLUMN TYPE BIGINT)
- Added db.rollback() in _sync_active_sessions and services.py error handlers

ResponsiveTable: Expand-Row support
- New props: onRowClick, isExpanded, expandedContent
- Desktop: expanded content as extra <tr> with colSpan
- Mobile: expanded content as div below card

Preview.tsx: Migrated both tables (Series + Movies) to ResponsiveTable
- Series table with expandable season breakdown
- Last page to complete ResponsiveTable migration

Expand-Rows on Activity, UserDetail, LibraryDetail
- IP Address, Device, Play Method (color-coded), Progress bar
- Library Activity API: added ip_address, transcode_video, transcode_audio

ConfirmDialog accessibility
- role=dialog, aria-modal, aria-labelledby, focus trap, Escape key, click-outside

Documentation: DEVELOPMENT_STATUS.md + PLANNED_FEATURES.md updated
…docs

fix: int32 overflow on position_ticks/runtime_ticks + expand-rows + a…
- Update commit hash from Pending to ea6e64c
- Mark Preview.tsx migration as complete in Priority 2
- Clean up strikethroughs in Priority 4 (Activity, Dashboard fully done)
- Update ResponsiveTable comment (now used on all pages)
- Consolidate Activity Features line (all items done)
…docs

docs: fix inconsistencies in DEVELOPMENT_STATUS.md
BUG-012: Radarr sync stored folder path instead of file path
- movie.get('path') returns '/movies/Title/' (folder)
- Emby returns '/movies/Title/Title.mkv' (file)
- Path matching in track_watch_data failed for ALL movies
- Fix: prefer movieFile.path over movie.path
- Existing movies auto-corrected on next Radarr sync

BUG-013: Users page Last Seen/Watched/Client broken
- last_activity_at relied on LastPlayedDate from Emby (often missing)
- Silent except:pass swallowed parsing errors → now logger.warning
- Fallback: set last_activity_at to sync time if user has plays
- UserWatchHistory fallback: filter on is_played instead of
  last_played_at IS NOT NULL, sort by coalesce + play_count

Documentation: BUG-012 + BUG-013 added to DEVELOPMENT_STATUS.md
and PLANNED_FEATURES.md Implementation History
…docs

fix: movie watch stats + user last seen/watched/client
Serph91P and others added 29 commits February 24, 2026 19:53
fix(ci): make Trivy scan resilient to Docker Hub outages
The post() and delete() methods did not accept a params keyword argument,
causing staging to fail with 'unexpected keyword argument' when creating
or deleting Emby libraries.
fix: add params support to BaseServiceClient.post() and delete()
- RadarrClient.delete_movie(): use params= instead of manual query string
- SonarrClient.delete_series(): use params= instead of manual query string
- BaseServiceClient.put(): add params support for consistency with other methods
fix: use params kwarg instead of manual query strings in service clients
…e-bug

fix: invalidate library cache after create/delete to prevent duplicat…
- Move collectionType from JSON body to query parameter (Emby API requirement)
- Pass library_type through ensure_staging_library chain
- Remove redundant refresh call (handled by refreshLibrary param)
- Log library type on creation for debugging
- Determine library_type (movies/tvshows) from source library's media_type
- Pass correct library_type to ensure_staging_library
- Emby will now correctly recognize content in staging libraries
…e-bug

Feature/fix staging library cache bug
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5 to 6.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@v5...v6)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](docker/setup-qemu-action@v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the npm-minor group with 15 updates in the /frontend directory:

| Package | From | To |
| --- | --- | --- |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.1.18` | `4.2.1` |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.90.20` | `5.90.21` |
| [axios](https://github.com/axios/axios) | `1.13.3` | `1.13.6` |
| [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.3` | `19.2.4` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.9` | `19.2.14` |
| [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.3` | `19.2.4` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.71.1` | `7.71.2` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.13.0` | `7.13.1` |
| [recharts](https://github.com/recharts/recharts) | `3.7.0` | `3.8.0` |
| [zustand](https://github.com/pmndrs/zustand) | `5.0.10` | `5.0.11` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.53.1` | `8.56.1` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `5.1.2` | `5.1.4` |
| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |
| [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | `0.4.26` | `0.5.2` |
| [postcss](https://github.com/postcss/postcss) | `8.5.6` | `8.5.8` |



Updates `@tailwindcss/vite` from 4.1.18 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/@tailwindcss-vite)

Updates `@tanstack/react-query` from 5.90.20 to 5.90.21
- [Release notes](https://github.com/TanStack/query/releases)
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md)
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.90.21/packages/react-query)

Updates `axios` from 1.13.3 to 1.13.6
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.13.3...v1.13.6)

Updates `react` from 19.2.3 to 19.2.4
- [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.4/packages/react)

Updates `@types/react` from 19.2.9 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 19.2.3 to 19.2.4
- [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.4/packages/react-dom)

Updates `react-hook-form` from 7.71.1 to 7.71.2
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](react-hook-form/react-hook-form@v7.71.1...v7.71.2)

Updates `react-router-dom` from 7.13.0 to 7.13.1
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.13.1/packages/react-router-dom)

Updates `recharts` from 3.7.0 to 3.8.0
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md)
- [Commits](recharts/recharts@v3.7.0...v3.8.0)

Updates `zustand` from 5.0.10 to 5.0.11
- [Release notes](https://github.com/pmndrs/zustand/releases)
- [Commits](pmndrs/zustand@v5.0.10...v5.0.11)

Updates `@types/react` from 19.2.9 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@typescript-eslint/eslint-plugin` from 8.53.1 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.53.1 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/parser)

Updates `@vitejs/plugin-react` from 5.1.2 to 5.1.4
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.1.4/packages/plugin-react)

Updates `autoprefixer` from 10.4.23 to 10.4.27
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](postcss/autoprefixer@10.4.23...10.4.27)

Updates `eslint-plugin-react-refresh` from 0.4.26 to 0.5.2
- [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases)
- [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md)
- [Commits](ArnaudBarre/eslint-plugin-react-refresh@v0.4.26...v0.5.2)

Updates `postcss` from 8.5.6 to 8.5.8
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.6...8.5.8)

Updates `tailwindcss` from 4.1.18 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.90.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: axios
  dependency-version: 1.13.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: react
  dependency-version: 19.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: "@types/react"
  dependency-version: 19.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: react-dom
  dependency-version: 19.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: react-hook-form
  dependency-version: 7.71.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: react-router-dom
  dependency-version: 7.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: recharts
  dependency-version: 3.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor
- dependency-name: zustand
  dependency-version: 5.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: "@types/react"
  dependency-version: 19.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 5.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: autoprefixer
  dependency-version: 10.4.27
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: eslint-plugin-react-refresh
  dependency-version: 0.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor
- dependency-name: postcss
  dependency-version: 8.5.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor
- dependency-name: tailwindcss
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…/npm-minor-b74f55b15b

chore(deps): bump the npm-minor group across 1 directory with 17 updates
…/setup-qemu-action-4

chore(deps): bump docker/setup-qemu-action from 3 to 4
…/build-push-action-7

chore(deps): bump docker/build-push-action from 6 to 7
…/metadata-action-6

chore(deps): bump docker/metadata-action from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v6...v7)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.34.1 to 0.35.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](aquasecurity/trivy-action@0.34.1...0.35.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- @vitejs/plugin-react 5.1.4 -> 5.2.0 (adds vite 8 future support)
- @typescript-eslint/eslint-plugin 8.56.1 -> 8.57.0
- @typescript-eslint/parser 8.53.1 -> 8.57.0
- Fix 3 vulnerabilities (rollup, minimatch, ajv) via npm audit fix

Skipped major bumps due to peer dep conflicts:
- vite 8: @tailwindcss/vite only supports ^5/^6/^7
- eslint 10: eslint-plugin-react-hooks only supports up to ^9

Co-authored-by: Serph91P <Serph91P@users.noreply.github.com>
- Rewrite version determination to use highest tag across all branches
- Auto-detect bump type from conventional commits (feat->minor, fix->patch, breaking->major)
- Add copilot-instructions.md with commit message convention
- Add .vscode/settings.json for commit message generation
- Update .gitignore to track .vscode/settings.json
@Serph91P Serph91P merged commit 60ac5d0 into main Mar 15, 2026
26 checks passed
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