2023-02-06

Tags: release.

Nyxt 3 Pre-release 3

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-repl renamed to repl ( 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-mode command (an alias for describe-class ).
  • describe-command became an alias for describe-function .
  • auto-mode is now incorporated into Nyxt core, with its settings residing in modable-buffer now.
  • 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-mode is removed.
  • History globality can be set on a per-buffer basis. See the global-history-p slot in context-buffer .
  • backtrack-to-hubs-p allows 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 --remote and 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

Programming interface

  • define-configuration automatically 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-parenscript and define-parenscript-async to ease hooking into those with, for example, :around methods.
  • after-init-hook and after-startup-hook are browser slots, instead of global variables they used to be.
  • Allow the command argument to ffi-add-context-menu-command to be an arbitrary function.
  • New package nicknames:
    • time for local-time
    • types for trivial-types
    • sym for nsymbols
  • The third value in the object-attributes is 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-source and so on.
  • The browser class has a profile slot.
  • Renderers are now first class objects, see the renderer class. It's possible to change renderer from a same REPL session.
  • set-url ( C-l ) and set-url-new-buffer ( M-l ) accept the :URL keyword argument and load it when provided.
  • New ffi-height and ffi-width methods to unify most of the height & width methods used before.
  • Rename prompter:return-actions to actions-on-return .
  • Rename prompter:marks-actions to actions-on-marks .
  • Rename prompter:selection-actions to actions-on-current-suggestion .
  • Rename prompter:return-action to actions-on-return .
  • Rename prompter:marks-actions to actions-on-marks .
  • Rename prompter:selection-actions to actions-on-current-suggestion .
  • Rename prompter:multi-selection-p to enable-marks-p .
  • nyxt/prompt-buffer-mode:return-selection renamed to run-action-on-return ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:cancel-input renamed to quit-prompt-buffer ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:toggle-toggle-mark-backwards renamed to toggle-mark-backwards ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:toggle-mark renamed to toggle-mark-forwards ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-next-source renamed to next-source ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-previous-source renamed to previous-source ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-next-page renamed to next-page ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-previous-page renamed to previous-page ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-last renamed to last-suggestion ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-first renamed to first-suggestion ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-next renamed to next-suggestion ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:select-previous renamed to previous-suggestion ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:set-selection-action renamed to set-action-on-return ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:run-selection-action renamed to run-action-on-current-suggestion ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:toggle-selection-actions-enabled renamed to toggle-actions-on-current-suggestion-enabled ( UNBOUND ) . The default keybinding is the same.
  • nyxt/prompt-buffer-mode:insert-selection renamed to insert-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!