aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 3f7c386d44b73eb9f6731db3e62ebfa27f7adfc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
MCCD


Table of Contents
_________________

1. Stitch - Note Composer
.. 1. FEATURES
.. 2. CREDIT
.. 3. USAGE
.. 4. INSTALLATION
.. 5. DEVELOPMENT
.. 6. ROADMAP
2. KNOWN ISSUES
3. 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. In
  that way building your own garden of forking paths.

  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. It only requires
  that each note is contained to one file

  Stitch does not come with any note capturing system built in, but
  instead 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 comes as a single static binary, but uses grep, sort, cut, find
  to work.


1.1 FEATURES
~~~~~~~~~~~~

  - Single static binary (though it makes use of coreutils)
  - No need for any DB, just files
  - UNIXy & fast
  - 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


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
~~~~~~~~~~~~~~~~

  Chmod +x the binary and put in PATH.


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

  And to run:

  dune exec -- stitch

  To generate man pages, run

  dune exec -- stitch --help=groff

  To prepare for release, we need to statically link the binary, which 
  unless you use a musl based distro it will not do out of the box. 

  There is a Dockerfile included that prepares the release, 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 pipign and hotkeys 
  - Line wrapping
  - Support URL shortening.
  - Better result narrowing


2 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.


3 Author
========

  Marc Coquand (<https://mccd.space>)