Broken Dashboard when creating a Differential Changesets Query Panel

Hello everyone!

I want to note that when creating a Dashboard you may be able to crash it, and you may not be able to edit or delete it from the UI anymore.

Here my reproducible steps:

  1. Create a new Dashboard
  2. Create a new Panel of kind “Query Panel”
  3. “Search for” field set to “Differential Changesets”
  4. Create the Panel

Now you should see:

Unhandled Exception ("PhutilMethodNotImplementedException")
Method getURI in class DifferentialChangesetSearchEngine is not implemented!

You can see the result here:

I’m using latest stable Phabricator I think.
be2b8f4bcb62deb953049debacfbc7dca2e6edef (Thu, Oct 31) .

I think tomorrow I will try to delete the Dashboard from the command line using the right way.

This should already be fixed in master and stable by (Nov 8th).

1 Like

Thank you.

Also is interesting.

After looking at how the T13443 was resolved (disabling the feature), I was able to workaround my problem allowing the generation of that kind of panels, with this patch:

From 3bdd547035cca98dc13000db643844f0a01aed77 Mon Sep 17 00:00:00 2001
From: Valerio Bozzolan <>
Date: Sat, 16 Nov 2019 06:33:23 +0000
Subject: [PATCH] avoid Panel crash when creating a Differential Changesets
 Query Panel

 .../differential/query/DifferentialChangesetSearchEngine.php | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/applications/differential/query/DifferentialChangesetSearchEngine.php b/src/applications/differential/query/DifferentialChangesetSearchEngine.php
index 0dfec94a5..5c8b9aeec 100644
--- a/src/applications/differential/query/DifferentialChangesetSearchEngine.php
+++ b/src/applications/differential/query/DifferentialChangesetSearchEngine.php
@@ -47,7 +47,10 @@ final class DifferentialChangesetSearchEngine
       return '/differential/diff/'.$diff->getID().'/changesets/'.$path;
-    throw new PhutilMethodNotImplementedException();
+    // @see
+    return '#/differential/diff/-missing-diff-';
+    //throw new PhutilMethodNotImplementedException();
   protected function getBuiltinQueryNames() {