Page MenuHomePhabricator

LucasWerkmeister (Lucas Werkmeister)
volunteer

Projects (16)

Today

  • No visible events.

Tomorrow

  • No visible events.

Monday

  • No visible events.

User Details

User Since
Jun 5 2016, 4:36 PM (496 w, 5 d)
Availability
Available
IRC Nick
lucaswerkmeister
LDAP User
Lucas Werkmeister
MediaWiki User
Lucas Werkmeister [ Global Accounts ]

Private account of @Lucas_Werkmeister_WMDE (he/him, Berlin timezone). Anything I do here is on volunteer time, even if it looks work-related :)

Recent Activity

Yesterday

LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).
  • In Magnus’ Rust library, request_builder() takes a single params hashmap that goes into the query for GET requests and into the body for all other requests. If you want query params for POST requests, you presumably have to put them into the URL yourself, though I don’t know if there’s an example for that given how rarely it comes up.
  • In MediaWiki core’s mw.Rest JS library, post and other non-GET methods take a path string and a body object. If you want query params, you need to put them into the path yourself, and we can actually see that in GrowthExperiments’ fetchUserImpactData().
Fri, Dec 12, 11:30 PM · m3api
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

Plot twist: it turns out that, unlike in the action API, parameters are absolutely not interchangeable between the query string and the POST body in the REST API. (In the Action API, a few parameters have to go into the body, and origin, crossorigin and centralauthtoken have to be in the query string, but everything else can be in either place. m3api puts everything except action and origin/crossorigin in the body.) There are POST endpoints with query parameters (e.g. /growthexperiments/v0/user-impact/{user}, /ipinfo/v0/revision/{id}, /checkuser/v0/temporaryaccount/{name}; none in MediaWiki core AFAICT), and trying to specify those query parameters in the body will yield an error.

Fri, Dec 12, 11:18 PM · m3api

Sun, Dec 7

LucasWerkmeister updated subscribers of T411325: Introduce m3api extension package to use the REST API (m3api-rest).
Sun, Dec 7, 12:35 AM · m3api
LucasWerkmeister updated subscribers of T411325: Introduce m3api extension package to use the REST API (m3api-rest).

I ran a poll on fedi – options 2 and 3 each got 3/5 votes (so one person voted for both), option 1 got none, nobody suggested anything else. @Legoktm raised the good point that option 3 is best for usage with TypeScript, because you can enforce correct parameters (and, in the case of JSON-returning methods, provide more information about the response structure) with a lot of overloads like:

Sun, Dec 7, 12:35 AM · m3api

Sat, Dec 6

LucasWerkmeister created T411937: MediaWiki REST API GET /page/{title}/bare returns unnormalized URL in html_url.
Sat, Dec 6, 7:14 PM · MW-Interfaces-Team, MediaWiki-REST-API
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

Or, alternatively, the path is always a string, but we supply a template literal tag function that helps you encode the title correctly:

import { getHtml, path } from 'm3api-rest';

const title = 'AC/DC';
const html = await getHtml( session, path`/v1/page/${title}/html` ); // evaluates to '/v1/page/AC%2FDC/html'

On second thought, I think that’s actually much nicer. (Also, I’m sure that function already exists elsewhere, but we should still make it available from m3api-rest.)

Sat, Dec 6, 12:07 AM · m3api

Thu, Dec 4

LucasWerkmeister created T411738: MediaWiki REST API URLs with non-normalized title param and non-title path params redirect to incomplete URL (and then complain it’s invalid).
Thu, Dec 4, 12:16 AM · MW-Interfaces-Team, MediaWiki-REST-API

Wed, Dec 3

LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

I’ve set up the repository at https://gitlab.wikimedia.org/repos/m3api/m3api-rest using cookiecutter-m3api; actual content will follow over the coming days :)

Wed, Dec 3, 7:48 PM · m3api

Tue, Dec 2

LucasWerkmeister added a comment to T401753: Planet removes <summary> tags inside <details> [fixed by upgrading to Debian Trixie].

Weren’t we installing a custom Rawdog fork anyway?

Tue, Dec 2, 1:05 PM · Wikimedia-Planet

Mon, Dec 1

LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

other supported bodies would include plain objects (JSON)

Mon, Dec 1, 12:33 AM · m3api

Sun, Nov 30

LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

Or, alternatively, the path is always a string, but we supply a template literal tag function that helps you encode the title correctly:

Sun, Nov 30, 4:49 PM · m3api
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

I wonder if the library should include support for formatting the URL path – turning /v1/page/{title}/history + { title: 'AC/DC' } into /v1/page/AC%2FDC/history with a properly escaped / in the title. Probably yes, if I can think of a good interface for it?

Sun, Nov 30, 4:46 PM · m3api
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

Suggested usage from m3api-oauth2:

Sun, Nov 30, 4:39 PM · m3api
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

I wonder if the library should include support for formatting the URL path – turning /v1/page/{title}/history + { title: 'AC/DC' } into /v1/page/AC%2FDC/history with a properly escaped / in the title. Probably yes, if I can think of a good interface for it?

Sun, Nov 30, 4:26 PM · m3api
LucasWerkmeister added a comment to T411325: Introduce m3api extension package to use the REST API (m3api-rest).

If anyone wants to help me bikeshed names, my current ideas are:

