Desktop UI Redesign 🎊

Hello everyone here in @Speckle_Insider!

Something we’ve been working on recently is a total rebuild of the desktop client UI. We’re ditching CefSharp (farewell to the resource hog) and are building a new and improved UI in WPF. It will be much more lightweight and hopefully more enjoyable to use :blush: Initially, this UI will be just be implemented in Rhino and Revit - Grasshopper and Dynamo will retain UIs similar to their current ones for now.

With the redesign, our priorities have been to simplify the experience for new users (while retaining all the advanced features that power users need) and put collaboration and sharing front and centre. We’re knee-deep in this at the moment and I am coming to you with some updates, some sketches, and a call for help :speaking_head: : if you have time for a live user test, please reach out!

This is all very much a work in progress and nothing here is final. That being said, I’d like to lay out where we’re at right now and ask for your feedback (both positive and negative!) to help shape the development of this new UI. Skip to the bottom if you’d just like the TL;DR :wink:

New Pages: Inbox & Feed

The “Home” page of the UI is where all your streams live. The two new pages here are Inbox and Feed (names are up for debate). The inbox is where you’ll get your notifications such as when someone shares a stream with you or adds you as a collaborator.

The Feed will be what you think of as a typical newsfeed: a chronological list of recent activity in the streams, projects, or servers you belong to. I’d be interested to know what you think about this idea and if you’d find it useful in your day to day!

Account Management

The SpeckleManager will likely be how most people manage their accounts as well as their installations. However, this UI should at minimum allow you to switch your default account. I’d like to know what method for switching accounts is most intuitive and preferable to you. Additionally, do you like the idea of separating account management to a different app or would you prefer to be able to add and remove accounts within this UI?

Creating Streams

When you first open the UI, you’ll be greeted with a prompt to create your first stream. We’d like this to be as simple as possible for someone trying out Speckle for the first time. The idea was to have a simple stream creating “wizard” that will diverge into two paths

  1. A big “Send” button that by default sends your selection to a new stream with default settings.
  2. An “Advanced Settings” button which will allow you to customise the stream by selecting your account, adding collaborators, and adding objects with more control.

You’ll be able to share the stream or open it in the web app right there from the same window.


The Streams page is the home page of the UI. Streams can now both send and receive, so this page will contain a flat list of streams related to the file you have open. This list will include streams from multiple accounts if you have them. A share button will be embedded right there in the list making it super quick to add collaborators and get a shareable link.

I’m curious to know: What information is most important to you when you’re looking at a stream? Do you like the combined sender / receiver streams or do you prefer the separation we had before? Do you like the one-page view of all the stream information, or would you prefer to separate this out into different tabs?

The button on the bottom right corner reveals additional buttons on hover. If this isn’t clear from the drawing, here’s a gif of what I’m trying to convey:

hover buttons

That’s my big brain dump for ya :confetti_ball: I would really appreciate any feedback, ideas, criticism, questions, etc so please start a convo down below!

And if you’d be willing to help with some hands-on user testing in the near future, please let me know :sunglasses:


Here’s what’s changed:

  • Sharing is quick and easy
  • The experience has been simplified to make it more beginner friendly
  • We’re adding an Inbox for notifications and a Feed for recent activity
  • Streams can now both send and receive
  • More detailed stream information is exposed

Here are my questions:

  • Thoughts on the Inbox and Feed?
  • What account management functionality do you need? How would you like it to be presented?
  • Would the stream creation wizard make things easier for you? Any other functionality you’re looking for?
  • What information is important to you when looking at a stream?
  • Does the combined sending and receiving stream make sense, or do you prefer the old way?

Looks great @izzylys! Really like the idea of seeing a feed alongside the stream itself. Being able to track changes in a more visible means and showing comments when a change has been made would be super useful.

As well as giving a stream a title, it would be great to be able to see the broader description / subtitle so that others can understand and pick it up easily. Also so that I can remember what I was up to when scrolling back through old streams - I have a lot called “test1”, “test2”, “testtesttest” etc (so partly my fault) and a short-form name isn’t always enough to pick things back up without diving into the streams themselves.


Hey @tomhebunn, thanks a lot for the feedback! Glad you like the idea of a feed – I also felt it would be a nice way to make collaboration more of a focal point. Since you imagine using it as a means for change tracking, would you want the ability to search / filter this feed as well? Or is a chronological list like a regular news feed what you’d expect?

Good call on the stream details. To be honest, I also have my fair share of “<proj>_test_2” :sweat_smile:

1 Like

