little tool for building Wardley maps
Go to file
Kartik K. Agaram 4597270f09 Merge snap.love 2024-09-10 21:19:06 -07:00
assets publish snap.love 2023-04-21 18:35:59 -07:00
0000-freewheeling-start
0001-on wire up mouse move handler 2023-12-26 08:28:23 -08:00
0002-Debug_animations_in_progress debug animations 2023-11-11 10:00:54 -08:00
0002-vx undo 2 most recent commits 2023-10-25 09:29:22 -07:00
0003-refresh_debug_animations debug animations 2023-11-11 10:00:54 -08:00
0003-scale undo 2 most recent commits 2023-10-25 09:29:22 -07:00
0004-on.update debug animations 2023-11-11 10:00:54 -08:00
0004-vy undo 2 most recent commits 2023-10-25 09:29:22 -07:00
0005-Cursor_node
0005-animate debug animations 2023-11-11 10:00:54 -08:00
0006-loiter debug animations 2023-11-11 10:00:54 -08:00
0006-on.mouse_press Merge luaML.love 2023-10-25 20:19:22 -07:00
0007-save_callstack debug animations 2023-11-11 10:00:54 -08:00
0008-Debug_animation_period debug animations 2023-11-11 10:00:54 -08:00
0008-Viewport Merge snap.love 2024-06-16 06:38:10 -07:00
0009-on.code_change
0010-initialize_editor Merge luaML.love 2023-12-29 15:45:38 -08:00
0011-box_height snapshot: commit 0ca5bb0e8d, take 2 2023-10-25 09:30:50 -07:00
0012-on.initialize Merge snap.love 2024-06-16 06:38:10 -07:00
0013-font
0014-y_of_schema1 bugfix: pin down schema1->y behavior 2023-10-25 00:11:58 -07:00
0015-line_height
0016-schema1_of_y
0017-on.mouse_release skip reflexive or duplicate edges 2023-12-13 17:17:05 -08:00
0018-on.update
0019-B redo font caching 2024-07-25 21:52:29 -07:00
0021-compute_layout Merge luaML.love 2024-07-25 22:09:24 -07:00
0022-on.text_input bugfix: switch text_input to new panning impl 2023-10-27 23:01:46 -07:00
0023-on.keychord_press disable some debug UI, bring back undo 2024-06-13 14:34:06 -07:00
0024-copy_shape
0025-add_thick_line
0026-on.draw show a grid when dragging things 2024-03-23 09:59:48 -07:00
0027-Surface undo 2 most recent commits 2023-10-25 09:29:22 -07:00
0028-A Merge snap.love 2024-07-25 22:13:54 -07:00
0030-update_editor_box Merge template-live-editor 2024-07-10 01:04:30 -07:00
0031-Nodes
0031-cols
0032-rows
0032-set_mouse_cursor
0033-test_y_of_schema1 bugfix: pin down schema1->y behavior 2023-10-25 00:11:58 -07:00
0034-dump_state snapshot: insight 2023-10-25 16:14:08 -07:00
0034-sx
0035-pan_viewport_to_contain_cursor clean up debug prints 2023-10-27 18:26:29 -07:00
0035-sy
0036-on_move_bar
0037-on_resize
0039-on_node
0040-A1 Merge luaML.love 2023-10-21 10:01:52 -07:00
0041-on_border
0044-First_available_id
0045-next_key
0046-to_key
0047-test_to_key
0049-table.length
0050-node_height bugfix: node height computation 2024-07-10 00:05:02 -07:00
0051-intersect_with_centroid
0055-y_at_x
0056-x_at_y
0057-distance_sq
0058-centroid
0059-compute_layout_for_edge
0060-Filename
0061-on.quit
0062-save_graph_to_disk
0063-load_graph_from_disk
0064-on.file_drop
0065-on.load_settings
0066-on.save_settings
0067-Settings
0068-table.copy
0069-on_edge
0070-detach_edge
0071-table.remove_value
0072-test_remove_value
0074-on.resize show a grid when dragging things 2024-03-23 09:59:48 -07:00
0075-draw_grid show a grid when dragging things 2024-03-23 09:59:48 -07:00
0076-floor_to show a grid when dragging things 2024-03-23 09:59:48 -07:00
0077-base_for_zoom show a grid when dragging things 2024-03-23 09:59:48 -07:00
LICENSE.txt
Manual_tests.md Merge template-live-editor 2023-12-07 01:25:09 -08:00
MemoryReferenceInfo.lua.0
MemoryReferenceInfo.lua.unused
README.md Merge text.love 2024-09-08 22:56:52 -07:00
app.lua Merge text0 2024-06-11 12:54:49 -07:00
button.lua bugfix :( 2023-12-18 21:39:01 -08:00
default_map suggest a default layout for freewheeling apps 2023-11-11 10:31:25 -08:00
edit.lua Merge luaML.love 2024-09-10 21:17:15 -07:00
file.lua audit all asserts 2023-11-18 11:32:01 -08:00
json.lua
keychord.lua
live.lua reset font size on error 2024-07-09 21:36:52 -07:00
main.lua Merge snap.love 2024-09-10 21:19:06 -07:00
nativefs.lua
reference.md Merge luaML.love 2024-06-16 06:35:41 -07:00
search.lua Merge text0 2024-06-11 12:54:49 -07:00
select.lua Merge lines.love 2024-09-01 01:17:22 -07:00
test.lua
text.lua Merge text0 2024-09-01 01:31:05 -07:00
text_tests
text_tests.lua Merge text0 2024-06-11 12:54:49 -07:00
undo.lua Merge lines.love 2024-09-01 01:17:22 -07:00

README.md

wardley.love: rudimentary tool for creating Wardley Maps

0 dependencies!

So far it's just a graph drawing tool atop a background drawing of a Wardley Map template. It doesn't even enforce that the graph stays within the bounds of the template.

This repo is an example of a Freewheeling App, designed above all to be easy to run, easy to modify and easy to share.

Its immediate upstream is snap.love, a graph-drawing tool. Unlike Graphviz and PlantUML, this tool is for small graphs where you want complete control over layout. Unlike PowerPoint or draw.io, this tool results generates text files that are more amenable to version control. The catch: it's a lot more limited than all these tools; all you can do so far is draw rectangles and edges between them.

drawing

Getting started

Install LÖVE. It's just a 5MB download, open-source and extremely well-behaved.

Run the app using LÖVE.

You'll see a single box on screen. Drag the surface or press arrow keys to pan around. Try dragging the border of the box. You'll see an edge stick out. Release the mouse button, and a new box (node) will pop out at the other end of the edge. Try dragging the top-left bar for each box. They move relative to each other. Try typing inside. The text wraps within and the box grows taller to accomodate it. Try dragging the parallel lines to the right of a box. The width of the box changes.

Try quitting and restarting. Your changes will still be present. By default, snap.love writes to a file called graph in a directory relative to this app. To switch to a different file, drop it on the snap.love window. You can also pass in a filename when starting the app from the terminal.

Hacking

To make changes to this app without restarting the app each time, download the driver app. Example session:

making changes without restarting the app

Some reference documentation on how to create your own apps.

If the app being modified by the driver lives in a .love file, your changes will go into the save directory. If it lives in a directory (like this repo), your changes will go straight into the same directory.

Keyboard shortcuts

While editing within a node:

  • ctrl+f to find patterns
  • 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

When cursor is not in an editor:

  • arrow keys pan the surface
  • shift+arrow keys pan faster
    • pagedown and pageup are aliases for shift+down and shift+up respectively

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 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 snap.love, a graph-drawing app. Updates to it can be downloaded from:

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

Feedback

Most appreciated. Messages, PRs, patches, forks, it's all good.