@intentic/extension-api 1.223.0 → 1.225.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/src/version.ts CHANGED
@@ -1,56 +1,62 @@
1
- // The extension API's protocol version — the value `engines.intentic` ranges are matched against at load, and
1
+ // The extension API's protocol version, the value `engines.intentic` ranges are matched against at load, and
2
2
  // the value the host reports as IntenticApi.apiVersion. Bumped ONLY with the published package: additive
3
3
  // surface = minor, breaking = major. This package is the one deliberate exception to the repo's no-legacy rule.
4
4
  //
5
5
  // 1.0.0 rather than 0.5.0, and the reason is the drift that forced that bump. While the major was 0 the caret
6
- // matcher treats the MINOR as breaking (engines.ts), so every addition invalidated every declared range — which
6
+ // matcher treats the MINOR as breaking (engines.ts), so every addition invalidated every declared range, which
7
7
  // made bumping expensive enough that two surface changes (connectors → capabilities, api.documents.open) shipped
8
8
  // without one, and the number stopped being true. At 1.x an addition is 1.1.0 and costs authors nothing, so the
9
9
  // bump that keeps this honest is the cheap one. surface-guard.test.ts is what makes it non-optional.
10
10
  // 2.0.0 makes listener contributions self-describing: the former `eventTypes` array became labelled `events`
11
- // plus the automation-editor vocabulary the provider owns. That is intentionally breaking — a 1.x listener
11
+ // plus the automation-editor vocabulary the provider owns. That is intentionally breaking, a 1.x listener
12
12
  // manifest cannot honestly promise that a generic host can configure it.
13
13
  // 2.1.0 adds the backend half: a manifest `server` bundle (activateServer, run by the daemon's backend host
14
- // under /x/<id>/…) and `permissions.daemon` beside `permissions.sandbox`. Additive — a 2.0 manifest is a 2.1
14
+ // under /x/<id>/…) and `permissions.daemon` beside `permissions.sandbox`. Additive, a 2.0 manifest is a 2.1
15
15
  // manifest that ships no backend.
16
16
  // 2.2.0 opens the automation composer: `contributes.automationTemplates` lets a pack ship the starting points
17
17
  // for its own service, and a `listener` may declare a second narrowing field (`automation.branchField`) for a
18
18
  // source whose events carry one. Both fold into the daemon's trigger catalogue, so a pack that knows something
19
19
  // worth waking on says so itself instead of being written into the automations surface. Additive.
20
- // 2.3.0 adds `api.sandbox.role()` — the signed-in user's trust tier, for affordance gating (the daemon floors
20
+ // 2.3.0 adds `api.sandbox.role()`, the signed-in user's trust tier, for affordance gating (the daemon floors
21
21
  // every route regardless). Surfaced when the drafts queue moved out of the app: approve/reject are
22
22
  // maintainer-and-up, and no extension could say so. Additive. The surface guard grew a `sandboxApi` member
23
23
  // list with this release, so additions below the top-level grain are recorded from here on.
24
24
  // 2.4.0 gives the manifest an authoring schema: `$schema` is a declared field, and every contribution point now
25
25
  // carries the sentence that explains it, generated out to intentic-extension.schema.json. An editor pointed at
26
- // that URL completes the fields, shows what each one does, and marks a key nothing declares — which used to be
26
+ // that URL completes the fields, shows what each one does, and marks a key nothing declares, which used to be
27
27
  // the one class of mistake nothing caught, because zod strips what it does not know rather than refusing it.
28
28
  // Additive: a manifest that names no schema is unchanged.
29
29
  // 2.5.0 lets an extension bring its own picture: `art` carries a complete SVG document inline, above the
30
30
  // simple-icons `logo` and the host's `icon` in the same ladder. The two tiers before it could say "this is
31
- // Slack" or "this is a server", and nothing could say "this is mine" — so a page listing seven unfamiliar
31
+ // Slack" or "this is a server", and nothing could say "this is mine", so a page listing seven unfamiliar
32
32
  // extensions drew seven near-identical glyphs, which is the shape of a directory rather than of a shelf. Inline
33
33
  // rather than a URL because the row is drawn before any code is cloned: a link would put a stranger's server in
34
- // the render path, track who is browsing, and rot after approval. Additive — a manifest that ships no drawing
34
+ // the render path, track who is browsing, and rot after approval. Additive, a manifest that ships no drawing
35
35
  // falls to exactly the mark it had before.
36
36
  // 2.6.0 gives module state an owner across a sandbox switch: `sandboxRef` declares state that belongs to ONE
37
37
  // sandbox and `sandboxScopeGuard` protects the write of a read that was already in flight when the switch
38
- // happened (scope.ts). The tier existed and nothing cleared it — every extension that badges a rail tile from a
38
+ // happened (scope.ts). The tier existed and nothing cleared it, every extension that badges a rail tile from a
39
39
  // timer kept the previous sandbox's count under the new sandbox's name, which is the one thing a badge must
40
40
  // never do. Additive: an extension that keeps no module state is unchanged, and the host resets the scope
41
41
  // whether or not anything registered.
42
42
  // 2.7.0 adds the two halves of work an extension does while none of it is on screen (background.ts):
43
43
  // `sandboxPoll`, the timer behind a rail badge, and `sandboxLedger`, the file recording what the owner has
44
- // already seen. Seven modules across six extensions had hand-written the same poller — five invisible rules
45
- // each, and six of the seven had the sandbox-switch one wrong — and three had hand-written the same tolerant
44
+ // already seen. Seven modules across six extensions had hand-written the same poller, five invisible rules
45
+ // each, and six of the seven had the sandbox-switch one wrong, and three had hand-written the same tolerant
46
46
  // reader and careful write over the same shape of file. Additive: nothing is removed, and an extension that
47
47
  // keeps polling by hand still runs.
48
48
  // 2.8.0 splits sandbox-scoped module state by AUDIENCE: `sandboxValue` is `sandboxRef`'s lifetime without its
49
49
  // reactivity, for what a background poll remembers for itself (which connections to ask about next round, the
50
50
  // cursor a fetch resumes from) rather than what a tile shows. `detect()` and `badge()` both run inside the
51
- // host's render computed, so a `Ref` written from either is a computed mutating its own dependency — Vue
51
+ // host's render computed, so a `Ref` written from either is a computed mutating its own dependency. Vue
52
52
  // re-runs it, it writes again, and the rail recurses until the flush is abandoned mid-frame, dropping every
53
53
  // unrelated update queued behind it. The symptom is a window that stops answering, blamed on whichever
54
54
  // component the loop was noticed in, so the fix has to be a box nothing observes rather than a rule to
55
55
  // remember. Additive: `sandboxRef` is unchanged, and both are emptied on a switch by the same door.
56
- export const extensionApiVersion = "2.8.0";
56
+ // 2.9.0 adds `api.href`: the same app path the host would navigate to, as a browser address. A view that can
57
+ // only call `navigate` has to draw every destination it offers as a <button>, and a button is not a link: no
58
+ // address under the pointer, nothing in the browser's own right-click menu, nothing to copy, and Ctrl/⌘-click
59
+ // moving the tab the reader is in instead of opening a second one. Six views across three packs had each drawn
60
+ // a place that way, so the fix has to be reachable from the API rather than repeated per pack. Additive:
61
+ // `navigate` is unchanged, and it is still what a plain click calls.
62
+ export const extensionApiVersion = "2.9.0";