Sun, Nov 30, 4:21 PM · m3api
LucasWerkmeister created T411325: Introduce m3api extension package to use the REST API (m3api-rest).
Sun, Nov 30, 4:14 PM · m3api

Tue, Nov 25

LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

I’m working around this for now on the main branch by checking out the commit just before the “bad” one.

Tue, Nov 25, 8:47 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api

Mon, Nov 24

LucasWerkmeister added a comment to T410883: Support HTTP QUERY method as standard alternative to Promise-Non-Write-API-Action header.

The good news: an extremely rudimentary, but working version of this can be got with a laughably short patch:

Mon, Nov 24, 8:15 PM · MediaWiki-Action-API, MW-Interfaces-Team
LucasWerkmeister added a comment to T404513: Support Promise-Non-Write-API-Action in m3api?.

On the other hand, if I do nothing, then it’s up to the application author to know when QUERY will work or not, and I don’t have to change anything in the library. (Both browsers and Node.js already let you send QUERY – or any other fictional method – using fetch() today, which is a bit weird but I’m not complaining.)

Mon, Nov 24, 7:04 PM · m3api
LucasWerkmeister updated the task description for T410883: Support HTTP QUERY method as standard alternative to Promise-Non-Write-API-Action header.
Mon, Nov 24, 1:50 PM · MediaWiki-Action-API, MW-Interfaces-Team
LucasWerkmeister added a comment to T410883: Support HTTP QUERY method as standard alternative to Promise-Non-Write-API-Action header.

Current outcome:

$ curl -X QUERY -d action=query https://en.wikipedia.org/w/api.php
<html><body><h1>405 Method Not Allowed</h1>
A request was made of a resource using a request method not supported by that resource
</body></html>
Mon, Nov 24, 1:43 PM · MediaWiki-Action-API, MW-Interfaces-Team
LucasWerkmeister added a comment to T404513: Support Promise-Non-Write-API-Action in m3api?.

Thanks, that’s useful to know. But there have been exciting new developments – QUERY has been approved! ⇒ T410883: Support HTTP QUERY method as standard alternative to Promise-Non-Write-API-Action header

Mon, Nov 24, 12:53 PM · m3api
LucasWerkmeister created T410883: Support HTTP QUERY method as standard alternative to Promise-Non-Write-API-Action header.
Mon, Nov 24, 12:52 PM · MediaWiki-Action-API, MW-Interfaces-Team
LucasWerkmeister added a comment to T400181: rest.php does not appear to enforce the Promise-Non-Write-API-Action header.

Is this a duplicate of T372910: Make REST Handler router enforce Promise-Non-Write-API-Action header?

Mon, Nov 24, 12:47 PM · MW-Interfaces-Team, MediaWiki-REST-API

Mon, Nov 17

LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

Thanks, good shout – this patch appears to be sufficient to make the m3api-oauth2 tests pass against my local wiki:

Mon, Nov 17, 7:07 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api

Sat, Nov 15

LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

Slightly more readable version of what appears to be the loop:

includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager->getSessionForRequest()
includes/Permissions/PermissionManager.php(1572): MediaWiki\Request\WebRequest->getSession()
includes/Permissions/PermissionManager.php(1514): MediaWiki\Permissions\PermissionManager->getUserPermissions()
includes/Permissions/UserAuthority.php(271): MediaWiki\Permissions\PermissionManager->userHasRight()
includes/Permissions/UserAuthority.php(130): MediaWiki\Permissions\UserAuthority->internalAllowed()
includes/User/User.php(2129): MediaWiki\Permissions\UserAuthority->isAllowed()
includes/User/CentralId/LocalIdLookup.php(104): MediaWiki\User\User->isAllowed()
includes/User/CentralId/CentralIdLookup.php(238): MediaWiki\User\CentralId\LocalIdLookup->lookupCentralIds()
includes/User/CentralId/CentralIdLookup.php(316): MediaWiki\User\CentralId\CentralIdLookup->nameFromCentralId()
extensions/OAuth/src/Backend/Utils.php(292): MediaWiki\User\CentralId\CentralIdLookup->localUserFromCentralId()
extensions/OAuth/src/ResourceServer.php(180): MediaWiki\Extension\OAuth\Backend\Utils::getLocalUserFromCentralId()
extensions/OAuth/src/ResourceServer.php(157): MediaWiki\Extension\OAuth\ResourceServer->setUser()
extensions/OAuth/src/ResourceServer.php(89): MediaWiki\Extension\OAuth\ResourceServer->setVerifiedInfo()
vendor/league/oauth2-server/src/Middleware/ResourceServerMiddleware.php(54): MediaWiki\Extension\OAuth\ResourceServer->{closure:MediaWiki\Extension\OAuth\ResourceServer::verify():88}()
extensions/OAuth/src/ResourceServer.php(85): League\OAuth2\Server\Middleware\ResourceServerMiddleware->__invoke()
extensions/OAuth/src/SessionProvider.php(279): MediaWiki\Extension\OAuth\ResourceServer->verify()
extensions/OAuth/src/SessionProvider.php(109): MediaWiki\Extension\OAuth\SessionProvider->verifyOAuth2Request()
includes/Session/SessionManager.php(569): MediaWiki\Extension\OAuth\SessionProvider->provideSessionInfo()
includes/Session/SessionManager.php(136): MediaWiki\Session\SessionManager->getSessionInfoForRequest()
includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager->getSessionForRequest()
<!-- there's a hole in my bucket… -->
Sat, Nov 15, 5:07 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

