goita

Goita

guaitar (first-person singular present guaito, first-person singular preterite guaití, past participle guaitat)

to observe, look to pay attention

Borrowed from Frankish *wahtōn, *wahtjan (“to watch, guard”), derivative of *wahta (“guard, watch”), from Proto-Germanic *wahtwō (“guard, watch”), from Proto-Indo-European *weǵ- (“to be fresh, cheerful, awake”).


An extension to take and annotate screenshots.

It can also be used in a standalone way (eventually should work as a PWA) by visiting here. To annotate an image you have in your clipboard, press q, otherwise you can paste pieces of images using v. Depending on the browser you may need to click “paste”, or accept some clipboard access permissions. Use m to have fun with memes. You can see all memes available here (it’s also available from within the extension or the standalone help).

All images and text are processed locally, no data is sent anywhere.

Note It has not been thoroughly tested (manually) on Safari, but all seems to work:

Demo video for version 2.0

Click the image to open the video (youtube).

Why? Aren’t there a million like this?

Yes, but this is mine.

Also, two features I have wanted for a while:

  1. Adds (visible, draggable) the URL the screenshot has been taken from. On a Mac, that is enough to go back to the source.

  1. In addition to an image, it can export the screenshot as a data:base64 encoded URL, where the image is clickable (combines with point 1). I can’t embed an example in a README (github seems to throw such a long URL away) but you can find it in media/data-url-example, copy that blob of text in the URL of your browser (tested in Chrome and Safari) and you should see a screenshot as the one above, clickable.

Features and functionality

Taken from the extension’s help modal. These are the default shortcut keys.

Installation

Tests

I took a leaf out of the development of Weave and added Chai.js/Mocha.js in-browser tests. They try to reproduce human behavior by sending browser events, creating arrows, dragging them, etc. I think it is neat, because I need no headless browser or anything heavyweight like that.

The main index.html holds several iframes with the individual suites per “functionality” (arrow, rect, etc), and you can also open the individual pages instead, or add new ones. You can see each test here.

If you want to run them locally:

The way the tests work is:

There is no testing of the Chrome specific APIs, because there is little of them, and it’s kind of untestable.


The Taskfile.yml can be used to run the test-driven writing test for this README.

Local development, contributing

The most straightforward route if you want a feature or change stuff:

As for contributing, this is one of my personal projects, and like many others I have, I have a clear idea of what I want (or a clear idea of what I don’t). So this is likely to follow whatever my whim is (in other words, I may reject pull requests for no good reason), but as an open source project, please fork, play with this and make it your own.

Credits