Collaborative wiki for a few of us. Fork of lines.love.
[![0 dependencies!]https://0dependencies.dev/0dependencies.svg]https://0dependencies.dev

In progress. Beginnings of a possible shared wiki and discussion system for
[Lion Kimbro's Internet Office Hours]https://communitywiki.org/wiki/LionKimbro
community.

Techmeet.love started out as [a private single-person note-taking
system](https://git.sr.ht/~akkartik/pensieve.love). It is now a space for the
long-form asynchronous communications of a small community, and a place to
experiment with and evolve new ideas for such collaborative communications.

Some features:
- Multiple views into an independent repo of plain text notes (with [some line
  drawings](http://akkartik.name/lines.html)).
- Notes can have arbitrary named relationships (links) to each other,
  resulting in a graph.
- The primary visual metaphor is an infinite 2D surface of fixed-width,
  non-overlapping, notes that can be operated on with an extensible set of
  commands.
- Commands usually (but not always) create new columns of notes. Each column
  is an independent visualization of a subset of notes.
- Find on surface.
- Search all notes on disk in reverse-chronological order.
- Notes can contain hyperlinks in [[wikiwords]] to other notes. Hyperlinks
  can't contain spaces. Clicking on a hyperlink opens the target in a new
  column.
- A few other things. Explore the command menu and palette along the top.

Some videos to help visualize these bullets (albeit with outdated UI):
  * https://archive.org/details/akkartik-pensieve-2022-07-27 (4.5 minutes)
  * https://merveilles.town/@akkartik/108766067153506592 (30 seconds)
  * https://archive.org/details/akkartik-pensieve-2022-08-29 (3 minutes)

## Getting started

Install [LÖVE]https://love2d.org. It's just a 5MB download, open-source and
extremely well-behaved.

There's currently a few moving parts to set up:

0. Clone this repo.
   ```
   git clone https://git.sr.ht/~akkartik/techmeet.love techmeet
   ```

1. Decide where to store data for the app. Say it's `$DATADIR`.

2. Clone the techmeet-data repo into `$DATADIR`.

   ```
   git clone https://git.sr.ht/~akkartik/techmeet-data $DATADIR
   ```

   Replace `$DATADIR` for yourself.

3. Initialize an example layout for the 2D surface. On a POSIX system, the
   commands would be:

   ```
   cd $DATADIR
   cp config.example config
   ```

   Again, adjust `$DATADIR` for yourself.

   This is an optional step. The surface layout feels like something private
   to each individual and doesn't really belong in this repo. This is just a
   convenience to get you started.

4. Run the app while specifying `$DATADIR`:

   ```
   love techmeet $DATADIR
   ```

   You'll only need to do this the first time. After that, running without
   args will remember `$DATADIR`.

   Your OS will likely have ways to run this command based on a global
   shortcut, should you so desire.

   Start exploring! Key shortcuts:
    * `ctrl+enter` will open up the command palette and give you more of a
      sense of your options
    * `ctrl+e` makes the highlighted note editable. When you're done just hit
      `ctrl+e` again to freeze its contents against accidental editing. At
      most one note can be editable at any moment.
    * When a note is editable, empty lines will show a little box icon on the
      left margin. Click it to create a line drawing. Line drawings can only
      live in their own lines separate from text.
    * `ctrl+h` when hovering over a drawing will show you the options
      available to you. Most operations involve holding down the mouse and
      making a stroke. You can also start a stroke and press and hold `h`
      without releasing to see options available to you mid-stroke.

## Keyboard shortcuts

While editing text:
* `ctrl+f` to find patterns within a file
* `ctrl+c` to copy, `ctrl+x` to cut, `ctrl+v` to paste
* `ctrl+z` to undo, `ctrl+y` to redo
* `ctrl+=` to zoom in, `ctrl+-` to zoom out, `ctrl+0` to reset zoom
* `alt+right`/`alt+left` to jump to the next/previous word, respectively
* mouse drag or `shift` + movement to select text, `ctrl+a` to select all
* `F4` to modify the sources

For shortcuts while editing drawings, consult the online help. Either:
* hover on a drawing and hit `ctrl+h`, or
* click on a drawing to start a stroke and then press and hold `h` to see your
  options at any point during a stroke.

techmeet.love has been exclusively tested so far with a US keyboard layout. If
you use a different layout, please let me know if things worked, or if you
found anything amiss: http://akkartik.name/contact

## Known issues

* No support yet for Unicode graphemes spanning multiple codepoints.

* No support yet for right-to-left languages.

* Searching is slow. There's no index yet. Searching happens in the same
  thread as UI updates, so UI may go unresponsive with really large notes. I
  haven't observed this in practice.

* The text cursor will always stay on the screen. This can have some strange
  implications:

    * A long series of drawings will get silently skipped when you hit
      page-down, until a line of text can be showed on screen.
    * If there's no line of text at the top of the file, you may not be able
      to scroll back up to the top with page-up.

  So far this app isn't really designed for drawing-heavy files. For now I'm
  targeting mostly-text files with a few drawings mixed in.

* No clipping yet for drawings. In particular, circles/squares/rectangles and
  point labels can overflow a drawing.

* If you ever see a crash when clicking on the mouse, it might be because a
  mouse press and release need to happen in separate frames. Try pressing and
  releasing more slowly and let me know if that helps or not. This is klunky,
  sorry.

* Touchpads can drag the mouse pointer using a light touch or a heavy click.
  On Linux, drags using the light touch get interrupted when a key is pressed.
  You'll have to press down to drag.

* Can't scroll while selecting text with mouse.

* No scrollbars yet. That stuff is hard.

## Mirrors and Forks

This repo is a fork of [lines.love]http://akkartik.name/lines.html, an
editor for plain text where you can also seamlessly insert line drawings.
Its immediate upstream is [pensieve.love]https://git.sr.ht/~akkartik/pensieve.love,
a private note-taking app for a single individual. Updates to it can be
downloaded from:

* https://git.sr.ht/~akkartik/techmeet.love
* https://tildegit.org/akkartik/techmeet.love
* https://git.merveilles.town/akkartik/techmeet.love
* https://nest.pijul.com/akkartik/techmeet.love (using the Pijul version control system)

Further forks are encouraged. If you show me your fork, I'll link to it here.

## Associated tools

* https://git.sr.ht/~akkartik/techmeet-capture.love provides a blank-slate UI
  into the same notes directory as techmeet.love.
* https://codeberg.org/akkartik/lines2md exports lines.love files to Markdown
  and (non-editable) SVG.
* https://git.sr.ht/~akkartik/lines2html.love exports lines.love files to html
  and inline SVG.
* https://codeberg.org/eril/lines2html.love provides the option to export
  just the drawings to a directory. Also provides a CLI, which should be more
  natural for many people.

## Feedback

[Most appreciated.]http://akkartik.name/contact Messages, PRs, patches,
forks, it's all good.

In particular, techmeet.love has been exclusively tested so far with a US
keyboard layout. If you use a different layout, please let me know if things
worked, or if you found anything amiss.