Hm, I think OAuth might be not so much “resource-hungry” as “broken”? When running the m3api-oauth2 integration tests against a local wiki, with very little custom OAuth configuration, it encounters this error:

1<!DOCTYPE html>
2<html><head><title>Internal error - TheodenWiki</title><meta name="color-scheme" content="light dark" /><style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style></head><body>
3<div dir=ltr><div class="cdx-message--error cdx-message cdx-message--block"><span class="cdx-message__icon"></span><div class="cdx-message__content"><p>[e4b55be3600ba0fb56e03574] /w/api.php?formatversion=2&amp;assert=user&amp;action=query&amp;meta=userinfo&amp;format=json Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of &#039;8192&#039; frames</p><p>Backtrace:</p><p>from /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/Database/Domain/DatabaseDomain.php(45)<br />
4#0 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/Database/Domain/DatabaseDomain.php(45): is_string()<br />
5#1 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/Database/Domain/DatabaseDomain.php(96): Wikimedia\Rdbms\DatabaseDomain-&gt;__construct()<br />
6#2 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/Database/DBConnRef.php(80): Wikimedia\Rdbms\DatabaseDomain::newFromId()<br />
7#3 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/LoadBalancer/LoadBalancer.php(795): Wikimedia\Rdbms\DBConnRef-&gt;__construct()<br />
8#4 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/LBFactory/LBFactory.php(596): Wikimedia\Rdbms\LoadBalancer-&gt;getConnection()<br />
9#5 /home/lucas/git/wikimedia/mediawiki/includes/libs/Rdbms/LBFactory/LBFactory.php(565): Wikimedia\Rdbms\LBFactory-&gt;getMappedDatabase()<br />
10#6 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/Backend/Utils.php(75): Wikimedia\Rdbms\LBFactory-&gt;getReplicaDatabase()<br />
11#7 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/Repository/DatabaseRepository.php(16): MediaWiki\Extension\OAuth\Backend\Utils::getCentralDB()<br />
12#8 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/Repository/AccessTokenRepository.php(99): MediaWiki\Extension\OAuth\Repository\DatabaseRepository-&gt;getDB()<br />
13#9 /home/lucas/git/wikimedia/mediawiki/vendor/league/oauth2-server/src/AuthorizationValidators/BearerTokenValidator.php(115): MediaWiki\Extension\OAuth\Repository\AccessTokenRepository-&gt;isAccessTokenRevoked()<br />
14#10 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/BearerTokenValidator.php(14): League\OAuth2\Server\AuthorizationValidators\BearerTokenValidator-&gt;validateAuthorization()<br />
15#11 /home/lucas/git/wikimedia/mediawiki/vendor/league/oauth2-server/src/ResourceServer.php(84): MediaWiki\Extension\OAuth\BearerTokenValidator-&gt;validateAuthorization()<br />
16#12 /home/lucas/git/wikimedia/mediawiki/vendor/league/oauth2-server/src/Middleware/ResourceServerMiddleware.php(43): League\OAuth2\Server\ResourceServer-&gt;validateAuthenticatedRequest()<br />
17#13 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(85): League\OAuth2\Server\Middleware\ResourceServerMiddleware-&gt;__invoke()<br />
18#14 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(279): MediaWiki\Extension\OAuth\ResourceServer-&gt;verify()<br />
19#15 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(109): MediaWiki\Extension\OAuth\SessionProvider-&gt;verifyOAuth2Request()<br />
20#16 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(569): MediaWiki\Extension\OAuth\SessionProvider-&gt;provideSessionInfo()<br />
21#17 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(136): MediaWiki\Session\SessionManager-&gt;getSessionInfoForRequest()<br />
22#18 /home/lucas/git/wikimedia/mediawiki/includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager-&gt;getSessionForRequest()<br />
23#19 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/PermissionManager.php(1572): MediaWiki\Request\WebRequest-&gt;getSession()<br />
24#20 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/PermissionManager.php(1514): MediaWiki\Permissions\PermissionManager-&gt;getUserPermissions()<br />
25#21 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/UserAuthority.php(271): MediaWiki\Permissions\PermissionManager-&gt;userHasRight()<br />
26#22 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/UserAuthority.php(130): MediaWiki\Permissions\UserAuthority-&gt;internalAllowed()<br />
27#23 /home/lucas/git/wikimedia/mediawiki/includes/User/User.php(2129): MediaWiki\Permissions\UserAuthority-&gt;isAllowed()<br />
28#24 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/LocalIdLookup.php(104): MediaWiki\User\User-&gt;isAllowed()<br />
29#25 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/CentralIdLookup.php(238): MediaWiki\User\CentralId\LocalIdLookup-&gt;lookupCentralIds()<br />
30#26 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/CentralIdLookup.php(316): MediaWiki\User\CentralId\CentralIdLookup-&gt;nameFromCentralId()<br />
31#27 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/Backend/Utils.php(292): MediaWiki\User\CentralId\CentralIdLookup-&gt;localUserFromCentralId()<br />
32#28 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(180): MediaWiki\Extension\OAuth\Backend\Utils::getLocalUserFromCentralId()<br />
33#29 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(157): MediaWiki\Extension\OAuth\ResourceServer-&gt;setUser()<br />
34#30 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(89): MediaWiki\Extension\OAuth\ResourceServer-&gt;setVerifiedInfo()<br />
35#31 /home/lucas/git/wikimedia/mediawiki/vendor/league/oauth2-server/src/Middleware/ResourceServerMiddleware.php(54): MediaWiki\Extension\OAuth\ResourceServer-&gt;{closure:MediaWiki\Extension\OAuth\ResourceServer::verify():88}()<br />
36#32 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(85): League\OAuth2\Server\Middleware\ResourceServerMiddleware-&gt;__invoke()<br />
37#33 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(279): MediaWiki\Extension\OAuth\ResourceServer-&gt;verify()<br />
38#34 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(109): MediaWiki\Extension\OAuth\SessionProvider-&gt;verifyOAuth2Request()<br />
39#35 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(569): MediaWiki\Extension\OAuth\SessionProvider-&gt;provideSessionInfo()<br />
40#36 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(136): MediaWiki\Session\SessionManager-&gt;getSessionInfoForRequest()<br />
41#37 /home/lucas/git/wikimedia/mediawiki/includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager-&gt;getSessionForRequest()<br />
42<!-- many, many, many stack frames later… -->
43#8169 /home/lucas/git/wikimedia/mediawiki/includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager-&gt;getSessionForRequest()<br />
44#8170 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/PermissionManager.php(1572): MediaWiki\Request\WebRequest-&gt;getSession()<br />
45#8171 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/PermissionManager.php(1514): MediaWiki\Permissions\PermissionManager-&gt;getUserPermissions()<br />
46#8172 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/UserAuthority.php(271): MediaWiki\Permissions\PermissionManager-&gt;userHasRight()<br />
47#8173 /home/lucas/git/wikimedia/mediawiki/includes/Permissions/UserAuthority.php(130): MediaWiki\Permissions\UserAuthority-&gt;internalAllowed()<br />
48#8174 /home/lucas/git/wikimedia/mediawiki/includes/User/User.php(2129): MediaWiki\Permissions\UserAuthority-&gt;isAllowed()<br />
49#8175 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/LocalIdLookup.php(104): MediaWiki\User\User-&gt;isAllowed()<br />
50#8176 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/CentralIdLookup.php(238): MediaWiki\User\CentralId\LocalIdLookup-&gt;lookupCentralIds()<br />
51#8177 /home/lucas/git/wikimedia/mediawiki/includes/User/CentralId/CentralIdLookup.php(316): MediaWiki\User\CentralId\CentralIdLookup-&gt;nameFromCentralId()<br />
52#8178 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/Backend/Utils.php(292): MediaWiki\User\CentralId\CentralIdLookup-&gt;localUserFromCentralId()<br />
53#8179 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(180): MediaWiki\Extension\OAuth\Backend\Utils::getLocalUserFromCentralId()<br />
54#8180 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(157): MediaWiki\Extension\OAuth\ResourceServer-&gt;setUser()<br />
55#8181 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(89): MediaWiki\Extension\OAuth\ResourceServer-&gt;setVerifiedInfo()<br />
56#8182 /home/lucas/git/wikimedia/mediawiki/vendor/league/oauth2-server/src/Middleware/ResourceServerMiddleware.php(54): MediaWiki\Extension\OAuth\ResourceServer-&gt;{closure:MediaWiki\Extension\OAuth\ResourceServer::verify():88}()<br />
57#8183 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/ResourceServer.php(85): League\OAuth2\Server\Middleware\ResourceServerMiddleware-&gt;__invoke()<br />
58#8184 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(279): MediaWiki\Extension\OAuth\ResourceServer-&gt;verify()<br />
59#8185 /home/lucas/git/wikimedia/mediawiki/extensions/OAuth/src/SessionProvider.php(109): MediaWiki\Extension\OAuth\SessionProvider-&gt;verifyOAuth2Request()<br />
60#8186 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(569): MediaWiki\Extension\OAuth\SessionProvider-&gt;provideSessionInfo()<br />
61#8187 /home/lucas/git/wikimedia/mediawiki/includes/Session/SessionManager.php(136): MediaWiki\Session\SessionManager-&gt;getSessionInfoForRequest()<br />
62#8188 /home/lucas/git/wikimedia/mediawiki/includes/Request/WebRequest.php(860): MediaWiki\Session\SessionManager-&gt;getSessionForRequest()<br />
63#8189 /home/lucas/git/wikimedia/mediawiki/includes/Setup.php(504): MediaWiki\Request\WebRequest-&gt;getSession()<br />
64#8190 /home/lucas/git/wikimedia/mediawiki/includes/WebStart.php(72): require_once(string)<br />
65#8191 /home/lucas/git/wikimedia/mediawiki/api.php(23): require(string)<br />
66#8192 {main}</p>
67</div></div></div></body></html>

