@intentic/extension-ui 1.336.0 → 1.338.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/README.md CHANGED
@@ -20,6 +20,16 @@ flowchart LR
20
20
  re-exports, and a `dist/index.js` bridge that throws when loaded outside an intentic host.
21
21
  - `names.mjs` lists the runtime export names by hand, because the `.vue` graph cannot load in Node. The editor's shim
22
22
  generator reads it, a dev-time assertion in `hostModules.ts` catches drift, and `extensionUiNames.test.ts` fails it.
23
+ - A bundle links these names, so they are versioned with the extension API. `surface.json` in
24
+ [extension-api](../extension-api) records them per `extensionApiVersion` (`uiKitExports`, from 2.31.0), and the
25
+ editor's `surface-guard.test.ts` holds them to semver: a new name moves the version a minor, and a name leaves only
26
+ if `extensionUiDeprecated` in `names.mjs` lists it, in a major at or past the floor it gives. An extension whose
27
+ `engines.intentic` range the host satisfies then finds every name it was built with. One that asks for a name anyway
28
+ is stopped before it links: the editor's loader reads the bundle's imports and says which name is missing and that
29
+ the extension needs updating, where the browser would only say the module "does not provide an export named …".
30
+ - `RepoRail` and `errorMessage` are deprecated and stay until 3.0.0 (`RepoPicker` and `messageOr` replace them).
31
+ (2026-10-15: `RepoRail` left the kit on 2026-10-12 with no version moving, and every installed extension still
32
+ importing it stopped loading. It is back unchanged, and nothing recorded the kit's names before this.)
23
33
  - `./diff`, `./format`, `./i18n` and `./worker` skip the component barrel, for extension tests that run without a Vue
24
34
  compiler. Each is published as a bridge holding what `src/index.ts` re-exports from that file, so a name a subpath
25
35
  file exports must also be re-exported from the barrel and listed in `names.mjs`, or an extension installed from git
@@ -31,7 +41,7 @@ flowchart LR
31
41
 
32
42
  - [src/index.ts](src/index.ts) — the kit: every name an extension may import, with usage notes.
33
43
  - [scripts/build.mjs](scripts/build.mjs) — builds the published types and the host bridge from `_editor/ui`.
34
- - [names.mjs](names.mjs) — the runtime export names the shims and the host check read.
44
+ - [names.mjs](names.mjs) — the runtime export names the shims and the host check read, and the deprecated ones.
35
45
  - [../../_editor/web/src/extension-host/hostModules.ts](../../_editor/web/src/extension-host/hostModules.ts) — where the shell publishes its instances to extension bundles.
36
46
 
37
47
  ## Commands
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ export const ProgressRing = m["ProgressRing"];
55
55
  export const ProjectChip = m["ProjectChip"];
56
56
  export const ProseField = m["ProseField"];
57
57
  export const RepoPicker = m["RepoPicker"];
58
+ export const RepoRail = m["RepoRail"];
58
59
  export const ResizeSeam = m["ResizeSeam"];
59
60
  export const ResponsiveOverlay = m["ResponsiveOverlay"];
60
61
  export const Row = m["Row"];
@@ -1,4 +1,4 @@
1
- export { AgentRunButton, type AgentRunAttempt, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, type FixStanceLook, fixStanceLook, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, type IconButtonVariants, type TextButtonVariants, type InputVariants, type ChipVariants, type SectionLabelVariants, type ButtonTier, type ButtonTone, Code, CodeField, ConfirmDialog, ContextMenu, OverflowActions, ActionSheet, type ActionItem, CopyButton, AddressField, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, type FileFormat, formatOf, Markdown, MarkdownDocument, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, ProjectChip, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoPicker, type RepoPickerAll, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SkeletonSnapshot, vSkeletonSource, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, timeWindows, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, useLatest, messageOr, messageOr as errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
1
+ export { AgentRunButton, type AgentRunAttempt, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, type FixStanceLook, fixStanceLook, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, type IconButtonVariants, type TextButtonVariants, type InputVariants, type ChipVariants, type SectionLabelVariants, type ButtonTier, type ButtonTone, Code, CodeField, ConfirmDialog, ContextMenu, OverflowActions, ActionSheet, type ActionItem, CopyButton, AddressField, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, type FileFormat, formatOf, Markdown, MarkdownDocument, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, ProjectChip, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoPicker, type RepoPickerAll, RepoRail, type RepoRailAll, type RepoRailGroup, type RepoRailRow, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SkeletonSnapshot, vSkeletonSource, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, timeWindows, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, useLatest, messageOr, messageOr as errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
2
2
  export { formatBytes, formatClock, formatCompact, formatCount, formatDate, formatDateLong, formatDateTime, formatDayMonth, formatDayMonthTime, formatDuration, formatElapsed, formatMoney, formatPercent, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, formatWhen, freshness, timeAgo, } from "./format.js";
3
3
  export { type DiffMark, diffMark, type Signal, type TintWeight, type Tone, toneDot, toneFill, toneHover, toneInk, tonePlate, toneRim, toneTint, toneWash, } from "./tone.js";
4
4
  export { diffSequence, pairEdits, similarity, wordDiff } from "./diff.js";
@@ -2,9 +2,11 @@ type __VLS_Props = {
2
2
  label: string;
3
3
  text?: string;
4
4
  };
5
- declare var __VLS_12: {};
5
+ declare var __VLS_1: {}, __VLS_14: {};
6
6
  type __VLS_Slots = {} & {
7
- default?: (props: typeof __VLS_12) => any;
7
+ trigger?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ default?: (props: typeof __VLS_14) => any;
8
10
  };
9
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
12
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,4 +1,4 @@
1
- import type { ChangeStatus } from "@intentic/sandbox-contract";
1
+ import type { ChangeStatus } from "@intentic/sandbox-contract/schemas/git/git";
2
2
  export type { ChangeStatus };
3
3
  export declare const STATUS_LETTER: Record<ChangeStatus, string>;
4
4
  export declare const STATUS_CLASS: Record<ChangeStatus, string>;
@@ -0,0 +1,17 @@
1
+ import type { RepoRailAll, RepoRailGroup } from "./repoRail.js";
2
+ type __VLS_Props = {
3
+ groups: readonly RepoRailGroup[];
4
+ all: RepoRailAll;
5
+ memory: string;
6
+ };
7
+ type __VLS_ModelProps = {
8
+ modelValue?: string | undefined;
9
+ };
10
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ "update:modelValue": (value: string | undefined) => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
14
+ "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import type { IconName } from "../../icons/iconSets.js";
2
+ import type { TooltipValue } from "../../lib/tooltip.js";
3
+ export interface RepoRailRow {
4
+ readonly value: string;
5
+ readonly label: string;
6
+ readonly icon: IconName;
7
+ readonly meta: string;
8
+ readonly tone?: string;
9
+ readonly tooltip?: TooltipValue;
10
+ readonly mono?: boolean;
11
+ }
12
+ export interface RepoRailGroup {
13
+ readonly key: string;
14
+ readonly label?: string;
15
+ readonly rows: readonly RepoRailRow[];
16
+ }
17
+ export interface RepoRailAll {
18
+ readonly icon: IconName;
19
+ readonly meta: string;
20
+ readonly tone?: string;
21
+ readonly tooltip?: TooltipValue;
22
+ }
@@ -301,6 +301,9 @@ export declare const ICONS: {
301
301
  play: {
302
302
  outline: string;
303
303
  };
304
+ print: {
305
+ outline: string;
306
+ };
304
307
  plus: {
305
308
  outline: string;
306
309
  };
@@ -60,6 +60,8 @@ export { default as ProgressRing } from "./components/charts/ProgressRing.vue";
60
60
  export { default as ProseField } from "./components/forms/ProseField.vue";
61
61
  export { default as RepoPicker } from "./components/forms/RepoPicker.vue";
62
62
  export { type RepoPickerAll } from "./components/forms/repoPicker.js";
63
+ export { default as RepoRail } from "./components/layout/RepoRail.vue";
64
+ export { type RepoRailAll, type RepoRailGroup, type RepoRailRow } from "./components/layout/repoRail.js";
63
65
  export { default as ResizeSeam } from "./components/layout/ResizeSeam.vue";
64
66
  export { default as ResponsiveOverlay } from "./components/overlays/ResponsiveOverlay.vue";
65
67
  export { default as Row } from "./components/rows/Row.vue";
@@ -20,6 +20,7 @@ export declare const formatClock: (at: number) => string;
20
20
  export declare const formatWeekdayTime: (at: number) => string;
21
21
  export declare const formatDayMonthTime: (at: number) => string;
22
22
  export declare const formatWhen: (at: number, now?: number) => string;
23
+ export declare const formatDayHeading: (at: number, now?: number) => string;
23
24
  export declare const timeAgo: (at: number, { now, days }?: {
24
25
  now?: number;
25
26
  days?: boolean;
package/names.mjs CHANGED
@@ -1,6 +1,9 @@
1
1
  // The kit's export names: the single source consumed by the web app's shim generator
2
- // (_editor/web/scripts/generate-ext-shims.mjs) and hostModules' dev-time coverage assertion. Update alongside
3
- // src/index.ts; the assertion catches drift on the next dev boot, and extensionUiNames.test.ts fails it in CI.
2
+ // (_editor/web/scripts/generate-ext-shims.mjs), hostModules' dev-time coverage assertion and the loader's check of a
3
+ // bundle's imports (extension-host/bundleLinks.ts). Update alongside src/index.ts; the assertion catches drift on the
4
+ // next dev boot, and extensionUiNames.test.ts fails it in CI. A bundle links these by name, so they are versioned with
5
+ // the extension API: surface.json records them per extensionApiVersion (`uiKitExports`), a new one is a minor, and one
6
+ // leaves only from the deprecated list below, in a major (surface-guard.test.ts).
4
7
  export const extensionUiNames = [
5
8
  "AgentRunButton",
6
9
  "AnchoredOverlay",
@@ -94,6 +97,7 @@ export const extensionUiNames = [
94
97
  "ProjectChip",
95
98
  "ProseField",
96
99
  "RepoPicker",
100
+ "RepoRail",
97
101
  "ResizeSeam",
98
102
  "ResponsiveOverlay",
99
103
  "Row",
@@ -135,3 +139,22 @@ export const extensionUiNames = [
135
139
  "vAction",
136
140
  "wordDiff",
137
141
  ];
142
+
143
+ // Names kept only so extensions built against them still link: what to use instead, when it was deprecated, and the
144
+ // first extension API version that may drop it. A name leaves the kit only from this list, and only in a major at or
145
+ // past its floor; the entry stays after it goes, as the record that its going was declared.
146
+ export const extensionUiDeprecated = [
147
+ {
148
+ name: "errorMessage",
149
+ use: "messageOr",
150
+ deprecated: "2026-10-06",
151
+ removableIn: "3.0.0",
152
+ },
153
+ {
154
+ // The repository column RepoPicker replaced on 2026-10-12, removed that day with no version moving and restored.
155
+ name: "RepoRail",
156
+ use: "RepoPicker",
157
+ deprecated: "2026-10-15",
158
+ removableIn: "3.0.0",
159
+ },
160
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/extension-ui",
3
- "version": "1.336.0",
3
+ "version": "1.338.0",
4
4
  "description": "The UI kit intentic extensions render with, host-provided at runtime (the app's own components via the import map), so extension UI is always native to the shell",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -126,6 +126,13 @@ export {
126
126
  // URL's `?repo=` through `api.route`, left out when the host bound the view to a repository. Never a rail column.
127
127
  RepoPicker,
128
128
  type RepoPickerAll,
129
+ // Deprecated (2026-10-15): the repository column `RepoPicker` replaced. It left the kit on 2026-10-12 with no
130
+ // version moving, and every extension still importing it stopped loading, so it is back for them alone; removable
131
+ // from extension API 3.0.0 (`extensionUiDeprecated` in names.mjs).
132
+ RepoRail,
133
+ type RepoRailAll,
134
+ type RepoRailGroup,
135
+ type RepoRailRow,
129
136
  // Prose typeset as a document (`ProseField`) and a pane the reader can resize (`ResizeSeam`).
130
137
  ProseField,
131
138
  ResizeSeam,
@@ -166,7 +173,8 @@ export {
166
173
  useLatest,
167
174
  // The thrown thing's message, or a fallback when it has none.
168
175
  messageOr,
169
- // Deprecated: the old name of `messageOr`, kept so extensions built against it still link.
176
+ // Deprecated (2026-10-06): the old name of `messageOr`, kept so extensions built against it still link; removable
177
+ // from extension API 3.0.0 (`extensionUiDeprecated` in names.mjs).
170
178
  messageOr as errorMessage,
171
179
  noticeFrom,
172
180
  noticeOf,