cspell.json | 51 ++ framework/lib/drizzle.ts | 21 +- lib/async.ts | 4 +- lib/incremental.ts | 16 +- lib/incremental/debugger.test.ts | 41 ++ lib/incremental/steps.test.ts | 14 +- lib/incremental/visualization.ts | 108 +++-- lib/log.ts | 16 +- lib/meta.ts | 2 +- lib/progress.ts | 18 +- lib/queue.ts | 8 +- lib/readme.changes.md | 8 +- lib/readme.md | 4 +- lib/stream.test.ts | 4 +- lib/string/ansi.ts | 4 +- lib/subprocess.test.ts | 94 +++- lib/subprocess.ts | 258 +++++++++- package-lock.json | 833 +++++++++++++++++++++++++++++++- package.json | 1 + readme.md | 4 + src/backend.ts | 2 + src/bin/deploy.ts | 28 +- src/bin/download-db.ts | 40 +- src/blog/drafts/webdev/marko-intro.markodown | 2 +- src/blog/localization.ts | 2 + src/blog/pages/webdev/one-year-next-app-router/en.mdo | 4 +- src/cspell.ts | 106 ++++ src/databases.test.ts | 104 ++++ src/databases.ts | 93 ++++ src/file-viewer/backend.ts | 2 +- src/file-viewer/clofi.client.ts | 8 +- src/file-viewer/highlight.ts | 24 +- src/file-viewer/models/derived.ts | 2 +- src/file-viewer/pages/file.cotyledon-enterance.marko | 17 - src/file-viewer/pages/file.cotyledon-entrance.marko | 17 + src/file-viewer/sync.ts | 27 +- src/file-viewer/tags/cotyledon-ending.marko | 2 +- src/file-viewer/tags/cotyledon-speedbump.marko | 2 +- src/file-viewer/tags/media-panel.marko | 2 +- src/file-viewer/views/lofideon.marko | 2 +- src/pages/history-of-japan-reanimated.marko | 2 +- src/pages/license.mdo | 2 +- src/pages/log.mdo | 14 +- src/pages/resume.marko | 4 +- src/paperclover.net.ts | 2 + src/q+a/artifacts.ts | 2 +- src/q+a/backend.ts | 6 + src/q+a/models/questions.ts | 8 +- src/q+a/scripts/editor.client.ts | 99 +++- src/q+a/views/editor.css | 76 ++- src/q+a/views/editor.marko | 6 +- src/site.ts | 2 +- src/spelling.ts | 100 ++++ 53 files changed, 2102 insertions(+), 216 deletions(-)