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)
422 lines
6.8 KiB
Plaintext
422 lines
6.8 KiB
Plaintext
[%GradualConfiguration]
|
|
# Toolbar / menubar gradient — flat: both ends same color
|
|
left.header.color=#2a2e32
|
|
right.header.color=#2a2e32
|
|
header.text.color=#f2f2f2
|
|
header.text.shadow.color=0,0,0,0
|
|
left.dock.header.color=#1e1526
|
|
right.dock.header.color=#1e1526
|
|
dock.header.text.color=#f2f2f2
|
|
dock.header.text.shadow.color=0,0,0,0
|
|
|
|
[%ThemeHacks]
|
|
transparent.menus=false
|
|
transparent.tooltips=false
|
|
blurring=false
|
|
composite=false
|
|
|
|
[General]
|
|
author=NexusOS
|
|
comment=Flat dark purple theme, lime-green accents, purple selections
|
|
x11drag=all
|
|
double.click.exception=
|
|
group.label.boldFont=false
|
|
menubar.mouse.tracking=true
|
|
toolbutton.style=0
|
|
dialog.button.layout=0
|
|
splitter.width=4
|
|
scroll.arrows=false
|
|
scroll.min.extent=36
|
|
tooltip.delay=500
|
|
tooltip.count=1
|
|
vertical.center.dialogs=true
|
|
inline.spin.indicators=true
|
|
transient.scrollbar=false
|
|
submenu.overlap=3
|
|
submenu.delay=250
|
|
shadow.spread=0
|
|
shadow.x.offset=0
|
|
shadow.y.offset=0
|
|
focus.rect.color=#8cc63f
|
|
reduce.window.opacity=0
|
|
reduce.menu.opacity=0
|
|
small.icon.size=16
|
|
large.icon.size=32
|
|
button.icon.size=16
|
|
toolbar.icon.size=16
|
|
|
|
[GeneralColors]
|
|
# Palette. Without this section Kvantum falls back to its light default for
|
|
# view backgrounds, which rendered item views (e.g. the Add Bluetooth Device
|
|
# device list) as light-grey text on white. Values mirror ~/.config/kdeglobals.
|
|
window.color=#1e1526
|
|
base.color=#1e1526
|
|
alt.base.color=#1f2225
|
|
button.color=#2a2e32
|
|
light.color=#3a3d41
|
|
mid.light.color=#2e3236
|
|
dark.color=#140d1a
|
|
mid.color=#241a2d
|
|
highlight.color=#88008f
|
|
inactive.highlight.color=#5e0066
|
|
text.color=#f2f2f2
|
|
window.text.color=#f2f2f2
|
|
button.text.color=#f2f2f2
|
|
disabled.text.color=#6e7173
|
|
tooltip.text.color=#f2f2f2
|
|
highlight.text.color=#ffffff
|
|
link.color=#b8e373
|
|
link.visited.color=#a232a8
|
|
progress.indicator.text.color=#f2f2f2
|
|
|
|
[PanelButtonCommand]
|
|
inherits=PanelButtonTool
|
|
frame=false
|
|
interior=true
|
|
interior.element=button
|
|
interior.x.padding=8
|
|
interior.y.padding=4
|
|
indicator.size=0
|
|
text.shadow=0
|
|
text.margin=1
|
|
text.bold=false
|
|
min.height=26
|
|
min.width=60
|
|
|
|
[PanelButtonTool]
|
|
frame=false
|
|
interior=true
|
|
interior.element=toolbutton
|
|
interior.x.padding=6
|
|
interior.y.padding=3
|
|
indicator.size=0
|
|
text.shadow=0
|
|
text.margin=0
|
|
text.bold=false
|
|
min.height=22
|
|
min.width=0
|
|
|
|
[ToolbarButton]
|
|
inherits=PanelButtonTool
|
|
|
|
[Dock]
|
|
frame=false
|
|
interior=true
|
|
interior.element=dock
|
|
|
|
[DockTitle]
|
|
frame=false
|
|
interior=false
|
|
indicator.element=arrow
|
|
text.margin=3
|
|
text.shadow=0
|
|
|
|
[TitleBar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=titlebar
|
|
indicator.element=button
|
|
min.height=30
|
|
text.margin=4
|
|
text.shadow=0
|
|
text.bold=false
|
|
|
|
[GroupBox]
|
|
frame=true
|
|
frame.element=groupbox
|
|
frame.top=6
|
|
frame.bottom=2
|
|
frame.left=2
|
|
frame.right=2
|
|
interior=false
|
|
text.margin=4
|
|
text.shadow=0
|
|
text.bold=false
|
|
text.italic=false
|
|
|
|
[LineEdit]
|
|
frame=false
|
|
interior=true
|
|
interior.element=lineedit
|
|
interior.x.padding=8
|
|
interior.y.padding=4
|
|
min.height=26
|
|
min.width=0
|
|
|
|
[DropDownButton]
|
|
frame=false
|
|
interior=true
|
|
interior.element=button
|
|
indicator.element=arrow-down
|
|
indicator.size=10
|
|
|
|
[ToolboxTab]
|
|
frame=false
|
|
interior=true
|
|
interior.element=tab
|
|
text.margin=4
|
|
text.shadow=0
|
|
text.bold=false
|
|
|
|
[Tab]
|
|
frame=false
|
|
interior=true
|
|
interior.element=tab
|
|
interior.x.padding=10
|
|
interior.y.padding=4
|
|
indicator.element=tab-close
|
|
indicator.size=12
|
|
text.shadow=0
|
|
text.margin=2
|
|
min.height=26
|
|
min.width=60
|
|
|
|
[TabFrame]
|
|
frame=false
|
|
interior=true
|
|
interior.element=tabframe
|
|
frame.top=0
|
|
frame.bottom=0
|
|
frame.left=0
|
|
frame.right=0
|
|
|
|
[TreeExpander]
|
|
frame=false
|
|
interior=false
|
|
indicator.element=arrow
|
|
indicator.size=10
|
|
|
|
[HeaderSection]
|
|
frame=false
|
|
interior=true
|
|
interior.element=header
|
|
interior.x.padding=6
|
|
interior.y.padding=3
|
|
indicator.element=arrow
|
|
indicator.size=10
|
|
text.shadow=0
|
|
min.height=24
|
|
|
|
[SizeGrip]
|
|
frame=false
|
|
interior=false
|
|
indicator.element=sizegrip
|
|
indicator.size=14
|
|
|
|
[Splitter]
|
|
frame=false
|
|
interior=true
|
|
interior.element=splitter
|
|
min.height=4
|
|
min.width=4
|
|
|
|
[Slider]
|
|
frame=false
|
|
interior=true
|
|
interior.element=slider
|
|
indicator.element=slider-handle
|
|
indicator.size=16
|
|
min.height=4
|
|
min.width=4
|
|
|
|
[SliderCursorFlat]
|
|
frame=false
|
|
interior=true
|
|
interior.element=slider-handle
|
|
min.height=16
|
|
min.width=16
|
|
|
|
[ProgressbarContents]
|
|
frame=false
|
|
interior=true
|
|
interior.element=progressbar-fill
|
|
|
|
[Progressbar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=progressbar
|
|
indicator.size=0
|
|
text.shadow=0
|
|
min.height=6
|
|
min.width=0
|
|
|
|
[ItemView]
|
|
frame=false
|
|
interior=true
|
|
interior.element=itemview
|
|
interior.x.padding=4
|
|
interior.y.padding=2
|
|
|
|
[Toolbar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=toolbar
|
|
interior.x.padding=2
|
|
interior.y.padding=2
|
|
indicator.element=toolbar-handle
|
|
indicator.size=8
|
|
|
|
[ScrollbarSlider]
|
|
frame=false
|
|
interior=true
|
|
interior.element=scrollbar-slider
|
|
min.height=36
|
|
min.width=8
|
|
|
|
[ScrollbarGroove]
|
|
frame=false
|
|
interior=true
|
|
interior.element=scrollbar-groove
|
|
|
|
[Scrollbar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=scrollbar-groove
|
|
indicator.element=arrow
|
|
indicator.size=0
|
|
min.height=8
|
|
min.width=8
|
|
|
|
[ScrollArrow]
|
|
frame=false
|
|
interior=false
|
|
indicator.element=arrow
|
|
indicator.size=8
|
|
min.height=0
|
|
min.width=0
|
|
|
|
[CheckBox]
|
|
frame=false
|
|
interior=true
|
|
interior.element=checkbox
|
|
indicator.element=checkbox-indicator
|
|
indicator.size=14
|
|
text.shadow=0
|
|
text.margin=3
|
|
min.height=16
|
|
min.width=16
|
|
|
|
[RadioButton]
|
|
frame=false
|
|
interior=true
|
|
interior.element=radiobutton
|
|
indicator.element=radiobutton-indicator
|
|
indicator.size=8
|
|
text.shadow=0
|
|
text.margin=3
|
|
min.height=16
|
|
min.width=16
|
|
|
|
[Separator]
|
|
frame=false
|
|
interior=true
|
|
interior.element=separator
|
|
min.height=1
|
|
min.width=1
|
|
|
|
[ComboBox]
|
|
frame=false
|
|
interior=true
|
|
interior.element=combobox
|
|
interior.x.padding=8
|
|
interior.y.padding=4
|
|
indicator.element=arrow-down
|
|
indicator.size=10
|
|
min.height=26
|
|
min.width=0
|
|
|
|
[SpinBox]
|
|
frame=false
|
|
interior=true
|
|
interior.element=spinbox
|
|
interior.x.padding=6
|
|
interior.y.padding=3
|
|
indicator.element=arrow
|
|
indicator.size=10
|
|
min.height=26
|
|
min.width=0
|
|
|
|
[Frame]
|
|
frame=true
|
|
frame.element=frame
|
|
frame.top=1
|
|
frame.bottom=1
|
|
frame.left=1
|
|
frame.right=1
|
|
interior=false
|
|
|
|
[MenuItem]
|
|
frame=false
|
|
interior=true
|
|
interior.element=menuitem
|
|
interior.x.padding=6
|
|
interior.y.padding=1
|
|
indicator.element=menuitem-arrow
|
|
indicator.size=10
|
|
text.shadow=0
|
|
min.height=22
|
|
|
|
[Menu]
|
|
frame=false
|
|
interior=true
|
|
interior.element=menu
|
|
interior.x.padding=0
|
|
interior.y.padding=2
|
|
text.shadow=0
|
|
min.height=0
|
|
min.width=0
|
|
|
|
[Menubar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=menubar
|
|
text.shadow=0
|
|
|
|
[MenubarItem]
|
|
frame=false
|
|
interior=true
|
|
interior.element=menubaritem
|
|
interior.x.padding=10
|
|
interior.y.padding=4
|
|
text.shadow=0
|
|
|
|
[ToolTip]
|
|
frame=false
|
|
interior=true
|
|
interior.element=tooltip
|
|
interior.x.padding=8
|
|
interior.y.padding=4
|
|
text.shadow=0
|
|
min.height=0
|
|
min.width=0
|
|
|
|
[StatusBar]
|
|
frame=false
|
|
interior=true
|
|
interior.element=statusbar
|
|
|
|
[Window]
|
|
frame=false
|
|
interior=true
|
|
interior.element=window
|
|
interior.x.padding=0
|
|
interior.y.padding=0
|
|
|
|
[Dialog]
|
|
frame=false
|
|
interior=true
|
|
interior.element=window
|
|
|
|
[MessageBox]
|
|
inherits=Dialog
|
|
text.bold=false
|
|
|
|
[GenericFrame]
|
|
frame=true
|
|
frame.element=frame
|
|
frame.top=1
|
|
frame.bottom=1
|
|
frame.left=1
|
|
frame.right=1
|
|
interior=false
|