summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-20 16:12:11 -0600
committerAdam <[email protected]>2026-01-20 16:12:15 -0600
commit85ef23a0983581c5be3d52ff9089da7fa80baf53 (patch)
tree6cc87c6e2a98a58cefc3f6a7aa6d6e0aac64d810 /packages
parent3b46f90124d362aaa553d6cfb0ff3811302a5921 (diff)
downloadopencode-85ef23a0983581c5be3d52ff9089da7fa80baf53.tar.gz
opencode-85ef23a0983581c5be3d52ff9089da7fa80baf53.zip
fix(app): don't interfere with scroll when using message nav
Diffstat (limited to 'packages')
-rw-r--r--packages/app/src/pages/session.tsx16
1 files changed, 8 insertions, 8 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 670e8ff02..14f77d63e 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -168,6 +168,7 @@ export default function Page() {
const prompt = usePrompt()
const permission = usePermission()
const [pendingMessage, setPendingMessage] = createSignal<string | undefined>(undefined)
+ const [pendingHash, setPendingHash] = createSignal<string | undefined>(undefined)
const sessionKey = createMemo(() => `${params.dir}${params.id ? "/" + params.id : ""}`)
const tabs = createMemo(() => layout.tabs(sessionKey()))
const view = createMemo(() => layout.view(sessionKey()))
@@ -1036,6 +1037,7 @@ export default function Page() {
const applyHash = (behavior: ScrollBehavior) => {
const hash = window.location.hash.slice(1)
if (!hash) {
+ setPendingHash(undefined)
autoScroll.forceScrollToBottom()
return
}
@@ -1044,21 +1046,25 @@ export default function Page() {
if (match) {
const msg = visibleUserMessages().find((m) => m.id === match[1])
if (msg) {
+ setPendingHash(undefined)
scrollToMessage(msg, behavior)
return
}
// If we have a message hash but the message isn't loaded/rendered yet,
// don't fall back to "bottom". We'll retry once messages arrive.
+ setPendingHash(match[1])
return
}
const target = document.getElementById(hash)
if (target) {
+ setPendingHash(undefined)
scrollToElement(target, behavior)
return
}
+ setPendingHash(undefined)
autoScroll.forceScrollToBottom()
}
@@ -1116,20 +1122,14 @@ export default function Page() {
visibleUserMessages().length
store.turnStart
- const targetId =
- pendingMessage() ??
- (() => {
- const hash = window.location.hash.slice(1)
- const match = hash.match(/^message-(.+)$/)
- if (!match) return undefined
- return match[1]
- })()
+ const targetId = pendingMessage() ?? pendingHash()
if (!targetId) return
if (store.messageId === targetId) return
const msg = visibleUserMessages().find((m) => m.id === targetId)
if (!msg) return
if (pendingMessage() === targetId) setPendingMessage(undefined)
+ if (pendingHash() === targetId) setPendingHash(undefined)
requestAnimationFrame(() => scrollToMessage(msg, "auto"))
})