(Note that this is after configuring xdebug.max_nesting_level=8192, which is a preposterously high value. XDebug’s default is 512 levels, which I had previously doubled for Peast; this is eight times more than that again and still not enough to break out of the infinite loop. I guess in CI, where XDebug probably isn’t installed, nothing breaks out of the loop and that’s where the timeout comes from?)

Sat, Nov 15, 4:58 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister created P85327 T409637-related error.
Sat, Nov 15, 4:53 PM

Fri, Nov 14

LucasWerkmeister added a comment to T405005: Implement mechanism to exclude a domain from externallinks database (LinkSearch).

Yes, same as before. This is useful data that I don’t think should be thrown away. (Also, my suggestion to exclude URLs or URL prefixes, as opposed to domains – which, to be clear, I also object to – seems to have gotten lost, as you’re again only talking about domains.)

Fri, Nov 14, 7:46 PM · DBA, User-notice, MW-1.46-notes (1.46.0-wmf.7; 2025-12-16), Proposal, MediaWiki-Platform-Team (Radar), MediaWiki-Page-derived-data

Thu, Nov 13

LucasWerkmeister closed T408998: Make LanguageFallback::MESSAGES / LanguageFallback::STRICT distinction available in Scribunto / Lua as Resolved.
Thu, Nov 13, 9:24 PM · MW-1.46-notes (1.46.0-wmf.2; 2025-11-12), Wikidata Integration in Wikimedia projects, Wikibase-Lua, Wikidata, I18n, Scribunto
LucasWerkmeister updated subscribers of T408998: Make LanguageFallback::MESSAGES / LanguageFallback::STRICT distinction available in Scribunto / Lua.

