Initial commit: Shelly Manager with Textual CLI, Streamlit UI, and comprehensive .gitignore

Shelly device management app with mDNS/subnet discovery, inventory,
configuration, and mass operations for Gen1/Gen2+ devices.

Includes .gitignore excluding runtime data (device DB, user config),
AI conversation history, build artifacts, and common Python/OS patterns.
This commit is contained in:
2026-03-23 21:51:59 +01:00
commit 71803418e5
152 changed files with 23405 additions and 0 deletions
@@ -0,0 +1,39 @@
# Dracula Theme for Streamlit
# Popular dark theme with vibrant colors on dark background
[theme]
base = "dark"
primaryColor = "#bd93f9"
backgroundColor = "#282a36"
secondaryBackgroundColor = "#21222c"
codeBackgroundColor = "#21222c"
textColor = "#f8f8f2"
linkColor = "#8be9fd"
borderColor = "#44475a"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "8px"
buttonRadius = "8px"
font = "'Fira Sans':https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;500;600;700&display=swap"
codeFont = "'JetBrains Mono':https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
codeFontSize = "0.875rem"
codeTextColor = "#f8f8f2"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [700, 600, 600, 600, 600, 600]
linkUnderline = false
chartCategoricalColors = ["#bd93f9", "#50fa7b", "#ff79c6", "#8be9fd", "#ffb86c", "#ff5555", "#f1fa8c"]
# Dracula color palette
violetColor = "#bd93f9"
greenColor = "#50fa7b"
redColor = "#ff5555"
blueColor = "#8be9fd"
yellowColor = "#f1fa8c"
orangeColor = "#ffb86c"
[theme.sidebar]
backgroundColor = "#21222c"
secondaryBackgroundColor = "#191a21"
codeBackgroundColor = "#191a21"
borderColor = "#44475a"
@@ -0,0 +1,37 @@
# GitHub Theme for Streamlit
# Clean, developer-friendly, functional with signature blue accents
[theme]
primaryColor = "#0969da"
backgroundColor = "#ffffff"
secondaryBackgroundColor = "#f6f8fa"
codeBackgroundColor = "#f6f8fa"
textColor = "#1F2328"
linkColor = "#0969da"
borderColor = "#d0d7de"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "6px"
buttonRadius = "6px"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'JetBrains Mono':https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
codeFontSize = "0.85rem"
codeTextColor = "#1F2328"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [600, 600, 600, 600, 600, 600]
linkUnderline = false
chartCategoricalColors = ["#0969da", "#1a7f37", "#bf3989", "#8250df", "#cf222e", "#bf8700", "#57606a"]
# GitHub color palette
blueColor = "#0969da"
greenColor = "#1a7f37"
redColor = "#cf222e"
violetColor = "#8250df"
orangeColor = "#bf8700"
[theme.sidebar]
backgroundColor = "#f6f8fa"
secondaryBackgroundColor = "#eaeef2"
codeBackgroundColor = "#eaeef2"
borderColor = "#d0d7de"
@@ -0,0 +1,39 @@
# Minimal Dark Theme for Streamlit
# Clean, distraction-free dark theme with subtle accents
[theme]
base = "dark"
primaryColor = "#6366f1"
backgroundColor = "#18181b"
secondaryBackgroundColor = "#27272a"
codeBackgroundColor = "#27272a"
textColor = "#fafafa"
linkColor = "#818cf8"
borderColor = "#3f3f46"
showWidgetBorder = false
showSidebarBorder = false
baseRadius = "6px"
buttonRadius = "6px"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'JetBrains Mono':https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
codeFontSize = "0.85rem"
codeTextColor = "#e4e4e7"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [600, 600, 500, 500, 500, 500]
linkUnderline = false
chartCategoricalColors = ["#6366f1", "#8b5cf6", "#ec4899", "#14b8a6", "#f59e0b", "#ef4444", "#22c55e"]
# Color palette
violetColor = "#8b5cf6"
blueColor = "#6366f1"
greenColor = "#22c55e"
yellowColor = "#f59e0b"
orangeColor = "#f97316"
redColor = "#ef4444"
[theme.sidebar]
backgroundColor = "#09090b"
secondaryBackgroundColor = "#18181b"
codeBackgroundColor = "#18181b"
borderColor = "#27272a"
@@ -0,0 +1,39 @@
# Nord Theme for Streamlit
# Arctic, north-bluish color palette with frost-inspired accents
[theme]
base = "dark"
primaryColor = "#88c0d0"
backgroundColor = "#2e3440"
secondaryBackgroundColor = "#3b4252"
codeBackgroundColor = "#3b4252"
textColor = "#eceff4"
linkColor = "#81a1c1"
borderColor = "#4c566a"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "4px"
buttonRadius = "4px"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'JetBrains Mono':https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
codeFontSize = "0.875rem"
codeTextColor = "#d8dee9"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [600, 600, 600, 600, 600, 600]
linkUnderline = false
chartCategoricalColors = ["#88c0d0", "#81a1c1", "#5e81ac", "#a3be8c", "#ebcb8b", "#d08770", "#bf616a"]
# Nord color palette (Frost + Aurora)
blueColor = "#81a1c1"
greenColor = "#a3be8c"
yellowColor = "#ebcb8b"
orangeColor = "#d08770"
redColor = "#bf616a"
violetColor = "#b48ead"
[theme.sidebar]
backgroundColor = "#3b4252"
secondaryBackgroundColor = "#434c5e"
codeBackgroundColor = "#434c5e"
borderColor = "#4c566a"
@@ -0,0 +1,42 @@
# Snowflake Theme for Streamlit
# The Data Cloud company aesthetic - clean, professional, icy blue branding
[theme]
primaryColor = "#29B5E8"
backgroundColor = "#ffffff"
secondaryBackgroundColor = "#f4f9fc"
codeBackgroundColor = "#e8f4f8"
textColor = "#11567F"
linkColor = "#29B5E8"
borderColor = "#d0e8f2"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "8px"
buttonRadius = "8px"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'JetBrains Mono':https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
codeFontSize = "13px"
codeTextColor = "#11567F"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [600, 600, 600, 500, 500, 500]
linkUnderline = false
chartCategoricalColors = ["#29B5E8", "#FF8B00", "#36B37E", "#6554C0", "#DE350B", "#11567F", "#FFAB00", "#00A3BF"]
# Snowflake color palette
blueColor = "#29B5E8"
greenColor = "#36B37E"
yellowColor = "#FFAB00"
orangeColor = "#FF8B00"
redColor = "#DE350B"
violetColor = "#6554C0"
dataframeBorderColor = "#d0e8f2"
dataframeHeaderBackgroundColor = "#e8f4f8"
[theme.sidebar]
backgroundColor = "#11567F"
secondaryBackgroundColor = "#174D6A"
codeBackgroundColor = "#0E4D6B"
textColor = "#ffffff"
borderColor = "#1E6D94"
@@ -0,0 +1,38 @@
# Solarized Light Theme for Streamlit
# Precision colors designed for readability and reduced eye strain
[theme]
primaryColor = "#268bd2"
backgroundColor = "#fdf6e3"
secondaryBackgroundColor = "#eee8d5"
codeBackgroundColor = "#eee8d5"
textColor = "#657b83"
linkColor = "#268bd2"
borderColor = "#93a1a1"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "4px"
buttonRadius = "4px"
font = "'Source Sans 3':https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&display=swap"
codeFont = "'Source Code Pro':https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;500&display=swap"
codeFontSize = "0.875rem"
codeTextColor = "#586e75"
baseFontSize = 14
baseFontWeight = 400
headingFontSizes = ["32px", "24px", "20px", "16px", "14px", "12px"]
headingFontWeights = [600, 600, 600, 600, 600, 600]
linkUnderline = false
chartCategoricalColors = ["#268bd2", "#2aa198", "#859900", "#b58900", "#cb4b16", "#dc322f", "#d33682"]
# Solarized color palette
blueColor = "#268bd2"
greenColor = "#859900"
yellowColor = "#b58900"
orangeColor = "#cb4b16"
redColor = "#dc322f"
violetColor = "#6c71c4"
[theme.sidebar]
backgroundColor = "#eee8d5"
secondaryBackgroundColor = "#fdf6e3"
codeBackgroundColor = "#fdf6e3"
borderColor = "#93a1a1"
@@ -0,0 +1,34 @@
# Spotify Theme for Streamlit
# Bold, energetic, high contrast with signature green
[theme]
base = "dark"
primaryColor = "#1DB954"
backgroundColor = "#191414"
secondaryBackgroundColor = "#282828"
codeBackgroundColor = "#282828"
textColor = "#ffffff"
linkColor = "#1DB954"
borderColor = "#404040"
showWidgetBorder = false
showSidebarBorder = false
baseRadius = "8px"
buttonRadius = "full"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'Fira Code':https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500&display=swap"
codeFontSize = "0.85rem"
baseFontSize = 16
baseFontWeight = 400
headingFontWeights = [800, 700, 700, 600, 600, 600]
headingFontSizes = ["48px", "36px", "28px", "22px", "18px", "16px"]
chartCategoricalColors = ["#1DB954", "#1ED760", "#B3B3B3", "#535353", "#191414", "#FFFFFF", "#509BF5"]
# Spotify color palette
greenColor = "#1DB954"
blueColor = "#509BF5"
grayColor = "#B3B3B3"
[theme.sidebar]
backgroundColor = "#000000"
secondaryBackgroundColor = "#282828"
codeBackgroundColor = "#282828"
borderColor = "#333333"
@@ -0,0 +1,35 @@
# Stripe Theme for Streamlit
# Polished, professional, modern with signature purple/indigo gradients
[theme]
primaryColor = "#635bff"
backgroundColor = "#ffffff"
secondaryBackgroundColor = "#f6f9fc"
codeBackgroundColor = "#f7f9fc"
textColor = "#425466"
linkColor = "#635bff"
borderColor = "#e3e8ee"
showWidgetBorder = true
showSidebarBorder = true
baseRadius = "8px"
buttonRadius = "8px"
font = "Inter:https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
codeFont = "'Source Code Pro':https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;500&display=swap"
codeFontSize = "0.85rem"
codeTextColor = "#425466"
baseFontSize = 15
baseFontWeight = 400
headingFontSizes = ["40px", "32px", "24px", "20px", "16px", "14px"]
headingFontWeights = [600, 600, 600, 600, 600, 600]
linkUnderline = false
chartCategoricalColors = ["#635bff", "#00d4ff", "#0a2540", "#adbdcc", "#80e9ff", "#7a73ff", "#425466"]
# Stripe color palette
violetColor = "#635bff"
blueColor = "#00d4ff"
grayColor = "#adbdcc"
[theme.sidebar]
backgroundColor = "#f6f9fc"
secondaryBackgroundColor = "#ebeef1"
codeBackgroundColor = "#ebeef1"
borderColor = "#e3e8ee"