Before and after Chromium Lighthouse a11y result comparison of some Phorge pages for patches I'm going to attach.
(Goodhart's Law applies, as with any misguiding incentives.)
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
All Stories
Yesterday
More docs yuum
Sat, May 31
Also nothing seems to use these functions?:
[acko@fedora phorge]$ grep -r compileLiteralQuery . ./phorge/src/applications/search/compiler/__tests__/PhutilSearchQueryCompilerTestCase.php: $literal_query = $compiler->compileLiteralQuery($tokens); ./phorge/src/applications/search/compiler/PhutilSearchQueryCompiler.php: public function compileLiteralQuery(array $tokens) { [acko@fedora phorge]$ grep -r compileStemmedQuery . ./phorge/src/applications/search/compiler/__tests__/PhutilSearchQueryCompilerTestCase.php: $stemmed_query = $compiler->compileStemmedQuery($tokens); ./phorge/src/applications/search/compiler/PhutilSearchQueryCompiler.php: public function compileStemmedQuery(array $tokens) {
Nice find. Applying this patch removes about 250 errors in phpstan output here.
In D26040#27816, @aklapper wrote:Keeping it protected will throw Protected method PhageExecWorkflow::runWorkflow() overriding public method ArcanistWorkflow::runWorkflow() should also be public.
Running phpstan analyse, before this patch I get Call to an undefined method ArcanistWorkflow::runWorkflow(), after this patch I get Method ArcanistWorkflow::runWorkflow() invoked with 1 parameter, 0 required, both in src/workflow/ArcanistWorkflow.php:227. That looks like an improvement indeed.
(This seems nice) Small question: Does it still work for you keeping the method as protected instead of public?
Fri, May 30
Get rid of coverage errors :)
Yes to the idea however a related elephant in the room (IMHO) are those non-standard types like list or map or wild being replaced, no clue if that has any effects on...something™ (Diviner docs? Code?) as I haven't managed to understand the consequences of code in https://we.phorge.it/source/arcanist/browse/master/src/parser/PhutilTypeSpec.php yet. (Technically speaking map and list seem to be just arrays, indeed.)
This isn't important, it just seems like this is a nice in-context place to leave this information :)
Use R[] because the keys may not be sequential.
Hmm.. clearly I need to set xdebug.mode correctly, but I'm not sure why it wasn't. It's been fine before.
Correct, my instance is running the current stable branch HEAD, which is 2024.35. I did notice that the last 5 were already fixed, and I searched for existing issues, but missed T15824 sorry.
Thu, May 29
Looking at src/applications/repository/storage/PhabricatorRepository.php I see stuff like $has_shortname = ($this->getRepositorySlug() !== null); so it seems that a repository "slug" is what the UI calls a "short name". That's also seconded by code in DiffusionRepositoryEditEngine.
Copying from Q182:
PhabricatorEditorURIEngine.php:283, occurrences: 4 preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated arcanist(head=stable, ref.master=989690868513, ref.stable=05abd055019c), libphremoteuser(head=clarion, ref.master=944307decd9c, ref.clarion=d0da6c048bd5), phorge(head=stable, custom=4), translations(head=wmf/stable, ref.wmf/stable=76bb64361cec) #0 preg_replace(string, string, NULL) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:283] #1 PhabricatorEditorURIEngine::escapeToken(NULL) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:144] #2 PhabricatorEditorURIEngine::newURITokensForRepository() called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:128] #3 PhabricatorEditorURIEngine::getURITokensForRepository(string) called at [<phorge>/src/infrastructure/editor/PhabricatorEditorURIEngine.php:84] #4 PhabricatorEditorURIEngine::getURITokensForPath(string) called at [<phorge>/src/applications/differential/view/DifferentialChangesetDetailView.php:371] #5 DifferentialChangesetDetailView::getEditorURITemplate() called at [<phorge>/src/applications/differential/view/DifferentialChangesetDetailView.php:272] #6 DifferentialChangesetDetailView::render() called at [<phorge>/src/applications/differential/view/DifferentialChangesetListView.php:240] #7 DifferentialChangesetListView::render() called at [<phorge>/src/view/AphrontView.php:222] #8 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #9 phutil_escape_html(DifferentialChangesetListView) called at [<phorge>/src/infrastructure/markup/render.php:139] #10 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:139] #11 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #12 phutil_tag(string, array, array) called at [<phorge>/src/view/phui/PHUITwoColumnView.php:236] #13 PHUITwoColumnView::buildFooter() called at [<phorge>/src/view/phui/PHUITwoColumnView.php:123] #14 PHUITwoColumnView::getTagContent() called at [<phorge>/src/view/AphrontTagView.php:161] #15 AphrontTagView::render() called at [<phorge>/src/view/AphrontView.php:222] #16 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #17 phutil_escape_html(PHUITwoColumnView) called at [<phorge>/src/infrastructure/markup/render.php:139] #18 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:139] #19 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #20 phutil_tag(string, array, array) called at [<phorge>/src/view/formation/PHUIFormationContentView.php:13] #21 PHUIFormationContentView::render() called at [<phorge>/src/view/AphrontView.php:222] #22 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #23 phutil_escape_html(PHUIFormationContentView) called at [<phorge>/src/infrastructure/markup/render.php:139] #24 phutil_escape_html(array) called at [<phorge>/src/infrastructure/markup/render.php:97] #25 phutil_tag(string, array, array) called at [<phorge>/src/view/formation/PHUIFormationView.php:58] #26 PHUIFormationView::render() called at [<phorge>/src/view/AphrontView.php:222] #27 AphrontView::producePhutilSafeHTML() called at [<phorge>/src/infrastructure/markup/render.php:115] #28 phutil_escape_html(PHUIFormationView) called at [<phorge>/src/infrastructure/markup/render.php:171] #29 phutil_implode_html(string, array) called at [<phorge>/src/view/page/PhabricatorBarePageView.php:58] #30 PhabricatorBarePageView::willRenderPage() called at [<phorge>/src/view/page/PhabricatorStandardPageView.php:217] #31 PhabricatorStandardPageView::willRenderPage() called at [<phorge>/src/view/page/AphrontPageView.php:46] #32 AphrontPageView::render() called at [<phorge>/src/view/page/PhabricatorStandardPageView.php:918] #33 PhabricatorStandardPageView::produceAphrontResponse() called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:724] #34 AphrontApplicationConfiguration::produceResponse(AphrontRequest, PhabricatorStandardPageView) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:299] #35 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #36 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
Thanks! Oh true I was forget the default fallback option... ah well I guess not a huge difference performance wise plus null feels cleaner to me :)
ooooor this, feel free to do whatever bro
The patch is already approved but maybe it's nice to bring more attention to extension developers
I'd love to have Phorge skip common words and short words though.
So maybe keeping these functions could even make sense so future improvements could call them?
Hi, thanks a lot for sharing this! I assume you are running 2024.35 and not yet 2025.18.
You shared seven issues above.
- The first issue is unresolved T15824.
- The second issue has not been reported yet about https://we.phorge.it/source/phorge/browse/master/src/applications/oauthserver/controller/PhabricatorOAuthServerTokenController.php$26, I may write/propose a patch later once finishing some other work.
- The last five issues were fixed by rP372316c998362e3530c0e591fe0869e6a7e62af6.
Wed, May 28
Fingers crossed.
In D26000#27480, @valerio.bozzolan wrote:Is getDisplayIconColor() related to these? (spoiler: probably it's not)
remove unused CSS as it's also unhelpful CSS when actually used