SOLVED Feature request: visual previews in the “Updates Found” popup

  • Few messages in any software throw me for such an emotional rollercoaster as the "Updates Found" window in RoboFont.

    When it pops up with a list containing bunch of glyphs, I sometimes feel like I have about a 50/50 chance of losing work by clicking the incorrect button. The really bad part, of course, is that it gives almost no indication of what has changed between the glyphs. Most often, this is just the result of running a script, so I can easily guess. Sometimes, though, it pops up with enough of a delay that I'm not quite sure what has caused it.

    I've asked about this before, but the response suggested a diffing script ... however, I could never find a way to diff before and after glyphs with this window, because the window locks up RoboFont, and it is unclear what state the files are in when this window appears.

    I do use Git, so I can usually retrace my steps and understand what happened to trigger the warning. And, of course, it makes sense to have some kind of a warning, in case a user accidentally triggers a change to their glyphs. However, the lack of clarity in the current window is very disruptive to my workflow and peace-of-mind.

    So, I have a feature request: can you please consider making this window more transparent about what changes have occurred? Ideally, would love this to show a visual preview (with metrics) of each glyph in the list, and it would also be nice to offer a diff view of the code in changed files.

    I know this is a non-trivial feature request and I don't expect an immediate change, but this window really does give me dread, and for me it might be the single most painful part of using RoboFont.


  • @RafaŁ-Buchner that’s a vanilla Popover window. here’s an example:

    from vanilla import Window, List, Popover, TextBox
    class PopoverExample:
        def __init__(self):
            self.w = Window((120, 120))
            self.w.list = List((0, 0, -0, -0),
                    ['eggs', 'bacon', 'ham', 'beans'],
        def showPopoverCallback(self, sender):
            selection = sender.getSelection()
            if not selection:
            index = sender.getSelection()[0]
            relativeRect = sender.getNSTableView().rectOfRow_(index)
            pop = Popover((140, 180))
            pop.text = TextBox((10, 10, -10, -10), 'spam '*20)
  , preferredEdge='right', relativeRect=relativeRect)


  • Unrelated side question:
    Maybe it is a wrong place to ask it, but what kind of ns object is this view, with "arrow-like-pointer" that you are using here?

  • As a super-simple UX upgrade here, you might be able to slightly alter the title of the table.

    Glyphs Changed: could become Glyphs Changed (double-click row to view diff):

  • 🙀 Amazing, thanks for pointing that out to me!

    Wonderful update – I really appreciate the change, here.

    (It could probably be more discoverable with some kind of button on each row or something to show that it's possible to view diffs, but even this view is a nice upgrade, and I'm sure you've got lots of things to work on.)

  • hello @StephenNixon ,

    have you tried the new diff view in RF 3.3b? just click on a glyph name to see the differences between the current version and the external changes:


    • clicking on Reject will keep the current data (red)
    • clicking on Update will switch to the external data (green)

  • Just circling back to confirm that this window is back again as I work on multiple masters with various extensions, and I once again feel dread.

    Why did these letters change? I think it's because I checked out a prior commit ... but the popup appeared only after I moved back to master. So, is this window going to apply the changes from the prior commit, or the current state? If it does apply changes from the prior commit, will it be easy for me to back out of, or not? If I reject the changes, will that somehow lose work? It's hard to know because it gives me so little information.


  • Visual diffs of outline changes are hard. I wonder if a visual comparison of glyphs, side by side showing all layers, would be enough. Things with numeric values could be shown in some sort of list. Hm. This is an interesting project. Maybe it could be a robotools thing that could be integrated into RoboFont.

  • RoboFont already pops up a review window where you can enable/disable glyph separately, which is a superduper non-trivial app change detection system.

    Definitely! I'm not calling this a small feature, and I hope I didn't trivialize what's there – it's definitely nice to have the warning when something has changed. Still, now that I know what has changed, I wish it were a little more obvious how things have changed before I confirm/deny.

  • admin

    a visual diff would be nice! could be a double click in the changed glyph list.

    RoboFont already pops up a review window where you can enable/disable glyph separately, which is a superduper non-trivial app change detection system.