1. 12 Jan, 2017 1 commit
    • epriestley's avatar
      Render revision and audit state icons in Maniphest · 45c740ac
      epriestley authored
      Summary:
      Fixes T7076. This could probably use some tweaking but should get the basics in place.
      
      This shows overall object state (e.g., "Needs Review"), not individual viewer state (e.g., "you need to review this"). After the bucketing changes it seems like we're mostly in a reasonable place on showing global state instead of viewer state. This makes the overall change much easier than it might otherwise have been.
      
      Test Plan: {F2351867}
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T7076
      
      Differential Revision: https://secure.phabricator.com/D17193
      45c740ac
  2. 09 Jan, 2017 1 commit
    • epriestley's avatar
      Remove extra container tag on HandleListViews rendering from ModularTransactions in text mode · b08c9b3f
      epriestley authored
      Summary:
      Fixes T12082. Ref T11114. When modular transaction render a handle list, they use HandleListView, which has a text mode.
      
      However, the HandleListView is a TagView, and currently TagViews always render a tag of some kind. Allow them to return `null` to decline to render any tag.
      
      Test Plan:
        - Added a pile of debugging stuff to `ApplicationTransactionEditor` to throw during mail generation.
        - Added a reviewer to a revision.
        - Used `bin/worker execute --id ...` to hit the mail generation repeatedly.
        - Before patch: mail generated with a <span>, even in text mode.
        - After patch: clean mail generation.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T12082, T11114
      
      Differential Revision: https://secure.phabricator.com/D17162
      b08c9b3f
  3. 01 Jan, 2017 1 commit
    • epriestley's avatar
      Make restricted objects in commit messages work more consistently with the web UI · 3d52f07e
      epriestley authored
      Summary:
      Fixes T11344. In the web UI, if a field like "Subscribers" on an object (like a task) contains values you don't have permission to see, you see tokens for them (like "Restricted Project") but not their names.
      
      Make commit messages work the same way: you see the PHID, and can remove it or leave it there, but can't see the underlying name.
      
      (We have to render an actual PHID rather than just "Restricted Thing" because we have to be able to figure out what edit the user is actually trying to make.)
      
      Test Plan: Interacted with a revision via the CLI that had project reviewers I couldn't see.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T11344
      
      Differential Revision: https://secure.phabricator.com/D17124
      3d52f07e
  4. 06 Dec, 2016 1 commit
    • epriestley's avatar
      Use PhabricatorCachedClassMapQuery when querying object PHID types · f8d6b618
      epriestley authored
      Summary:
      Ref T11954. When we query for Conduit tokens, we load the associated objects (users) by PHID.
      
      Currently, querying objects by PHID requires us to load every PHIDType class, when we can know which specific classes we actually need (e.g., just `UserPHIDType`, if only user PHIDs are present in the query).
      
      Use PhabricatorCachedClassMapQuery to reduce the number of classes we load on this pathway.
      
      Test Plan:
      - Used `ab -n100` to roughly measure a ~5% performance improvement?
      - This measurement feels a little flimsy but the XHProf profile is cleaner, at least.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T11954
      
      Differential Revision: https://secure.phabricator.com/D16997
      f8d6b618
  5. 18 Nov, 2016 1 commit
    • epriestley's avatar
      Strip restricted and incomplete handles from the "Mentions" tab on Maniphest tasks · 97cd7a98
      epriestley authored
      Summary:
      Ref T8345. See T8345#201048 for discussion.
      
      This rule (don't show mentions of or from restricted objects) is more consistent with how we render mentions in the timeline and I think generally a better behavior.
      
      Test Plan:
        - Mentioned a task on a public task and a private task.
        - Privileged user (foreground) sees both.
        - Public user (background) sees only the public mention.
      
      {F1929485}
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T8345
      
      Differential Revision: https://secure.phabricator.com/D16900
      97cd7a98
  6. 10 Nov, 2016 1 commit
  7. 19 Aug, 2016 1 commit
  8. 13 Jul, 2016 1 commit
    • epriestley's avatar
      Convert Calendar to Modular Transactions · 7b09f569
      epriestley authored
      Summary:
      Ref T9275. Swaps Calendar over to modular transactions. Theoretically, this has almost no effect on anything.
      
      Ref T10633. I didn't actually do anything here yet, but this gets us ready to put timestamps in email.
      
      Test Plan: Created and edited a bunch of events, nothing seemed catastrophically broken.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T9275, T10633
      
      Differential Revision: https://secure.phabricator.com/D16286
      7b09f569
  9. 06 Jul, 2016 1 commit
  10. 17 May, 2016 1 commit
  11. 14 May, 2016 1 commit
    • epriestley's avatar
      Allow monogrammed objects to be parsed from the `arc` command line in... · 3ea47d96
      epriestley authored
      Allow monogrammed objects to be parsed from the `arc` command line in "Reviewers" and similar fields
      
      Summary:
      Ref T10939. This allows the CLI to parse reviewers and subscribers like this:
      
      ```Reviewers: epriestley, O123 Some Package Name```
      
      The rule goes:
      
        - If a reviewer or subscriber starts with a monogram (like `X111`), just look that up and ignore everything until the next comma.
        - Otherwise, split it on spaces and look up each part.
      
      This means that these are valid:
      
      ```
      alincoln htaft
      alincoln, htaft
      #a #b epriestley
      O123 Some Package, epriestley, #b
      ```
      
      I think the only real downside is that this:
      
      ```
      O123 Some Package epriestley
      ```
      
      ...ignores the "epriestley" part. However, I don't expect users to be typing package monograms manually -- they just need to be representable by `arc land` and `arc diff --edit` and such. Those flows will always add commas and make the parse unambiguous.
      
      Test Plan:
        - Added test coverage.
        - `amend --show`'d a revision with a package subscriber (this isn't currently possible to produce using the web UI, it came from a future change) and saw `Subscribers: O123 package name, usera, userb`.
        - Updated a revision with a package subscriber.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T10939
      
      Differential Revision: https://secure.phabricator.com/D15911
      3ea47d96
  12. 28 Mar, 2016 1 commit
    • epriestley's avatar
      Bridge GitHub users into Phabricator and attribute actions to them · 7b0b820b
      epriestley authored
      Summary:
      Ref T10538. Ref T10537. This creates PHIDs which represent GitHub users, and uses them as the actors for synchronized comments.
      
      I've just made them Doorkeeper objects. There are three major kinds of objects they //could// possibly be:
      
        - Nuance requestor objects.
        - External account objects.
        - Doorkeeper objects.
      
      I don't think we actually need distinct nuance requestor objects. These don't really do anything right now, and were originally created before Doorkeeper. I think Doorkeeper is a superset of nuance requestor functionality, and better developed and more flexible.
      
      Likewise, doorkeeper objects are much more flexible than external account objects, and it's nice to imagine that we can import from Twootfeed or whatever without needing to build full OAuth for it. I also like less stuff touching auth code, when possible.
      
      Making these separate from external accounts does make it a bit harder to reconcile external users with internal users, but I think that's OK, and that it's generally desirable to show the real source of a piece of content. That is, if I wrote a comment on GitHub but also have a Phabricator account, I think it's good to show "epriestley (GitHub)" (the GitHub user) as the author, not "epriestley" (the Phabricator user). I think this is generally less confusing overall, and we can add more linkage later to make it clearer.
      
      Test Plan:
      {F1194104}
      
      {F1194105}
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T10537, T10538
      
      Differential Revision: https://secure.phabricator.com/D15541
      7b0b820b
  13. 22 Mar, 2016 1 commit
    • epriestley's avatar
      Fix tag limit logic in PHUIHandleTagListView · 86720b45
      epriestley authored
      Summary: Fixes T10648. This was goofed and always did a meaningless no-op slice -- I mucked it up while doing the disabled project stuff elsewhere.
      
      Test Plan:
        - Tagged something with 5 projects.
        - Saw the list sliced to 4 (the limit) with "...".
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T10648
      
      Differential Revision: https://secure.phabricator.com/D15508
      86720b45
  14. 17 Mar, 2016 1 commit
    • Aviv Eyal's avatar
      Remarkup rule for rendering PHIDs as handles · 2b9d4f70
      Aviv Eyal authored
      Summary:
      adds the `{{PHID....}}` rule. Should mostly be useful in UI code that refers to Objects.
      
      It doesn't add any mention links/transactions.
      
      Test Plan: Comment with this, see email (plain + html) and comment box.
      
      Reviewers: #blessed_reviewers, epriestley
      
      Reviewed By: #blessed_reviewers, epriestley
      
      Subscribers: Korvin
      
      Differential Revision: https://secure.phabricator.com/D15488
      2b9d4f70
  15. 29 Feb, 2016 1 commit
  16. 23 Feb, 2016 1 commit
  17. 18 Feb, 2016 1 commit
  18. 03 Feb, 2016 1 commit
  19. 01 Feb, 2016 1 commit
  20. 31 Jan, 2016 1 commit
  21. 28 Jan, 2016 2 commits
  22. 24 Jan, 2016 1 commit
  23. 24 Dec, 2015 1 commit
    • epriestley's avatar
      Show hovercards for most links in object property views · 3ec07c49
      epriestley authored
      Summary:
      Ref T8980. This isn't 100% coverage but should be pretty much all of the common ones.
      
      These feel a touch iffy to me at first glance so I didn't go crazy trying to hunt all of them down. I have some other plans for them so maybe they'll feel better by the end of it.
      
      Test Plan: Hovered over author, reviewers, blocked tasks, projects, etc.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T8980
      
      Differential Revision: https://secure.phabricator.com/D14877
      3ec07c49
  24. 04 Nov, 2015 1 commit
    • epriestley's avatar
      Provide formal Users/Projects/Mailable fields for EditEngine · 621f806e
      epriestley authored
      Summary: Ref T9132. This allows you to prefill EditEngine forms with stuff like `?subscribers=epriestley`, and we'll figure out what you mean.
      
      Test Plan:
        - Did `/?subscribers=...` with various values (good, bad, mis-capitalized).
        - Did `/?projects=...` with various values (good, bad, mis-capitalized).
        - Reviewed documentation.
        - Reviewed {nav Config > HTTP Parameter Types}.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Maniphest Tasks: T9132
      
      Differential Revision: https://secure.phabricator.com/D14404
      621f806e
  25. 02 Nov, 2015 1 commit
  26. 13 Oct, 2015 1 commit
    • epriestley's avatar
      Allow "Repository Automation" to be configured for repositories · df5a031b
      epriestley authored
      Summary:
      Ref T182. This allows you to assign blueprints that a repository can use to perform working copy operations. Eventually, this will support "merge this" in Differential, etc.
      
      This is just UI for now, with no material effects.
      
      Most of this diff is just taking logic that was in the existing "Blueprints" CustomField and putting it in more general places so Diffusion (which does not use CustomFields) can also access it.
      
      Test Plan:
        - Configured repository automation for a repository.
        - Removed repository automation for a repository.
      
      Reviewers: chad
      
      Reviewed By: chad
      
      Subscribers: avivey
      
      Maniphest Tasks: T182
      
      Differential Revision: https://secure.phabricator.com/D14259
      df5a031b
  27. 01 Oct, 2015 1 commit
  28. 07 Jul, 2015 1 commit
    • Joshua Spence's avatar
      Use PhutilClassMapQuery · f695dcea
      Joshua Spence authored
      Summary: Use `PhutilClassMapQuery` where appropriate.
      
      Test Plan: Browsed around the UI to verify things seemed somewhat working.
      
      Reviewers: epriestley, #blessed_reviewers
      
      Reviewed By: epriestley, #blessed_reviewers
      
      Subscribers: epriestley, Korvin
      
      Differential Revision: https://secure.phabricator.com/D13429
      f695dcea
  29. 30 Jun, 2015 2 commits
    • epriestley's avatar
      Fix infinite loop in renderAccessDenied() · 1bb30634
      epriestley authored
      Summary:
      Fixes T8727. When I added `setParentQuery()`, I increased the cache hit rate but also accidentally propagated policy exception settings.
      
      Instead, make the policy exception beahvior explicit: no exceptions should be raised when querying handles.
      
      Test Plan: Will test production.
      
      Reviewers: btrahan
      
      Reviewed By: btrahan
      
      Subscribers: epriestley
      
      Maniphest Tasks: T8727
      
      Differential Revision: https://secure.phabricator.com/D13489
      1bb30634
    • epriestley's avatar
      Dramatically increase cache hit rate for feed · 4adaf53b
      epriestley authored
      Summary:
      Ref T8631. The query plan for feed stories is really bad right now, because we miss caches we should be hitting:
      
        - The workspace cache is stored at each query, so adjacent queries can't benefit from the cache (only subqueries). Feed has primarily sibling queries.
          - There is no technical reason to do this. Store the workspace cache on the root query, so sibling queries can hit it.
        - In `ObjectQuery`, we check the workspace once, then load all the PHIDs. When the PHIDs are a mixture of transactions and objects, we always miss the workspace and load the objects twice.
          - Instead, check the workspace after loading each type of object.
        - `HandleQuery` does not set itself as the parent query for `ObjectQuery`, so handles never hit the workspace cache.
          - Pass it, so they can hit the workspace cache.
        - Feed's weird `PhabricatorFeedStory::loadAllFromRows()` method does not specify a parent query on its object/handle queries.
          - Just declare the object query to be the "root" query until this eventually gets cleaned up.
      
      Test Plan: Saw queries for each object drop from 4-6x to 1x in `/feed/`.
      
      Reviewers: btrahan
      
      Reviewed By: btrahan
      
      Subscribers: epriestley
      
      Maniphest Tasks: T8631
      
      Differential Revision: https://secure.phabricator.com/D13479
      4adaf53b
  30. 17 Jun, 2015 1 commit
  31. 15 Jun, 2015 2 commits
  32. 11 Jun, 2015 1 commit
  33. 04 Jun, 2015 1 commit
  34. 02 Jun, 2015 1 commit
  35. 22 May, 2015 1 commit
  36. 18 May, 2015 1 commit
    • Bob Trahan's avatar
      Maniphest - prevent uneditable tasks from being able to be closed as duplicates · 78dddf39
      Bob Trahan authored
      Summary:
      Fixes T7923.
      
      Prevent the user from finding tasks that they can't edit in merge workflows. Also ensure that we query properly on final merge action just in case.
      
      Test Plan: Tried to find a task I couldn't edit in various searches under the "merge" dialogue and couldn't find the task. Removed this big of code and tried to merge in a task and after hitting "merge" observed the page reloaded with no task merged in.
      
      Reviewers: epriestley
      
      Reviewed By: epriestley
      
      Subscribers: Korvin, epriestley
      
      Maniphest Tasks: T7923
      
      Differential Revision: https://secure.phabricator.com/D12872
      78dddf39
  37. 14 May, 2015 1 commit
    • epriestley's avatar
      Separate handle "status" and "availability" · 04186e02
      epriestley authored
      Summary:
      Ref T7707. Handles currently have a "status" field and a "disabled" field.
      
      The "status" field has these possible values: "open", "closed", "1", "2". durp durp durp
      
      Instead, do:
      
        - status = <open, closed>
        - availability = <full, partial, none, disabled>
      
      I think these make more sense? And are a bit more general? And use the same kind of constants for all values!
      
      Test Plan: Looked at all affected handles in all states (probably).
      
      Reviewers: chad, btrahan
      
      Reviewed By: btrahan
      
      Subscribers: epriestley
      
      Maniphest Tasks: T7707
      
      Differential Revision: https://secure.phabricator.com/D12832
      04186e02