Ely Office: six offline-first desktop apps in Rust and GPUI

ElyDoc, ElyTable, ElyShow (LibreOfficeKit), ElyPDF (MuPDF), ElyTree (Git),
ElyMark (Milkdown and CodeMirror in CEF). ElyMail and ElyAgent follow.
This commit is contained in:
ZacharyZhang-NY committed 2026-10-08 21:20:08 -04:00
commit b7fca0146d
817 files changed
+143101

No files matched your search

@@ -0,0 +1,22 @@
accent = "#7aa2f7"
selection = "#292e42"
background = "#1a1b26"
foreground = "#a9b1d6"
color0 = "#1a1b26"
color1 = "#f7768e"
color2 = "#9ece6a"
color3 = "#e0af68"
color4 = "#7aa2f7"
color5 = "#ad8ee6"
color6 = "#449dab"
color7 = "#a9b1d6"
color8 = "#414868"
color9 = "#ff7a93"
color10 = "#b9f27c"
color11 = "#ff9e64"
color12 = "#7da6ff"
color13 = "#bb9af7"
color14 = "#0db9d7"
color15 = "#c0caf5"
@@ -0,0 +1,31 @@
mode = "light"
accent = "#1e66f5"
selection = "#ccd0da"
muted = "#acb0be"
background = "#eff1f5"
dark_background = "#e3e4e8"
darker_background = "#d7d8dc"
lighter_background = "#dce0e8"
foreground = "#4c4f69"
dark_foreground = "#9ca0b0"
light_foreground = "#5c5f77"
bright_foreground = "#4c4f69"
red = "#d20f39"
yellow = "#df8e1d"
orange = "#d84e2b"
green = "#40a02b"
cyan = "#179299"
blue = "#1e66f5"
magenta = "#ea76cb"
brown = "#6c2715"
bright_red = "#d20f39"
bright_yellow = "#df8e1d"
bright_green = "#40a02b"
bright_cyan = "#179299"
bright_blue = "#1e66f5"
bright_magenta = "#ea76cb"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#89b4fa"
selection = "#45475a"
muted = "#585b70"
background = "#1e1e2e"
dark_background = "#161622"
darker_background = "#101019"
lighter_background = "#313244"
foreground = "#cdd6f4"
dark_foreground = "#6c7086"
light_foreground = "#bac2de"
bright_foreground = "#cdd6f4"
red = "#f38ba8"
yellow = "#f9e2af"
orange = "#f6b6ab"
green = "#a6e3a1"
cyan = "#94e2d5"
blue = "#89b4fa"
magenta = "#f5c2e7"
brown = "#7b5b55"
bright_red = "#f38ba8"
bright_yellow = "#f9e2af"
bright_green = "#a6e3a1"
bright_cyan = "#94e2d5"
bright_blue = "#89b4fa"
bright_magenta = "#f5c2e7"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#7d82d9"
selection = "#252e56"
muted = "#6d7db6"
background = "#060B1E"
dark_background = "#040816"
darker_background = "#030610"
lighter_background = "#131a3a"
foreground = "#ffcead"
dark_foreground = "#6d7db6"
light_foreground = "#c9b8a6"
bright_foreground = "#ffcead"
red = "#ED5B5A"
yellow = "#E9BB4F"
orange = "#eb8b54"
green = "#92a593"
cyan = "#a3bfd1"
blue = "#7d82d9"
magenta = "#c89dc1"
brown = "#75452a"
bright_red = "#faaaa9"
bright_yellow = "#f7dc9c"
bright_green = "#c4cfc4"
bright_cyan = "#dfeaf0"
bright_blue = "#c2c4f0"
bright_magenta = "#ead7e7"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#7fbbb3"
selection = "#3d484d"
muted = "#475258"
background = "#2d353b"
dark_background = "#21272c"
darker_background = "#181d20"
lighter_background = "#343f44"
foreground = "#d3c6aa"
dark_foreground = "#4f585e"
light_foreground = "#9da9a0"
bright_foreground = "#d3c6aa"
red = "#e67e80"
yellow = "#dbbc7f"
orange = "#e09d7f"
green = "#a7c080"
cyan = "#83c092"
blue = "#7fbbb3"
magenta = "#d699b6"
brown = "#704e3f"
bright_red = "#e67e80"
bright_yellow = "#dbbc7f"
bright_green = "#a7c080"
bright_cyan = "#83c092"
bright_blue = "#7fbbb3"
bright_magenta = "#d699b6"
+31
View File
@@ -0,0 +1,31 @@
mode = "light"
accent = "#205EA6"
selection = "#CECDC3"
muted = "#B7B5AC"
background = "#FFFCF0"
dark_background = "#f2efe4"
darker_background = "#e5e2d8"
lighter_background = "#E6E4D9"
foreground = "#100F0F"
dark_foreground = "#878580"
light_foreground = "#403E3C"
bright_foreground = "#100F0F"
red = "#D14D41"
yellow = "#D0A215"
orange = "#d0772b"
green = "#879A39"
cyan = "#3AA99F"
blue = "#205EA6"
magenta = "#CE5D97"
brown = "#683b15"
bright_red = "#D14D41"
bright_yellow = "#D0A215"
bright_green = "#879A39"
bright_cyan = "#3AA99F"
bright_blue = "#4385BE"
bright_magenta = "#CE5D97"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#7daea3"
selection = "#504945"
muted = "#665c54"
background = "#282828"
dark_background = "#1e1e1e"
darker_background = "#161616"
lighter_background = "#3c3836"
foreground = "#d4be98"
dark_foreground = "#7c6f64"
light_foreground = "#bdae93"
bright_foreground = "#d4be98"
red = "#ea6962"
yellow = "#d8a657"
orange = "#e1875c"
green = "#a9b665"
cyan = "#89b482"
blue = "#7daea3"
magenta = "#d3869b"
brown = "#70432e"
bright_red = "#ea6962"
bright_yellow = "#d8a657"
bright_green = "#a9b665"
bright_cyan = "#89b482"
bright_blue = "#7daea3"
bright_magenta = "#d3869b"
+33
View File
@@ -0,0 +1,33 @@
mode = "dark"
accent = "#82FB9C"
selection = "#1f253a"
muted = "#2d3450"
background = "#0B0C16"
dark_background = "#080910"
darker_background = "#06060c"
lighter_background = "#151828"
foreground = "#ddf7ff"
dark_foreground = "#6a6e95"
light_foreground = "#b5c5db"
bright_foreground = "#ddf7ff"
hyprland_active_border = "rgba(26a269ee) rgba(2ec27eee) 45deg"
red = "#50f872"
yellow = "#50f7d4"
orange = "#50f7a3"
green = "#4fe88f"
cyan = "#7cf8f7"
blue = "#829dd4"
magenta = "#86a7df"
brown = "#287b51"
bright_red = "#85ff9d"
bright_yellow = "#a4ffec"
bright_green = "#9cf7c2"
bright_cyan = "#d1fffe"
bright_blue = "#c4d2ed"
bright_magenta = "#cddbf4"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#dcd7ba"
selection = "#363646"
muted = "#54546D"
background = "#1f1f28"
dark_background = "#17171e"
darker_background = "#111116"
lighter_background = "#223249"
foreground = "#dcd7ba"
dark_foreground = "#727169"
light_foreground = "#c8c093"
bright_foreground = "#dcd7ba"
red = "#c34043"
yellow = "#c0a36e"
orange = "#c17158"
green = "#76946a"
cyan = "#6a9589"
blue = "#7e9cd8"
magenta = "#957fb8"
brown = "#60382c"
bright_red = "#e82424"
bright_yellow = "#e6c384"
bright_green = "#98bb6c"
bright_cyan = "#7aa89f"
bright_blue = "#7fb4ca"
bright_magenta = "#938aa9"
+34
View File
@@ -0,0 +1,34 @@
mode = "dark"
accent = "#b59790"
selection = "#584e51"
muted = "#584e51"
background = "#0c0b0c"
dark_background = "#090809"
darker_background = "#060606"
lighter_background = "#0c0b0c"
foreground = "#FAFCFB"
dark_foreground = "#584e51"
light_foreground = "#cfd3cd"
bright_foreground = "#e2dddc"
hyprland_active_border = "rgba(8a8588ee) rgba(e2dddcee)"
hyprland_inactive_border = "rgba(584e51aa)"
active_border_color = "#d6d3de"
active_tab_background = "#a5a0b6"
red = "#c38b7b"
yellow = "#6B5E73"
green = "#87a9b0"
cyan = "#a5a0b6"
blue = "#b59790"
magenta = "#c4d8e2"
bright_red = "#c38b7b"
bright_yellow = "#6B5E73"
bright_green = "#87a9b0"
bright_cyan = "#a5a0b6"
bright_blue = "#b59790"
bright_magenta = "#c4d8e2"
+34
View File
@@ -0,0 +1,34 @@
mode = "dark"
accent = "#8bc9eb"
selection = "#243d56"
muted = "#304860"
background = "#16242d"
dark_background = "#101b21"
darker_background = "#0b1216"
lighter_background = "#1b2d40"
foreground = "#d6e2ee"
dark_foreground = "#4d86b0"
light_foreground = "#d6e2ee"
bright_foreground = "#f2fcff"
active_border_color = "#f2fcff"
active_tab_background = "#6fb8e3"
red = "#4d86b0"
yellow = "#6fa4c9"
orange = "#8bc9eb"
green = "#5e95bc"
cyan = "#b4e4f6"
blue = "#6fb8e3"
magenta = "#8bc9eb"
brown = "#456475"
bright_red = "#73a6cb"
bright_yellow = "#9dcae5"
bright_green = "#86b7d8"
bright_cyan = "#d1eef8"
bright_blue = "#f2fcff"
bright_magenta = "#b1d8ee"
+31
View File
@@ -0,0 +1,31 @@
mode = "light"
accent = "#3264eb"
selection = "#d0d0d0"
muted = "#9e9e9e"
background = "#fafafa"
dark_background = "#ececec"
darker_background = "#dedede"
lighter_background = "#f5f5f5"
foreground = "#212121"
dark_foreground = "#757575"
light_foreground = "#424242"
bright_foreground = "#000000"
red = "#c900c4"
yellow = "#026fde"
orange = "#026fde"
green = "#4a2fd0"
cyan = "#0c67de"
blue = "#3264eb"
magenta = "#8a4ad7"
brown = "#013a6f"
bright_red = "#f930fb"
bright_yellow = "#358fff"
bright_green = "#9f85e0"
bright_cyan = "#3986ff"
bright_blue = "#5482ff"
bright_magenta = "#b363ff"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#e68e0d"
selection = "#2a2a2a"
muted = "#333333"
background = "#121212"
dark_background = "#0d0d0d"
darker_background = "#090909"
lighter_background = "#1e1e1e"
foreground = "#bebebe"
dark_foreground = "#555555"
light_foreground = "#8a8a8d"
bright_foreground = "#bebebe"
red = "#D35F5F"
yellow = "#b91c1c"
orange = "#c63d3d"
green = "#FFC107"
cyan = "#bebebe"
blue = "#e68e0d"
magenta = "#D35F5F"
brown = "#631e1e"
bright_red = "#B91C1C"
bright_yellow = "#b90a0a"
bright_green = "#FFC107"
bright_cyan = "#eaeaea"
bright_blue = "#f59e0b"
bright_magenta = "#B91C1C"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#78824b"
selection = "#383838"
muted = "#666666"
background = "#222222"
dark_background = "#191919"
darker_background = "#121212"
lighter_background = "#2c2c2c"
foreground = "#c2c2b0"
dark_foreground = "#555555"
light_foreground = "#8a8a7e"
bright_foreground = "#c2c2b0"
red = "#685742"
yellow = "#b36d43"
orange = "#8d6242"
green = "#5f875f"
cyan = "#c9a554"
blue = "#78824b"
magenta = "#bb7744"
brown = "#463121"
bright_red = "#685742"
bright_yellow = "#b36d43"
bright_green = "#5f875f"
bright_cyan = "#c9a554"
bright_blue = "#78824b"
bright_magenta = "#bb7744"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#81a1c1"
selection = "#434c5e"
muted = "#4c566a"
background = "#2e3440"
dark_background = "#222730"
darker_background = "#191c23"
lighter_background = "#3b4252"
foreground = "#d8dee9"
dark_foreground = "#667080"
light_foreground = "#adb5c4"
bright_foreground = "#d8dee9"
red = "#bf616a"
yellow = "#ebcb8b"
orange = "#d5967a"
green = "#a3be8c"
cyan = "#88c0d0"
blue = "#81a1c1"
magenta = "#b48ead"
brown = "#6a4b3d"
bright_red = "#bf616a"
bright_yellow = "#ebcb8b"
bright_green = "#a3be8c"
bright_cyan = "#8fbcbb"
bright_blue = "#81a1c1"
bright_magenta = "#b48ead"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#509475"
selection = "#32473B"
muted = "#53685B"
background = "#111c18"
dark_background = "#0c1512"
darker_background = "#090f0d"
lighter_background = "#23372B"
foreground = "#C1C497"
dark_foreground = "#81B8A8"
light_foreground = "#D6D5BC"
bright_foreground = "#F7E8B2"
red = "#FF5345"
yellow = "#459451"
orange = "#a2734b"
green = "#549e6a"
cyan = "#2DD5B7"
blue = "#509475"
magenta = "#D2689C"
brown = "#513925"
bright_red = "#db9f9c"
bright_yellow = "#E5C736"
bright_green = "#63b07a"
bright_cyan = "#8CD3CB"
bright_blue = "#ACD4CF"
bright_magenta = "#75bbb3"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#faa968"
selection = "#134e5a"
muted = "#2a6b78"
background = "#05182e"
dark_background = "#031222"
darker_background = "#020c17"
lighter_background = "#0a2540"
foreground = "#f6dcac"
dark_foreground = "#3f8f8a"
light_foreground = "#a7c9c6"
bright_foreground = "#f6dcac"
red = "#f85525"
yellow = "#e97b3c"
orange = "#faa968"
green = "#028391"
cyan = "#8cbfb8"
blue = "#3f8f8a"
magenta = "#3f8f8a"
brown = "#743d1e"
bright_red = "#f85525"
bright_yellow = "#e97b3c"
bright_green = "#028391"
bright_cyan = "#8cbfb8"
bright_blue = "#faa968"
bright_magenta = "#3f8f8a"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#f38d70"
selection = "#403e41"
muted = "#72696a"
background = "#2c2525"
dark_background = "#211b1b"
darker_background = "#181414"
lighter_background = "#3d2f2a"
foreground = "#e6d9db"
dark_foreground = "#72696a"
light_foreground = "#c3b7b8"
bright_foreground = "#e6d9db"
red = "#fd6883"
yellow = "#f9cc6c"
orange = "#fb9a77"
green = "#adda78"
cyan = "#85dacc"
blue = "#f38d70"
magenta = "#a8a9eb"
brown = "#7d4d3b"
bright_red = "#ff8297"
bright_yellow = "#fcd675"
bright_green = "#c8e292"
bright_cyan = "#9bf1e1"
bright_blue = "#f8a788"
bright_magenta = "#bebffd"
+31
View File
@@ -0,0 +1,31 @@
mode = "light"
accent = "#56949f"
selection = "#dfdad9"
muted = "#cecacd"
background = "#faf4ed"
dark_background = "#ede7e1"
darker_background = "#e1dbd5"
lighter_background = "#f2e9e1"
foreground = "#575279"
dark_foreground = "#9893a5"
light_foreground = "#6e6a86"
bright_foreground = "#575279"
red = "#b4637a"
yellow = "#ea9d34"
orange = "#cf8057"
green = "#286983"
cyan = "#d7827e"
blue = "#56949f"
magenta = "#907aa9"
brown = "#67402b"
bright_red = "#b4637a"
bright_yellow = "#ea9d34"
bright_green = "#286983"
bright_cyan = "#d7827e"
bright_blue = "#56949f"
bright_magenta = "#907aa9"
+34
View File
@@ -0,0 +1,34 @@
mode = "dark"
accent = "#798186"
selection = "#343d41"
muted = "#4b4e55"
background = "#101315"
dark_background = "#0c0e10"
darker_background = "#080a0b"
lighter_background = "#101315"
foreground = "#cacccc"
dark_foreground = "#4b4e55"
light_foreground = "#cbc2be"
bright_foreground = "#a5aeb4"
hyprland_active_border = "rgba(798186ee) rgba(caccccee)"
hyprland_inactive_border = "rgb(1e1e1e)"
active_border_color = "#a8adb0"
active_tab_background = "#798186"
red = "#565d60"
yellow = "#d9dbdc"
green = "#9fa5a9"
cyan = "#707070"
blue = "#798186"
magenta = "#aeaeae"
bright_red = "#de6145"
bright_yellow = "#c9c2b4"
bright_green = "#343d41"
bright_cyan = "#707070"
bright_blue = "#5d6367"
bright_magenta = "#9a9a9a"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#7aa2f7"
selection = "#292e42"
muted = "#414868"
background = "#1a1b26"
dark_background = "#13141c"
darker_background = "#0e0e14"
lighter_background = "#24283b"
foreground = "#a9b1d6"
dark_foreground = "#565f89"
light_foreground = "#b4bee6"
bright_foreground = "#c0caf5"
red = "#f7768e"
yellow = "#e0af68"
orange = "#eb927b"
green = "#9ece6a"
cyan = "#449dab"
blue = "#7aa2f7"
magenta = "#ad8ee6"
brown = "#75493d"
bright_red = "#ff7a93"
bright_yellow = "#ff9e64"
bright_green = "#b9f27c"
bright_cyan = "#0db9d7"
bright_blue = "#7da6ff"
bright_magenta = "#bb9af7"
+31
View File
@@ -0,0 +1,31 @@
mode = "dark"
accent = "#8d8d8d"
selection = "#1a1a1a"
muted = "#7a7a7a"
background = "#000000"
dark_background = "#090909"
darker_background = "#070707"
lighter_background = "#1a1a1a"
foreground = "#ffffff"
dark_foreground = "#505050"
light_foreground = "#ececec"
bright_foreground = "#ffffff"
red = "#a4a4a4"
yellow = "#cecece"
orange = "#b9b9b9"
green = "#b6b6b6"
cyan = "#b0b0b0"
blue = "#8d8d8d"
magenta = "#9b9b9b"
brown = "#5c5c5c"
bright_red = "#a4a4a4"
bright_yellow = "#cecece"
bright_green = "#b6b6b6"
bright_cyan = "#b0b0b0"
bright_blue = "#8d8d8d"
bright_magenta = "#9b9b9b"
+29
View File
@@ -0,0 +1,29 @@
mode = "light"
accent = "#6e6e6e"
selection = "#c0c0c0"
muted = "#808080"
background = "#ffffff"
dark_background = "#f5f5f5"
darker_background = "#e8e8e8"
lighter_background = "#c0c0c0"
foreground = "#000000"
dark_foreground = "#c0c0c0"
light_foreground = "#000000"
bright_foreground = "#000000"
red = "#2a2a2a"
yellow = "#4a4a4a"
green = "#3a3a3a"
cyan = "#3e3e3e"
blue = "#1a1a1a"
magenta = "#2e2e2e"
bright_red = "#2a2a2a"
bright_yellow = "#4a4a4a"
bright_green = "#3a3a3a"
bright_cyan = "#3e3e3e"
bright_blue = "#1a1a1a"
bright_magenta = "#2e2e2e"
+78
View File
@@ -0,0 +1,78 @@
//! Harness-less: GPUI must run on the main thread.
use std::{
fs,
path::PathBuf,
process::{Command, Output},
};
use ely_platform::{AppId, logging, startup};
const CHILD: &str = "ELY_STARTUP_CHILD";
const DIR: &str = "ELY_STARTUP_DIR";
fn main() {
match std::env::var(CHILD).as_deref() {
Ok("launch") => {
boot();
gpui_platform::application().run(|_| panic!("fault: renderer"));
}
Ok("late") => {
boot();
startup::started();
panic!("fault: an hour in");
}
_ => {
a_panic_inside_gpuis_launch_callback_is_reported_as_a_failed_start();
a_panic_after_the_start_is_an_ordinary_panic();
println!("startup_panic: 2 cases pass");
}
}
}
fn boot() {
logging::init_in(AppId::Doc, &PathBuf::from(std::env::var_os(DIR).unwrap())).unwrap();
startup::guard(AppId::Doc);
}
fn child(mode: &str) -> (Output, tempfile::TempDir) {
let dir = tempfile::tempdir().unwrap();
let output = Command::new(std::env::current_exe().unwrap())
.env(CHILD, mode)
.env(DIR, dir.path())
.env("ELY_NO_DIALOG", "1")
.output()
.unwrap();
(output, dir)
}
fn a_panic_inside_gpuis_launch_callback_is_reported_as_a_failed_start() {
let (output, dir) = child("launch");
assert_eq!(output.status.code(), Some(1), "{output:?}");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
stderr.contains("ElyDoc could not start") && stderr.contains("fault: renderer"),
"{stderr}"
);
let log = fs::read_to_string(dir.path().join("ely.log")).unwrap();
assert!(
log.contains("ElyDoc cannot start: the app panicked before its first frame"),
"{log}"
);
}
fn a_panic_after_the_start_is_an_ordinary_panic() {
let (output, dir) = child("late");
assert_eq!(output.status.code(), Some(101), "{output:?}");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
stderr.contains("fault: an hour in") && !stderr.contains("could not start"),
"{stderr}"
);
let log = fs::read_to_string(dir.path().join("ely.log")).unwrap();
assert!(
log.contains("panic:") && !log.contains("cannot start"),
"{log}"
);
}