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

+36
View File
@@ -0,0 +1,36 @@
# Title
Text with $e^{i\pi} + 1 = 0$ inline and a note.[^1]
$$I = \int \rho R^{2} dV$$
- [x] done
- [ ] open
| a | b |
| - | - |
| 1 | 2 |
```rust
fn main() {}
```
$$
\int_0^1 x\,dx
$$
$$
\frac{1}{
$$
```mermaid
graph TD
A --> B
```
```mermaid
graph TD
A -->
```
[^1]: The note.
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
雷电芽衣 ,zacharyzhang,leidianyayis-Mac-mini.local,08.10.2026 20:49,file:///private/var/folders/g4/sj7njkr93jz0rgmg0b_zqnvr0000gn/T/tmp.mPypHxNqRv/home-ely-doc/Library/Application%20Support/ElyOffice/ely-doc/lok-profile;
+1
View File
@@ -0,0 +1 @@
雷电芽衣 ,zacharyzhang,leidianyayis-Mac-mini.local,08.10.2026 20:50,file:///private/var/folders/g4/sj7njkr93jz0rgmg0b_zqnvr0000gn/T/tmp.rkBzVqQEZC/home-ely-show/Library/Application%20Support/ElyOffice/ely-show/lok-profile;
+1
View File
@@ -0,0 +1 @@
雷电芽衣 ,zacharyzhang,leidianyayis-Mac-mini.local,08.10.2026 20:50,file:///private/var/folders/g4/sj7njkr93jz0rgmg0b_zqnvr0000gn/T/tmp.rkBzVqQEZC/home-ely-table/Library/Application%20Support/ElyOffice/ely-table/lok-profile;
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.presentation">
<office:font-face-decls><style:font-face style:name="Nowhere Sans" svg:font-family="'Nowhere Sans'"/></office:font-face-decls>
<office:automatic-styles>
<style:style style:name="T1" style:family="text"><style:text-properties style:font-name="Nowhere Sans"/></style:style>
</office:automatic-styles>
<office:body><office:presentation>
<draw:page draw:name="One"><draw:frame svg:x="2cm" svg:y="2cm" svg:width="10cm" svg:height="3cm"><draw:text-box><text:p><text:span text:style-name="T1">Lost font</text:span></text:p></draw:text-box></draw:frame></draw:page>
<draw:page draw:name="Two"><draw:frame draw:name="Gone" svg:x="2cm" svg:y="2cm" svg:width="6cm" svg:height="4cm"><draw:image xlink:href="file:///nowhere/gone.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame></draw:page>
<draw:page draw:name="Three"><draw:frame draw:name="Empty" svg:x="2cm" svg:y="2cm" svg:width="6cm" svg:height="4cm"><draw:object xlink:href="./Object 9" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame></draw:page>
<draw:page draw:name="Four"><draw:frame draw:name="Bad" svg:x="2cm" svg:y="2cm" svg:width="6cm" svg:height="4cm"><draw:image xlink:href="broken.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame><draw:frame draw:name="Junk" svg:x="9cm" svg:y="2cm" svg:width="6cm" svg:height="4cm"><draw:image><office:binary-data>bm90IGFuIGltYWdlIGF0IGFsbA==</office:binary-data></draw:image></draw:frame></draw:page>
<draw:page draw:name="Five"><draw:frame draw:name="Linked" svg:x="2cm" svg:y="2cm" svg:width="6cm" svg:height="4cm"><draw:object xlink:href="linked.odt" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame></draw:page>
</office:presentation></office:body>
</office:document>
+2
View File
@@ -0,0 +1,2 @@
// Outside the content folder; it must never run.
window.outsideRan = true;
+32
View File
@@ -0,0 +1,32 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
body { background: var(--ely-bg); color: var(--ely-fg); margin: 0; }
textarea { width: 90%; height: 200px; }
</style>
</head>
<body>
<div id="marker" style="width: 300px; height: 150px; background: rgb(255, 0, 170)"></div>
<textarea id="text" aria-label="Text"></textarea>
<script src="../web-outside/evil.js"></script>
<script>
// The probe asks; the page answers through elyQuery.
window.report = (step) => window.elyQuery({
request: JSON.stringify({
step,
value: document.getElementById("text").value,
focused: document.activeElement && document.activeElement.id,
fg: getComputedStyle(document.documentElement).getPropertyValue("--ely-fg").trim(),
ratio: window.devicePixelRatio,
outside: Boolean(window.outsideRan),
rtc: typeof window.RTCPeerConnection,
}),
onSuccess: () => {},
onFailure: (code, message) => console.error("probe query failed", code, message),
});
document.getElementById("text").focus();
</script>
</body>
</html>