ur-agent 1.70.0 → 1.73.0

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
@@ -1,5 +1,81 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.73.0
4
+
5
+ - Provider API key entry no longer renders one character per line. The field in
6
+ the provider picker omitted `columns`, `cursorOffset` and
7
+ `onChangeCursorOffset`; the file carries `@ts-nocheck`, so the compiler could
8
+ not flag the missing required props. An absent width reached
9
+ `normalizeCursorColumns`, which floors a non-finite value at 2, leaving a
10
+ 1-column `MeasuredText`. The same omission pinned the cursor at offset 0, so
11
+ every keystroke inserted at the head and the stored key came out reversed,
12
+ and the undefined setter threw on each accepted key. `TextInput` now resolves
13
+ a usable width from the live terminal size and keeps the offset internally
14
+ when a call site does not lift it, so no future call site can reproduce this.
15
+ - Pasted provider keys are normalised to a single line. A bracketed paste
16
+ carries the newline that terminated the copied line, which is not legal in an
17
+ HTTP header value and previously failed later requests with an opaque
18
+ transport error instead of a 401.
19
+ - The provider picker can now change or remove a stored API key. Selecting a
20
+ provider whose key UR stores offers "Continue to models", "Change API key"
21
+ and "Disconnect"; a key supplied through the environment is left alone. The
22
+ key-entry step's advertised Esc-to-go-back now actually works.
23
+ - Subagent completion summaries no longer print "0 tokens" beside a real tool
24
+ count. Tool calls and model tokens are separate quantities, and when a
25
+ provider reports no usage the token segment is omitted rather than rendered
26
+ as zero. Provider-reported input, output, cached and creation tokens are
27
+ unchanged.
28
+ - AskUserQuestion keeps every choice in one continuous list. The select
29
+ components default to a 5-item window, so a question with five or more
30
+ entries (four choices plus "Other") pushed the tail below the footer divider
31
+ and read as a detached second group. The list is now sized to the terminal
32
+ and only windows when the height genuinely cannot fit it.
33
+
34
+ ## 1.72.0
35
+
36
+ - `AskUserQuestion` no longer rejects a well-formed question because the model
37
+ named the array something else. The question text accepted eight aliases
38
+ while the options array accepted exactly one key, and the options check ran
39
+ first — so a model that sent `choices` was told that *both* `question` and
40
+ `options` were missing, which is what the error reported. `choices`,
41
+ `values`, `items`, `alternatives`, `candidates` and `selections` are now
42
+ accepted, and per-question options that arrive as a JSON string are parsed,
43
+ which previously only happened for the single-question form.
44
+ - Exiting plan mode no longer prints an error every time it is approved. The
45
+ tool stays advertised regardless of mode, so once the user accepts, the model
46
+ routinely calls it a second time against a session that is already out of
47
+ plan mode — and that was answered with "You are not in plan mode". The echo
48
+ is now a no-op that tells the model to continue, does not re-prompt for
49
+ approval, and does not rewrite the plan file with a stale copy. A call with
50
+ no approved exit behind it still fails, since that one is a real mistake.
51
+
52
+ ## 1.71.0
53
+
54
+ - Consolidated every UR-branded link onto `ur.com`. 259 references across 106
55
+ files moved off the retired `ur.ai` and `ur.dev` hostnames. Subdomains and
56
+ paths are preserved exactly, so `docs.ur.dev/docs/en/sandboxing` became
57
+ `docs.ur.com/docs/en/sandboxing` and `ur.ai/settings/billing` became
58
+ `ur.com/settings/billing`. Nothing was flattened to a landing page.
59
+ - Provider, registry and authentication endpoints are untouched, and the
60
+ rewrite asserts that rather than assuming it: `api.anthropic.com`,
61
+ `api.openai.com`, `platform.openai.com`, `developers.openai.com`,
62
+ `ollama.com`, `openrouter.ai`, `registry.npmjs.org`, `googleapis.com`,
63
+ `huggingface.co`, `modelcontextprotocol.io`, `json-schema.org` and
64
+ `github.com` all have identical occurrence counts before and after. Anyone
65
+ connecting to Claude, OpenAI, Ollama or any other provider reaches the same
66
+ host as before.
67
+ - The substitution is anchored so it cannot match more than it means: a
68
+ preceding letter, digit or hyphen blocks it, which is what keeps
69
+ `ur-ai.staging.ant.dev` and hostnames such as `go.dev` and `react.dev`
70
+ intact. A pattern that matched too broadly is what shipped 1.61.2 through
71
+ 1.64.0 uninstallable.
72
+ - `tipsAreReal` now bans the retired hostnames instead of `ur.com`. It was
73
+ written when every UR domain was dead, so leaving it would have forbidden
74
+ links to the current site.
75
+ - The auth token source discriminant follows the domain, from `ur.ai` to
76
+ `ur.com`. It is computed per session and never persisted, so no stored
77
+ credential carries the old value.
78
+
3
79
  ## 1.70.0
4
80
 
5
81
  - Rolled the codebase back to the state shipped as 1.65.6. Everything released