feat: enable type-aware no-floating-promises rule, fix all 177 violations (#22741)

This commit is contained in:
Kit Langton
2026-04-15 23:27:32 -04:00
committed by GitHub
parent 343a564183
commit 80f1f1b5b8
103 changed files with 212 additions and 187 deletions

View File

@@ -350,7 +350,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
if (match) {
continued = true
if (args.fork) {
sdk.client.session.fork({ sessionID: match }).then((result) => {
void sdk.client.session.fork({ sessionID: match }).then((result) => {
if (result.data?.id) {
route.navigate({ type: "session", sessionID: result.data.id })
} else {
@@ -370,7 +370,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
createEffect(() => {
if (forked || sync.status !== "complete" || !args.sessionID || !args.fork) return
forked = true
sdk.client.session.fork({ sessionID: args.sessionID }).then((result) => {
void sdk.client.session.fork({ sessionID: args.sessionID }).then((result) => {
if (result.data?.id) {
route.navigate({ type: "session", sessionID: result.data.id })
} else {
@@ -818,7 +818,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
`Successfully updated to OpenCode v${result.data.version}. Please restart the application.`,
)
exit()
void exit()
})
const plugin = createMemo(() => {

View File

@@ -145,7 +145,7 @@ export function DialogSessionList() {
title: "delete",
onTrigger: async (option) => {
if (toDelete() === option.value) {
sdk.client.session.delete({
void sdk.client.session.delete({
sessionID: option.value,
})
setToDelete(undefined)

View File

@@ -19,7 +19,7 @@ export function DialogSessionRename(props: DialogSessionRenameProps) {
title="Rename Session"
value={session()?.title}
onConfirm={(value) => {
sdk.client.session.update({
void sdk.client.session.update({
sessionID: props.session,
title: value,
})

View File

@@ -26,7 +26,7 @@ export function ErrorComponent(props: {
useKeyboard((evt) => {
if (evt.ctrl && evt.name === "c") {
handleExit()
void handleExit()
}
})
const [copied, setCopied] = createSignal(false)
@@ -56,7 +56,7 @@ export function ErrorComponent(props: {
issueURL.searchParams.set("opencode-version", Installation.VERSION)
const copyIssueURL = () => {
Clipboard.copy(issueURL.toString()).then(() => {
void Clipboard.copy(issueURL.toString()).then(() => {
setCopied(true)
})
}

View File

@@ -235,7 +235,7 @@ export function Prompt(props: PromptProps) {
hidden: true,
onSelect: (dialog) => {
if (!input.focused) return
submit()
void submit()
dialog.clear()
},
},
@@ -280,7 +280,7 @@ export function Prompt(props: PromptProps) {
}, 5000)
if (store.interrupt >= 2) {
sdk.client.session.abort({
void sdk.client.session.abort({
sessionID: props.sessionID,
})
setStore("interrupt", 0)
@@ -429,7 +429,7 @@ export function Prompt(props: PromptProps) {
setStore("extmarkToPartIndex", new Map())
},
submit() {
submit()
void submit()
},
}
@@ -604,12 +604,12 @@ export function Prompt(props: PromptProps) {
if (!store.prompt.input) return
const trimmed = store.prompt.input.trim()
if (trimmed === "exit" || trimmed === "quit" || trimmed === ":q") {
exit()
void exit()
return
}
const selectedModel = local.model.current()
if (!selectedModel) {
promptModelWarning()
void promptModelWarning()
return
}
@@ -660,7 +660,7 @@ export function Prompt(props: PromptProps) {
const variant = local.model.variant.current()
if (store.mode === "shell") {
sdk.client.session.shell({
void sdk.client.session.shell({
sessionID,
agent: local.agent.current().name,
model: {
@@ -685,7 +685,7 @@ export function Prompt(props: PromptProps) {
const restOfInput = firstLineEnd === -1 ? "" : inputText.slice(firstLineEnd + 1)
const args = firstLineArgs.join(" ") + (restOfInput ? "\n" + restOfInput : "")
sdk.client.session.command({
void sdk.client.session.command({
sessionID,
command: command.slice(1),
arguments: args,
@@ -1208,7 +1208,7 @@ export function Prompt(props: PromptProps) {
const r = retry()
if (!r) return
if (isTruncated()) {
DialogAlert.show(dialog, "Retry Error", r.message)
void DialogAlert.show(dialog, "Retry Error", r.message)
}
}

View File

@@ -44,7 +44,7 @@ export const { use: useKV, provider: KVProvider } = createSimpleContext({
},
set(key: string, value: any) {
setStore(key, value)
Filesystem.writeJson(filePath, store)
void Filesystem.writeJson(filePath, store)
},
}
return result

View File

@@ -131,7 +131,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
return
}
state.pending = false
Filesystem.writeJson(filePath, {
void Filesystem.writeJson(filePath, {
recent: modelStore.recent,
favorite: modelStore.favorite,
variant: modelStore.variant,

View File

@@ -111,7 +111,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
event.subscribe((event) => {
switch (event.type) {
case "server.instance.disposed":
bootstrap()
void bootstrap()
break
case "permission.replied": {
const requests = store.permission[event.properties.sessionID]
@@ -336,7 +336,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
case "lsp.updated": {
const workspace = project.workspace.current()
sdk.client.lsp.status({ workspace }).then((x) => setStore("lsp", x.data ?? []))
void sdk.client.lsp.status({ workspace }).then((x) => setStore("lsp", x.data ?? []))
break
}
@@ -415,7 +415,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
.then(() => {
if (store.status !== "complete") setStore("status", "partial")
// non-blocking
Promise.all([
void Promise.all([
...(args.continue ? [] : [sessionListPromise.then((sessions) => setStore("session", reconcile(sessions)))]),
consoleStatePromise.then((consoleState) => setStore("console_state", reconcile(consoleState))),
sdk.client.command.list({ workspace }).then((x) => setStore("command", reconcile(x.data ?? []))),

View File

@@ -329,7 +329,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
})
function init() {
Promise.allSettled([
void Promise.allSettled([
resolveSystemTheme(store.mode),
getCustomThemes()
.then((custom) => {
@@ -377,7 +377,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
if (store.mode === mode) return
setStore("mode", mode)
renderer.clearPaletteCache()
resolveSystemTheme(mode)
void resolveSystemTheme(mode)
}
function pin(mode: "dark" | "light" = store.mode) {

View File

@@ -78,7 +78,7 @@ function Install(props: { api: TuiPluginApi }) {
}
setBusy(true)
props.api.plugins
void props.api.plugins
.install(mod, { global: global() })
.then((out) => {
if (!out.ok) {
@@ -188,7 +188,7 @@ function View(props: { api: TuiPluginApi }) {
if (!item) return
setLock(true)
const task = item.active ? props.api.plugins.deactivate(x) : props.api.plugins.activate(x)
task
void task
.then((ok) => {
if (!ok) {
props.api.ui.toast({

View File

@@ -29,7 +29,7 @@ export function DialogMessage(props: {
const msg = message()
if (!msg) return
sdk.client.session.revert({
void sdk.client.session.revert({
sessionID: props.sessionID,
messageID: msg.id,
})

View File

@@ -241,7 +241,7 @@ export function Session() {
if (kv.get(GO_UPSELL_DONT_SHOW)) return
DialogGoUpsell.show(dialog).then((dontShowAgain) => {
void DialogGoUpsell.show(dialog).then((dontShowAgain) => {
if (dontShowAgain) kv.set(GO_UPSELL_DONT_SHOW, true)
kv.set(GO_UPSELL_LAST_SEEN_AT, Date.now())
})
@@ -272,7 +272,7 @@ export function Session() {
useKeyboard((evt) => {
if (!session()?.parentID) return
if (keybind.match("app_exit", evt)) {
exit()
void exit()
}
})
@@ -483,7 +483,7 @@ export function Session() {
})
return
}
sdk.client.session.summarize({
void sdk.client.session.summarize({
sessionID: route.sessionID,
modelID: selectedModel.modelID,
providerID: selectedModel.providerID,
@@ -529,7 +529,7 @@ export function Session() {
const revert = session()?.revert?.messageID
const message = messages().findLast((x) => (!revert || x.id < revert) && x.role === "user")
if (!message) return
sdk.client.session
void sdk.client.session
.revert({
sessionID: route.sessionID,
messageID: message.id,
@@ -568,13 +568,13 @@ export function Session() {
if (!messageID) return
const message = messages().find((x) => x.role === "user" && x.id > messageID)
if (!message) {
sdk.client.session.unrevert({
void sdk.client.session.unrevert({
sessionID: route.sessionID,
})
prompt?.set({ input: "", parts: [] })
return
}
sdk.client.session.revert({
void sdk.client.session.revert({
sessionID: route.sessionID,
messageID: message.id,
})
@@ -1966,7 +1966,7 @@ function Task(props: ToolProps<typeof TaskTool>) {
onMount(() => {
if (props.metadata.sessionId && !sync.data.message[props.metadata.sessionId]?.length)
sync.session.sync(props.metadata.sessionId)
void sync.session.sync(props.metadata.sessionId)
})
const messages = createMemo(() => sync.data.message[props.metadata.sessionId ?? ""] ?? [])

View File

@@ -184,7 +184,7 @@ export function PermissionPrompt(props: { request: PermissionRequest }) {
onSelect={(option) => {
setStore("stage", "permission")
if (option === "cancel") return
sdk.client.permission.reply({
void sdk.client.permission.reply({
reply: "always",
requestID: props.request.id,
})
@@ -194,7 +194,7 @@ export function PermissionPrompt(props: { request: PermissionRequest }) {
<Match when={store.stage === "reject"}>
<RejectPrompt
onConfirm={(message) => {
sdk.client.permission.reply({
void sdk.client.permission.reply({
reply: "reject",
requestID: props.request.id,
message: message || undefined,
@@ -447,13 +447,13 @@ export function PermissionPrompt(props: { request: PermissionRequest }) {
setStore("stage", "reject")
return
}
sdk.client.permission.reply({
void sdk.client.permission.reply({
reply: "reject",
requestID: props.request.id,
})
return
}
sdk.client.permission.reply({
void sdk.client.permission.reply({
reply: "once",
requestID: props.request.id,
})

View File

@@ -45,14 +45,14 @@ export function QuestionPrompt(props: { request: QuestionRequest }) {
function submit() {
const answers = questions().map((_, i) => store.answers[i] ?? [])
sdk.client.question.reply({
void sdk.client.question.reply({
requestID: props.request.id,
answers,
})
}
function reject() {
sdk.client.question.reject({
void sdk.client.question.reject({
requestID: props.request.id,
})
}
@@ -67,7 +67,7 @@ export function QuestionPrompt(props: { request: QuestionRequest }) {
setStore("custom", inputs)
}
if (single()) {
sdk.client.question.reply({
void sdk.client.question.reply({
requestID: props.request.id,
answers: [[answer]],
})