diff --git a/Cargo.lock b/Cargo.lock
index 718fcbf..dc4e60e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -549,7 +549,7 @@ dependencies = [
"bitflags 2.6.0",
"cexpr",
"clang-sys",
- "itertools 0.11.0",
+ "itertools 0.13.0",
"log",
"prettyplease",
"proc-macro2",
@@ -971,6 +971,46 @@ dependencies = [
"libloading",
]
+[[package]]
+name = "clap"
+version = "4.5.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7"
+
[[package]]
name = "cocoa"
version = "0.25.0"
@@ -1428,6 +1468,15 @@ dependencies = [
"subtle",
]
+[[package]]
+name = "directories"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35"
+dependencies = [
+ "dirs-sys 0.4.1",
+]
+
[[package]]
name = "dirs"
version = "4.0.0"
@@ -3860,7 +3909,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.87",
@@ -5443,6 +5492,8 @@ version = "0.1.0"
dependencies = [
"catty",
"chrono",
+ "clap",
+ "directories",
"dotenv",
"env_logger",
"gpui",
@@ -6011,6 +6062,12 @@ dependencies = [
"quote",
]
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
[[package]]
name = "strum"
version = "0.25.0"
diff --git a/assets/brand/reticle.svg b/assets/brand/reticle.svg
new file mode 100644
index 0000000..c056f7b
--- /dev/null
+++ b/assets/brand/reticle.svg
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/assets/brand/scope-login-bg.png b/assets/brand/scope-login-bg.png
new file mode 100644
index 0000000..703a60f
Binary files /dev/null and b/assets/brand/scope-login-bg.png differ
diff --git a/src/ui/Cargo.toml b/src/ui/Cargo.toml
index 0093a22..55ac201 100644
--- a/src/ui/Cargo.toml
+++ b/src/ui/Cargo.toml
@@ -28,6 +28,8 @@ random-string = "1.1.0"
rust-embed = "8.5.0"
chrono.workspace = true
catty = "0.1.5"
+directories = "5.0.1"
+clap = { version = "4.5.21", features = ["derive"] }
[features]
default = ["gpui/x11"]
diff --git a/src/ui/src/app.rs b/src/ui/src/app.rs
index 407ab44..5c1acbb 100644
--- a/src/ui/src/app.rs
+++ b/src/ui/src/app.rs
@@ -2,7 +2,7 @@ use components::theme::ActiveTheme;
use gpui::{div, img, rgb, Context, Model, ParentElement, Render, Styled, View, ViewContext, VisualContext};
use scope_backend_discord::{channel::DiscordChannel, client::DiscordClient, snowflake::Snowflake};
-use crate::channel::ChannelView;
+use crate::{app_state::StateModel, channel::ChannelView};
pub struct App {
channel: Model