From ef4e7513368325eb5860dc4053d2d1cb3b24a7b4 Mon Sep 17 00:00:00 2001 From: drew Date: Thu, 9 Apr 2026 20:15:18 +0400 Subject: [PATCH 1/2] docs: clean up README Signed-off-by: drew --- README.md | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 8076afa..2793e77 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ A modular terminal dashboard built with [Bubble Tea](https://github.com/charmbra ╰──────────────────────╯╰──────────────────────╯ ╭──────────────────────╮╭──────────────────────╮ │ WEATHER ││ UPTIME │ -│ ☀ Clear ││ 3d 7h 22m │ -│ 🌡 +18°C (feels +16) ││ since Mar 13, 08:14 │ +│ ☀ Clear ││ 3d 7h 22m │ +│ +18°C (feels +16) ││ since Mar 13, 08:14 │ ╰──────────────────────╯╰──────────────────────╯ ``` @@ -191,26 +191,6 @@ while IFS= read -r line; do done ``` -## Project structure - -``` -lattice/ - main.go Entry point, CLI, app model - internal/ - layout/layout.go Grid layout engine - modules/ Built-in module implementations - clock.go, system.go, github.go, - weather.go, uptime.go, greeting.go - plugin/runner.go External plugin process manager - pkg/ Public API (importable by plugins) - module/module.go Module interface - config/config.go Config types + loader - registry/registry.go Module registry (Register/Get/List) - styles/styles.go Shared colors + helpers - plugin/sdk.go Plugin SDK (types + Run helper) - config.example.yaml Example configuration -``` - ## License The software is protected by the MIT License. See [LICENSE](LICENSE) for details. From 2b187f35c9380b83a565fe1e20afd82803a151d2 Mon Sep 17 00:00:00 2001 From: drew Date: Thu, 9 Apr 2026 20:25:21 +0400 Subject: [PATCH 2/2] docs: add logo Signed-off-by: drew --- README.md | 2 ++ public/logo.jpg | Bin 0 -> 6320 bytes 2 files changed, 2 insertions(+) create mode 100644 public/logo.jpg diff --git a/README.md b/README.md index 2793e77..a5fc9a4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + + # Lattice A modular terminal dashboard built with [Bubble Tea](https://github.com/charmbracelet/bubbletea). Lattice ships with a set of built-in modules and supports external plugins written in any language. diff --git a/public/logo.jpg b/public/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62b264142df1395346fcc35ff88253ecaee6064d GIT binary patch literal 6320 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 miUhZ78)nnAZ0T