2014-01-01 03:04:25 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This file is automatically generated. Use 'bin/celerity map' to rebuild it.
|
2014-07-16 03:29:06 +02:00
|
|
|
*
|
2014-01-01 03:04:25 +01:00
|
|
|
* @generated
|
|
|
|
*/
|
|
|
|
return array(
|
2014-07-14 17:33:33 +02:00
|
|
|
'names' => array(
|
2016-09-06 17:50:37 +02:00
|
|
|
'core.pkg.css' => 'ee3f9253',
|
2016-09-03 22:37:48 +02:00
|
|
|
'core.pkg.js' => '1d376fa9',
|
2015-04-28 23:51:49 +02:00
|
|
|
'darkconsole.pkg.js' => 'e7393ebb',
|
2016-07-09 22:53:57 +02:00
|
|
|
'differential.pkg.css' => '3fb7f532',
|
2016-06-30 20:37:38 +02:00
|
|
|
'differential.pkg.js' => '634399e9',
|
2016-05-11 19:17:33 +02:00
|
|
|
'diffusion.pkg.css' => '91c5d3a6',
|
2016-07-01 18:22:00 +02:00
|
|
|
'diffusion.pkg.js' => '84c8f8fd',
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
'maniphest.pkg.css' => '4845691a',
|
2015-12-04 15:37:36 +01:00
|
|
|
'maniphest.pkg.js' => '949a7498',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/aphront/aphront-bars.css' => '231ac33c',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/aphront/dark-console.css' => 'f54bf286',
|
2016-06-21 02:29:56 +02:00
|
|
|
'rsrc/css/aphront/dialog-view.css' => '913c172e',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/css/aphront/lightbox-attachment.css' => '7acac05d',
|
2015-09-08 02:18:35 +02:00
|
|
|
'rsrc/css/aphront/list-filter-view.css' => '5d6f0526',
|
2015-03-14 19:16:47 +01:00
|
|
|
'rsrc/css/aphront/multi-column.css' => 'fd18389d',
|
2016-04-09 14:41:08 +02:00
|
|
|
'rsrc/css/aphront/notification.css' => '3f6c89c9',
|
2015-03-07 01:44:18 +01:00
|
|
|
'rsrc/css/aphront/panel-view.css' => '8427b78d',
|
2016-08-12 02:12:53 +02:00
|
|
|
'rsrc/css/aphront/phabricator-nav-view.css' => 'b29426e9',
|
2016-07-28 20:45:42 +02:00
|
|
|
'rsrc/css/aphront/table-view.css' => '832656fd',
|
2015-11-04 22:51:51 +01:00
|
|
|
'rsrc/css/aphront/tokenizer.css' => '056da01b',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/aphront/tooltip.css' => '1a07aea8',
|
2016-06-20 22:52:18 +02:00
|
|
|
'rsrc/css/aphront/typeahead-browse.css' => '8904346a',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/aphront/typeahead.css' => 'd4f16145',
|
2014-12-17 20:10:50 +01:00
|
|
|
'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af',
|
2015-07-18 17:51:25 +02:00
|
|
|
'rsrc/css/application/auth/auth.css' => '0877ed6e',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/css/application/base/main-menu-view.css' => 'e862571a',
|
|
|
|
'rsrc/css/application/base/notification-menu.css' => 'b3ab500d',
|
2015-07-20 22:48:35 +02:00
|
|
|
'rsrc/css/application/base/phabricator-application-launch-view.css' => '95351601',
|
2016-02-23 17:36:49 +01:00
|
|
|
'rsrc/css/application/base/phui-theme.css' => '027ba77e',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'rsrc/css/application/base/standard-page-view.css' => '2b592894',
|
2015-06-26 18:33:03 +02:00
|
|
|
'rsrc/css/application/chatlog/chatlog.css' => 'd295b020',
|
2015-05-08 21:19:52 +02:00
|
|
|
'rsrc/css/application/conduit/conduit-api.css' => '7bc725c4',
|
2015-09-03 21:15:30 +02:00
|
|
|
'rsrc/css/application/config/config-options.css' => '0ede4c9b',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'rsrc/css/application/config/config-page.css' => '8798e14f',
|
2016-09-06 22:48:22 +02:00
|
|
|
'rsrc/css/application/config/config-template.css' => '8f18fa41',
|
2016-08-26 06:34:24 +02:00
|
|
|
'rsrc/css/application/config/setup-issue.css' => 'f794cfc3',
|
2015-05-20 04:38:34 +02:00
|
|
|
'rsrc/css/application/config/unhandled-exception.css' => '4c96257a',
|
2015-06-29 02:59:48 +02:00
|
|
|
'rsrc/css/application/conpherence/durable-column.css' => '86396117',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/css/application/conpherence/menu.css' => '90bdf85c',
|
|
|
|
'rsrc/css/application/conpherence/message-pane.css' => '5c7b7b17',
|
2015-06-19 21:44:08 +02:00
|
|
|
'rsrc/css/application/conpherence/notification.css' => '6cdcc253',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'rsrc/css/application/conpherence/transaction.css' => '85d0974c',
|
2015-06-26 18:33:03 +02:00
|
|
|
'rsrc/css/application/conpherence/update.css' => 'faf6be09',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/css/application/conpherence/widget-pane.css' => 'c5b74f9e',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4',
|
2016-04-09 19:07:02 +02:00
|
|
|
'rsrc/css/application/countdown/timer.css' => '16c52f5c',
|
2015-06-23 22:43:47 +02:00
|
|
|
'rsrc/css/application/daemon/bulk-job.css' => 'df9c1d4a',
|
2016-04-03 01:02:13 +02:00
|
|
|
'rsrc/css/application/dashboard/dashboard.css' => 'bc6f2127',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a',
|
2015-03-28 00:00:09 +01:00
|
|
|
'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
|
2016-07-09 22:53:57 +02:00
|
|
|
'rsrc/css/application/differential/changeset-view.css' => '9ef7d354',
|
2016-03-12 22:02:32 +01:00
|
|
|
'rsrc/css/application/differential/core.css' => '5b7b8ff4',
|
2016-03-11 01:33:44 +01:00
|
|
|
'rsrc/css/application/differential/phui-inline-comment.css' => '5953c28e',
|
2015-05-04 21:21:21 +02:00
|
|
|
'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
|
2014-03-12 21:53:04 +01:00
|
|
|
'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
|
2015-06-23 22:43:47 +02:00
|
|
|
'rsrc/css/application/differential/table-of-contents.css' => 'ae4b7a55',
|
2016-05-11 19:17:33 +02:00
|
|
|
'rsrc/css/application/diffusion/diffusion-icons.css' => 'd678600a',
|
2016-03-18 20:01:15 +01:00
|
|
|
'rsrc/css/application/diffusion/diffusion-readme.css' => '297373eb',
|
2016-03-17 20:01:22 +01:00
|
|
|
'rsrc/css/application/diffusion/diffusion-source.css' => '68b30fd3',
|
2015-05-28 20:47:06 +02:00
|
|
|
'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/application/files/global-drag-and-drop.css' => '5c1b47c2',
|
2014-01-06 06:47:21 +01:00
|
|
|
'rsrc/css/application/flag/flag.css' => '5337623f',
|
2016-03-25 23:41:05 +01:00
|
|
|
'rsrc/css/application/harbormaster/harbormaster.css' => 'f491c9f4',
|
2015-07-18 14:54:26 +02:00
|
|
|
'rsrc/css/application/herald/herald-test.css' => 'a52e323e',
|
2016-03-06 22:04:19 +01:00
|
|
|
'rsrc/css/application/herald/herald.css' => 'dc31f6e9',
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
'rsrc/css/application/maniphest/batch-editor.css' => 'b0f0b6d5',
|
2016-01-28 05:56:36 +01:00
|
|
|
'rsrc/css/application/maniphest/report.css' => '9b9580b7',
|
2015-06-26 18:33:03 +02:00
|
|
|
'rsrc/css/application/maniphest/task-edit.css' => 'fda62a9b',
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
'rsrc/css/application/maniphest/task-summary.css' => '11cc5344',
|
2015-07-02 23:39:43 +02:00
|
|
|
'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b',
|
2016-02-26 23:34:51 +01:00
|
|
|
'rsrc/css/application/paste/paste.css' => '1898e534',
|
2016-01-28 05:56:36 +01:00
|
|
|
'rsrc/css/application/people/people-profile.css' => '2473d929',
|
2016-07-06 21:24:36 +02:00
|
|
|
'rsrc/css/application/phame/phame.css' => '8efb0729',
|
2016-06-09 17:34:00 +02:00
|
|
|
'rsrc/css/application/pholio/pholio-edit.css' => '07676f51',
|
2014-06-25 00:23:57 +02:00
|
|
|
'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/application/pholio/pholio.css' => 'ca89d380',
|
2015-03-02 22:01:08 +01:00
|
|
|
'rsrc/css/application/phortune/phortune-credit-card-form.css' => '8391eb02',
|
2016-06-08 05:55:18 +02:00
|
|
|
'rsrc/css/application/phortune/phortune.css' => '5b99dae0',
|
2014-01-06 06:47:21 +01:00
|
|
|
'rsrc/css/application/phrequent/phrequent.css' => 'ffc185ad',
|
2016-04-20 15:00:10 +02:00
|
|
|
'rsrc/css/application/phriction/phriction-document-css.css' => '4282e4ad',
|
2014-11-17 23:06:05 +01:00
|
|
|
'rsrc/css/application/policy/policy-edit.css' => '815c66f7',
|
2014-04-29 19:43:38 +02:00
|
|
|
'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/application/policy/policy.css' => '957ea14c',
|
2016-03-04 00:18:41 +01:00
|
|
|
'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96',
|
2016-02-11 23:55:44 +01:00
|
|
|
'rsrc/css/application/project/project-card-view.css' => '9418c97d',
|
Always pre-wrap code blocks
Summary: Fixes T11416. Unclear what the side-effects of this would be, so bark if you find something. Previously, we'd have to overflow and scroll, which is kind of a pain since you're hiding content on long code blocks. This just wraps long lines, and preserves line breaks globally.
Test Plan: Test feed, profile, comments, inline comments, triple backticks.
Reviewers: avivey, epriestley
Reviewed By: avivey, epriestley
Subscribers: Korvin
Maniphest Tasks: T11416
Differential Revision: https://secure.phabricator.com/D16361
2016-08-02 20:22:53 +02:00
|
|
|
'rsrc/css/application/project/project-view.css' => '9ce99f21',
|
2014-04-18 15:44:45 +02:00
|
|
|
'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733',
|
2014-04-14 21:06:56 +02:00
|
|
|
'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd',
|
|
|
|
'rsrc/css/application/releeph/releeph-request-typeahead.css' => '667a48ae',
|
2016-08-30 05:09:43 +02:00
|
|
|
'rsrc/css/application/search/application-search-view.css' => 'be6454ec',
|
2015-09-11 05:57:26 +02:00
|
|
|
'rsrc/css/application/search/search-results.css' => '7dea472c',
|
2016-02-26 23:34:51 +01:00
|
|
|
'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230',
|
2014-05-05 19:54:34 +02:00
|
|
|
'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
|
2014-04-23 03:29:14 +02:00
|
|
|
'rsrc/css/application/uiexample/example.css' => '528b19de',
|
2016-02-26 23:34:51 +01:00
|
|
|
'rsrc/css/core/core.css' => 'd0801452',
|
Always pre-wrap code blocks
Summary: Fixes T11416. Unclear what the side-effects of this would be, so bark if you find something. Previously, we'd have to overflow and scroll, which is kind of a pain since you're hiding content on long code blocks. This just wraps long lines, and preserves line breaks globally.
Test Plan: Test feed, profile, comments, inline comments, triple backticks.
Reviewers: avivey, epriestley
Reviewed By: avivey, epriestley
Subscribers: Korvin
Maniphest Tasks: T11416
Differential Revision: https://secure.phabricator.com/D16361
2016-08-02 20:22:53 +02:00
|
|
|
'rsrc/css/core/remarkup.css' => '5ed06ed8',
|
2016-06-30 05:27:11 +02:00
|
|
|
'rsrc/css/core/syntax.css' => '769d3498',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/css/core/z-index.css' => '2b01a823',
|
Redesign Diviner
Summary:
This implements `PHUIDocumentViewPro` which should move to be the base for all documents (Phame, Phriction, Legalpad, Diviner). Overall this feels really good to me, but I'd like to roll it out into Diviner specifically first to work through the issues and then move into other apps and drop `PHUIDocumentView` once everything is converted. Some features are:
- White Background, no border on page
- Table of Contents is move to hidden menu (more space for documentation)
- Property List sits under the document
Some design decisions above are in anticipation of Phriction v3 and Unbeta Phame, specifically commenting and maybe some cool new Remarkup text layout options for Phame.
Test Plan:
Went through tons of pages on Diviner on Desktop, Tablet, Mobile. Bounce back to Phriction to make sure DocumentView CSS changes actually look better there.
{F930518}
{F930519}
{F930520}
{F930521}
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: tycho.tatitscheff, joshuaspence, Korvin
Differential Revision: https://secure.phabricator.com/D14374
2015-11-01 17:56:46 +01:00
|
|
|
'rsrc/css/diviner/diviner-shared.css' => 'aa3656aa',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/css/font/font-aleo.css' => '8bdb2835',
|
2016-04-11 20:29:12 +02:00
|
|
|
'rsrc/css/font/font-awesome.css' => '2b7ebbcc',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/css/font/font-lato.css' => 'c7ccd872',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'rsrc/css/font/phui-font-icon-base.css' => '870a7360',
|
2014-05-30 01:04:50 +02:00
|
|
|
'rsrc/css/layout/phabricator-filetree-view.css' => 'fccf9f82',
|
2015-09-17 17:23:22 +02:00
|
|
|
'rsrc/css/layout/phabricator-source-code-view.css' => 'cbeef983',
|
2016-07-27 18:07:29 +02:00
|
|
|
'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893',
|
|
|
|
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'fcc9fb41',
|
2016-07-27 16:23:07 +02:00
|
|
|
'rsrc/css/phui/calendar/phui-calendar-month.css' => '8e10e92c',
|
2016-08-01 21:06:35 +02:00
|
|
|
'rsrc/css/phui/calendar/phui-calendar.css' => '477acfaa',
|
2015-07-02 00:17:44 +02:00
|
|
|
'rsrc/css/phui/phui-action-list.css' => 'c5eba19d',
|
2015-09-17 17:22:23 +02:00
|
|
|
'rsrc/css/phui/phui-action-panel.css' => '91c7b835',
|
2016-04-13 18:20:15 +02:00
|
|
|
'rsrc/css/phui/phui-badge.css' => '3baef8db',
|
2016-08-04 22:49:16 +02:00
|
|
|
'rsrc/css/phui/phui-basic-nav-view.css' => '7093573b',
|
2015-12-21 20:15:44 +01:00
|
|
|
'rsrc/css/phui/phui-big-info-view.css' => 'bd903741',
|
2016-04-09 19:07:02 +02:00
|
|
|
'rsrc/css/phui/phui-box.css' => '5c8387cf',
|
2016-06-21 21:54:35 +02:00
|
|
|
'rsrc/css/phui/phui-button.css' => '4a5fbe3d',
|
2016-01-28 22:29:27 +01:00
|
|
|
'rsrc/css/phui/phui-chart.css' => '6bf6f78e',
|
2016-08-20 22:11:02 +02:00
|
|
|
'rsrc/css/phui/phui-cms.css' => 'be43c8a8',
|
2016-08-01 21:06:35 +02:00
|
|
|
'rsrc/css/phui/phui-crumbs-view.css' => '9dac418c',
|
2016-03-10 03:46:54 +01:00
|
|
|
'rsrc/css/phui/phui-curtain-view.css' => '7148ae25',
|
2016-08-01 21:06:35 +02:00
|
|
|
'rsrc/css/phui/phui-document-pro.css' => 'dc3d46ed',
|
2015-12-19 21:28:18 +01:00
|
|
|
'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
|
2016-08-08 05:04:57 +02:00
|
|
|
'rsrc/css/phui/phui-document.css' => 'c32e8dec',
|
2016-05-01 22:02:48 +02:00
|
|
|
'rsrc/css/phui/phui-feed-story.css' => 'aa49845d',
|
2015-11-22 22:10:41 +01:00
|
|
|
'rsrc/css/phui/phui-fontkit.css' => '9cda225e',
|
2016-08-17 23:57:21 +02:00
|
|
|
'rsrc/css/phui/phui-form-view.css' => '76b4a46c',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/phui/phui-form.css' => 'aac1d51d',
|
2016-03-17 20:01:22 +01:00
|
|
|
'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f',
|
2016-08-01 21:06:35 +02:00
|
|
|
'rsrc/css/phui/phui-header-view.css' => '06385974',
|
2016-02-05 05:11:36 +01:00
|
|
|
'rsrc/css/phui/phui-hovercard.css' => 'de1a2119',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
'rsrc/css/phui/phui-icon-set-selector.css' => '1ab67aad',
|
2016-08-19 21:49:38 +02:00
|
|
|
'rsrc/css/phui/phui-icon.css' => 'b1dbd620',
|
2016-02-15 06:29:56 +01:00
|
|
|
'rsrc/css/phui/phui-image-mask.css' => 'a8498f9c',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/phui/phui-info-panel.css' => '27ea50a1',
|
2016-03-17 20:01:22 +01:00
|
|
|
'rsrc/css/phui/phui-info-view.css' => '28efab79',
|
2015-12-19 15:29:48 +01:00
|
|
|
'rsrc/css/phui/phui-list.css' => '9da2aa00',
|
2016-03-12 22:02:32 +01:00
|
|
|
'rsrc/css/phui/phui-object-box.css' => '6b487c57',
|
2016-08-30 21:53:09 +02:00
|
|
|
'rsrc/css/phui/phui-object-item-list-view.css' => '87278fa0',
|
2015-06-02 23:34:04 +02:00
|
|
|
'rsrc/css/phui/phui-pager.css' => 'bea33d23',
|
2015-05-31 23:28:16 +02:00
|
|
|
'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
|
2016-08-01 21:06:35 +02:00
|
|
|
'rsrc/css/phui/phui-profile-menu.css' => '8a3fc181',
|
2016-06-24 21:10:20 +02:00
|
|
|
'rsrc/css/phui/phui-property-list-view.css' => '6d8e58ac',
|
2015-11-23 18:17:36 +01:00
|
|
|
'rsrc/css/phui/phui-remarkup-preview.css' => '1a8f2591',
|
2016-02-12 02:04:14 +01:00
|
|
|
'rsrc/css/phui/phui-segment-bar-view.css' => '46342871',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/css/phui/phui-spacing.css' => '042804d6',
|
2016-05-01 21:48:56 +02:00
|
|
|
'rsrc/css/phui/phui-status.css' => 'd5263e49',
|
2016-03-05 00:44:24 +01:00
|
|
|
'rsrc/css/phui/phui-tag-view.css' => '6bbd83e2',
|
2016-07-09 01:01:42 +02:00
|
|
|
'rsrc/css/phui/phui-timeline-view.css' => 'bc523970',
|
2016-07-26 21:49:12 +02:00
|
|
|
'rsrc/css/phui/phui-two-column-view.css' => '5afdf637',
|
2016-02-16 23:27:05 +01:00
|
|
|
'rsrc/css/phui/workboards/phui-workboard-color.css' => 'ac6fe6a7',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/css/phui/workboards/phui-workboard.css' => 'bda3ef58',
|
2016-05-20 22:03:26 +02:00
|
|
|
'rsrc/css/phui/workboards/phui-workcard.css' => '0c62d7c5',
|
2016-02-13 20:55:14 +01:00
|
|
|
'rsrc/css/phui/workboards/phui-workpanel.css' => '92197373',
|
2016-09-06 17:50:37 +02:00
|
|
|
'rsrc/css/sprite-login.css' => '6dbbbd97',
|
2016-07-04 03:32:31 +02:00
|
|
|
'rsrc/css/sprite-tokens.css' => '9cdfd599',
|
2016-05-05 03:24:59 +02:00
|
|
|
'rsrc/css/syntax/syntax-default.css' => '9923583c',
|
2016-01-28 22:29:27 +01:00
|
|
|
'rsrc/externals/d3/d3.min.js' => 'a11a5ff2',
|
2015-11-03 04:56:45 +01:00
|
|
|
'rsrc/externals/font/aleo/aleo-bold.eot' => 'd3d3bed7',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/aleo/aleo-bold.svg' => '45899c8e',
|
2015-11-03 04:56:45 +01:00
|
|
|
'rsrc/externals/font/aleo/aleo-bold.ttf' => '4b08bef0',
|
|
|
|
'rsrc/externals/font/aleo/aleo-bold.woff' => '93b513a1',
|
|
|
|
'rsrc/externals/font/aleo/aleo-bold.woff2' => '75fbf322',
|
|
|
|
'rsrc/externals/font/aleo/aleo-regular.eot' => 'a4e29e2f',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/aleo/aleo-regular.svg' => '42a86f7a',
|
2015-11-03 04:56:45 +01:00
|
|
|
'rsrc/externals/font/aleo/aleo-regular.ttf' => '751e7479',
|
|
|
|
'rsrc/externals/font/aleo/aleo-regular.woff' => 'c3744be9',
|
|
|
|
'rsrc/externals/font/aleo/aleo-regular.woff2' => '851aa0ee',
|
2016-04-11 20:29:12 +02:00
|
|
|
'rsrc/externals/font/fontawesome/fontawesome-webfont.eot' => '59b3076c',
|
|
|
|
'rsrc/externals/font/fontawesome/fontawesome-webfont.ttf' => '45ad7e57',
|
|
|
|
'rsrc/externals/font/fontawesome/fontawesome-webfont.woff' => 'f861e2a8',
|
|
|
|
'rsrc/externals/font/fontawesome/fontawesome-webfont.woff2' => '0ee0f078',
|
Smaller Lato font footprint
Summary:
About 1/3 the size. The "Full" Lato set is over 3000 Glyphs, this was a handbuilt set of Latin, Latin-A, and Latin-B. Specific Unicode set:
```U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF, U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000```
This unicode set is what Google Fonts uses as "Latin,Latin-Ext"
Test Plan: Built test pages in Phriction for Latin-A, Latin-B. Checked Chrome, Firefox, Mac and PC. If issues get reported, can default back to larger font pack.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Maniphest Tasks: T8755
Differential Revision: https://secure.phabricator.com/D13558
2015-07-06 16:17:11 +02:00
|
|
|
'rsrc/externals/font/lato/lato-bold.eot' => '99fbcf8c',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/lato/lato-bold.svg' => '2aa83045',
|
Smaller Lato font footprint
Summary:
About 1/3 the size. The "Full" Lato set is over 3000 Glyphs, this was a handbuilt set of Latin, Latin-A, and Latin-B. Specific Unicode set:
```U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF, U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000```
This unicode set is what Google Fonts uses as "Latin,Latin-Ext"
Test Plan: Built test pages in Phriction for Latin-A, Latin-B. Checked Chrome, Firefox, Mac and PC. If issues get reported, can default back to larger font pack.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Maniphest Tasks: T8755
Differential Revision: https://secure.phabricator.com/D13558
2015-07-06 16:17:11 +02:00
|
|
|
'rsrc/externals/font/lato/lato-bold.ttf' => '0a7141f7',
|
|
|
|
'rsrc/externals/font/lato/lato-bold.woff' => 'f5db2061',
|
|
|
|
'rsrc/externals/font/lato/lato-bold.woff2' => '37a94ecd',
|
|
|
|
'rsrc/externals/font/lato/lato-bolditalic.eot' => 'b93389d0',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/lato/lato-bolditalic.svg' => '5442e1ef',
|
Smaller Lato font footprint
Summary:
About 1/3 the size. The "Full" Lato set is over 3000 Glyphs, this was a handbuilt set of Latin, Latin-A, and Latin-B. Specific Unicode set:
```U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF, U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000```
This unicode set is what Google Fonts uses as "Latin,Latin-Ext"
Test Plan: Built test pages in Phriction for Latin-A, Latin-B. Checked Chrome, Firefox, Mac and PC. If issues get reported, can default back to larger font pack.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Maniphest Tasks: T8755
Differential Revision: https://secure.phabricator.com/D13558
2015-07-06 16:17:11 +02:00
|
|
|
'rsrc/externals/font/lato/lato-bolditalic.ttf' => 'dad31252',
|
|
|
|
'rsrc/externals/font/lato/lato-bolditalic.woff' => 'e53bcf47',
|
|
|
|
'rsrc/externals/font/lato/lato-bolditalic.woff2' => 'd035007f',
|
|
|
|
'rsrc/externals/font/lato/lato-italic.eot' => '6a903f5d',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/lato/lato-italic.svg' => '0dc7cf2f',
|
Smaller Lato font footprint
Summary:
About 1/3 the size. The "Full" Lato set is over 3000 Glyphs, this was a handbuilt set of Latin, Latin-A, and Latin-B. Specific Unicode set:
```U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF, U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000```
This unicode set is what Google Fonts uses as "Latin,Latin-Ext"
Test Plan: Built test pages in Phriction for Latin-A, Latin-B. Checked Chrome, Firefox, Mac and PC. If issues get reported, can default back to larger font pack.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Maniphest Tasks: T8755
Differential Revision: https://secure.phabricator.com/D13558
2015-07-06 16:17:11 +02:00
|
|
|
'rsrc/externals/font/lato/lato-italic.ttf' => '629f64f0',
|
|
|
|
'rsrc/externals/font/lato/lato-italic.woff' => '678dc4bb',
|
|
|
|
'rsrc/externals/font/lato/lato-italic.woff2' => '7c8dd650',
|
|
|
|
'rsrc/externals/font/lato/lato-regular.eot' => '848dfb1e',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/externals/font/lato/lato-regular.svg' => 'cbd5fd6b',
|
Smaller Lato font footprint
Summary:
About 1/3 the size. The "Full" Lato set is over 3000 Glyphs, this was a handbuilt set of Latin, Latin-A, and Latin-B. Specific Unicode set:
```U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF, U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000```
This unicode set is what Google Fonts uses as "Latin,Latin-Ext"
Test Plan: Built test pages in Phriction for Latin-A, Latin-B. Checked Chrome, Firefox, Mac and PC. If issues get reported, can default back to larger font pack.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Maniphest Tasks: T8755
Differential Revision: https://secure.phabricator.com/D13558
2015-07-06 16:17:11 +02:00
|
|
|
'rsrc/externals/font/lato/lato-regular.ttf' => 'e270165b',
|
|
|
|
'rsrc/externals/font/lato/lato-regular.woff' => '13d39fe2',
|
|
|
|
'rsrc/externals/font/lato/lato-regular.woff2' => '57a9f742',
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'rsrc/externals/javelin/core/Event.js' => '2ee659ce',
|
|
|
|
'rsrc/externals/javelin/core/Stratcom.js' => '6ad39b6f',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => '717554e4',
|
|
|
|
'rsrc/externals/javelin/core/__tests__/install.js' => 'c432ee85',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/core/__tests__/stratcom.js' => '88bf7313',
|
|
|
|
'rsrc/externals/javelin/core/__tests__/util.js' => 'e251703d',
|
2015-03-28 16:35:12 +01:00
|
|
|
'rsrc/externals/javelin/core/init.js' => '3010e992',
|
2015-01-20 01:55:08 +01:00
|
|
|
'rsrc/externals/javelin/core/init_node.js' => 'c234aded',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/core/install.js' => '05270951',
|
2015-01-20 01:55:08 +01:00
|
|
|
'rsrc/externals/javelin/core/util.js' => '93cc50d6',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/docs/Base.js' => '74676256',
|
|
|
|
'rsrc/externals/javelin/docs/onload.js' => 'e819c479',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/externals/javelin/ext/fx/Color.js' => '7e41274a',
|
|
|
|
'rsrc/externals/javelin/ext/fx/FX.js' => '54b612ba',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => 'f6555212',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '2b8de964',
|
|
|
|
'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '1ad0a787',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '76f4ebed',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => 'c90a04fc',
|
|
|
|
'rsrc/externals/javelin/ext/view/HTMLView.js' => 'fe287620',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/View.js' => '0f764c35',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => 'f829edb3',
|
|
|
|
'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => '47830651',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '6c2b09a2',
|
|
|
|
'rsrc/externals/javelin/ext/view/ViewVisitor.js' => 'efe49472',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => 'f92d7bcb',
|
2015-01-20 01:55:08 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/__tests__/View.js' => '6450b38b',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => '7a94d6a5',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '6ea96ac9',
|
2015-01-20 01:55:08 +01:00
|
|
|
'rsrc/externals/javelin/lib/Cookie.js' => '62dfea03',
|
2015-09-02 00:35:25 +02:00
|
|
|
'rsrc/externals/javelin/lib/DOM.js' => '805b806a',
|
2015-03-28 15:38:14 +01:00
|
|
|
'rsrc/externals/javelin/lib/History.js' => 'd4505101',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
|
2016-04-27 01:27:31 +02:00
|
|
|
'rsrc/externals/javelin/lib/Leader.js' => 'fea0eb47',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/lib/Mask.js' => '8a41885b',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'rsrc/externals/javelin/lib/Quicksand.js' => '6b8ef10b',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/lib/Request.js' => '94b750d2',
|
|
|
|
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
|
|
|
|
'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
|
2015-05-11 22:50:44 +02:00
|
|
|
'rsrc/externals/javelin/lib/Scrollbar.js' => '087e919c',
|
2015-03-10 23:30:49 +01:00
|
|
|
'rsrc/externals/javelin/lib/Sound.js' => '949c0fe5',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'rsrc/externals/javelin/lib/URI.js' => 'c989ade3',
|
2015-01-28 17:26:10 +01:00
|
|
|
'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8',
|
Namespace Aphlict clients by request path, plus other fixes
Summary:
Fixes T7130. Fixes T7041. Fixes T7012.
Major change here is partitioning clients. In the Phacility cluster, being able to get a huge pile of instances on a single server -- without needing to run a process per instance -- is desirable.
To accomplish this, just bucket clients by the path they connect with. This will let us set client URIs to `/instancename/` and then route connections to a small set of servers. This degrades cleanly in the common case and has no effect on installs which don't do instancing.
Also fix two unrelated issues:
- Fix the timeouts, which were incorrectly initializing in `open()` (which is called during reconnect, causing them to reset every time). Instead, initialize in the constructor. Cap timeout at 5 minutes.
- Probably fix subscriptions, which were using a property with an object definition. Since this is by-ref, all concrete instances of the object share the same property, so all users would be subscribed to everything. Probably.
Test Plan:
- Hit notification status page, saw version bump and instance/path name.
- Saw instance/path name in client and server logs.
- Stopped server, saw reconnects after 2, 4, 16, ... seconds.
- Sent test notification; received test notification.
- Didn't explicitly test the subscription thing but it should be obvious by looking at `/notification/status/` shortly after a push.
Reviewers: joshuaspence, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T7041, T7012, T7130
Differential Revision: https://secure.phabricator.com/D11769
2015-02-16 20:31:15 +01:00
|
|
|
'rsrc/externals/javelin/lib/WebSocket.js' => 'e292eaf4',
|
2016-06-21 02:29:56 +02:00
|
|
|
'rsrc/externals/javelin/lib/Workflow.js' => '1e911d0f',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8',
|
|
|
|
'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/lib/__tests__/JSON.js' => '837a7d68',
|
2015-01-20 11:25:17 +01:00
|
|
|
'rsrc/externals/javelin/lib/__tests__/URI.js' => '1e45fda9',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/externals/javelin/lib/__tests__/behavior.js' => '1ea62783',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/lib/behavior.js' => '61cbc29a',
|
2015-12-17 22:27:36 +01:00
|
|
|
'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '8d3bc1b2',
|
2015-01-14 01:10:57 +01:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '70baed2f',
|
2015-04-17 16:55:17 +02:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => 'e6e25838',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '503e17fd',
|
2016-01-16 23:33:03 +01:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '013ffff9',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '54f314a0',
|
2016-06-09 22:13:11 +02:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'b25d5444',
|
Time control typeaheads.
Summary: Ref T8031, Time control typeaheads
Test Plan: Edit an event, type '3', typeahead should suggest, '3:00 AM', '3:30 AM', '3:00 PM', '3:30 PM'.
Reviewers: chad, epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin, epriestley
Maniphest Tasks: T8031
Differential Revision: https://secure.phabricator.com/D12953
2015-05-20 18:51:26 +02:00
|
|
|
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '6c0e62fa',
|
2014-11-08 02:07:38 +01:00
|
|
|
'rsrc/favicons/apple-touch-icon-120x120.png' => '43742962',
|
|
|
|
'rsrc/favicons/apple-touch-icon-152x152.png' => '669eaec3',
|
|
|
|
'rsrc/favicons/apple-touch-icon-76x76.png' => 'ecdef672',
|
|
|
|
'rsrc/favicons/favicon-128.png' => '47cdff03',
|
|
|
|
'rsrc/favicons/favicon-16x16.png' => 'ee2523ac',
|
|
|
|
'rsrc/favicons/favicon-32x32.png' => 'b6a8150e',
|
|
|
|
'rsrc/favicons/favicon-96x96.png' => '8f7ea177',
|
2015-11-22 22:03:58 +01:00
|
|
|
'rsrc/favicons/mask-icon.svg' => '0460cb1f',
|
2014-02-14 00:15:58 +01:00
|
|
|
'rsrc/image/BFCFDA.png' => 'd5ec91f4',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/actions/edit.png' => '2fc41442',
|
2015-12-04 21:30:38 +01:00
|
|
|
'rsrc/image/avatar.png' => 'e132bb6a',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/checker_dark.png' => 'd8e65881',
|
|
|
|
'rsrc/image/checker_light.png' => 'a0155918',
|
2014-06-15 16:44:12 +02:00
|
|
|
'rsrc/image/checker_lighter.png' => 'd5da91b6',
|
2016-03-09 02:50:01 +01:00
|
|
|
'rsrc/image/d5d8e1.png' => '0c2a1497',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/darkload.gif' => '1ffd3ec6',
|
|
|
|
'rsrc/image/divot.png' => '94dded62',
|
2014-06-18 23:09:37 +02:00
|
|
|
'rsrc/image/examples/hero.png' => '979a86ae',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/grippy_texture.png' => 'aca81e2f',
|
|
|
|
'rsrc/image/icon/fatcow/arrow_branch.png' => '2537c01c',
|
|
|
|
'rsrc/image/icon/fatcow/arrow_merge.png' => '21b660e0',
|
|
|
|
'rsrc/image/icon/fatcow/bullet_black.png' => 'ff190031',
|
|
|
|
'rsrc/image/icon/fatcow/bullet_orange.png' => 'e273e5bb',
|
|
|
|
'rsrc/image/icon/fatcow/bullet_red.png' => 'c0b75434',
|
|
|
|
'rsrc/image/icon/fatcow/calendar_edit.png' => '24632275',
|
|
|
|
'rsrc/image/icon/fatcow/document_black.png' => '45fe1c60',
|
|
|
|
'rsrc/image/icon/fatcow/flag_blue.png' => 'a01abb1d',
|
|
|
|
'rsrc/image/icon/fatcow/flag_finish.png' => '67825cee',
|
|
|
|
'rsrc/image/icon/fatcow/flag_ghost.png' => '20ca8783',
|
|
|
|
'rsrc/image/icon/fatcow/flag_green.png' => '7e0eaa7a',
|
|
|
|
'rsrc/image/icon/fatcow/flag_orange.png' => '9e73df66',
|
|
|
|
'rsrc/image/icon/fatcow/flag_pink.png' => '7e92f3b2',
|
|
|
|
'rsrc/image/icon/fatcow/flag_purple.png' => 'cc517522',
|
|
|
|
'rsrc/image/icon/fatcow/flag_red.png' => '04ec726f',
|
|
|
|
'rsrc/image/icon/fatcow/flag_yellow.png' => '73946fd4',
|
|
|
|
'rsrc/image/icon/fatcow/key_question.png' => '52a0c26a',
|
|
|
|
'rsrc/image/icon/fatcow/link.png' => '7afd4d5e',
|
|
|
|
'rsrc/image/icon/fatcow/page_white_edit.png' => '39a2eed8',
|
|
|
|
'rsrc/image/icon/fatcow/page_white_put.png' => '08c95a0c',
|
|
|
|
'rsrc/image/icon/fatcow/source/conduit.png' => '4ea01d2f',
|
|
|
|
'rsrc/image/icon/fatcow/source/email.png' => '9bab3239',
|
|
|
|
'rsrc/image/icon/fatcow/source/fax.png' => '04195e68',
|
|
|
|
'rsrc/image/icon/fatcow/source/mobile.png' => 'f1321264',
|
|
|
|
'rsrc/image/icon/fatcow/source/tablet.png' => '49396799',
|
|
|
|
'rsrc/image/icon/fatcow/source/web.png' => '136ccb5d',
|
|
|
|
'rsrc/image/icon/lightbox/close-2.png' => 'cc40e7c8',
|
|
|
|
'rsrc/image/icon/lightbox/close-hover-2.png' => 'fb5d6d9e',
|
|
|
|
'rsrc/image/icon/lightbox/left-arrow-2.png' => '8426133b',
|
|
|
|
'rsrc/image/icon/lightbox/left-arrow-hover-2.png' => '701e5ee3',
|
|
|
|
'rsrc/image/icon/lightbox/right-arrow-2.png' => '6d5519a0',
|
|
|
|
'rsrc/image/icon/lightbox/right-arrow-hover-2.png' => '3a04aa21',
|
|
|
|
'rsrc/image/icon/subscribe.png' => 'd03ed5a5',
|
|
|
|
'rsrc/image/icon/tango/attachment.png' => 'ecc8022e',
|
|
|
|
'rsrc/image/icon/tango/edit.png' => '929a1363',
|
|
|
|
'rsrc/image/icon/tango/go-down.png' => '96d95e43',
|
|
|
|
'rsrc/image/icon/tango/log.png' => 'b08cc63a',
|
|
|
|
'rsrc/image/icon/tango/upload.png' => '7bbb7984',
|
|
|
|
'rsrc/image/icon/unsubscribe.png' => '25725013',
|
2014-01-18 17:31:47 +01:00
|
|
|
'rsrc/image/lightblue-header.png' => '5c168b6d',
|
2016-08-08 22:21:18 +02:00
|
|
|
'rsrc/image/logo/light-eye.png' => '1a576ddd',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/main_texture.png' => '29a2c5ad',
|
|
|
|
'rsrc/image/menu_texture.png' => '5a17580d',
|
|
|
|
'rsrc/image/people/harding.png' => '45aa614e',
|
|
|
|
'rsrc/image/people/jefferson.png' => 'afca0e53',
|
|
|
|
'rsrc/image/people/lincoln.png' => '9369126d',
|
|
|
|
'rsrc/image/people/mckinley.png' => 'fb8f16ce',
|
|
|
|
'rsrc/image/people/taft.png' => 'd7bc402c',
|
2015-12-04 21:30:38 +01:00
|
|
|
'rsrc/image/people/user0.png' => '03dacaea',
|
|
|
|
'rsrc/image/people/user1.png' => '4a4e7702',
|
|
|
|
'rsrc/image/people/user2.png' => '47a0ee40',
|
|
|
|
'rsrc/image/people/user3.png' => '835ff627',
|
|
|
|
'rsrc/image/people/user4.png' => 'b0e830f1',
|
|
|
|
'rsrc/image/people/user5.png' => '9c95b369',
|
|
|
|
'rsrc/image/people/user6.png' => 'ba3fbfb0',
|
|
|
|
'rsrc/image/people/user7.png' => 'da613924',
|
|
|
|
'rsrc/image/people/user8.png' => 'f1035edf',
|
|
|
|
'rsrc/image/people/user9.png' => '66730be3',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/people/washington.png' => '40dd301c',
|
|
|
|
'rsrc/image/phrequent_active.png' => 'a466a8ed',
|
|
|
|
'rsrc/image/phrequent_inactive.png' => 'bfc15a69',
|
2016-06-21 02:29:56 +02:00
|
|
|
'rsrc/image/resize.png' => 'fd476de4',
|
2016-09-06 17:50:37 +02:00
|
|
|
'rsrc/image/sprite-login-X2.png' => '4abee916',
|
|
|
|
'rsrc/image/sprite-login.png' => '2b9663fd',
|
2016-07-04 03:32:31 +02:00
|
|
|
'rsrc/image/sprite-tokens-X2.png' => '804a5232',
|
|
|
|
'rsrc/image/sprite-tokens.png' => 'b41d03da',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/image/texture/card-gradient.png' => '815f26e8',
|
|
|
|
'rsrc/image/texture/dark-menu-hover.png' => '5fa7ece8',
|
|
|
|
'rsrc/image/texture/dark-menu.png' => '7e22296e',
|
|
|
|
'rsrc/image/texture/grip.png' => '719404f3',
|
|
|
|
'rsrc/image/texture/panel-header-gradient.png' => 'e3b8dcfe',
|
|
|
|
'rsrc/image/texture/phlnx-bg.png' => '8d819209',
|
|
|
|
'rsrc/image/texture/pholio-background.gif' => 'ba29239c',
|
|
|
|
'rsrc/image/texture/table_header.png' => '5c433037',
|
|
|
|
'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
|
|
|
|
'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
|
2015-05-07 21:47:49 +02:00
|
|
|
'rsrc/js/application/aphlict/Aphlict.js' => '5359e785',
|
2016-08-28 04:00:35 +02:00
|
|
|
'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '49e20786',
|
2015-06-22 22:11:37 +02:00
|
|
|
'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'fb20ac8d',
|
2015-01-14 22:08:08 +01:00
|
|
|
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
|
2015-06-22 22:11:37 +02:00
|
|
|
'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => 'edd1ba66',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
|
2016-07-15 23:02:24 +02:00
|
|
|
'rsrc/js/application/calendar/behavior-day-view.js' => '4b3c4443',
|
2016-07-27 14:07:38 +02:00
|
|
|
'rsrc/js/application/calendar/behavior-event-all-day.js' => '937bb700',
|
2016-07-27 15:44:42 +02:00
|
|
|
'rsrc/js/application/calendar/behavior-month-view.js' => 'fe33e256',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'rsrc/js/application/calendar/behavior-recurring-edit.js' => '5f1c4d5f',
|
2015-05-25 14:34:23 +02:00
|
|
|
'rsrc/js/application/config/behavior-reorder-fields.js' => 'b6993408',
|
2015-05-28 00:31:02 +02:00
|
|
|
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '01774ab2',
|
2015-05-04 22:52:22 +02:00
|
|
|
'rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js' => 'cf86d16a',
|
2016-05-21 21:08:47 +02:00
|
|
|
'rsrc/js/application/conpherence/behavior-durable-column.js' => 'd3506890',
|
2015-08-20 17:24:42 +02:00
|
|
|
'rsrc/js/application/conpherence/behavior-menu.js' => '1d45c74d',
|
2015-03-10 23:30:49 +01:00
|
|
|
'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861',
|
2015-03-10 23:32:15 +01:00
|
|
|
'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
|
2015-06-26 00:59:52 +02:00
|
|
|
'rsrc/js/application/conpherence/behavior-widget-pane.js' => 'a8458711',
|
2014-12-30 11:53:27 +01:00
|
|
|
'rsrc/js/application/countdown/timer.js' => 'e4cc26b3',
|
2015-06-23 22:43:47 +02:00
|
|
|
'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145',
|
2014-05-19 23:04:26 +02:00
|
|
|
'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e',
|
2016-02-02 15:26:42 +01:00
|
|
|
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '019f36c4',
|
2014-07-13 18:18:50 +02:00
|
|
|
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
|
2016-01-13 15:19:31 +01:00
|
|
|
'rsrc/js/application/differential/ChangesetViewManager.js' => 'a2828756',
|
2015-09-11 04:28:49 +02:00
|
|
|
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => '64a5550f',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js' => 'e10f8e18',
|
2014-07-01 20:04:05 +02:00
|
|
|
'rsrc/js/application/differential/behavior-comment-jump.js' => '4fdb476d',
|
2015-05-20 22:54:22 +02:00
|
|
|
'rsrc/js/application/differential/behavior-comment-preview.js' => 'b064af76',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
|
2016-01-13 15:19:31 +01:00
|
|
|
'rsrc/js/application/differential/behavior-dropdown-menus.js' => '9a6b9324',
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'rsrc/js/application/differential/behavior-edit-inline-comments.js' => '4fbbc3e9',
|
2014-11-12 21:26:22 +01:00
|
|
|
'rsrc/js/application/differential/behavior-keyboard-nav.js' => '2c426492',
|
2015-03-05 23:03:15 +01:00
|
|
|
'rsrc/js/application/differential/behavior-populate.js' => '8694b1df',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/differential/behavior-toggle-files.js' => 'ca3f91eb',
|
|
|
|
'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
|
2014-06-23 19:35:39 +02:00
|
|
|
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'b42eddc7',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
|
2016-07-01 18:22:00 +02:00
|
|
|
'rsrc/js/application/diffusion/behavior-commit-graph.js' => '49ae8328',
|
2016-04-15 14:37:58 +02:00
|
|
|
'rsrc/js/application/diffusion/behavior-diffusion-browse-file.js' => '054a0f0b',
|
2015-01-29 19:20:35 +01:00
|
|
|
'rsrc/js/application/diffusion/behavior-jump-to.js' => '73d09eef',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/diffusion/behavior-load-blame.js' => '42126667',
|
2014-05-13 23:09:00 +02:00
|
|
|
'rsrc/js/application/diffusion/behavior-locate-file.js' => '6d3e1947',
|
2015-10-07 16:32:27 +02:00
|
|
|
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => 'e5822781',
|
2015-10-21 20:28:26 +02:00
|
|
|
'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
|
2016-01-19 17:43:31 +01:00
|
|
|
'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
|
2014-02-27 20:06:55 +01:00
|
|
|
'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888',
|
2016-03-22 17:08:26 +01:00
|
|
|
'rsrc/js/application/herald/HeraldRuleEditor.js' => 'd6a7e717',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/herald/PathTypeahead.js' => 'f7fc67ec',
|
|
|
|
'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3',
|
2015-06-11 19:24:39 +02:00
|
|
|
'rsrc/js/application/maniphest/behavior-batch-editor.js' => '782ab6e7',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/maniphest/behavior-batch-selector.js' => '7b98d7c5',
|
2016-01-28 22:29:27 +01:00
|
|
|
'rsrc/js/application/maniphest/behavior-line-chart.js' => 'e4232876',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/maniphest/behavior-list-edit.js' => 'a9f88de2',
|
2015-06-30 18:37:12 +02:00
|
|
|
'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '71237763',
|
2014-06-23 19:35:39 +02:00
|
|
|
'rsrc/js/application/owners/OwnersPathEditor.js' => 'aa1733d0',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3',
|
2015-03-02 22:01:00 +01:00
|
|
|
'rsrc/js/application/passphrase/passphrase-credential-control.js' => '3cb0b2fc',
|
2016-06-09 17:34:00 +02:00
|
|
|
'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => 'bee502c8',
|
Quicksand and Pholio - make mock edit work
Summary: Fixes T8036. In addition to making the mock edit work, this tightens quicksand code such that the correct page id is returned even if start() has not been called yet. It also tightens mock view where some functions should respect statics.enabled a bit more.
Test Plan:
clicked edit mock, mock crumb, edit mock, mock crum, edit mock, made edits and they worked! clicked edit mock, mock crumb, edit mock, mock crumb, edit mock, profile icon, hit browser back to edit mock, made edits and they worked!
also observed mock view page not occasionally wigging out from image_onload race not having statics.enabled respect during the above
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8036
Differential Revision: https://secure.phabricator.com/D12739
2015-05-07 19:42:07 +02:00
|
|
|
'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'fbe497e7',
|
2014-12-30 11:53:27 +01:00
|
|
|
'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '3f5d6dbf',
|
|
|
|
'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'fc91ab6c',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef',
|
2016-02-05 19:30:20 +01:00
|
|
|
'rsrc/js/application/policy/behavior-policy-control.js' => 'd0c516d5',
|
2015-04-17 16:55:17 +02:00
|
|
|
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
|
2016-08-14 17:58:17 +02:00
|
|
|
'rsrc/js/application/projects/WorkboardBoard.js' => 'fe7cb52a',
|
2016-02-11 00:06:20 +01:00
|
|
|
'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f',
|
2016-03-11 03:54:17 +01:00
|
|
|
'rsrc/js/application/projects/WorkboardColumn.js' => 'bae58312',
|
2016-02-11 18:51:32 +01:00
|
|
|
'rsrc/js/application/projects/WorkboardController.js' => '55baf5ed',
|
2016-02-11 00:06:20 +01:00
|
|
|
'rsrc/js/application/projects/behavior-project-boards.js' => '14a1faae',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
|
2014-08-09 17:49:01 +02:00
|
|
|
'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
|
2015-01-25 17:46:22 +01:00
|
|
|
'rsrc/js/application/releeph/releeph-request-state-change.js' => 'a0b57eb8',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'de2e896f',
|
2015-08-27 13:17:33 +02:00
|
|
|
'rsrc/js/application/repository/repository-crossreference.js' => 'e5339c43',
|
2016-01-13 18:40:27 +01:00
|
|
|
'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e2e0a072',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08',
|
2015-01-23 22:29:15 +01:00
|
|
|
'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => '887ad43f',
|
Clean up some log spam caused by races in VersionedDraft
Summary:
Two minor issues that I caught in the log while fixing Phame permissions:
- 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.
- 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.
Test Plan:
Submitted some Phame comments.
- No more error log errors about VersionedDraft keys.
- Saw only one preview request when loading the page instead of two.
Here's the specific stack trace I caught:
```
[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]
[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)
[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]
[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]
[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]
[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]
[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)
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
```
Reviewers: chad
Reviewed By: chad
Differential Revision: https://secure.phabricator.com/D16494
2016-09-05 21:24:58 +02:00
|
|
|
'rsrc/js/application/transactions/behavior-comment-actions.js' => '0300eae6',
|
2015-12-08 15:14:47 +01:00
|
|
|
'rsrc/js/application/transactions/behavior-reorder-configs.js' => 'd7a74243',
|
2015-11-17 18:33:06 +01:00
|
|
|
'rsrc/js/application/transactions/behavior-reorder-fields.js' => 'b59e1e96',
|
2016-07-08 15:08:51 +02:00
|
|
|
'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '94c65b72',
|
2015-05-18 21:18:10 +02:00
|
|
|
'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => 'b23b49e6',
|
2014-08-08 00:21:32 +02:00
|
|
|
'rsrc/js/application/transactions/behavior-transaction-list.js' => '13c739ea',
|
2015-04-17 16:55:17 +02:00
|
|
|
'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '635de1ec',
|
|
|
|
'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '93d0c9e3',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/application/uiexample/JavelinViewExample.js' => 'd4a14807',
|
2014-06-23 19:35:39 +02:00
|
|
|
'rsrc/js/application/uiexample/ReactorButtonExample.js' => 'd19198c8',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/uiexample/ReactorCheckboxExample.js' => '519705ea',
|
|
|
|
'rsrc/js/application/uiexample/ReactorFocusExample.js' => '40a6a403',
|
|
|
|
'rsrc/js/application/uiexample/ReactorInputExample.js' => '886fd850',
|
2014-06-23 19:35:39 +02:00
|
|
|
'rsrc/js/application/uiexample/ReactorMouseoverExample.js' => '47c794d8',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/application/uiexample/ReactorRadioExample.js' => '988040b4',
|
|
|
|
'rsrc/js/application/uiexample/ReactorSelectExample.js' => 'a155550f',
|
|
|
|
'rsrc/js/application/uiexample/ReactorSendClassExample.js' => '1def2711',
|
|
|
|
'rsrc/js/application/uiexample/ReactorSendPropertiesExample.js' => 'b1f0ccee',
|
|
|
|
'rsrc/js/application/uiexample/busy-example.js' => '60479091',
|
|
|
|
'rsrc/js/application/uiexample/gesture-example.js' => '558829c2',
|
2014-12-30 11:54:21 +01:00
|
|
|
'rsrc/js/application/uiexample/notification-example.js' => '8ce821c5',
|
2015-04-02 05:10:32 +02:00
|
|
|
'rsrc/js/core/Busy.js' => '59a7976a',
|
2016-05-21 01:26:11 +02:00
|
|
|
'rsrc/js/core/DragAndDropFileUpload.js' => '58dea2fa',
|
Replace height buffer behavior while dragging on workboards with infinite column height
Summary:
Ref T4900. The root problem is that dragging stuff near the bottom of the board can cause jittery, jumpy behaviors.
Internal scrolling has changed the nature of this problem. Previously, the height of the board itself would jump around, but it's now fixed so the height of columns jumps around instead.
We could take the same approach and add a chunk to the bottom of each column when a drag starts, but this is really distracting visually since it's obvious to the user.
Instead, treat columns as infinitely tall (so dragging beneath them still counts as dragging to the bottom position).
Test Plan:
- View a board with a column taller than the screen (has a scrollbar).
- Drag a card to near the bottom position.
- Move the mouse down a little bit at a time, continuing toward the bottom of the page.
- Before patch: at some point, UI flips out and starts rapidly adding, scrolling, and removing the ghost.
- After patch: sensible behavior, ghost is in bottom position for all cursor locations.
Also works for dragging to the top.
(This leaves us with a little less dead space for cancelling drags, but you've still got the left menu, anything offscreen, and the escape key, which seems fine.)
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T4900
Differential Revision: https://secure.phabricator.com/D15227
2016-02-09 14:40:56 +01:00
|
|
|
'rsrc/js/core/DraggableList.js' => '5a13c79f',
|
2016-02-06 23:05:15 +01:00
|
|
|
'rsrc/js/core/FileUpload.js' => '680ea2c8',
|
2016-02-03 17:26:30 +01:00
|
|
|
'rsrc/js/core/Hovercard.js' => '1bd28176',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2',
|
2016-07-08 17:30:30 +02:00
|
|
|
'rsrc/js/core/KeyboardShortcutManager.js' => '4a021c10',
|
2014-11-17 23:06:05 +01:00
|
|
|
'rsrc/js/core/MultirowRowManager.js' => 'b5d57730',
|
2015-06-22 22:11:37 +02:00
|
|
|
'rsrc/js/core/Notification.js' => 'ccf1cbf8',
|
2016-06-09 22:13:11 +02:00
|
|
|
'rsrc/js/core/Prefab.js' => 'cfd23f37',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
|
2016-05-21 01:26:11 +02:00
|
|
|
'rsrc/js/core/TextAreaUtils.js' => '320810c8',
|
2015-04-02 22:41:48 +02:00
|
|
|
'rsrc/js/core/Title.js' => 'df5e11d2',
|
2016-02-02 15:26:42 +01:00
|
|
|
'rsrc/js/core/ToolTip.js' => '6323f942',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-active-nav.js' => 'e379b58e',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/core/behavior-audio-source.js' => '59b251eb',
|
|
|
|
'rsrc/js/core/behavior-autofocus.js' => '7319e029',
|
2016-04-13 18:20:15 +02:00
|
|
|
'rsrc/js/core/behavior-badge-view.js' => '8ff5e24c',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
'rsrc/js/core/behavior-choose-control.js' => '327a00d1',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-crop.js' => 'fa0f4fc2',
|
2015-04-28 23:51:49 +02:00
|
|
|
'rsrc/js/core/behavior-dark-console.js' => 'f411b6ae',
|
2016-05-22 15:50:12 +02:00
|
|
|
'rsrc/js/core/behavior-detect-timezone.js' => '4c193c96',
|
2016-05-21 21:08:47 +02:00
|
|
|
'rsrc/js/core/behavior-device.js' => 'bb1dd507',
|
2016-05-21 01:26:11 +02:00
|
|
|
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '484a6e22',
|
2014-12-30 11:51:31 +01:00
|
|
|
'rsrc/js/core/behavior-error-log.js' => '6882e80a',
|
2016-04-15 22:52:00 +02:00
|
|
|
'rsrc/js/core/behavior-fancy-datepicker.js' => '568931f3',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-file-tree.js' => '88236f00',
|
2014-08-02 23:44:35 +02:00
|
|
|
'rsrc/js/core/behavior-form.js' => '5c54cbf3',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-gesture.js' => '3ab51e2c',
|
2015-05-06 21:59:09 +02:00
|
|
|
'rsrc/js/core/behavior-global-drag-and-drop.js' => 'c8e57404',
|
2015-04-24 01:37:56 +02:00
|
|
|
'rsrc/js/core/behavior-high-security-warning.js' => 'a464fe03',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/core/behavior-history-install.js' => '7ee2b591',
|
2016-02-03 17:26:30 +01:00
|
|
|
'rsrc/js/core/behavior-hovercard.js' => 'bcaccd64',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0',
|
Make "/" focus the search input again
Summary:
See D1902, T989, T11263, D15984, T4103 , D15976, https://secure.phabricator.com/w/changelog/2016.22/, T2527, T11231, T8286, T11264 for discussion!
When we get another copy of T989, I will rename it to "Build a complicated keybinding settings page like a cool video game" and leave it open forever.
Test Plan: Pressed "/" in Firefox, had my pristine browsing experience inexplicably hijacked by this horrible application.
Reviewers: avivey, chad
Reviewed By: avivey
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15984
2016-07-08 22:57:33 +02:00
|
|
|
'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0',
|
2014-12-23 18:28:57 +01:00
|
|
|
'rsrc/js/core/behavior-lightbox-attachments.js' => 'f8ba29d7',
|
2014-12-30 11:50:26 +01:00
|
|
|
'rsrc/js/core/behavior-line-linker.js' => '1499a8cb',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-more.js' => 'a80d0378',
|
2016-06-30 20:37:38 +02:00
|
|
|
'rsrc/js/core/behavior-object-selector.js' => 'e0ec7f2f',
|
2014-06-23 19:35:39 +02:00
|
|
|
'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
|
2016-08-01 22:54:39 +02:00
|
|
|
'rsrc/js/core/behavior-phabricator-nav.js' => '08675c6d',
|
2016-05-21 01:26:11 +02:00
|
|
|
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '116cf19b',
|
2016-04-10 13:26:53 +02:00
|
|
|
'rsrc/js/core/behavior-read-only-warning.js' => 'ba158207',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'rsrc/js/core/behavior-refresh-csrf.js' => 'ab2f381b',
|
2015-12-26 22:00:01 +01:00
|
|
|
'rsrc/js/core/behavior-remarkup-preview.js' => '4b700e9e',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-reorder-applications.js' => '76b9fc3e',
|
|
|
|
'rsrc/js/core/behavior-reveal-content.js' => '60821bc7',
|
2015-01-25 17:46:22 +01:00
|
|
|
'rsrc/js/core/behavior-scrollbar.js' => '834a1173',
|
2016-02-05 21:39:00 +01:00
|
|
|
'rsrc/js/core/behavior-search-typeahead.js' => '06c32383',
|
2016-05-11 19:17:33 +02:00
|
|
|
'rsrc/js/core/behavior-select-content.js' => 'bf5374ef',
|
2014-06-23 19:27:47 +02:00
|
|
|
'rsrc/js/core/behavior-select-on-click.js' => '4e3e79a6',
|
2016-06-07 00:01:18 +02:00
|
|
|
'rsrc/js/core/behavior-setup-check-https.js' => '491416b3',
|
2016-04-15 21:06:53 +02:00
|
|
|
'rsrc/js/core/behavior-time-typeahead.js' => '522431f7',
|
2016-04-13 18:20:15 +02:00
|
|
|
'rsrc/js/core/behavior-toggle-class.js' => '92b9ec77',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884',
|
Don't mutate DOM by showing a tooltip on touch events
Summary:
This fix further addresses T10229. The problem and solution are the same:
- If the DOM is mutated during a touch, it never registers as a 'click' so the tapped button does not activate.
- This was partially addressed in D15136, which covered taps on code lines in a Differential view.
- Tapping on some buttons, like "Reply" or "Hide Comment" still caused the problem by showing a tooltip.
- There are probably similar buttons elsewhere, other than in Differential, exhibiting the same 'needs multiple taps to work' behaviour.
- The testing in the iOS simulator performed for D15136 did not reveal that the problem with "Hide comment" and such remained because the small device size used for testing triggered the `!= 'desktop'` path for tooltips.
To fix it:
- Don't show tooltips for touch events. You can't 'hover' with a finger (with today's tech) so that UI paradigm doesn't apply.
- Show the tooltips for regular mouse events, even if they are on the same device. Some devices have both touch and a mouse.
- No longer try to rely on a distinction between 'desktop' and 'mobile' devices. Mobile devices like the iPad Pro are essentially desktop like, and as mentioned above, a single device could be both touch and mouse enabled. It's not about the nature of the device, it's about the nature of the interaction.
Test Plan:
- Tapped "Hide Comment", "Reply" on an iPad Pro running iOS 9.2 and got single touch responses with no tooltips.
- Tried the same on an iPhone 6 running iOS 9.2.
- Hovered over the same on a regular desktop in Safari and saw tooltips. Clicked and saw regular reactions.
Reviewers: epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15310
2016-02-19 14:06:14 +01:00
|
|
|
'rsrc/js/core/behavior-tooltip.js' => '42fcb747',
|
2015-01-28 17:26:10 +01:00
|
|
|
'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'rsrc/js/core/behavior-workflow.js' => '0a3f3021',
|
2014-01-01 16:46:25 +01:00
|
|
|
'rsrc/js/core/phtize.js' => 'd254d646',
|
2016-06-21 02:49:38 +02:00
|
|
|
'rsrc/js/phui/behavior-phui-dropdown-menu.js' => '1aa4c968',
|
2016-05-21 01:26:11 +02:00
|
|
|
'rsrc/js/phui/behavior-phui-file-upload.js' => 'b003d4fb',
|
2016-01-23 23:24:09 +01:00
|
|
|
'rsrc/js/phui/behavior-phui-profile-menu.js' => '12884df9',
|
2016-06-21 02:49:38 +02:00
|
|
|
'rsrc/js/phui/behavior-phui-submenu.js' => 'a6f7a73b',
|
2016-07-01 01:55:28 +02:00
|
|
|
'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9',
|
2014-05-05 19:57:23 +02:00
|
|
|
'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
|
2015-04-23 16:03:03 +02:00
|
|
|
'rsrc/js/phuix/PHUIXActionView.js' => '8cf6d262',
|
2016-07-08 17:17:51 +02:00
|
|
|
'rsrc/js/phuix/PHUIXAutocomplete.js' => '6d86ce8b',
|
2016-06-21 02:49:38 +02:00
|
|
|
'rsrc/js/phuix/PHUIXDropdownMenu.js' => '82e270da',
|
2016-04-06 14:59:09 +02:00
|
|
|
'rsrc/js/phuix/PHUIXFormControl.js' => 'e15869a8',
|
2015-12-02 23:38:11 +01:00
|
|
|
'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'symbols' => array(
|
2014-12-17 20:10:50 +01:00
|
|
|
'almanac-css' => 'dbb9b3af',
|
2014-01-01 16:46:25 +01:00
|
|
|
'aphront-bars' => '231ac33c',
|
2016-02-15 06:29:56 +01:00
|
|
|
'aphront-dark-console-css' => 'f54bf286',
|
2016-06-21 02:29:56 +02:00
|
|
|
'aphront-dialog-view-css' => '913c172e',
|
2015-09-08 02:18:35 +02:00
|
|
|
'aphront-list-filter-view-css' => '5d6f0526',
|
2015-03-14 19:16:47 +01:00
|
|
|
'aphront-multi-column-view-css' => 'fd18389d',
|
2015-03-07 01:44:18 +01:00
|
|
|
'aphront-panel-view-css' => '8427b78d',
|
2016-07-28 20:45:42 +02:00
|
|
|
'aphront-table-view-css' => '832656fd',
|
2015-11-04 22:51:51 +01:00
|
|
|
'aphront-tokenizer-control-css' => '056da01b',
|
2016-02-15 06:29:56 +01:00
|
|
|
'aphront-tooltip-css' => '1a07aea8',
|
|
|
|
'aphront-typeahead-control-css' => 'd4f16145',
|
2016-08-30 05:09:43 +02:00
|
|
|
'application-search-view-css' => 'be6454ec',
|
2015-07-18 17:51:25 +02:00
|
|
|
'auth-css' => '0877ed6e',
|
2015-06-23 22:43:47 +02:00
|
|
|
'bulk-job-css' => 'df9c1d4a',
|
2016-01-13 15:19:31 +01:00
|
|
|
'changeset-view-manager' => 'a2828756',
|
2015-05-08 21:19:52 +02:00
|
|
|
'conduit-api-css' => '7bc725c4',
|
2015-09-03 21:15:30 +02:00
|
|
|
'config-options-css' => '0ede4c9b',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'config-page-css' => '8798e14f',
|
2015-06-29 02:59:48 +02:00
|
|
|
'conpherence-durable-column-view' => '86396117',
|
2016-08-28 04:00:35 +02:00
|
|
|
'conpherence-menu-css' => '90bdf85c',
|
|
|
|
'conpherence-message-pane-css' => '5c7b7b17',
|
2015-06-19 21:44:08 +02:00
|
|
|
'conpherence-notification-css' => '6cdcc253',
|
2015-05-28 00:31:02 +02:00
|
|
|
'conpherence-thread-manager' => '01774ab2',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'conpherence-transaction-css' => '85d0974c',
|
2015-06-26 18:33:03 +02:00
|
|
|
'conpherence-update-css' => 'faf6be09',
|
2016-08-28 04:00:35 +02:00
|
|
|
'conpherence-widget-pane-css' => 'c5b74f9e',
|
2016-01-28 22:29:27 +01:00
|
|
|
'd3' => 'a11a5ff2',
|
2016-07-09 22:53:57 +02:00
|
|
|
'differential-changeset-view-css' => '9ef7d354',
|
2016-03-12 22:02:32 +01:00
|
|
|
'differential-core-view-css' => '5b7b8ff4',
|
2015-09-11 04:28:49 +02:00
|
|
|
'differential-inline-comment-editor' => '64a5550f',
|
2015-03-28 00:00:09 +01:00
|
|
|
'differential-revision-add-comment-css' => 'c47f8c40',
|
2015-05-04 21:21:21 +02:00
|
|
|
'differential-revision-comment-css' => '14b8565a',
|
2014-03-12 21:53:04 +01:00
|
|
|
'differential-revision-history-css' => '0e8eb855',
|
2014-01-01 16:46:25 +01:00
|
|
|
'differential-revision-list-css' => 'f3c47d33',
|
2015-06-23 22:43:47 +02:00
|
|
|
'differential-table-of-contents-css' => 'ae4b7a55',
|
2016-05-11 19:17:33 +02:00
|
|
|
'diffusion-icons-css' => 'd678600a',
|
2016-03-18 20:01:15 +01:00
|
|
|
'diffusion-readme-css' => '297373eb',
|
2016-03-17 20:01:22 +01:00
|
|
|
'diffusion-source-css' => '68b30fd3',
|
Redesign Diviner
Summary:
This implements `PHUIDocumentViewPro` which should move to be the base for all documents (Phame, Phriction, Legalpad, Diviner). Overall this feels really good to me, but I'd like to roll it out into Diviner specifically first to work through the issues and then move into other apps and drop `PHUIDocumentView` once everything is converted. Some features are:
- White Background, no border on page
- Table of Contents is move to hidden menu (more space for documentation)
- Property List sits under the document
Some design decisions above are in anticipation of Phriction v3 and Unbeta Phame, specifically commenting and maybe some cool new Remarkup text layout options for Phame.
Test Plan:
Went through tons of pages on Diviner on Desktop, Tablet, Mobile. Bounce back to Phriction to make sure DocumentView CSS changes actually look better there.
{F930518}
{F930519}
{F930520}
{F930521}
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: tycho.tatitscheff, joshuaspence, Korvin
Differential Revision: https://secure.phabricator.com/D14374
2015-11-01 17:56:46 +01:00
|
|
|
'diviner-shared-css' => 'aa3656aa',
|
2015-11-22 22:03:58 +01:00
|
|
|
'font-aleo' => '8bdb2835',
|
2016-04-11 20:29:12 +02:00
|
|
|
'font-fontawesome' => '2b7ebbcc',
|
2015-11-22 22:03:58 +01:00
|
|
|
'font-lato' => 'c7ccd872',
|
2016-02-15 06:29:56 +01:00
|
|
|
'global-drag-and-drop-css' => '5c1b47c2',
|
2016-03-25 23:41:05 +01:00
|
|
|
'harbormaster-css' => 'f491c9f4',
|
2016-03-06 22:04:19 +01:00
|
|
|
'herald-css' => 'dc31f6e9',
|
2016-03-22 17:08:26 +01:00
|
|
|
'herald-rule-editor' => 'd6a7e717',
|
2015-07-18 14:54:26 +02:00
|
|
|
'herald-test-css' => 'a52e323e',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'inline-comment-summary-css' => '51efda3a',
|
2015-05-07 21:47:49 +02:00
|
|
|
'javelin-aphlict' => '5359e785',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-behavior' => '61cbc29a',
|
2016-08-28 04:00:35 +02:00
|
|
|
'javelin-behavior-aphlict-dropdown' => '49e20786',
|
2015-06-22 22:11:37 +02:00
|
|
|
'javelin-behavior-aphlict-listen' => 'fb20ac8d',
|
2015-01-14 22:08:08 +01:00
|
|
|
'javelin-behavior-aphlict-status' => 'ea681761',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-aphront-crop' => 'fa0f4fc2',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-behavior-aphront-drag-and-drop-textarea' => '484a6e22',
|
2014-08-02 23:44:35 +02:00
|
|
|
'javelin-behavior-aphront-form-disable-on-submit' => '5c54cbf3',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-aphront-more' => 'a80d0378',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-audio-source' => '59b251eb',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-audit-preview' => 'd835b03a',
|
2016-04-13 18:20:15 +02:00
|
|
|
'javelin-behavior-badge-view' => '8ff5e24c',
|
2015-06-23 22:43:47 +02:00
|
|
|
'javelin-behavior-bulk-job-reload' => 'edf8a145',
|
2016-07-27 15:44:42 +02:00
|
|
|
'javelin-behavior-calendar-month-view' => 'fe33e256',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
'javelin-behavior-choose-control' => '327a00d1',
|
Clean up some log spam caused by races in VersionedDraft
Summary:
Two minor issues that I caught in the log while fixing Phame permissions:
- 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.
- 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.
Test Plan:
Submitted some Phame comments.
- No more error log errors about VersionedDraft keys.
- Saw only one preview request when loading the page instead of two.
Here's the specific stack trace I caught:
```
[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]
[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)
[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]
[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]
[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]
[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]
[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)
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
```
Reviewers: chad
Reviewed By: chad
Differential Revision: https://secure.phabricator.com/D16494
2016-09-05 21:24:58 +02:00
|
|
|
'javelin-behavior-comment-actions' => '0300eae6',
|
2015-05-25 14:34:23 +02:00
|
|
|
'javelin-behavior-config-reorder-fields' => 'b6993408',
|
2015-05-04 22:52:22 +02:00
|
|
|
'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a',
|
2015-08-20 17:24:42 +02:00
|
|
|
'javelin-behavior-conpherence-menu' => '1d45c74d',
|
2015-03-10 23:30:49 +01:00
|
|
|
'javelin-behavior-conpherence-pontificate' => '21ba5861',
|
2015-06-26 00:59:52 +02:00
|
|
|
'javelin-behavior-conpherence-widget-pane' => 'a8458711',
|
2014-12-30 11:53:27 +01:00
|
|
|
'javelin-behavior-countdown-timer' => 'e4cc26b3',
|
2015-04-28 23:51:49 +02:00
|
|
|
'javelin-behavior-dark-console' => 'f411b6ae',
|
2014-05-19 23:04:26 +02:00
|
|
|
'javelin-behavior-dashboard-async-panel' => '469c0d9e',
|
2016-02-02 15:26:42 +01:00
|
|
|
'javelin-behavior-dashboard-move-panels' => '019f36c4',
|
2014-07-13 18:18:50 +02:00
|
|
|
'javelin-behavior-dashboard-query-panel-select' => '453c5375',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-dashboard-tab-panel' => 'd4eecc63',
|
2016-07-15 23:02:24 +02:00
|
|
|
'javelin-behavior-day-view' => '4b3c4443',
|
2015-06-22 22:11:37 +02:00
|
|
|
'javelin-behavior-desktop-notifications-control' => 'edd1ba66',
|
2016-05-22 15:50:12 +02:00
|
|
|
'javelin-behavior-detect-timezone' => '4c193c96',
|
2016-05-21 21:08:47 +02:00
|
|
|
'javelin-behavior-device' => 'bb1dd507',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-differential-add-reviewers-and-ccs' => 'e10f8e18',
|
2014-07-01 20:04:05 +02:00
|
|
|
'javelin-behavior-differential-comment-jump' => '4fdb476d',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
|
2016-01-13 15:19:31 +01:00
|
|
|
'javelin-behavior-differential-dropdown-menus' => '9a6b9324',
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'javelin-behavior-differential-edit-inline-comments' => '4fbbc3e9',
|
2015-05-20 22:54:22 +02:00
|
|
|
'javelin-behavior-differential-feedback-preview' => 'b064af76',
|
2014-11-12 21:26:22 +01:00
|
|
|
'javelin-behavior-differential-keyboard-navigation' => '2c426492',
|
2015-03-05 23:03:15 +01:00
|
|
|
'javelin-behavior-differential-populate' => '8694b1df',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-differential-toggle-files' => 'ca3f91eb',
|
|
|
|
'javelin-behavior-differential-user-select' => 'a8d8459d',
|
2016-04-15 14:37:58 +02:00
|
|
|
'javelin-behavior-diffusion-browse-file' => '054a0f0b',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04',
|
2016-07-01 18:22:00 +02:00
|
|
|
'javelin-behavior-diffusion-commit-graph' => '49ae8328',
|
2015-01-29 19:20:35 +01:00
|
|
|
'javelin-behavior-diffusion-jump-to' => '73d09eef',
|
2014-05-13 23:09:00 +02:00
|
|
|
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
|
2015-10-07 16:32:27 +02:00
|
|
|
'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-behavior-doorkeeper-tag' => 'e5822781',
|
2015-10-21 20:28:26 +02:00
|
|
|
'javelin-behavior-drydock-live-operation-status' => '901935ef',
|
2016-05-21 21:08:47 +02:00
|
|
|
'javelin-behavior-durable-column' => 'd3506890',
|
2015-12-08 15:14:47 +01:00
|
|
|
'javelin-behavior-editengine-reorder-configs' => 'd7a74243',
|
2015-11-17 18:33:06 +01:00
|
|
|
'javelin-behavior-editengine-reorder-fields' => 'b59e1e96',
|
2014-12-30 11:51:31 +01:00
|
|
|
'javelin-behavior-error-log' => '6882e80a',
|
2016-07-27 14:07:38 +02:00
|
|
|
'javelin-behavior-event-all-day' => '937bb700',
|
2016-04-15 22:52:00 +02:00
|
|
|
'javelin-behavior-fancy-datepicker' => '568931f3',
|
2015-05-06 21:59:09 +02:00
|
|
|
'javelin-behavior-global-drag-and-drop' => 'c8e57404',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-herald-rule-editor' => '7ebaeed3',
|
2015-04-24 01:37:56 +02:00
|
|
|
'javelin-behavior-high-security-warning' => 'a464fe03',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-history-install' => '7ee2b591',
|
2016-01-19 17:43:31 +01:00
|
|
|
'javelin-behavior-icon-composer' => '8499b6ab',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-behavior-launch-icon-composer' => '48086888',
|
2014-12-23 18:28:57 +01:00
|
|
|
'javelin-behavior-lightbox-attachments' => 'f8ba29d7',
|
2016-01-28 22:29:27 +01:00
|
|
|
'javelin-behavior-line-chart' => 'e4232876',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-load-blame' => '42126667',
|
2015-06-11 19:24:39 +02:00
|
|
|
'javelin-behavior-maniphest-batch-editor' => '782ab6e7',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-maniphest-batch-selector' => '7b98d7c5',
|
|
|
|
'javelin-behavior-maniphest-list-editor' => 'a9f88de2',
|
2015-06-30 18:37:12 +02:00
|
|
|
'javelin-behavior-maniphest-subpriority-editor' => '71237763',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-owners-path-editor' => '7a68dda3',
|
2015-03-02 22:01:00 +01:00
|
|
|
'javelin-behavior-passphrase-credential-control' => '3cb0b2fc',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-persona-login' => '9414ff18',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-phabricator-active-nav' => 'e379b58e',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-phabricator-autofocus' => '7319e029',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-phabricator-busy-example' => '60479091',
|
|
|
|
'javelin-behavior-phabricator-file-tree' => '88236f00',
|
|
|
|
'javelin-behavior-phabricator-gesture' => '3ab51e2c',
|
|
|
|
'javelin-behavior-phabricator-gesture-example' => '558829c2',
|
|
|
|
'javelin-behavior-phabricator-keyboard-pager' => 'a8da01f0',
|
Make "/" focus the search input again
Summary:
See D1902, T989, T11263, D15984, T4103 , D15976, https://secure.phabricator.com/w/changelog/2016.22/, T2527, T11231, T8286, T11264 for discussion!
When we get another copy of T989, I will rename it to "Build a complicated keybinding settings page like a cool video game" and leave it open forever.
Test Plan: Pressed "/" in Firefox, had my pristine browsing experience inexplicably hijacked by this horrible application.
Reviewers: avivey, chad
Reviewed By: avivey
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15984
2016-07-08 22:57:33 +02:00
|
|
|
'javelin-behavior-phabricator-keyboard-shortcuts' => '01fca1f0',
|
2014-12-30 11:50:26 +01:00
|
|
|
'javelin-behavior-phabricator-line-linker' => '1499a8cb',
|
2016-08-01 22:54:39 +02:00
|
|
|
'javelin-behavior-phabricator-nav' => '08675c6d',
|
2014-12-30 11:54:21 +01:00
|
|
|
'javelin-behavior-phabricator-notification-example' => '8ce821c5',
|
2016-06-30 20:37:38 +02:00
|
|
|
'javelin-behavior-phabricator-object-selector' => 'e0ec7f2f',
|
2014-06-23 19:35:39 +02:00
|
|
|
'javelin-behavior-phabricator-oncopy' => '2926fff2',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-behavior-phabricator-remarkup-assist' => '116cf19b',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-phabricator-reveal-content' => '60821bc7',
|
2016-02-05 21:39:00 +01:00
|
|
|
'javelin-behavior-phabricator-search-typeahead' => '06c32383',
|
2016-07-08 15:08:51 +02:00
|
|
|
'javelin-behavior-phabricator-show-older-transactions' => '94c65b72',
|
Don't mutate DOM by showing a tooltip on touch events
Summary:
This fix further addresses T10229. The problem and solution are the same:
- If the DOM is mutated during a touch, it never registers as a 'click' so the tapped button does not activate.
- This was partially addressed in D15136, which covered taps on code lines in a Differential view.
- Tapping on some buttons, like "Reply" or "Hide Comment" still caused the problem by showing a tooltip.
- There are probably similar buttons elsewhere, other than in Differential, exhibiting the same 'needs multiple taps to work' behaviour.
- The testing in the iOS simulator performed for D15136 did not reveal that the problem with "Hide comment" and such remained because the small device size used for testing triggered the `!= 'desktop'` path for tooltips.
To fix it:
- Don't show tooltips for touch events. You can't 'hover' with a finger (with today's tech) so that UI paradigm doesn't apply.
- Show the tooltips for regular mouse events, even if they are on the same device. Some devices have both touch and a mouse.
- No longer try to rely on a distinction between 'desktop' and 'mobile' devices. Mobile devices like the iPad Pro are essentially desktop like, and as mentioned above, a single device could be both touch and mouse enabled. It's not about the nature of the device, it's about the nature of the interaction.
Test Plan:
- Tapped "Hide Comment", "Reply" on an iPad Pro running iOS 9.2 and got single touch responses with no tooltips.
- Tried the same on an iPhone 6 running iOS 9.2.
- Hovered over the same on a regular desktop in Safari and saw tooltips. Clicked and saw regular reactions.
Reviewers: epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15310
2016-02-19 14:06:14 +01:00
|
|
|
'javelin-behavior-phabricator-tooltips' => '42fcb747',
|
2015-05-18 21:18:10 +02:00
|
|
|
'javelin-behavior-phabricator-transaction-comment-form' => 'b23b49e6',
|
2014-08-08 00:21:32 +02:00
|
|
|
'javelin-behavior-phabricator-transaction-list' => '13c739ea',
|
2015-01-28 17:26:10 +01:00
|
|
|
'javelin-behavior-phabricator-watch-anchor' => '9f36c42d',
|
2016-06-09 17:34:00 +02:00
|
|
|
'javelin-behavior-pholio-mock-edit' => 'bee502c8',
|
Quicksand and Pholio - make mock edit work
Summary: Fixes T8036. In addition to making the mock edit work, this tightens quicksand code such that the correct page id is returned even if start() has not been called yet. It also tightens mock view where some functions should respect statics.enabled a bit more.
Test Plan:
clicked edit mock, mock crumb, edit mock, mock crum, edit mock, made edits and they worked! clicked edit mock, mock crumb, edit mock, mock crumb, edit mock, profile icon, hit browser back to edit mock, made edits and they worked!
also observed mock view page not occasionally wigging out from image_onload race not having statics.enabled respect during the above
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8036
Differential Revision: https://secure.phabricator.com/D12739
2015-05-07 19:42:07 +02:00
|
|
|
'javelin-behavior-pholio-mock-view' => 'fbe497e7',
|
2016-06-21 02:49:38 +02:00
|
|
|
'javelin-behavior-phui-dropdown-menu' => '1aa4c968',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-behavior-phui-file-upload' => 'b003d4fb',
|
2016-02-03 17:26:30 +01:00
|
|
|
'javelin-behavior-phui-hovercards' => 'bcaccd64',
|
2016-01-23 23:24:09 +01:00
|
|
|
'javelin-behavior-phui-profile-menu' => '12884df9',
|
2016-06-21 02:49:38 +02:00
|
|
|
'javelin-behavior-phui-submenu' => 'a6f7a73b',
|
2016-07-01 01:55:28 +02:00
|
|
|
'javelin-behavior-phui-tab-group' => '0a0b10e9',
|
2016-02-05 19:30:20 +01:00
|
|
|
'javelin-behavior-policy-control' => 'd0c516d5',
|
2015-04-17 16:55:17 +02:00
|
|
|
'javelin-behavior-policy-rule-editor' => '5e9f347c',
|
2016-02-11 00:06:20 +01:00
|
|
|
'javelin-behavior-project-boards' => '14a1faae',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-behavior-project-create' => '065227cc',
|
2015-03-10 23:32:15 +01:00
|
|
|
'javelin-behavior-quicksand-blacklist' => '7927a7d3',
|
2016-04-10 13:26:53 +02:00
|
|
|
'javelin-behavior-read-only-warning' => 'ba158207',
|
[Redesign] Move basefont to Lato, remove Source Sans Pro
Summary: Working towards a more unified look and feel. This brings in Lato as a complete base font over Helvetica Neue, as well as removing Source Sans Pro from DocumentView and Conpherence. Design-wise Lato provides the nice readability at larger font sizes that Source Sans Pro did, with the ability to scale down to tables and UI widgets with ease. This gives us one font instead of two, and now Object descriptions and Timeline posts all can benefit from a consistent, readable font.
Test Plan:
Test main UI, smaller elements like tables, menus, DocumentViews, Previews, Conpherence.
{F498135}
{F498136}
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: epriestley, Korvin
Differential Revision: https://secure.phabricator.com/D13276
2015-06-13 21:32:45 +02:00
|
|
|
'javelin-behavior-recurring-edit' => '5f1c4d5f',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'javelin-behavior-refresh-csrf' => 'ab2f381b',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-releeph-preview-branch' => 'b2b4fbaf',
|
2015-01-25 17:46:22 +01:00
|
|
|
'javelin-behavior-releeph-request-state-change' => 'a0b57eb8',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-behavior-releeph-request-typeahead' => 'de2e896f',
|
2015-12-26 22:00:01 +01:00
|
|
|
'javelin-behavior-remarkup-preview' => '4b700e9e',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-reorder-applications' => '76b9fc3e',
|
2014-08-09 17:49:01 +02:00
|
|
|
'javelin-behavior-reorder-columns' => 'e1d25dfb',
|
2016-01-13 18:40:27 +01:00
|
|
|
'javelin-behavior-reorder-profile-menu-items' => 'e2e0a072',
|
2015-08-27 13:17:33 +02:00
|
|
|
'javelin-behavior-repository-crossreference' => 'e5339c43',
|
2015-01-25 17:46:22 +01:00
|
|
|
'javelin-behavior-scrollbar' => '834a1173',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-search-reorder-queries' => 'e9581f08',
|
2016-05-11 19:17:33 +02:00
|
|
|
'javelin-behavior-select-content' => 'bf5374ef',
|
2014-06-23 19:27:47 +02:00
|
|
|
'javelin-behavior-select-on-click' => '4e3e79a6',
|
2016-06-07 00:01:18 +02:00
|
|
|
'javelin-behavior-setup-check-https' => '491416b3',
|
2015-01-23 22:29:15 +01:00
|
|
|
'javelin-behavior-slowvote-embed' => '887ad43f',
|
2014-12-30 11:53:27 +01:00
|
|
|
'javelin-behavior-stripe-payment-form' => '3f5d6dbf',
|
|
|
|
'javelin-behavior-test-payment-form' => 'fc91ab6c',
|
2016-04-15 21:06:53 +02:00
|
|
|
'javelin-behavior-time-typeahead' => '522431f7',
|
2016-04-13 18:20:15 +02:00
|
|
|
'javelin-behavior-toggle-class' => '92b9ec77',
|
2015-04-17 16:55:17 +02:00
|
|
|
'javelin-behavior-typeahead-browse' => '635de1ec',
|
|
|
|
'javelin-behavior-typeahead-search' => '93d0c9e3',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-behavior-view-placeholder' => '47830651',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'javelin-behavior-workflow' => '0a3f3021',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-color' => '7e41274a',
|
2015-01-20 01:55:08 +01:00
|
|
|
'javelin-cookie' => '62dfea03',
|
2014-06-23 19:35:39 +02:00
|
|
|
'javelin-diffusion-locate-file-source' => 'b42eddc7',
|
2015-09-02 00:35:25 +02:00
|
|
|
'javelin-dom' => '805b806a',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-dynval' => 'f6555212',
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'javelin-event' => '2ee659ce',
|
2014-01-01 16:46:25 +01:00
|
|
|
'javelin-fx' => '54b612ba',
|
2015-03-28 15:38:14 +01:00
|
|
|
'javelin-history' => 'd4505101',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-install' => '05270951',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-json' => '69adf288',
|
2016-04-27 01:27:31 +02:00
|
|
|
'javelin-leader' => 'fea0eb47',
|
2015-03-28 16:35:12 +01:00
|
|
|
'javelin-magical-init' => '3010e992',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-mask' => '8a41885b',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'javelin-quicksand' => '6b8ef10b',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-reactor' => '2b8de964',
|
|
|
|
'javelin-reactor-dom' => 'c90a04fc',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-reactor-node-calmer' => '76f4ebed',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-reactornode' => '1ad0a787',
|
|
|
|
'javelin-request' => '94b750d2',
|
|
|
|
'javelin-resource' => '44959b73',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'javelin-routable' => 'b3e7d692',
|
|
|
|
'javelin-router' => '29274e2b',
|
2015-05-11 22:50:44 +02:00
|
|
|
'javelin-scrollbar' => '087e919c',
|
2015-03-10 23:30:49 +01:00
|
|
|
'javelin-sound' => '949c0fe5',
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'javelin-stratcom' => '6ad39b6f',
|
2015-12-17 22:27:36 +01:00
|
|
|
'javelin-tokenizer' => '8d3bc1b2',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-typeahead' => '70baed2f',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-typeahead-composite-source' => '503e17fd',
|
2015-04-17 16:55:17 +02:00
|
|
|
'javelin-typeahead-normalizer' => 'e6e25838',
|
2016-01-16 23:33:03 +01:00
|
|
|
'javelin-typeahead-ondemand-source' => '013ffff9',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
'javelin-typeahead-preloaded-source' => '54f314a0',
|
2016-06-09 22:13:11 +02:00
|
|
|
'javelin-typeahead-source' => 'b25d5444',
|
Time control typeaheads.
Summary: Ref T8031, Time control typeaheads
Test Plan: Edit an event, type '3', typeahead should suggest, '3:00 AM', '3:30 AM', '3:00 PM', '3:30 PM'.
Reviewers: chad, epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin, epriestley
Maniphest Tasks: T8031
Differential Revision: https://secure.phabricator.com/D12953
2015-05-20 18:51:26 +02:00
|
|
|
'javelin-typeahead-static-source' => '6c0e62fa',
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'javelin-uri' => 'c989ade3',
|
2015-01-20 01:55:08 +01:00
|
|
|
'javelin-util' => '93cc50d6',
|
2015-01-28 17:26:10 +01:00
|
|
|
'javelin-vector' => '2caa8fb8',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-view' => '0f764c35',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-view-html' => 'fe287620',
|
|
|
|
'javelin-view-interpreter' => 'f829edb3',
|
2014-02-27 20:06:55 +01:00
|
|
|
'javelin-view-renderer' => '6c2b09a2',
|
|
|
|
'javelin-view-visitor' => 'efe49472',
|
Namespace Aphlict clients by request path, plus other fixes
Summary:
Fixes T7130. Fixes T7041. Fixes T7012.
Major change here is partitioning clients. In the Phacility cluster, being able to get a huge pile of instances on a single server -- without needing to run a process per instance -- is desirable.
To accomplish this, just bucket clients by the path they connect with. This will let us set client URIs to `/instancename/` and then route connections to a small set of servers. This degrades cleanly in the common case and has no effect on installs which don't do instancing.
Also fix two unrelated issues:
- Fix the timeouts, which were incorrectly initializing in `open()` (which is called during reconnect, causing them to reset every time). Instead, initialize in the constructor. Cap timeout at 5 minutes.
- Probably fix subscriptions, which were using a property with an object definition. Since this is by-ref, all concrete instances of the object share the same property, so all users would be subscribed to everything. Probably.
Test Plan:
- Hit notification status page, saw version bump and instance/path name.
- Saw instance/path name in client and server logs.
- Stopped server, saw reconnects after 2, 4, 16, ... seconds.
- Sent test notification; received test notification.
- Didn't explicitly test the subscription thing but it should be obvious by looking at `/notification/status/` shortly after a push.
Reviewers: joshuaspence, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T7041, T7012, T7130
Differential Revision: https://secure.phabricator.com/D11769
2015-02-16 20:31:15 +01:00
|
|
|
'javelin-websocket' => 'e292eaf4',
|
2016-08-14 17:58:17 +02:00
|
|
|
'javelin-workboard-board' => 'fe7cb52a',
|
2016-02-11 00:06:20 +01:00
|
|
|
'javelin-workboard-card' => 'c587b80f',
|
2016-03-11 03:54:17 +01:00
|
|
|
'javelin-workboard-column' => 'bae58312',
|
2016-02-11 18:51:32 +01:00
|
|
|
'javelin-workboard-controller' => '55baf5ed',
|
2016-06-21 02:29:56 +02:00
|
|
|
'javelin-workflow' => '1e911d0f',
|
2014-02-27 20:06:55 +01:00
|
|
|
'lightbox-attachment-css' => '7acac05d',
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
'maniphest-batch-editor' => 'b0f0b6d5',
|
2016-01-28 05:56:36 +01:00
|
|
|
'maniphest-report-css' => '9b9580b7',
|
2015-06-26 18:33:03 +02:00
|
|
|
'maniphest-task-edit-css' => 'fda62a9b',
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
'maniphest-task-summary-css' => '11cc5344',
|
2014-11-17 23:06:05 +01:00
|
|
|
'multirow-row-manager' => 'b5d57730',
|
2014-06-23 19:35:39 +02:00
|
|
|
'owners-path-editor' => 'aa1733d0',
|
2014-01-01 16:46:25 +01:00
|
|
|
'owners-path-editor-css' => '2f00933b',
|
2016-02-26 23:34:51 +01:00
|
|
|
'paste-css' => '1898e534',
|
2014-01-01 16:46:25 +01:00
|
|
|
'path-typeahead' => 'f7fc67ec',
|
2016-01-28 05:56:36 +01:00
|
|
|
'people-profile-css' => '2473d929',
|
2015-07-02 00:17:44 +02:00
|
|
|
'phabricator-action-list-view-css' => 'c5eba19d',
|
2015-07-20 22:48:35 +02:00
|
|
|
'phabricator-application-launch-view-css' => '95351601',
|
2015-04-02 05:10:32 +02:00
|
|
|
'phabricator-busy' => '59a7976a',
|
2015-06-26 18:33:03 +02:00
|
|
|
'phabricator-chatlog-css' => 'd295b020',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phabricator-content-source-view-css' => '4b8b05d4',
|
2016-02-26 23:34:51 +01:00
|
|
|
'phabricator-core-css' => 'd0801452',
|
2016-04-09 19:07:02 +02:00
|
|
|
'phabricator-countdown-css' => '16c52f5c',
|
2016-04-03 01:02:13 +02:00
|
|
|
'phabricator-dashboard-css' => 'bc6f2127',
|
2016-05-21 01:26:11 +02:00
|
|
|
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
|
Replace height buffer behavior while dragging on workboards with infinite column height
Summary:
Ref T4900. The root problem is that dragging stuff near the bottom of the board can cause jittery, jumpy behaviors.
Internal scrolling has changed the nature of this problem. Previously, the height of the board itself would jump around, but it's now fixed so the height of columns jumps around instead.
We could take the same approach and add a chunk to the bottom of each column when a drag starts, but this is really distracting visually since it's obvious to the user.
Instead, treat columns as infinitely tall (so dragging beneath them still counts as dragging to the bottom position).
Test Plan:
- View a board with a column taller than the screen (has a scrollbar).
- Drag a card to near the bottom position.
- Move the mouse down a little bit at a time, continuing toward the bottom of the page.
- Before patch: at some point, UI flips out and starts rapidly adding, scrolling, and removing the ghost.
- After patch: sensible behavior, ghost is in bottom position for all cursor locations.
Also works for dragging to the top.
(This leaves us with a little less dead space for cancelling drags, but you've still got the left menu, anything offscreen, and the escape key, which seems fine.)
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T4900
Differential Revision: https://secure.phabricator.com/D15227
2016-02-09 14:40:56 +01:00
|
|
|
'phabricator-draggable-list' => '5a13c79f',
|
2016-09-06 22:48:22 +02:00
|
|
|
'phabricator-fatal-config-template-css' => '8f18fa41',
|
2015-05-28 20:47:06 +02:00
|
|
|
'phabricator-feed-css' => 'ecd4ec57',
|
2016-02-06 23:05:15 +01:00
|
|
|
'phabricator-file-upload' => '680ea2c8',
|
2014-05-30 01:04:50 +02:00
|
|
|
'phabricator-filetree-view-css' => 'fccf9f82',
|
2014-01-06 06:47:21 +01:00
|
|
|
'phabricator-flag-css' => '5337623f',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phabricator-keyboard-shortcut' => '1ae869f2',
|
2016-07-08 17:30:30 +02:00
|
|
|
'phabricator-keyboard-shortcut-manager' => '4a021c10',
|
2016-08-28 04:00:35 +02:00
|
|
|
'phabricator-main-menu-view' => 'e862571a',
|
2016-08-12 02:12:53 +02:00
|
|
|
'phabricator-nav-view-css' => 'b29426e9',
|
2015-06-22 22:11:37 +02:00
|
|
|
'phabricator-notification' => 'ccf1cbf8',
|
2016-04-09 14:41:08 +02:00
|
|
|
'phabricator-notification-css' => '3f6c89c9',
|
2016-08-28 04:00:35 +02:00
|
|
|
'phabricator-notification-menu-css' => 'b3ab500d',
|
2015-07-02 23:39:43 +02:00
|
|
|
'phabricator-object-selector-css' => '85ee8ce6',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phabricator-phtize' => 'd254d646',
|
2016-06-09 22:13:11 +02:00
|
|
|
'phabricator-prefab' => 'cfd23f37',
|
Always pre-wrap code blocks
Summary: Fixes T11416. Unclear what the side-effects of this would be, so bark if you find something. Previously, we'd have to overflow and scroll, which is kind of a pain since you're hiding content on long code blocks. This just wraps long lines, and preserves line breaks globally.
Test Plan: Test feed, profile, comments, inline comments, triple backticks.
Reviewers: avivey, epriestley
Reviewed By: avivey, epriestley
Subscribers: Korvin
Maniphest Tasks: T11416
Differential Revision: https://secure.phabricator.com/D16361
2016-08-02 20:22:53 +02:00
|
|
|
'phabricator-remarkup-css' => '5ed06ed8',
|
2015-09-11 05:57:26 +02:00
|
|
|
'phabricator-search-results-css' => '7dea472c',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
'phabricator-shaped-request' => '7cbe244b',
|
2016-02-26 23:34:51 +01:00
|
|
|
'phabricator-slowvote-css' => 'a94b7230',
|
2015-09-17 17:23:22 +02:00
|
|
|
'phabricator-source-code-view-css' => 'cbeef983',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'phabricator-standard-page-view' => '2b592894',
|
2016-05-21 01:26:11 +02:00
|
|
|
'phabricator-textareautils' => '320810c8',
|
2015-04-02 22:41:48 +02:00
|
|
|
'phabricator-title' => 'df5e11d2',
|
2016-02-02 15:26:42 +01:00
|
|
|
'phabricator-tooltip' => '6323f942',
|
2014-04-23 03:29:14 +02:00
|
|
|
'phabricator-ui-example-css' => '528b19de',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phabricator-uiexample-javelin-view' => 'd4a14807',
|
2014-06-23 19:35:39 +02:00
|
|
|
'phabricator-uiexample-reactor-button' => 'd19198c8',
|
2014-06-23 19:27:47 +02:00
|
|
|
'phabricator-uiexample-reactor-checkbox' => '519705ea',
|
|
|
|
'phabricator-uiexample-reactor-focus' => '40a6a403',
|
|
|
|
'phabricator-uiexample-reactor-input' => '886fd850',
|
2014-06-23 19:35:39 +02:00
|
|
|
'phabricator-uiexample-reactor-mouseover' => '47c794d8',
|
2014-06-23 19:27:47 +02:00
|
|
|
'phabricator-uiexample-reactor-radio' => '988040b4',
|
|
|
|
'phabricator-uiexample-reactor-select' => 'a155550f',
|
|
|
|
'phabricator-uiexample-reactor-sendclass' => '1def2711',
|
|
|
|
'phabricator-uiexample-reactor-sendproperties' => 'b1f0ccee',
|
2016-08-28 04:00:35 +02:00
|
|
|
'phabricator-zindex-css' => '2b01a823',
|
2016-07-06 21:24:36 +02:00
|
|
|
'phame-css' => '8efb0729',
|
2016-02-15 06:29:56 +01:00
|
|
|
'pholio-css' => 'ca89d380',
|
2016-06-09 17:34:00 +02:00
|
|
|
'pholio-edit-css' => '07676f51',
|
2014-06-25 00:23:57 +02:00
|
|
|
'pholio-inline-comments-css' => '8e545e49',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phortune-credit-card-form' => '2290aeef',
|
2015-03-02 22:01:08 +01:00
|
|
|
'phortune-credit-card-form-css' => '8391eb02',
|
2016-06-08 05:55:18 +02:00
|
|
|
'phortune-css' => '5b99dae0',
|
2014-01-06 06:47:21 +01:00
|
|
|
'phrequent-css' => 'ffc185ad',
|
2016-04-20 15:00:10 +02:00
|
|
|
'phriction-document-css' => '4282e4ad',
|
2015-09-17 17:22:23 +02:00
|
|
|
'phui-action-panel-css' => '91c7b835',
|
2016-04-13 18:20:15 +02:00
|
|
|
'phui-badge-view-css' => '3baef8db',
|
2016-08-04 22:49:16 +02:00
|
|
|
'phui-basic-nav-view-css' => '7093573b',
|
2015-12-21 20:15:44 +01:00
|
|
|
'phui-big-info-view-css' => 'bd903741',
|
2016-04-09 19:07:02 +02:00
|
|
|
'phui-box-css' => '5c8387cf',
|
2016-06-21 21:54:35 +02:00
|
|
|
'phui-button-css' => '4a5fbe3d',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-calendar-css' => '477acfaa',
|
2016-07-27 18:07:29 +02:00
|
|
|
'phui-calendar-day-css' => '572b1893',
|
|
|
|
'phui-calendar-list-css' => 'fcc9fb41',
|
2016-07-27 16:23:07 +02:00
|
|
|
'phui-calendar-month-css' => '8e10e92c',
|
2016-01-28 22:29:27 +01:00
|
|
|
'phui-chart-css' => '6bf6f78e',
|
2016-08-20 22:11:02 +02:00
|
|
|
'phui-cms-css' => 'be43c8a8',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-crumbs-view-css' => '9dac418c',
|
2016-03-10 03:46:54 +01:00
|
|
|
'phui-curtain-view-css' => '7148ae25',
|
2015-12-19 21:28:18 +01:00
|
|
|
'phui-document-summary-view-css' => '9ca48bdf',
|
2016-08-08 05:04:57 +02:00
|
|
|
'phui-document-view-css' => 'c32e8dec',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-document-view-pro-css' => 'dc3d46ed',
|
2016-05-01 22:02:48 +02:00
|
|
|
'phui-feed-story-css' => 'aa49845d',
|
Redesign Config Application
Summary: Ref T11132, significantly cleans up the Config app, new layout, icons, spacing, etc. Some minor todos around re-designing "issues", mobile support, and maybe another pass at actual Group pages.
Test Plan: Visit and test every page in the config app, set new items, resolve setup issues, etc.
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam, Korvin
Maniphest Tasks: T11132
Differential Revision: https://secure.phabricator.com/D16468
2016-08-30 00:36:13 +02:00
|
|
|
'phui-font-icon-base-css' => '870a7360',
|
2015-11-22 22:10:41 +01:00
|
|
|
'phui-fontkit-css' => '9cda225e',
|
2016-02-15 06:29:56 +01:00
|
|
|
'phui-form-css' => 'aac1d51d',
|
2016-08-17 23:57:21 +02:00
|
|
|
'phui-form-view-css' => '76b4a46c',
|
2016-03-17 20:01:22 +01:00
|
|
|
'phui-head-thing-view-css' => 'fd311e5f',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-header-view-css' => '06385974',
|
2016-02-03 17:26:30 +01:00
|
|
|
'phui-hovercard' => '1bd28176',
|
2016-02-05 05:11:36 +01:00
|
|
|
'phui-hovercard-view-css' => 'de1a2119',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
'phui-icon-set-selector-css' => '1ab67aad',
|
2016-08-19 21:49:38 +02:00
|
|
|
'phui-icon-view-css' => 'b1dbd620',
|
2016-02-15 06:29:56 +01:00
|
|
|
'phui-image-mask-css' => 'a8498f9c',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phui-info-panel-css' => '27ea50a1',
|
2016-03-17 20:01:22 +01:00
|
|
|
'phui-info-view-css' => '28efab79',
|
2016-03-11 01:33:44 +01:00
|
|
|
'phui-inline-comment-view-css' => '5953c28e',
|
2015-12-19 15:29:48 +01:00
|
|
|
'phui-list-view-css' => '9da2aa00',
|
2016-03-12 22:02:32 +01:00
|
|
|
'phui-object-box-css' => '6b487c57',
|
2016-08-30 21:53:09 +02:00
|
|
|
'phui-object-item-list-view-css' => '87278fa0',
|
2015-06-02 23:34:04 +02:00
|
|
|
'phui-pager-css' => 'bea33d23',
|
2015-05-31 23:28:16 +02:00
|
|
|
'phui-pinboard-view-css' => '2495140e',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-profile-menu-css' => '8a3fc181',
|
2016-06-24 21:10:20 +02:00
|
|
|
'phui-property-list-view-css' => '6d8e58ac',
|
2015-11-23 18:17:36 +01:00
|
|
|
'phui-remarkup-preview-css' => '1a8f2591',
|
2016-02-12 02:04:14 +01:00
|
|
|
'phui-segment-bar-view-css' => '46342871',
|
2014-01-01 16:46:25 +01:00
|
|
|
'phui-spacing-css' => '042804d6',
|
2016-05-01 21:48:56 +02:00
|
|
|
'phui-status-list-view-css' => 'd5263e49',
|
2016-03-05 00:44:24 +01:00
|
|
|
'phui-tag-view-css' => '6bbd83e2',
|
2016-02-23 17:36:49 +01:00
|
|
|
'phui-theme-css' => '027ba77e',
|
2016-07-09 01:01:42 +02:00
|
|
|
'phui-timeline-view-css' => 'bc523970',
|
2016-07-26 21:49:12 +02:00
|
|
|
'phui-two-column-view-css' => '5afdf637',
|
2016-02-16 23:27:05 +01:00
|
|
|
'phui-workboard-color-css' => 'ac6fe6a7',
|
2016-08-28 04:00:35 +02:00
|
|
|
'phui-workboard-view-css' => 'bda3ef58',
|
2016-05-20 22:03:26 +02:00
|
|
|
'phui-workcard-view-css' => '0c62d7c5',
|
2016-02-13 20:55:14 +01:00
|
|
|
'phui-workpanel-view-css' => '92197373',
|
2014-05-05 19:57:23 +02:00
|
|
|
'phuix-action-list-view' => 'b5c256b8',
|
2015-04-23 16:03:03 +02:00
|
|
|
'phuix-action-view' => '8cf6d262',
|
2016-07-08 17:17:51 +02:00
|
|
|
'phuix-autocomplete' => '6d86ce8b',
|
2016-06-21 02:49:38 +02:00
|
|
|
'phuix-dropdown-menu' => '82e270da',
|
2016-04-06 14:59:09 +02:00
|
|
|
'phuix-form-control-view' => 'e15869a8',
|
2015-12-02 23:38:11 +01:00
|
|
|
'phuix-icon-view' => 'bff6884b',
|
2014-01-01 16:46:25 +01:00
|
|
|
'policy-css' => '957ea14c',
|
2014-11-17 23:06:05 +01:00
|
|
|
'policy-edit-css' => '815c66f7',
|
2014-04-29 19:43:38 +02:00
|
|
|
'policy-transaction-detail-css' => '82100a43',
|
2016-03-04 00:18:41 +01:00
|
|
|
'ponder-view-css' => 'fbd45f96',
|
2016-02-11 23:55:44 +01:00
|
|
|
'project-card-view-css' => '9418c97d',
|
Always pre-wrap code blocks
Summary: Fixes T11416. Unclear what the side-effects of this would be, so bark if you find something. Previously, we'd have to overflow and scroll, which is kind of a pain since you're hiding content on long code blocks. This just wraps long lines, and preserves line breaks globally.
Test Plan: Test feed, profile, comments, inline comments, triple backticks.
Reviewers: avivey, epriestley
Reviewed By: avivey, epriestley
Subscribers: Korvin
Maniphest Tasks: T11416
Differential Revision: https://secure.phabricator.com/D16361
2016-08-02 20:22:53 +02:00
|
|
|
'project-view-css' => '9ce99f21',
|
2014-04-18 15:44:45 +02:00
|
|
|
'releeph-core' => '9b3c5733',
|
2014-04-14 21:06:56 +02:00
|
|
|
'releeph-preview-branch' => 'b7a6f4a5',
|
2014-01-01 16:46:25 +01:00
|
|
|
'releeph-request-differential-create-dialog' => '8d8b92cd',
|
|
|
|
'releeph-request-typeahead-css' => '667a48ae',
|
2016-08-26 06:34:24 +02:00
|
|
|
'setup-issue-css' => 'f794cfc3',
|
2016-09-06 17:50:37 +02:00
|
|
|
'sprite-login-css' => '6dbbbd97',
|
2016-07-04 03:32:31 +02:00
|
|
|
'sprite-tokens-css' => '9cdfd599',
|
2016-05-05 03:24:59 +02:00
|
|
|
'syntax-default-css' => '9923583c',
|
2016-06-30 05:27:11 +02:00
|
|
|
'syntax-highlighting-css' => '769d3498',
|
2014-05-05 19:54:34 +02:00
|
|
|
'tokens-css' => '3d0f239e',
|
2016-06-20 22:52:18 +02:00
|
|
|
'typeahead-browse-css' => '8904346a',
|
2015-05-20 04:38:34 +02:00
|
|
|
'unhandled-exception-css' => '4c96257a',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'requires' => array(
|
2016-01-16 23:33:03 +01:00
|
|
|
'013ffff9' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-typeahead-source',
|
|
|
|
),
|
2015-05-28 00:31:02 +02:00
|
|
|
'01774ab2' => array(
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-aphlict',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-router',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2016-02-02 15:26:42 +01:00
|
|
|
'019f36c4' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
Make "/" focus the search input again
Summary:
See D1902, T989, T11263, D15984, T4103 , D15976, https://secure.phabricator.com/w/changelog/2016.22/, T2527, T11231, T8286, T11264 for discussion!
When we get another copy of T989, I will rename it to "Build a complicated keybinding settings page like a cool video game" and leave it open forever.
Test Plan: Pressed "/" in Firefox, had my pristine browsing experience inexplicably hijacked by this horrible application.
Reviewers: avivey, chad
Reviewed By: avivey
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15984
2016-07-08 22:57:33 +02:00
|
|
|
'01fca1f0' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
),
|
Clean up some log spam caused by races in VersionedDraft
Summary:
Two minor issues that I caught in the log while fixing Phame permissions:
- 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.
- 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.
Test Plan:
Submitted some Phame comments.
- No more error log errors about VersionedDraft keys.
- Saw only one preview request when loading the page instead of two.
Here's the specific stack trace I caught:
```
[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]
[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)
[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]
[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]
[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]
[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]
[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)
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
[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]
```
Reviewers: chad
Reviewed By: chad
Differential Revision: https://secure.phabricator.com/D16494
2016-09-05 21:24:58 +02:00
|
|
|
'0300eae6' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phuix-form-control-view',
|
|
|
|
'phuix-icon-view',
|
|
|
|
'javelin-behavior-phabricator-gesture',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'05270951' => array(
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-magical-init',
|
|
|
|
),
|
2016-04-15 14:37:58 +02:00
|
|
|
'054a0f0b' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-tooltip',
|
|
|
|
),
|
2015-11-04 22:51:51 +01:00
|
|
|
'056da01b' => array(
|
|
|
|
'aphront-typeahead-control-css',
|
|
|
|
'phui-tag-view-css',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'065227cc' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2016-02-05 21:39:00 +01:00
|
|
|
'06c32383' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-typeahead-ondemand-source',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'phabricator-prefab',
|
|
|
|
'phuix-icon-view',
|
|
|
|
),
|
2016-08-01 22:54:39 +02:00
|
|
|
'08675c6d' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-magical-init',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2015-05-11 22:50:44 +02:00
|
|
|
'087e919c' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2016-07-01 01:55:28 +02:00
|
|
|
'0a0b10e9' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'0a3f3021' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-router',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'0f764c35' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
2014-02-27 20:06:55 +01:00
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'116cf19b' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-phtize',
|
|
|
|
'phabricator-textareautils',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-vector',
|
|
|
|
'phuix-autocomplete',
|
|
|
|
),
|
2016-01-23 23:24:09 +01:00
|
|
|
'12884df9' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-08-08 00:21:32 +02:00
|
|
|
'13c739ea' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-textareautils',
|
|
|
|
),
|
2014-12-30 11:50:26 +01:00
|
|
|
'1499a8cb' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-history',
|
|
|
|
),
|
2016-02-11 00:06:20 +01:00
|
|
|
'14a1faae' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-workboard-controller',
|
|
|
|
),
|
2016-06-21 02:49:38 +02:00
|
|
|
'1aa4c968' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'1ad0a787' => array(
|
2015-01-13 21:03:48 +01:00
|
|
|
'javelin-install',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-reactor',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-reactor-node-calmer',
|
2015-01-13 21:03:48 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'1ae869f2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-keyboard-shortcut-manager',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2016-02-03 17:26:30 +01:00
|
|
|
'1bd28176' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-uri',
|
|
|
|
),
|
2015-08-20 17:24:42 +02:00
|
|
|
'1d45c74d' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-history',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-scrollbar',
|
|
|
|
'phabricator-title',
|
|
|
|
'phabricator-shaped-request',
|
|
|
|
'conpherence-thread-manager',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'1def2711' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-06-20 20:49:41 +02:00
|
|
|
),
|
2016-06-21 02:29:56 +02:00
|
|
|
'1e911d0f' => array(
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-mask',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-routable',
|
|
|
|
),
|
2015-03-10 23:30:49 +01:00
|
|
|
'21ba5861' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'conpherence-thread-manager',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'2290aeef' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'2926fff2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'29274e2b' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'2b8de964' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2014-11-12 21:26:22 +01:00
|
|
|
'2c426492' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
),
|
2015-01-28 17:26:10 +01:00
|
|
|
'2caa8fb8' => array(
|
2015-01-26 18:34:57 +01:00
|
|
|
'javelin-install',
|
2015-01-28 17:26:10 +01:00
|
|
|
'javelin-event',
|
2015-01-26 18:34:57 +01:00
|
|
|
),
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'2ee659ce' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'320810c8' => array(
|
|
|
|
'javelin-install',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
'javelin-dom',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-vector',
|
Allow installs to customize project icons
Summary:
Ref T10010. Ref T5819. General alignment of the stars:
- There were some hacks in Conduit around stripping `fa-...` off icons when reading and writing that I wanted to get rid of.
- We probably have room for a subtitle in the new heavy nav, and using the icon name is a good starting point (and maybe good enough on its own?)
- The project list was real bad looking with redundant tag/names, now it is very slightly less bad looking with non-redundant types?
- Some installs will want to call Milestones something else, and this gets us a big part of the way there.
- This may slightly help to reinforce "tag" vs "policy" vs "group" stuff?
---
I'm letting installs have enough rope to shoot themselves in the foot (e.g., define 100 icons). It isn't the end of the world if they reuse icons, and is clearly their fault.
I think the cases where 100 icons will break down are:
- Icon selector dialog may get very unwieldy.
- Query UI will be pretty iffy/huge with 100 icons.
We could improve these fairly easily if an install comes up with a reasonable use case for having 100 icons.
---
The UI on the icon itself in the list views is a little iffy -- mostly, it's too saturated/bold.
I'd ideally like to try either:
- rendering a "shade" version (i.e. lighter, less-saturated color); or
- rendering a "shade" tag with just the icon in it.
However, there didn't seem to be a way to do the first one right now (`fa-example sh-blue` doesn't work) and the second one had weird margins/padding, so I left it like this for now. I figure we can clean it up once we build the thick nav, since that will probably also want an identical element.
(I don't want to render a full tag with the icon + name since I think that's confusing -- it looks like a project/object tag, but is not.)
Test Plan:
{F1049905}
{F1049906}
Reviewers: chad
Reviewed By: chad
Subscribers: 20after4, Luke081515.2
Maniphest Tasks: T5819, T10010
Differential Revision: https://secure.phabricator.com/D14918
2015-12-30 13:36:48 +01:00
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'327a00d1' => array(
|
2016-01-15 13:25:22 +01:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-workflow',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'3ab51e2c' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-magical-init',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2015-03-02 22:01:00 +01:00
|
|
|
'3cb0b2fc' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-uri',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2014-12-30 11:53:27 +01:00
|
|
|
'3f5d6dbf' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'phortune-credit-card-form',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'40a6a403' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-06-16 21:27:12 +02:00
|
|
|
),
|
2015-01-04 22:23:22 +01:00
|
|
|
42126667 => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
),
|
Don't mutate DOM by showing a tooltip on touch events
Summary:
This fix further addresses T10229. The problem and solution are the same:
- If the DOM is mutated during a touch, it never registers as a 'click' so the tapped button does not activate.
- This was partially addressed in D15136, which covered taps on code lines in a Differential view.
- Tapping on some buttons, like "Reply" or "Hide Comment" still caused the problem by showing a tooltip.
- There are probably similar buttons elsewhere, other than in Differential, exhibiting the same 'needs multiple taps to work' behaviour.
- The testing in the iOS simulator performed for D15136 did not reveal that the problem with "Hide comment" and such remained because the small device size used for testing triggered the `!= 'desktop'` path for tooltips.
To fix it:
- Don't show tooltips for touch events. You can't 'hover' with a finger (with today's tech) so that UI paradigm doesn't apply.
- Show the tooltips for regular mouse events, even if they are on the same device. Some devices have both touch and a mouse.
- No longer try to rely on a distinction between 'desktop' and 'mobile' devices. Mobile devices like the iPad Pro are essentially desktop like, and as mentioned above, a single device could be both touch and mouse enabled. It's not about the nature of the device, it's about the nature of the interaction.
Test Plan:
- Tapped "Hide Comment", "Reply" on an iPad Pro running iOS 9.2 and got single touch responses with no tooltips.
- Tried the same on an iPhone 6 running iOS 9.2.
- Hovered over the same on a regular desktop in Safari and saw tooltips. Clicked and saw regular reactions.
Reviewers: epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin
Differential Revision: https://secure.phabricator.com/D15310
2016-02-19 14:06:14 +01:00
|
|
|
'42fcb747' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'phabricator-tooltip',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'44959b73' => array(
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'453c5375' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
2014-07-13 18:18:50 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'469c0d9e' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-workflow',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
47830651 => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-view-renderer',
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'47c794d8' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-06-23 19:35:39 +02:00
|
|
|
),
|
2015-01-04 22:23:22 +01:00
|
|
|
48086888 => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-workflow',
|
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'484a6e22' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-drag-and-drop-file-upload',
|
|
|
|
'phabricator-textareautils',
|
|
|
|
),
|
2016-06-07 00:01:18 +02:00
|
|
|
'491416b3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2016-07-01 18:22:00 +02:00
|
|
|
'49ae8328' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
),
|
2016-08-28 04:00:35 +02:00
|
|
|
'49e20786' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'phabricator-title',
|
|
|
|
),
|
2016-07-08 17:30:30 +02:00
|
|
|
'4a021c10' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2016-07-15 23:02:24 +02:00
|
|
|
'4b3c4443' => array(
|
|
|
|
'phuix-icon-view',
|
|
|
|
),
|
2015-12-26 22:00:01 +01:00
|
|
|
'4b700e9e' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-shaped-request',
|
|
|
|
),
|
2016-05-22 15:50:12 +02:00
|
|
|
'4c193c96' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'4e3e79a6' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'4fbbc3e9' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-vector',
|
|
|
|
'differential-inline-comment-editor',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'4fdb476d' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
2014-07-01 20:04:05 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'503e17fd' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-typeahead-source',
|
|
|
|
'javelin-util',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'519705ea' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-02-27 20:06:55 +01:00
|
|
|
),
|
2016-04-15 21:06:53 +02:00
|
|
|
'522431f7' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-typeahead-static-source',
|
|
|
|
),
|
2015-05-07 21:47:49 +02:00
|
|
|
'5359e785' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-websocket',
|
|
|
|
'javelin-leader',
|
|
|
|
'javelin-json',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'54b612ba' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-color',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'54f314a0' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-typeahead-source',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'558829c2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2016-02-11 18:51:32 +01:00
|
|
|
'55baf5ed' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phabricator-drag-and-drop-file-upload',
|
|
|
|
'javelin-workboard-board',
|
|
|
|
),
|
2016-04-15 22:52:00 +02:00
|
|
|
'568931f3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'58dea2fa' => array(
|
2016-02-19 22:41:03 +01:00
|
|
|
'javelin-install',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
2016-02-19 22:41:03 +01:00
|
|
|
'javelin-dom',
|
2016-05-21 01:26:11 +02:00
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-file-upload',
|
2016-02-19 22:41:03 +01:00
|
|
|
),
|
2015-04-02 05:10:32 +02:00
|
|
|
'59a7976a' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-fx',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'59b251eb' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
Replace height buffer behavior while dragging on workboards with infinite column height
Summary:
Ref T4900. The root problem is that dragging stuff near the bottom of the board can cause jittery, jumpy behaviors.
Internal scrolling has changed the nature of this problem. Previously, the height of the board itself would jump around, but it's now fixed so the height of columns jumps around instead.
We could take the same approach and add a chunk to the bottom of each column when a drag starts, but this is really distracting visually since it's obvious to the user.
Instead, treat columns as infinitely tall (so dragging beneath them still counts as dragging to the bottom position).
Test Plan:
- View a board with a column taller than the screen (has a scrollbar).
- Drag a card to near the bottom position.
- Move the mouse down a little bit at a time, continuing toward the bottom of the page.
- Before patch: at some point, UI flips out and starts rapidly adding, scrolling, and removing the ghost.
- After patch: sensible behavior, ghost is in bottom position for all cursor locations.
Also works for dragging to the top.
(This leaves us with a little less dead space for cancelling drags, but you've still got the left menu, anything offscreen, and the escape key, which seems fine.)
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T4900
Differential Revision: https://secure.phabricator.com/D15227
2016-02-09 14:40:56 +01:00
|
|
|
'5a13c79f' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-magical-init',
|
|
|
|
),
|
2014-08-02 23:44:35 +02:00
|
|
|
'5c54cbf3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-04-17 16:55:17 +02:00
|
|
|
'5e9f347c' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'multirow-row-manager',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-prefab',
|
|
|
|
'javelin-json',
|
|
|
|
),
|
2015-01-04 22:23:22 +01:00
|
|
|
60479091 => array(
|
|
|
|
'phabricator-busy',
|
|
|
|
'javelin-behavior',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'60821bc7' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'61cbc29a' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-magical-init',
|
|
|
|
'javelin-util',
|
2014-06-24 00:19:34 +02:00
|
|
|
),
|
2015-01-20 01:55:08 +01:00
|
|
|
'62dfea03' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2016-02-02 15:26:42 +01:00
|
|
|
'6323f942' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2015-04-17 16:55:17 +02:00
|
|
|
'635de1ec' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-09-11 04:28:49 +02:00
|
|
|
'64a5550f' => array(
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-workflow',
|
|
|
|
),
|
2016-02-06 23:05:15 +01:00
|
|
|
'680ea2c8' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2015-12-24 20:59:38 +01:00
|
|
|
'6882e80a' => array(
|
2015-12-24 20:20:18 +01:00
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'69adf288' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
2014-05-14 17:53:11 +02:00
|
|
|
),
|
Don't mutate DOM on touch-originated cursor events in Differential
Summary:
Fixes T10229. Broadly:
- When the user hovers over a line number or inline comment, we update the yellow reticle to highlight the relevant lines. Specifically, this is in response to a `mouseover` event.
- On touch devices, touches fire `mouseover` and if you mutate the DOM inside the event, the device aborts the touch.
To remedy this:
- Distingiush between mouse-originated and touch-originated cursor events.
- We do this, roughly, by setting a flag when we see "touchstart", and clearing it when we see the second copy of any unique cursor event.
- This method is complex, but should be robust to any implementation differences between devices (for example, it will work no matter which order the events are fired in).
- This method should also produce the correct results on weird devices that have both mouse-devices and touch-devices available for cursor input.
- When we see a touch-originated `mouseover` or `mouseout`, don't mutate the DOM.
- Put an extra DOM mutation into the `click` event to improve highlighting behavior on touch devices.
Test Plan:
- In iOS Simulator (4s, iOS 9.2), clicked various inline actions ("Reply", "Hide", "Done", "Cancel", line numbers, etc). Got responses after a single touch.
- Verified hover + click behavior on a desktop.
- Logged and examined a bunch of events as a general sanity check.
Reviewers: chad
Reviewed By: chad
Subscribers: aljungberg
Maniphest Tasks: T10229
Differential Revision: https://secure.phabricator.com/D15136
2016-01-29 14:21:41 +01:00
|
|
|
'6ad39b6f' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-event',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-magical-init',
|
|
|
|
),
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'6b8ef10b' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
Time control typeaheads.
Summary: Ref T8031, Time control typeaheads
Test Plan: Edit an event, type '3', typeahead should suggest, '3:00 AM', '3:30 AM', '3:00 PM', '3:30 PM'.
Reviewers: chad, epriestley, #blessed_reviewers
Reviewed By: epriestley, #blessed_reviewers
Subscribers: Korvin, epriestley
Maniphest Tasks: T8031
Differential Revision: https://secure.phabricator.com/D12953
2015-05-20 18:51:26 +02:00
|
|
|
'6c0e62fa' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-typeahead-source',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'6c2b09a2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'6d3e1947' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-diffusion-locate-file-source',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-uri',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2016-07-08 17:17:51 +02:00
|
|
|
'6d86ce8b' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'phuix-icon-view',
|
|
|
|
'phabricator-prefab',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'70baed2f' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2015-06-30 18:37:12 +02:00
|
|
|
71237763 => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2015-01-04 22:23:22 +01:00
|
|
|
'7319e029' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-01-29 19:20:35 +01:00
|
|
|
'73d09eef' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2016-06-30 05:27:11 +02:00
|
|
|
'769d3498' => array(
|
|
|
|
'syntax-default-css',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'76b9fc3e' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'76f4ebed' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-reactor',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-06-11 19:24:39 +02:00
|
|
|
'782ab6e7' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-prefab',
|
|
|
|
'multirow-row-manager',
|
|
|
|
'javelin-json',
|
|
|
|
),
|
2015-03-10 23:32:15 +01:00
|
|
|
'7927a7d3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-quicksand',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7a68dda3' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'owners-path-editor',
|
|
|
|
'javelin-behavior',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7b98d7c5' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7cbe244b' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-router',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7e41274a' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7ebaeed3' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'herald-rule-editor',
|
|
|
|
'javelin-behavior',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'7ee2b591' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-history',
|
Fix some issues where Conpherence would make to many draft requests
Summary:
A few minor fixes:
- When we build a tag with `"meta" => null`, strip the attribute like we do for all other attributes. Previously, we would actually set the metadata to `null`. This happened with the Conpherence form.
- Just respond to the draft request with an empty (but valid) response, instead of building a dialog.
- `PhabricatorShapedRequest` is confusingly named and I should have caught this in review, but the basic shape of it is:
- You make one object.
- You call `trigger()` when stuff changes (e.g., a keystroke).
- It manages making a small number of requests (e.g., one request after the user stops typing for a moment).
- The way it was being used previously would incorrectly send a request for every keystroke.
I think I'm going to simplify `ShapedRequest` and merge it into some larger queue for T430.
Test Plan: Typed some text, no longer saw a flurry of requests. Reloaded page, still saw draft text.
Reviewers: btrahan, chad
Reviewed By: chad
CC: aran, chad
Differential Revision: https://secure.phabricator.com/D8380
2014-03-01 20:23:08 +01:00
|
|
|
),
|
2015-09-02 00:35:25 +02:00
|
|
|
'805b806a' => array(
|
|
|
|
'javelin-magical-init',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-stratcom',
|
|
|
|
),
|
2016-06-21 02:49:38 +02:00
|
|
|
'82e270da' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-stratcom',
|
|
|
|
),
|
2015-01-25 17:46:22 +01:00
|
|
|
'834a1173' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-scrollbar',
|
|
|
|
),
|
2016-01-19 17:43:31 +01:00
|
|
|
'8499b6ab' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
),
|
2015-07-02 23:39:43 +02:00
|
|
|
'85ee8ce6' => array(
|
|
|
|
'aphront-dialog-view-css',
|
|
|
|
),
|
2015-03-05 23:03:15 +01:00
|
|
|
'8694b1df' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'phabricator-tooltip',
|
|
|
|
'changeset-view-manager',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'88236f00' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
'javelin-stratcom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'886fd850' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-reactor-dom',
|
|
|
|
'javelin-view-html',
|
|
|
|
'javelin-view-interpreter',
|
|
|
|
'javelin-view-renderer',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2015-01-23 22:29:15 +01:00
|
|
|
'887ad43f' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'8a41885b' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
),
|
2015-11-22 22:03:58 +01:00
|
|
|
'8bdb2835' => array(
|
|
|
|
'phui-fontkit-css',
|
|
|
|
),
|
2014-12-30 11:54:21 +01:00
|
|
|
'8ce821c5' => array(
|
|
|
|
'phabricator-notification',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-behavior',
|
|
|
|
),
|
2015-04-23 16:03:03 +02:00
|
|
|
'8cf6d262' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2015-12-17 22:27:36 +01:00
|
|
|
'8d3bc1b2' => array(
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-04-13 18:20:15 +02:00
|
|
|
'8ff5e24c' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-10-21 20:28:26 +02:00
|
|
|
'901935ef' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
),
|
2016-02-13 20:55:14 +01:00
|
|
|
92197373 => array(
|
|
|
|
'phui-workcard-view-css',
|
|
|
|
),
|
2016-04-13 18:20:15 +02:00
|
|
|
'92b9ec77' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-04-17 16:55:17 +02:00
|
|
|
'93d0c9e3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'9414ff18' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-resource',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-03-10 23:30:49 +01:00
|
|
|
'949c0fe5' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'94b750d2' => array(
|
2015-01-04 22:23:22 +01:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-resource',
|
|
|
|
'javelin-routable',
|
|
|
|
),
|
2016-07-08 15:08:51 +02:00
|
|
|
'94c65b72' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-busy',
|
|
|
|
),
|
2014-12-30 11:56:42 +01:00
|
|
|
'988040b4' => array(
|
|
|
|
'javelin-install',
|
2014-12-30 11:53:27 +01:00
|
|
|
'javelin-dom',
|
2014-12-30 11:56:42 +01:00
|
|
|
'javelin-reactor-dom',
|
2014-12-30 11:53:27 +01:00
|
|
|
),
|
2016-01-13 15:19:31 +01:00
|
|
|
'9a6b9324' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
'phuix-action-list-view',
|
|
|
|
'phuix-action-view',
|
|
|
|
'phabricator-phtize',
|
|
|
|
'changeset-view-manager',
|
|
|
|
),
|
2016-07-09 22:53:57 +02:00
|
|
|
'9ef7d354' => array(
|
|
|
|
'phui-inline-comment-view-css',
|
|
|
|
),
|
2015-01-28 17:26:10 +01:00
|
|
|
'9f36c42d' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2015-01-25 17:46:22 +01:00
|
|
|
'a0b57eb8' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'a155550f' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2016-01-13 15:19:31 +01:00
|
|
|
'a2828756' => array(
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-router',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-vector',
|
|
|
|
),
|
2015-04-24 01:37:56 +02:00
|
|
|
'a464fe03' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2016-06-21 02:49:38 +02:00
|
|
|
'a6f7a73b' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'a80d0378' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2015-06-26 00:59:52 +02:00
|
|
|
'a8458711' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-notification',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
'phuix-action-list-view',
|
|
|
|
'phuix-action-view',
|
|
|
|
'conpherence-thread-manager',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'a8d8459d' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'a8da01f0' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-keyboard-shortcut',
|
2014-05-29 23:20:16 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'a9f88de2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-fx',
|
|
|
|
'javelin-util',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'aa1733d0' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'multirow-row-manager',
|
|
|
|
'javelin-install',
|
|
|
|
'path-typeahead',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-prefab',
|
2014-06-23 19:35:39 +02:00
|
|
|
),
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'ab2f381b' => array(
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-router',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-busy',
|
|
|
|
),
|
2016-05-21 01:26:11 +02:00
|
|
|
'b003d4fb' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
),
|
2015-05-20 22:54:22 +02:00
|
|
|
'b064af76' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-shaped-request',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b1f0ccee' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-reactor-dom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-05-18 21:18:10 +02:00
|
|
|
'b23b49e6' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
|
|
|
'phabricator-shaped-request',
|
|
|
|
),
|
2016-06-09 22:13:11 +02:00
|
|
|
'b25d5444' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-typeahead-normalizer',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b2b4fbaf' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-request',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b3a4b884' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'phabricator-prefab',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b3e7d692' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
Provide a global router for Ajax requests
Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:
- We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
- Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
- We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.
To fix this:
- Queue all (or, at least, most) requests into a new queue in JX.Router.
- JX.Router handles prioritizing the requests. Principally:
- You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
- You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
- Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
- Don't show any status for draft requests.
- For content requests, show a subtle hipster-style top loading bar.
Test Plan:
- Viewed a diff with 93 changes, and clicked award token.
- Prior to this patch, the action took many many seconds to resolve.
- After this patch, it resolves quickly.
- Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
- Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
- Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
- Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
- Prior to this patch, it took a long time to show up.
- After this patch, it loads directly.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T430, T4834
Differential Revision: https://secure.phabricator.com/D8979
2014-05-05 19:57:42 +02:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b42eddc7' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-typeahead-preloaded-source',
|
|
|
|
'javelin-util',
|
2014-06-23 19:35:39 +02:00
|
|
|
),
|
2015-11-17 18:33:06 +01:00
|
|
|
'b59e1e96' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'b5c256b8' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
2014-05-05 19:57:23 +02:00
|
|
|
),
|
2014-11-17 23:06:05 +01:00
|
|
|
'b5d57730' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2015-05-25 14:34:23 +02:00
|
|
|
'b6993408' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-json',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2016-04-10 13:26:53 +02:00
|
|
|
'ba158207' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2016-03-11 03:54:17 +01:00
|
|
|
'bae58312' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-workboard-card',
|
|
|
|
),
|
2016-05-21 21:08:47 +02:00
|
|
|
'bb1dd507' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-02-03 17:26:30 +01:00
|
|
|
'bcaccd64' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'phui-hovercard',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'bdaf4d04' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-request',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2016-06-09 17:34:00 +02:00
|
|
|
'bee502c8' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-quicksand',
|
|
|
|
'phabricator-phtize',
|
|
|
|
'phabricator-drag-and-drop-file-upload',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2016-05-11 19:17:33 +02:00
|
|
|
'bf5374ef' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-12-17 22:27:36 +01:00
|
|
|
'bff6884b' => array(
|
2015-12-04 23:37:27 +01:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2016-02-11 00:06:20 +01:00
|
|
|
'c587b80f' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2015-11-22 22:03:58 +01:00
|
|
|
'c7ccd872' => array(
|
|
|
|
'phui-fontkit-css',
|
|
|
|
),
|
2015-05-06 21:59:09 +02:00
|
|
|
'c8e57404' => array(
|
2015-04-23 16:03:03 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
2015-04-24 23:20:48 +02:00
|
|
|
'javelin-mask',
|
|
|
|
'phabricator-drag-and-drop-file-upload',
|
2015-04-23 16:03:03 +02:00
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'c90a04fc' => array(
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-dynval',
|
|
|
|
'javelin-reactor',
|
|
|
|
'javelin-reactornode',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI
Summary:
Ref T10004. After a user logs in, we send them to the "next" URI cookie if there is one, but currently don't always do a very good job of selecting a "next" URI, especially if they tried to do something with a dialog before being asked to log in.
In particular, if a logged-out user clicks an action like "Edit Blocking Tasks" on a Maniphest task, the default behavior is to send them to the standalone page for that dialog after they log in. This can be pretty confusing.
See T2691 and D6416 for earlier efforts here. At that time, we added a mechanism to //manually// override the default behavior, and fixed the most common links. This worked, but I'd like to fix the //default// beahvior so we don't need to remember to `setObjectURI()` correctly all over the place.
ApplicationEditor has also introduced new cases which are more difficult to get right. While we could get them right by using the override and being careful about things, this also motivates fixing the default behavior.
Finally, we have better tools for fixing the default behavior now than we did in 2013.
Instead of using manual overrides, have JS include an "X-Phabricator-Via" header in Ajax requests. This is basically like a referrer header, and will contain the page the user's browser is on.
In essentially every case, this should be a very good place (and often the best place) to send them after login. For all pages currently using `setObjectURI()`, it should produce the same behavior by default.
I'll remove the `setObjectURI()` mechanism in the next diff.
Test Plan: Clicked various workflow actions while logged out, saw "next" get set to a reasonable value, was redirected to a sensible, non-confusing page after login (the page with whatever button I clicked on it).
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10004
Differential Revision: https://secure.phabricator.com/D14804
2015-12-17 15:10:04 +01:00
|
|
|
'c989ade3' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'ca3f91eb' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'phabricator-phtize',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-06-22 22:11:37 +02:00
|
|
|
'ccf1cbf8' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-notification-css',
|
|
|
|
),
|
2015-05-04 22:52:22 +02:00
|
|
|
'cf86d16a' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phabricator-drag-and-drop-file-upload',
|
|
|
|
),
|
2016-06-09 22:13:11 +02:00
|
|
|
'cfd23f37' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-tokenizer',
|
|
|
|
'javelin-typeahead-preloaded-source',
|
|
|
|
'javelin-typeahead-ondemand-source',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2016-02-05 19:30:20 +01:00
|
|
|
'd0c516d5' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
'phuix-action-list-view',
|
|
|
|
'phuix-action-view',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phuix-icon-view',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'd19198c8' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dynval',
|
|
|
|
'javelin-reactor-dom',
|
2014-01-01 16:46:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'd254d646' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-util',
|
2014-01-01 16:46:25 +01:00
|
|
|
),
|
2016-05-21 21:08:47 +02:00
|
|
|
'd3506890' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-scrollbar',
|
|
|
|
'javelin-quicksand',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
'conpherence-thread-manager',
|
|
|
|
),
|
2015-03-28 15:38:14 +01:00
|
|
|
'd4505101' => array(
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'd4a14807' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-view',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'd4eecc63' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2016-03-22 17:08:26 +01:00
|
|
|
'd6a7e717' => array(
|
|
|
|
'multirow-row-manager',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-json',
|
|
|
|
'phabricator-prefab',
|
|
|
|
),
|
2015-12-08 15:14:47 +01:00
|
|
|
'd7a74243' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'd835b03a' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-shaped-request',
|
2015-01-28 17:26:10 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'de2e896f' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-typeahead-ondemand-source',
|
|
|
|
'javelin-dom',
|
Introduce CAN_EDIT for ExternalAccount, and make CAN_VIEW more liberal
Summary:
Fixes T3732. Ref T1205. Ref T3116.
External accounts (like emails used as identities, Facebook accounts, LDAP accounts, etc.) are stored in "ExternalAccount" objects.
Currently, we have a very restrictive `CAN_VIEW` policy for ExternalAccounts, to add an extra layer of protection to make sure users can't use them in unintended ways. For example, it would be bad if a user could link their Phabricator account to a Facebook account without proper authentication. All of the controllers which do sensitive things have checks anyway, but a restrictive CAN_VIEW provided an extra layer of protection. Se T3116 for some discussion.
However, this means that when grey/external users take actions (via email, or via applications like Legalpad) other users can't load the account handles and can't see anything about the actor (they just see "Restricted External Account" or similar).
Balancing these concerns is mostly about not making a huge mess while doing it. This seems like a reasonable approach:
- Add `CAN_EDIT` on these objects.
- Make that very restricted, but open up `CAN_VIEW`.
- Require `CAN_EDIT` any time we're going to do something authentication/identity related.
This is slightly easier to get wrong (forget CAN_EDIT) than other approaches, but pretty simple, and we always have extra checks in place anyway -- this is just a safety net.
I'm not quite sure how we should identify external accounts, so for now we're just rendering "Email User" or similar -- clearly not a bug, but not identifying. We can figure out what to render in the long term elsewhere.
Test Plan:
- Viewed external accounts.
- Linked an external account.
- Refreshed an external account.
- Edited profile picture.
- Viewed sessions panel.
- Published a bunch of stuff to Asana/JIRA.
- Legalpad signature page now shows external accounts.
{F171595}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T3732, T1205, T3116
Differential Revision: https://secure.phabricator.com/D9767
2014-07-10 19:18:10 +02:00
|
|
|
),
|
2015-04-02 22:41:48 +02:00
|
|
|
'df5e11d2' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-06-30 20:37:38 +02:00
|
|
|
'e0ec7f2f' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-util',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'e10f8e18' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-prefab',
|
2014-02-27 20:06:55 +01:00
|
|
|
),
|
2016-04-06 14:59:09 +02:00
|
|
|
'e15869a8' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-08-09 17:49:01 +02:00
|
|
|
'e1d25dfb' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'e1ff79b1' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
Namespace Aphlict clients by request path, plus other fixes
Summary:
Fixes T7130. Fixes T7041. Fixes T7012.
Major change here is partitioning clients. In the Phacility cluster, being able to get a huge pile of instances on a single server -- without needing to run a process per instance -- is desirable.
To accomplish this, just bucket clients by the path they connect with. This will let us set client URIs to `/instancename/` and then route connections to a small set of servers. This degrades cleanly in the common case and has no effect on installs which don't do instancing.
Also fix two unrelated issues:
- Fix the timeouts, which were incorrectly initializing in `open()` (which is called during reconnect, causing them to reset every time). Instead, initialize in the constructor. Cap timeout at 5 minutes.
- Probably fix subscriptions, which were using a property with an object definition. Since this is by-ref, all concrete instances of the object share the same property, so all users would be subscribed to everything. Probably.
Test Plan:
- Hit notification status page, saw version bump and instance/path name.
- Saw instance/path name in client and server logs.
- Stopped server, saw reconnects after 2, 4, 16, ... seconds.
- Sent test notification; received test notification.
- Didn't explicitly test the subscription thing but it should be obvious by looking at `/notification/status/` shortly after a push.
Reviewers: joshuaspence, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T7041, T7012, T7130
Differential Revision: https://secure.phabricator.com/D11769
2015-02-16 20:31:15 +01:00
|
|
|
'e292eaf4' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-01-13 18:40:27 +01:00
|
|
|
'e2e0a072' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'e379b58e' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2016-01-28 22:29:27 +01:00
|
|
|
'e4232876' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'phui-chart-css',
|
|
|
|
),
|
2014-12-30 11:53:27 +01:00
|
|
|
'e4cc26b3' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-08-27 13:17:33 +02:00
|
|
|
'e5339c43' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-uri',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'e5822781' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-magical-init',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-04-17 16:55:17 +02:00
|
|
|
'e6e25838' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2016-08-28 04:00:35 +02:00
|
|
|
'e862571a' => array(
|
|
|
|
'phui-theme-css',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'e9581f08' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-dom',
|
|
|
|
'phabricator-draggable-list',
|
2014-06-23 19:27:47 +02:00
|
|
|
),
|
2015-03-18 01:01:33 +01:00
|
|
|
'ea681761' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-aphlict',
|
|
|
|
'phabricator-phtize',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2015-06-22 22:11:37 +02:00
|
|
|
'edd1ba66' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-uri',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
2015-06-23 22:43:47 +02:00
|
|
|
'edf8a145' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-uri',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'efe49472' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-10-07 16:32:27 +02:00
|
|
|
'f01586dc' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-json',
|
|
|
|
),
|
2015-04-28 23:51:49 +02:00
|
|
|
'f411b6ae' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'f6555212' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-reactornode',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-reactor',
|
2014-02-27 20:06:55 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'f7fc67ec' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-typeahead-ondemand-source',
|
|
|
|
'javelin-util',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'f829edb3' => array(
|
|
|
|
'javelin-view',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
),
|
2014-12-23 18:28:57 +01:00
|
|
|
'f8ba29d7' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-mask',
|
|
|
|
'javelin-util',
|
|
|
|
'phabricator-busy',
|
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'fa0f4fc2' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-magical-init',
|
2014-03-25 21:49:33 +01:00
|
|
|
),
|
2015-06-22 22:11:37 +02:00
|
|
|
'fb20ac8d' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-aphlict',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-router',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-leader',
|
|
|
|
'javelin-sound',
|
|
|
|
'phabricator-notification',
|
|
|
|
),
|
Quicksand and Pholio - make mock edit work
Summary: Fixes T8036. In addition to making the mock edit work, this tightens quicksand code such that the correct page id is returned even if start() has not been called yet. It also tightens mock view where some functions should respect statics.enabled a bit more.
Test Plan:
clicked edit mock, mock crumb, edit mock, mock crum, edit mock, made edits and they worked! clicked edit mock, mock crumb, edit mock, mock crumb, edit mock, profile icon, hit browser back to edit mock, made edits and they worked!
also observed mock view page not occasionally wigging out from image_onload race not having statics.enabled respect during the above
Reviewers: epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8036
Differential Revision: https://secure.phabricator.com/D12739
2015-05-07 19:42:07 +02:00
|
|
|
'fbe497e7' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-magical-init',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-history',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-mask',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
),
|
2014-12-30 11:53:27 +01:00
|
|
|
'fc91ab6c' => array(
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-dom',
|
|
|
|
'phortune-credit-card-form',
|
|
|
|
),
|
2015-01-14 01:10:57 +01:00
|
|
|
'fe287620' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
2015-01-14 01:10:57 +01:00
|
|
|
'javelin-view-visitor',
|
|
|
|
'javelin-util',
|
2014-07-13 18:18:50 +02:00
|
|
|
),
|
2016-08-14 17:58:17 +02:00
|
|
|
'fe7cb52a' => array(
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-util',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-workflow',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
'javelin-workboard-column',
|
|
|
|
),
|
2016-04-27 01:27:31 +02:00
|
|
|
'fea0eb47' => array(
|
|
|
|
'javelin-install',
|
|
|
|
),
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'packages' => array(
|
|
|
|
'core.pkg.css' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-core-css',
|
|
|
|
'phabricator-zindex-css',
|
|
|
|
'phui-button-css',
|
2016-09-03 22:37:48 +02:00
|
|
|
'phui-theme-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-standard-page-view',
|
|
|
|
'aphront-dialog-view-css',
|
|
|
|
'phui-form-view-css',
|
|
|
|
'aphront-panel-view-css',
|
|
|
|
'aphront-table-view-css',
|
|
|
|
'aphront-tokenizer-control-css',
|
|
|
|
'aphront-typeahead-control-css',
|
|
|
|
'aphront-list-filter-view-css',
|
|
|
|
'phabricator-remarkup-css',
|
|
|
|
'syntax-highlighting-css',
|
2016-05-05 03:24:59 +02:00
|
|
|
'syntax-default-css',
|
2015-06-02 23:34:04 +02:00
|
|
|
'phui-pager-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'aphront-tooltip-css',
|
|
|
|
'phabricator-flag-css',
|
2015-03-01 23:45:56 +01:00
|
|
|
'phui-info-view-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-main-menu-view',
|
|
|
|
'phabricator-notification-css',
|
|
|
|
'phabricator-notification-menu-css',
|
|
|
|
'lightbox-attachment-css',
|
|
|
|
'phui-header-view-css',
|
|
|
|
'phabricator-filetree-view-css',
|
|
|
|
'phabricator-nav-view-css',
|
2016-08-01 21:06:35 +02:00
|
|
|
'phui-basic-nav-view-css',
|
2015-01-23 22:30:00 +01:00
|
|
|
'phui-crumbs-view-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phui-object-item-list-view-css',
|
|
|
|
'global-drag-and-drop-css',
|
|
|
|
'phui-spacing-css',
|
|
|
|
'phui-form-css',
|
|
|
|
'phui-icon-view-css',
|
2016-01-14 01:07:04 +01:00
|
|
|
'phui-profile-menu-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-application-launch-view-css',
|
|
|
|
'phabricator-action-list-view-css',
|
|
|
|
'phui-property-list-view-css',
|
|
|
|
'phui-tag-view-css',
|
|
|
|
'phui-list-view-css',
|
|
|
|
'font-fontawesome',
|
2016-09-03 22:37:48 +02:00
|
|
|
'font-lato',
|
|
|
|
'font-aleo',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phui-font-icon-base-css',
|
2016-09-03 22:37:48 +02:00
|
|
|
'phui-fontkit-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phui-box-css',
|
|
|
|
'phui-object-box-css',
|
|
|
|
'phui-timeline-view-css',
|
2016-09-03 22:37:48 +02:00
|
|
|
'phui-two-column-view-css',
|
|
|
|
'phui-curtain-view-css',
|
|
|
|
'sprite-login-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'sprite-tokens-css',
|
|
|
|
'tokens-css',
|
2016-09-03 22:37:48 +02:00
|
|
|
'auth-css',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phui-status-list-view-css',
|
Rewrite Aphlict to use Websockets
Summary:
Fixes T6559. No more flash, use Websockets. This is less aggressive than the earlier version, and retains more server logic.
- Support "wss".
- Make the client work.
- Remove "notification.user" entirely.
- Seems ok?
Test Plan:
In Safari, Firefox and Chrome, saw the browsers connect. Made a bunch of comments/updates and saw notifications.
Notable holes in the test plan:
- Haven't tested "wss" yet. I'll do this on secure.
- Notifications are //too fast// now, locally. I get them after I hit submit but before the page reloads.
- There are probably some other rough edges, this is a fairly big patch.
Reviewers: joshuaspence, btrahan
Reviewed By: joshuaspence, btrahan
Subscribers: fabe, btrahan, epriestley
Maniphest Tasks: T6713, T6559
Differential Revision: https://secure.phabricator.com/D11143
2015-01-08 19:03:00 +01:00
|
|
|
'phui-feed-story-css',
|
|
|
|
'phabricator-feed-css',
|
|
|
|
'phabricator-dashboard-css',
|
|
|
|
'aphront-multi-column-view-css',
|
2015-05-03 16:51:00 +02:00
|
|
|
'conpherence-durable-column-view',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'core.pkg.js' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-util',
|
|
|
|
'javelin-install',
|
|
|
|
'javelin-event',
|
|
|
|
'javelin-stratcom',
|
|
|
|
'javelin-behavior',
|
|
|
|
'javelin-resource',
|
|
|
|
'javelin-request',
|
|
|
|
'javelin-vector',
|
|
|
|
'javelin-dom',
|
|
|
|
'javelin-json',
|
|
|
|
'javelin-uri',
|
|
|
|
'javelin-workflow',
|
|
|
|
'javelin-mask',
|
|
|
|
'javelin-typeahead',
|
|
|
|
'javelin-typeahead-normalizer',
|
|
|
|
'javelin-typeahead-source',
|
|
|
|
'javelin-typeahead-preloaded-source',
|
|
|
|
'javelin-typeahead-ondemand-source',
|
|
|
|
'javelin-tokenizer',
|
|
|
|
'javelin-history',
|
|
|
|
'javelin-router',
|
|
|
|
'javelin-routable',
|
|
|
|
'javelin-behavior-aphront-basic-tokenizer',
|
|
|
|
'javelin-behavior-workflow',
|
|
|
|
'javelin-behavior-aphront-form-disable-on-submit',
|
|
|
|
'phabricator-keyboard-shortcut-manager',
|
|
|
|
'phabricator-keyboard-shortcut',
|
|
|
|
'javelin-behavior-phabricator-keyboard-shortcuts',
|
|
|
|
'javelin-behavior-refresh-csrf',
|
|
|
|
'javelin-behavior-phabricator-watch-anchor',
|
|
|
|
'javelin-behavior-phabricator-autofocus',
|
|
|
|
'phuix-dropdown-menu',
|
|
|
|
'phuix-action-list-view',
|
|
|
|
'phuix-action-view',
|
2016-09-03 22:37:48 +02:00
|
|
|
'phuix-icon-view',
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-phtize',
|
|
|
|
'javelin-behavior-phabricator-oncopy',
|
|
|
|
'phabricator-tooltip',
|
|
|
|
'javelin-behavior-phabricator-tooltips',
|
|
|
|
'phabricator-prefab',
|
|
|
|
'javelin-behavior-device',
|
|
|
|
'javelin-behavior-toggle-class',
|
|
|
|
'javelin-behavior-lightbox-attachments',
|
|
|
|
'phabricator-busy',
|
|
|
|
'javelin-aphlict',
|
|
|
|
'phabricator-notification',
|
|
|
|
'javelin-behavior-aphlict-listen',
|
|
|
|
'javelin-behavior-phabricator-search-typeahead',
|
|
|
|
'javelin-behavior-aphlict-dropdown',
|
|
|
|
'javelin-behavior-history-install',
|
|
|
|
'javelin-behavior-phabricator-gesture',
|
|
|
|
'javelin-behavior-phabricator-active-nav',
|
|
|
|
'javelin-behavior-phabricator-nav',
|
|
|
|
'javelin-behavior-phabricator-remarkup-assist',
|
|
|
|
'phabricator-textareautils',
|
|
|
|
'phabricator-file-upload',
|
|
|
|
'javelin-behavior-global-drag-and-drop',
|
|
|
|
'javelin-behavior-phabricator-reveal-content',
|
2016-02-03 17:26:30 +01:00
|
|
|
'phui-hovercard',
|
|
|
|
'javelin-behavior-phui-hovercards',
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-color',
|
|
|
|
'javelin-fx',
|
|
|
|
'phabricator-draggable-list',
|
|
|
|
'javelin-behavior-phabricator-transaction-list',
|
2014-12-04 23:55:18 +01:00
|
|
|
'javelin-behavior-phabricator-show-older-transactions',
|
2015-05-19 21:14:44 +02:00
|
|
|
'javelin-behavior-phui-dropdown-menu',
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior-doorkeeper-tag',
|
Rewrite Aphlict to use Websockets
Summary:
Fixes T6559. No more flash, use Websockets. This is less aggressive than the earlier version, and retains more server logic.
- Support "wss".
- Make the client work.
- Remove "notification.user" entirely.
- Seems ok?
Test Plan:
In Safari, Firefox and Chrome, saw the browsers connect. Made a bunch of comments/updates and saw notifications.
Notable holes in the test plan:
- Haven't tested "wss" yet. I'll do this on secure.
- Notifications are //too fast// now, locally. I get them after I hit submit but before the page reloads.
- There are probably some other rough edges, this is a fairly big patch.
Reviewers: joshuaspence, btrahan
Reviewed By: joshuaspence, btrahan
Subscribers: fabe, btrahan, epriestley
Maniphest Tasks: T6713, T6559
Differential Revision: https://secure.phabricator.com/D11143
2015-01-08 19:03:00 +01:00
|
|
|
'phabricator-title',
|
|
|
|
'javelin-leader',
|
|
|
|
'javelin-websocket',
|
|
|
|
'javelin-behavior-dashboard-async-panel',
|
|
|
|
'javelin-behavior-dashboard-tab-panel',
|
2015-05-03 16:51:00 +02:00
|
|
|
'javelin-quicksand',
|
|
|
|
'javelin-behavior-quicksand-blacklist',
|
|
|
|
'javelin-behavior-high-security-warning',
|
2016-04-09 14:41:08 +02:00
|
|
|
'javelin-behavior-read-only-warning',
|
2015-05-03 16:51:00 +02:00
|
|
|
'javelin-scrollbar',
|
|
|
|
'javelin-behavior-scrollbar',
|
|
|
|
'javelin-behavior-durable-column',
|
|
|
|
'conpherence-thread-manager',
|
2016-05-21 22:27:56 +02:00
|
|
|
'javelin-behavior-detect-timezone',
|
2016-06-07 00:01:18 +02:00
|
|
|
'javelin-behavior-setup-check-https',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'darkconsole.pkg.js' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior-dark-console',
|
|
|
|
'javelin-behavior-error-log',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'differential.pkg.css' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'differential-core-view-css',
|
|
|
|
'differential-changeset-view-css',
|
|
|
|
'differential-revision-history-css',
|
|
|
|
'differential-revision-list-css',
|
|
|
|
'differential-table-of-contents-css',
|
|
|
|
'differential-revision-comment-css',
|
|
|
|
'differential-revision-add-comment-css',
|
|
|
|
'phabricator-object-selector-css',
|
|
|
|
'phabricator-content-source-view-css',
|
|
|
|
'inline-comment-summary-css',
|
2015-05-03 16:51:00 +02:00
|
|
|
'phui-inline-comment-view-css',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'differential.pkg.js' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'phabricator-drag-and-drop-file-upload',
|
|
|
|
'phabricator-shaped-request',
|
|
|
|
'javelin-behavior-differential-feedback-preview',
|
|
|
|
'javelin-behavior-differential-edit-inline-comments',
|
|
|
|
'javelin-behavior-differential-populate',
|
|
|
|
'javelin-behavior-differential-diff-radios',
|
|
|
|
'javelin-behavior-differential-comment-jump',
|
|
|
|
'javelin-behavior-differential-add-reviewers-and-ccs',
|
|
|
|
'javelin-behavior-differential-keyboard-navigation',
|
|
|
|
'javelin-behavior-aphront-drag-and-drop-textarea',
|
|
|
|
'javelin-behavior-phabricator-object-selector',
|
|
|
|
'javelin-behavior-repository-crossreference',
|
|
|
|
'javelin-behavior-load-blame',
|
|
|
|
'differential-inline-comment-editor',
|
|
|
|
'javelin-behavior-differential-dropdown-menus',
|
|
|
|
'javelin-behavior-differential-toggle-files',
|
|
|
|
'javelin-behavior-differential-user-select',
|
|
|
|
'javelin-behavior-aphront-more',
|
2015-05-03 16:51:00 +02:00
|
|
|
'changeset-view-manager',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'diffusion.pkg.css' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'diffusion-icons-css',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'diffusion.pkg.js' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior-diffusion-pull-lastmodified',
|
|
|
|
'javelin-behavior-diffusion-commit-graph',
|
|
|
|
'javelin-behavior-audit-preview',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'maniphest.pkg.css' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'maniphest-task-summary-css',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
2014-07-14 17:33:33 +02:00
|
|
|
'maniphest.pkg.js' => array(
|
2014-07-23 19:34:08 +02:00
|
|
|
'javelin-behavior-maniphest-batch-selector',
|
|
|
|
'javelin-behavior-maniphest-subpriority-editor',
|
|
|
|
'javelin-behavior-maniphest-list-editor',
|
2014-01-01 03:04:25 +01:00
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|