As far as I can tell, this is working, and I just added it to the Scribunto documentation. I think we’re done here – thanks @cscott for the code review! \o/

Thu, Nov 13, 9:23 PM · MW-1.46-notes (1.46.0-wmf.2; 2025-11-12), Wikidata Integration in Wikimedia projects, Wikibase-Lua, Wikidata, I18n, Scribunto
LucasWerkmeister closed T392716: Host m3api documentation on doc.wikimedia.org, a subtask of T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab, as Resolved.
Thu, Nov 13, 8:08 PM · m3api
LucasWerkmeister closed T392716: Host m3api documentation on doc.wikimedia.org as Resolved.

Also I was under the impression that the rsync upload already happens from CI and not from a manual user.

Thu, Nov 13, 8:08 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister updated subscribers of T392716: Host m3api documentation on doc.wikimedia.org.

Huh, thanks. @Ladsgroup could you perhaps rm -r /srv/doc/m3api/tmp-m3api-example on doc2003?

Thu, Nov 13, 12:48 PM · collaboration-services, doc.wikimedia.org, m3api

Nov 10 2025

LucasWerkmeister added a comment to T383380: Extension tables missing after install.php.

I see, thanks for explaining! Then I guess I’ll just remove the update.php call and see if anything breaks or anyone complains :)

Nov 10 2025, 7:15 PM · MW-1.45-notes (1.45.0-wmf.25; 2025-10-28), MediaWiki-Platform-Team, MediaWiki-extensions-OAuth, MediaWiki-Installer
LucasWerkmeister updated subscribers of T392716: Host m3api documentation on doc.wikimedia.org.

Alright, now I think we just need someone™ with the right permissions to effectively rm -r https://doc.wikimedia.org/m3api/tmp-m3api-example/. (Looking at httpd-doc.wikimedia.org.conf, I think it would be at /srv/docroot/org/wikimedia/doc/m3api/tmp-m3api-example/? On doc1004 and/or doc2003?) @bd808 or @jnuche can you do that? :)

Nov 10 2025, 6:33 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T383380: Extension tables missing after install.php.

Well, as someone maintaining CI templates to install / set up MediaWiki (GitHub action, GitLab CI), it doesn’t sound like I can remove the update.php call yet if I want my templates to be useful for arbitrary extensions, because I don’t know if the extensions other people would like to use in their CI have been converted to virtual domains or not. (Though this is to some extent academic – I’ve advertised the CI templates a bit, but I don’t know if anyone else actually uses them.)

Nov 10 2025, 12:12 AM · MW-1.45-notes (1.45.0-wmf.25; 2025-10-28), MediaWiki-Platform-Team, MediaWiki-extensions-OAuth, MediaWiki-Installer
LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

What $wgMWOAuthCentralWiki, $wgMWOAuthSharedUserIDs and $wgMWOAuthSharedUserSource settings are you using?

Nov 10 2025, 12:08 AM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api

Nov 9 2025

LucasWerkmeister added a comment to T383380: Extension tables missing after install.php.

Well, that sounds like it only fixes it for the OAuth extension? What about other extensions?

Nov 9 2025, 12:42 PM · MW-1.45-notes (1.45.0-wmf.25; 2025-10-28), MediaWiki-Platform-Team, MediaWiki-extensions-OAuth, MediaWiki-Installer

Nov 8 2025

LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

And I also published new releases of the other packages, so all of these work now:

Nov 8 2025, 6:45 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

I’m working around this for now on the main branch by checking out the commit just before the “bad” one.

Nov 8 2025, 6:23 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

Okay, git bisect says Deprecate $wgMWOAuthSharedUserIDs is the first bad commit. (I retried each CI job twice, i.e. three builds per commit, to hopefully rule out any flakiness. The results seem quite consistent.)

Nov 8 2025, 6:11 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister added a comment to T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).

I’ll see if I can git bisect this down to a specific commit to blame…

Nov 8 2025, 4:48 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister created T409637: OAuth appears to have become more resource-hungry of late (m3api-oauth2 CI broken).
Nov 8 2025, 4:46 PM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), MediaWiki-Platform-Team (Kanban Board), MediaWiki-extensions-OAuth, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Publishing m3api-query docs with the new v1.1.0 release worked \o/

