extensions.typo3.org issueshttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues2023-06-15T19:22:13Zhttps://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/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/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/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/546Validate composer.json on extension upload2022-01-15T20:43:22ZThomas LöfflerValidate composer.json on extension upload## Background
TYPO3 moves more and more into "composer first". [This feature](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/11.4/Feature-94996-ConsiderAllComposerInstalledExtensionsAsActive.html) is describing it best.<br...## Background
TYPO3 moves more and more into "composer first". [This feature](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/11.4/Feature-94996-ConsiderAllComposerInstalledExtensionsAsActive.html) is describing it best.<br>
In TER we still validate only the ext_emconf.php file and do only check the existence of a composer.json and some of its content.
## ACs
* [ ] Add a check for a valid composer.json on extension upload (similar to [this minimal composer.json](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/ComposerJson/Index.html#minimal-composer-json))
* [ ] name is set
* [ ] description is set
* [ ] license is set
* [ ] type is `typo3-cms-extension`
* [ ] extras/typo3-cms/extension-key is set
* [ ] requires `typo3/cms-core`
* [ ] Return a warning if composer.json is invalid or not existing on extension upload until date XX.XX.2022
* [ ] Return an error and deny extension upload after date XX.XX.2022Backloghttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/547Use composer/semver for version validation2022-09-09T10:31:24ZgilbertsoftUse composer/semver for version validationWe should consider to use composer/semver for the version validation.We should consider to use composer/semver for the version validation.Backloghttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/548TER REST API throws exception on TYPO3 version although the version is given2022-05-15T19:23:44ZChristian BuelterTER REST API throws exception on TYPO3 version although the version is givenWhen uploading the Extension "access_keys" via tailor the API throws an exception that no full version for TYPO3 Core is given although a version is given.
Uploading manually into the TER works.
## Exception
```
array (
0 => '{"stat...When uploading the Extension "access_keys" via tailor the API throws an exception that no full version for TYPO3 Core is given although a version is given.
Uploading manually into the TER works.
## Exception
```
array (
0 => '{"status":400,"code":1604923182,"error":"invalid_request","error_description":"No full version for TYPO3 Core given."}',
)
```
The exeception seems to be generated here:
https://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/blob/develop/extensions/ter_rest/Classes/Service/Extension/VersionService.php#L313
## em_conf.php
The full `em_conf.php` is:
https://gitlab.com/codingms/typo3-public/access_keys/-/blob/main/ext_emconf.php
```
<?php
$EM_CONF['access_keys'] = [
'title' => 'Access-Keys for Backend',
'description' => '',
'category' => 'backend',
'author' => 'Thomas Deuling',
'author_email' => 'typo3@coding.ms',
'state' => 'alpha',
'internal' => '',
'uploadfolder' => '0',
'createDirs' => '',
'clearCacheOnLoad' => 0,
'version' => '1.0.1',
'constraints' => [
'depends' => [
'typo3' => '10.4.0-11.5.99',
],
'conflicts' => [
],
'suggests' => [
],
],
];
```BacklogOliver BartschOliver Bartschhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/549Allow to remove extension author from public listing2023-06-15T19:21:14ZStefan BusemannAllow to remove extension author from public listingAs an author, I want to be able, to be removed from public listing
AC:
* Extension Admins can easiely remove an author name of an extension
* Extension remains visible in the the listingAs an author, I want to be able, to be removed from public listing
AC:
* Extension Admins can easiely remove an author name of an extension
* Extension remains visible in the the listingJuly 2023Stefan BusemannEphraim HärerStefan Busemannhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/554Question: REST API - query extensions2022-05-17T17:12:15ZOliver HaderQuestion: REST API - query extensions```
GET /api/v1/extension?page=1&per_page=50&filter%5Btypo3_version%5D=10
```
I was using above endpoint and foundation in order to fetch all extensions that
* are at least compatible with TYPO3 v10 (`typo3_version>=10`)
* that referen...```
GET /api/v1/extension?page=1&per_page=50&filter%5Btypo3_version%5D=10
```
I was using above endpoint and foundation in order to fetch all extensions that
* are at least compatible with TYPO3 v10 (`typo3_version>=10`)
* that reference to a composer name (`meta/composer_name<>''`)
Thanks in advance for any feedback, how to retrieve that data.BacklogOliver BartschOliver Bartschhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/555Provide TOP 10 statistics for TYPO3 newsletter2022-05-15T19:23:29ZAlexander NitscheProvide TOP 10 statistics for TYPO3 newsletter### Problem to solve
The newsletter has space to fill in every edition and the reader is expecting interesting topics around TYPO3.
### Proposal
Integrate TER statistics into the newsletter to inspire the reader. It would be cheap to ...### Problem to solve
The newsletter has space to fill in every edition and the reader is expecting interesting topics around TYPO3.
### Proposal
Integrate TER statistics into the newsletter to inspire the reader. It would be cheap to achieve but an interesting part nevertheless and it further increases traffic at the store. For example, it would be interesting to have the following statistics
1. the top 10 of extensions regarding download rates for the current LTS only (with comparison to ranking of last newsletter)
2. the top 10 of extensions regarding download rates summarized over all versions of ELTS or LTS series (with comparison to ranking of last newsletter)
3. the top 10 of extensions regarding the increase of download rates for the current LTS only (having passed a certain threshold, with comparison to ranking of last newsletter)
4. the top 10 of extensions regarding the increase of download rates summarized over all versions of current ELTS or LTS (having passed a certain threshold, with comparison to ranking of last newsletter)
presented in tables like the book bestseller tables and linking the extension names into the store.
### What does success look like, and how can we measure that?
Increased traffic in TER with a benefit for the most popular extensions. Guidance for new TYPO3 community members in choosing the right solution for their specific challenges.
### Additional notes
The statistics could be also published automatically as content elements at the TER page in perspective.Backloghttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/557Feature request: RSS feed for new/updated extensions2023-09-18T11:49:34ZWolfgang WagnerFeature request: RSS feed for new/updated extensionsIt would be great if the TER could provide an RSS feed to track all changes (new extensions, updated extensions).It would be great if the TER could provide an RSS feed to track all changes (new extensions, updated extensions).BacklogWolfgang WagnerWolfgang Wagnerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/560Allow declaring multiple authors / multiple donation links2022-08-12T12:26:46ZNikita HovratovAllow declaring multiple authors / multiple donation links### Problem to solve
Sometimes the extension maintainer changes, but the original author should still be displayed as one of the extension authors.
If there are multiple authors, it makes sense to allow for multiple donation links as wel...### Problem to solve
Sometimes the extension maintainer changes, but the original author should still be displayed as one of the extension authors.
If there are multiple authors, it makes sense to allow for multiple donation links as well.
<!--- What problem do we solve? -->
### Further details
Other platforms like packagist and Github already allow multiple authors / donation links. The TER should allow it as well.
<!--- Include use cases, benefits, and/or goals (contributes to our vision?) -->
### Proposal
The composer.json file already contains all needed information in the keys "authors" and "funding". In addition, GitHub funding links could be generated from the .github/FUNDING.yml.
<!--- How are we going to solve the problem? Try to include the user journey! -->
### What does success look like, and how can we measure that?
Authors and donation links are automatically read from composer.json and/or FUNDING.yml and displayed accordingly in the extension detail view.
<!--- Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this -->
### Links / references
Example multiple donation links for the Mask extension: https://packagist.org/packages/mask/maskhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/561Add checkbox in form to sign the CoC on extension upload2022-08-17T08:18:41ZThomas LöfflerAdd checkbox in form to sign the CoC on extension uploadAC:
* [ ] Checkbox is added on extension upload form
* [ ] If checkbox is not checked, the extension upload won't workAC:
* [ ] Checkbox is added on extension upload form
* [ ] If checkbox is not checked, the extension upload won't workhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/566Verified Extensions v122023-01-25T15:01:34ZTomas Norre MikkelsenVerified Extensions v12### Problem to solve
When verified extensions like https://extensions.typo3.org/extension/sf_event_mgt are uploaded in a version v12 compatible version only. It should still be possible to mark it as verified in the TYPO3 Backend.
Curr...### Problem to solve
When verified extensions like https://extensions.typo3.org/extension/sf_event_mgt are uploaded in a version v12 compatible version only. It should still be possible to mark it as verified in the TYPO3 Backend.
Currently, this is not possible, as the v12 isn't LTS version yet, and therefore I cannot be saved in the TCA as the select option value is empty.
Response from @frank regaring it:
> Yes, I think showing the compatibility version is a significant benefit. Maybe tag the version with "12" and later with "12 LTS" to differentiate here. Making the fact "compatibility" more visible is very important for early adoption. This could help projects may migrate earlier and easier.
### What does success look like, and how can we measure that?
Extensions already verified for v11, should also be possible to verified for v12 releases, also before v12 is marked as LTS.
**Acceptence Criterias**
* [ ] It should be possible to mark a v12 compatibility only version of an extension as verified.
### Links / referencesThomas LöfflerThomas Löfflerhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/578Add client side validation for version description2023-03-15T14:20:32ZAlexander GreinAdd client side validation for version descriptionSince the sql injection filter of the extension upload form seems to be very restrictive a client side validation of the version description input field would be very helpful.
Otherwise it's always a try and error game to get a new vers...Since the sql injection filter of the extension upload form seems to be very restrictive a client side validation of the version description input field would be very helpful.
Otherwise it's always a try and error game to get a new version uploaded.https://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/581Login via my.typo3.org not possible2023-03-31T14:30:46ZOliver MelleLogin via my.typo3.org not possible### Summary
The OAuth2 callback for the login on extensions.typo3.org returns error 503.
### Steps to reproduce
1. Select "Login via my.typo3.org"
2. Enter your login data for my.typo3.org
### URL
https://extensions.typo3.org/oauth2/ca...### Summary
The OAuth2 callback for the login on extensions.typo3.org returns error 503.
### Steps to reproduce
1. Select "Login via my.typo3.org"
2. Enter your login data for my.typo3.org
### URL
https://extensions.typo3.org/oauth2/callback?oauth2-provider=keycloak&logintype=login&state=dd26e890fd386d45b22485ae3928f848&session_state=15ce48e1-659f-4a02-b5d9-8b87a2895acf&code=9fb8f5c6-7f3d-426c-9021-d4605fd92127.15ce48e1-659f-4a02-b5d9-8b87a2895acf.fefaa690-9f55-4439-b376-c31588b11bec
### What is the current *bug* behavior?
Error 503 occurs with the message "Oops, an error occurred! Event: e9ff8e9b0b4f48ae99437cbb4a1e6ab4"
### What is the expected *correct* behavior?
Be logged in into extensions.typo3.org
### Additional information
The account is new. I never visited extensions.typo3.org before.
Browser User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/111.0Oliver MelleOliver Mellehttps://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/587Error 403 when trying to refresh access token via REST API2023-08-15T19:26:28ZElias HäußlerError 403 when trying to refresh access token via REST API### Summary
I try to refresh an access token via TER REST API. The access token was generated with permissions `extension:read` and `extension:write`. All other endpoints work smoothly, but when requesting `/auth/token/refresh`, I keep ...### Summary
I try to refresh an access token via TER REST API. The access token was generated with permissions `extension:read` and `extension:write`. All other endpoints work smoothly, but when requesting `/auth/token/refresh`, I keep getting a 403 response.
Side note: I am able to refresh the exact same token via TER UI at https://extensions.typo3.org/my-access-tokens/refresh.
### Steps to reproduce
1. Create access token with permissions `extension:read` and `extension:write`
2. Try to refresh access token via TER REST API (see curl example below)
### Example URL
Example request:
```bash
curl -X POST https://extensions.typo3.org/api/v1/auth/token/refresh -H "Authorization: Bearer xxx" -d "token=yyy"
```
### What is the current *bug* behavior?
Error 403 response, token is not refreshed.
### What is the expected *correct* behavior?
201 response as written in the [API specification](https://extensions.typo3.org/faq/rest-api#/Auth/refreshToken).
### Relevant logs and/or screenshots
API response:
```
{"status":403,"code":1602754893,"error":"access_denied","error_description":"The user lacks necessary permissions for this endpoint."}
```https://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/594Exclude private folder from VCS2023-08-19T12:26:58ZTorben HansenExclude private folder from VCSThe `private` folder in the project root contains project specific assets such as `fileadmin` or the `typo3temp` folder, which are symlinked to the `public` folder. All folders in `private` should be excluded from version control.The `private` folder in the project root contains project specific assets such as `fileadmin` or the `typo3temp` folder, which are symlinked to the `public` folder. All folders in `private` should be excluded from version control.Torben HansenTorben Hansenhttps://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/issues/596Extension RSS feed should create useful links2023-10-25T08:44:41ZMarkus KleinExtension RSS feed should create useful links### Summary
The 50 latest extensions RSS feed generates URLs to extensions, but keep the type= parameter of the RSS feed itself. Hence, the URLs are invalid.
### Steps to reproduce
Look at https://extensions.typo3.org/?type=837
See g...### Summary
The 50 latest extensions RSS feed generates URLs to extensions, but keep the type= parameter of the RSS feed itself. Hence, the URLs are invalid.
### Steps to reproduce
Look at https://extensions.typo3.org/?type=837
See generated URL https://extensions.typo3.org/extension/focuspoint?type=837
### What is the current _bug_ behavior?
Generated detail URLs for extensions are invalid
### What is the expected _correct_ behavior?
URLs must be without `type` parameter.
### Possible fixes
https://git.typo3.org/services/t3o-sites/extensions.typo3.org/ter/-/blob/develop/extensions/ter_fe2/Resources/Private/Partials/ExtensionList.rss#L6
Adjust this to a fixed `type=0` .