A problem with projectional editors is that they can only construct structurally correct programs. While is is of course a Good Thing in principle, it also means that each program must be structurally correct at any time. This has one particular disadvantage: you cannot enter a reference to something that does not yet exist.
For example, if you write the implementation of a function and you notice that you want to call another function (that does not yet exist), you first have to move into the module and create the function (possibly, of course, without the implementation). Only then can you enter the call to that function. This is annoying.
To address this issue, we have now implemented a number of intentions: if you enter something that cannot be bound (i.e. the cell remains red) you can use an intention to create various things, depending on context: local variables, global variables, functions, and arguments, but also component fields or state machine states. This leads to a much more fluent editing experience.
Small change, big effect 🙂