Page MenuHomePhabricator

Upgrading: ApplicationEditor changes in Maniphest
Closed, ResolvedPublic

Description

After the 2015 Week 49 branch cut for stable, infrastructure changes are landing which will impact Maniphest. These changes are far-reaching and may have rough edges for some time. If you use Maniphest, review this task before upgrading past Week 49 to know what to expect.

These changes are connected to new infrastructure (ApplicationEditor tech, out of T9132), but the infrastructure changes are fairly broad and various other things are getting caught up in them.

Current Status

These changes have been promoted to stable in 2015 Week 52, but keep an eye out for any remaining issues.

Things to Watch Out For

  • Three-eyed Ravens

Specifically, these are the incompatible or breaking changes:

  • Maniphest "Can Edit <Field>" policies in ApplicationsManiphest are no longer respected in the UI. This is discussed in greater detail in T10003.
  • The WILLEDITTASK and DIDEDITTASK events will no longer fire for many edits, and will stop firing completely soon. See prior discussion in T9860.
  • The maniphest.createtask and maniphest.update endpoints will be deprecated and removed. The new maniphest.edit endpoint replaces them both. The new endpoint should be a dramatic improvement over the old endpoints.
  • Drafts (saved, unsubmitted comments in comment text areas) are moving to a new format, and you will lose any existing draft comments which haven't been submitted. If you've been using drafts to keep a personal journal or something, move it somewhere durable.
  • Actions other than "Comment" no longer implicitly subscribe you to tasks. (I'm open to reconsidering this, but it was inconsistent with other applications and simpler to make consistent.)
  • "Create New Project" on the task create screen has been removed. This was a weird one-off action which never worked right. This may be replaced with a more global action eventually, but it was easier to make consistent and I don't believe it's heavily used.
  • Description previews have been removed from the task edit/create screen. (However, there is a new inline preview button in every remarkup field.) These will return in some more general form via T3967, but probably not for a while.
  • The "Create New Empty Task", "Create a Similar Task" and "Create Another Subtask" convenience workflows have been removed. "Empty Task" seems obsolete, but some flavor of "Similar Task" may return in the future.
  • There are a few mostly-minor known issues with the implementation in its current state, tracked in T10004.
If a feature you use is broken or missing on this install (which runs HEAD of master) but not listed above, feel free to report it as a bug to make sure it gets taken care of.

Benefits

These are some of the benefits of the new infrastructure:

  • You can take multiple actions when submitting a comment (for example, change priority and change projects).
  • All your actions are now saved as a draft, so you won't lose the stuff you typed into, e.g., "Add Subscribers" if you close the window by accident.
  • Zombie versions of old comments should no longer hang around spookily after they are submitted.
  • Previews will accurately reflect what your action will do.
  • The new maniphest.edit API endpoint runs the same code that the web UI runs, and should fix all of the deficiencies in the old edit endpoints.
  • You can now define multiple "Create" forms, like "File a Bug", "File a Feature Request", and "Report a Security Issue".
    • Each form can set field defaults and lock, hide, and reorder fields, and include workflow-specific instructions.
    • Each form can have policies associated with it.
    • Get started with User Guide: Customizing Forms.
  • Concurrent edits by multiple users (or a single user in multiple windows) which adjust projects and subscribers will no longer overwrite one another.
  • Object editing is more modular and more extensible, although you'd be crazy to touch this API anytime soon.
  • Create/edit forms are universally pre-fillable with HTTP GET parameters, and there's a page explaining all the parameters for each object.

There are also major internal infrastructure benefits (for example, Conduit endpoints and EditControllers are now each about 10 lines long), but these should not generally impact users. I plan to bring this infrastructure to all applications over time. It is currently available in Maniphest, Paste and Owners.

Related Objects

Mentioned In
Q269: Remarkup Previews
T10068: Phabricator Tasks are not loading after Upgrade.
Blog Post: Development Notes (2015 Week 52)
2015 Week 52 (Late December)
T3967: Build a 2-up preview mode into the fullscreen Remarkup editor
Blog Post: Development Notes (2015 Week 51)
2015 Week 51 (Mid December)
T6287: Custom Fields - add concept of "needed for quick create" for a given field
rP1d72c97fc9f6: Fix overzealous subscribing in EditEngine
D14795: Fix overzealous subscribing in EditEngine
T9997: Allow login to be disabled for an authentication provider
Blog Post: Development Notes (2015 Week 50)
2015 Week 50 (Early December)
T9132: Build an ApplicationEditor abstraction
T9851: Remove TYPE_MANIPHEST_WILLEDITTASK and TYPE_MANIPHEST_DIDEDITTASK events
T9937: During arc land harbormaster lint/unit, it is hard to remember the failure information from previous arc diff
T5622: "copy" attribute for custom fields is not working, at least for text fields
T5162: Add Herald action value for content creator / author
T5158: Maniphest custom field refuses to use non-empty default value
Blog Post: Development Notes (2015 Week 49)
2015 Week 49 (Very Early December)
Mentioned Here
T10004: ApplicationEditor Errata
T10003: Upgrading: Maniphest field-level policies ("Can Prioritize Tasks", etc.) have been deprecated and will be removed
T9908: Temporary Guide to Edit Forms / ApplicationEditor Chatter
T3967: Build a 2-up preview mode into the fullscreen Remarkup editor
T9132: Build an ApplicationEditor abstraction
T9860: Upgrading: TYPE_MANIPHEST_WILLEDITTASK and TYPE_MANIPHEST_DIDEDITTASK are deprecated and will be removed

Event Timeline

epriestley raised the priority of this task from to Normal.
epriestley updated the task description. (Show Details)
epriestley added a subscriber: epriestley.

lotsofthumbsup

(consistent edit endpoints in Conduit and custom task forms are what I'm most looking forward to)

I landed what I've got so far, pushed it here, configured it a bit, and described what I've done in T9908, for the curious.

These new features are exciting!

After the 2015 Week 49 branch cut for stable, infrastructure changes are landing which will impact Maniphest.

ApplicationEditor is about to land in Maniphest, which will entail major changes. This stable release is the last safe harbor before these changes hit master.

Just to be clear, after this week - sites that upgrade but are tracking the stable branch will be affected by these changes?

Just to be clear, after this week - sites that upgrade but are tracking the stable branch will be affected by these changes?

I'll provide more guidance leading up to next week and in the changelog -- it's possible that we might not cut a new stable (or might just cherry-pick some stuff into it) if we're aware of a lot of unresolved issues in master.

Excited about this too!

I happened to notice "Create Another Sub task" and "Create A Similar Task" convenience workflows are being removed for the time being, and I am hoping for a swift return in some form or fashion, as they have been very useful and much used features by our team.

Editing tasks via the editor now also subscribes me to them (eg https://secure.phabricator.com/T3277#148797); I don't think that's intended?

Is there an expected date when this change will be safe for production use? That red warning bar at the top of the summary is very intimidating, though I want to keep our instance responsibly close to the edge (should I just use stable?).

@ox: stable is very close to the edge. I think if you want production use, you should just use stable

Editing tasks via the editor now also subscribes me to them (eg https://secure.phabricator.com/T3277#148797); I don't think that's intended?

I CC'd you, but should be fixed in HEAD.

I've updated the description, but I currently expect to promote these changes next week.

I believe they're stable in master and ready for use by installs willing to accept some risk of "beta" issues, but was still making changes that went deeper than just polish/documentation as late as yesterday, so I want to let them sit for another week before promoting.

Please excuse me if this is not the place to ask for this:

I lost the preview (after a code update) while creating a new task on Maniphest. I it possible to restore it?
Should I open a Bug Report?

Thanks

I lost the preview (after a code update) while creating a new task on Maniphest. I it possible to restore it?

See above:

Description previews have been removed from the task edit/create screen. These will return in some more general form via T3967, but probably not for a while.

Thanks @epriestley . It seems my search skills failed me this time... :)

epriestley updated the task description. (Show Details)
epriestley updated the task description. (Show Details)
epriestley claimed this task.

This has been quiet for a while, seems like nothing broke too heavily.

Hi Evan,

Being new too this, wondering if I'm in the right place? Meaning, as part of Phabricator? Can you help me understand all of this? It seems like I stumbled into this! Not sure what I'm doing or what I'm supose to be doing?

Thanks Rob!

If you are new to Phabricator or have not modified Maniphest much, this post does not pertain to you.

Hi Evan,

Sorry if I messed up anything by removing myself as a watcher! What do you think? Should I just sit on the sidelines? Or unsubscribe out of Phabricator all together? Not understanding the script, plus information overwhelming! What's your advice? ........Rob!

Hi Evan,

Having questions, possible to give a call on the phone sometime?

Rob!

@rdfree50 see https://secure.phabricator.com/book/phabricator/article/support/ for what free support services are available for Phabricator. If you need direct 1 on 1 support from Phacility, we're happy to offer that as well (see https://secure.phabricator.com/w/consulting/).