Table of Contents _________________ 1. Stitch - Note Composer .. 1. FEATURES .. 2. CREDIT .. 3. USAGE .. 4. INSTALLATION .. 5. DEVELOPMENT .. 6. ROADMAP 2. COMMUNITY & CONTRIBUTING 3. KNOWN ISSUES 4. Author 1 Stitch - Note Composer ======================== "...Differing from Newton and Schopenhauer, your ancestor did not think of time as absolute and uniform. He believed in an infinite series of times, in a dizzily growing, ever spreading network of diverging, converging and parallel times. This web of time - the strands of which approach one another, bifurcate, intersect or ignore each other through the centuries - embraces every possibility. We do not exist in most of them. In some you exist and not I, while in others I do, and you do not, and in yet others both of us exist." - Garden of Forking Paths, Borges Stitch is a minimal grep-based CLI tool for composing and viewing notes and TODO notes. It is built around the idea of writing notes separately and then using tags to compose these notes together. Stitch does not have any opinion about which file format you use for file capturing: use org, markdown, whatever you want. You can also customize the grep command to speed up performance. Stitch only requires that each note is contained to one file. Stitch does not come with a capture system for notes, but it makes it easy for you to set up your own system in with your preferred editor. There is a basic example included in the manpages. Stitch uses grep, sort, cut, find under the hood to work. 1.1 FEATURES ~~~~~~~~~~~~ - Work with any file format, markdown, ruby markup, org etc. - Work in any editor: vim, vi, ed, kakoune - Write your thoughs first, and organize later and read in multiple different ways - Available as a single static binary - No need for any DB, just files - Unix-y & fast 1.2 CREDIT ~~~~~~~~~~ Stitch is based on the note composing system Howm for Emacs. 1.3 USAGE ~~~~~~~~~ Run `stitch --help' or `man stitch' for explanation and how to get started 1.4 INSTALLATION ~~~~~~~~~~~~~~~~ You can find all static releases tagged under https://git.mccd.space/pub/stitch/refs/ Obs, the download link next to the tag is for the snapshot, you will have to enter the link of the tag to find the download to the binary. Download the binary, chmod +x the binary and put in PATH. At minimum, you will need to set the environment variable STITCH_DIRECTORY for it to work 1.5 DEVELOPMENT ~~~~~~~~~~~~~~~ To set up the project for local development, easiest way is to just install Nix, direnv and enable nix flakes. Then to compile: dune build Optimized build with dune build --profile release And to run: dune exec -- stitch To generate man pages, run dune exec -- stitch --help=groff When the system is built with Nix, it will be dynamically linked. To build a static release, There is a Dockerfile included that compiles it with musl, use it with podman: podman pull docker.io/alpine:edge podman build . -t stitch:latest mkdir release podman run -v ./release:/tmp/build/_build:U stitch:latest Binary will be found in ./release/install/default/bin/stitch and manpages in ./release/install/default/man/man1/stitch.1 1.6 ROADMAP ~~~~~~~~~~~ - Support sort - Support tagging commands - Support command piping and hotkeys - Line wrapping - Support URL shortening. - Better result narrowing 2 COMMUNITY & CONTRIBUTING ========================== Patches, discussions, bug reports etc. can be sent to ~marcc/stitch-general@lists.sr.ht. Feel free to share your setup, tips, and tricks etc. Archives can be found at https://lists.sr.ht/~marcc/stitch-general 3 KNOWN ISSUES ============== - ugrep doesn't correctly handle ordering, meaning that if you sort by modified date, it doesn't behave correctly. I've waited with implementing it until I've resolved that issue - File names can not contain :[0-9]:, since it's used to determine where the file starts and ends. One solution is to force one uniform file name that we can regexp (and also tweak). I am not sure yet what's best. - The binary file is kinda big, 5mb. I'd love to slim it down. 4 Author ======== Marc Coquand ()