Collaborative wiki for a few of us. Fork of lines.love.
Go to file
Kartik K. Agaram c5882d49ef Merge pensieve.love 2024-03-10 21:34:15 -07:00
data.sample draft on-boarding notes for Drew DeVault 2022-08-11 09:33:05 -07:00
LICENSE.txt add a license 2022-05-16 18:51:28 -07:00
Manual_tests.md Merge lines.love 2023-12-07 01:15:58 -08:00
MemoryReferenceInfo.lua command: snapshot stats on memory footprint 2022-11-15 23:38:08 -08:00
MemoryReferenceInfo.lua.0 remove some memory leaks from rendered fragments 2022-06-10 11:16:41 -07:00
NotoSansJP-Regular.otf include a font with support for Japanese 2022-09-10 18:34:44 -07:00
README.md Merge pensieve.love 2024-03-10 21:34:15 -07:00
app.lua Merge lines.love 2024-02-04 17:30:47 -08:00
button.lua bugfix :( 2023-12-18 21:39:01 -08:00
colorize.lua stop highlighting strings in code 2023-06-17 10:41:50 -07:00
commands.lua Merge pensieve.love 2024-03-01 19:22:04 -08:00
config.sample draft on-boarding notes for Drew DeVault 2022-08-11 09:33:05 -07:00
debug.lua clean up 2022-11-17 21:58:12 -08:00
drawing.lua Merge lines.love 2024-01-15 02:24:30 -08:00
drawing_tests.lua more carefully pass the 'key' arg around 2024-02-04 09:30:48 -08:00
edit.lua Merge pensieve.love 2024-02-16 21:27:35 -08:00
errors.lua Merge lines.love 2024-01-15 02:24:30 -08:00
file.lua Merge lines.love 2023-11-18 12:17:17 -08:00
geom.lua audit all asserts 2023-11-18 11:32:01 -08:00
help.lua use editor state font for width calculations 2024-01-12 05:23:06 -08:00
icons.lua Merge lines.love 2023-04-03 09:21:39 -07:00
json.lua forgot to add json.lua 2022-05-15 14:36:25 -07:00
keychord.lua support for num pad 2023-07-07 18:40:12 -07:00
log.lua change section delimiters in log for OpenBSD 2023-10-20 15:53:03 -07:00
log_browser.lua use editor state font for width calculations 2024-01-12 05:23:06 -08:00
main.lua Merge lines.love 2024-01-15 02:24:30 -08:00
nativefs.lua cleaner API for file-system access 2023-08-30 19:04:06 -07:00
profile.lua enabling a profiler makes the problem go away 2022-12-11 15:58:38 -08:00
profiler.lua enabling a profiler makes the problem go away 2022-12-11 15:58:38 -08:00
reference.md Merge lines.love 2024-02-04 17:30:47 -08:00
run.lua Merge pensieve.love 2024-03-01 19:22:04 -08:00
run_tests.lua Merge lines.love 2023-01-20 22:07:29 -08:00
search.lua Merge pensieve.love 2024-01-15 02:26:04 -08:00
select.lua use editor state font for width calculations 2024-01-12 05:23:06 -08:00
source.lua Merge pensieve.love 2024-01-15 02:26:04 -08:00
source_commands.lua Merge lines.love 2023-11-18 12:17:17 -08:00
source_edit.lua ensure tapping on editor brings up soft keyboard 2024-02-16 21:16:29 -08:00
source_file.lua audit all asserts 2023-11-18 11:32:01 -08:00
source_select.lua use editor state font for width calculations 2024-01-12 05:23:06 -08:00
source_tests.lua more carefully pass the 'key' arg around 2024-02-04 09:30:48 -08:00
source_text.lua bugfix in cursor positioning 2024-02-08 02:37:12 -08:00
source_text_tests.lua bugfix in cursor positioning 2024-02-08 02:37:12 -08:00
source_undo.lua audit all asserts 2023-11-18 11:32:01 -08:00
test.lua show another detail on test failure 2023-01-20 21:48:49 -08:00
text.lua Merge pensieve.love 2024-03-01 19:22:04 -08:00
text_tests bugfix: clear selection when clicking above or below lines 2023-09-20 13:39:29 -07:00
text_tests.lua Merge lines.love 2024-02-08 02:50:47 -08:00
undo.lua fix a couple of asserts missed in the recent audit 2023-12-09 09:22:45 -08:00

README.md

In progress. Beginnings of a possible shared wiki and discussion system for Lion Kimbro's Internet Office Hours community.

Techmeet.love started out as a private single-person note-taking system. 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).
  • 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):

Getting started

Install LÖVE. It's just a 5MB download, open-source and extremely well-behaved. I'll assume below that you can invoke it using the love command, but that might vary depending on your OS.

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

  1. Clone this repo.

    git clone https://git.sr.ht/~akkartik/techmeet.love techmeet
    
  2. Decide where to store data for the app. Say it's $DATADIR.

  3. Clone the techmeet-data repo into $DATADIR.

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

    Replace $DATADIR for yourself.

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

  5. 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
  • ctrl+w 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.

  • Editing a note larger than 50KB grows sluggish (particularly during undo/redo) even when maximized.

  • If you kill the process, say by force-quitting because things things get sluggish, you can lose data.

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

  • Pressing keys while editing will try to always keep the text cursor on 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.

  • 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, an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is pensieve.love, a private note-taking app for a single individual. Updates to it can be downloaded from:

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

Associated tools

Feedback

Most appreciated.

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.