extensions.typo3.org issueshttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues2023-08-15T19:28:29Zhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/586Outdated extension metadata from TER REST API2023-08-15T19:28:29ZElias HäußlerOutdated extension metadata from TER REST API### Summary
When requesting extension metadata through TER REST API, the responded information is not always correct. For example, the latest version of EXT:news supports TYPO3 v11 and v12, whereas the API response shows that only TYPO3...### Summary
When requesting extension metadata through TER REST API, the responded information is not always correct. For example, the latest version of EXT:news supports TYPO3 v11 and v12, whereas the API response shows that only TYPO3 v11 is supported.
### Steps to reproduce
Perform request to https://extensions.typo3.org/api/v1/extension/news and compare the response with extension metadata shown at https://extensions.typo3.org/extension/news.
### Example URL
See above.
### What is the current *bug* behavior?
Extension metadata is incorrect – the shown TYPO3 versions do not include all actually supported TYPO3 versions of the latest available version.
### What is the expected *correct* behavior?
The API response should include all actually supported TYPO3 versions.
### Relevant logs and/or screenshots
Current API response:
```json
[
{
"key": "news",
"downloads": 1747634,
"verified": true,
"version_count": 80,
"meta": {
"packagist": "https://packagist.org/packages/georgringer/news",
"composer_name": "georgringer/news",
"forge_link": "https://github.com/georgringer/news",
"repository_url": "https://github.com/georgringer/news",
"external_manual": "",
"paypal_url": "https://www.paypal.me/GeorgRinger/25",
"tags": [
{
"title": "News"
},
{
"title": "Extbase"
},
{
"title": "Fluid"
},
{
"title": "tags"
},
{
"title": "categories"
},
{
"title": "article"
},
{
"title": "Bestpractice"
},
{
"title": "responsive"
},
{
"title": "best-practice"
},
{
"title": "extension"
},
{
"title": "tx-news"
}
]
},
"current_version": {
"title": "News system",
"description": "Versatile news system based on Extbase \u0026 Fluid and using the latest technologies provided by TYPO3 CMS.",
"number": "11.0.0",
"state": "stable",
"category": "fe",
"typo3_versions": [
11
],
"dependencies": {
"typo3": "11.5.19 - 12.9.99",
"php": "7.4.0 - 8.2.99"
},
"conflicts": [],
"downloads": 0,
"upload_date": 1678361701,
"review_state": 0,
"download": {
"composer": "composer req georgringer/news",
"zip": "https://extensions.typo3.org/extension/download/news/11.0.0/zip",
"t3x": "https://extensions.typo3.org/extension/download/news/11.0.0/t3x"
},
"author": {
"name": "Georg Ringer",
"email": "mail@ringer.it",
"company": ""
}
}
}
]
```_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/580Add permissions for actions2023-03-30T10:10:31ZStefan BusemannAdd permissions for actions### Summary
Some actions need a permission check, that they can only performed by certain users.
### Steps to reproduce
...
### Example URL
### What is the current *bug* behavior?
### What is the expected *correct* behavior?
**Ac...### Summary
Some actions need a permission check, that they can only performed by certain users.
### Steps to reproduce
...
### Example URL
### What is the current *bug* behavior?
### What is the expected *correct* behavior?
**Acceptence Criterias**
* [ ] actions are identified and permissions are added_Ready for sprintStefan BusemannStefan Busemannhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/575Update Environment to TYPO3 11.5.25 and SOLR 10.5.12023-02-15T22:00:16ZStefan BusemannUpdate Environment to TYPO3 11.5.25 and SOLR 10.5.1If I edit a page, I receive an error:
`503
Oops, an error occurred! Event: 0f084705237e4ba38b8d30c44711f7c5
Too few arguments to function ApacheSolrForTypo3\Solr\Domain\Index\Queue\QueueInitializationService::__construct(), 0 passed in...If I edit a page, I receive an error:
`503
Oops, an error occurred! Event: 0f084705237e4ba38b8d30c44711f7c5
Too few arguments to function ApacheSolrForTypo3\Solr\Domain\Index\Queue\QueueInitializationService::__construct(), 0 passed in /home/extensions-prod/ci/releases/52/private/typo3/sysext/core/Classes/Utility/GeneralUtility.php on line 3249 and exactly 1 expected
`
AC:
* Editing of pages throws no error
* Environment is update_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/545Better error messages on extension key validation2022-08-05T22:27:24ZgilbertsoftBetter error messages on extension key validationCurrently the error messages produced during a failing extension key validation are very inaccurate. The error should point to the rule which was failing during the validation.Currently the error messages produced during a failing extension key validation are very inaccurate. The error should point to the rule which was failing during the validation._Ready for sprintJonas GötzeJonas Götzehttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/544Add option for extensions to be composer-only2023-11-23T10:56:21ZThomas LöfflerAdd option for extensions to be composer-only## Background
Some extensions may use external packages installed via composer and don't want to include those libraries into the extension as phar or as complete directories.
## Acceptance criterias
* [ ] Option to mark extension as ...## Background
Some extensions may use external packages installed via composer and don't want to include those libraries into the extension as phar or as complete directories.
## Acceptance criterias
* [ ] Option to mark extension as "composer only"
* [ ] Remove option to download as ZIP
* [ ] Replace download button in list with alternative
* [ ] Marked extensions are not listed at the Extension Manager
* [ ] Ensure that author can only add own (or allowed - how?) packages
* [ ] Ensure uniqueness of package name (deny package, if we have an extension record with same package name)
* [ ] Use packagist API to fetch package details_Ready for sprintTorben HansenTorben Hansenhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/543Integrate extension license handling2022-06-16T10:15:44ZAlexander NitscheIntegrate extension license handling### Problem to solve
Currently, it is not possible to filter extensions by license type, display the license on the TER detail page, or manually filter the TER database by license type. Also, when uploading extensions to TER, the licens...### Problem to solve
Currently, it is not possible to filter extensions by license type, display the license on the TER detail page, or manually filter the TER database by license type. Also, when uploading extensions to TER, the license is not checked on the server side, so you have to rely on the user's responsibility.
### Further details
The license is currently written to composer.json and/or a special extension license file that is not checked by TER.
### Proposal
It would be nice to integrate a license handling into the TER by:
1. implementing a license scanner of TYPO3 extensions
* scanning for license in common files (composer.json, LICENSE(.txt|.rst|.md)?)
* returning license in unified wording (or null)
2. scanning for and storing the licenses of all TYPO3 extensions in TER on-demand
* scanning with license scanner
* option for dry-run
* option for being verbose with grouping extensions by
* no license
* changed license
* same license
* and sub grouping all types by license.
3. scanning for the license on upload to TER on server side
* scanning with license scanner
* rejecting if wrong license
* with response containing all supported licenses and a getting in contact note
* with logging extension details and wrong license
* storing license in TER database
* adapting clients to handle responses (API = Tailor, UI = Upload form of my.typo3.org)
4. showing license in TER list tile and linking license to TYPO3 license page with explanations of all common licenses
5. showing license in TER detail page and linking license to TYPO3 license page with explanations of all common licenses
6. extending TER filter by license type
7. extending TER sorting by license type
### What does success look like, and how can we measure that?
Success can be
1. The license scanner recognizes the license in composer.json and LICENSE* file on manual run.
2. A TER run has been successful in dry-run mode and is listing all extensions with either no license or with changed license (as the extension license DB field is empty on first run).
3. A second TER run without dry-run mode shows the same listing (as the first run was in dry-run mode).
4. A third TER run in dry-run mode is listing all extensions with either no license or with same license (as no modifications have been done between second and third run).
5. A TER upload has been successful and the license field is not empty in the TER DB.
6. An exception is logged on TER side which states which license was rejected on extension upload.
7. The TER frontend filters by/sorts by/displays the license in list view
8. The TER frontend shows the license in detail view_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/540Provide a JSON File with the list of verified Extensions2022-06-16T10:15:45ZmultanifxProvide a JSON File with the list of verified Extensions### Problem to solve
<!--- What problem do we solve? -->
### Further details
<!--- Include use cases, benefits, and/or goals (contributes to our vision?) -->
To highlight/display the verified Extensions in the Extension Manager, the ...### Problem to solve
<!--- What problem do we solve? -->
### Further details
<!--- Include use cases, benefits, and/or goals (contributes to our vision?) -->
To highlight/display the verified Extensions in the Extension Manager, the list of verified Extensions is needed.
Providing an endpoint, where the list of verified extensions is returned as JSON File.
The List should include:
extension_key, latest version number
### What does success look like, and how can we measure that?
There is an URL to a JSON File, which includes the full list of verified extensions.
**Acceptence Criterias**
* [ ] The file could be opened via URL and includes all verified extensions with the latest version number for the given TYPO3 major version
* [ ] The file contains only extensions and versions that matches the given TYPO3 major version
### Links / references
```json
{
"extensions": {
"extension-key-a": "1.0.0",
"extension-key-b": "1.3.0",
}
}
```_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/530Stats for extensions2023-06-15T19:22:13ZmultanifxStats for extensions### Describe the task
For an analysis of the extension updates, I would need some data about the supported TYPO3 versions of the Extensions in the Extension Manager.
I need the information about "works with TYPO3" (https://extensions.t...### Describe the task
For an analysis of the extension updates, I would need some data about the supported TYPO3 versions of the Extensions in the Extension Manager.
I need the information about "works with TYPO3" (https://extensions.typo3.org/ )
from
- 22.03.2021 (3 month after 11.0 Release)
- 21.07.2020 (3 month after 10LTS Release)
- 23.11.2019 (3 month after 10.0 Release)
- 02.01.2019 (3 month after 9LTS Release)
### Further details
I wanted to know, when people are updating their extensions.
### What does success look like, and how can we measure that?
Information about the numbers of extensions for Version 7,8,9,10 and 11
### Links / references
https://extensions.typo3.org/
```sql
SELECT DISTINCT e.ext_key
FROM tx_terfe2_domain_model_extension AS e
JOIN tx_terfe2_domain_model_version AS v ON v.extension = e.uid
JOIN tx_terfe2_domain_model_relation AS r ON r.version = v.uid
WHERE r.relation_key = "typo3" AND r.maximum_version >= 10004000 AND v.upload_date <= UNIX_TIMESTAMP("2020-07-21")
ORDER BY e.ext_key
```_Ready for sprintThomas LöfflermultanifxThomas Löfflerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/528Change lables and add link for version badges2022-08-12T13:47:13ZFrank NäglerChange lables and add link for version badges### Problem to solve
The labels of the TYPO3 should contain the correct wording. e.g. "v10 LTS" and "v8 ELTS", "v7 ELTS" etc.
So use "LTS" for community-supported versions and "ELTS" for the ELTS versions.
Also, it would be cool to lin...### Problem to solve
The labels of the TYPO3 should contain the correct wording. e.g. "v10 LTS" and "v8 ELTS", "v7 ELTS" etc.
So use "LTS" for community-supported versions and "ELTS" for the ELTS versions.
Also, it would be cool to link these labels to:
- https://get.typo3.org
- https://typo3.com/elts
Example:
![bildschirmfoto_2021-06-02_um_16.03.56](/uploads/0c8c45fbfcd8f599eadec7546a052e3d/bildschirmfoto_2021-06-02_um_16.03.56.png)
### Further details
The user gets clear information about the supported versions and can get the direct link to get the TYPO3 version.
### Proposal
change the names and link the labels ;)
### What does success look like, and how can we measure that?
Labels:
- 7 ELTS
- 8 ELTS
- 9 LTS
- 10 LTS
- 11 LTS
since version 6 is out of support, this label should not be displayed or maybe with a hint: "not supported" anymore.
**Acceptence Criterias**
* [ ] Labeles use "LTS" or "ELTS"
* [ ] LTS labels link to https://get.typo3.org
* [ ] ELTS labels link to https://typo3.com/elts
### Links / references_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/519Show Distribution Image in List and Detail view2023-06-15T19:18:33ZStefan BusemannShow Distribution Image in List and Detail view### Problem to solve
As a user, I want to identify distributions, in the list and detail view
**Acceptence Criterias**
* [ ] List view shows an icon or the distribution image
* [x] detail view shows the distribution image
### Lin...### Problem to solve
As a user, I want to identify distributions, in the list and detail view
**Acceptence Criterias**
* [ ] List view shows an icon or the distribution image
* [x] detail view shows the distribution image
### Links / references_Ready for sprintThomas LöfflerThomas Löfflerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/513Sentry Client and Server for development and supervision2022-06-16T10:15:43ZStefan BusemannSentry Client and Server for development and supervisionAs the PO of the site, I want to ensure, that the site runs without any errors
AC:
* Sentry Server is added for local development
* Sentry client is added and
* configured for local development
* configured for production developmentAs the PO of the site, I want to ensure, that the site runs without any errors
AC:
* Sentry Server is added for local development
* Sentry client is added and
* configured for local development
* configured for production development_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/501Extensions Stars - Github/Gitlab2022-06-16T10:15:44ZTomas Norre MikkelsenExtensions Stars - Github/Gitlab### Problem to solve
It's not a problem but an idea.
What about have the GitHub/Gitlab stars for a repository, reflected on the TER as well? This way we would easier get extensions "promoted" within the TER as well.### Problem to solve
It's not a problem but an idea.
What about have the GitHub/Gitlab stars for a repository, reflected on the TER as well? This way we would easier get extensions "promoted" within the TER as well._Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/482GDPR Admin function2022-06-16T10:15:45ZStefan BusemannGDPR Admin functionAs a TER admin I want to be able, to remove meta data of extensions.
UAC:
* Edit view of Extension offers the option to remove the author info
* List view displays "abandoned_extensions" as author
* Search function respects the changeAs a TER admin I want to be able, to remove meta data of extensions.
UAC:
* Edit view of Extension offers the option to remove the author info
* List view displays "abandoned_extensions" as author
* Search function respects the change_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/456Extensionkey renew fails2020-07-21T10:02:19ZStefan BusemannExtensionkey renew failsvia ORTS: Ticket#20200716609000021
> Hi.
>
> Got the email last night on my key that is going to expire: birdiebook
> I logged in and clicked at the "renew" logo and got and error shown: "Opps an error has occurred".
>
> Could you l...via ORTS: Ticket#20200716609000021
> Hi.
>
> Got the email last night on my key that is going to expire: birdiebook
> I logged in and clicked at the "renew" logo and got and error shown: "Opps an error has occurred".
>
> Could you look into this for me?
>
> Thanks.
>
>
> Den tor. 16. jul. 2020 kl. 04.01 skrev <maintenance@typo3.org>:
> Dear extension owner,
>
> You have 1 extension key[s] in your repository (username: "tomasnorre") which have never had an upload or weren't touched for one year.
> Due to cleanup process we want to inform you that these extension keys will expire in 30 days unless you take action (see below):
>
>
> # birdiebook
>
>
> Log into extensions.typo3.org and head to https://extensions.typo3.org/my-extensions/ to get a list of these keys and available actions:
>
> * Releasing the extension key to the public, so another developer can use this key
> * Keep the extension key (the process of expiration will be started again in one year)
> * Upload a version of this extension to the TER
>
> Warning: If no action is taken the extension keys listed above will be released to the community (deleted from the list of registered keys). Extension keys with publicly released extension versions in the TER won't be affected.
AC:
* [ ] Renew is possible_Ready for sprintTomas Norre MikkelsenTomas Norre Mikkelsenhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/450Button to packagist.org is shown but links to start page2020-04-28T12:15:30ZThomas LöfflerButton to packagist.org is shown but links to start pageWhen there is no composer name, the button to packagist is shown anyway.
See: https://extensions.typo3.org/extension/cc_ipauthWhen there is no composer name, the button to packagist is shown anyway.
See: https://extensions.typo3.org/extension/cc_ipauth_Ready for sprintAlexander NostadtAlexander Nostadthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/446Make "Install extension via composer command" the default in section Installa...2020-04-21T12:51:35ZAlexander NostadtMake "Install extension via composer command" the default in section InstallationAs of now "Install extension via ZIP file" is shown first. However, composer usage is encouraged and therefore this should be the first description people see.
Acceptance Criteria:
* [x] "Install extension via composer command" is show...As of now "Install extension via ZIP file" is shown first. However, composer usage is encouraged and therefore this should be the first description people see.
Acceptance Criteria:
* [x] "Install extension via composer command" is shown first in the Installation section_Ready for sprintAlexander NostadtAlexander Nostadthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/445ViewHelper or Partial / Section for the Buttons on the detail page2020-04-21T12:53:43ZAlexander NostadtViewHelper or Partial / Section for the Buttons on the detail pageEach button on the detail page has a lot of things in common.
* render if exists only
* rel=nofollow and target=_blank
* an icon
* a text
A ViewHelper, partial or section with following arguments would increase the readability in my op...Each button on the detail page has a lot of things in common.
* render if exists only
* rel=nofollow and target=_blank
* an icon
* a text
A ViewHelper, partial or section with following arguments would increase the readability in my opinion:
* label
* icon
* uri
**Example**
*Before*
```
<f:if condition="{extension.forgeLink}">
<f:link.external class="btn btn-secondary btn-block" rel="nofollow" uri="{extension.forgeLink}" target="_blank">
<i class="fa fa-hand-o-right"></i> Found an Issue?
</f:link.external>
</f:if>
```
*After*
```
<t3ext:externalLink label="Found an Issue?" uri="{extension.forgeLink}" icon="fa-hand-o-right"/>
```
**Acceptance Criteria:**
* [x] proper partial
* [x] current link buttons on the detail page are rendered using the new partial_Ready for sprintAlexander NostadtAlexander Nostadthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/441[EPIC] Activate TER release by git tagging2021-10-25T21:32:20ZThomas Löffler[EPIC] Activate TER release by git tagging# Requirements for extension owner
* The extension owner **must** have added a link to the public repository in the TER settings for the extension
* The extension owner **must** have added a web hook to the repository (GitHub, GitLab, B...# Requirements for extension owner
* The extension owner **must** have added a link to the public repository in the TER settings for the extension
* The extension owner **must** have added a web hook to the repository (GitHub, GitLab, Bitbucket, etc.)
* The extension **must** contain a valid composer.json
* The extension **must** require TYPO3 in the composer.json
* The composer.json **must** contain a title, a description and the extension key
## No ext_emconf.php anymore?
What important information is included in ext_emconf.php currently?
* `title` => `title` in composer.json
* `description` => `description` in composer.json
* `author`, `author_company` and `author_email` => `authors` section in composer.json
* `version` => Git tag
* `category` => Needed? Can be provided by description or keywords. Often an extension touches many categories.
* `state` => Needed?
* `uploadfolder` => Needed?
* `clearCacheOnLoad` => Should always be true, shouldn't it?
* `constraints` => can be handled by the `require` section in composer.json
## The check for a new release
1. TER gets information about new release by the web hook
1. TER fetches the information and creates records (for search and for populating data of e.g. documentation)
1. TER updates extensions.xml file
## Installation in TYPO3 has no ext_emconf.php
* When downloaded, the Extension Repository will add an ext_emconf.php generated by the information provided by composer.json_Ready for sprinthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/438Add link to packagist.org/my/ext/ on Detail page2020-04-09T19:49:37ZAlexander NostadtAdd link to packagist.org/my/ext/ on Detail pageSince not every author keeps his TER up to date, a link to the detail page on packagist.org would come in handy. As we have the package name already, it shouldn't be very time consuming to add such a button.Since not every author keeps his TER up to date, a link to the detail page on packagist.org would come in handy. As we have the package name already, it shouldn't be very time consuming to add such a button._Ready for sprintAlexander NostadtAlexander Nostadthttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/417Ensure valid composer.json for extensions2022-04-04T17:31:03ZspetersEnsure valid composer.json for extensions### Problem to solve
* Some extensions do not include a composer.json.
* Some extensions do not have a valid composer.json or include a composer.json with deprecations.
* Information about composer.json (for extensions) is not consisten...### Problem to solve
* Some extensions do not include a composer.json.
* Some extensions do not have a valid composer.json or include a composer.json with deprecations.
* Information about composer.json (for extensions) is not consistent and not regularly updated.
To further propagate use of Composer and use of best practices for composer.json and to ensure stressless installation and
maintainance of TYPO3 sites, it might be useful to do some basic checks on extensions.
### Example
bp_pagetree
```
$ composer validate
```
```
Deprecation warning: replace.bp_pagetree is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9]([_.-]?[a-z0-9]+)*". Make sure you fix this as Composer 2.0 will error.
```
```
composer --version
Composer version 1.9.1 2019-11-01 17:20:17
```
composer.json:
```
"replace": {
"bp_pagetree": "self.version",
"typo3-ter/bp_pagetree": "self.version"
},
```
See also:
* Issue about deprecations in composer.json of core extensions: https://forge.typo3.org/issues/89392
* The patch drops the replace section entirely: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61944
### Further details
long term goal:
* all TYPO3 extensions listed on extensions.typo3.org include valid composer.json
* documentation for extension authors is consistent and easily findable (beyond scope of this issue, should be handled in documentation)
### Proposal
Regularly run `composer validate` on extensions listed on extensions.typo3.org.
### What does success look like, and how can we measure that?
**Acceptence Criterias**
* [ ] Extension authors are regularly notified about problems (or possible improvements) with their extensions
* [ ] If problems are detected, the problems are listed for the extensions
* [ ] Best practices for composer.json are documented and regularly updated, e.g. on https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ComposerJson/Index.html and in Installation & Upgrade Guide
### Related
* core issue: https://forge.typo3.org/issues/89392
* documentation issue: https://github.com/TYPO3-Documentation/TYPO3CMS-Reference-CoreApi/issues/641
* documentation page for composer.json: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ComposerJson/Index.html_Ready for sprint