Combining the senders and receivers into streams I think is the biggest help since the separation of sending and receiving was good in terms of explaining to users how Speckle technically worked, it wasn’t good when reflected in the UX since it lead to some confusing assumptions on the user’s part.

Regarding the inbox / feed, I wonder what you mean by “recent” activity. Does this mean notifications prior to a certain relative date won’t be loaded in? Since businesses relying on Speckle for many years would want to load Streams from older projects as reference material for something new, I think it would be pretty valuable to simply see the last 10 or so notifications in reverse chronological order no matter how old they are.

I can imagine a user story where if the inbox was written to work as described above, it could help jog the user’s memory on what was previously being done with an old stream without needing to dive into the admin tool and browse through everything. It’s better to be reminded of potentially useful information rather than needing to know that there is something useful you’re not remembering and looking up what that info might be.

However, that depends on what qualifies as a notification, how many of those notifications a typical project may have and what what extremes could the number of notifications on a single stream be realistically be taken to.

It also just occurred to me that a single session could have many streams open, each with their own unique history of notifications. So would these be aggregated into a single list that’s refreshed with each added / removed stream? Or would the notifications be grouped per stream?


When using RhinoCompute it will be necessary that the clients can work without actually popping up the UI. In that scenario it will be advantageous to have sender/receiver components that can accept server/stream/user/authtoken as input.

Also not sure about combined send + receive streams.
Firstly I feel like the ‘changes flow downstream’ is conceptually and organizationally easier (although it can lead to a proliferation of streams)
Bi-directional interoperability can be almost impossible nut to crack, and I wouldn’t want to give people the impression it was magically solved in send/receive streams


Thanks a lot for all this helpful feedback Jak!

Re inbox / feed, none of this is set in stone but I imagined it as the a reverse chronological list as you said regardless of how old this activity is. My intention with having them be actual pages (rather than a notification badge or popup like in some social apps) would be so that the activity would always be there for you to look back on even if you have “read” the notification – similar to an email inbox. Totally agree with you in that they would be useful for a user to re-contextualise what they were doing by presenting this info in a single place.

Re what qualifies as a notification / what goes in the feed, I am open to your thoughts on this. The separation in my head was that notifications in the inbox would be things directly involving you (eg someone shared a stream with you, added you to a project, commented on your commit, etc) while the feed would be for all activity in the relevant streams. So if your colleague made several commits in the stream, you wouldn’t get a notification for this but you would see it in the feed.

I had thought that the feed would be a flat list of all the activity for the streams you have open. This would of course be paginated so you don’t end up loading 100+ items if you are using many very active streams :sweat_smile: However, would it be more useful for you if they were grouped by stream? Maybe you could see a list of the most recently edited streams with a set number of changes nested within each stream? I can see this being better if you are someone who uses lots of streams at once. However, I could also see it obscuring information if you have one main stream where most of the action is happening alongside a couple of more dormant streams. Lemme know what you think :bulb:


Hey Steve! Thanks a lot for bringing up your concerns. Forgive me but I’m not quite sure I understand what you mean. I haven’t used RhinoCompute before, but I understand that it is used for building your own applications? If you are creating your own client, then there will be no need to use this UI. This will only be relevant for clients that need a UI for the user to interact with such as Rhino or Revit :blush:

Re your concern with combined send + receive streams, it would be great to dig in a bit more so I can better understand what your reservations are! Could you please clarify what you mean by ‘changes flow downstream’? Streams are not inherently senders or receivers and can theoretically be sent to / received from anywhere (liberate that data :sparkles:). I totally agree that interoperability is a complex problem and we wouldn’t want to imply we have perfectly solved it with streams. The intention behind combining the sending / receiving was to make it very easy to understand for someone new – think Dropbox-esque simplicity. We want it to be as straight-forward as possible to send stuff to Speckle :smiley:


I see what you mean with that last point. This might be a good point to introduce some A-B testing for the mid to later stages of the insider program. It might involve a bit of extra work but this seems like one of those problems where without some real world feedback you’re basically making a coin toss on what you choose to do. The A-B testing may even reveal a clever third option that offers the best of both.

1 Like

Yay to A-B and user testing, we’re planning to do some as soon as we’ve defined things a bit more and heard all your feedback!


Hi Izzy,

Some quick thoughts even though I haven’t played a lot with the current client. I assume you can do the basics like managing kits/ client installations and yes account information in one hub would be useful.

Re: Feeds
I like the idea to get notifications but I am not sure about the feed. I am seeing the same on GitHub and I don’t find it very useful.

