Commit Graph

17 Commits

Author SHA1 Message Date
Thomas Buckley-Houston 3bc427f416 devops: Update release process for Github 2022-07-20 15:22:12 -04:00
Thomas Buckley-Houston 9abc3aaa3f Refactor build process to not use pre-built bins
This means that there's now a canonical script that allows other
distributers to build Browsh. The only caveat being that the web
extension cannot be built (Mozilla only allows one signed `.xpi` per
version), so it is downloaded.
2018-07-26 18:44:01 +08:00
Thomas Buckley-Houston b8d031e498 Goreleaser: format default zip, override to binary
This is the wrong way round, it should default to binary as that's what
most of the OS's are and just set the zip override for `darwin`.

Watch this issue for updates:
https://github.com/goreleaser/goreleaser/issues/720
2018-07-11 15:05:37 +08:00
Thomas Buckley-Houston c0a79caf4e Refactor Browsh Go code into package
This helps with isolating the tests and refactoring the code into
separate files.
2018-04-01 16:31:25 +08:00
Thomas Buckley-Houston f624ea00f1 Forgot to bump the version in manifest.json 2018-02-08 20:28:12 +08:00
Thomas Buckley-Houston 2985774859 Automate releases 2018-01-28 16:08:19 +08:00
Thomas Buckley-Houston 6f0a732145 Adds Go built binaries to .gitignore 2018-01-24 16:50:09 +08:00
Thomas Buckley-Houston b387f66c69 Launch and install webextension from client
This means that Browsh can now be entirely run just by running the CLI
binary. The client launches Firefox as a subprocess, then connects to it
via the Marionette protocol, installs the webextension and finally
triggers a new tab with, currently, the Google homepage in it.

I was trying to set this up for automated testing as well by installing
the built webextension as a temporary addon, because otherwise you need
to sign the extension everytime with a unique semantic version. However
for some reason I can't quite recreate the environment that MDN's
`web-ext` creates. The extension installs fine but fails to load the
`content.js` script, I can't find a backtrace or any other details about
the failure. So for now, we're just going to have to use `web-ext` as
seperate process and have the client connect to that. Which is what one
should do during development anyway, so it's not a huge loss.
2018-01-21 11:56:05 +08:00
Thomas Buckley-Houston d2aaa33963 Refactored webext background script 2018-01-10 22:54:51 +08:00
Thomas Buckley-Houston 27e0b2ddc6 First working draft of Golang interfacer
After weighing up the options it seems that Golang's termbox-go TTY
library has better support for terminals, and it's cross-platform out of
the box. So this commit is the first working version where the
interfacer launches a websocket server, makes a connection to the
webextension and listens to STDIN from the CLI, sending all input to the
webextenstion.
2018-01-07 11:21:29 +08:00
Thomas Buckley-Houston be2b961cfe Sample text colour using monochar block font trick
Using JS's `getComputedStyle()` for every character is too CPU
intensive, so instead I'm experimenting with using a custom font
to take the canvas snapshot. The font is made up of only the unicode
block character, which basically fills the entire space given to a
monospace glyph. This also means that we can fairly reliably work out
the visibility (whether it's obscured or hidden with CSS) of text.
2018-01-01 22:10:10 +08:00
Thomas Buckley-Houston d00361f87d First draft of rewrite to Webextension and Rust
This proves that frames can be generated on Firefox using the canvas and
a Tree Walker to examine text nodes. Already with little optimisation
frames don't ever take longer than 200ms to render.

Chrome has a MediaStream of the viewport, hopefully that will prove
performant as well.

This doesn't have functioning text colour detection or text occlusion
support. But early research suggests this will possible by comparing 2
screenshots: one with and the other without rendered text.
2018-01-01 21:50:30 +08:00
Thomas Buckley-Houston 13d9fadf41 Fixed zoom bug by writing some tests. Also moved thigns around a lot. 2016-05-20 23:51:57 +09:00
Thomas Buckley-Houston 932a4b3da9 Big change! Using code based on the little-known xzoom program, so no need for XFCE
The big problem with XFCE's zoom was that it follwed the mouse. So there was no way
to have the terminal representation of the desktop map to a smaller segment of the
real desktop without the terminal mouse position being able to exactly 'hover' over
the real mouse position.

The xzoom program is a window that displays a zoom of a portion of the desktop. So
double the width of the desktop and place the xzoom window on the right, but have
it watch only the half of the desktop on the left. What's more xzoom is small and
it's C code is easily incuded in the Golang code so they act as one, even sharing
state such as mouse coords, viewport position, current zoom level, etc.

WIP. Still contains old XFCE zoom code.
2016-05-20 01:52:22 +09:00
Thomas Buckley-Houston 073db28792 Switched to using Golang for mapping mouse reporting. 2016-05-08 22:29:49 +03:00
Thomas Buckley-Houston fb6db109f8 Docker build. Very basic zoom scrolling 2016-04-25 17:09:51 +03:00
Thomas Buckley-Houston c27e72bcfa First draft
This is just a scattering of notes and proofs of concepts.
2016-04-23 00:58:05 +03:00