Nov 8 2025, 11:23 AM · collaboration-services, doc.wikimedia.org, m3api

Nov 3 2025

LucasWerkmeister added a comment to T408970: Fourohfour page shows duplicated URL.

Oops, sorry for not searching properly, this looks like it should’ve been findable.

Nov 3 2025, 7:04 PM · Toolforge, cloud-services-team
LucasWerkmeister added a comment to T409008: Toolforge fourohfour tool (404 error) shows URL twice.

Oh, this is interesting – it’s only reproducible if the request URL doesn’t have a “proper” path.

Nov 3 2025, 6:59 PM · cloud-services-team, Toolforge

Nov 2 2025

LucasWerkmeister added a comment to T409008: Toolforge fourohfour tool (404 error) shows URL twice.

Looking at this code in index():

Nov 2 2025, 6:36 PM · cloud-services-team, Toolforge
LucasWerkmeister created T409008: Toolforge fourohfour tool (404 error) shows URL twice.
Nov 2 2025, 6:32 PM · cloud-services-team, Toolforge
LucasWerkmeister created T408998: Make LanguageFallback::MESSAGES / LanguageFallback::STRICT distinction available in Scribunto / Lua.
Nov 2 2025, 12:41 PM · MW-1.46-notes (1.46.0-wmf.2; 2025-11-12), Wikidata Integration in Wikimedia projects, Wikibase-Lua, Wikidata, I18n, Scribunto

Oct 27 2025

LucasWerkmeister updated the task description for T408387: CloudVPS instance for ProVe.
Oct 27 2025, 11:46 AM · cloud-services-team (FY2025/26-Q1-Q2), Cloud-VPS (Project-requests)
LucasWerkmeister renamed T408387: CloudVPS instance for ProVe from CluodVPS instance for ProVe to CloudVPS instance for ProVe.
Oct 27 2025, 11:45 AM · cloud-services-team (FY2025/26-Q1-Q2), Cloud-VPS (Project-requests)

Oct 25 2025

LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Further commits:

Oct 25 2025, 3:40 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Looking at the code suggests that the $PUB_LOCATION is only meant to allow putting the docs into further subdirectories of the default value; changing the prefix is not allowed. Let’s just go with the longer, slightly redundant URLs then.

Oct 25 2025, 3:07 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Nope, not allowed. CI output (not kept forever because my volunteer account doesn’t have permission to do that apparently ^^):

Oct 25 2025, 2:40 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Bikeshedding question: what should the URLs be?

(We might not have a choice here – docpub might insist on one or the other – but I’m still curious if anyone has a strong opinion either way ^^)

Oct 25 2025, 2:31 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

It works \o/ \o/ \o/

Oct 25 2025, 2:30 PM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

Trying this out in the new tmp-m3api-example repo, using the wip branch (current tip but I may force-push that away later) of the ci-templates.

Oct 25 2025, 10:30 AM · collaboration-services, doc.wikimedia.org, m3api
LucasWerkmeister updated subscribers of T392716: Host m3api documentation on doc.wikimedia.org.

This will probably take a few attempts to get right – would it be okay to first try it out with a temporary / experimental package (still published to the “real” doc.w.o), and to then remove that again from doc.wikimedia.org later?

Oct 25 2025, 9:57 AM · collaboration-services, doc.wikimedia.org, m3api

Oct 17 2025

LucasWerkmeister closed T252227: Mobile redirects drop provenance parameters as Resolved.

I believe this task can now be closed (not sure which status is best, let’s go with Resolved for now); thanks to T214998: RFC: Serve mobile and desktop variants through the same URL (unified mobile routing), opening https://en.wikipedia.org/wiki/Kecksburg_UFO_incident?wprov=yicw1 on a mobile device (tested in Firefox on Android) will now stay on the en.wikipedia.org domain (with the ?wprov= parameter intact) and display the mobile site there.

Oct 17 2025, 6:06 PM · Data-Engineering-Icebox, Data-Engineering, Data Pipelines, Traffic-Icebox, SRE

Oct 16 2025

LucasWerkmeister added a comment to T407557: OpenSSH 10.1+ warns that Wikimedia SSH does not use post-quantum key exchange algorithm.
me@host operations-puppet $ git grep curve25519-sha256@libssh.org
modules/gitlab/manifests/ssh.pp:    Array[String]              $kex_algorithms       = ['curve25519-sha256@libssh.org', 'diffie-hellman-group-exchange-sha256'],
modules/ssh/templates/sshd_config.erb:KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
Oct 16 2025, 7:53 PM · Release-Engineering-Team, Infrastructure-Foundations, GitLab
LucasWerkmeister created T407557: OpenSSH 10.1+ warns that Wikimedia SSH does not use post-quantum key exchange algorithm.
Oct 16 2025, 7:45 PM · Release-Engineering-Team, Infrastructure-Foundations, GitLab

Oct 12 2025

LucasWerkmeister created T407072: UploadWizard displays undefined message mwe-upwiz-fetching.
Oct 12 2025, 10:06 AM · UploadWizard

Oct 10 2025

