{"push_id":1390901654,"size":263,"distinct_size":263,"ref":"refs/heads/simplified-chinese-l10n","head":"d723e61b30f004b15fcfc63ea4fb04ef330396db","before":"a20730e8eb08855e86dd368d17ebf6f809fc5596","commits":[{"sha":"36fa4e53806357dc04613c0b75eb844dc5c60dc7","author":{"name":"Chad Little","email":"309b338a702206971e2989de6d1d8db3503bf8c3@phacility.com"},"message":"Use new Guide layout in Config->Welcome\n\nSummary: Ref T11132, swaps in new UI for welcome page using guide modules\n\nTest Plan: Test instance and non instance guides. Test each setting. Unclear on how to test people / Phacility. Just change the URL link?\n\nReviewers: epriestley\n\nReviewed By: epriestley\n\nSubscribers: Korvin\n\nManiphest Tasks: T11132\n\nDifferential Revision: https://secure.phabricator.com/D16482","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/36fa4e53806357dc04613c0b75eb844dc5c60dc7"},{"sha":"c38bc3988d7ac3d1117c0ee1d94a55b9c2ac05eb","author":{"name":"Chad Little","email":"309b338a702206971e2989de6d1d8db3503bf8c3@phacility.com"},"message":"Rebuild CSS packages\n\nSummary: Review multimeter logs for new CSS/JS resources that should be in packages.\n\nTest Plan: Review some pages in sandbox, no CSS errors.\n\nReviewers: epriestley\n\nReviewed By: epriestley\n\nSubscribers: Korvin\n\nDifferential Revision: https://secure.phabricator.com/D16490","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/c38bc3988d7ac3d1117c0ee1d94a55b9c2ac05eb"},{"sha":"4dc37bcee080ed79347b4d4a2b34ff843293ff5c","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Ignore repository versions on inactive devices in \"Repository Servers\" panel in Config\n\nSummary:\nFixes T11590. Currently, we incorrectly consider cluster repository versions that are (or were) on devices which are no longer part of the active cluster service when building this status screen.\n\nInstead, ignore them. This is just a display bug; the actual `ClusterEngine` already had similar logic.\n\nTest Plan:\n  - Added a bad leader record to `repository_workingcopyversion`.\n  - Before patch, got a bad \"Partial (1w)\" sync:\n\n{F1802292}\n\n  - After patch, got a good \"Sycnchronized\":\n\n{F1802293}\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11590\n\nDifferential Revision: https://secure.phabricator.com/D16492","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/4dc37bcee080ed79347b4d4a2b34ff843293ff5c"},{"sha":"4b6da9735ba7cd1e67cc4ef8f0df8f089cf419f7","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Remove overbearing policy checks in Phame\n\nSummary:\nFixes T11584. This controller does unnecessary CAN_EDIT policy checks.\n\nThese checks are enforced by `EditEngine`, and you can make certain types of edits (including comments) even without full-blown edit permission.\n\nTest Plan:\n  - Commented as a user without edit permission.\n  - Tried to edit as a user without edit permission, was rebuffed with a policy dialog.\n  - Edited as a user with edit permission.\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11584\n\nDifferential Revision: https://secure.phabricator.com/D16493","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/4b6da9735ba7cd1e67cc4ef8f0df8f089cf419f7"},{"sha":"74d5ae7bec46dfa26703f00e31aef8eedede2c92","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Clean up some log spam caused by races in VersionedDraft\n\nSummary:\nTwo minor issues that I caught in the log while fixing Phame permissions:\n\n  - We had a JS bug which would cause us to immediately generate two comment previews at the exact same time -- one for loading the page, and one for \"switching to desktop\". Instead, only generate the \"switch to desktop\" preview if we really switched to desktop from a different device layout.\n  - These two requests could end up reading/writing the VersionedDraft table at exactly the same time fairly often (e.g., after a comment submission, the page would load, send two preview requests at exactly the same time, and they'd race fairly reliably for me locally). If we do race, recover from the race.\n\nTest Plan:\nSubmitted some Phame comments.\n\n  - No more error log errors about VersionedDraft keys.\n  - Saw only one preview request when loading the page instead of two.\n\nHere's the specific stack trace I caught:\n\n```\n[Mon Sep 05 12:15:33.639930 2016] [:error] [pid 50608] [client 127.0.0.1:55278] [2016-09-05 14:15:33] EXCEPTION: (AphrontDuplicateKeyQueryException) #1062: Duplicate entry 'PHID-POST-fknnpzjnsdgc3rqobhst-PHID-USER-pr5rjpuilpfserepsd2k-13' for key 'key_object' at [<phutil>/src/aphront/storage/connection/mysql/AphrontBaseMySQLDatabaseConnection.php:314]\n[Mon Sep 05 12:15:33.640801 2016] [:error] [pid 50608] [client 127.0.0.1:55278] arcanist(head=master, ref.master=9e82ef979e81), corgi(head=master, ref.master=5b9171222bc9), instances(head=stable, ref.master=485bc8128198, ref.stable=2983bc917601), ledger(head=master, ref.master=4da4a24b8779), libcore(), phabricator(head=phame2, ref.master=4b6da9735ba7, ref.phame2=4b6da9735ba7), phutil(head=stable, ref.master=97f05269fdb1, ref.stable=c14343ee620e), services(head=stable, ref.master=1fcb5cdb7582, ref.stable=2d8088a5b4b3)\n[Mon Sep 05 12:15:33.640815 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #0 <#2> AphrontBaseMySQLDatabaseConnection::throwCommonException(integer, string) called at [<phutil>/src/aphront/storage/connection/mysql/AphrontBaseMySQLDatabaseConnection.php:348]\n[Mon Sep 05 12:15:33.640830 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #1 <#2> AphrontBaseMySQLDatabaseConnection::throwQueryCodeException(integer, string) called at [<phutil>/src/aphront/storage/connection/mysql/AphrontBaseMySQLDatabaseConnection.php:289]\n[Mon Sep 05 12:15:33.640833 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #2 <#2> AphrontBaseMySQLDatabaseConnection::throwQueryException(mysqli) called at [<phutil>/src/aphront/storage/connection/mysql/AphrontBaseMySQLDatabaseConnection.php:185]\n[Mon Sep 05 12:15:33.640836 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #3 <#2> AphrontBaseMySQLDatabaseConnection::executeRawQuery(string) called at [<phutil>/src/xsprintf/queryfx.php:8]\n[Mon Sep 05 12:15:33.640839 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #4 <#2> queryfx(AphrontMySQLiDatabaseConnection, string, string, string, array, string)\n[Mon Sep 05 12:15:33.640841 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #5 <#2> call_user_func_array(string, array) called at [<phutil>/src/aphront/storage/connection/AphrontDatabaseConnection.php:42]\n[Mon Sep 05 12:15:33.640844 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #6 <#2> AphrontDatabaseConnection::query(string, string, string, array, string) called at [<phabricator>/src/infrastructure/storage/lisk/LiskDAO.php:1261]\n[Mon Sep 05 12:15:33.640846 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #7 <#2> LiskDAO::insertRecordIntoDatabase(string) called at [<phabricator>/src/infrastructure/storage/lisk/LiskDAO.php:1106]\n[Mon Sep 05 12:15:33.640849 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #8 <#2> LiskDAO::insert() called at [<phabricator>/src/infrastructure/storage/lisk/LiskDAO.php:1075]\n[Mon Sep 05 12:15:33.640851 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #9 <#2> LiskDAO::save() called at [<phabricator>/src/applications/draft/storage/PhabricatorVersionedDraft.php:65]\n[Mon Sep 05 12:15:33.640854 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #10 <#2> PhabricatorVersionedDraft::loadOrCreateDraft(string, string, integer) called at [<phabricator>/src/applications/transactions/editengine/PhabricatorEditEngine.php:1669]\n[Mon Sep 05 12:15:33.640857 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #11 <#2> PhabricatorEditEngine::buildCommentResponse(PhamePost) called at [<phabricator>/src/applications/transactions/editengine/PhabricatorEditEngine.php:894]\n[Mon Sep 05 12:15:33.640859 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #12 <#2> PhabricatorEditEngine::buildResponse() called at [<phabricator>/src/applications/phame/controller/post/PhamePostEditController.php:60]\n[Mon Sep 05 12:15:33.640862 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #13 <#2> PhamePostEditController::handleRequest(AphrontRequest) called at [<phabricator>/src/aphront/configuration/AphrontApplicationConfiguration.php:237]\n[Mon Sep 05 12:15:33.640865 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #14 phlog(AphrontDuplicateKeyQueryException) called at [<phabricator>/src/aphront/handler/PhabricatorAjaxRequestExceptionHandler.php:27]\n[Mon Sep 05 12:15:33.640868 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #15 PhabricatorAjaxRequestExceptionHandler::handleRequestException(AphrontRequest, AphrontDuplicateKeyQueryException) called at [<phabricator>/src/aphront/configuration/AphrontApplicationConfiguration.php:644]\n[Mon Sep 05 12:15:33.640870 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #16 AphrontApplicationConfiguration::handleException(AphrontDuplicateKeyQueryException) called at [<phabricator>/src/aphront/configuration/AphrontApplicationConfiguration.php:242]\n[Mon Sep 05 12:15:33.640873 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #17 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phabricator>/src/aphront/configuration/AphrontApplicationConfiguration.php:149]\n[Mon Sep 05 12:15:33.640879 2016] [:error] [pid 50608] [client 127.0.0.1:55278]   #18 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phabricator>/webroot/index.php:17]\n```\n\nReviewers: chad\n\nReviewed By: chad\n\nDifferential Revision: https://secure.phabricator.com/D16494","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/74d5ae7bec46dfa26703f00e31aef8eedede2c92"},{"sha":"7e365fd3f15be4e95b1a64c21c39a5b1ffc7483b","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Allow `bin/storage renamespace` to work with underscores\n\nIf the namespace is something like \"test_example\" we currently fail to\nrenamespace the dump.\n\n(Cowboy committing this since this is currently blocking a data export.)\n\nTest Plan:\n\n  - Renamespaced a local dump, examined the output, saw 60 create / 60 use, reimported it.\n  - Will export in production.\n\nAuditors: chad","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/7e365fd3f15be4e95b1a64c21c39a5b1ffc7483b"},{"sha":"defee9385196a21c13a59c64ad64df760bddb395","author":{"name":"Chad","email":"309b338a702206971e2989de6d1d8db3503bf8c3@dev.legacygt.com"},"message":"Add Slack authentication adapter\n\nSummary: For phabricator. Adds a Slack auth adapater and icon.\n\nTest Plan:\nCreate a new Slack Application for login, generate id and secret. Activate login and registration for Slack. Create a new account with Slack credentials. Log out. Log in with Slack credentials. Set my avatar with Slack. Slack. Slack.\n\n{F1802649}\n\nReviewers: epriestley\n\nReviewed By: epriestley\n\nSubscribers: Korvin\n\nDifferential Revision: https://secure.phabricator.com/D16496","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/defee9385196a21c13a59c64ad64df760bddb395"},{"sha":"7eee5c5f6f0061a0ab40683ca4a8d1801b5ba77c","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Fix two \"proably\" typos\n\nSummary: Caught one of these while reviewing docs, grepped for the other one.\n\nTest Plan: `grep`, reading\n\nReviewers: chad\n\nReviewed By: chad\n\nDifferential Revision: https://secure.phabricator.com/D16498","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/7eee5c5f6f0061a0ab40683ca4a8d1801b5ba77c"},{"sha":"b1932f1f5660501dc2de44d396e2ed45068e1bd1","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Split setup checks into \"preflight\" and \"normal\" checks\n\nSummary:\nRef T11589. Currently, initialization order is a bit tangled: we load configuration from the database, then later test if we can connect to the database.\n\nInstead, I'm going to do: preflight checks (\"PHP Version OK?\", \"Extensions installed?\"), then configuration, then normal setup checks.\n\nTo prepare for this, flag core checks as \"preflight\" and add a setup panel to visually confirm that I didn't miss anything.\n\nTest Plan: {F1803210}\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11589\n\nDifferential Revision: https://secure.phabricator.com/D16499","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/b1932f1f5660501dc2de44d396e2ed45068e1bd1"},{"sha":"af5769a6be28a2d07acd15cb02f0deef84741b1a","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Add a \"--copy\" flag to \"bin/files migrate\"\n\nSummary:\nRef T11596. When exporting data from the Phacility cluster, we `bin/files migrate` data from S3 into a database dump on the `aux` tier.\n\nWith current semantics, this //moves// the data and destroys it in S3.\n\nAdd a `--copy` flag to //copy// the data instead. This leaves the old copy around, which is what we want for exports.\n\nTest Plan:\n  - Ran `bin/files migrate` to go from `blob` to `disk` with `--copy`. Verified a copy was left in the database.\n  - Copied it back, verified a copy was left on disk (total: 2 database copies, 1 disk copy).\n  - Moved it back without copy, verified database was destroyed and disk was created (total: 1 database copy, 2 disk copies).\n  - Moved it back without copy, verified local disk was destroyed and blob was created (total: 2 datbabase copies, 1 disk copy).\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11596\n\nDifferential Revision: https://secure.phabricator.com/D16497","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/af5769a6be28a2d07acd15cb02f0deef84741b1a"},{"sha":"309960146344094969b02df488f7ff513c9573ac","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Split setup check phases into \"preflight\" and \"post-config\"\n\nSummary:\nRef T11589. This runs:\n\n  - preflight checks (critical checks: PHP version stuff, extensions);\n  - configuration;\n  - normal checks.\n\nThe PHP checks are split into critical (\"bad version\") and noncritical (\"sub-optimal config\").\n\nI tidied up the extension checks slightly, we realistically depend on `cURL` nowadays.\n\nTest Plan:\n  - Faked a preflight failure.\n  - Hit preflight check.\n  - Got expected error screen.\n  - Loaded normal pages.\n  - Hit a normal setup check.\n  - Used DarkConsole \"Startup\" tab to verify that preflight checks take <1ms to run (we run them on every page without caching, at least for now, but they only do trivial checks like PHP versions).\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11589\n\nDifferential Revision: https://secure.phabricator.com/D16500","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/309960146344094969b02df488f7ff513c9573ac"},{"sha":"00bb0c907147e0c2d6053a5d1d5eced36518e79f","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Raise setup warnings immediately when failing to load configuration from the database\n\nSummary:\nRef T11589. Previously, when we failed to load database configuration we just continued anyway, in order to get to setup checks so we could raise a better error.\n\nThere was a small chance that this could lead to pages running in a broken state, where ONLY that connection failed and everything else worked. This was accidentally fixed by narrowing the exceptions we continue on in D16489.\n\nHowever, this \"fix\" meant that users no longer got helpful setup instructions. Instead:\n\n  - Keep throwing these exceptions: it's bad to continue if we've failed to connect to the database.\n  - However, catch them and turn them into setup errors.\n  - Share all the setup code so these errors and setup check errors work the same way.\n\nTest Plan:\n  - Intentionally broke `mysql.host` and `mysql.pass`.\n  - Loaded pages.\n  - Got good setup errors.\n  - Hit normal setup errors too.\n  - Put everything back.\n  - Swapped into cluster mode.\n  - Intentionally broke cluster mode, saw failover to readonly.\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11589\n\nDifferential Revision: https://secure.phabricator.com/D16501","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/00bb0c907147e0c2d6053a5d1d5eced36518e79f"},{"sha":"0e8ceeb69088ac0e7b4a581fea04776a4aa3570e","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Continue on bad database configuration from select scripts\n\nSummary: Ref T11589. Provide a way for scripts to say \"just continue if database config fails\", and use it in `bin/config` and `bin/storage`.\n\nTest Plan:\n  - Broke database config.\n  - Ran `bin/config`, worked fine.\n  - Ran `bin/storage`, got helpful \"set up the database\" message.\n  - Ran `bin/repository`, got fatal.\n  - Ran normal site with valid/invalid config, got proper feedback.\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11589\n\nDifferential Revision: https://secure.phabricator.com/D16502","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/0e8ceeb69088ac0e7b4a581fea04776a4aa3570e"},{"sha":"f82adbf0c8ff07efb493e3c48ebdf5b342bb5e61","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Add a friendlier \"in flight\" error page\n\nSummary:\nRef T11589. When we hit a fatal setup issue (essentially always a connection failure) //after// we've already survived them on at least one request, we can be pretty sure a server went down and that the problem is not a setup/configuration issue.\n\nIn this case, show a friendlier error page instead of the fairly detailed technical one.\n\nTest Plan:\n  - Broke MySQL config.\n  - Restarted Apache.\n  - Got the \"admin/setup\" error page:\n\n{F1803268}\n\n  - Fixed the MySQL config.\n  - Loaded any page, to put us \"in flight\".\n  - Broke MySQL config.\n  - Loaded any page.\n  - Got the friendly \"in flight\" error page:\n\n{F1803271}\n\nIf you want to design this better, easiest way to get to it is:\n\n  - Set `mysql.port` to `9999` in `conf/local/local.json`.\n  - Reload any page while already running (don't restart).\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11589\n\nDifferential Revision: https://secure.phabricator.com/D16503","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/f82adbf0c8ff07efb493e3c48ebdf5b342bb5e61"},{"sha":"9ced2d7eb5140a5e1d5fab38f5ff71c3cad1980b","author":{"name":"Chad Little","email":"309b338a702206971e2989de6d1d8db3503bf8c3@phacility.com"},"message":"Basic kbd CSS for remarkup\n\nSummary: Keyboard key CSS for Remarkup.\n\nTest Plan:\nedit test in html, see new CSS\n\n{F1803550}\n\nReviewers: stratosgear, epriestley\n\nReviewed By: stratosgear, epriestley\n\nSubscribers: stratosgear, Korvin\n\nDifferential Revision: https://secure.phabricator.com/D16506","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/9ced2d7eb5140a5e1d5fab38f5ff71c3cad1980b"},{"sha":"38ae81fb3916a57dac920708f548583bd3bcb605","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Throw when callers pass an invalid constraint to a \"*.search\" method\n\nSummary:\nRef T11593. When you call a `*.search` method like `maniphest.search`, we don't currently validate that all the constraints you pass are recognized.\n\nI think there were two very weak arguments for not doing this:\n\n  - It makes compatibility in `arc` across versions slightly easier: if we add a new constraint, we could add it to `arc` but also do client-side filtering for a while.\n  - Conduit parameter types //could//, in theory, accept multiple inputs or optional/alias inputs.\n\nThese reasons are pretty fluff and T11593 is a concrete issue caused by not validating. Just validate instead.\n\nTest Plan:\n  - Made a `maniphest.search` call with a bogus constraint, got an explicit error about the bad constraint.\n  - Made a `maniphest.search` call with a valid constraint (`\"ids\"`).\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11593\n\nDifferential Revision: https://secure.phabricator.com/D16507","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/38ae81fb3916a57dac920708f548583bd3bcb605"},{"sha":"76af4d649bfcc8a6cfd6ca494c52f4be799dab9c","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Fix ContainsConstraints for array-valued custom field constraints in \"*.search\" methods\n\nSummary: Fixes T11593. We ask for a list of values when searching for custom \"link\" fields, but don't handle it correctly when actually construcitng a query.\n\nTest Plan:\nAdded this custom field:\n\n```\n{\n  \"mycompany.target-version\": {\n    \"name\": \"Target Version\",\n    \"type\": \"link\",\n    \"search\": true\n  }\n}\n```\n\nSet a task to \"beta\". Let daemons index it. Queried for:\n\n```\nconstraints: {\n  \"custom.mycompany.target-version\": [\n    \"beta\"\n  ]\n}\n```\n\nGot just one result back.\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11593\n\nDifferential Revision: https://secure.phabricator.com/D16508","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/76af4d649bfcc8a6cfd6ca494c52f4be799dab9c"},{"sha":"b7e51877c316d729134f2625cd2737646c9e5cf8","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Make storage adjustment a little nicer, especially the first time\n\nSummary:\nFixes T11583.\n\n  - When users run `bin/storage upgrade` for the first time on a new install, we currently give them a prompt which feels rough and which they can only reasonably ever answer \"yes\" to.\n  - We generally use cautionary language (\"found issues with schema\") in this workflow. Adjustments are now routine, so use more neutral and progress-oriented language (\"found adjustments to apply\").\n\nTest Plan:\n  - Ran `bin/storage upgrade --namesapce kappa123`, got an adjustment using neutral language without prompting.\n  - Dropped a key, ran `bin/storage upgrade`, got normal workflow (but with more neutral language).\n\nReviewers: chad\n\nReviewed By: chad\n\nManiphest Tasks: T11583\n\nDifferential Revision: https://secure.phabricator.com/D16509","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/b7e51877c316d729134f2625cd2737646c9e5cf8"},{"sha":"5f43abd7efb8b79de1b9b1983cc23780e7d0f488","author":{"name":"epriestley","email":"5bf00c93c9250d44d769b81890fa6584403ae7e0@epriestley.com"},"message":"Add a {key ..} Remarkup rule for discussing keystrokes\n\nSummary: Ruleset for styles in D16506.\n\nTest Plan: {F1803883}\n\nReviewers: chad\n\nReviewed By: chad\n\nDifferential Revision: https://secure.phabricator.com/D16510","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/5f43abd7efb8b79de1b9b1983cc23780e7d0f488"},{"sha":"9f43091714de5e61ab839ea0bab40e7ca00a9086","author":{"name":"Chad Little","email":"309b338a702206971e2989de6d1d8db3503bf8c3@phacility.com"},"message":"Fix properties box layout for profiles/projects on mobile\n\nSummary: The spacing here is incorrect and no longer needed.\n\nTest Plan: Test phone layout of project, profile.\n\nReviewers: epriestley\n\nReviewed By: epriestley\n\nSubscribers: Korvin\n\nDifferential Revision: https://secure.phabricator.com/D16511","distinct":true,"url":"https://api.github.com/repos/lingochamp/phabricator/commits/9f43091714de5e61ab839ea0bab40e7ca00a9086"}]}
{"actor":{"display_login":"benzheren"}}