From d6a092acf90a81d132132337b5a45bc73321ca6f Mon Sep 17 00:00:00 2001 From: luckeyfaraday Date: Mon, 6 Jul 2026 18:24:07 +0200 Subject: [PATCH] Refresh OpenCode patch for upstream drift --- patches/opencode-athena.patch | 193 ++++++++++++++++++---------------- scripts/build.sh | 2 +- 2 files changed, 106 insertions(+), 89 deletions(-) diff --git a/patches/opencode-athena.patch b/patches/opencode-athena.patch index 8f138b7..9b3219e 100644 --- a/patches/opencode-athena.patch +++ b/patches/opencode-athena.patch @@ -1,5 +1,5 @@ diff --git a/packages/opencode/src/cli/tui/worker.ts b/packages/opencode/src/cli/tui/worker.ts -index 9f33cd5b934b3ccd96726acafc900e4fdfe2c99a..10afa62454343a95a46e24703f627f6be044df73 100644 +index 4cf6b2d44..8218e94f3 100644 --- a/packages/opencode/src/cli/tui/worker.ts +++ b/packages/opencode/src/cli/tui/worker.ts @@ -1,7 +1,7 @@ @@ -12,7 +12,7 @@ index 9f33cd5b934b3ccd96726acafc900e4fdfe2c99a..10afa62454343a95a46e24703f627f6b import { GlobalBus } from "@/bus/global" import { ServerAuth } from "@/server/auth" diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts -index 13540a73a36fcb27f591011d9147c60073055b45..e14df4dc431d389fa1881820083805d6ca1d6a60 100644 +index 13540a73a..e14df4dc4 100644 --- a/packages/opencode/src/index.ts +++ b/packages/opencode/src/index.ts @@ -5,7 +5,7 @@ import { GenerateCommand } from "./cli/cmd/generate" @@ -41,28 +41,35 @@ index 13540a73a36fcb27f591011d9147c60073055b45..e14df4dc431d389fa1881820083805d6 if ( msg?.startsWith("Unknown argument") || diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts -index 0ed10dc327ddb0eeddec38a3e74bf7c75a04cffd..6868dd5172e6fa0bc419d97cc0581169a366c071 100644 +index 430022025..7f0b82bd2 100644 --- a/packages/opencode/src/installation/index.ts +++ b/packages/opencode/src/installation/index.ts -@@ -13,3 +13,4 @@ +@@ -12,6 +12,7 @@ import path from "path" + import { makeRuntime } from "@opencode-ai/core/effect/runtime" import semver from "semver" import { InstallationChannel, InstallationVersion } from "@opencode-ai/core/installation/version" +import { makeAthenaInstallationLayer } from "./athena" import { NpmConfig } from "@opencode-ai/core/npm-config" -@@ -337,7 +338,10 @@ export const layer: Layer.Layer Promise; pluginHost: TuiPlugi +@@ -454,24 +455,24 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi if (!terminalTitleEnabled() || Flag.OPENCODE_DISABLE_TERMINAL_TITLE) return - + if (route.data.type === "home") { - renderer.setTerminalTitle("OpenCode") + renderer.setTerminalTitle(athenaRuntimeBrand) return } - + if (route.data.type === "session") { const session = sync.session.get(route.data.sessionID) if (!session || isDefaultTitle(session.title)) { @@ -126,36 +133,36 @@ index 17a9a554c2e4e6241414285f294867533b7055d0..2679eb6b8d2e0be75b719bd3f8aa28ee + renderer.setTerminalTitle(athenaRuntimeBrand) return } - + const title = session.title.length > 40 ? session.title.slice(0, 37) + "..." : session.title - renderer.setTerminalTitle(`OC | ${title}`) + renderer.setTerminalTitle(`${athenaTerminalPrefix} | ${title}`) return } - + if (route.data.type === "plugin") { - renderer.setTerminalTitle(`OC | ${route.data.id}`) + renderer.setTerminalTitle(`${athenaTerminalPrefix} | ${route.data.id}`) } }) - -@@ -1037,7 +1038,7 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi + +@@ -1070,7 +1071,7 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi await DialogAlert.show( dialog, "Update Complete", - `Successfully updated to OpenCode v${result.data.version}. Please restart the application.`, + `Successfully updated to Athena Code v${result.data.version}. Please restart the application.`, ) - + void exit() diff --git a/packages/tui/src/attention.ts b/packages/tui/src/attention.ts -index b309edcd9dd95c9d267cc78ba13960e95a178b46..4751cae9c37754cb424b7f5daf2f503c00d5b2a3 100644 +index b309edcd9..4751cae9c 100644 --- a/packages/tui/src/attention.ts +++ b/packages/tui/src/attention.ts @@ -38,14 +38,14 @@ type TuiAttentionHost = TuiAttention & { dispose(): void } - + -const DEFAULT_TITLE = "opencode" +const DEFAULT_TITLE = process.env.ATHENA_RUNTIME_BRAND?.trim() || "ATHENA CODE" const DEFAULT_PACK_ID = "opencode.default" @@ -170,7 +177,7 @@ index b309edcd9dd95c9d267cc78ba13960e95a178b46..4751cae9c37754cb424b7f5daf2f503c sounds: { default: defaultSoundPath, diff --git a/packages/tui/src/component/dialog-provider.tsx b/packages/tui/src/component/dialog-provider.tsx -index 2767508eb2d24dbe813fc4aebc7ea0f451144ad8..9aef9c5f13a9bbfb8c36c6dd75505c99b556f6cb 100644 +index 0fd51e3c1..99e0ed667 100644 --- a/packages/tui/src/component/dialog-provider.tsx +++ b/packages/tui/src/component/dialog-provider.tsx @@ -294,12 +294,14 @@ function AutoMethod(props: AutoMethodProps) { @@ -202,7 +209,7 @@ index 2767508eb2d24dbe813fc4aebc7ea0f451144ad8..9aef9c5f13a9bbfb8c36c6dd75505c99 Invalid code diff --git a/packages/tui/src/component/prompt/autocomplete.tsx b/packages/tui/src/component/prompt/autocomplete.tsx -index f2916173da3a507dbafdb614090cb71ea27c3c93..1701d935d0a5509f587bd9d820f205a060cbd657 100644 +index 099fa9d83..f8ee5b887 100644 --- a/packages/tui/src/component/prompt/autocomplete.tsx +++ b/packages/tui/src/component/prompt/autocomplete.tsx @@ -1,4 +1,5 @@ @@ -211,11 +218,15 @@ index f2916173da3a507dbafdb614090cb71ea27c3c93..1701d935d0a5509f587bd9d820f205a0 import { pathToFileURL } from "bun" import fuzzysort from "fuzzysort" import path from "path" -@@ -16,3 +17,2 @@ +@@ -15,7 +16,6 @@ import { useTuiPaths } from "../../context/runtime" + import { useTuiConfig } from "../../config" + import { useLocation } from "../../context/location" import { useTheme, selectedForeground } from "../../context/theme" -import { SplitBorder } from "../../ui/border" import { useTerminalDimensions } from "@opentui/solid" -@@ -716,12 +716,10 @@ export function Autocomplete(props: { + import { Locale } from "../../util/locale" + import type { PromptInfo } from "../../prompt/history" +@@ -727,12 +727,10 @@ export function Autocomplete(props: { left={position().x} width={position().width} zIndex={100} @@ -229,7 +240,7 @@ index f2916173da3a507dbafdb614090cb71ea27c3c93..1701d935d0a5509f587bd9d820f205a0 height={height()} scrollbarOptions={{ visible: false }} scrollAcceleration={scrollAcceleration()} -@@ -738,7 +736,7 @@ export function Autocomplete(props: { +@@ -749,7 +747,7 @@ export function Autocomplete(props: { { setStore("input", "mouse") -@@ -753,3 +751,12 @@ +@@ -764,7 +762,16 @@ export function Autocomplete(props: { + }} + onMouseUp={() => select()} + > - + {/* Athena: gold caret marks the selection, matching the command + console — no filled primary block bar. */} @@ -252,8 +266,9 @@ index f2916173da3a507dbafdb614090cb71ea27c3c93..1701d935d0a5509f587bd9d820f205a0 + > {option().display} + diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx -index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c84c21ea4d 100644 +index 115c10296..67b57feb6 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -15,8 +15,9 @@ import path from "path" @@ -276,16 +291,16 @@ index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c8 import { useDialog } from "../../ui/dialog" import { DialogProvider as DialogProviderConnect } from "../dialog-provider" import { DialogAlert } from "../../ui/dialog-alert" -@@ -206,7 +207,7 @@ export function Prompt(props: PromptProps) { +@@ -208,7 +209,7 @@ export function Prompt(props: PromptProps) { const workspace = usePromptWorkspace(props.sessionID) const move = usePromptMove({ projectID: project.project, sessionID: () => props.sessionID }) const [cursorVersion, setCursorVersion] = createSignal(0) - const currentProviderLabel = createMemo(() => local.model.parsed().provider) + const currentProviderLabel = createMemo(() => athenaRuntimeBrand) const hasRightContent = createMemo(() => Boolean(props.right)) - + function promptModelWarning() { -@@ -1319,22 +1320,7 @@ export function Prompt(props: PromptProps) { +@@ -1322,22 +1323,7 @@ export function Prompt(props: PromptProps) { ? (local.agent.list().find((a) => a.name === lastUserMessage()?.agent) ?? local.agent.current()) : local.agent.current() const color = agent ? local.agent.color(agent.name) : theme.border @@ -309,7 +324,7 @@ index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c8 }) const maxHeight = createMemo(() => tuiConfig.prompt?.max_height ?? Math.max(6, Math.floor(dimensions().height / 3))) const moveLabelWidth = createMemo(() => Math.max(12, Math.min(44, dimensions().width - 48))) -@@ -1344,22 +1330,25 @@ export function Prompt(props: PromptProps) { +@@ -1347,22 +1333,25 @@ export function Prompt(props: PromptProps) { (anchor = r)} visible={props.visible !== false} width="100%"> r.target?.focus()} @@ -361,7 +376,7 @@ index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c8 }> {(agent) => ( <> -@@ -1479,7 +1474,7 @@ export function Prompt(props: PromptProps) { +@@ -1485,7 +1480,7 @@ export function Prompt(props: PromptProps) { borderColor={borderHighlight()} customBorderChars={{ ...EmptyBorder, @@ -370,7 +385,7 @@ index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c8 }} > @@ -391,7 +406,7 @@ index aa002080b1ddd8274a9cc5bd93542f6d4a731c10..5a16e34b3de58cab63ed17f520d3e5c8 diff --git a/packages/tui/src/context/theme.tsx b/packages/tui/src/context/theme.tsx -index 909dd69ac2493cb0554520e25c3a0ecbebad6252..a7182ff7aaa0691b0557650ed50e765a2106dcda 100644 +index 909dd69ac..a7182ff7a 100644 --- a/packages/tui/src/context/theme.tsx +++ b/packages/tui/src/context/theme.tsx @@ -93,7 +93,7 @@ const [store, setStore] = createStore({ @@ -402,7 +417,7 @@ index 909dd69ac2493cb0554520e25c3a0ecbebad6252..a7182ff7aaa0691b0557650ed50e765a + active: "athena", ready: false, }) - + @@ -118,8 +118,8 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ if (!lock && pick(kv.get("theme_mode")) !== undefined) kv.set("theme_mode", undefined) draft.mode = mode @@ -421,7 +436,7 @@ index 909dd69ac2493cb0554520e25c3a0ecbebad6252..a7182ff7aaa0691b0557650ed50e765a - .catch(() => setStore("active", "opencode")) + .catch(() => setStore("active", "athena")) } - + onMount(() => { @@ -159,7 +159,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ if (!colors.palette[0]) { @@ -440,18 +455,18 @@ index 909dd69ac2493cb0554520e25c3a0ecbebad6252..a7182ff7aaa0691b0557650ed50e765a + if (store.active === "system") setStore("active", "athena") }) } - + @@ -263,7 +263,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ if (theme) return resolveTheme(theme, store.mode) } - + - return resolveTheme(store.themes.opencode, store.mode) + return resolveTheme(store.themes.athena, store.mode) }) - + createEffect(() => renderer.setBackgroundColor(values().background)) diff --git a/packages/tui/src/feature-plugins/builtins.ts b/packages/tui/src/feature-plugins/builtins.ts -index b67923f3c5d1646826ee66b8b314563beea16714..963feb7165c08690a829cb96c3c1fb5cb4c2f710 100644 +index b67923f3c..963feb716 100644 --- a/packages/tui/src/feature-plugins/builtins.ts +++ b/packages/tui/src/feature-plugins/builtins.ts @@ -1,4 +1,5 @@ @@ -460,14 +475,16 @@ index b67923f3c5d1646826ee66b8b314563beea16714..963feb7165c08690a829cb96c3c1fb5c import HomeFooter from "./home/footer" import HomeTips from "./home/tips" import SidebarContext from "./sidebar/context" -@@ -22,4 +23,5 @@ export function createBuiltinPlugins(options: { experimentalEventSystem: boolean }): BuiltinTuiPlugin[] { +@@ -20,6 +21,7 @@ export type BuiltinTuiPlugin = Omit & { + + export function createBuiltinPlugins(options: { experimentalEventSystem: boolean }): BuiltinTuiPlugin[] { return [ + Athena, HomeFooter, HomeTips, SidebarContext, diff --git a/packages/tui/src/logo.ts b/packages/tui/src/logo.ts -index a58a8cf995f7850ae86d3a3d7ca2612163680243..6f40d30d0162f8ed50615436aa0c944948d51c26 100644 +index a58a8cf99..6f40d30d0 100644 --- a/packages/tui/src/logo.ts +++ b/packages/tui/src/logo.ts @@ -1,6 +1,10 @@ @@ -481,23 +498,23 @@ index a58a8cf995f7850ae86d3a3d7ca2612163680243..6f40d30d0162f8ed50615436aa0c9449 + left: [" ", "▄▀▀▀▄ ▀▀█▀▀ █ █", "█▀▀▀█ █ █▀▀▀█", "▀ ▀ ▀ ▀ ▀"], + right: [" ", "█▀▀▀▀ █▄ █ ▄▀▀▀▄", "█▀▀▀ █ ▀▄█ █▀▀▀█", "▀▀▀▀▀ ▀ ▀ ▀ ▀"], } - + export const go = { diff --git a/packages/tui/src/routes/home.tsx b/packages/tui/src/routes/home.tsx -index d4145e2d87be4d36a645e18226824b7bbcf321a6..c07f54fa41811ac2452465318597632347019130 100644 +index d4145e2d8..c07f54fa4 100644 --- a/packages/tui/src/routes/home.tsx +++ b/packages/tui/src/routes/home.tsx @@ -15,7 +15,7 @@ import { HomeSessionDestinationProvider } from "./home/session-destination" - + let once = false const placeholder = { - normal: ["Fix a TODO in the codebase", "What is the tech stack of this project?", "Fix broken tests"], + normal: ["Brief me on this codebase", "Survey the failing tests", "Map the tech stack of this project"], shell: ["ls -la", "git status", "pwd"], } - + diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx -index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143f27e2b21 100644 +index 6d77b0ea5..e2b7cc2f6 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -1,5 +1,4 @@ @@ -506,7 +523,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 createContext, createEffect, createMemo, -@@ -121,7 +120,6 @@ const sessionBindingCommands = [ +@@ -122,7 +121,6 @@ const sessionBindingCommands = [ "session.unshare", "session.undo", "session.redo", @@ -514,18 +531,18 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 "session.toggle.conceal", "session.toggle.timestamps", "session.toggle.thinking", -@@ -241,8 +239,6 @@ export function Session() { +@@ -246,8 +244,6 @@ export function Session() { }) - + const dimensions = useTerminalDimensions() - const [sidebar, setSidebar] = kv.signal<"auto" | "hide">("sidebar", "auto") - const [sidebarOpen, setSidebarOpen] = createSignal(false) const [conceal, setConceal] = createSignal(true) const thinking = useThinkingMode() const thinkingMode = thinking.mode -@@ -256,12 +252,8 @@ export function Session() { +@@ -261,12 +257,8 @@ export function Session() { const [showGenericToolOutput, setShowGenericToolOutput] = kv.signal("generic_tool_output_visibility", false) - + const wide = createMemo(() => dimensions().width > 120) - const sidebarVisible = createMemo(() => { - if (session()?.parentID) return false @@ -538,7 +555,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 const showTimestamps = createMemo(() => timestamps() === "show") const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() ? 42 : 0) - 4) const providers = createMemo(() => Model.index(sync.data.provider)) -@@ -658,19 +650,6 @@ export function Session() { +@@ -663,19 +655,6 @@ export function Session() { }) }, }, @@ -558,7 +575,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 { title: conceal() ? "Disable code concealment" : "Enable code concealment", value: "session.toggle.conceal", -@@ -1388,25 +1367,23 @@ function UserMessage(props: { +@@ -1383,25 +1362,23 @@ function UserMessage(props: { alwaysSeparate.add(el)} @@ -599,15 +616,15 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 {text()} -@@ -1465,7 +1442,6 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las +@@ -1458,7 +1435,6 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las const { theme } = useTheme() const sync = useSync() const messages = createMemo(() => sync.data.message[props.message.sessionID] ?? []) - const model = createMemo(() => Model.name(ctx.providers(), props.message.providerID, props.message.modelID)) - + const final = createMemo(() => { return props.message.finish && !["tool-calls", "unknown"].includes(props.message.finish) -@@ -1540,7 +1516,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las +@@ -1533,7 +1509,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las @@ -616,7 +633,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 @@ -639,7 +656,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 -@@ -1662,7 +1639,7 @@ function ReasoningHeader(props: { +@@ -1655,7 +1632,7 @@ function ReasoningHeader(props: { @@ -648,7 +665,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 Thought -@@ -1686,6 +1663,8 @@ function ReasoningHeader(props: { +@@ -1679,6 +1656,8 @@ function ReasoningHeader(props: { function TextPart(props: { last: boolean; part: TextPart; message: AssistantMessage }) { const ctx = use() const { theme, syntax } = useTheme() @@ -657,7 +674,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 return ( alwaysSeparate.add(el)} paddingLeft={3} marginTop={1} flexShrink={0}> -@@ -1955,18 +1934,22 @@ export function InlineToolRow(props: { +@@ -1951,18 +1930,22 @@ export function InlineToolRow(props: { fg={props.color} attributes={props.denied ? TextAttributes.STRIKETHROUGH : undefined} > @@ -683,7 +700,7 @@ index e3758374c870505311ef1bec603ff9417ff2d0a3..19be836d2f41d48311bedc0629fb7143 {(pattern) => ( -@@ -485,7 +485,7 @@ function RejectPrompt(props: { onConfirm: (message: string) => void; onCancel: ( +@@ -483,7 +483,7 @@ function RejectPrompt(props: { onConfirm: (message: string) => void; onCancel: ( Reject permission @@ -710,7 +727,7 @@ index c787a84a85946af2aa4e8fec264223c55ddc66e4..7962e78aa8bc5f8db37abee2cb66217e = { - aura, - ayu, @@ -799,10 +816,10 @@ index e8a5f2c5a97384f95219a9e95d5d491beeb294ec..d530efd29d8b00188a5d9b4492890e0f + monolith, + press, } - + const pluginThemes: Record = {} diff --git a/packages/tui/src/ui/dialog.tsx b/packages/tui/src/ui/dialog.tsx -index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f692e37643 100644 +index 50281630b..336d54f8e 100644 --- a/packages/tui/src/ui/dialog.tsx +++ b/packages/tui/src/ui/dialog.tsx @@ -11,6 +11,12 @@ import { useClipboard } from "../context/clipboard" @@ -824,7 +841,7 @@ index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f6 } + const anchored = () => props.anchor === "bottom" + const scrim = () => props.scrim !== false - + return ( { -@@ -70,6 +80,8 @@ function init() { +@@ -73,6 +83,8 @@ function init() { onClose?: () => void }[], size: "medium" as "medium" | "large" | "xlarge", + anchor: "center" as "center" | "bottom", + scrim: true, }) - + const renderer = useRenderer() -@@ -140,6 +152,8 @@ function init() { +@@ -143,6 +155,8 @@ function init() { } batch(() => { setStore("size", "medium") @@ -862,7 +879,7 @@ index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f6 setStore("stack", []) }) refocus() -@@ -153,6 +167,8 @@ function init() { +@@ -156,6 +170,8 @@ function init() { if (item.onClose) item.onClose() } setStore("size", "medium") @@ -871,7 +888,7 @@ index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f6 setStore("stack", [ { element: input, -@@ -169,6 +185,18 @@ function init() { +@@ -172,6 +188,18 @@ function init() { setSize(size: "medium" | "large" | "xlarge") { setStore("size", size) }, @@ -889,8 +906,8 @@ index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f6 + }, } } - -@@ -210,7 +238,7 @@ export function DialogProvider(props: ParentProps) { + +@@ -213,7 +241,7 @@ export function DialogProvider(props: ParentProps) { onMouseUp={!Flag.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT ? copySelection : undefined} > @@ -900,7 +917,7 @@ index b6cd705b1e84572cedab77d8a3aa3f8f168493a5..c5fcddb8207ecd46b84445010ec971f6 diff --git a/packages/tui/src/ui/link.tsx b/packages/tui/src/ui/link.tsx -index cfd78bc3335c55cc7e2175b0dbe4bf27798a1bfe..77298239d2a6c9193b6e5cfe7fb9b67ddd5eada5 100644 +index cfd78bc33..77298239d 100644 --- a/packages/tui/src/ui/link.tsx +++ b/packages/tui/src/ui/link.tsx @@ -9,11 +9,17 @@ export interface LinkProps { @@ -909,7 +926,7 @@ index cfd78bc3335c55cc7e2175b0dbe4bf27798a1bfe..77298239d2a6c9193b6e5cfe7fb9b67d wrapMode?: "word" | "none" + attributes?: number } - + /** * Link component that renders clickable hyperlinks. * Clicking anywhere on the link text opens the URL in the default browser. @@ -930,7 +947,7 @@ index cfd78bc3335c55cc7e2175b0dbe4bf27798a1bfe..77298239d2a6c9193b6e5cfe7fb9b67d open(props.href).catch(() => {}) }} diff --git a/packages/tui/src/util/presentation.ts b/packages/tui/src/util/presentation.ts -index cf432bf967ebbd47300596943108d74be84cae0d..aad5a4fef3f426c69abeb7e9503168b6be6e7304 100644 +index cf432bf96..aad5a4fef 100644 --- a/packages/tui/src/util/presentation.ts +++ b/packages/tui/src/util/presentation.ts @@ -1,6 +1,7 @@ @@ -941,7 +958,7 @@ index cf432bf967ebbd47300596943108d74be84cae0d..aad5a4fef3f426c69abeb7e9503168b6 + left: [" ", "▄▀▀▀▄ ▀▀█▀▀ █ █", "█▀▀▀█ █ █▀▀▀█", "▀ ▀ ▀ ▀ ▀"], + right: [" ", "█▀▀▀▀ █▄ █ ▄▀▀▀▄", "█▀▀▀ █ ▀▄█ █▀▀▀█", "▀▀▀▀▀ ▀ ▀ ▀ ▀"], } - + const reset = "\x1b[0m" @@ -32,7 +33,7 @@ export function sessionEpilogue(input: { title: string; sessionID?: string }) { ...wordmark(" "), diff --git a/scripts/build.sh b/scripts/build.sh index dfc3683..88b0025 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,7 +3,7 @@ set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" SOURCE="${ATHENA_OPENCODE_SOURCE:-/tmp/athena-opencode-source}" -REVISION="4ecc3ac6535316c481982c169ad943ceae91a44e" +REVISION="eb6ff0c1e049e5dfb6f61eb74f925c0a8007490c" VERSION="${ATHENA_CODE_VERSION:-0.0.0-dev}" HOST_PLATFORM="$(node -p 'process.platform')" HOST_ARCH="$(node -p 'process.arch')"