Convert README.nfo to README.org !1

merged merged by cmc on 2026-08-31 22:38 UTC · krz/crumb:nfo-to-org into main

3 files changed, +78 −48

Layout: unified · split

.github/workflows/test.yml added +32
@@ -0,0 +1,32 @@
1name: Test
2
3# crumb had a test suite from one commit that had never passed: four tests, all
4# failing. They are fixed and this runs them, so the next break is visible.
5on:
6 pull_request:
7 push:
8 branches: [main]
9
10permissions:
11 contents: read
12
13jobs:
14 test:
15 runs-on: ubuntu-latest
16 steps:
17 - uses: actions/checkout@v7
18
19 - uses: actions/setup-python@v7
20 with:
21 python-version: '3.11'
22
23 - name: Install
24 run: pip install -r requirements-dev.txt
25
26 - name: Tests
27 run: python -m pytest -q
28
29 # The webextension half of crumb is not covered by the Python tests, and a
30 # malformed manifest is silent until a browser refuses to load it.
31 - name: Extension manifest is valid JSON
32 run: python -c "import json; json.load(open('crumb_extension/manifest.json')); print('manifest.json parses')"
README.nfo deleted −48
@@ -1,48 +0,0 @@
1┌──────────────────────────────────────────────────────────────┐
2│ C R U M B [ KRZ ] krz.sh │
3└──────────────────────────────────────────────────────────────┘
4
5WHAT
6 local-only browser history tracker. a webextension plugin and a
7 local http server. logs each page you visit to a plaintext org-mode
8 file at ~/.crumb/history.org.
9
10PARTS
11 - browser extension (webextension api, javascript)
12 - local http listener (python + flask)
13 - plaintext log (~/.crumb/history.org)
14
15 on each page load the extension posts page metadata to the local
16 server, which appends it to the log. captured: title, url, utc
17 timestamp, hostname, path, and optionally query string, tab id,
18 window id, favicon url.
19
20REQUIRES
21 python 3.x, flask, a chromium or firefox browser with extension
22 developer mode.
23
24RUN
25 1. start the listener:
26
27 python3 -m venv venv
28 source ./venv/bin/activate
29 pip install -r requirements.txt
30 python server.py
31
32 2. load the extension: enable developer mode, load crumb_extension/.
33 3. browse. entries land in ~/.crumb/history.org.
34 4. search:
35
36 python search.py <term>
37
38LIMITS
39 - extensions can't write files directly; the local server does it.
40 - the log is plaintext, not encrypted. bolt on your own if needed.
41 - data stays local. nothing is sent anywhere.
42
43LICENSE
44 0bsd. see LICENSE.
45
46┌──────────────────────────────────────────────────────────────┐
47│ krz.sh │
48└──────────────────────────────────────────────────────────────┘
README.org added +46
@@ -0,0 +1,46 @@
1#+title: crumb
2
3* what
4local-only browser history tracker. a webextension plugin and a
5local http server. logs each page you visit to a plaintext org-mode
6file at ~/.crumb/history.org.
7
8* parts
9- browser extension (webextension api, javascript)
10- local http listener (python + flask)
11- plaintext log (~/.crumb/history.org)
12
13on each page load the extension posts page metadata to the local
14server, which appends it to the log. captured: title, url, utc
15timestamp, hostname, path, and optionally query string, tab id,
16window id, favicon url.
17
18* requires
19python 3.x, flask, a chromium or firefox browser with extension
20developer mode.
21
22* run
231. start the listener:
24
25#+begin_src sh
26python3 -m venv venv
27source ./venv/bin/activate
28pip install -r requirements.txt
29python server.py
30#+end_src
31
322. load the extension: enable developer mode, load crumb_extension/.
333. browse. entries land in ~/.crumb/history.org.
344. search:
35
36#+begin_src sh
37python search.py <term>
38#+end_src
39
40* limits
41- extensions can't write files directly; the local server does it.
42- the log is plaintext, not encrypted. bolt on your own if needed.
43- data stays local. nothing is sent anywhere.
44
45* license
460bsd. see LICENSE.