Changes based on jbtronics' review of PR #1241:
- Rename kicad_export -> eda_visibility (entities, forms, templates,
translations, tests) with nullable bool for system default support
- Merge two database migrations into one (Version20260211000000)
- Rename createCachedJsonResponse -> createCacheableJsonResponse
- Change bool $apiV2 -> int $apiVersion with version validation
- EDA visibility field only shown for part parameters, not other entities
- PopulateKicadCommand: check alternative names of footprints/categories
- PopulateKicadCommand: support external JSON mapping file (--mapping-file)
- Ship default mappings JSON at contrib/kicad-populate/default_mappings.json
- Add system-wide defaultEdaVisibility setting in KiCadEDASettings
- Add KiCad HTTP Library v2 spec link in controller docs
New setting "Datasheet field links to PDF" in KiCad EDA settings.
When enabled (default), the datasheet field resolves to the actual
PDF attachment URL. When disabled, it links to the Part-DB page
(old behavior). Configurable via settings UI or EDA_KICAD_DATASHEET_AS_PDF env var.
- Add KiCad API v2 endpoints (/kicad-api/v2) with volatile field support
for stock and storage location (shown but not saved to schematic)
- Add kicad_export flag to Orderdetail entity for per-supplier SPN control
(backward compatible: if no flag set, all SPNs exported as before)
- Add EDA completeness indicator column in parts datatable (bolt icon)
- Add ?minimal=true query param for faster category parts loading
- Improve category descriptions (use comment instead of URL when available)
- Improve BOM importer multi-footprint support: merge entries by Part-DB
part ID when linked, tracking footprint variants in comments
- Fix KiCost manf/manf# fields always present (not conditional on orderdetails)
- Fix duplicate getEdaInfo() call in shouldPartBeVisible
- Consolidate supplier SPN and KiCost field generation into single loop
Users can now select multiple parts in any parts table and batch-edit
their EDA/KiCad fields (symbol, footprint, reference prefix, value,
visibility, exclude from BOM/board/sim). Each field has an "Apply"
checkbox so users control exactly which fields are changed.
Add a kicad_export checkbox to parameters, allowing users to control
which specifications appear as fields in the KiCad HTTP library API.
Parameters with kicad_export enabled are included using their formatted
value, without overwriting hardcoded fields like description or Stock.
Changes based on maintainer feedback from PR #1217:
1. Add yarn install/build steps to update process
- Added yarn availability check in validateUpdatePreconditions
- Added yarn install and yarn build steps after composer install
- Added yarn rebuild to rollback process
- Updated total steps count from 12 to 14
2. Add environment variables to disable web features
- DISABLE_WEB_UPDATES: Completely disable web-based updates
- DISABLE_BACKUP_RESTORE: Disable backup restore from web UI
- Added checks in controller and template
3. Extract BackupManager service
- New service handles backup creation, listing, details, and restoration
- UpdateExecutor now delegates backup operations to BackupManager
- Cleaner separation of concerns for future reuse
4. Merge upstream/master and resolve translation conflicts
- Added Conrad info provider and generic web provider translations
- Kept Update Manager translations
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.
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
* Fixed Typos and mistranslations in GDPR mode (DSGVO Modus)
Fixed Typo enviroment
* Create BuerklinProvider based on LCSCProvider
* Update GET URLs for Buerklin
* Add getToken function analog to Octopart
* Remove line break in docs
* Remove trailing / in ENDPOINT_URL
Use Autowire to use values of environment variables
Remove unwanted Code from LCSC-Provider
Map json response to DTO variables
* Fix variable reference errors ($term → $keyword)
Ensure array keys exist before accessing them
Optimize API calls to prevent unnecessary requests
Improve error handling for better debugging
Enhance readability and maintainability of functions
* Bumped version v1.16.2
* Update BuerklinProvider.php
Change Order of Capabilities
* Change order of capabilities in LCSCProvider.php
* Change order of capabilities in PollinProvider.php
* Try to fix getToken BuerklinProvider.php
* Add ip_buerklin_oauth to knpu_oauth2_client.yaml
* Update buerklin authorize URL in knpu_oauth2_client.yaml
* Update knpu_oauth2_client.yaml
* Adapt Buerklin InfoProvider to new Settings mechanism
* According to Buerklin API spec it's really 'token' as urlAuthorize endpoint
* Rückgabewert ist schon ein Array deshalb kein toArray
* Fix API-Access, add image, price and parameter retrieval (Datasheets not yet implemented because it is not available in the API response)
* Add Caching of requests, use default query params (language and currency) using a function, Fix Footprint assignment, translate German code comments
* Remove DATASHEET from ProviderCapabilities because the Bürklin API doesn't include Datasheet URLs at the moment, more reverse engineering needed
* Update BuerklinSettings with existing translatable strings
* Improve Buerklin Settings Page
* Added Translation strings for Buerklin Info Provider
* Improve Buerklin Provider help message
* Adapt Buerklin-provider to new settings system
* Adapt Buerklin-provider to new settings system: add missing instance of BuerklinSettings
* Improve Compliance Parameters parsing
* Remove language-dependent RoHs Date code and use shortened ISO format, Add Customs Code without parseValueField
* Fix no results for keyword search
* Implement BatchInfoProviderInterface for Buerklin Provider
* Rename searchBatch to searchByKeywordsBatch to correctly implement BatchInfoProviderInterface
* Fix Bulk Info Provider Import for Buerklin
* Tranlate comments to English to prepare for Pull-Request
* Add phpUnit unit tests for BuerklinProvider
* Try fixing PHPStan issues
* Remove OAuthTokenManager from BuerklinProviderTest
Removed OAuthTokenManager mock from BuerklinProviderTest setup.
* Fix Settings must not be instantiated directly
* Fix UnitTest for value_typ
* edd5fb3319 (r2622249199)
Revert "Change order of capabilities in LCSCProvider.php"
This reverts commit dfd6f33e52.
* edd5fb3319 (r2622249861)
Revert "Change order of capabilities in PollinProvider.php"
This reverts commit fc2e7265be.
* Use language setting for ProductShortURL
* Update default language for Buerklin provider to English in documentation
* Add suggested improvements from SonarQube
* Removed unused use directives
* Revert SonarQube proposed change. Having more than one return is acceptable nowadays
* Improve getProviderInfo: disable oauth_app_name, add settings_class, improve disabled_help
* Implement retrieveROPCToken as proposed in https://github.com/Part-DB/Part-DB-server/pull/1151#discussion_r2622976206
* Add missing ) to retrieveROPCToken
* add use OAuthTokenManager and create instance in constructor
* Revert the following commits that tried to implement getToken using OAuthTokenManager
Revert "add use OAuthTokenManager and create instance in constructor"This reverts commit 2a1e7c9b0974ebd7e082d5a2fa62753d6254a767.Revert "Add missing ) to retrieveROPCToken"This reverts commit 8df5cfc49e.
Revert "Implement retrieveROPCToken as proposed in https://github.com/Part-DB/Part-DB-server/pull/1151#discussion_r2622976206"
This reverts commit 66cc732082.
* Remove OAuthTokenManager leftovers
* Disable buerklin provider if settings fields are empty
* Improved docs
* Added TODO comment
---------
Co-authored-by: root <root@part-db.fritz.box>
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
* Initial plan
* Initial plan for replacing entity type names with placeholders
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Replace entity type names with synonym placeholders in English translations
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Add more synonym placeholders for storage location, project, and part patterns
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Update tree navigation labels with synonym placeholders
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Fix remaining entity type placeholders identified in code review
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Fix placeholder syntax: use [Type]/[[Type]] instead of {type}/{{type}} and add German translations
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Fix German translation to avoid awkward word concatenation with placeholder
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Use capitalized placeholders in German translations (nouns are always capitalized in German)
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Fixed length menu for datatable views
* Capitalize placeholders at the beginning of sentences/titles in English translations
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Ensure that synonym placeholders get cached on a per locale level
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
* Initial plan
* Replace placeholder syntax for type synonyms to be more DX friendly
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Update translation files to use new placeholder syntax
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Use mb_strtoupper with mb_substr for Unicode consistency
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
* Make placeholder generation right
* Removed obsolete transltions
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>