Skip to content

Commit 9765559

Browse files
committed
OpenFall v0.1.0-alpha: an autosaving digital journal and odd-ball file examiner
Open-source desktop text editor where documents are "leaves": angled bookmark ribbons overhanging a transparent window edge, autosaved to disk. Code and hex examiner, Terminal/List search, sandboxed web leaf, multi-window, Dark/Light themes. Built with Electron, React, and TypeScript, plus web and portable clients.
0 parents  commit 9765559

90 files changed

Lines changed: 16077 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
node_modules/
2+
dist/
3+
dist-electron/
4+
dist-portable/
5+
release/
6+
coverage/
7+
.vite/
8+
*.log
9+
npm-debug.log*
10+
.DS_Store
11+
Thumbs.db
12+
.env.local
13+
14+
# AI assistant instructions — kept private
15+
CLAUDE.md
16+
**/CLAUDE.md
17+
18+
# Internal build/design notes — not part of the public repo
19+
BUILD_LOG.md
20+
MORNING_REPORT.md
21+
AUDIT.md
22+
docs/design/
23+
24+
# Throwaway capture/diagnostic scripts
25+
scripts/_*.mjs
26+
27+
# Editor / tool temp leftovers
28+
*.tmp.*

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 OpenFall contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<p align="center"><img width="448" height="560" alt="Codeman, the OpenFall mascot" src="https://github.com/user-attachments/assets/dbeb6553-7a31-4a89-9708-47bed84e3e45" /></p>
2+
3+
<h1 align="center">OpenFall</h1>
4+
5+
<p align="center"><em>An autosaving digital journal and odd-ball file examiner. Your documents are <strong>leaves</strong>, and they never get lost.</em></p>
6+
7+
<p align="center">
8+
<img alt="status: alpha" src="https://img.shields.io/badge/status-alpha-e8a33d">
9+
<img alt="license: MIT" src="https://img.shields.io/badge/license-MIT-9fb87a">
10+
<img alt="platforms" src="https://img.shields.io/badge/platforms-Windows%20%C2%B7%20Linux%20%C2%B7%20Portable-8aa6d6">
11+
<img alt="built with" src="https://img.shields.io/badge/built%20with-Electron%20%2B%20React-74b8b8">
12+
</p>
13+
14+
OpenFall is a desktop text editor with two ideas at its core:
15+
16+
1. **Autosave everything, always.** Every open document (a *leaf*) is mirrored to disk on an interval. Nothing is lost between sessions; leaves persist across restarts and can be exported to other formats.
17+
2. **Leaves, not tabs.** Instead of tabs along the top, open documents are **angled bookmark ribbons** that jut from the left and right edges of the window, past a transparent border, tilted up-and-outward like bookmarks fanning out of a book. They **self-name from their first words** and can be double-clicked to rename.
18+
19+
It is also good at *examining* unusual files: code leaves render with syntax highlighting, odd binaries show a hex view, and search results appear as a **Terminal** console or a vertical **List** ("HTML breakdown") tree.
20+
21+
<p align="center"><img alt="OpenFall, the journal" src="docs/screenshots/journal.png" width="820"></p>
22+
23+
## The name
24+
25+
**OpenFall** = **Open** (open source) + **Fall** (the season the leaves turn and let go). It is named for its own *leaves*: the documents that hang off the window like leaves off a branch. Open-source, and a little autumnal.
26+
27+
## Status: alpha
28+
29+
This is an early **alpha**. The core is real and works: autosave, the leaf model, the examiner, search, multi-window, themes, and a sandboxed web leaf, all backed by a unit and integration test suite. Expect rough edges; builds are unsigned, the visual polish is still settling, and APIs may change. Feedback and issues are very welcome.
30+
31+
## Features
32+
33+
- **Signature bookmark leaves:** two rails of tilted ribbons overhanging a transparent window edge; the active leaf juts further with a brass accent.
34+
- **Autosave** on a configurable interval (10s / 30s / 1min / 5min) to a directory you choose; state survives a full restart.
35+
- **Self-naming leaves** from their first words; double-click to rename (the name then sticks).
36+
- **Code examiner:** read-only, syntax-highlighted view for code leaves, with a color legend.
37+
- **Content-aware highlighting:** a *note* that looks like code gets live, **editable** syntax highlighting (named code files stay a read-only examiner).
38+
- **Odd-ball file examiner:** paste or open something strange and read it as a hex dump.
39+
- **Other View:** split the workspace into two independent editor panes.
40+
- **Separate View / Join View:** pop a leaf into its own window and send leaves between windows, with a shared, synced store.
41+
- **Search, two ways:** Find and Transform (Search / Replace / Remove / Add, with Match case / Whole word / Regex), shown as a **Terminal** dock or a vertical **List** tree.
42+
- **Web Quick Search:** a locked-down browser leaf, with a choice of search engine.
43+
- **Categories**, **Sort**, **Export As** (`.txt .md .html .pdf .json .rtf`), **Dark / Light / System** themes, spellcheck, line numbers, word wrap, and zoom.
44+
45+
### Examine anything
46+
47+
Code leaves get syntax highlighting and a legend; renamed-by-hand binaries reveal themselves in a hex view.
48+
49+
| Code examiner | Odd-ball file examiner |
50+
|:---:|:---:|
51+
| ![code examiner](docs/screenshots/code.png) | ![hex examiner](docs/screenshots/examiner.png) |
52+
53+
### Search: Terminal or HTML-breakdown
54+
55+
Run a search across your leaves and read the results the way you like: a **Terminal** console of `path:line:col` hits, or a vertical **List** tree grouped by folder, leaf, and match.
56+
57+
| Terminal | List (HTML breakdown) |
58+
|:---:|:---:|
59+
| ![terminal search](docs/screenshots/search-terminal.png) | ![list search](docs/screenshots/search-list.png) |
60+
61+
### A browser leaf, sandboxed
62+
63+
Type into Quick Search and OpenFall opens results in a **locked-down web leaf**, a sandboxed view that lives right beside your notes. (This is *web* search; it never touches the contents of your leaves.)
64+
65+
<p align="center"><img alt="browser leaf" src="docs/screenshots/web.png" width="820"></p>
66+
67+
### Light and dark
68+
69+
Dark by default; flip to Light or Match System at any time.
70+
71+
<p align="center"><img alt="light theme" src="docs/screenshots/light.png" width="820"></p>
72+
73+
## Download and run (alpha)
74+
75+
Grab a build from the [**Releases**](../../releases) page:
76+
77+
| Client | What you get |
78+
|--------|--------------|
79+
| **Windows installer** | `OpenFall Setup *.exe`, a standard NSIS install |
80+
| **Windows portable** | `OpenFall *.exe`, a single file, just run it, no install |
81+
| **Linux** | `openfall-*.tar.gz` (AppImage and `.deb` build on a Linux host) |
82+
| **Portable (any OS)** | `index.html`, one self-contained file, runs offline in any modern browser |
83+
84+
## Build from source
85+
86+
```bash
87+
npm install
88+
npm run dev # web app at http://localhost:5173
89+
npm run dev:electron # the desktop app (Vite + Electron, hot reload)
90+
91+
npm run package:win # Windows installer + portable .exe -> release/
92+
npm run package:linux # Linux tar.gz (+ AppImage/deb on Linux)
93+
npm run build:portable # single-file portable client -> dist-portable/index.html
94+
95+
npm test # Vitest unit + integration suite
96+
npm run typecheck
97+
```
98+
99+
## How it works
100+
101+
One React and TypeScript renderer (Vite, Zustand for state, CSS custom properties for theming) runs behind a single `PlatformAdapter` seam with two backends: **Electron** (a frameless, transparent window with real-filesystem autosave) and **web** (localStorage plus the File System Access API). The same renderer also bundles to one self-contained `index.html` for the portable client.
102+
103+
```
104+
src/
105+
components/ React UI (leaves, editor, search, dialogs, ...)
106+
state/ Zustand stores plus persistence orchestration
107+
lib/ pure logic: tokenize, leaf-naming, search, export, seed
108+
platform/ the PlatformAdapter seam (web plus electron)
109+
electron/ main process plus preload (transparent window, app:// protocol, fs autosave)
110+
```
111+
112+
## Credits
113+
114+
Created by **[DatJavaClass](https://github.com/DatJavaClass)**, with **Claude** (Anthropic) assisting on implementation. Mascot: *Codeman*.
115+
116+
## License
117+
118+
[MIT](LICENSE).

build/icon.png

88.7 KB
Loading

docs/screenshots/code.png

331 KB
Loading

docs/screenshots/examiner.png

283 KB
Loading

docs/screenshots/journal.png

287 KB
Loading

docs/screenshots/light.png

300 KB
Loading

docs/screenshots/search-list.png

331 KB
Loading
353 KB
Loading

0 commit comments

Comments
 (0)