LucasWerkmeister created T407030: VisualEditor accesskeys and publish buttons don’t work properly when using preview / review changes.
Oct 10 2025, 7:17 PM · VisualEditor-MediaWiki-2017WikitextEditor, VisualEditor

Oct 7 2025

LucasWerkmeister added a project to T406635: "Add columns from reconciled values" badly fails on images with no SDC at all: Reconciliation.

Tagging Reconciliation since Abbe98 suggested the issue might be there rather than in OpenRefine proper.

Oct 7 2025, 7:46 PM · Reconciliation, cloud-services-team, OpenRefine, PAWS

Oct 2 2025

LucasWerkmeister updated the task description for T406242: "invalid CSRF token" from Commons in wikibase-cli.
Oct 2 2025, 6:24 PM · MediaWiki-Platform-Team (Kanban Board), MediaWiki-Core-AuthManager, Commons
LucasWerkmeister updated subscribers of T406242: "invalid CSRF token" from Commons in wikibase-cli.
Oct 2 2025, 4:33 PM · MediaWiki-Platform-Team (Kanban Board), MediaWiki-Core-AuthManager, Commons

Sep 29 2025

LucasWerkmeister closed T405830: Enable USERLANGUAGE magic word for Wikidata, a subtask of T377410: Enable $wgParserEnableUserLanguage on all wikis with Translate enabled, as Resolved.
Sep 29 2025, 8:34 PM · Wikimedia-Site-requests
LucasWerkmeister closed T405830: Enable USERLANGUAGE magic word for Wikidata, a subtask of T378060: Enable USERLANGUAGE magic word on wikis using int:lang hack, as Resolved.
Sep 29 2025, 8:34 PM · Wikimedia-Site-requests, I18n
LucasWerkmeister closed T405830: Enable USERLANGUAGE magic word for Wikidata as Resolved.
Sep 29 2025, 8:34 PM · Wikidata, Wikimedia-Site-requests, I18n

Sep 27 2025

LucasWerkmeister added a project to T405830: Enable USERLANGUAGE magic word for Wikidata: Wikidata.
Sep 27 2025, 11:55 AM · Wikidata, Wikimedia-Site-requests, I18n
LucasWerkmeister added a subtask for T377410: Enable $wgParserEnableUserLanguage on all wikis with Translate enabled: T405830: Enable USERLANGUAGE magic word for Wikidata.
Sep 27 2025, 11:48 AM · Wikimedia-Site-requests
LucasWerkmeister added a parent task for T405830: Enable USERLANGUAGE magic word for Wikidata: T377410: Enable $wgParserEnableUserLanguage on all wikis with Translate enabled.
Sep 27 2025, 11:48 AM · Wikidata, Wikimedia-Site-requests, I18n
LucasWerkmeister created T405830: Enable USERLANGUAGE magic word for Wikidata.
Sep 27 2025, 11:47 AM · Wikidata, Wikimedia-Site-requests, I18n

Sep 19 2025

LucasWerkmeister added a comment to T404934: Audio files embedding cuts off half the bar.

it's overflowing the controls, because it's not wide enough to show all of them. There's some sort of logic in core to show it on smaller sizes (by applying different classes), but I think because your canvas uses a different fontsize, those classes don't work here. But if you use a minimum of 350px, then it shows all the controls.

Sep 19 2025, 12:58 PM · Local-Wiki-Template-And-Gadget-Issues, Commons

Sep 18 2025

LucasWerkmeister added a comment to T404934: Audio files embedding cuts off half the bar.

