Summary#
Press F5 while editing a page and your app opens at that page, stopping at any breakpoint you have set. The platform starts if it isn't running, your current source is compiled into the app, and the browser lands on the page whose component your cursor is inside — so the loop from "editing this screen" to "looking at this screen" is one key. Ctrl+F5 is the same launch without the debugger.
Signature#
F5 # start debugging: breakpoints armed, then the page opens
Ctrl+F5 # start without debugging: just open the page
Osy#: Launch Page at Cursor # the Ctrl+F5 gesture from the command paletteDescription#
Neither key needs setup: with the editor extension installed (Installing the editor extension) they work in a fresh project with no launch configuration at all. Both run the same launch as Launching your app — starting the local platform if needed, compiling what is on disk — and then open the route of the page you are looking at.
F5 arms your breakpoints first. It waits for them to register before opening the page, so the page opens already stopped at one rather than racing past it. Ctrl+F5 skips all of that and just opens the page.
The page is the one your cursor is inside, not the first in the file. A file often declares several pages, and a cursor is the only thing that says which one you mean.
Not in a page → the home route, and nothing is asked. Editing an entity, a function, a test, or a presentational
component is the ordinary case, and F5 there simply opens the app at /.
A page whose route has {…} in it can't be opened as written, so F5 says which parts it needs — /lists/{id}
needs id — and offers to open the home route instead, or to take the values from you. Cancelling cancels; it does
not quietly open something else.
The cursor is read the moment you press the key, so clicking into another file while the compile runs does not change where you land.
Examples#
# cursor inside a component declaring [Page("/archived")]
F5 → breakpoints armed, then http://your-app.localhost:8168/archived
Ctrl+F5 → http://your-app.localhost:8168/archived
# cursor inside a component declaring [Page("/lists/{id}")] — either key asks
"/lists/{id} needs `id` — it can't be opened as written"
→ Enter values… · Open the root route
# cursor in model/entities.osy — neither key asks anything
http://your-app.localhost:8168/See also#
Launching your app — the same launch from the command line, and its --print-url form.
Installing the editor extension — installing the extension F5 comes from.
Running a local platform — the local platform your app is served by.