**Macro**
[x] When creating a macro without uploading a file, a redundant / nonuseful `"" is not a valid file PHID.` message is emitted.
[x] When creating a macro with no name, redundant errors are emitted ("must have a name" + " macro name must be at least three...").
[x] Macros can be created using files which are not viewable images (like text files).
[x] It is impossible to edit a macro and change simple fields (like "name" or "subscribers") without also uploading the file again (you get "Image macros must have a file").
[x] Attaching audio to a macro does not appear to work at all: always "You must upload audio."
[x] Macro feed stories are inconsistent about their use of the word "macro". For example, `X disabled Image Macro "cat6".` (no "macro") but `X changed the image for macro Image Macro "cat6".` (uses the word "macro"). For consistency with other applications and builtins (which use generic language so we don't have to translate `X added a comment to <object>.` for every object type), stories should omit the word "macro" if they can.
**Fund**
[x] !!Important!! The "Can Create Merchants" permission in Phortune does not prevent users from creating merchants, even though it visually disables the "Create Merchant" action.
- !!Important!! The "Can Create Initiatives" permission in Fund does not prevent users from creating initiatives, even though it visually disables the "Create Initiative" action.
- Creating an initiative generates "Author set description / risks / merchant to ..." in addition to "Created". These initial state transactions should be suppressed, as they are in Differential and Maniphest. Oh, this is probably just because we aren't on EditEngine yet. So, uh, just ignore this. Or add a synthetic TYPE_CREATE transaction, like `PhabricatorSlowvoteEditController` to fix this in the short term.
- Fund looks like it's still using old comment code (e.g., no stacked actions), but can probably be trivially upgraded.
- Creating an initiative generates this feed story. Like the timeline event, this story should be suppressed (but is also an EditEngine thing, so ignore or use TYPE_CREATE to cheat for now):
{F4943529}
- The above story reads awkwardly ("changed the merchant receiving funds from I2 Cure Cancer initiative"). For consistency with Maniphest, Differential, etc, it should omit the word "initiative", and let "Xnnn Object Name" stand on its own.
**Slowvote**
[x] The transaction for updating the description does not show the "Show Details" link to show a diff. This requires a little extra legwork in the `Transaction`, see Fund for examples.
**Spaces**
[x] //I failed to identify any issues with Spaces.//
**Legalpad**
- Creating a Legalpad document generates awkward transactions until EditEngin, like "X renamed this document from to Document Name."; we could smooth this over with an artificial `TYPE_CREATE` transaction.
- Editing a document which requires signatures creates another "set the document to require signatures" transaction. We may be missing some casts. See also T12685.
- Editing a "Corporate" document which does not require signatures, but which you created with signatures required, creates a "set the document to not require signatures" transaction. This is vaguely wrong but also probably pre-existing.
**Passphrase**
[x] Destroying the secret for a credential and then assigning a new secret does not generate a transaction.
[x] The "Description" field behaves like remarkup (for example, `@username` adds a subscriber), but does not use a Remarkup control. This is likely pre-existing.
**Phame**
[x] Posts require a title, but do not have grey "Required" hint text in the empty form. This is likely pre-existing.
[x] Blogs require a name, but do not have grey "Required" hint text in the empty form. This is likely pre-existing.
[x] !!Slightly Important!! `PhamePostTransaction` has some old `self::` constants which should be updated, in `getMailTags()`.
**Applications**
- `PhabricatorApplication` does `return new PhutilMethodNotImplementedException` instead of `throw new`. I'm pretty sure I suggested that this great code would work wonderfully as written. This results in this error, in the daemons (`bin/phd debug taskmaster` after making a configuration edit):
```
[2017-05-07 12:09:45] EXCEPTION: (Error) Call to undefined method PhutilMethodNotImplementedException::setActor() at [<phabricator>/src/applications/transactions/worker/PhabricatorApplicationTransactionPublishWorker.php:69]
```
- This can probably be fixed by returning `new PhabricatorApplicationEditor()`.
- Selecting "Save Policies" in policy configuration for applications without changing anything just reloads the page. It should redirect back to the application detail page. This is likely pre-existing.
**EditEngine / Broader Issues**
- In Macro, when uploading a file and submitting the form with an error, the file is lost. This is a general issue with `PhabricatorFileEditField` and not trivial to resolve.
- In Fund, as a merchant I can't refund a backer in the general case because I can't view the cart. I think? Unless I forgot about something magic. I think this is pre-existing and an artifact of Phortune being conservative about permissions.
**Product / Minor**
[x] Macro has gained a "Subscribers" field on the create form. This is consistent, but perhaps not useful?
- In Fund, the backer list has a default "no results" string ("No data found" instead of "no backers").
- There is no UI feedback in Slowvote if you vote without selecting an option.
- In Slowvote, "Reopen Poll" uses an unusual icon: {icon play-circle-o}. Other "reactivate" actions usually use {icon check}.
- In Slowvote, the "Open" tag in the header uses an unusual icon: {icon circle-o}. Other "open" states tend to use either {icon check} or {icon square-o}. @chad may have more insight into the rule here, if something more subtle exists.
- In Slowvote, the "Status" checkboxes ("Open / Closed") in search have no label. They are fairly obvious without one, but in other applications they normally have a label.
- In Slowvote, common and useful poll option `"0"` is not accepted as a valid response. This is likely a `!$value` check which should be a `!strlen($value)` check. Without this option, polls like "How many puppies should we adopt?" can lead to uncomfortable outcomes.
- In Slowvote, attempting to vote in a closed poll (load form in one window, close poll in second window, submit form in first window) results in "400 Bad Request". Better would be UI guidance ("Voting has closed.").
- Spaces does not publish feed stories, but reasonably could? Also mail.