This is a problem with a local gadget (https://commons.wikimedia.org/wiki/MediaWiki:Gadget-Stockphoto.js#L-427), not the MediaWiki software, so never belonged on Phabricator.

Sep 18 2025, 8:18 PM · Local-Wiki-Template-And-Gadget-Issues, Commons
LucasWerkmeister added a comment to T405005: Implement mechanism to exclude a domain from externallinks database (LinkSearch).

This database table stores URLs that represent the outgoing links from articles. This exists primarily for preventing and finding undesirable links.

Sep 18 2025, 8:03 PM · DBA, User-notice, MW-1.46-notes (1.46.0-wmf.7; 2025-12-16), Proposal, MediaWiki-Platform-Team (Radar), MediaWiki-Page-derived-data

Sep 16 2025

LucasWerkmeister added a comment to T404517: Index m3api repositories in Codesearch.

\o/ thanks!

Sep 16 2025, 11:13 PM · VPS-project-Codesearch, m3api
LucasWerkmeister added a comment to T404517: Index m3api repositories in Codesearch.

I also moved all the to-be-deleted tmp-* repositories to the lucaswerkmeister/ namespace, to get them out of the children.json list immediately. (They’ll still be deleted in a week.)

Sep 16 2025, 10:37 PM · VPS-project-Codesearch, m3api
LucasWerkmeister added a comment to T404517: Index m3api repositories in Codesearch.

Hm, I guess we need to pick a group first, I didn’t think about that yet 😅

Sep 16 2025, 10:31 PM · VPS-project-Codesearch, m3api
LucasWerkmeister added a comment to T404517: Index m3api repositories in Codesearch.

https://gitlab.wikimedia.org/groups/repos/m3api/-/children.json works (extra repos/), I think that would be okay! (I just scheduled the tmp-* repositories for deletion, though they still show up in that JSON at the moment. If that’s a problem, I can delete them immediately.)

Sep 16 2025, 8:31 PM · VPS-project-Codesearch, m3api

Sep 15 2025

LucasWerkmeister closed T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab as Resolved.

I’ve published 1.0.1 versions of all the libraries (Mastodon announcement), and with that I think this is done! (The remaining subtasks will hopefully happen sooner or later but I don’t consider them blockers.)

Sep 15 2025, 7:54 PM · m3api
LucasWerkmeister added a comment to T402700: Migrate m3api CI from GitHub Actions to GitLab CI.

We’ll only know for sure when I do the actual migration and the first releases from GitLab

Sep 15 2025, 6:45 PM · m3api
LucasWerkmeister added a comment to T404516: AbuseFilter messages shown by VisualEditor cross-wiki uploads erroneously link to local wiki.

Similarly to T89916, you can work around this bug by using interwiki links (or external links) in the message. I suggested doing that on-wiki: https://commons.wikimedia.org/wiki/MediaWiki_talk:Abusefilter-disallowed-cross-wiki-upload#Link_to_Special:UploadWizard_doesn't_work_when_this_error_is_displayed_inside_the_editor

Sep 15 2025, 6:04 PM · MW-1.46-notes (1.46.0-wmf.7; 2025-12-16), MediaWiki-Uploading, AbuseFilter, VisualEditor

Sep 14 2025

LucasWerkmeister moved T404517: Index m3api repositories in Codesearch from Backlog to Index requests on the VPS-project-Codesearch board.
Sep 14 2025, 2:18 PM · VPS-project-Codesearch, m3api
LucasWerkmeister added a comment to T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab.

Alright, I’ve created all the real repositories on GitLab and manually copied over all the releases. At some point during the next week (hopefully), I’ll publish new releases of the libraries (1.0.1, probably), both to get the new repo URLs published more widely and to test the release CI. (I don’t want to do it today, so that the release creation dates between the imported and fresh releases are different.)

Sep 14 2025, 2:17 PM · m3api
LucasWerkmeister updated the task description for T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab.
Sep 14 2025, 2:16 PM · m3api
LucasWerkmeister created T404517: Index m3api repositories in Codesearch.
Sep 14 2025, 2:16 PM · VPS-project-Codesearch, m3api
LucasWerkmeister added a comment to T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab.

o_O apparently it shows the release date in the list of releases

image.png (776×1 px, 137 KB)

…but the creation date when showing the individual release:
image.png (776×1 px, 137 KB)

I’ll take it, I guess.

Sep 14 2025, 1:35 PM · m3api
LucasWerkmeister added a comment to T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab.

Recreating all the GitHub releases on GitLab. Just a bit of manual busywork. (Notably, GitLab releases let you set the release date, so it should be possible to reflect the original release date. Yay!)

Sep 14 2025, 11:42 AM · m3api
LucasWerkmeister added a comment to T404513: Support Promise-Non-Write-API-Action in m3api?.

Copying @Krinkle’s comment together with my very belated reply:

Sep 14 2025, 11:14 AM · m3api
LucasWerkmeister created T404513: Support Promise-Non-Write-API-Action in m3api?.
Sep 14 2025, 11:12 AM · m3api
LucasWerkmeister created T404511: Run m3api browser tests in browser.
Sep 14 2025, 10:47 AM · m3api

Sep 13 2025

LucasWerkmeister closed T402700: Migrate m3api CI from GitHub Actions to GitLab CI as Resolved.

We’ll only know for sure when I do the actual migration and the first releases from GitLab, but I think as far as I can tell now, this is done.

Sep 13 2025, 6:56 PM · m3api
LucasWerkmeister closed T402700: Migrate m3api CI from GitHub Actions to GitLab CI, a subtask of T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab, as Resolved.
Sep 13 2025, 6:56 PM · m3api
LucasWerkmeister updated the task description for T402700: Migrate m3api CI from GitHub Actions to GitLab CI.
Sep 13 2025, 6:52 PM · m3api
LucasWerkmeister added a comment to T392290: Migrate m3api hosting from GitHub to Wikimedia GitLab.

As mentioned in T392716#11178593, for now I’m leaving the docs on GitHub pages, so this task is no longer blocked on T392716. Which I think means the actual migration should be good to go now…

Sep 13 2025, 6:50 PM · m3api
LucasWerkmeister added a comment to T392716: Host m3api documentation on doc.wikimedia.org.

For now I’ve updated the CI templates to push the docs to GitHub, so the documentation can continue to be hosted on GitHub pages, unblocking the rest of the m3api migration. Maybe some day this task will happen, but after almost five months I really don’t feel like letting it block the migration any longer.

Sep 13 2025, 6:48 PM · collaboration-services, doc.wikimedia.org, m3api

Sep 12 2025

LucasWerkmeister updated the task description for T402700: Migrate m3api CI from GitHub Actions to GitLab CI.
Sep 12 2025, 5:48 PM · m3api

Sep 10 2025

LucasWerkmeister added a comment to T403519: Several mwapi (Python) based tools are failing to edit: badtoken: Invalid CSRF token..

Thanks a lot! \o/

Sep 10 2025, 8:50 PM · MW-1.45-notes (1.45.0-wmf.18; 2025-09-09), MediaWiki-Platform-Team, MediaWiki-Core-AuthManager, MediaWiki-extensions-OAuth, Tool-quickcategories