Skip to content

Commit 1d4fe7a

Browse files
authored
Release 0.27.0 (#1794)
## Checklist - [ ] I have added [tests](https://www.cursorless.org/docs/contributing/test-case-recorder/) - [x] Add link to josh videos - [x] Highlight some issues form shortlist, and link to it - [x] Highlight some issues from longlist, and link to it (esp cursorless everywhere stuff; maybe draw from what's next stuff on 2022 summary) - [x] Add images - [ ] Write some destination docs? - [ ] Write docs for other things I had to handwave? - [ ] Record scope visualizer video? - [ ] I have updated the [docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and [cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet) - [ ] I have not broken the cheatsheet
1 parent a50d8ad commit 1d4fe7a

File tree

6 files changed

+127
-1
lines changed

6 files changed

+127
-1
lines changed

docs/user/release-notes/0.27.0.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
version: "0.27.0"
3+
releaseDate: "2023-08-16"
4+
---
5+
6+
# Release Notes for 0.27.0
7+
8+
## Preamble
9+
10+
We've realized that the biggest (only?) drawback of continuous delivery is a deficit of 🙌🎉🎸 around releases. So we're going to start writing "release notes" to point out things you already have, but might not have noticed. And then hopefully you'll realise how busy we've been and [sponsor the project](https://github.com/sponsors/pokey) if you can afford it so we can keep Cursorless free for everyone while still shipping truckloads of 🙌 😇.
11+
12+
Given we don't actually have "releases", we're arbitrarily considering everything merged since the start of 2023 to be part of this "release", as we last wrote a big announcement message at the start of the year summarizing [our work in 2022](./2022-year-in-review.md). Expect the next "release" to be sooner than that.
13+
14+
## The subject at hand
15+
16+
Since the start of 2023, we've merged [289 PRs from 9 authors](https://github.com/cursorless-dev/cursorless/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E%3D2023-01-01+sort%3Aupdated-asc) (including a whopping [59](https://github.com/cursorless-dev/cursorless/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E%3D2023-01-01+sort%3Aupdated-asc+author%3AAndreasArvidsson) from [@AndreasArvidsson](https://github.com/sponsors/AndreasArvidsson)!), so there's a lot of ground to cover 😅
17+
18+
But here are some highlights:
19+
20+
## 🚀 Features
21+
22+
- Added full scope support for the Talon language ([#1555](https://github.com/cursorless-dev/cursorless/pull/1555)), so you can `"change name"`, `"clone command"`, `"clear inside command"`, and `"copy condition"` in `.talon` files to your heart's content. Note that Talon is our first language implemented entirely using next-gen scopes, so the [scope visualizer](../scope-visualizer.md), next-gen inference engine, and other next-gen features work great here (see below for more on what all that means).
23+
- New scopes!
24+
- `"branch"` ([#1149](https://github.com/cursorless-dev/cursorless/pull/1149))
25+
- `"instance"` ([video 🎬](https://youtu.be/rqWmwcfZ_sw)) ([#1497](https://github.com/cursorless-dev/cursorless/pull/1497))
26+
- `"sentence"` ([video 🎬](https://youtu.be/rdLH2GKJirE)) ([#1595](https://github.com/cursorless-dev/cursorless/pull/1595))
27+
- Added [the scope visualizer](../scope-visualizer.md) ([#1653](https://github.com/cursorless-dev/cursorless/pull/1653)) to let you visualize scopes live in your editor. Video to follow; stay tuned 😎. But here's a screenshot ![Scope visualizer](../images/visualize-funk.png)
28+
- A next-gen inference engine that enables a much more powerful grammar, allowing you to do things like individually targeting a sequence of scopes, eg `"every line air past bat"`. To learn more, see the initial [#1462](https://github.com/cursorless-dev/cursorless/pull/1462), and then the follow-up [#1463](https://github.com/cursorless-dev/cursorless/pull/1463) if you're addicted to 🤯. Note that this grammar only works for our next-gen scopes, which include most generic scopes (`"line"`, `"token"`, `"word"`, `"character"`, `"block"`), as well as some language-specific scopes. We still have a lot of language-specific scopes to upgrade, as the infrastructure to do so is still quite new. Stay tuned
29+
- [Stable hats](../hatAssignment.md) ([#1252](https://github.com/cursorless-dev/cursorless/pull/1252)) keep hats from moving around so much while you edit. This change is something you may or may not have consciously noticed, but if you spontaneously experienced a deep feeling of oneness and calm at some point in the past six months, the newly meditative hats might have been the cause 🎩🧘
30+
- Improved support for very large hats. A trend among users has been to slightly increase their line height (eg 1.6) and then use a very large hat size (eg 70) to make the hats more visible. This works great, but adjacent hats would overlap. Now, we automatically detect clashing hats and stop them from growing horizontally if they'd overlap ([#1687](https://github.com/cursorless-dev/cursorless/pull/1687)). @pokey is now running with a line height of 1.6 and a hat size of 70, after getting serious hat-size envy during some user screenshares on discord 👒.![Big hats](big-hats.png) If you want to join the big hat revolution, say `"show settings phrase line height"` to mess with your line height, then `"cursorless settings"` to mess with your hat size
31+
- Lots of improvements to our Go language support (thanks [@josharian](https://github.com/josharian)!)
32+
- Expanded our [Talon-side custom API](../customization.md#public-talon-actions) to
33+
- allow [snippet wrapping / insertion](../customization.md#snippet-actions) ([#1329](https://github.com/cursorless-dev/cursorless/pull/1329)), used eg for [Cursorless mathfly 🎬](https://youtu.be/v0j2_W97_s0), and
34+
- include actions such as `"bring"` ([#1226](https://github.com/cursorless-dev/cursorless/pull/1226)).
35+
- `"snippet funk"` now behaves differently if you're in a class vs at module level ([#1487](https://github.com/cursorless-dev/cursorless/pull/1487)). This feature is almost certainly not worth calling out in the release notes, but @pokey was really excited about it, so let's not spoil his fun. More broadly, this feature enables you to have different snippets inserted depending whether you're in a particular Cursorless scope.
36+
37+
## 🐛 Bug fixes
38+
39+
We fixed [dozens of bugs](https://github.com/cursorless-dev/cursorless/issues?q=is%3Aissue+is%3Aclosed+closed%3A%3E%3D2023-01-01+reason%3Acompleted+sort%3Aupdated-asc+label%3Abug); probably easiest to look at the list.
40+
41+
## 📜 Documentation
42+
43+
- Added a version of the cheatsheet hosted [on our website](https://www.cursorless.org/cheatsheet) so you can show your friends how cool Cursorless is without having to send them a PDF. Note that this version uses the default spoken forms, rather than the ones you've customized.
44+
- [@josharian](https://www.youtube.com/@josharian) has made a fantastic series of YouTube videos called [Cursorless by example](https://www.youtube.com/watch?v=2hPwfBCtXws&list=PLbN8ceamGu2c6JrNf83EWyP6K5K77MzVZ). Even Cursorless pros will learn something!
45+
- [Lots of other docs improvements](https://github.com/cursorless-dev/cursorless/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E%3D2023-01-01+sort%3Aupdated-asc+label%3Adocumentation+)
46+
47+
## 🤓 Internal improvements
48+
49+
In addition all the features we've shipped this year, we have made significant improvements to our core infrastructure.
50+
51+
Here are some highlights:
52+
53+
- Abstracted away all references to VSCode's apis, which will enable us to launch Cursorless in other IDEs, such as JetBrains, emacs, etc, as well as integrate with [Rango](https://github.com/david-tejada/rango/), and even work globally using OCR / accessibility APIs to place hats anywhere on the screen. Stay tuned
54+
- Added tests for our spoken forms ([#1637](https://github.com/cursorless-dev/cursorless/pull/1637)), which means we now have full end-to-end coverage all the way from spoken form to action to editor state for 2,757 different commands (and counting!), so you can be sure if a command works today, it will work tomorrow
55+
- Switched to a pnpm monorepo ([#1281](https://github.com/cursorless-dev/cursorless/pull/1281)) to allow us to share code / source of truth between Cursorless VSCode, Cursorless for other IDEs, Cursorless on the web, Cursorless docs, etc. See [the video 🎬](https://youtu.be/Od7BZHc7w6c) to learn more. Who knows, you might even switch your project to a pnpm monorepo after watching
56+
- Switch to [pure DI](https://blog.ploeh.dk/2014/06/10/pure-di/) to make it easier to test and reason about our code, and to make it easier to support other IDEs
57+
- Built a new way to represent our language-specific (tree-sitter) scopes that makes them vastly more powerful, enabling features like the scope visualizer, next-gen grammar, etc ([#629](https://github.com/cursorless-dev/cursorless/pull/629))
58+
- Crystallized our notion of "destinations", a concept that unifes "bring air **to bat**", "paste **after funk drum**", "snip funk **before this**", "**pour line**", and "**drink item**" ([#1605](https://github.com/cursorless-dev/cursorless/pull/1605)). This change will enable functionality like `"bring type air to bat"` when `bat` doesn't yet have a type ([#1631](https://github.com/cursorless-dev/cursorless/issues/1631)), and many other improvements. We'll be updating the docs to reflect this new understanding shortly.
59+
- Built a utility that can automatically generate the spoken form that was used to issue a command ([#1671](https://github.com/cursorless-dev/cursorless/pull/1671)). This function will enable us to automatically customize the docs using your personal spoken forms, as well as allow you to see what spoken form you would use to issue a command from one of [@pokey's videos 🎬](https://www.youtube.com/@PokeyRuleJams), and allow us to create interactive tutorials running in VSCode that will use your custom spoken forms.
60+
61+
## 📈 What's next?
62+
63+
### Short term
64+
65+
Tough to pick favorites, but here are three highlights from our [short-term roadmap](https://github.com/cursorless-dev/cursorless/milestone/10):
66+
67+
- A VSCode sidebar that shows you which scopes are present in your current file, updated in real-time. Combined with the [scope visualizer](../scope-visualizer.md), we hope this will be an antidote to the Cursorless cheatsheet's "what on Earth are all these scopes and are any of them relevant to me?" problem. Here's a sneak preview (🤫): ![cursorless sidebar](sidebar-sneak-preview.png) In case you don't recognize some of those scope types, that's because it will show your [custom spoken forms](../customization.md), and mine are probably different from yours!
68+
- Migrate all scopes for every language to next-gen scopes, enabling next-gen inference (eg `"every funk air past bat"`), scope visualizer, tree view, etc. This is an area where we would love contributions from our more adventurous users. We've built some powerful tooling here so the DX is 🔥; you're going to have a blast if you're into hot-reloading, beautifully rendered syntax trees. Come find us on Slack and Discord if you're interested
69+
- A major docs restructure to make it easier to find what you're looking for and understand how it all fits together. The new docs will include many more examples, including examples automatically generated from our test cases, which includes basically everything you can possibly do with Cursorless (did we mention we have >2.5k full end-to-end tests? Not like we're bragging or anything 🙄 💅)
70+
71+
### Medium term
72+
73+
Here are a few highlights from our [medium-term roadmap](https://github.com/cursorless-dev/cursorless/milestone/8):
74+
75+
- Cursorless on vscode.dev / other VSCode web clients ([#1023](https://github.com/cursorless-dev/cursorless/issues/1023))
76+
- Interactive tutorials running in VSCode ([#934](https://github.com/cursorless-dev/cursorless/issues/934))
77+
- Cursorless for other IDEs, such as JetBrains, emacs, etc
78+
- A vastly expanded Talon-side API to enable much more powerful custom grammars ([#494](https://github.com/cursorless-dev/cursorless/issues/494))
79+
- Bookmarking targets to allow more complex commands, even across multiple files ([#46](https://github.com/cursorless-dev/cursorless/issues/46))
80+
- Changes that will enable more fluent chaining, such as modifying the target of a bring in a single phrase ([#414](https://github.com/cursorless-dev/cursorless/issues/414))
81+
- More videos ([#506](https://github.com/cursorless-dev/cursorless/discussions/506))
82+
- And so much more!
83+
84+
We'd like to end with a massive thank you to [our sponsors 🎉](https://github.com/sponsors/pokey), without whom Cursorless development would not be possible!
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
slug: 2022-year-in-review
3+
---
4+
5+
# 2022 Year in Review
6+
7+
Wow, 2022 was a big year for Cursorless! In total, we merged [315 PRs](https://github.com/cursorless-dev/cursorless/pulls?q=merged%3A2022-01-01..2022-12-31+sort%3Aupdated-asc) 🙌. Here are a few highlights:
8+
9+
- New programming languages (Scala, Markdown, Ruby, Xml, Php, Css, Rust, LaTeX)
10+
- Created the docs website
11+
- HTML cheatsheet
12+
- New scope types ("paint", "link", "callee", "short paint")
13+
- New modifiers ("head funk", "its", "previous funk", "next token", "three states", "first arg")
14+
- Continuous delivery
15+
- Hundreds of bug fixes
16+
- Advanced video recorder / viewer
17+
- Numerous videos, including a new tutorial
18+
- Snippet insertion / automatic snippet generation
19+
- Fully compositional modifiers (eg "first char second word air", "every line funk", etc)
20+
- Experimental keyboard interface
21+
- Jupyter notebook support
22+
23+
Here's a quick update on where we're focusing our efforts with Cursorless right now:
24+
25+
- Most development effort right now is going towards a core rewrite to enable #cursorless-everywhere. Cursorless is becoming a [language server](https://microsoft.github.io/language-server-protocol/), which is a big step towards enabling it to run in other IDEs, such as JetBrains, emacs, etc, as well as in other places such as a browser extension, and even globally using OCR / accessibility APIs to place hats anywhere on the screen
26+
- The core rewrite will also enable metadata about Cursorless actions, scope types, etc to be accessible when generating our docs, so that they will always up-to-date, because they share the same source of truth as the Cursorless code base itself. This will also entail a major docs restructure to make it easier to find what you're looking for and understand how it all fits together. The new docs will include many more examples, including examples automatically generated from our test cases, which includes basically everything you can possibly do with Cursorless (we have >2.5k full end-to-end tests)
27+
- We're also changing the way that we define our syntactic scopes, such as "funk", "state", etc, so that their behaviour is more consistent and predictable, as well as enabling new scopes, such as using "inside" to refer to Python function bodies
28+
29+
In the near term, we're planning to work on the following:
30+
31+
- [Interactive tutorials that run within your editor](https://github.com/cursorless-dev/cursorless/issues/934)
32+
- [Bookmarking targets to allow more complex commands, even across multiple files](https://github.com/cursorless-dev/cursorless/issues/46)
33+
- [A way to highlight newly released features](https://github.com/cursorless-dev/cursorless/issues/491)
34+
- [A phrase-level undo command in VSCode](https://github.com/cursorless-dev/cursorless/issues/317)
35+
- [Better support for custom user grammars built on top of the Cursorless engine](https://github.com/cursorless-dev/cursorless/issues/494)
36+
- Changes that will enable more fluent chaining, such as [modifying the target of a bring in a single phrase](https://github.com/cursorless-dev/cursorless/issues/414)
37+
- [Videos](https://github.com/cursorless-dev/cursorless/discussions/506)!
38+
39+
And that's just the beginning! Have a look at the [what's next](https://github.com/cursorless-dev/cursorless/wiki/What's-next) document; some of it has already been implemented, but there is still a long way to go

docs/user/release-notes/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Release notes
2+
3+
Here we gather "release notes" with new Cursorless features, bug fixes, and improvements. Note that Cursorless is on continuous delivery, so these "releases" are just a way to highlight features that you already have, but might not have noticed 😊.

docs/user/release-notes/big-hats.png

130 KB
Loading
Loading

packages/cursorless-vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"description": "Tests"
2121
}
2222
],
23-
"version": "0.26.0",
23+
"version": "0.27.0",
2424
"publisher": "pokey",
2525
"license": "MIT",
2626
"repository": {

0 commit comments

Comments
 (0)