Jan Böhmer
2f8553303d
Use better fields for determine the product name
2026-01-31 21:39:34 +01:00
Jan Böhmer
f168b2a83c
Reordered ConradShopIDs
2026-01-31 21:30:15 +01:00
Jan Böhmer
98937974c9
Allow to query price infos from conrad
2026-01-31 21:15:35 +01:00
Jan Böhmer
6f4dad98d9
Use parameter parsing logic from PR #1211 to handle multi parameters fine
2026-01-31 19:04:25 +01:00
Jan Böhmer
22cf04585b
Allow to retrieve datasheets from conrad
2026-01-31 18:57:00 +01:00
Jan Böhmer
6628333675
Properly handle danish and non-german swiss shop
2026-01-31 18:43:59 +01:00
Sebastian Almberg
fa4ae6345c
Add Update Manager screenshot for PR
2026-01-30 23:36:08 +01:00
Sebastian Almberg
1637fd63f4
Add backup restore feature
...
- Add restoreBackup() method to UpdateExecutor with full restore workflow
- Add getBackupDetails() to retrieve backup metadata and contents info
- Add restore controller routes (backup details API, restore action)
- Add restore button to backups table in UI
- Create backup_restore_controller.js Stimulus controller for confirmation
- Add translation strings for restore feature
The restore process:
1. Acquires lock and enables maintenance mode
2. Extracts backup to temp directory
3. Restores database (MySQL/PostgreSQL SQL or SQLite file)
4. Optionally restores config files and attachments
5. Clears and warms cache
6. Disables maintenance mode
Fix backup restore database import
The restore feature was using a non-existent doctrine:database:import
command. Now properly uses mysql/psql commands directly to import
database dumps.
Changes:
- Add EntityManagerInterface dependency to UpdateExecutor
- Use mysql command with shell input redirection for MySQL restore
- Use psql -f command for PostgreSQL restore
- Properly handle database connection parameters
- Add error handling for failed imports
2026-01-30 23:24:48 +01:00
Sebastian Almberg
0bfbbc961d
Fix update confirmation dialog not blocking form submission
...
The previous implementation used inline onsubmit handlers with return
confirmVersionChange(...), which could fail silently if any JavaScript
error occurred on the page, causing the form to submit without confirmation.
Fixes:
- Use event.preventDefault() FIRST to ensure form never submits by default
- Use DOMContentLoaded event listeners instead of inline handlers
- Properly escape translation strings using json_encode filter
- Wrap in IIFE with 'use strict' for better error handling
- Use data-attributes to identify forms and pass isDowngrade state
Fix DOMContentLoaded race condition in update form handlers
The event listener was not attaching if DOMContentLoaded had already
fired by the time the script executed. Now checks document.readyState
and attaches handlers immediately if DOM is already ready.
Added console.log statements to help debug form handler attachment.
Use Stimulus controller for update confirmation dialogs
The inline script was blocked by Content Security Policy (CSP).
Stimulus controllers are bundled with webpack and properly allowed by CSP.
- Create update_confirm_controller.js Stimulus controller
- Remove inline script from template
- Pass translation strings via data-* attributes
2026-01-30 23:24:48 +01:00
Sebastian Almberg
97e3b0aa09
Add downgrade warning for versions without Update Manager
...
When downgrading to versions before v2.6.0, show a warning that the
Update Manager will not be available in older versions and that future
updates will need to be done manually via command line.
2026-01-30 21:56:14 +01:00
Sebastian Almberg
87352ca6f7
Add manage_updates permission schema migration
...
- Bump permission schema to version 4
- Add upgradeSchemaToVersion4 for manage_updates permission
- Grants manage_updates to users who have both show_updates and server_infos
- Fix ZIP_RELEASE installation type: set supportsAutoUpdate to false
(ZIP update not yet implemented)
- Improve update instructions for ZIP installations
2026-01-30 21:46:27 +01:00
Sebastian Almberg
42fe781ef8
Add Update Manager for automated Part-DB updates
...
This feature adds a comprehensive Update Manager similar to Mainsail's
update system, allowing administrators to update Part-DB directly from
the web interface.
Features:
- Web UI at /admin/update-manager showing current and available versions
- Support for Git-based installations with automatic update execution
- Maintenance mode during updates to prevent user access
- Automatic database backup before updates
- Git rollback points for recovery (tags created before each update)
- Progress tracking with real-time status updates
- Update history and log viewing
- Downgrade support with appropriate UI messaging
- CLI command `php bin/console partdb:update` for server-side updates
New files:
- UpdateManagerController: Handles all web UI routes
- UpdateCommand: CLI command for running updates
- UpdateExecutor: Core update execution logic with safety mechanisms
- UpdateChecker: GitHub API integration for version checking
- InstallationTypeDetector: Detects installation type (Git/Docker/ZIP)
- MaintenanceModeSubscriber: Blocks user access during maintenance
- UpdateExtension: Twig functions for update notifications
UI improvements:
- Update notification in navbar for admins when update available
- Confirmation dialogs for update/downgrade actions
- Downgrade-specific text throughout the interface
- Progress page with auto-refresh
2026-01-30 21:36:33 +01:00
Jan Böhmer
3ed62f5cee
Allow to retrieve parameters from conrad
2026-01-26 23:18:32 +01:00
Jan Böhmer
7ab33c859b
Implemented basic functionality to search and retrieve part details
2026-01-26 23:07:01 +01:00
Jan Böhmer
705e71f1eb
Started working on a conrad provider
2026-01-26 20:58:20 +01:00
Jan Böhmer
ae4c0786b2
Bumped to version 2.5.1
Build assets artifact / Build assets artifact (push) Has been cancelled
Docker Image Build / docker (push) Has been cancelled
Docker Image Build (FrankenPHP) / docker (push) Has been cancelled
Static analysis / Static analysis (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Has been cancelled
2026-01-25 21:38:49 +01:00
Niklas
3aad70934b
Support dynamic supplier SPNs in BOM import comments ( #1208 )
...
* Fix: Use correct field name for LCSC supplier part numbers in BOM import
The field mapping system uses 'LCSC SPN' as the target field name for LCSC
supplier part numbers (following the pattern SupplierName + ' SPN'), but the
code in parseKiCADSchematic() was incorrectly checking for 'LCSC'.
This caused LCSC supplier part numbers to be silently ignored and not included
in the BOM entry comments during schematic import.
Changed isset($mapped_entry['LCSC']) to isset($mapped_entry['LCSC SPN']) to
match the actual field name produced by the field mapping system.
* regression test: check for LCSC SPN in comment
* Support dynamic supplier SPNs in BOM import comments
Replace hardcoded LCSC SPN handling with dynamic supplier lookup to support all configured suppliers in BOM import. This allows any supplier defined in
Part-DB to have their SPN fields recognized and included in the BOM entry
comments during BOM import.
* Optimize BOM import by only calculating supplier SPN keys once
2026-01-25 21:32:14 +01:00
Jan Böhmer
e15d12c0bf
Merge remote-tracking branch 'origin/l10n_master'
2026-01-25 21:27:51 +01:00
Copilot
ff7fa67682
Install Yarn via npm instead of Debian packages in Dockerfiles ( #1207 )
...
* Initial plan
* Change yarn installation from Debian packages to npm in both Dockerfiles
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
2026-01-25 21:25:08 +01:00
Jan Böhmer
2b723e05ff
New translations frontend.en.xlf (English)
2026-01-25 21:16:04 +01:00
Jan Böhmer
a8d2204c7f
New translations validators.en.xlf (German)
2026-01-25 21:15:51 +01:00
Jan Böhmer
29050178bd
New translations messages.en.xlf (German)
2026-01-25 21:15:50 +01:00
Jan Böhmer
af61772c88
Revert "Fixed frankenphp docker build"
...
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / docker (push) Waiting to run
Docker Image Build (FrankenPHP) / docker (push) Waiting to run
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
This reverts commit b91cd44926 .
2026-01-25 20:31:10 +01:00
Jan Böhmer
b91cd44926
Fixed frankenphp docker build
2026-01-25 20:15:29 +01:00
Jan Böhmer
c476c98d56
Added clear button to optional part select fields
...
Fixes #1156
2026-01-25 19:12:27 +01:00
Jan Böhmer
fe458b7ff1
When uploading a file, automatically determine the best fitting attachment type
2026-01-25 18:41:11 +01:00
Jan Böhmer
7b8f3aaf62
New translations messages.en.xlf (English)
2026-01-25 18:23:26 +01:00
Jan Böhmer
d93dfd577e
Fail more gracefully when an error occurs in the info providers
2026-01-25 18:22:47 +01:00
Jan Böhmer
4095d0fd49
New translations frontend.en.xlf (Danish)
2026-01-25 10:50:30 +01:00
Jan Böhmer
6d3197497e
New translations security.en.xlf (Danish)
2026-01-25 10:50:26 +01:00
Jan Böhmer
f438a8b4cd
New translations validators.en.xlf (Danish)
2026-01-25 10:50:25 +01:00
Jan Böhmer
56fa2a9396
Updated yarn dependencies
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / docker (push) Waiting to run
Docker Image Build (FrankenPHP) / docker (push) Waiting to run
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
2026-01-25 00:51:57 +01:00
Jan Böhmer
3975a3ba61
Updated composer dependencies
...
We can now use the most recent symfony property-info versions now again, as the bug was fixed in upstream
2026-01-25 00:51:00 +01:00
Jan Böhmer
aa9aedc5fd
Prevent the extra column of the log data tables to be ordered
...
This makes not much sense because its JSON data under the hood, and PostgreSQL errors when trying to do it.
2026-01-25 00:38:11 +01:00
Jan Böhmer
766ba07105
Properly disable the id search by default
...
Build assets artifact / Build assets artifact (push) Has been cancelled
Docker Image Build / docker (push) Has been cancelled
Docker Image Build (FrankenPHP) / docker (push) Has been cancelled
Static analysis / Static analysis (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Has been cancelled
Follow up on PR #1184
2026-01-18 23:48:04 +01:00
Jan Böhmer
d0b827c2c3
Do not use the wrong language for trees when no user is logged in
2026-01-18 23:44:11 +01:00
Jan Böhmer
cd7dbd5f7b
Bumped version to 2.5.0
2026-01-18 22:59:35 +01:00
Jan Böhmer
8efbca798a
Merge remote-tracking branch 'origin/master'
2026-01-18 22:53:40 +01:00
Jan Böhmer
dd6c20780b
Ensure that the ids passed to DBElementRepository::findByIDInMatchingOrder are all ints
...
This might help to diagnose #1188
2026-01-18 22:53:37 +01:00
Lukas Runge
af81e15ef2
Set "Excluded from sim" to false by default for new categories to avoid annoying symbol at kicad parts.
2026-01-18 22:35:37 +01:00
Jan Böhmer
09cc2ba8ff
Use requestSubmit() in form cleanup controller to avoid CSFR issues
...
See #1191
2026-01-18 22:24:17 +01:00
swdee
131023da67
change barcode scan form to use requestSubmit() to fix CSRF token not being generated on submission ( #1191 )
2026-01-18 22:14:17 +01:00
Jan Böhmer
4636aa4e0d
New translations frontend.en.xlf (Hungarian)
2026-01-18 22:00:38 +01:00
Jan Böhmer
006cfd7b5d
New translations frontend.en.xlf (German)
2026-01-18 22:00:37 +01:00
Jan Böhmer
86f53b2956
Update Crowdin configuration file
2026-01-18 21:58:54 +01:00
Jan Böhmer
1923abecdf
New translations messages.en.xlf (English)
2026-01-18 19:50:33 +01:00
Copilot
a3d992a016
Move frontend translations to separate domain to reduce bundle size ( #1197 )
...
* Initial plan
* Create frontend translation files and update configuration
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Fix missing semicolon in password strength controller
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Remove frontend-only translations from messages domain and set frontend as default domain
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
2026-01-18 18:50:38 +01:00
Jan Böhmer
6402cfe619
Enforce to use jquery 3 for now, as something seems to be broken with jquery 4 and webpack
2026-01-18 18:44:59 +01:00
Jan Böhmer
ea71fcd120
Merge remote-tracking branch 'origin/master'
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / docker (push) Waiting to run
Docker Image Build (FrankenPHP) / docker (push) Waiting to run
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
2026-01-18 12:47:11 +01:00
Jan Böhmer
82e3e31277
Only compress assets with a certain minimum size. Otherwise its quite inefficientg
2026-01-18 12:44:33 +01:00