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 @@ |
| 1 | name: 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. |
| 5 | on: |
| 6 | pull_request: |
| 7 | push: |
| 8 | branches: [main] |
| 9 | |
| 10 | permissions: |
| 11 | contents: read |
| 12 | |
| 13 | jobs: |
| 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 | | |
| 5 | | WHAT |
| 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 | | |
| 10 | | PARTS |
| 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 | | |
| 20 | | REQUIRES |
| 21 | | python 3.x, flask, a chromium or firefox browser with extension |
| 22 | | developer mode. |
| 23 | | |
| 24 | | RUN |
| 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 | | |
| 38 | | LIMITS |
| 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 | | |
| 43 | | LICENSE |
| 44 | | 0bsd. see LICENSE. |
| 45 | | |
| 46 | | ┌──────────────────────────────────────────────────────────────┐ |
| 47 | | │ krz.sh │ |
| 48 | | └──────────────────────────────────────────────────────────────┘ |
README.org
added
+46
| @@ -0,0 +1,46 @@ |
| 1 | #+title: crumb |
| 2 | |
| 3 | * what |
| 4 | local-only browser history tracker. a webextension plugin and a |
| 5 | local http server. logs each page you visit to a plaintext org-mode |
| 6 | file 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 | |
| 13 | on each page load the extension posts page metadata to the local |
| 14 | server, which appends it to the log. captured: title, url, utc |
| 15 | timestamp, hostname, path, and optionally query string, tab id, |
| 16 | window id, favicon url. |
| 17 | |
| 18 | * requires |
| 19 | python 3.x, flask, a chromium or firefox browser with extension |
| 20 | developer mode. |
| 21 | |
| 22 | * run |
| 23 | 1. start the listener: |
| 24 | |
| 25 | #+begin_src sh |
| 26 | python3 -m venv venv |
| 27 | source ./venv/bin/activate |
| 28 | pip install -r requirements.txt |
| 29 | python server.py |
| 30 | #+end_src |
| 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 | #+begin_src sh |
| 37 | python 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 |
| 46 | 0bsd. see LICENSE. |