VexelRay
Framework docs

Developer guide

This is the place to start for building a desktop application on VexelRay, whether a coding agent writes most of it, you do, or the two of you take turns. Every other document on the stack is linked from here, so if you are looking for something, look in the table below first.

I want to…

I want to… Read
Know what I am signing up for What you are signing up for, below
Install the stack Getting started §1–2: one script, bootstrap.sh
Make a new project and run it Getting started §3–4
Find my way around a generated project Getting started §5
Add a part, a setting, or replace a default Getting started §5, then overview.md for the order parts are built in
Work with a coding agent Building with an LLM
Write code by hand Coding in Vex, or any Java IDE
Build a view the widgets don’t have (a timeline, a map, a board) Building a custom view
Make changes animate instead of jump Making it move
Run something in the background without freezing the window Threading conventions, and the generated README’s Threading, in one paragraph
Drive the app, take screenshots, test it end to end Getting started §7, then the ottermate guide
Look up an ottermate verb The automation reference, or ottermate help
Log, and find the log Getting started §8
Build the executable and an installer Shipping it
Look up a widget or a GUI API Its javadoc: Ctrl+Enter in Vex, or your IDE. The GUI’s design documents are indexed here
Know which repository does what The repositories
Understand how the framework works Overview, then Architecture for the deep version
Tell a gap in the framework from a mistake of mine TODO.md, and what v1 means
Report something missing or wrong Write it in your project’s docs/framework-notes.md, then open an issue
Look back at a finished milestone Looking back at a milestone: the retrospective, in your project’s docs/retrospective.md

What you are signing up for

The way through

  Step Where
1 Install the tools and build the stack Getting started §1–2
2 Generate a project from the template, and run it Getting started §3–4
3 Learn your way around what was generated Getting started §5
4 Turn it into your application:  
  with a coding agent Building with an LLM
  by hand, in Vex Coding in Vex
  when it needs a view of its own Building a custom view and Making it move
5 Check it the way a person would, with ottermate Getting started §7, and the ottermate guide
6 At the end of each milestone, read it back and write down what it showed Looking back at a milestone
7 Build the executable and give people a one-line installer Shipping it

Steps 4 to 6 repeat once per milestone. Most people do step 4 both ways: an agent for the large, well-described changes, and an editor for reading what it wrote and for the small fixes that are quicker to make than to explain.

What the template gives you

The template, vexel-desktop, does not generate an empty window. It generates a small but complete text editor: tabs, a file navigator, Markdown in colour, a question before closing with unsaved work, and a session that comes back the next time. An editor is the smallest real application that reaches every part of the framework, so the project starts out showing you how each part is done. You keep its shape and replace what it does.

Vex, Calculator, MainFrame and Scheduler all started as this template. Their source is the best guide to what a generated project grows into:

Application Read it for
text-editor-vexel-demo Grammars and highlighting off the GUI thread, the OS file dialogs, a second mode of the same panel
calculator-vexel-demo A computation engine behind a small window, and plots drawn on the canvas
mainframe A native process (ConPTY) behind the window, and workspaces
vexelray-scheduler (not yet published) A view of its own (lanes of bars placed on a timeline), and motion: nothing on screen changes in one frame

Where to ask

Something did not build, a step here was wrong, or the framework is missing something you needed: open an issue. Your project’s docs/framework-notes.md is where you write down each gap as you find it, so when you report one you will already have written it up.