Slightly more specific error message (and removal of the useless stack dump) for IOError when loading a tool.
Do not |h escape tool dependency error message, as it is escaped and formated by tool_shed.util.basic_util.to_html_string
Do not |h escape tool dependency error message, as it is escaped and formated by tool_shed.util.basic_util.to_html_string
merge
Merge.
Provide both user email and preferred contact email (if different) in error report form.
Pep8 standardized method spacing in lib/galaxy/tools/errors.py
Code de-dup in workflow controller.
Refactor helper out for detailed encoding of a workflow for API.
Move building workflows from dictionaries into new WorkflowContentsManager.

Going to build up a WorkflowContentsManager that is reponsible for slightly more complex operations involving step logic, etc... and keep the WorkflowsManager focused on CRUD-like and sharing operations.
Refactor updating workflow contents out of mixin into manager.

Introduce an API endpoint for this operation with test case.
Move body of _workflow_to_dict to new WorkflowContentsManager.

Getting closer to killing UsesStoredWorkflowMixin.
Move more workflow logic out of controller into manager.

This logic for building up editor representation of the workflow.

Introduce concept of a workflow to dict style - with 'export' and 'editor' as first cracks.
Introduce yet another workflow to_dict style - 'instance'.

This is the style used by workflow 'show' - this consolidates all step handling to_dict style-logic from controller/base.py, controller/workflow.py, and api/workflows.py into the new WorkflowContentsManager - with API test cases for everything.
Allow implicit connections between workflow steps (no editor GUI yet).

This means steps that are not connecting an output of one step to the input of another. This could potentially address all sorts of untraditional (in a Galaxy sense) workflows where some sort of data is managed externally. The most important use I think I have heard discussed is that of data managers - this can be used in cases where data managers depend on one another (grab the fasta files in one step, index them in another) or workflows where a downstream analysis depends on index data populated via data managers in earlier steps.

Not really sure how to represent these in the workflow editor - but this is a power user feature anyway so hopefully that is not super pressing. The YAML to workflow DSL supports the operation (see test cases) so these power users (a euphemism for Dan I guess) can just use that for now.
Slightly improved error message for incorrect workflow connection uploads.
De-duplication of step creation across update and create worklfows.
De-duplicatation for setting up workflow connections during creation/update.
Create abstraction for walking over step dicts to share between create/update methods.
Improved workflow step tracking.

Give every step a UUID that can be preserved across edit to the workflow. Likewise - allow every step to be given a label (a unique short name for that workflow) - that allows for a human consumable way to reference steps for use in tests and when driving workflows via the API. Workflow editor doesn't yet (and might never) display these attributes but it does preserve them across workflow saves.

Implement automated testing that uploading workflows, updating workflows, and exporting them handle UUID and labels. Manually tested workflow editor preserves labels and UUID across changes.

 - IMPLEMENT AND TEST REFERENCING STEP PARAMETERS BY UUID.
 - IMPLEMENT AND TEST UNIQUENESS CONSTRAINTS.

Rebase into step tracking (editor changes).