Releases: typedb/typedb-studio
TypeDB Studio 2.21.0
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
Bugs Fixed
- Minimise queries made to refresh state after a schema write
We no longer reload the entire schema and all its connections on each schema write. Instead, we now reload the type hierarchy (for the Type Browser), and also, while there is a Type Editor open, it reloads all its data on a schema write.
This change drastically reduces the time taken to complete schema write operations.
Code Refactors
Other Improvements
TypeDB Studio 2.18.0
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio
documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
-
Refactor schema vertex rendering for graph visualisation
Previously, Studio would visualise 'owns' edges that are inherited multiple times, even if the type from which it inherited this ownership is also present on the graph with its own 'owns' edge to the same attribute type.
Now, Studio only visualises owns, plays and sub edges for the 'super-est' edges that own, plays or are subtypes for those types that are visible on the graph.
-
TypeDB Client Java 2.18 support
We've bumped the version of TypeDB Client Java that Studio uses.
Bugs Fixed
Code Refactors
-
Use remote concept API to derive has edges for graph visualisation
We've refactored the graph building process to derive 'has' edges from the remote concept API. This is hugely faster than the previous approach of running explicit reasoning queries per concept.
-
Terminology update for Type Editor and Type Browser
We've renamed two parts of our system that pertain to the displaying of information about types.
Other Improvements
-
Update release notes workflow
We integrate the new release notes tooling. The release notes are now to be written by a person and committed to the repo.
-
Update CODEOWNERS
TypeDB Studio 2.17.0
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio
documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
-
Update for 2.17.0
We've bumped our dependencies for the upcoming release of Studio 2.17.0.
-
Improve password expiry notification
We've updated the version of typedb-client-java being depended upon, adding support for
passwordExpirySeconds
, a new user API that replacespasswordExpiryDays
.We've also improved the password expiry notification, improving its clarity.
-
Password expiry notification
We've added a password expiry notification advising users to use Console to update their password once it is within 7 days of expiring.
-
Extended unicode character support
We've added support for characters in Studio's text editor larger than 16 bits.
-
Bump Compose, rules_kotlin
We want to upgrade to the latest versions of Compose Multiplatform and Kotlin for increased performance and functionality.
-
Transaction Timeout Preference
We've added a field to the query runner preferences, allowing for the configuration of transaction timeouts.
-
Allow running selected query from non-TypeQL files.
We allow the running of a selected query from non-TypeQL files.
Bugs Fixed
-
Provide friendly warning when trying to explain an inference while explanations are not enabled
We have provided a friendly warning to users when they try to explain an inference while explanations are not enabled.
-
Home/end keys move to beginning/end of content
We've changed the behaviour of the home key in the text editor, moving it to the beginning of the content covered by the text editor rather than the beginning of the line. This falls in line with our current implementation where SHIFT+HOME selects everything to the beginning of the content.
TypeDB Studio 2.14.2
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
Bugs Fixed
-
Schema editor loop fix
We have fixed a bug in the schema editor where it would enter a loop through a few layers of indirection.
-
Fix text selection causing scrolling
We have fixed a bug that caused the text editor to scroll whenever text was highlighted at the bottom of the text editor:
Code Refactors
Other Improvements
TypeDB Studio 2.14.1
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
Schema Editor
Our schema editing functionalities are out! Now, you can manipulate the entirety of your database's schema with ease from the comfort of Studio's intuitive UI. Start by opening a schema write transaction, then double-clicking on any of your types in the schema browser and edit to your heart's content. It has never been easier to iterate upon your schema in real time, with immediate notifications informing you of any schema exceptions.
The following actions are possible within Studio's Schema Editor:
- Navigating seamlessly between your types.
- Define and undefine types.
- Changing any Thing's supertype and making any Thing abstract or not abstract.
- Adding and removing attributes from entities.
- Full editing of relationships, adding and removing attributes, changing of role players of the relationship and the adding of the relationship itself to other relationships!
Preferences
You can now change various behaviours of Studio! Default match query limits, toggle the auto saving of files and more! We've laid the groundwork for adding more preferences in the future (such as different graph themes!), so make sure to send in any of your burning feature requests.
You can access the preferences dialog by clicking on the gear icon in the top right corner of Studio.
Changing the following settings is currently supported:
- Toggling the graph output.
- Ignoring certain paths (with globbing support!)
- Toggling auto saving of files.
- Changing the default match query limit.
Cluster Experience Improvements
We've improved the experience of connecting to your TypeDB Cluster. You can add as many Cluster addresses as you like now!
Test suite for Studio
We have developed a suite of tests concerning the integration of discrete sections of Studio.
Bugs Fixed
-
Fix icon clipping
We've fix a bug we introduced where the size of icons was initialised as "Unspecified". As a result, certain icons became 'clipped'.
-
Shift+Home/End selects to end of line
Matching the way navigating with the Home & End keys works, adding the shift key should only select to the end of the line rather than the end of the file.
-
Hybrid wait-based approach for test suite
We've refactored the test suite to make use of a hybrid wait-based approach for the Studio test suite. That is, when we expect elements of the GUI to change we use
ComposeTestRule
'swaitUntil
, blocking until a given condition is satisfied or a timeout is reached. This polls the UI for changes and also recomposes inbetween polls.We have not entirely refactored out our static delays as some of the events we wait for are outside the scope of elements that fall entirely within Studio's GUI.
-
Fix replace shortcut for text editor on macOS
The shortcut to open the replace dialog in Studio on macOS was
CTRL+R
, but it should beCMD+R
. This has now been fixed. -
Toggling infer no longer toggles explanations
When we run a query, we automatically include
TypeDBOptions
given the state of the toolbar. Currently, we derive the value ofexplain
forTypeDBOptions
frominfer
. We should derive it fromexplain
. -
Provide window context for error windows
We have fixed a bug where error windows were not provided window contexts and crashed before being able to show the error.
-
Fix WindowContext not reflecting changes to window size
We fixed a bug in
WindowContext
where resizing the underlying window was not reflected when getting its values (i.e. height, width, x and y). This fixes a bug where certain actions such as mouse hovering didn't render tooltips because of windowContext reporting the incorrect height and width.
Code Refactors
-
Preferences design changes
We've made adjustments to the behaviour of the preferences dialog after some internal feedback. End users should notice a more pleasant UI/UX. Contributors and developers should notice little difference other than working examples of a multiline text input within a form to base future development off of.
-
Improve preference dialog canonicalness
We have improved the code providing the preferences dialog so that it is easier to understand and maintain in the future. The end user should experience no impact. Contributors and developers should have an easier time reading, understanding, maintaining and extending and interacting with the preferences dialog in the future.
-
Use icons by purpose rather than shape, use consistent casing in enums
We address icons by their purpose rather than by their shape. This leads to a more ergonomic development story where the icon is named by how we use it. For example, the icon for exporting a schema is now
Icon.Purpose.EXPORT
rather thanIcon.Code.ARROW_UP_RIGHT_FROM_SQUARE
.Additionally, we want to have consistent casing for enum members.
-
Refactor integration test utilities and improve stability
We have split a utilities object that was overloaded into a common folder that contains better named objects with a more rational division of responsibilities. Developers and contributors will have an easier time discerning the purpose of functions and understanding their function within the structure of the overall test suite. The test suite should also be more stable. End users of Studio should notice no change except for increased stability.
-
Migrate and stabilise Studio test suite
The Studio tests that required an instance of TypeDB have been migrated to using
typedb_kt_test
, which usetypedb-runner
to provide TypeDB to the tests rather thantypedb-extractor
. This migration has provided stability, increased hermeticity and the opportunity to test Studio's interactions with cluster in the future.
Other Improvements
-
Guard access to TextLayoutResult.getCursorRect from IndexOutOfBounds that could happen in concurrent modification events
-
Rename SchemaService.hasRunningTx to hasRunningCommand
-
Correct type page edit button titles
-
Improve validation logic of type dialogs
-
Fixed boolean logic of Toolbar.hasRunningCommand property
-
Update tooltip description for type editing functionalities
-
Make sure to update TypeState's copy of concept type when refreshing type states
-
Publish status of schema exceptions when modifying schema types
-
Make sure to close all type pages when closing schema service
-
Improved the formatting of error message to have line breaks
-
Fixed the tenses in the names of 'owns', 'plays', and 'relates' properties
-
Fixed overridable related role type list in relation TypePage
-
Allow changing overridden types of owns, plays, and relates
-
Allow undefining owned attribute types
-
Allow undefining played role types
-
Handle exceptions properly when running readTx in SchemaService
-
SchemaManager now tracks all running read tx, and TypePage prohibits actions when there's a running tx
-
Indicate when a Type is abstract in label details
-
Refactor TypeState.isAbstract to be recorded from Type field rather than remote method
-
Add column for abstract flag in attribute and role type tables
-
Hitting enter on relates role type input text submits the entry
-
Add menu items to visit owner types of attribute owner types table
-
Show 'extended type' in which attribute/role types are inherited from, in owns/plays/relates tables
-
Reorder and rename relates role type context menu items
-
Add context menu items to visit types in relates role types table
-
Add context menu items to visit types associated to played role type properties
-
Update TypeBrowser content after schem write query runs
-
Add context menu items to visit types associated to owned attribute type properties
-
Fixed Navigator coroutines by constructing an independent CoroutineScope per TypePage
-
Allow closing database by unselecting from dropdown
-
Allow clearing selected value of a dropdown
-
Allow changing the overridden type of a role type
-
Implement context menus in tables, and replace action buttons in TypePage tables with context menu
-
Temporarily print stack trace when failing to load type constraints to debug rare bug
-
When relation type has no role type, the root role type is no longer displayed
-
When type changes fail to commit, type pages now refresh
-
Improved attribute/role type inheritance logic and owns/plays definition
-
Allow defining thing type playing role types
-
Allow defining relation type relating role types
-
Ensure all write operations on SchemaManager handle their exceptions and notifications
-
Allow defining thing type owning attribute types
-
**Fixed logic for loading supertype to alwa...
TypeDB Studio 2.11.0
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
See the compatibility table at our Studio documentation for which versions of Studio are compatible with which versions of TypeDB.
New Features
- Parallelise Navigator expansion logic, and update content in real-time
Bugs Fixed
Code Refactors
-
Renamed //view to //framework
-
Introduced a new //module package to move some //view sub-packages to
-
Moved Studio out of //view to root
Other Improvements
-
Rename "linux-java-binary" distribution to just "linux"
-
Update license headers to 2022 where necessary
-
Update package structure documentation
Please refer to full release notes of 2.10.0-alpha to see the changes in 2.10.0.
TypeDB Studio 2.10.0-alpha-10
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
- 2.10.0 and above
New Features
-
Expand vertices on hover/focus, and wrap content by logical block
Vertices will now expand on hover/focus. In the case of hover, this replaces the old "fade" effect.
When the content of the vertex overflows the base size, we expand the vertex significantly more, inflating it so it can show much more content - e.g: the full label of a relation, or the full value of an attribute. (Exceptionally long values may still be truncated, but the full value is retrievable in the Preview pane.)
Also, vertex content is now wrapped by logical block. So, for instance, type labels will break onto the next line at the positions of hyphens, rather than whenever they overflow the vertex bounds.
-
Autoscale Graph viewport, except if manually scaled
Bugs Fixed
-
Make the window icon Vaticle Bot
We set Vaticle Bot as the application window icon.
-
Fix "jittering" when rendering vertices, edges and text
Previously, text was rendered in a separate "layer" to shapes, meaning that to render the graph we needed 2 Canvases and 2 other "layers". We've significantly cleaned up the
GraphArea
implementation, by now drawing all Graph text (and shapes) onto a single Canvas. As a result, this has eliminated "jitter" where shapes and their labels would frequently go out of sync. -
Replace "Replace" shortcut to
Ctrl+H
on Windows and LinuxWe've set the "Replace" shortcut to
Ctrl+H
on Windows and Linux. Previously, it wasCtrl+R
which is non-standard.
Code Refactors
-
Concept Preview architecture refactor
We refactored the Graph Visualiser's Concept Preview dialog, introducing a Concept preview library in the process.
-
Rename BrowserGroup, NotificationGroup, and PageGroup, to Browsers, Notifications, and Pages
-
Move Page into PageGroup
-
Move PageArea and NotificationArea into //view/material
-
Update package structure documentation
-
Merged and dissolved //view/concept into //view/material
-
Refined package name build definitions of //view/editor/highlighter
-
Update package structure documentation
-
Move //view/highlighter into //view/editor
-
Encapsulate syntax highlighting into TextEditor.State, decoupling it from //view/output
-
Minor method refactorings
-
Moved tryRenameFile() and trySaveFileTo() into FileState
-
Moved tryMoveDirectory() into DirectoryState
-
Moved tryRenameDirectory() into DirectoryState
-
Moved tryCreateFile() and tryCreateDirectory() into DirectoryState
-
Rename Item to Path in //state/project
-
Update package structure documentation
-
Optimised imports
-
Rename GlobalState to StudioState, and rename leftover names of Resource to Pageable
-
Renamed File to FileState, Directory to DirectoryState, and ProjectItem to PathState
-
Renamed Resource to Pageable, ResourceManager to PageManager, and //state/resource to //state/page
-
Update package structure documentation
-
Remove methods in Resource that are not generically needed
-
Move RunnerManager into //state/connection next to QueryRunner
-
Refactor logic to open and run file into File class as opposed to ResourceManager
-
Simplified ResourceManager next and previous logic
-
Refactor logic for opening and activating Resources
-
Simplified File/Directory constructors by minimising dependencies injected
-
Encapsulate file & directory renaming, saving, moving, and deleting initiation into File/Directory classes
-
Split 'delete' context menu item to a separate context menu category, and refactor ProjectDialog properties
-
Moved dialog composable invocations into their respective domains
-
Refactor File renaming, saving, and moving logic, to encapsulate canonical domain logic into File class
-
ConfirmationManager should always close on confirm, and SafeFile dialog should run on AWT on separate asynchronously
-
Extract border definition out of Table library, and rename showHeaders argument to showHeader
-
Rename FixedScheduleRunner to BackgroundTask
-
Move FixedScheduleRunner to view.graph
Other Improvements
-
Bump version to 2.10.0-alpha-10
-
Hide graph text longer during 'explosion', for performance
Please refer to full release notes of 2.10.0-alpha to see the changes in 2.10.0.
TypeDB Studio 2.10.0-alpha-9
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
- 2.10.0 and above
New Features
- Add button to copy text in notification box
Bugs Fixed
- Fixed left/right scroll navigation buttons horizontal tabs
- Make notification area scrollable when list notification messages overflow screen
- Increase contrast of warning background
- Restrict graph visualiser output only for match queries
Code Refactors
- Refactor RunOutputGroup consumeResponse() logic for clarity
Other Improvements
- Close server dialog when connection attempt is successful
- Ignore .git folder in project directory, and lay down scaffolding for preference manager
Please refer to full release notes of 2.10.0-alpha to see the changes in 2.10.0.
TypeDB Studio 2.10.0-alpha-8
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
- 2.10.0 and above
Bugs Fixed
- Fixed the bug that caused TextEditor to crash when deleting content longer than screen size
Other Improvements
- Improved the layout algorithm of the graph visualiser to minimise vertices and edges crossing over each other in knots
Please refer to full release notes of 2.10.0-alpha to see the changes in 2.10.0.
TypeDB Studio 2.10.0-alpha-7
Distribution
TypeDB Studio is available for Linux, Mac and Windows (download binaries below).
For Mac, TypeDB Studio is also available through Homebrew:
brew tap vaticle/tap
brew install --cask vaticle/tap/typedb-studio
TypeDB Server Compatible Versions
- 2.10.0 and above
Important: For clarity, TypeDB Studio's project data directories have been renamed from .tdbs
to .typedb-studio
. If you had unsaved files, you can recover them from .tdbs
. Feel free to delete .tdbs
after. On MacOS and Linux, we've also changed the app data directory, which is now ~/.typedb-studio
. (On Windows, this remains unchanged at %AppData%/TypeDB Studio
.) This is where the logs and global config are stored.
Please note: If you previously installed 2.10.0-alpha on Windows, you'll need to uninstall it first in order to upgrade. This will continue to be the case until the base version moves up from "2.10.0"; the executable's version tag doesn't contain the alpha number.
New Features
Bugs Fixed
-
Remove all blocking operations in Coroutines of QueryRunner and RunOutputGroup
-
Optimise non-blocking queue polling in QueryRunner and RunOutputGroup
-
Make text input placeholder more obvious that it's a placeholder
Code Refactors
Other Improvements
-
Move app data directory for Mac and Linux to user home dir
-
Replace all state CoroutineScope EmptyCoroutineContext with Dispatchers.Default
Please refer to full release notes of 2.10.0-alpha to see the changes in 2.10.0.