Skip to content

Conversation

@krokicki
Copy link
Member

@krokicki krokicki commented Dec 23, 2025

Clickup id: 86adpkkgt

Implements Neuroglancer short links a la the FlyEM Shortener.

There is also a version of this PR implemented by Claude (#278), for comparison purposes. I think I prefer this one because it has simpler code, more features, and I like the UI better. But it is not reactive and needs some work.

@JaneliaSciComp/fileglancer @stuarteberg

@krokicki
Copy link
Member Author

Current screenshots:

Screenshot 2025-12-23 at 15-20-21 Fileglancer Screenshot 2025-12-23 at 15-20-38 Fileglancer

@neomorphic
Copy link
Member

I have not looked too deeply at the code, but I think there are aspects of the UI/UX that l like from both. I like the "+ New Link" button in the Claude version and I like that it is not tucked away next to the search box. I like this version for the input form, since it is what I would expect from a link shortener. I also like that the link is clickable in this version. I am not sure why there is an outlined "URL" button in the modal, but that seems unnecessary / broken. I think the references to "Views" needs to be more consistent. It seems like the title of the second column of the views table should be changed to "Neuroglancer View".

@stuarteberg
Copy link

One note: When using our existing link shortener, I very very frequently make tweaks to my neuroglancer scene and then overwrite it. IIUC, both PRs have flaws:

  • This one doesn't permit altering a link after it's been shortened.
  • The Claude one allows "updates", but if I'm reading it correctly, it requires the user to choose whether they are creating a new link or updating an old one. (I haven't actually seen the "Actions" UI, so I'm not sure.) That sounds annoying.

In either case, it might be nice to alert the user when overwriting an existing link, and ask for confirmation. That's slightly more complicated, though.

@allison-truhlar
Copy link
Collaborator

I agree with Jody that the “+ New Link” button in the Claude implementation is easier to find. I couldn't find the Codex one at first. I also like calling the page “Neuroglancer Links” better than “Views”.

To Stuart's point above - in ngLinkQueries.tsx in the Claude implementation, the payload for the update mutation has the option to provide “state” but this hasn’t been implemented in the "edit" dialog. I do like the way the Codex UI allows you to toggle between pasting in a URL vs JSON state (via the outlined URL button). So I think that extending the Codex UI to the "edit" dialog and using the Claude update mutation would create the correct combination of being able to update the state in the link (also the short name, which is currently the only thing you can update for an NG link in the Claude version).

A few other small notes:

Codex

  • Appears to have an extra/unneeded Alembic migration?
  • In the Actions menu, I’m not sure the utility of being able to copy the key
  • I think the API endpoint naming in the Claude implementation follows our current patterns better than the Codex names - specifically, Codex creates a separate endpoint for GET (api/neuroglancer/short-links) and POST (api/neuroglancer/shorten) operations
  • For managing the Neuroglancer link server state in the UI, I would use a context provider to initialize the queries like Codex (Claude didn't do this, even though it's the pattern used in rest of the UI). Potentially this provider could be wrapped only around the Neuroglancer links page, not at the higher level in App.tsx that Codex chose. Currently, the Neuroglancer link information is only used on this one page and it's children. However, if there are plans to create or access Neuroglancer links from other parts of the UI, then the provider would need to stay in App.tsx like Codex chose.

Claude

  • “View in Neuroglancer” in the Action menu didn’t work for me

@krokicki
Copy link
Member Author

krokicki commented Jan 5, 2026

Thanks everyone! I think I rushed these out too quickly at the end of the year and both have major issues. I will concentrate on this PR as a starting point and get it fixed up.

@krokicki
Copy link
Member Author

krokicki commented Jan 5, 2026

I think I've addressed all of the comments above, and made some other improvements besides:

  • Added title/name that mimics how the FlyEM shortener works
  • You can edit after creating
  • You can delete
  • Made naming consistent through-out the UI and backend
Screenshot 2026-01-05 at 6 17 15 PM Screenshot 2026-01-05 at 6 17 54 PM Screenshot 2026-01-05 at 6 17 29 PM Screenshot 2026-01-05 at 6 17 40 PM

@krokicki
Copy link
Member Author

krokicki commented Jan 5, 2026

@allison-truhlar Please review this commit in particular: allow search by URL in both Data Links and NG Links

I took out the special URL handling because it didn't seem necessary for Data Links and it was interfering with NG Links. But maybe I missed something..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants