This release features a lot of updates to the gemini section of the codebase, following the recent
explosion of interest and activity in the protocol. It fixes a few bugs, adds a few features, and
hopefully makes Bombadillo even better than it already was. It also removes an external dependency (one of only two): stty
is no longer called as a subprocess. A pure Go solution was worked out (thank you @dancek).
Due to some bugs having been found in the initial release of `2.3.0` this has been incremented to
`2.3.1` and includes fixes to those bugs. They are included in the changelog below. This should not
impact most users and everyone is encouraged to build or download `2.3.1` rather than `2.3.0`. Bug
fixes, briefly, include: corrections to relative links, rendering fixes, querystring escaping, and
View 2.3.1 changelog
- Adds quick navigation to the first 10 links on a page (using the number keys 1 - 0, where 0 represents 10)
- Fixes a bug where on some platforms terminal line wrapping was not properly turned back on when Bombadillo exits
- Adds certificate expiration timestamps to the ini, next to the cert hash
- Uses the newly stored certificate expiration datetimes to autorenew certificates, resulting in far fewer certificate issues for users to deal with manually
- Adds 'h' and 'l' as hot key aliases for back and forward, bringing things further in line with vim style keybindings
- Adds a maximum width to textual content, but not images, of 100 characters (when wrapping lines)
- Adds automatic requesting of new certificates on expiration (when the site is next visited)
- Fixes a race condition when querying the user for input
- Adds support for alt text in gemini preformatted blocks
- Fixes a parsing error when parsing gemini preformatted blocks
- Adds config value 'geminiblocks' to control how alt text displays
- Improved handling of relative URLs for gemini
- Updates the gemini redirect policy to auto-redirect if, and only if, the only change to the requested URL would be the addition of a terminal '/' character
- Fixes issue where querystring values would chain instead of replace
- Removes a dependency on external program 'stty' in favor of a pure Go solution
- Updates the man page with the relevant changes
- Changes `Client.Draw()` when bookmarks bar is closed. No longer adds in extra space chars. Is easier to copy text and has fewer instances of emojis deforming the page
- Fixes querystring bug that prevented multiple status 1 returns in a row from gemini
- Adds escaping to the querystring
- Switches gemini relative URL handling to a go method in the std lib, which solves a number of problems with relative linking
- Adds `release` target for make that will generate all four of the binaries we currently support
- Updates readme regarding usage of GNU Make (with BSD Make not functioning with our makefile)
- Increments version patch number
- Fixes bug in makefile that prevented VERSION file from being used when appropriate (often the case for patch versions)
This release is primarily bug fixes and code cleanup after the 2.0.0 release.
However, there are new features as well:
View 2.1.0 changelog
- Find text within a document by pressing / and entering your text query
- Navigate found text with n (next) and N (previous)
- Add Bombadillo as a title to the terminal window via the runtime flag -t
- Ability to set default URL scheme, rather than it always defaulting to gopher
- New theme: color. Renders any VT100 style escape sequences that deal with color found within the current document.
Note: due to a library incompatibility with Go 1.11 a hot-fix was done to provide that compatibility. The release has been incremented to 2.1.1 to reflect that change.
Bombadillo grows to become a non-web browser,
allowing seamless browsing across a variety of
internet protocols, while staying simple, usable and
New protocol support
Bombadillo has always supported Gopher, and continues to do so. In addition to Gopher support has been added for a number of great protocols:
Project Gemini is a new protocol, collaboratively designed, aiming to exist somewhere between gopher and the web. Bombadillo's implementation of this protocol includes TLS via Trust On First Use certificate pinning.
Access telnet servers within Bombadillo. You can play games!
Finger has been around for a long time, and has had some new activity recently. Browse servers, users, and bookmark your favorites.
Bombadillo can act as a pager for local files, allowing you to browse them in the same way you browse any other site.
As a non-web client, there is no built-in support for http or https in Bombadillo. Two new features bridge the gap, making it easy to view web content:
- Open your web links in your default graphical web browser
- Have web content processed by popular browsers Lynx, w3m, or elinks and displayed within Bombadillo
All web functionality is opt-in only - you are in control.
Improved browsing experience
Large parts of Bombadillo have been redesigned and rebuilt to improve
the overall browsing experience.
- Document rendering is faster and smoother, thanks to it being rewritten from scratch.
- There is better support for displaying UTF-8 documents and emojis.
- Documents are easier to read, with a new progress indicator and improved word-wrapping.
- New layout and decorative elements look great, with normal and inverse color themes.
- Check links before you click them using the improved
Community suggested improvements
Thanks to your feedback, we've added support for XDG base directories and a version information flag. Keep the feedback coming!
A new Makefile makes building and installing Bombadillo simple, while adding flexibility for custom install requirements.
It's easy to get help, with a new man page covering the details of using Bombadillo. Documentation covering configuring, building and installing is also available in our source code repository.
Other important changes
We've changed the default location for Bombadillo's user configuration file
.bombadillo.ini to be more standards compliant. Furthermore, Bombadillo now requires Go version 1.11 to build.
Help! My old config isn't working!
This has likely occurred because Bombadillo previously stored your
.bombadillo.ini file in your home directory. The new default setting is to follow the XDG base directory standard.
To fix this, you can:
- Move .bombadillo.ini to the XDG config home directory - this is usually
~/.config or what is specified in
- Change the
configlocation setting in
defaults.go before building Bombadillo - refer to the documentation in the file for more information
Thank you to all of the contributors, commenters, feedback-givers, and online friends for the help and support to see this realised.
Full change log
View 2.0.0 changelog
There were ~250 commits by three contributors and ~35 issues submitted by five contributors.
Updates to README
Added Makefile for building
Added man page
Rebuilt the rendering engine
Modularized protocol support
Fixes issue w/ gopher type 7 responses
Reworked user messaging system
New application styling/layout
Added ability to see how far into a document you are
Expanded check command to let users check where a link goes to
Rewrote and simplified line wrapping
Improved terminal resizing responsiveness
Bookmarks can be scrolled when focused
Added gemini support
Improved telnet support and fixed visual bugs
Improved response to various signals
Added finger support
Added local files support
Gemini links are supported via the gophertype h URL resource format
Added command line flag to get version information
Improved/safer handling of local paths
Simplified file saving
Added validation to some option values
Added support for redirects in gemini
Added TOFU style certificate pinning system to gemini module
Added support and options for client certificates
Updated URL parsing to better support the added protocols
Added support for purging gemini certificates
Added inverse theme
Added defaults.go file to allow users to set defaults before building
Added support for http(s) through multiple terminal browser rendering backends
Updated opening http(s) links in a gui browser to do better validation of gui availability
Updated config location from ~ to XDG_CONFIG_HOME
Added removal of escape codes from documents to prevent pages breaking. Note: This is to be revisited for a future release
Writing files will no longer overwrite files with the same name, suffixing will get added
Removes usage of library methods only available in Go 1.12+, allowing compatibility with 1.11
Code formatting and linting
General bug fixes and performance/stability improvements