diff --git a/src/applications/policy/editor/PhabricatorPolicyEditEngineExtension.php b/src/applications/policy/editor/PhabricatorPolicyEditEngineExtension.php --- a/src/applications/policy/editor/PhabricatorPolicyEditEngineExtension.php +++ b/src/applications/policy/editor/PhabricatorPolicyEditEngineExtension.php @@ -101,6 +101,9 @@ if ($capability == PhabricatorPolicyCapability::CAN_VIEW) { $type_space = PhabricatorTransactions::TYPE_SPACE; if (isset($types[$type_space])) { + $space_phid = PhabricatorSpacesNamespaceQuery::getObjectSpacePHID( + $object); + $space_field = id(new PhabricatorSpaceEditField()) ->setKey('spacePHID') ->setLabel(pht('Space')) @@ -114,7 +117,7 @@ ->setConduitDescription( pht('Shift the object between spaces.')) ->setConduitTypeDescription(pht('New space PHID.')) - ->setValue($object->getSpacePHID()); + ->setValue($space_phid); $fields[] = $space_field; $space_field->setPolicyField($policy_field); diff --git a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php --- a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php +++ b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php @@ -527,6 +527,11 @@ // TODO: Remove this eventually, this is handling old changes during // object creation prior to the introduction of "create" and "default" // transaction display flags. + + // NOTE: We can also hit this case with Space transactions that later + // update a default space (`null`) to an explicit space, so handling + // the Space case may require some finesse. + if ($this->getOldValue() === null) { return true; } else {