2023-02-06
Nyxt 3 Pre-release 3
This release focuses on a lot of stability improvements to previous pre-releases while also adding a few new features. The features are mostly focused on refining our existing functionality. As an example; one of the most interesting is the evolution of the Lisp REPL. It is now supercharged with all sorts of fun interactive commands.
Please feel free to share your feedback on our GitHub issue tracker!
You can download Nyxt 3 Pre-release 3 here.

Nyxt has a new enhanced and interactive REPL!

Nyxt's describe interface is vastly improved.
Note: many of the links below are designed to be opened in Nyxt.
3-pre-release-3
nyxt/repl-mode:lisp-replrenamed torepl ( UNBOUND )and redesigned to be more approachable with buttons and commands controlling cell formatting, deletion, cleaning, and movement.- New prediction capabilities. Nyxt can now predict your next command, it will show up automatically in the execute-command menu. Nyxt uses a stochastic model to generate predictions for what your next command will be. The model is stored locally and is cleared after every session.
- New
describe-modecommand (an alias fordescribe-class). describe-commandbecame an alias fordescribe-function.auto-modeis now incorporated into Nyxt core, with its settings residing inmodable-buffernow.- Support for key files and Yubikey locking in KeePassXC password interface.
- There are default rules for Gopher, Gemini, and Nyxt-internal-pages.
- The rules file is now moved to auto-rules.lisp (instead of the old auto-mode-rules.lisp).
- Startup is more robust against corrupted history files.
diff-modeis removed.- History globality can be set on a per-buffer basis. See the
global-history-pslot incontext-buffer. backtrack-to-hubs-pallows to revisit the "hub" URLs you often visit, instead of adding them to history anew.- nyxt:// pages can be linked from the outside Internet due to scheme security settings changes.
- When started with
--remoteand without--quit, Nyxt now reads s-expression from standard input and sends it to the remote process. This avoids the performance penalty of a new process startup on each iteration.
Bindings
- Add
set-action-on-current-suggestion ( UNBOUND ), bound toC-c C-jby default.
Programming interface
define-configurationautomatically resolves class names and slot names even without package prefix.- Keybindings are also resolved to reasonable commands when necessary.
- Generate methods instead of functions in
define-parenscriptanddefine-parenscript-asyncto ease hooking into those with, for example,:aroundmethods. after-init-hookandafter-startup-hookare browser slots, instead of global variables they used to be.- Allow the command argument to
ffi-add-context-menu-commandto be an arbitrary function. - New package nicknames:
timeforlocal-timetypesfortrivial-typessymfornsymbols
- The third value in the
object-attributesis interpreted as display HTML for the suggestion. See the color-picker support as an example application for this feature. - Universal describe-* commands have been replaced with new sources for the
regular commands, such as
function-non-nyxt-source,function-internal-sourceand so on. - The
browserclass has aprofileslot. - Renderers are now first class objects, see the
rendererclass. It's possible to change renderer from a same REPL session. set-url ( C-l )andset-url-new-buffer ( M-l )accept the:URLkeyword argument and load it when provided.- New
ffi-heightandffi-widthmethods to unify most of the height & width methods used before. - Rename
prompter:return-actionstoactions-on-return. - Rename
prompter:marks-actionstoactions-on-marks. - Rename
prompter:selection-actionstoactions-on-current-suggestion. - Rename
prompter:return-actiontoactions-on-return. - Rename
prompter:marks-actionstoactions-on-marks. - Rename
prompter:selection-actionstoactions-on-current-suggestion. - Rename
prompter:multi-selection-ptoenable-marks-p. nyxt/prompt-buffer-mode:return-selectionrenamed torun-action-on-return ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:cancel-inputrenamed toquit-prompt-buffer ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:toggle-toggle-mark-backwardsrenamed totoggle-mark-backwards ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:toggle-markrenamed totoggle-mark-forwards ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-next-sourcerenamed tonext-source ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-previous-sourcerenamed toprevious-source ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-next-pagerenamed tonext-page ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-previous-pagerenamed toprevious-page ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-lastrenamed tolast-suggestion ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-firstrenamed tofirst-suggestion ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-nextrenamed tonext-suggestion ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:select-previousrenamed toprevious-suggestion ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:set-selection-actionrenamed toset-action-on-return ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:run-selection-actionrenamed torun-action-on-current-suggestion ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:toggle-selection-actions-enabledrenamed totoggle-actions-on-current-suggestion-enabled ( UNBOUND ). The default keybinding is the same.nyxt/prompt-buffer-mode:insert-selectionrenamed toinsert-current-suggestion ( UNBOUND ). The default keybinding is the same.
Bug fixes
- VI insert mode is triggered in more cases where it should be triggered.
- Invoke the right WebKit command when cutting text with
ffi-buffer-cut - Fix the display of history suggestions when going forward in history.
- Security: all the non-ASCII domain names are shown as IDN punycodes in addition to aesthetic display in status buffer.
- The canceled page requests are stored to history, making it more consistent.
Did you enjoy this article? Register for our newsletter to receive the latest hacker news from the world of Lisp and browsers!
- Maximum one email per month
- Unsubscribe at any time
