feat: backups page cleanup before worlds (#5844)

* feat: card alignment + fix modals

* feat: change admon title in restore alert modal

* fix: lint

* feat: backups queue api into api-client

* feat: impl backup queue api endpoints into frontend

* feat: ack fix

* feat: bulk actions

* feat: bulk delete impl

* fix: lint

* fix: align error states

* fix: transition group

* feat: ready for qa

* fix: lint

* feat: qa

* feat: stacked admonitions component

* fix: issues with stacking

* feat: hook up admonition stacking + fix app csp for staging kyros nodes

* fix: logs.vue

* qa: close stack on admonitions click

* fix: all problems with stacked admonitions

* qa: admonition cleanup and copy overhaul draft

* fix: qa issues padding

* fix: padding bug

* feat: qa

* fix: intercom in app csp bug

* fix: positioning intercom

* feat: loading overlay on top of console + admon consistency changes

* feat: scroll indicator fade in backup delete modal + admon timestamp fix

* feat: move action bar behind modal

* fix: lint + i18n

* fix: server ping spam on filter (cache but clear on unmount)

* fix: 1 admon fade in flicker issue

* chore: temp staging undo

* qa: changes

* fix: lint

* chore: revert staging to use staging

* fix: scoping
This commit is contained in:
Calum H.
2026-04-27 20:03:48 +01:00
committed by GitHub
parent 85ae1f2074
commit 620894aecb
79 changed files with 4640 additions and 1656 deletions

View File

@@ -58,9 +58,10 @@
ref="terminalRef"
class="min-h-0 flex-1"
:show-input="resolvedShowInput"
:disable-input="resolvedDisableInput"
:disable-input="resolvedInputDisabled"
:fullscreen="isFullscreen"
:empty-state-type="ctx.emptyStateType"
:loading="resolvedLoading"
@command="handleCommand"
@ready="handleTerminalReady"
/>
@@ -206,6 +207,15 @@ const resolvedDisableInput = computed(() => {
return isRef(v) ? v.value : v
})
// needs historical log start/end flags on ws to be properly useful
const resolvedLoading = computed(() => {
const v = ctx.loading
if (!v) return false
return v.value
})
const resolvedInputDisabled = computed(() => resolvedDisableInput.value || resolvedLoading.value)
const resolvedShareDisabled = computed(() => {
const v = ctx.shareDisabled
if (!v) return false
@@ -237,6 +247,11 @@ function rewriteFiltered() {
const term = terminalRef.value?.terminal
if (!term) return
const lines = ctx.logLines.value
if (resolvedLoading.value && lines.length === 0 && isLiveSource.value) {
terminalRef.value?.clearEmptyState()
lastWrittenIndex = 0
return
}
if (lines.length === 0 && isLiveSource.value) {
writeEmptyState()
return
@@ -271,6 +286,12 @@ watch(ctx.logLines, (lines, oldLines) => {
if (!term) return
if (lines.length === 0 && isLiveSource.value) {
if (resolvedLoading.value) {
terminalRef.value?.clearEmptyState()
lastWrittenIndex = 0
return
}
writeEmptyState()
return
}
@@ -312,6 +333,12 @@ watch(searchQuery, () => {
}, 200)
})
watch(resolvedLoading, (loading) => {
if (!loading) {
rewriteFiltered()
}
})
function handleCommand(cmd: string) {
ctx.sendCommand?.(cmd)
}