Files
NexusOS/assets/themes/KDE/look-and-feel/com.nexusos.desktop/contents/splash/Splash.qml
T
janvanwan 42eaed647a feat: sync with upstream — v1.2.0, in-app updates, Projects, modules
Brings the public tree back in line with the development repo after several
weeks of drift caused by a stale publish include list.

New:
- In-app update path: GET /update/check compares the checkout against
  origin/main and POST /update/apply runs `ncp upgrade` detached (pull,
  rebuild, restart). The sidebar shows the version, checks on click, and
  offers an "update available" pill.
- Projects: a project workspace groups chats and RAG documents, with
  per-project instructions and document retrieval scoped to the active
  project. Replaces the standalone Documents page.
- modules/: auto-discovered feature plugins (mail, network) with their
  frontend counterparts and tests.
- Memory curation runs in-process (synapse/memory/curator.py) on the chat
  model when a conversation goes idle. The separate memory service on :8001
  is gone, along with the launcher lines that started it.

Also: the KDE theme, panel and Promethean terminal assets, the full test
suite, and VERSION 1.2.0.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-08-25 09:13:55 -05:00

96 lines
2.8 KiB
QML

/*
NexusOS Plasma startup splash.
Deliberately plain QtQuick -- no PlasmaCore import. ksplashqml runs this
before the session is up, and the fewer modules it has to resolve at that
point the fewer ways it has to fail; sizes are proportional to the screen
instead of Units.gridUnit for the same reason.
ksplashqml drives `stage` from 0 to 6 as the session comes up, which fills
the progress bar. The content is deliberately opaque from the start rather
than faded in on stage 2 the way Breeze's splash does: if that signal never
arrives -- as under `ksplashqml --test` -- a stage-gated splash shows nothing
but a blank coloured screen. Palette matches assets/themes/_palette.py.
*/
import QtQuick 2.15
Rectangle {
id: root
color: "#1e1526"
property int stage
onStageChanged: {
if (stage == 6) {
outroAnimation.running = true;
}
}
// Same brushed-metal ground as the Plymouth, SDDM and lock screens. Raster,
// not the source SVG: QtSvg is Tiny 1.2 and drops the <pattern> textures.
Image {
anchors.fill: parent
source: "images/background.png"
fillMode: Image.PreserveAspectCrop
smooth: true
asynchronous: false
}
Item {
id: content
anchors.fill: parent
Image {
id: logo
anchors.horizontalCenter: parent.horizontalCenter
y: parent.height * 0.32
source: "images/logo.png"
width: Math.round(parent.width * 0.15)
fillMode: Image.PreserveAspectFit
smooth: true
asynchronous: false
}
Text {
id: brand
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: logo.bottom
anchors.topMargin: Math.round(parent.height * 0.03)
text: "NexusOS"
color: "#f2f2f2"
font.family: "Sans"
font.pixelSize: Math.round(parent.height * 0.026)
font.letterSpacing: 6
font.weight: Font.Light
}
Rectangle {
id: track
anchors.horizontalCenter: parent.horizontalCenter
y: Math.round(parent.height * 0.62)
width: Math.round(parent.width * 0.18)
height: 3
radius: height / 2
color: "#2e3236"
Rectangle {
height: parent.height
radius: parent.radius
color: "#8cc63f"
width: parent.width * Math.min(root.stage / 6, 1)
Behavior on width {
NumberAnimation { duration: 250; easing.type: Easing.InOutQuad }
}
}
}
}
OpacityAnimator {
id: outroAnimation
target: content
from: 1; to: 0
duration: 400
running: false
}
}