{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":533473957,"defaultBranch":"master","name":"phorge","ownerLogin":"phorgeit","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-09-06T19:29:37.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/112980197?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718960407.0","currentOid":""},"activityList":{"items":[{"before":"9acdd888930ea64e75e9266c63b58e44aec3440a","after":"9cd62bdcc4326a35f9e5dd159a202968ba033dea","ref":"refs/heads/master","pushedAt":"2024-09-20T06:49:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exception in SVN commit query without identifier\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/srv/phorge/phorge/src/applications/diffusion/query/DiffusionCommitQuery.php:779]\n```\n\nCloses T15936\n\nTest Plan: Unclear.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15936\n\nDifferential Revision: https://we.phorge.it/D25821","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exception in SVN commit query without iden…"}},{"before":"85f51c54303fe50ebc09ee0b652033a8a9f29ab1","after":"9acdd888930ea64e75e9266c63b58e44aec3440a","ref":"refs/heads/master","pushedAt":"2024-09-20T01:58:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Diffusion commit feed: fix commit title repeated twice\n\nSummary:\nBefore this change any commit in your web feed had a duplicated commit\ntitle. Old example:\n\n> FooBar committed REPOFOO 132abc: add documentation (authored by FooBar)\n> add documentation\n\nAfter this change the commit title \"add documentation\" is repeated only once.\n\n| Before | After |\n|---------------------|---------------------|\n| {F313288,size=full} | {F313289,size=full} |\n\nSo the web feed is slimmer and less distracting, more space for more useful info.\n\nHaving a NULL body seems OK. In fact, the upstream caller already skips\nbody rendering in that case:\n\nhttps://we.phorge.it/source/phorge/browse/master/src/applications/transactions/feed/PhabricatorApplicationTransactionFeedStory.php;0fe0b9f681d0da79b313e0907933665930074704$157-160\n\nP.S.\n\nIf you think it would be nice to show a second line in the body web feed,\nwe think so too! Look at the mentioned task and please propose that feature.\nThis is just an early UX fix to avoid to repeat the same info twice.\n\nCloses T15489\n\nTest Plan:\nBefore this change, look at your web feeds about commits and reproduce\nthe original problem.\n\nApply this change and restart phd and do some commits and appreciate\nthat you do not see anymore duplicated commit titles in each commit feed.\n\nYour email notifications are unchanged.\n\nReviewers: O1 Blessed Committers, aklapper\n\nReviewed By: O1 Blessed Committers, aklapper\n\nSubscribers: aklapper, tobiaswiese, Matthew, Cigaryno\n\nManiphest Tasks: T15489\n\nDifferential Revision: https://we.phorge.it/D25824","shortMessageHtmlLink":"Diffusion commit feed: fix commit title repeated twice"}},{"before":"39237c0854fe08a6e41b9c4b1da6d65735b56f8d","after":"85f51c54303fe50ebc09ee0b652033a8a9f29ab1","ref":"refs/heads/master","pushedAt":"2024-09-17T07:20:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"str_replace(null)\" exception in DivinerAtomRef\n\nSummary:\nPassing null instead of a string or array to `str_replace()` deprecated since PHP 8.1.\n\nThus do not create a title array with a `null` entry in `DivinerFindController` when there is no `$query_text`, later to be read via `$this->titles` in `DivinerAtomRef`.\n\n```\nERROR 8192: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated at [/var/www/html/phorge/phorge/src/applications/diviner/atom/DivinerAtomRef.php:205]\n #0 str_replace(string, string, NULL) called at [/src/applications/diviner/atom/DivinerAtomRef.php:205]\n #1 DivinerAtomRef::normalizeTitleString(NULL) called at [/src/applications/diviner/query/DivinerAtomQuery.php:344]\n```\n\nCredits to valerio.bozzolan for finding the right spot in the code.\n\nCloses T15911\n\nTest Plan: Go to http://phorge.localhost/diviner/find/ (not passing a `name` URI parameter), optionally with D25768 applied to avoid another exception\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15911\n\nDifferential Revision: https://we.phorge.it/D25769","shortMessageHtmlLink":"Fix PHP 8.1 \"str_replace(null)\" exception in DivinerAtomRef"}},{"before":"0fe0b9f681d0da79b313e0907933665930074704","after":"39237c0854fe08a6e41b9c4b1da6d65735b56f8d","ref":"refs/heads/master","pushedAt":"2024-09-16T08:22:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Set base-uri as User-Agent for OAuth1 and Github authentication\n\nSummary: Closes T15848\n\nTest Plan: Unclear.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: RhinosF1, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15848\n\nDifferential Revision: https://we.phorge.it/D25758","shortMessageHtmlLink":"Set base-uri as User-Agent for OAuth1 and Github authentication"}},{"before":"30c47690ffe3097d1823a8f709bf74c91c150f85","after":"0fe0b9f681d0da79b313e0907933665930074704","ref":"refs/heads/master","pushedAt":"2024-09-14T13:40:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Documentation: add article about Javelin DOM stuff\n\nSummary:\nFinally we know something about:\n\n- how to get an element by id ($)\n- how to find some children by a parent (scry)\n- how to find an exact child by a parent (find)\n- how to find a parent by a child (findAbove)\n\nCloses T15870\n\nTest Plan:\nYou read this article and you find something interesting and\nprobably also accurate.\n\nReviewers: O1 Blessed Committers, aklapper\n\nReviewed By: O1 Blessed Committers, aklapper\n\nSubscribers: aklapper, tobiaswiese, Matthew, Cigaryno\n\nManiphest Tasks: T15870\n\nDifferential Revision: https://we.phorge.it/D25822","shortMessageHtmlLink":"Documentation: add article about Javelin DOM stuff"}},{"before":"aa2b70708e2fa962cc6552759be2e726a8591501","after":"30c47690ffe3097d1823a8f709bf74c91c150f85","ref":"refs/heads/master","pushedAt":"2024-09-09T13:51:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove unused *ParallelQueries() database connection methods\n\nSummary:\n`executeParallelQueries()` is never called as `supportsParallelQueries()` returns `false` both in `AphrontDatabaseConnection` and `AphrontMySQLDatabaseConnection`.\nThus remove this unused code which was intentionally meant for HHVM which does not support PHP>=7 anyway.\n\nP.S. Dear Facebook, if you are using this, let us know. We don't want to hurt your legacy Phabricator installation.\n\nCloses T15919\n\nTest Plan: Grep for both functions.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15919\n\nDifferential Revision: https://we.phorge.it/D25789","shortMessageHtmlLink":"Remove unused *ParallelQueries() database connection methods"}},{"before":"f25c531e56852c8fff5c6ffbf5ce3c5a5f3d7070","after":"aa2b70708e2fa962cc6552759be2e726a8591501","ref":"refs/heads/master","pushedAt":"2024-09-09T13:48:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"PHPDoc: Replace \"@return this\" with \"@return $this\"\n\nSummary:\nPer https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md the valid keyword is `$this`.\nThus replace `this` to make output of static code analysis slightly less noisy.\n\n(See rARC4b7ee1985b3c15b4af81b5480522ae24c0afd6a2 for its Arcanist counterpart.)\n\nTest Plan: Read the docs.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25819","shortMessageHtmlLink":"PHPDoc: Replace \"@return this\" with \"@return $this\""}},{"before":"123831b53fb7572cba11e9c990dcb9d247614890","after":"f25c531e56852c8fff5c6ffbf5ce3c5a5f3d7070","ref":"refs/heads/master","pushedAt":"2024-09-07T09:00:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix unit test failure in link-alternate\n\nSummary: `arc unit --everything` triggers a `FAIL PhutilRemarkupEngineTestCase::testEngine` due to adding the CSS class `remarkup-link-ext` in rP349f006904fabf1d4df31ff4840502af3ab379a7. Thus update it accordingly.\n\nTest Plan: Run `arc unit`.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25820","shortMessageHtmlLink":"Fix unit test failure in link-alternate"}},{"before":"9e6507d37aef1ed5273ce7b28935064d836d8a26","after":"123831b53fb7572cba11e9c990dcb9d247614890","ref":"refs/heads/master","pushedAt":"2024-09-06T17:17:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Drop question mark suffix from optional PHPDoc @param types\n\nSummary:\nThe question mark in `@param type? $foo Desc` is a custom notation not consistently applied across the codebase and not necessarily obvious to the reader (because custom and not mentioned in https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md ).\nInstead, explicitly state \"optional\" in the parameter description for clarity.\n\nCloses T15925.\n\nTest Plan: Run PHPStan, see no `PHPDoc @param has invalid value (type? [...]` style output anymore.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15925\n\nDifferential Revision: https://we.phorge.it/D25797","shortMessageHtmlLink":"Drop question mark suffix from optional PHPDoc @param types"}},{"before":"b4bc480817cd3bc28111358ab6dbd8273aea5a24","after":"9e6507d37aef1ed5273ce7b28935064d836d8a26","ref":"refs/heads/master","pushedAt":"2024-09-06T08:26:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix exception handling in ConpherenceViewController::handleRequest()\n\nSummary:\nIt is only possible `throw` an `Exception` class. `Aphront400Response` is not an Exception class but a `Phobject`.\nThus `return` it, like the `Aphront404Response`s within the same method.\n\nTest Plan:\nCheck parent classes; run static code analysis. Hack the code to force that return,\nand successfully obtain an HTTP 400 status code page.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25780","shortMessageHtmlLink":"Fix exception handling in ConpherenceViewController::handleRequest()"}},{"before":"43539b220ce28869073422a772ad72c793a7d310","after":"b4bc480817cd3bc28111358ab6dbd8273aea5a24","ref":"refs/heads/master","pushedAt":"2024-09-05T10:28:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exceptions creating an OAuth provider\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php:163]\n```\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuth1AuthProvider.php:178]\n```\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/auth/provider/PhabricatorOAuthAuthProvider.php:147]\n```\n\nCloses T15912\n\nTest Plan: As an admin, create an OAuth provider (such as using Bitbucket) and check the error logs or Dark Console.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15912\n\nDifferential Revision: https://we.phorge.it/D25771","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exceptions creating an OAuth provider"}},{"before":"8c3a62d6afd06dc1c47ae4be368c4eacfe870370","after":"43539b220ce28869073422a772ad72c793a7d310","ref":"refs/heads/master","pushedAt":"2024-09-04T10:17:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove trivial cases of unreachable code\n\nSummary:\nStatic code analysis can detect `Unreachable statement - code above always terminates.`\nThe vast majority of occurrences in the Phorge codebase are due to an unreachable `break` within a `case` after a `return` or after an all-covering `if/else`.\nAll this noise makes it harder to spot real logic issues (there are some!), thus fix these trivial cases.\n\nTest Plan: Examine the code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25802","shortMessageHtmlLink":"Remove trivial cases of unreachable code"}},{"before":"24ebac8ad7348e4808fb8e2bfc26c2fea696f675","after":"8c3a62d6afd06dc1c47ae4be368c4eacfe870370","ref":"refs/heads/master","pushedAt":"2024-09-04T10:14:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exception rendering a File's default Alt text\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\nRefs T15936\n\nTest Plan: Read the code; compare to D25186.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15936\n\nDifferential Revision: https://we.phorge.it/D25817","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exception rendering a File's default Alt text"}},{"before":"d4d620fa6df150672f6daa8b23be2a7a8222fd54","after":"24ebac8ad7348e4808fb8e2bfc26c2fea696f675","ref":"refs/heads/master","pushedAt":"2024-08-31T06:48:49.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove unused shouldUse* functions from PhabricatorRepository\n\nSummary:\nCalls to private functions `PhabricatorRepository::shouldUseSSH()` and `PhabricatorRepository::shouldUseHTTP()` were removed in https://we.phorge.it/rP29d1115037b84454c4fd186c47f33f162cc337b9.\nCall to private function `PhabricatorRepository::shouldUseSVNProtocol()` was removed in https://we.phorge.it/rP575c01373ee77c12b06696b34cfdf43a2eb26c42.\n\nTest Plan: Grep the code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25786","shortMessageHtmlLink":"Remove unused shouldUse* functions from PhabricatorRepository"}},{"before":"b02615bd5027ee51ac68d48a0a64306b75285789","after":"d4d620fa6df150672f6daa8b23be2a7a8222fd54","ref":"refs/heads/master","pushedAt":"2024-08-24T20:30:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Workboard: have thin scrollbars\n\nSummary:\nThe original intention was to hugely improve the UX interaction on Workboards for Microsoft Windows\nusers, since they have BIG GIANT SCROLLBARS. So we adopted thin scrollbars, that are graphically\npleasant for all other \"normal\" browsers too.\n\nNote that this can be really thin now. The premise is: probably you will never notice this, since\nyou never try to click on the scrollbar.\n\nIn case, if you have problems, contact us. But note:\n\n- you can use the mouse wheel as usual\n- you can use keyboard navigation (try the tab key - it auto-scrolls!)\n- you can use usual touch movements on relevant devices.\n\nThe non-standard CSS version is kept for compatibility.\n\nScrollbar examples in Microsoft Windows with Chromium-based browser:\n\n| Before | After |\n|-----------|-----------|\n| {F312321} | {F312323} |\n\nScrollbar examples in GNU/Linux with KDE, on mouse hover:\n\n| Before | After |\n|-----------|-----------|\n| {F313082} | {F313083} |\n\n... on bar selected:\n\n| Before | After |\n|-----------|-----------|\n| {F313084} | {F313085} |\n\nRef T15488\n\nTest Plan:\nView a Workboard and a Differential side panel\non Firefox with static scrollbars enabled.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: aklapper, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15488\n\nDifferential Revision: https://we.phorge.it/D25305","shortMessageHtmlLink":"Workboard: have thin scrollbars"}},{"before":"3c5e43cccbf07e26bd3ffcd94aec212643ac7156","after":"b02615bd5027ee51ac68d48a0a64306b75285789","ref":"refs/heads/master","pushedAt":"2024-08-24T13:34:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Subversion: fix empty \"Authored on\" date on commit pages\n\nSummary:\nSubversion does not allow to have local commits. So, manage this case.\n\nCloses T15612\n\nTest Plan:\nSurf a git commit: nothing changed.\n\nSurf a svn commit: the \"Authored on\" date is not empty anymore.\n\nReviewers: O1 Blessed Committers, aklapper\n\nReviewed By: O1 Blessed Committers, aklapper\n\nSubscribers: aklapper, tobiaswiese, Matthew, Cigaryno\n\nManiphest Tasks: T15612\n\nDifferential Revision: https://we.phorge.it/D25796","shortMessageHtmlLink":"Subversion: fix empty \"Authored on\" date on commit pages"}},{"before":"b9fb8d789151317fa3cb9a62433773d3b681c883","after":"3c5e43cccbf07e26bd3ffcd94aec212643ac7156","ref":"refs/heads/master","pushedAt":"2024-08-22T09:17:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exception in DiffusionGitRawDiffQuery\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\n```\nDeprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /home/phd/phabricator/src/applications/diffusion/query/rawdiff/DiffusionGitRawDiffQuery.php on line 38\n```\n\nCloses T15399\n\nTest Plan: Read the code.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15399\n\nDifferential Revision: https://we.phorge.it/D25779","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exception in DiffusionGitRawDiffQuery"}},{"before":"b44b566b1334c474722a6acb5ffa4195f0fe8fa2","after":"b9fb8d789151317fa3cb9a62433773d3b681c883","ref":"refs/heads/master","pushedAt":"2024-08-22T09:17:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Replace invalid PHPDoc @return type boolean with bool\n\nSummary: `@return boolean` is not a valid type thus use `@return bool`.\n\nTest Plan: None.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25795","shortMessageHtmlLink":"Replace invalid PHPDoc @return type boolean with bool"}},{"before":"9f07e5083dfa523c81126c0edf67a3360906b74a","after":"b44b566b1334c474722a6acb5ffa4195f0fe8fa2","ref":"refs/heads/master","pushedAt":"2024-08-21T13:06:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Add missing variable names to PHPDoc @param of methods\n\nSummary:\nAdd variable names (`$varname` in `@param type $varname explanation`) to PHPDoc method headers, for fun and profit.\n\nCloses T15923\n\nTest Plan:\n* Read the method signatures and their corresponding PHPDoc headers at your fireplace\n* Still run `./bin/diviner generate` without explosions (though it is very lenient anyway?)\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15923\n\nDifferential Revision: https://we.phorge.it/D25794","shortMessageHtmlLink":"Add missing variable names to PHPDoc @param of methods"}},{"before":"e1e1570c116594ac60f20a110c1c262a77097727","after":"9f07e5083dfa523c81126c0edf67a3360906b74a","ref":"refs/heads/master","pushedAt":"2024-08-20T11:47:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Add some DateTime handling related PHPDocs\n\nSummary:\nAs I was fiddling with an exception handling invalid DateTime, add some PHPDoc\nfor the next time someone needs to understand this code.\n\nTest Plan: Use `get_class()` to check parameters and return values.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25793","shortMessageHtmlLink":"Add some DateTime handling related PHPDocs"}},{"before":"cf5abd9e4b6bff2efc4bb7464cfbd5789934e1e0","after":"e1e1570c116594ac60f20a110c1c262a77097727","ref":"refs/heads/master","pushedAt":"2024-08-20T08:11:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove unused methods from ConpherenceDurableColumnView\n\nSummary: Calls to private methods `ConpherenceDurableColumnView::buildStatusText()` and `ConpherenceDurableColumnView::buildSendButton()` were removed in https://we.phorge.it/rP95d174956639aac7525d52368944edfff7cdb824\n\nTest Plan: Grep the code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25784","shortMessageHtmlLink":"Remove unused methods from ConpherenceDurableColumnView"}},{"before":"9c684c80d63d08194c6d1d175a64e8f91ec07f84","after":"cf5abd9e4b6bff2efc4bb7464cfbd5789934e1e0","ref":"refs/heads/master","pushedAt":"2024-08-20T08:09:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove unused HeraldAdapter:buildTokenizerFieldValue()\n\nSummary:\nThis private function was added in https://we.phorge.it/rP715233fb611569b86f8fd4d8339a7e514c749d69.\nIts last use was removed in https://we.phorge.it/rP776caa507b15ef013d3d623d30b294181e2b4c11.\n\nTest Plan: Grep the code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25785","shortMessageHtmlLink":"Remove unused HeraldAdapter:buildTokenizerFieldValue()"}},{"before":"66bd13b193b666e77c00ccea0fea508134c5397a","after":"9c684c80d63d08194c6d1d175a64e8f91ec07f84","ref":"refs/heads/master","pushedAt":"2024-08-19T12:48:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix various potential PHP 8.1 \"strlen(null)\" exceptions\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\nAll lines changed in this patch had `Parameter #1 $string of function strlen expects string, string|null given` reported by PHPStan. Thus these should be safe to replace with `phutil_nonempty_string` as no calls care about the actual `strlen()` return value (length of a string).\n\nTest Plan: Run static code analysis via `phpstan analyse -l 9`\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25778","shortMessageHtmlLink":"Fix various potential PHP 8.1 \"strlen(null)\" exceptions"}},{"before":"edb2175a9bb5e6edc4348cad307c4f5303ab28c6","after":"66bd13b193b666e77c00ccea0fea508134c5397a","ref":"refs/heads/master","pushedAt":"2024-08-18T12:57:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Remove unused PHUICalendarMonthView::getMaxDailyEventsForWeek()\n\nSummary: Call to this private function was removed in https://we.phorge.it/rPaee9d88c17e25b924ecd5293691cc6fe38d6c7d9.\n\nTest Plan: Grep the code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25788","shortMessageHtmlLink":"Remove unused PHUICalendarMonthView::getMaxDailyEventsForWeek()"}},{"before":"b9ea6f1ce823dcd83a431f5913d9b1fe29dd25bd","after":"edb2175a9bb5e6edc4348cad307c4f5303ab28c6","ref":"refs/heads/master","pushedAt":"2024-08-15T18:23:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PhabricatorEmptyQueryException handling in DiffusionCommitQuery::loadPage()\n\nSummary: Add an additional check that `$empty_exception` is not `null` before try to `throw` it.\n\nTest Plan: Read the previous code; run static code analysis.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25781","shortMessageHtmlLink":"Fix PhabricatorEmptyQueryException handling in DiffusionCommitQuery::…"}},{"before":"58f1c83a5ac56073a1960772c78c99ece72d4729","after":"b9ea6f1ce823dcd83a431f5913d9b1fe29dd25bd","ref":"refs/heads/master","pushedAt":"2024-08-13T09:24:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"docs/file_domain: remove cloudflare mention of autominify\n\nSummary:\n[Auto Minify](https://developers.cloudflare.com/speed/optimization/content/auto-minify/)[1][2] is deprecated and will be removed after 2024-08-05.\n\n(For distant future where Cloudflare deletes the docs)\n[1]: [web.archive.org](https://web.archive.org/web/20240507123639/https://developers.cloudflare.com/speed/optimization/content/auto-minify/)\n[2]: [archive.today](https://archive.md/wWPpM)\n\nSigned-off-by: Yongmin Hong \n\nTest Plan:\n1. Wait for 2024-08-05\n2. Browse to `https://dash.cloudflare.com///speed/optimization/content`\n3. Verify \"Auto Minify\" is gone\n\nReviewers: O1 Blessed Committers, avivey\n\nReviewed By: O1 Blessed Committers, avivey\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25617","shortMessageHtmlLink":"docs/file_domain: remove cloudflare mention of autominify"}},{"before":"2b7c0ec92f6c5662d1fe332725b29df11721f98d","after":"58f1c83a5ac56073a1960772c78c99ece72d4729","ref":"refs/heads/master","pushedAt":"2024-08-11T20:36:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exception in DivinerFindController\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/diviner/controller/DivinerFindController.php:40]\n```\n\nCloses T15910\n\nTest Plan:\nGo to this (or any other Diviner Find URL not passing a `type` URI parameter): now it works:\n\nhttp://phorge.localhost/diviner/find/?name=PhutilSafeHTML\n\nGo to this (or any other Diviner Find URL passing a `type` URI parameter): it still works:\n\nhttp://phorge.localhost/diviner/find/?name=PhutilSafeHTML&type=class\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15910\n\nDifferential Revision: https://we.phorge.it/D25768","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exception in DivinerFindController"}},{"before":"b74f1ad519e8a0d07dc1136f5927cd58d9aed8e5","after":"2b7c0ec92f6c5662d1fe332725b29df11721f98d","ref":"refs/heads/master","pushedAt":"2024-08-10T20:16:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Destroy file attachments when file is deleted, or object is deleted\n\nSummary:\nAdds file attachment deletion logics:\n\n- PhabricatorFile: delete the attachment if file is deleted\n- destruction engine extension: delete attachment if object is deleted\n- SQL patch: delete existing leftover attachments from deleted files\n\nTo apply the cleanup, as usual, run:\n\n ./bin/storage upgrade\n\nThis cleanup may take some time, proportionally to the size of these tables:\n\n phabricator_file.file\n phabricator_file.file_attachment\n\nJust as an indication: the storage upgrade, in a Phorge with `file` count 1.3M rows and `file_attachment` consisting in 9K rows, it may delete 170K rows in less than 1 second on average hardware.\n\nCloses T15110\n\nTest Plan:\nApply the patch, run `./bin/storage/upgrade`:\n\n- no \"Unknown Object\" in any \"Referenced Files\" curtain of any object.\n\nHave phd daemon running.\n\nUpload file, attach the file to a task, delete the file from the web interface:\n\n- no \"Unknown Object\" in \"Referenced Files\" curtain of that task.\n- the query `SELECT * FROM file_attachment WHERE filePHID = ''` returns empty result\n\nUpload file, attach the file to a task, delete the task from the `./bin/remove destroy` workflow:\n\n- the query `SELECT * FROM file_attachment WHERE objectPHID = ''` returns empty result\n\nReviewers: O1 Blessed Committers, avivey, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, avivey, valerio.bozzolan\n\nSubscribers: Ekubischta, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nTags: #files\n\nManiphest Tasks: T15110\n\nDifferential Revision: https://we.phorge.it/D25051","shortMessageHtmlLink":"Destroy file attachments when file is deleted, or object is deleted"}},{"before":"88225b99f2fc9c039e9dba56b06200357307832f","after":"b74f1ad519e8a0d07dc1136f5927cd58d9aed8e5","ref":"refs/heads/master","pushedAt":"2024-08-07T15:41:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix 404 link in Diviner to \"Configuring File Storage\" article\n\nSummary: Fix a broken link in documentation.\n\nTest Plan:\n1. Go to https://we.phorge.it/book/dev/class/PhabricatorFileStorageEngine/\n2. Click link \"For more information, see File Storage Technical Documentation.\"\n3. Get a 404 via https://we.phorge.it/diviner/find/?name=File_Storage_Technical_Documentation&type=article&jump=1 beforehand; get an article via https://we.phorge.it/diviner/find/?name=Configuring_File_Storage&type=article&jump=1 afterhand.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nDifferential Revision: https://we.phorge.it/D25762","shortMessageHtmlLink":"Fix 404 link in Diviner to \"Configuring File Storage\" article"}},{"before":"89778dc9e617b4edcdcbb457adf7b034e2b87c1b","after":"88225b99f2fc9c039e9dba56b06200357307832f","ref":"refs/heads/master","pushedAt":"2024-08-07T11:57:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Matthewrbowker","name":"Matthew Bowker","path":"/Matthewrbowker","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/802331?s=80&v=4"},"commit":{"message":"Fix PHP 8.1 \"strlen(null)\" exception in ManiphestTaskPointsTransaction\n\nSummary:\n`strlen()` was used in Phabricator to check if a generic value is a non-empty string.\nThis behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.\n\nNote: this may highlight other absurd input values that might be worth correcting\ninstead of just ignoring. If phutil_nonempty_string() throws an exception in your\ninstance, report it to Phorge to evaluate and fix that specific corner case.\n\n```\nERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/maniphest/xaction/ManiphestTaskPointsTransaction.php:85]\n```\n\nCloses T15902\n\nTest Plan: Unclear due to lack of steps to reproduce.\n\nReviewers: O1 Blessed Committers, valerio.bozzolan\n\nReviewed By: O1 Blessed Committers, valerio.bozzolan\n\nSubscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno\n\nManiphest Tasks: T15902\n\nDifferential Revision: https://we.phorge.it/D25765","shortMessageHtmlLink":"Fix PHP 8.1 \"strlen(null)\" exception in ManiphestTaskPointsTransaction"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yMFQwNjo0OToxNS4wMDAwMDBazwAAAAS7oqRT","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wN1QxMTo1NzoxMi4wMDAwMDBazwAAAASUH0Qv"}},"title":"Activity · phorgeit/phorge"}