@timurproko/a1 0.2.4 → 0.2.5-dev.698
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/dist/app/session-shell/prompt-suggestion-controller.d.ts +2 -0
- package/dist/app/session-shell/prompt-suggestion-controller.js +10 -0
- package/dist/app/session-shell/session-shell-root.d.ts +1 -0
- package/dist/app/session-shell/session-shell-root.js +19 -6
- package/dist/app/session-shell/session-shell.js +77 -19
- package/dist/app/session-shell/share-operation.d.ts +3 -0
- package/dist/app/session-shell/share-operation.js +11 -0
- package/dist/composition/owned-ui.js +1 -0
- package/dist/composition/session-info-reference.d.ts +4 -0
- package/dist/composition/session-info-reference.js +20 -0
- package/dist/composition/settings-route-host.d.ts +2 -5
- package/dist/composition/settings-route-host.js +8 -12
- package/dist/contracts/presentation/index.d.ts +5 -0
- package/dist/contracts/presentation/index.js +2 -0
- package/dist/features/owned-ui/project-trust-dialog.js +7 -5
- package/dist/features/owned-ui/reference-screen-app.d.ts +4 -2
- package/dist/features/owned-ui/reference-screen-app.js +17 -7
- package/dist/features/owned-ui/settings-app.js +10 -5
- package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
- package/dist/foundation/release/progress-palette.generated.js +2 -2
- package/dist/foundation/startup/startup-descriptor.js +2 -2
- package/dist/integrations/pi/components/index.d.ts +3 -2
- package/dist/integrations/pi/components/index.js +2 -1
- package/dist/integrations/pi/components/modal-frame.d.ts +11 -1
- package/dist/integrations/pi/components/modal-frame.js +29 -1
- package/dist/integrations/pi/components/models-dialog.js +17 -17
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
- package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
- package/dist/integrations/pi/components/share-operation-dialog.d.ts +6 -0
- package/dist/integrations/pi/components/share-operation-dialog.js +40 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +15 -6
- package/dist/integrations/pi/components/shell-extension-ui.d.ts +3 -0
- package/dist/integrations/pi/components/shell-extension-ui.js +8 -4
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +2 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +1 -1
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +0 -4
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +56 -34
- package/dist/integrations/pi/components/shell-session-info-reference.d.ts +10 -0
- package/dist/integrations/pi/components/shell-session-info-reference.js +94 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +3 -1
- package/dist/integrations/pi/components/shell-shared-facade.js +13 -1
- package/dist/integrations/pi/components/skills-dialog.js +19 -6
- package/dist/integrations/pi/components/theme.d.ts +8 -1
- package/dist/integrations/pi/components/theme.js +28 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +15 -7
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +21 -7
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
- package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +3 -3
- package/dist/integrations/pi/components/upstream/components/extension-input.js +5 -6
- package/dist/integrations/pi/components/upstream/components/extension-selector.js +3 -4
- package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +4 -3
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +4 -15
- package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +2 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.js +137 -110
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +1 -1
- package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
- package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +9 -6
- package/dist/integrations/pi/components/upstream/components/thinking-selector.js +64 -27
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +1 -1
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +30 -21
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +246 -211
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +14 -16
- package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/editor-core.js +1 -1
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
- package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
- package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/system-theme.js +1 -1
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
- package/dist/integrations/pi/engine/adapter.js +21 -2
- package/dist/integrations/pi/engine/resources/changelog.json +4 -4
- package/dist/integrations/pi/engine/workflow-runner.js +2 -1
- package/dist/integrations/pi/startup-public.js +186 -81
- package/dist/integrations/pi/startup-public.manifest.json +107 -95
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/runtime-payload-inventory.json +2717 -2630
- package/dist/ui/apps/host.d.ts +4 -3
- package/dist/ui/apps/host.js +9 -4
- package/dist/ui/components/dialog-panel.js +6 -7
- package/dist/ui/components/index.d.ts +1 -1
- package/dist/ui/components/index.js +1 -1
- package/dist/ui/components/list-view.d.ts +3 -3
- package/dist/ui/components/list-view.js +8 -9
- package/dist/ui/components/shortcut-hints.d.ts +2 -0
- package/dist/ui/components/shortcut-hints.js +17 -1
- package/dist/ui/components/theme.d.ts +1 -1
- package/docs/assets/readme/separator-dark.svg +2 -4
- package/docs/assets/readme/separator.svg +2 -4
- package/docs/releases/0.2.4.md +1 -5
- package/package.json +3 -3
package/dist/ui/apps/host.d.ts
CHANGED
|
@@ -22,9 +22,10 @@ export interface AppHostOptions {
|
|
|
22
22
|
readonly theme?: UiTheme;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Presents at most one app.
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* Presents at most one app. An opted-in interrupt closes at the host boundary;
|
|
26
|
+
* other input reaches the presented app first and anything it does not consume
|
|
27
|
+
* continues to the caller. A failure while rendering or handling input closes
|
|
28
|
+
* the app rather than leaving a broken surface on screen.
|
|
28
29
|
*/
|
|
29
30
|
export declare class UiAppHost {
|
|
30
31
|
#private;
|
package/dist/ui/apps/host.js
CHANGED
|
@@ -5,9 +5,10 @@ const INTERRUPT = "";
|
|
|
5
5
|
/** How long the first interrupt of the chord stays armed. */
|
|
6
6
|
const INTERRUPT_CHORD_MS = 1_500;
|
|
7
7
|
/**
|
|
8
|
-
* Presents at most one app.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Presents at most one app. An opted-in interrupt closes at the host boundary;
|
|
9
|
+
* other input reaches the presented app first and anything it does not consume
|
|
10
|
+
* continues to the caller. A failure while rendering or handling input closes
|
|
11
|
+
* the app rather than leaving a broken surface on screen.
|
|
11
12
|
*/
|
|
12
13
|
export class UiAppHost {
|
|
13
14
|
#registry;
|
|
@@ -70,6 +71,10 @@ export class UiAppHost {
|
|
|
70
71
|
const app = this.#app;
|
|
71
72
|
if (app === null)
|
|
72
73
|
return { consumed: false };
|
|
74
|
+
if (data === INTERRUPT && this.#closeOnInterrupt) {
|
|
75
|
+
this.close();
|
|
76
|
+
return { consumed: true, render: true };
|
|
77
|
+
}
|
|
73
78
|
const result = this.#guard(() => app.onInput?.(data, this.#services())) ?? { consumed: false };
|
|
74
79
|
if (this.#app === null)
|
|
75
80
|
return { consumed: true, render: true };
|
|
@@ -91,7 +96,7 @@ export class UiAppHost {
|
|
|
91
96
|
this.render();
|
|
92
97
|
return result;
|
|
93
98
|
}
|
|
94
|
-
// Protocol:
|
|
99
|
+
// Protocol: a non-opted-in host preserves the two-interrupt application exit chord.
|
|
95
100
|
#interrupt() {
|
|
96
101
|
const now = Date.now();
|
|
97
102
|
const armed = this.#interruptArmedAt;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { renderShortcutHintsWithClose } from "./shortcut-hints.js";
|
|
2
2
|
import { displayWidth, truncateToWidth } from "./text.js";
|
|
3
3
|
const LABEL_COLUMN_CAP = 30;
|
|
4
4
|
/** The column values start at: past the widest label, capped so one long name cannot push them off. */
|
|
@@ -22,18 +22,17 @@ export function renderDialogPanel(state, width, theme) {
|
|
|
22
22
|
const padded = `${row.label}${" ".repeat(Math.max(0, labelColumn - displayWidth(row.label)))}`;
|
|
23
23
|
const cursor = selected ? "→ " : " ";
|
|
24
24
|
const raw = `${cursor}${padded} ${row.value}`;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const painted = selected
|
|
28
|
-
? `${theme.fg("accent", cursor)}${theme.fg("accent", padded)} ${theme.fg("accent", row.value)}`
|
|
25
|
+
const content = selected
|
|
26
|
+
? `${theme.fg("accent", cursor)}${theme.fg("text", padded)} ${theme.fg("muted", row.value)}`
|
|
29
27
|
: `${cursor}${padded} ${theme.fg("muted", row.value)}`;
|
|
28
|
+
const painted = selected ? theme.highlight(content) : content;
|
|
30
29
|
return contentRow(painted, raw);
|
|
31
30
|
});
|
|
32
31
|
const description = state.rows[state.index]?.description ?? "";
|
|
33
32
|
const hint = typeof state.hint === "string"
|
|
34
33
|
? theme.fg("dim", state.hint)
|
|
35
|
-
:
|
|
36
|
-
const plainHint = typeof state.hint === "string" ? state.hint :
|
|
34
|
+
: renderShortcutHintsWithClose(state.hint, theme, contentWidth, 0);
|
|
35
|
+
const plainHint = typeof state.hint === "string" ? state.hint : " ".repeat(displayWidth(hint));
|
|
37
36
|
return [
|
|
38
37
|
rule,
|
|
39
38
|
...rows,
|
|
@@ -23,7 +23,7 @@ export { MAX_COPY_ROWS, MAX_COPY_SOURCE_UNITS, selectionCopyLineContent, selecti
|
|
|
23
23
|
export type { SelectionCopyPrompt, SelectionCopyRow, SelectionCopySnapshot } from "./selection-copy.js";
|
|
24
24
|
export { ScrollbarRails, isThumbRow, scrollForThumbRow, scrollForTrackPage, scrollbarGeometry, scrollbarPresentation, scrollbarReservesSpace, scrollbarSelectionRows, scrollbarWheelRows, } from "./scrollbar.js";
|
|
25
25
|
export type { RailPointer, RailPosition, ScrollbarAppearance, ScrollbarGeometry, ScrollbarInput, ScrollbarPresentation, ScrollbarPresentationInput, ScrollbarSpeed, ScrollbarStyle, } from "./scrollbar.js";
|
|
26
|
-
export { renderShortcutHints } from "./shortcut-hints.js";
|
|
26
|
+
export { renderShortcutHints, renderShortcutHintsWithClose } from "./shortcut-hints.js";
|
|
27
27
|
export type { ShortcutHintEntry } from "./shortcut-hints.js";
|
|
28
28
|
export { GLOBAL_SCOPE, ShortcutRegistry, assembleShortcuts, assertNoShortcutConflicts } from "./shortcuts.js";
|
|
29
29
|
export type { ShortcutConflict, ShortcutDeclaration, ShortcutRegistryResult } from "./shortcuts.js";
|
|
@@ -11,7 +11,7 @@ export { progressStatusFrame, progressStatusText } from "./progress-status.js";
|
|
|
11
11
|
export { FrameCache, RENDER_REVISION_KINDS, RenderRevisionTracker, ZERO_REVISIONS, normalizeRevisions, revisionsEqual } from "./revision.js";
|
|
12
12
|
export { MAX_COPY_ROWS, MAX_COPY_SOURCE_UNITS, selectionCopyLineContent, selectionCopyRowText } from "./selection-copy.js";
|
|
13
13
|
export { ScrollbarRails, isThumbRow, scrollForThumbRow, scrollForTrackPage, scrollbarGeometry, scrollbarPresentation, scrollbarReservesSpace, scrollbarSelectionRows, scrollbarWheelRows, } from "./scrollbar.js";
|
|
14
|
-
export { renderShortcutHints } from "./shortcut-hints.js";
|
|
14
|
+
export { renderShortcutHints, renderShortcutHintsWithClose } from "./shortcut-hints.js";
|
|
15
15
|
export { GLOBAL_SCOPE, ShortcutRegistry, assembleShortcuts, assertNoShortcutConflicts } from "./shortcuts.js";
|
|
16
16
|
export { backgroundSgrSpan, heldNativeHyperlinkStyle, hyperlinkSgrSpan, hyperlinkTargetAtColumn, nativeHyperlinkStyle, overlaySpan } from "./spans.js";
|
|
17
17
|
export { readVisibleHyperlinks } from "./visible-hyperlinks.js";
|
|
@@ -44,9 +44,9 @@ export declare function valueColumnFor(rows: readonly ListViewRow[], indent?: nu
|
|
|
44
44
|
/** A group's name with the shared one-cell section inset used by owned screens. */
|
|
45
45
|
export declare function renderGroupHeader(title: string, width: number, theme: UiTheme): string;
|
|
46
46
|
/**
|
|
47
|
-
* One row, painted. The
|
|
48
|
-
*
|
|
49
|
-
*
|
|
47
|
+
* One row, painted. The selected item keeps an accent cursor, normal-text label,
|
|
48
|
+
* muted value, and item-bounded highlight; the value carries the pointer, and the
|
|
49
|
+
* stepper appears only when the pointer is on the value it belongs to.
|
|
50
50
|
*/
|
|
51
51
|
export declare function renderListRow(row: ListViewRow, state: ListRowState, valueColumn: number, width: number, theme: UiTheme): string;
|
|
52
52
|
/** A line that stands in for rows: why a group has none, or what it is waiting on. */
|
|
@@ -18,9 +18,9 @@ export function renderGroupHeader(title, width, theme) {
|
|
|
18
18
|
return ` ${truncateToWidth(theme.fg("mdHeading", theme.bold(title)), width - 1)}`;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* One row, painted. The
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* One row, painted. The selected item keeps an accent cursor, normal-text label,
|
|
22
|
+
* muted value, and item-bounded highlight; the value carries the pointer, and the
|
|
23
|
+
* stepper appears only when the pointer is on the value it belongs to.
|
|
24
24
|
*/
|
|
25
25
|
export function renderListRow(row, state, valueColumn, width, theme) {
|
|
26
26
|
const cursor = state.selected ? "→ " : " ";
|
|
@@ -28,13 +28,11 @@ export function renderListRow(row, state, valueColumn, width, theme) {
|
|
|
28
28
|
const labelPadded = `${row.label}${" ".repeat(Math.max(0, labelColumn - displayWidth(row.label)))}`;
|
|
29
29
|
const leftRaw = `${cursor}${labelPadded}`;
|
|
30
30
|
const left = state.selected
|
|
31
|
-
? `${theme.fg("accent", cursor)}${theme.fg("
|
|
31
|
+
? `${theme.fg("accent", cursor)}${theme.fg("text", labelPadded)}`
|
|
32
32
|
: `${cursor}${theme.plain(labelPadded)}`;
|
|
33
33
|
const gap = Math.max(2, valueColumn - displayWidth(leftRaw));
|
|
34
|
-
// Rationale:
|
|
35
|
-
//
|
|
36
|
-
// value reads the same on every row, and pointer hover brightens it without moving
|
|
37
|
-
// the keyboard selection.
|
|
34
|
+
// Rationale: the value keeps the same semantic foreground on selected and unselected
|
|
35
|
+
// rows; pointer hover brightens it without moving keyboard selection.
|
|
38
36
|
const valueHovered = state.hovered && state.region !== "label";
|
|
39
37
|
const stepper = row.stepper !== undefined && valueHovered;
|
|
40
38
|
const value = valueHovered ? theme.plain(row.value) : theme.fg("muted", row.value);
|
|
@@ -50,7 +48,8 @@ export function renderListRow(row, state, valueColumn, width, theme) {
|
|
|
50
48
|
: "";
|
|
51
49
|
const indent = Math.max(2, stepper ? gap - STEPPER_RESERVE : gap);
|
|
52
50
|
const suffix = row.suffix === undefined ? "" : theme.fg("dim", ` ${row.suffix}`);
|
|
53
|
-
|
|
51
|
+
const rendered = truncateToWidth(`${left}${" ".repeat(indent)}${minus}${value}${plus}${suffix}`, width);
|
|
52
|
+
return state.selected ? theme.highlight(rendered) : rendered;
|
|
54
53
|
}
|
|
55
54
|
/** A line that stands in for rows: why a group has none, or what it is waiting on. */
|
|
56
55
|
export function renderNote(text, width, theme) {
|
|
@@ -5,3 +5,5 @@ export type ShortcutHintEntry = SemanticShortcutHint;
|
|
|
5
5
|
export declare function shortcutHintsText(entries: readonly ShortcutHintEntry[], indent?: number): string;
|
|
6
6
|
/** Paints one modal instruction row without decorative separator glyphs. */
|
|
7
7
|
export declare function renderShortcutHints(entries: readonly ShortcutHintEntry[], theme: Pick<UiTheme, "fg">, indent?: number): string;
|
|
8
|
+
/** Clips preceding guidance first so a final canonical close entry remains complete whenever it fits. */
|
|
9
|
+
export declare function renderShortcutHintsWithClose(entries: readonly ShortcutHintEntry[], theme: Pick<UiTheme, "fg">, width: number, indent?: number): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { renderSemanticShortcutHints, } from "../../contracts/presentation/index.js";
|
|
1
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, renderSemanticShortcutHints, } from "../../contracts/presentation/index.js";
|
|
2
|
+
import { displayWidth, truncateToWidth } from "./text.js";
|
|
2
3
|
/** Returns an unstyled modal instruction row for width-aware clipping. */
|
|
3
4
|
export function shortcutHintsText(entries, indent = 0) {
|
|
4
5
|
return renderSemanticShortcutHints(entries, { key: text => text, action: text => text }, indent);
|
|
@@ -10,3 +11,18 @@ export function renderShortcutHints(entries, theme, indent = 0) {
|
|
|
10
11
|
action: text => theme.fg("muted", text),
|
|
11
12
|
}, indent);
|
|
12
13
|
}
|
|
14
|
+
/** Clips preceding guidance first so a final canonical close entry remains complete whenever it fits. */
|
|
15
|
+
export function renderShortcutHintsWithClose(entries, theme, width, indent = 0) {
|
|
16
|
+
const hasClose = entries.at(-1)?.key === DIALOG_CLOSE_SHORTCUT_HINT.key
|
|
17
|
+
&& entries.at(-1)?.action === DIALOG_CLOSE_SHORTCUT_HINT.action;
|
|
18
|
+
if (!hasClose)
|
|
19
|
+
return truncateToWidth(renderShortcutHints(entries, theme, indent), width);
|
|
20
|
+
const withoutClose = entries.slice(0, -1);
|
|
21
|
+
const close = renderShortcutHints([DIALOG_CLOSE_SHORTCUT_HINT], theme);
|
|
22
|
+
const closeWidth = displayWidth(close);
|
|
23
|
+
if (width <= closeWidth)
|
|
24
|
+
return truncateToWidth(close, width);
|
|
25
|
+
const bodyWidth = Math.max(0, width - closeWidth - 2);
|
|
26
|
+
const body = bodyWidth < 3 ? "" : truncateToWidth(renderShortcutHints(withoutClose, theme, indent), bodyWidth);
|
|
27
|
+
return displayWidth(body) === 0 ? close : `${body} ${close}`;
|
|
28
|
+
}
|
|
@@ -8,7 +8,7 @@ export interface UiTheme {
|
|
|
8
8
|
* into a dark terminal, which is how the engine leaves its lists too.
|
|
9
9
|
*/
|
|
10
10
|
plain(text: string): string;
|
|
11
|
-
/**
|
|
11
|
+
/** Selection background for an active list item or floating-surface row. */
|
|
12
12
|
highlight(text: string): string;
|
|
13
13
|
/** A control that is present but cannot act: quieter than quiet text. */
|
|
14
14
|
disabled(text: string): string;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 52" width="220" height="52">
|
|
2
2
|
<style>
|
|
3
|
-
text { font:
|
|
3
|
+
text { font: 400 22px 'JetBrains Mono', SFMono-Regular, Consolas, Menlo, monospace; fill: rgb(166,181,255); text-anchor: middle; dominant-baseline: central; }
|
|
4
4
|
.star { animation: twinkle 2.4s ease-in-out infinite; }
|
|
5
5
|
.s2 { animation-delay: -.8s; }
|
|
6
6
|
.s3 { animation-delay: -1.6s; }
|
|
7
7
|
@keyframes twinkle { 0%,100% { fill-opacity: .25; } 45%,55% { fill-opacity: 1; } }
|
|
8
8
|
@media (prefers-reduced-motion: reduce) { .star { animation: none; fill-opacity: .7; } }
|
|
9
9
|
</style>
|
|
10
|
-
<text class="star s1"
|
|
11
|
-
<text class="star s2" x="110" y="26">*</text>
|
|
12
|
-
<text class="star s3" x="150" y="26">*</text>
|
|
10
|
+
<text x="110" y="30" xml:space="preserve"><tspan class="star s1">*</tspan> <tspan class="star s2">*</tspan> <tspan class="star s3">*</tspan></text>
|
|
13
11
|
</svg>
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 52" width="220" height="52">
|
|
2
2
|
<style>
|
|
3
|
-
text { font:
|
|
3
|
+
text { font: 400 22px 'JetBrains Mono', SFMono-Regular, Consolas, Menlo, monospace; fill: rgb(38,56,210); text-anchor: middle; dominant-baseline: central; }
|
|
4
4
|
.star { animation: twinkle 2.4s ease-in-out infinite; }
|
|
5
5
|
.s2 { animation-delay: -.8s; }
|
|
6
6
|
.s3 { animation-delay: -1.6s; }
|
|
7
7
|
@keyframes twinkle { 0%,100% { fill-opacity: .25; } 45%,55% { fill-opacity: 1; } }
|
|
8
8
|
@media (prefers-reduced-motion: reduce) { .star { animation: none; fill-opacity: .7; } }
|
|
9
9
|
</style>
|
|
10
|
-
<text class="star s1"
|
|
11
|
-
<text class="star s2" x="110" y="26">*</text>
|
|
12
|
-
<text class="star s3" x="150" y="26">*</text>
|
|
10
|
+
<text x="110" y="30" xml:space="preserve"><tspan class="star s1">*</tspan> <tspan class="star s2">*</tspan> <tspan class="star s3">*</tspan></text>
|
|
13
11
|
</svg>
|
package/docs/releases/0.2.4.md
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
## [0.2.4] - 2026-10-05
|
|
2
2
|
|
|
3
|
-
### New Features
|
|
4
|
-
|
|
5
|
-
- add README section navigation ([#678](https://github.com/timurproko/a1/pull/678))
|
|
6
|
-
|
|
7
3
|
### Changed
|
|
8
4
|
|
|
9
5
|
- upgrade pinned Pi to 1.0.0 ([#658](https://github.com/timurproko/a1/pull/658))
|
|
6
|
+
- upgrade pinned Pi to 1.0.2 ([#669](https://github.com/timurproko/a1/pull/669))
|
|
10
7
|
- add animated mark, section art, and browser preview ([#665](https://github.com/timurproko/a1/pull/665))
|
|
11
8
|
- keep the hero mark still and link only it to the site ([#666](https://github.com/timurproko/a1/pull/666))
|
|
12
9
|
- pick dark-mode art via picture sources ([#668](https://github.com/timurproko/a1/pull/668))
|
|
13
|
-
- upgrade pinned Pi to 1.0.2 ([#669](https://github.com/timurproko/a1/pull/669))
|
|
14
10
|
|
|
15
11
|
### Fixed
|
|
16
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timurproko/a1",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5-dev.698",
|
|
4
4
|
"description": "Standalone terminal workspace for supervised native and managed agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"privateLaunchContract": "neutral-launch-v1",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"typecheck:bin": "tsgo -p tsconfig.bin.json"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@earendil-works/pi-coding-agent": "1.0.
|
|
69
|
-
"@earendil-works/pi-tui": "1.0.
|
|
68
|
+
"@earendil-works/pi-coding-agent": "1.0.4",
|
|
69
|
+
"@earendil-works/pi-tui": "1.0.4",
|
|
70
70
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
71
71
|
"chalk": "5.6.2",
|
|
72
72
|
"cross-spawn": "7.0.6",
|