@oar-sh/oar 0.9.14 → 0.9.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,100 @@
3
3
  All notable changes to OAR are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow semver.
5
5
 
6
+ ## [0.9.15] — 2026-10-22
7
+
8
+ Highlights: `oar setup` asks how the relay starts on Windows, at sign-in or
9
+ at boot before anyone signs in, and `oar autostart` switches between them
10
+ later. `oar uninstall` takes OAR off the machine and keeps your data unless
11
+ you ask for `--purge`. A declined administrator prompt changes nothing, boot
12
+ tasks work in profile folders with spaces or non-ASCII names, and a
13
+ hand-made task, or one only an administrator can read, is never deleted
14
+ without a copy. The package is smaller.
15
+
16
+ ### Upgrade notes
17
+
18
+ - **From 0.9.14 with a hand-made autostart task:** switching to boot mode
19
+ in 0.9.14 could delete an existing task of the same name (`oar-relay` or
20
+ the pre-rebrand name) without a copy. 0.9.15 keeps such a task and asks
21
+ for `--replace`, which saves a copy first.
22
+
23
+ ### Added
24
+
25
+ - **`oar setup` asks how the relay starts** on Windows: at sign-in, at boot
26
+ (before anyone signs in; one administrator prompt) or not at all, with the
27
+ current mode as the default. `--autostart signin|boot|off` answers it
28
+ without a question.
29
+ - **`oar autostart signin|boot|off|status`.** Switching to or from boot mode
30
+ asks for an administrator once, only for the schtasks call; sign-in mode
31
+ needs none. A declined prompt changes nothing. `status` lists each entry,
32
+ whether OAR generated it, and which other OAR install a stale one starts.
33
+ `--replace` replaces hand-made entries with generated ones, keeping a copy
34
+ of each (`<name>.bak`: a launcher's beside it, a task's exported XML and a
35
+ Startup entry's in the OAR folder); nothing else ever does. On Linux it is
36
+ the systemd user service (`oar service`); elsewhere it says it is not
37
+ supported.
38
+ - **`oar uninstall [--purge]`** stops the relay, takes out the autostart
39
+ entries OAR generated and the Copilot extension wrapper OAR wrote for this
40
+ install (a changed one, or one of another install, stays and is named),
41
+ and has npm remove the package once `oar` has ended. **The data stays** (config,
42
+ database, uploads, logs in the state root), and the command says where.
43
+ `--purge` deletes the state root after you type `delete`; a data folder
44
+ outside it, one in a git checkout, and `rescued-package-data` are each
45
+ deleted only after a question of their own; a drive root, the home folder
46
+ or a folder above it, a system folder and a folder without OAR's config or
47
+ database in it are refused, whatever is typed. A relay that holds its lock
48
+ without answering (bringing over a database) stops the command before it
49
+ deletes anything. Programs that still run from the package (session
50
+ workers) are named: npm leaves the files they hold in a hidden `.oar-*`
51
+ folder, which the log names. A step
52
+ that fails stops the command, which says what is done and what is left.
53
+
54
+ ### Changed
55
+
56
+ - The two developer READMEs (`server/README.md` with the HTTP API, and the
57
+ web-relay extension's) are no longer in the npm package; they are on
58
+ [GitHub](https://github.com/oar-sh/oar).
59
+
60
+ ### Fixed
61
+
62
+ - **A hand-made autostart entry is never deleted or written over.** Leaving
63
+ boot mode deleted a boot task or launcher edited by hand, and *Off* also
64
+ a task OAR did not make; switching to sign-in replaced an edited Startup
65
+ entry. Only entries exactly as an OAR version generated them are changed
66
+ now, in the web UI as in `oar autostart`: a hand-made entry that would stay
67
+ beside the new mode, or be replaced by it, stops the switch with the same
68
+ message. Picking *At system startup* no longer replaces a hand-edited
69
+ launcher or a task someone else made, the pre-rebrand one included. A boot
70
+ task is OAR's own only while it is exactly the one OAR registers: the
71
+ account, the run level, one action, one boot trigger and its settings.
72
+ - **Boot mode switches on and off with a space, an apostrophe or non-ASCII
73
+ characters in the profile path.** The elevated step was a script file
74
+ passed unquoted, and read in the wrong encoding; it now travels as an
75
+ encoded command with every path quoted. A failed switch is no longer
76
+ reported as a declined prompt: it puts back the tasks it deleted from their
77
+ copies and keeps the copies, and a declined one leaves no file behind.
78
+ Windows PowerShell can report a declined prompt with an error that does not
79
+ stop it, or with no process at all; that read as confirmed, so leaving boot
80
+ mode deleted the launcher but kept the task, and switching it on removed
81
+ the sign-in entry without registering the task. Both now count as declined.
82
+ Leaving boot mode in the web UI switches the sign-in entry only after the
83
+ prompt was confirmed. Leaving boot mode removes the task XML and the record of
84
+ the sweep too, and the web UI names a Startup entry OAR did not make.
85
+ - **A boot task with non-ASCII characters in its paths reads right.**
86
+ schtasks writes its XML in the console's code page, so a profile path like
87
+ `C:\Users\Jürgen` came back garbled and OAR took its own task for a
88
+ hand-made one: switching boot on reported a failure and deleted the new
89
+ launcher, and *Off* refused to remove the task. Such a task is now read
90
+ again through PowerShell in UTF-8. A task that still cannot be read is
91
+ never taken as missing, removed, put back or someone else's, and never
92
+ deleted without a copy: nothing is changed while it cannot be read, and
93
+ after a confirmed prompt OAR says it could not check, and undoes nothing.
94
+ - **A boot task only an administrator can read is never deleted.** One that
95
+ stores another account's password answers "Access is denied" to OAR; that
96
+ read as no task, so `oar autostart boot` deleted it without a copy. Any
97
+ failed read of a task that is there now counts as unreadable: status says
98
+ so, and OAR changes nothing, `--replace` included.
99
+
6
100
  ## [0.9.14] — 2026-10-21
7
101
 
8
102
  Highlights: a relay started by Windows autostart, or by a plain
package/README.md CHANGED
@@ -45,29 +45,29 @@ flowchart LR
45
45
  <table>
46
46
  <tr>
47
47
  <td width="42%" rowspan="4" valign="top">
48
- <a href="https://oar.sh/assets/shots/cfmail-mobile.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-mobile.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/cfmail-mobile.png?v=0.9.14" alt="OAR on a phone: a finished agent turn in a conversation, with the composer below"></picture></a>
48
+ <a href="https://oar.sh/assets/shots/cfmail-mobile.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-mobile.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/cfmail-mobile.png?v=0.9.15" alt="OAR on a phone: a finished agent turn in a conversation, with the composer below"></picture></a>
49
49
  <br><sub>On a phone: the same conversations, installable as an app.</sub>
50
50
  </td>
51
51
  <td width="58%" valign="top">
52
- <a href="https://oar.sh/assets/shots/cfmail-agents.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-agents.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/cfmail-agents.png?v=0.9.14" alt="Background subagents running in parallel in the task panel, each with live token counts, elapsed time, and its own Stop button"></picture></a>
52
+ <a href="https://oar.sh/assets/shots/cfmail-agents.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-agents.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/cfmail-agents.png?v=0.9.15" alt="Background subagents running in parallel in the task panel, each with live token counts, elapsed time, and its own Stop button"></picture></a>
53
53
  <br><sub>Agents working in parallel, each with live token counts and its own Stop.</sub>
54
54
  </td>
55
55
  </tr>
56
56
  <tr>
57
57
  <td valign="top">
58
- <a href="https://oar.sh/assets/shots/cfmail-question.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-question.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/cfmail-question.png?v=0.9.14" alt="A question card in the middle of a turn: the agent offers several choices and a free-text reply"></picture></a>
58
+ <a href="https://oar.sh/assets/shots/cfmail-question.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-question.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/cfmail-question.png?v=0.9.15" alt="A question card in the middle of a turn: the agent offers several choices and a free-text reply"></picture></a>
59
59
  <br><sub>When the agent needs a decision, it asks, and waits for your answer.</sub>
60
60
  </td>
61
61
  </tr>
62
62
  <tr>
63
63
  <td valign="top">
64
- <a href="https://oar.sh/assets/shots/pingcf-thoughts.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pingcf-thoughts.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/pingcf-thoughts.png?v=0.9.14" alt="An expanded Thoughts block showing the agent's reasoning above its reply"></picture></a>
64
+ <a href="https://oar.sh/assets/shots/pingcf-thoughts.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pingcf-thoughts.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/pingcf-thoughts.png?v=0.9.15" alt="An expanded Thoughts block showing the agent's reasoning above its reply"></picture></a>
65
65
  <br><sub>Read the reasoning, not just the answer.</sub>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
69
  <td valign="top">
70
- <a href="https://oar.sh/assets/shots/pagewright-watching.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pagewright-watching.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/pagewright-watching.png?v=0.9.14" alt="A session watching two other sessions: a finished reply arrives as a compact relay-event row, the watching 2 sessions list is open with Unsubscribe, and a request to also watch a session on a paired relay waits on an Allow / Deny card"></picture></a>
70
+ <a href="https://oar.sh/assets/shots/pagewright-watching.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pagewright-watching.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/pagewright-watching.png?v=0.9.15" alt="A session watching two other sessions: a finished reply arrives as a compact relay-event row, the watching 2 sessions list is open with Unsubscribe, and a request to also watch a session on a paired relay waits on an Allow / Deny card"></picture></a>
71
71
  <br><sub>Agents that watch agents: woken by events, approving nothing.</sub>
72
72
  </td>
73
73
  </tr>
@@ -116,11 +116,11 @@ API keys are entered in **⚙️ Settings** and stay on the relay host. The Clau
116
116
  <table>
117
117
  <tr>
118
118
  <td width="62%" valign="top">
119
- <a href="https://oar.sh/assets/shots/cfmail-steering.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-steering.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/cfmail-steering.png?v=0.9.14" alt="A running Claude turn with a message steered into it mid-turn, the reply streaming with its tool calls, and the Steer button in the composer"></picture></a>
119
+ <a href="https://oar.sh/assets/shots/cfmail-steering.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/cfmail-steering.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/cfmail-steering.png?v=0.9.15" alt="A running Claude turn with a message steered into it mid-turn, the reply streaming with its tool calls, and the Steer button in the composer"></picture></a>
120
120
  <br><sub>Send a message while the agent works, and it steers the running turn.</sub>
121
121
  </td>
122
122
  <td width="38%" valign="top">
123
- <a href="https://oar.sh/assets/shots/usage-copilot-compact.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/usage-copilot-compact.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/usage-copilot-compact.png?v=0.9.14" alt="The GitHub Copilot card in Check Usage: premium requests and plan quota with reset dates, and the cost of the last turn"></picture></a>
123
+ <a href="https://oar.sh/assets/shots/usage-copilot-compact.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/usage-copilot-compact.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/usage-copilot-compact.png?v=0.9.15" alt="The GitHub Copilot card in Check Usage: premium requests and plan quota with reset dates, and the cost of the last turn"></picture></a>
124
124
  <br><sub>What each plan has left, in one place.</sub>
125
125
  </td>
126
126
  </tr>
@@ -137,7 +137,7 @@ API keys are entered in **⚙️ Settings** and stay on the relay host. The Clau
137
137
  - **Share** a conversation as a read-only link, hide single messages and the host's paths from it, and see when it was opened ([Sharing](docs/web-ui.md#sharing)).
138
138
  - **On your phone**: install OAR as an app and get push notifications ([Notifications and the app](docs/web-ui.md#notifications-and-the-app)).
139
139
 
140
- The full tour is in [Using the web UI](docs/web-ui.md); every setting and config key is in [Settings and configuration](docs/configuration.md). What changed in each release is in the [changelog](CHANGELOG.md), with [0.9.14](CHANGELOG.md#0914--2026-10-21) as the latest.
140
+ The full tour is in [Using the web UI](docs/web-ui.md); every setting and config key is in [Settings and configuration](docs/configuration.md). What changed in each release is in the [changelog](CHANGELOG.md), with [0.9.15](CHANGELOG.md#0915--2026-10-22) as the latest.
141
141
 
142
142
  ## Remote access
143
143
 
@@ -188,7 +188,7 @@ flowchart LR
188
188
 
189
189
  You stay in charge: per paired relay you decide whether agents may only read, also prompt, or do everything, and in the `ask` and `plan` modes every write asks you first. A subscription only notifies; it approves nothing.
190
190
 
191
- <p><a href="https://oar.sh/assets/shots/pagewright-cross-relay.png?v=0.9.14"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pagewright-cross-relay.light.png?v=0.9.14"><img src="https://oar.sh/assets/shots/pagewright-cross-relay.png?v=0.9.14" alt="A session watching two sessions on a paired relay: a reply arrives as a relay-event row, and after a short outage the events the other relay kept arrive as one replayed row" width="720"></picture></a></p>
191
+ <p><a href="https://oar.sh/assets/shots/pagewright-cross-relay.png?v=0.9.15"><picture><source media="(prefers-color-scheme: light)" srcset="https://oar.sh/assets/shots/pagewright-cross-relay.light.png?v=0.9.15"><img src="https://oar.sh/assets/shots/pagewright-cross-relay.png?v=0.9.15" alt="A session watching two sessions on a paired relay: a reply arrives as a relay-event row, and after a short outage the events the other relay kept arrive as one replayed row" width="720"></picture></a></p>
192
192
 
193
193
  How pairing, permissions and limits work is in [Agents working together](docs/agents-together.md).
194
194