Now regarding browsing the streams, how is this different than the online version and will you keep the functionality the same between the two different interfaces?

What I can see as useful would be to browse streams, search streams, filter streams (streams that were shared/created by me) and of course pin streams. Manage read/ write (is that even possible now?)

And I guess this goes a bit further than a simple UI manager, but I would like to be able to do a form of rudimentary QA/versioning easier.

Instead of a glorified notification manager why not have something like a comment section of a project. I can see that teams can potentially add this page on their teams Channels as well? Notifications could be somewhere more discrete. :ghost:

Creating streams sounds awesome for the new users and having like a small tutorial as you said would be the way to go. I really like also the plus button on the bottom right with the extra option to add objects!

Hope this helps.


Hey Stam, thanks a lot for all this feedback!

I feel I might not have been clear enough about the role of this UI. This is not intended to be a desktop version of the web app, but a UI for desktop clients. It would take the place of the current Speckle UIs in Revit and Rhino. So Home would only show the streams you have added to the file you have open and would not mirror the general web app’s functionality. Sorry if this was not clear :sweat_smile:

At the moment, SpeckleManager is intended to be the place where people manage kits, clients, and accounts. Though if it would be better for users to have account management within the clients, we are open to adding that in as well! Happy for input on this.

Re Feed, does the clarification that it will only show activity related to your current context / open file make it more interesting or would it still be pretty useless for you?

Re Home and stream management, filtering and searching is def in the plan! The current idea was for permissions to be handled when adding someone to a stream by giving them one of three roles: reviewer (can only view), contributor (can edit), and owner (full access). Though we could totally also throw this functionality into the stream details page if there is need.

Re QA / versioning, could you elaborate on what you would want to do? I didn’t go into it here as it should be a whole other post, but the way streams are managed is changing! New “versions” of streams will actually be new commits onto which you can add a commit message so of course you’ll need to be able to manage this in the UI. You’ll also be able to branch a stream, though idk if this will be included in the initial version of the UI as we’re not sure how many people will want to use this at first. Would these things meet your needs or is there something else you’re getting at?

Re Inbox, totally get ya as it is essentially just notifications. I believe comments are in the plan, but @dimitrie or @teocomi would prob be better for elaborating on where that’s at and how it would fit in :sparkles:


Quickly swooping in re comments/issue tracking: it’s something we indeed see happening at one point - but not as part of the MVPs we’re trying to put out in the alpha stage.

It would be nice to have them embedded in host applications (for which this ui is for) but that might mean a lotta effort, duplicated against a potentially much richer and online web app functionality. We’ll see!


Hey Izzy, It makes sense as you are saying it now. I read it quickly and I might have missed some of the finer points!

Exciting to see that you guys are thinking in terms of commits! Yes by QA, I meant an owner having the ability to accept a PR / manage what is considered the “master” branch, possibly observe deltas between different commits? Maybe the latter is too much, but it would be extremely useful to manage information.


Not in the MVP - but yes, later. We won’t have protected branches out of the box.

1 Like

Understandable. TBH, some of those features could be considered “premium” I wonder if you have any thoughts on it?

1 Like

Yep, that’s true, we’ve been looking a lot at GitHub/GitLab for inspiration! Our goal at the moment is to deliver the core, free & OS features to make Speckle best data platform for the industry, additional/optional/premium features might come at later stage, but are not part of our current focus :slight_smile:


Great to read about all the new ideas and features!

My thoughts about some of the topics:

  • Account management: would it be possible to integrate the Speckle servers of a company with the corporate account of the user? Then with single sign on the users can access the Speckle Server (WebApi) and Speckle Admin so the user doesn’t need to sign in to the Speckle Admin first to get a ‘Speckle WebApiToken’. This would be useful for ‘custom/corporate’ Speckle Clients.
  • Sending and receiving stream: it makes perfect sense to see the streams as data where people can pull from and push to (like GitHub/GitLab).

Hey @izzylys. Just picking up on your response - chronological would be useful. I think with the description… I want to be able to ensure that I’m picking up the right information from another user, and I want to do that natively.

i.e. if @pablothedolphin creates a stream for me to undertake the next bit of work on, I don’t want to necessarily have to call or email him to get the correct stream.

I’m a big fan of the inbox addition in Speckle, which may help solve this. Description / tags would be useful in the feed for verifying when I come to pick it up. Otherwise, I’m not totally concerned about tracking changes from one stream to another - a cool potential feature but we have other tools to aid with that currently.


1 Like