mirror of
https://github.com/sst/opencode.git
synced 2025-12-23 10:11:41 +00:00
chore: cleanup
This commit is contained in:
parent
8ce0966987
commit
ed96ae9d45
4 changed files with 2 additions and 19 deletions
|
|
@ -414,7 +414,6 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
|
|||
const rawText = rawParts.map((p) => ("content" in p ? p.content : "")).join("")
|
||||
|
||||
const atMatch = rawText.substring(0, cursorPosition).match(/@(\S*)$/)
|
||||
// Slash commands only trigger when / is at the start of input
|
||||
const slashMatch = rawText.match(/^\/(\S*)$/)
|
||||
|
||||
if (atMatch) {
|
||||
|
|
@ -675,7 +674,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
|
|||
|
||||
if (text.startsWith("/")) {
|
||||
const [cmdName, ...args] = text.split(" ")
|
||||
const commandName = cmdName.slice(1) // Remove leading "/"
|
||||
const commandName = cmdName.slice(1)
|
||||
const customCommand = sync.data.command.find((c) => c.name === commandName)
|
||||
if (customCommand) {
|
||||
sdk.client.session.command({
|
||||
|
|
|
|||
|
|
@ -100,7 +100,6 @@ export default function Layout(props: ParentProps) {
|
|||
const currentDirectory = params.dir ? base64Decode(params.dir) : undefined
|
||||
const projectIndex = currentDirectory ? projects.findIndex((p) => p.worktree === currentDirectory) : -1
|
||||
|
||||
// If we're not in any project, navigate to the first/last project based on direction
|
||||
if (projectIndex === -1) {
|
||||
const targetProject = offset > 0 ? projects[0] : projects[projects.length - 1]
|
||||
if (targetProject) navigateToProject(targetProject.worktree)
|
||||
|
|
@ -110,16 +109,13 @@ export default function Layout(props: ParentProps) {
|
|||
const sessions = currentSessions()
|
||||
const sessionIndex = params.id ? sessions.findIndex((s) => s.id === params.id) : -1
|
||||
|
||||
// Calculate target index within current project
|
||||
let targetIndex: number
|
||||
if (sessionIndex === -1) {
|
||||
// Not on a session - go to first session for "next", last session for "prev"
|
||||
targetIndex = offset > 0 ? 0 : sessions.length - 1
|
||||
} else {
|
||||
targetIndex = sessionIndex + offset
|
||||
}
|
||||
|
||||
// If target is within bounds, navigate to that session
|
||||
if (targetIndex >= 0 && targetIndex < sessions.length) {
|
||||
const session = sessions[targetIndex]
|
||||
navigateToSession(session)
|
||||
|
|
@ -127,19 +123,16 @@ export default function Layout(props: ParentProps) {
|
|||
return
|
||||
}
|
||||
|
||||
// Navigate to adjacent project
|
||||
const nextProjectIndex = projectIndex + (offset > 0 ? 1 : -1)
|
||||
const nextProject = projects[nextProjectIndex]
|
||||
if (!nextProject) return
|
||||
|
||||
const nextProjectSessions = flattenSessions(globalSync.child(nextProject.worktree)[0].session ?? [])
|
||||
if (nextProjectSessions.length === 0) {
|
||||
// Navigate to the project's new session page if no sessions
|
||||
navigateToProject(nextProject.worktree)
|
||||
return
|
||||
}
|
||||
|
||||
// If going down (offset > 0), go to first session; if going up (offset < 0), go to last session
|
||||
const targetSession = offset > 0 ? nextProjectSessions[0] : nextProjectSessions[nextProjectSessions.length - 1]
|
||||
navigate(`/${base64Encode(nextProject.worktree)}/session/${targetSession.id}`)
|
||||
queueMicrotask(() => scrollToSession(targetSession.id))
|
||||
|
|
@ -149,7 +142,6 @@ export default function Layout(props: ParentProps) {
|
|||
const [store, setStore] = globalSync.child(session.directory)
|
||||
const sessions = store.session ?? []
|
||||
const index = sessions.findIndex((s) => s.id === session.id)
|
||||
// Get next session (prefer next, then prev) before removing
|
||||
const nextSession = sessions[index + 1] ?? sessions[index - 1]
|
||||
|
||||
await globalSDK.client.session.update({
|
||||
|
|
|
|||
|
|
@ -145,14 +145,10 @@ export default function Page() {
|
|||
}
|
||||
})
|
||||
|
||||
// Auto-navigate to new messages when they're added
|
||||
// This handles the case after undo + submit where we want to see the new message
|
||||
// We track the last message ID and only navigate when a NEW message is added (ID increases)
|
||||
createEffect(
|
||||
on(
|
||||
() => visibleUserMessages().at(-1)?.id,
|
||||
(lastId, prevLastId) => {
|
||||
// Only navigate if a new message was added (lastId is greater/newer than previous)
|
||||
if (lastId && prevLastId && lastId > prevLastId) {
|
||||
setMessageStore("messageId", undefined)
|
||||
}
|
||||
|
|
@ -321,8 +317,7 @@ export default function Page() {
|
|||
])
|
||||
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
// @ts-expect-error
|
||||
if (document.activeElement?.dataset?.component === "terminal") return
|
||||
if ((document.activeElement as HTMLElement)?.dataset?.component === "terminal") return
|
||||
if (dialog.stack.length > 0) return
|
||||
|
||||
if (event.key === "PageUp" || event.key === "PageDown") {
|
||||
|
|
|
|||
|
|
@ -64,9 +64,6 @@ export function SessionTurn(
|
|||
if (!scrollRef) return
|
||||
if (state.autoScrolling) return
|
||||
const { scrollTop, scrollHeight, clientHeight } = scrollRef
|
||||
// prevents scroll loops - only update scrollY if we have meaningful scroll room
|
||||
// the gap clamp shrinks by 0.48px per pixel scrolled, hitting min at ~71px scroll
|
||||
// we need at least that much scroll headroom beyond the current scroll position
|
||||
const scrollRoom = scrollHeight - clientHeight
|
||||
if (scrollRoom > 100) {
|
||||
setState("scrollY", scrollTop)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue