summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2026-01-22 09:39:36 +0000
committerDavid Hill <[email protected]>2026-01-22 09:41:28 +0000
commitcf1fc02d27fa6d638a78f3a8f0cfd3ea8b1932e5 (patch)
treed786c568ab7ed8eedb77e43366bddcc90179322f /packages/app/src
parentba2e35e29c5fd48a112ae566e9e0dbd4562c491a (diff)
downloadopencode-cf1fc02d27fa6d638a78f3a8f0cfd3ea8b1932e5.tar.gz
opencode-cf1fc02d27fa6d638a78f3a8f0cfd3ea8b1932e5.zip
update jump to latest button with circular design and animation
- add arrow-down-to-line icon - circular 32px button centered above prompt input - fade/scale/translate animation on show/hide - fix duplicate language.ru keys in i18n files
Diffstat (limited to 'packages/app/src')
-rw-r--r--packages/app/src/i18n/de.ts1
-rw-r--r--packages/app/src/i18n/es.ts1
-rw-r--r--packages/app/src/i18n/fr.ts1
-rw-r--r--packages/app/src/i18n/ja.ts1
-rw-r--r--packages/app/src/i18n/ko.ts1
-rw-r--r--packages/app/src/i18n/zh.ts1
-rw-r--r--packages/app/src/pages/session.tsx35
7 files changed, 18 insertions, 23 deletions
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index 244637b04..3098e33b7 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -284,7 +284,6 @@ export const dict = {
"language.da": "Dänisch",
"language.ru": "Russisch",
"language.pl": "Polnisch",
- "language.ru": "Russisch",
"language.ar": "Arabisch",
"toast.language.title": "Sprache",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index 2bc850d16..ef07642a4 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -279,7 +279,6 @@ export const dict = {
"language.da": "Danés",
"language.ru": "Ruso",
"language.pl": "Polaco",
- "language.ru": "Ruso",
"language.ar": "Árabe",
"toast.language.title": "Idioma",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index 2438cc930..0e72b4e8b 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -279,7 +279,6 @@ export const dict = {
"language.da": "Danois",
"language.ru": "Russe",
"language.pl": "Polonais",
- "language.ru": "Russe",
"language.ar": "Arabe",
"toast.language.title": "Langue",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index b6e9857f1..fa977cc0d 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -277,7 +277,6 @@ export const dict = {
"language.da": "デンマーク語",
"language.ru": "ロシア語",
"language.pl": "ポーランド語",
- "language.ru": "ロシア語",
"language.ar": "アラビア語",
"toast.language.title": "言語",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index dbc0f89a0..0b88700dc 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -281,7 +281,6 @@ export const dict = {
"language.da": "덴마크어",
"language.ru": "러시아어",
"language.pl": "폴란드어",
- "language.ru": "러시아어",
"language.ar": "아랍어",
"toast.language.title": "언어",
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index 0993eb81a..a3b2d2bb4 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -277,7 +277,6 @@ export const dict = {
"language.da": "丹麦语",
"language.ru": "俄语",
"language.pl": "波兰语",
- "language.ru": "俄语",
"language.ar": "阿拉伯语",
"toast.language.title": "语言",
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 953634ca8..5e4eeafd5 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -1360,23 +1360,24 @@ export default function Page() {
}
>
<div class="relative w-full h-full min-w-0">
- <Show when={autoScroll.userScrolled()}>
- <div class="absolute right-4 md:right-6 bottom-[calc(var(--prompt-height,8rem)+16px)] z-[60] pointer-events-none">
- <Button
- variant="secondary"
- size="small"
- icon="chevron-down"
- class="pointer-events-auto shadow-sm"
- onClick={() => {
- setStore("messageId", undefined)
- autoScroll.forceScrollToBottom()
- window.history.replaceState(null, "", window.location.href.replace(/#.*$/, ""))
- }}
- >
- {language.t("session.messages.jumpToLatest")}
- </Button>
- </div>
- </Show>
+ <div
+ class="absolute left-1/2 -translate-x-1/2 bottom-[calc(var(--prompt-height,8rem)+32px)] z-[60] pointer-events-none transition-all duration-200 ease-out"
+ classList={{
+ "opacity-100 translate-y-0 scale-100": autoScroll.userScrolled(),
+ "opacity-0 translate-y-2 scale-95 pointer-events-none": !autoScroll.userScrolled(),
+ }}
+ >
+ <button
+ class="pointer-events-auto size-8 flex items-center justify-center rounded-full bg-background-base border border-border-base shadow-sm text-text-base hover:bg-background-stronger transition-colors"
+ onClick={() => {
+ setStore("messageId", undefined)
+ autoScroll.forceScrollToBottom()
+ window.history.replaceState(null, "", window.location.href.replace(/#.*$/, ""))
+ }}
+ >
+ <Icon name="arrow-down-to-line" />
+ </button>
+ </div>
<div
ref={setScrollRef}
onScroll={(e) => {