February Release 2019 🎉
We are close to leaving the beta phase and with that are also approaching a more regular release schedule. This means we are going to have monthly release notes. They will pop up only once and you can easily dismiss them by pressing [ESC]. If you want to look up the release notes later you can open them through the command palette [F1]. Simply search for 'Release Notes'.
So here are the new & noteworthy things that we have been hard at work at this time.
You can now navigate to GitHub directly from the editor. The GitHub URL of any editor position or selection can be accessed with a right-click, and used for example in GitHub issues or Pull Request comments to reference interesting code locations.
In addition to live sharing a running Gitpod workspace, you can now take a snapshot. Snapshots capture the current state of a workspace session including the UI layout and the file changes. Anyone who has a snapshot link can create a fresh workspace based on that.
This is super handy for providing reproducibles in GitHub issues and StackOverflow posts. They are also great to prepare trainigs, tutorials, or just to showcase stuff you have thrown together.
The possibilities to fine-tune the developer experience when using Gitpod on your repository have been improved. Here are the features you can define in your
You can now specify multiple tasks. Each task will have its own terminal view on start. You can even specify where those terminals whould be opened. The following config, for instance, will make sure that two terminals are opened next to each other.
tasks: - command: echo 'left' - command: echo 'right' openMode: split-right
In addition we have introduced multiple lifecycle phases for the tasks, such as init and before. The main purpose is to avoid reruning unnecessary commands such as full builds, when restarting workspaces or opening snapshots.
Check the table below for an overview of the different starting scenarios.
|Fresh Workspace|| |
|Restart Workspace|| |
You can now specify the default behavior on port detection. By default users get a notification when starting a server, asking whether they want to open a web view or an external browser.
This behavior can now be pre-configured so users are not bothered with annoying notifications. Here is an example where we configure port
8080 to automatically open in a web preview pane:
ports: - port: 8080 onOpen: open-preview
Check out the docs to learn more about pre-configuring things in Gitpod.
Gitpod now understands YAML syntax and uses json schema specifications to validate and guide developers. While this works for any YAML files it comes in especially handy when editing
The CLI for Gitpod has learned new tricks. Check out all the cool things you can do with it by typing
Here are the new commands we added:
To get the best experience with Gitpod, you should configure your repository to have the right tools, run the right commands on start, etc. This information is stored in a
.gitpod.yml file sitting in your repository.
gp init command walks you through the basic setup and generates a
.gitpod.yml and if desired a corresponding
gitpod /workspace/my-repo $ gp init Use the arrow keys to navigate: ↓ ↑ → ← ? Workspace Docker image: ▸ default custom image docker file
More information about writing
.gitpod.yml configurations can be found in the docs.
One of the things you do in a
.gitpod.yml is declaring the exposed ports. Gitpod maps them to a specific subdomain in order to make them accessible. For instance if you have a dev server running on
gp url command gives you the external url for that service.
Here is an example:
gitpod /workspace/release-notes $ gp url 3000 https://3000-b33f605e-b32a-4e44-ae5a-acad9641de0a.ws-eu0.gitpod.io/
gp url can also give you the URL of the workspace itself:
gitpod /workspace/release-notes $ gp url https://b33f605e-b32a-4e44-ae5a-acad9641de0a.ws-eu0.gitpod.io/
gp preview is similar to
gp open, except that it does not open a file in the editor but a URL in a preview pane on the right.
This is especially handy together with
gp url if you want to open a specific path from a script.
Here's an example:
gp preview $(gp url 3000)my/special/path.html
Improved Docker Performance
In addition to the
.gitpod.yml you can provide a
Dockerfile which is automatically picked up by Gitpod. See this blog post for more information on setting up a Dockerfile for your project.
For example, here is a Dockerfile that allows developing native UI applications in Go on Gitpod:
FROM gitpod/workspace-full-vnc RUN apt-get update \ && apt-get install -y libgtk-3-dev
Since we launched this feature, the performance and logging for docker builds have also been improved significantly.
As we continuously improve and expand Gitpod, there are times when things inevitably don't go as planned, occasionally causing downtime. If you're ever curious about the status of gitpod.io, or you'd like to follow how we resolve an incident, we made status.gitpod.io just for you.
In addition to Node.js one can now also launch and debug Java applications directly from within the editor. Code lense actions on
main() methods will automatically use the right classpath from the current project settings (based on maven, gradle or eclipse classpath information).
Launch configs are stored in a VS Code compatible
The new improved XML support not only does syntax highlighting for XML and XSD but also uses associated schemas to provide diagnostics, content assist and hover information.
Previews can now easily be opened by clicking on the top right icon () on any previewable files, such as Markdown, HTML and SVG files.
The inverse is supported, too. I.e. clicking the file icon on the top right of a preview will open the corresponding editor on the left. For Markdown even scrolling is synced between the two views.
In addition to Markdown, Gitpod now also supports previewing AsciiDoc as you type.
Many Bugfixes, small features and other improvements
These are just the most noteworthy features we have been working on. For a more detailed list of bugfixes and enhancemenst see all the issues we've closed: