Script buttons, live mode, macro recorder, #1211, #1214, #1218 merged 2026-10-02: drop their pending notices (#1205, #1212 still open)

ispyisail
2026-10-02 16:17:22 +13:00
parent a525671b21
commit ca8c5f385b
9 changed files with 37 additions and 88 deletions
+3 -3
@@ -157,11 +157,11 @@
**[Connecting an AI assistant](ai_assistants)** — setup for Claude, Copilot, Gemini, Codex, Cursor, LM Studio
**[Script buttons](script_buttons)** — stored scripts with an icon, by hand or by an assistant _(pending)_
**[Script buttons](script_buttons)** — stored scripts with an icon, by hand or by an assistant
**[Live mode](assistant_live_mode)** — an assistant working in the open project while you watch _(pending)_
**[Live mode](assistant_live_mode)** — an assistant working in the open project while you watch
**[Macro recorder](macro_recorder)** — record a task by hand, for an assistant to script _(pending)_
**[Macro recorder](macro_recorder)** — record a task by hand, for an assistant to script
**[Development Roadmap](development_roadmap)**
+5 -7
@@ -278,13 +278,11 @@ It also tells you, in bold, when something is missing:
| *Python est introuvable sur cet ordinateur* | the Python the setup names is not there. On Windows, run the QElectroTech installer again and tick *Python pour l'assistant IA*, or install Python; elsewhere, install Python 3 from your system's packages |
| *Python n'est peut-être pas installé* (Windows) | only the Microsoft Store shortcut answers to `python`, which opens the Store instead of running the server |
## Coming next: buttons, live mode, recordings
## Buttons, live mode, recordings
> **Status: pending.** Described on their own pages, each in open pull
> requests ([#1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219)–[#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225),
> [#1227](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1227),
> [#1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228)).
> None works until they are merged.
Merged on 2 October 2026 ([#1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219)–[#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225),
[#1227](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1227), [#1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228)), so in development builds made since then.
Each has its own page:
- **[Script buttons](script_buttons)**: ask the assistant for a button; it
writes the script, tests it on a copy of a project, and stores it with an
@@ -308,4 +306,4 @@ still use the server's reading tools on a project you upload to it. See
- **[MCP server](mcp_server)**: every tool and setting
- **[JavaScript Scripting](scripting)**: what edits run underneath
- **[Script buttons](script_buttons)**, **[Live mode](assistant_live_mode)**, **[Macro recorder](macro_recorder)**: pending
- **[Script buttons](script_buttons)**, **[Live mode](assistant_live_mode)**, **[Macro recorder](macro_recorder)**: what an assistant can do with buttons, the open project and recordings
+3 -8
@@ -7,7 +7,8 @@ assistant on one screen, QElectroTech on the other, and each thing it does
happens in front of you, in the project you have open — where you can watch
it, refuse it, undo it, or carry on by hand.
> **Status: pending.** Nothing on this page is merged yet:
> **Status: merged** on 2 October 2026. Everything on this page is in
> development builds made since then; it is not in a release yet. The pull requests:
>
> | PR | What it adds | Builds on |
> |---|---|---|
@@ -15,8 +16,7 @@ it, refuse it, undo it, or carry on by hand.
> | [#1223](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1223) | the *Assistant* panel, ask-first, the allowed commands, the screenshot | #1222 |
> | [#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225) | the `qet_live_*` MCP tools | [#1224](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1224) |
>
> Check those PRs before trying any of this against your own build. The
> proposal is
> The proposal is
> [discussion #1226](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions/1226).
Menu and option names are given in French, as QElectroTech shows them until
@@ -89,8 +89,6 @@ there was one.
### The Assistant panel
> **Status: pending** — [PR #1223](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1223).
A panel called **Assistant** opens on the right while live mode is open. It
lists every action, newest first: the time, ✓ or ✗, and its undo step's name.
Hover an entry, or double-click it, for the details: the error, what the
@@ -128,9 +126,6 @@ hand stays yours to undo.
## What the assistant can do
> **Status: pending** — [PR #1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225)
> (and #1223 for the commands and the screenshot).
| Tool | Does | Needs `QET_ENABLE_SCRIPTING=1` |
|---|---|---|
| `qet_live_status` | is QElectroTech there and live mode open; the project and sheet on screen, how many sheets, what is selected, the last undo step; the stored scripts; whether a [macro recording](macro_recorder) is under way | no |
+1 -6
@@ -66,12 +66,7 @@ along its width or height (section 2, with Shift). Drag one of the end handles a
the middle handle disappears, and the end handles work as in section 2. Drag
the end back to make a half arc again and the middle handle returns.
> **Status: pending.** This paragraph describes
> [PR #1211](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1211),
> not yet merged. Until it lands, the middle handle shows in both handle
> modes and covers the handle under it.
The middle handle shows with the **size** handles only. Click the arc again
Since [PR #1211](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1211) (2 October 2026) the middle handle shows with the **size** handles only. Click the arc again
to switch to the rotate and skew handles and it goes away, so the skew handle
at the top of the arc can be grabbed. With the size handles, the resize handle
that would sit under it is hidden: the middle handle already changes that
+1 -9
@@ -93,15 +93,7 @@ A project that has none yet gets the common collection's **Coming arrow** and
**Going arrow**. If the common collection isn't available either, the
submenu is hidden. It is also hidden on a read-only sheet.
> **Status: pending.** The paragraph below describes
> [PR #1218](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1218),
> not yet merged. Until it lands, current builds show the bug it fixes
> ([#1210](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/1210)):
> once you place a Coming arrow, the Going arrow drops out of the submenu
> (and the other way round), and comes back only after closing the project
> without saving.
With #1218 the submenu always lists the standard **Coming arrow** and
Since [PR #1218](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1218) (2 October 2026) the submenu always lists the standard **Coming arrow** and
**Going arrow**, after the report symbols the project already uses, and each
name appears once. Placing one arrow no longer hides the other.
+3 -7
@@ -5,15 +5,15 @@ recording to an AI assistant, which turns it into a general, tested
**[script button](script_buttons)** — "rotate the selected coils half a
turn" rather than "rotate KA1 and KA2".
> **Status: pending.** Nothing on this page is merged yet:
> **Status: merged** on 2 October 2026. Everything on this page is in
> development builds made since then; it is not in a release yet. The pull requests:
>
> | PR | What it adds | Builds on |
> |---|---|---|
> | [#1227](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1227) | recording in QElectroTech: start, stop, the files, the status bar, the request to paste | [#1223](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1223) |
> | [#1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228) | the `qet_recording_*` MCP tools | [#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225) |
>
> Both sit at the end of the [script buttons](script_buttons) series. Check
> the PRs before trying any of this against your own build.
> Both sit at the end of the [script buttons](script_buttons) series.
> **Not the same "macros" as templates.** QElectroTech's
> **[templates](templates)** — reusable blocks of symbols — live in a folder
@@ -42,8 +42,6 @@ QElectroTech answers. So the recording is saved where the assistant's
## Recording
> **Status: pending** — [PR #1227](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1227).
1. Open the project and select what the task starts from (the selection is
recorded too).
2. **Projet > Scripts > Enregistrer une macro** (*Project > Scripts > Record a
@@ -115,8 +113,6 @@ step.
## Turning it into a script
> **Status: pending** — [PR #1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228).
Paste the copied request into the assistant's chat. It names the recording and
asks the assistant to read it with `qet_recording_read`, write a script that
does the same **in general** (on the selected items rather than on those
+10 -15
@@ -244,16 +244,15 @@ from before the setting existed need nothing.
\* Needs `QET_ENABLE_SCRIPTING=1`.
> **Status: pending.** Three more groups of tools are in open pull requests,
> each described on its own page:
>
> | Tools | Page | PR |
> |---|---|---|
> | `qet_script_api`, `qet_script_test`, `qet_script_install`, `qet_script_list`, `qet_script_read`, `qet_script_remove`, `qet_about` | [Script buttons](script_buttons#letting-an-ai-assistant-write-the-script) | [#1224](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1224) |
> | `qet_live_status`, `qet_live_run_script`, `qet_live_run_stored`, `qet_live_command`, `qet_live_show_folio`, `qet_live_undo_last`, `qet_live_screenshot` | [Live mode](assistant_live_mode#what-the-assistant-can-do) | [#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225) |
> | `qet_recording_list`, `qet_recording_read`, `qet_recording_check`, `qet_recording_remove` | [Macro recorder](macro_recorder#turning-it-into-a-script) | [#1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228) |
>
> None of them works until its PR is merged.
Three more groups of tools, merged on 2 October 2026, are described on their
own pages:
| Tools | Page | PR |
|---|---|---|
| `qet_script_api`, `qet_script_test`, `qet_script_install`, `qet_script_list`, `qet_script_read`, `qet_script_remove`, `qet_about` | [Script buttons](script_buttons#letting-an-ai-assistant-write-the-script) | [#1224](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1224) |
| `qet_live_status`, `qet_live_run_script`, `qet_live_run_stored`, `qet_live_command`, `qet_live_show_folio`, `qet_live_undo_last`, `qet_live_screenshot` | [Live mode](assistant_live_mode#what-the-assistant-can-do) | [#1225](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1225) |
| `qet_recording_list`, `qet_recording_read`, `qet_recording_check`, `qet_recording_remove` | [Macro recorder](macro_recorder#turning-it-into-a-script) | [#1228](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1228) |
---
@@ -401,10 +400,6 @@ Across the shipped examples: 3190 conductors, not one with a cable value.
terminal, as long as one of the conductor's two terminals carries only it.
- **A sheet's wire defaults: `set_conductor_default`.**
> **Status: pending.** This item describes
> [PR #1214](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1214),
> not yet merged. It does not work until that lands.
Sets one of the defaults in *Propriétés du folio* (*Sheet properties*).
`onetextperfolio` is the option *activer l'option un texte par potentiel*:
`"true"` draws one wire number per potential on that sheet instead of one
@@ -472,7 +467,7 @@ regression in the thing under test, not a missing switch.
- **[JavaScript Scripting](scripting)** — the `qet.*` engine `qet_edit` and
`qet_query` drive underneath
- **[Script buttons](script_buttons)**, **[Live mode](assistant_live_mode)**,
**[Macro recorder](macro_recorder)** — the pending script, live and recording tools
**[Macro recorder](macro_recorder)** — the script, live and recording tools
- **[The project database](project_database)** — what `qet_query` reads
- **[CLI Reference](cli_reference)** — the export flags `qet_export` wraps
- **[Automating QElectroTech](api_reference)** — the file-format and
+3 -16
@@ -7,10 +7,9 @@ an AI assistant write, test and store it through the
**[MCP server](mcp_server)**. Both end in the same place: a file in your
scripts folder, which QElectroTech turns into a button.
> **Status: pending.** Nothing on this page is merged yet; the series starts
> with [PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219). Each section names
> its own pull request; check it before trying any of this against your own
> build. The whole series:
> **Status: merged** on 2 October 2026. Everything on this page is in
> development builds made since then; it is not in a release yet.
> The pull requests:
>
> | PR | What it adds | Builds on |
> |---|---|---|
@@ -53,8 +52,6 @@ switch.
## The scripts folder
> **Status: pending** — [PR #1220](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1220).
Each script is one `.js` file in the `scripts` folder of your QElectroTech
data folder:
@@ -126,8 +123,6 @@ A file name becomes the script's id: `add-revision-note.js` is
## Running a script
> **Status: pending** — [PR #1220](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1220).
Every stored script is an ordinary command, so you can reach it any of these
ways:
@@ -152,8 +147,6 @@ Below the scripts, the **Projet > Scripts** menu holds:
### One click, one Ctrl+Z
> **Status: pending** — [PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219).
A script run from the editor is **one undo step**, named *Script : <name>*.
A button that adds twenty items is undone with one Ctrl+Z, not twenty. This
also applies to *Exécuter un script…*. A script that changes nothing leaves no
@@ -161,8 +154,6 @@ empty step behind. Headless `--run` keeps one step per call, as before.
### Which sheet the script works on
> **Status: pending** — [PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219).
`qet.currentFolio()` returns the index of the sheet on screen, so a button
acts where you are looking. Headless (`--run`, or an assistant testing a copy)
it returns `0`, the first sheet, so the same script can be tried without a
@@ -172,8 +163,6 @@ window. It returns `-1` if the project has no sheet.
## The script manager
> **Status: pending** — [PR #1221](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1221).
**Projet > Scripts > Gérer les scripts…** (*Manage scripts*) lists your
scripts with their icons on the left, and edits the selected one on the right.
@@ -209,8 +198,6 @@ text editor and an AI assistant can never disagree about what a script is.
## Letting an AI assistant write the script
> **Status: pending** — [PR #1224](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1224).
With the **[MCP server](mcp_server)** set up
(**[Connecting an AI assistant](ai_assistants)**), you can ask: *"make me a
button that puts a Rev A note on the sheet I'm looking at"*. The assistant:
+8 -17
@@ -52,14 +52,11 @@ qelectrotech --run export_after_revision.js "$1"
and runs the chosen script against the *currently open* project. Useful for
one-off macros you don't want to wire into CI.
> **Status: pending.** [PR #1220](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1220)
> moves this entry to **Projet → Scripts → Exécuter un script...**, and adds
> stored scripts with their own button, icon and shortcut — see
> **[Script buttons](script_buttons)**.
> [PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219)
> makes a run from the editor **one undo step**, named *Script : <name>*,
> so one Ctrl+Z undoes the whole script; headless `--run` keeps one step per
> call. Neither is merged yet.
Since 2 October 2026 ([PR #1220](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1220)) this entry is **Projet → Scripts →
Exécuter un script...**, next to stored scripts with their own button, icon and
shortcut — see **[Script buttons](script_buttons)**. A run from the editor is
**one undo step**, named *Script : <name>*, so one Ctrl+Z undoes the whole
script ([PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219)); headless `--run` keeps one step per call.
---
@@ -239,10 +236,6 @@ Since [PR #1098](https://github.com/qelectrotech/qelectrotech-source-mirror/pull
### A sheet's wire defaults
> **Status: pending.** This section describes
> [PR #1214](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1214),
> not yet merged. Nothing here works until that lands.
```js
qet.setConductorDefault(folioIndex, property, value) // -> false if refused
qet.conductorDefault(folioIndex, property) // -> "" if unknown
@@ -287,8 +280,6 @@ already on for the whole process before any headless script runs.
### Which sheet is on screen, and what calls exist
> **Status: pending** — [PR #1219](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1219), not yet merged.
```js
var f = qet.currentFolio() // index of the sheet on screen; 0 headless; -1 if the project has none
qet.apiSignatures() // every call this build offers, with its arguments
@@ -407,8 +398,8 @@ change of mind shows up in one obvious place:
- **[Automating QElectroTech](api_reference)** — the file-format and headless
export ground this builds on
- **[MCP server](mcp_server)** — an AI assistant driving this engine through `qet_edit`/`qet_query`
- **[Script buttons](script_buttons)** — store a script and run it from a button _(pending, [PR #1220](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1220))_
- **[Live mode](assistant_live_mode)** — an assistant running scripts in the open project _(pending, [PR #1222](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1222))_
- **[Macro recorder](macro_recorder)** — record a task by hand for an assistant to script _(pending, [PR #1227](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1227))_
- **[Script buttons](script_buttons)** — store a script and run it from a button
- **[Live mode](assistant_live_mode)** — an assistant running scripts in the open project
- **[Macro recorder](macro_recorder)** — record a task by hand for an assistant to script
- [PR #891](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/891) — implementation, with the exact tests run against it
- [Issue #162](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/162) — the original request and design discussion