Fixes
Fixes and improvements
This week we've been focusing on larger upcoming functionality, so we only have minor fixes and improvements.
- Descript shared URLs are now embedded automatically in issue descriptions and comments.
- Issue editing actions in the fast issue editor now use the same keyboard shortcuts than in the rest of the application. To use the keyboard shortcuts, the title or description fields can't be focused.
- Issue editing actions in the issue view will now open pop-overs attached to the appropriate properties in the side pane.
- Opening issue peek using a quick press on has been fixed to work more reliably
- When pressing "Add label" in the issue view will now bring up a popover that lets you toggle any label on and off.
- When you have a sub-action editor open in the issue view, any issue editing actions triggered via the action menu or keyboard will target that sub-action unless you're hovering over another sub-action
- Issue peek will now disappear when the fast issue editor is opened
- Fixes a regression that could cause startup to be slow, especially on Safari and Firefox
- You can now delete an import up to 7 days after it was created.
- Fixed several bugs with the GitHub importer
- Fixed a bug with our Clubhouse importer
- Inserting a reference to an issue inside a description or a comment won't remove the rest of the sentence after it anymore
- It is now easier to select the workspace where you want an OAuth application to be installed
- Labels with the "%" character, like "50%", will now open correct URLs with proper encoding
- When filtering issues, "By creator" filter will now group all suspended users as a single entry
- Fixed some entries showing twice in the context menu
- The background of modal dialogs are once again tinted darker on macOS
Zendesk integration
Zendesk integration
Working with your customers is key to high-performing product teams. As companies scale, much of the customer requests are piped into customer success tools such as Zendesk. This is why we're excited to add Zendesk to Linear's growing set of integrations.
Your customer success teams can now quickly file bug reports into Linear from within Zendesk and link feature requests to existing issues. We also added automation which re-opens and updates Zendesk tickets after the issue has been resolved (or canceled), so your customer success team can get back to the customer to update them on the progress. The integration makes it easier for your product team to prioritize their work based on customer needs and build a tighter feedback loop with your customers.
To enable the Zendesk integration, install our app from Zendesk Marketplace and enable the integration in your Linear settings.
Other fixes and improvements
- When creating a new team with a team identifier that was previously used by some other team, you can now choose to delete the identifier
- Issues migrated into Linear via the Migration Assistant will now be labeled with "Migrated" rather than "Imported"
- Images included in the issue description markdown will be properly uploaded to Linear even if they are not a top-level document element (e.g., inside of block quotes)
- We now only hint at changing ordering in views that can be manually ordered
- Added a section highlighting the Migration Assistant in the workspace settings overview page
- Attachments are now shown before PR's in the issue view
- The command menu no longer lets you search for issues but you can open specific ones if you type the issue ID
- Improved communication around in-page find functionality
- Fixed a bug where the "Find in page" input field would be incorrectly aligned
- Creating an issue from a message in Slack will now add an issue attachment which links to the original message
- Draft pull requests that are closed will now show as closed on linked issues
- The status control in the "New issue" modal has been moved to make it easier to find.
- Filters that don't match any issues can now also be multi-selected
- Adds create new action from template to keyboard shortcut help
- Due dates in fast issue creator now correctly account for the user's timezone
- Fixed a bug that was preventing OAuth applications from being created
- Jira issues are now imported in the order of creation
- Fixed a bug where the issue status from default templates would not be applied on new issues
- We now display a nicer error message when trying to remove a user from their last team
- Improvements to the rendering of the workspace toggle when the syncing or offline badge is visible
- Images included in comment body markdown will be properly uploaded to Linear even if they are not a top-level document element (e.g., inside of block quotes)
- We will now import comments on issues you are migrating over from GitHub
Smaller improvements and April 22 outage
April 22nd outage
On this Thursday, April 22nd we experienced a prolonged outage. The outage started at 7:25am UTC and lasted for roughly 3 hours during which time Linear was unavailable completely, or in offline mode which caused change syncing to be delayed.
The outage started due to an automatic vacuum process in one of the key tables in our Postgres database. We were getting close to running out of transaction IDs and Postgres forced an autovacuum on us even though the functionality was disabled for the table. Because we are running a managed Postgres instance on GCP, we weren't able to stop the autovacuum process and were forced to wait for it to complete. Once that issue was resolved, we encountered additional issues when trying to bring services online, due to the large number of clients trying to connect at the same time.
We are still investigating the exact details around this and plan to write a longer and more detailed post mortem once our investigation is ready. If you're interested in learning more, follow our Twitter for updates.
UPDATE: Post-mortem is now available
Smaller product improvements
We love launching big new features, but we also love making smaller quality-of-life improvements. This week we focused on smaller improvements across the application. Here are a few highlights.
Private OAuth applications
You can now restrict your OAuth applications to your own workspace by making them private. This is helpful if you have internal applications which rely on Linear as the data source and you need to support authentication for different users. Many services, like Retool, also support OAuth as an API authentication method out of the box as our implementation follows the standard patterns.
Open issue with ID in Linear command menu
We have changed Linear's command menu (Cmdk) to now support opening a specific issue if you write, or paste, its ID to the menu. It even works with our git branch names so you can copy branch names from your terminal and quickly open the issue in Linear. This new implementation replaces issue search inside the command menu which we decided to remove as it was clunky to use and regular search (/) works better for that use case.
Sub-issue status in issue list
Inspired by a user suggestion on Twitter we replaced a sub-issues icon with the status of sub-issue completion in the sub-issues list. This should make it easier to scan and visualize progress. Thanks @maximmart!
Other fixes and improvements
- Better performance when updating action on a large number of issues
- We added a view option to hide completed issues from previous cycles
- Fixed a few timezone options that didn't work (sorry about that, Indianapolis)
- Board columns now scroll items into view when navigating with keyboard
- Fixed roadmap editing using IME inputs
- Fixed an issue where the new issue modal would open with old data
- Fixed the display of the next billing date in billing settings
- Improved the issue modal when used with on-screen keyboards
- Fixed bug where GitHub automation didn't wait for all the open PRs to be merged until closing the issue
- Fixed a bug that could cause Asana imports to result in an error
- Fixed error when non-admins create a new team and copy properties from an existing team
- Fixed the display of cycles in Inbox
- The Linear bot will now post a comment with a linkback to the URL of the issue linked with a GitHub pull request even if you add the URL in the description
- Fixed a bug that made it impossible to undo deleting an issue
- Added more icons to choose from for Views and Projects
- Added the team name to the title in the Recently Deleted page
- Added a hint on how to enable manual sorting if you try dragging items in non-sortable lists
- Fixed a bug where the status of default templates would not be applied for new issues
Auto-archive cycles and projects & deleting issues
Auto-archive cycles and projects
Last year we announced auto-closing and auto-archiving of issues. Now we are extending the auto-archive feature to projects and cycles.
One of the core principles behind the Linear Method is to "keep a manageable backlog." This applies to issues as well as cycles and projects, and adding sensible automation to help you achieve this lets you focus on the things that really matter.
If a project or cycle has been completed more than X months ago (this time period is configurable) and all the issues inside it have been archived, the project or cycle will also be archived. The feature is automatically enabled for all teams that have auto-archiving for issues set up. If you want to enable it for your team or change auto-archiving settings, navigate to Settings > Team > Workflow.
Deleting issues
We made it possible to delete issues. Sometimes issues are created by mistake, and it makes no sense to keep them in the system. You can now delete them by pressing ⌘⌫ (or ⌦ for Windows and Linux users). Deleted issues will be available in the "Recently deleted" view which you can find through the command menu. Issues are permanently deleted after 14 days.
As part of this change, we removed the option to manually archive issues. We found that most users used the archive as a trash can for issues that they wanted to delete. At the same time, auto-archiving puts older completed issues inside the archive, which meant the archive served two disparate purposes.
We wanted to make the concepts around archiving and deleting issues more straightforward. We think that the archive is something that Linear should manage for you while deleting issues is your own choice.
Fixes and improvements
- Fixed manual ordering in the cycles view
- Fixed a crash when creating an issue in a multi-team view
- Prevented unnecessary scroll bars from images on the Linear Method pages
- We now show an error message when dragging a non-draggable list item
- Fixed a crash when searching in and navigating to an empty list
- An unnecessary scroll bar no longer shows up on estimate settings
- The "No estimate" issue filter can now be activated in the command menu
- The "Reference another issue" action no longer shows in the command menu for unsaved issues
- The default issue template will no longer override drafted issue descriptions when you open the full page issue editor
- Reduced the time it takes to load Linear from scratch by about 25%
- Fix to prevent keyboard focus on hidden elements when in issue view
- Admins can now change a suspended user's username
- The keyboard shortcut to attach files ⌘⇧A when creating an issue or comment can now be triggered in more situations
- We no longer register the new window shortcut CtrlN as a global shortcut in the Windows app
- Fixed the alignment of the status icon when creating a sub-issue
- Added more icons to pick from for Projects and Views
- Updated icons in the contextual menu for projects
Private teams & migration assistant
Private teams
As your company grows, you'll likely need to restrict access to a portion of your issues. For example, one team might be working on something that is supposed to be a surprise to the rest of the company, or the team might be forced to sign NDAs with an integration partner and keep details of their work hidden even from the rest of the company.
Whatever your reason to hide some issues from the rest of the workspace, you can now create private teams and have more fine-grained control over who can join the team.
When you create a private team or make an existing team private, you become the owner of the team. Only the team owner and workspace admins can invite users to private teams, and only active team members can see issues in a private team. To control access, we have a new members section under team settings.
Migration Assistant
A couple of months ago, we launched importers in preview, allowing you to quickly import your issues, labels, projects, epics, and more from Jira, GitHub, Asana, and Clubhouse directly into your Linear workspace. Since then, we have continued to improve the importing experience. You can now customize how you would like to import issues and team members, as well as see a preview of what data will be imported with the new migration assistant.
If you are an admin, visit your workspace's import settings to get started.
Fixes and improvements
- Updated supported browsers. We now target modern browsers to improve Javascript loading performance
- Fixed keyboard shortcut conflict (Ctrln) with new Windows application
- Fixed image loading issues as part of new user onboarding
- Fixes race condition when creating a new team and choosing to copy properties from a team that is subsequently deleted
- Fixed a case where attaching/detaching a parent issue would cause the issue to not be saved
- Fixed layout issues in the emoji picker
- Fixed a rare situation where a custom view preference could crash the client
- Moving issue between teams now correctly resets its status
- Improved styling of radio buttons for dark themes
- Improvements to list rendering performance
- We now clear multi-selection when pressing Tab in a list
- Improved list of notification settings to clarify different options
- Pull requests and external issue attachments are now shown as part of archived issues
- Fixes to issue estimates in custom views
- Jira importer now correctly imports the Jira issue type as a label
- Jira importer now imports correct issue backlinks for imported issues
Startup performance improvements
Startup performance improvements
Speed is a feature. While we try to pay attention to performance when adding new functionality, regressions and unoptimized codepaths do happen. Now and then, we look at critical aspects of the application and refactor, or re-architect portions of our tech stack to become more performant.
This time around, we took a look at startup performance for pre-warmed clients. With pre-warmed, we mean clients that spin up for a subsequent time and thus already have all the workspace data stored in the local database. Pre-warmed startups account for most sessions, making it a great candidate for us to sink our teeth into.
We concentrated our efforts around the following:
- Refactoring and optimizing how we load up data at startup
- Switching from Parcel to Rollup as our build system to improve bundle size
- Lazy loading parts of the application and data that are used infrequently
This resulted in a big improvement in startup performance and memory consumption, especially on Safari and other browsers and our desktop applications. On our own workspace, which has around 4000 issues and hundreds of projects, we saw the following improvements:
Startup time to show active issues
- 59% faster on Safari
- 40-50% faster on other browsers and desktop app
Startup time to show a huge backlog
- 82% faster on Safari
- 60-65% faster on other browsers and desktop app
Memory usage
- 70-80% more efficient across all browsers and desktop apps
Bundle size improvements
We have improved code bundling by targeting only modern browsers, better dead code elimination, and code splitting. We've also made sure to preload code before it's needed. This means we load around 50% less code (30% when compressed). This results in ~10-30% faster page load times from a cold cache, depending on network speed.
Fixes and improvements
- File uploads can now be canceled
- Fixed ability to copy issue URL and ID when the issue is archived
- Fixed a problem where multiple notification emails might have been sent to users
- Added ability to revert to previous versions of issue descriptions. To use it, go to the issue edit screen and choose "Revert issue description" in the command menu.
- When there are no notifications in the inbox, the Notifications drop-down button is no longer visible
- Moving an issue to a different team now adheres to that team's "Active issues are required to belong to a cycle" setting
- Cycles can now be 5 or 7 weeks long
- Whether you create a new template or edit an existing one, you will now be redirected back to the page where you started the template action
- When the search input is focused on small screens, the sidebar is also opened
- API: Fixing a bug with imageUploadFromUrl not working when the source URL contained special characters or a query string
Keyboard shortcuts help
Keyboard shortcuts help
Keyboard shortcuts are frequently used and loved by our power users. They let you control all of the common (and much of the less common) functionality of Linear and make the application a lot faster to use. To get more users using keyboard shortcuts, we've redesigned our keyboard shortcuts help screen and made it searchable. You can press?to bring up the help window, or you can press the Help & Feedback section at the bottom of your sidebar and then select Keyboard shortcuts.
Fixes and improvements
- Months are now abbreviated mo instead of m, which is reserved for minutes
- Linear is now installable as a PWA on desktop Chrome
- Existing labels are now removed when an issue template is applied
- All workspace admins are now able to view and edit OAuth applications
- Fixed the unhelpful error message for invalid callback URLs for OAuth applications
- Fixed a bug with the Asana importer if you are importing issues that belong to multiple Asana projects
- You can now set your team's board view or a custom view as your default view
- Fixed the unsubscribe link for plaintext notification reminder emails
- Fixed editor panel contrast in new issue editor
- Fixed an infrequent crash in list views
- Fixed a crash that could happen when uploading files in issues.
- Fixes a few issues related to multi-select actions
- Small improvements to button styling
Apple M1 & Windows support
Apple M1 & Windows desktop apps
We've updated our desktop applications to support both Apple's latest M1 chips and Windows. Downloading the M1 binary will let you run Linear's macOS desktop application without emulation, making the app run faster. To update your existing macOS application, or to download for Windows, head over to linear.app/download.
Workspace settings overview
We've added a new section to the workspace settings to give you an overview of what features and integrations you've enabled for your workspace. The overview page also contains links to documentation for each of these features and integrations.
Fixes and improvements
- Importing image attachments or adding links to other attachments with the Asana importer
- Improvements to scrollbar styling
- Added filtering by numeric shortcuts to command menu with numbered options (e.g., Open team)
- Board navigation shortcuts will no longer trigger when you are viewing an image
- You can now attach files when editing comments by clicking on the attachment icon rather than only dragging and dropping files
- The drop target for files in the issue creator is now larger
- Fixed a bug causing some issues with linked pull requests not to be viewable
- Fixed a bug which caused Clubhouse imports for projects with a large number of stories to fail
- Fixed the issue creator not closing when the mouse leaves the modal window during selection
- Fixed incorrect grouping when hiding completed issues
- Fixed selecting items by pressing space in the action menu
- Fixed state filter for grouped views
- Fixed Github integration to correctly connect a PR under certain circumstances
New issue creation UI
New issue creation UI
Two weeks ago we introduced a new UI for creating issues as a Linear Preview feature. Since then we have made a whole bunch of improvements and bug fixes and today we enabled the new UI for everyone.
To recap, we wanted to make it faster and more effortless to create issues from anywhere in the app. With the new UI, you stay in the view you are in so that you don't lose context. You can easily create multiple issues by toggling the Create more option. When you do, any issue fields applied such as labels or projects will carry over to the newly created issues. If you need to look something up while creating your issue, you can navigate away from it and the issue will be saved as a draft automatically. We've moved the "New issue" button to the sidebar and made it easier to apply issue templates. We also made it possible to choose which team to assign the issue while editing it.
If you prefer the old UI, use the keyboard shortcut V instead of C to open the issue editor in full screen mode. The new UI has updated keyboard shortcuts that you can take while in the editor:
Ctrl⇧T Set team
Ctrl⇧S Set status
Ctrl⌥⇧P Set priority
Ctrl⇧A Set assignee
Ctrl⇧A Add labels
Ctrl⇧P Add to project
Ctrl⇧P Add to cycle
Ctrl⌥⇧T Apply issue template
Ctrl⇧T Open full view
⌘Enter to save issue
⌘⌥Enter to save then open issue
⌘⇧Enter to save issue then create a new one
Click on ··· to set parent issue or add due date
Fixes and improvements
- The user details page now has grouping, ordering, and view preferences
- Fixed a bug where select menus could scroll away from their correct position
- Links to projects on the roadmap and project pages will now take you directly to the correct team view
- Updated the icon for urgent priority
- Added ability to load Linear Typescript SDK in the JS console when logged in to the app
- Issues created by imports no longer trigger notifications
- Fixed Slack notifications that were displaying formatting characters
- Fixes for SAML authentication when there was an existing user account with the same email
- Added a new notification for when an issue you are assigned to becomes unblocked
- The "Name cycle" action will no longer be the top result when you search for text that doesn't match that action in the command menu
- Embed links will now open in a new tab
- Added a new importer for Asana
- Long issue titles will no longer overflow in issue history
- Enabled grouping for multi-team views
Linear SDK
Linear Typescript SDK
Over the past couple months we have been working on a Javascript/Typescript SDK for our GraphQL API. While GraphQL is getting more and more popular, it's still often easier to pick up a good SDK and not worry about writing queries manually. This is exactly what our SDK does, and it's actually auto-generated from our GraphQL API and offers full type definitions for Typescript. You can also use it with regular Javascript and either in client or server environment. The SDK is open source and available in our GitHub.
We have also updated our developer documentation:
Zapier updates: Comments
We have updated our Zapier integration to include better support for issue comments. With the latest Linear application in Zapier, you'll be able to trigger zaps from newly created comments, and you'll also be able to create comments for issues. We also simplified the payloads for create actions.
Fixes and improvements
- [API] Added new scope,
comments:create
, for adding comments - [API] Comments now include their URL in the API response
- When re-focusing a populated search field in the sidebar, you're immediately taken to the search page again
- Imports with no issues will now show as completed rather than perpetually in progress
- Fixed the bug causing imports to fail with a "User mapping doesn't exist" error
- Pressing Tab now indents the cursor properly inside a code block
- Fixes to applying template assignee and status to issues
- Fixes to issue ordering when moving issues between board columns
- Fixes to conversing text into italic with markdown shortcuts