Skip to content

Latest commit

 

History

History
513 lines (430 loc) · 26.6 KB

CHANGELOG.md

File metadata and controls

513 lines (430 loc) · 26.6 KB

Changelog

[2.3]

Added

  • Added Gopher protocol support, see comment in rc.lua.
  • Added two commands to clear website data (:clear-data, :clear-favicon-db).
  • Added dark mode support setting application.prefer_dark_mode.
  • The tabmenu plugin is now included in luakit (:tabmenu).

Changed

  • Removed debug symbol generation for default make.
  • Changed the C standard from gnu99 to c11 because Webkit wants it.
  • The proxy module remembers when no proxy or system proxy was used last.
  • The proxy widget is hidden when proxy "None" is active.

Fixed

  • Fixed bounding box not spanning over whole element.
  • Fixed an issue where styled hint labels caused intransparent bounding boxes.
  • Fixed a race condition when a tab is closed on NetBSD.
  • Do not execute "git ls-files" when luakit is not a git repository

Update information

  • The gopher module needs luasocket installed.

[2.2]

Added

  • Hint CSS can now be customized via theme.lua.
  • Added the :save command, to save the complete page as a single MHTML file.

Changed

  • mime-type-decision is now only emitted for a successful response.
  • Removed the default Shift-d binding for deleting the current session.
  • Removed the socket widget for Wayland compatibility.
  • :bookmarks will now reuse an existing bookmarks tab if present.
  • tablist.always_visible has been deprecated in favour of tablist.visibility.
  • Empty tabs are no longer saved to history.
  • Session recovery has been made slightly more robust.

Fixed

  • Fixed the tablist not being hidden in fullscreen mode.
  • Fixed poor performance when loading/saving data with lousy.pickle.
  • Fixed poor memory usage behaviour caused by excessive numbers of Web Views.
  • Fixed proxy not being set from proxy.set_active().
  • Fixed window.new_tab_page being ignored for bare :open/:tabopen commands.
  • Fixed re_match_text always matching everything.
  • Fixed panic when /etc/hosts cannot be read.
  • Fixed view-source: pages being inadvertently affected by stylesheets.
  • Fixed domain-specific keys not being loaded from persisted settings.

[2.1]

Added

  • Added userstyles.toggle_sheet function.
  • Added WebKit build version information to the luakit://help/ page header
  • Added WebKit build/runtime version information to the output of luakit --help

Changed

  • userstyles module now continuously applies styles while editing.
  • Duplicate download::status signals are no longer emitted.
  • Changed default data directory permissions to be user-accessible only (0700).
  • Luakit now changes the cookie database to be user-accessible only (0600) automatically.

Fixed

  • Improved error when calling :javascript command without an argument.

[2.0]

Migrating from version 2017-08-10

  1. Remove the two if unique then ... end blocks from your rc.lua.
  2. Add require "unique_instance" to your rc.lua, before all other require statements.
  3. Remove all configuration files except rc.lua and theme.lua. Any changes to globals.lua need to be migrated to rc.lua and changed to use the settings API.

Added

  • Added styles.new_style function.
  • Added styles.toggle_sheet function.
  • Added styles.watch_styles function, and enabled live-editing of user styles.
  • Added luakit.install_paths table. luakit.install_path is now deprecated.
  • Added Control-Y readline binding.
  • Added ability to control whether links from secondary instances open in a new window.
  • Added luakit.resource_path property to control where luakit searches for resource files.
  • Added lousy.util.find_resource function.
  • Added scroll signal.
  • Added ability to bind actions to webview scroll events.
  • Added ability to set the default zoom level.
  • Added webview widget "permission-request" signal.
  • Added webview widget hardware_acceleration_policy property.
  • Added webview widget allow_file_access_from_file_urls and allow_universal_access_from_file_urls properties.
  • Added settings module and APIs. This replaces the domain_props module.
  • Added tablist.always_visible setting.
  • Added utf8.len (same as string.wlen) and utf8.offset methods.
  • Added utf8.charpattern property.
  • Added :set and :seton commands, for changing settings.
  • Added ability to always save session before exiting luakit.
  • Added markup option to window set_prompt() method.
  • Added detach-tab signal.
  • Added support for multi-byte characters in hints.
  • Added widget replace method.

Changed

  • It is no longer necessary to add bindings to tables with lousy.bind.add_binds().
  • Readline bindings have been moved to readline.lua.
  • Readline bindings are now automatically bound when the input bar is visible.
  • Unique instance support has been moved to unique_instance.lua.
  • The image widget now uses luakit.resource_path to locate local files.
  • The log viewer now shows errors logged by a user-defined rc.lua failing to load.
  • Luakit will now remove its IPC socket file before restarting.
  • The editor command now defaults to using xdg-open to edit files. The default builtin command has been renamed autodetect.
  • Changed luakit://introspector/ to luakit://binds/.
  • URL completion now uses word-based fuzzy matching.
  • :download now uses the current page URI by default.
  • gy now accepts a count.
  • :tabopen will now only open local files when given an absolute path.
  • :styles-list now lists active styles first and disabled styles last.

Removed

  • Removed domain_props module. It is replaced by the settings module and its APIs.
  • Removed all configuration files except rc.lua and theme.lua.
  • Removed enable_private_browsing webview property.
  • Removed w.closed_tabs field. It is now private to the undoclose module.

Fixed

  • Fixed luakit://help/ not finding documentation with custom DOCDIR
  • Various minor documentation fixes.
  • Fixed Control-Scroll and Shift-Scroll key bindings not working with smooth scrolling.
  • Fixed inability to switch focus between web page elements with Tab and Shift-Tab.
  • Fixed log page bug when logging messages with newlines.
  • Fixed Up and Down keybindings being broken on completion menu.
  • Fixed hardcoded path to luakit icon.
  • Fixed luakit:// pages not working and spewing errors when not using LuaJIT.
  • Fixed thumbnail hinting not retrieving thumbnail links correctly.
  • Fixed inability to bind Modifier-Minus.
  • Fixed readline handling of wide characters.
  • Fixed completion not suggesting history/bookmarks items without titles/tags.
  • Fixed :dump command not working due to use of a removed API.
  • Fixed follow hints being sometimes truncated by the viewport edge.
  • Follow mode now renders hints much faster.
  • Fixed Forward/Back keys not working due to outdated bind syntax.
  • Fixed opening local files with names containing spaces from :tabopen and the command-line.

[2017-08-10]

  • Required WebKitGTK+ version: 2.16+

Breaking changes

  • Support for WebKitGTK+ versions older than 2.16 has been removed.
  • It is no longer possible to override built-in luakit modules with Lua files in one's personal configuration directory.
  • The configuration files binds.lua and modes.lua have become built-in luakit modules. Configuration files named binds.lua or modes.lua will not be loaded. Any custom bindings should be moved to rc.lua.

Added

  • New history.frozen API allows temporarily freezing history collection.
  • New lousy.widget.zoom statusbar widget: shows current page zoom level.
  • Added log signal, emitted whenever a message is logged.
  • New widget.is_alive property. Can be accessed even if the widget has been destroyed.
  • Added luakit://log/ chrome page: displays log messages.
  • Added status bar widget that notifies of any Lua warnings or errors.
  • Added migration, quick-start, and files and directories guides to documentation.
  • Added frequently-asked questions to documentation.
  • Added luakit.wch_upper and luakit.wch_lower key case conversion utility functions.
  • Added formfiller.extend function for extending the formfiller DSL.
  • Added context-aware command completion.

Fixed

  • Fixed code-blocks in documentation being formatted incorrectly.
  • Fixed incompatibility of editor.lua with urxvt.
  • Fixed slow performance while beginning a search.
  • Fixed lousy.util.table.join merging tables in unpredictable order.
  • Fixed image_css raising errors on page zoom in/out.
  • Worked around image_css breaking slightly when using non-1.0 zoom_level.
  • Fixed sessions failing to save with a mix of tabs and private tabs.
  • Worked around webview widgets self-focusing on click.

Changed

  • editor.lua now uses substitution strings, rather than global to determine which editor to open.
  • open_editor.lua now uses editor.lua rather than always using xdg-open.
  • --log can now set different log levels for different modules, similarly to mpv.
  • Documentation now has inter-page references.
  • The adblock page-blocked page now has a "Continue anyway" button.
  • Serializing Lua functions now includes their upvalues.
  • adblock and styles now log the directory searched for files.
  • <ctrl-a> and <Ctrl-x> bindings now take an optional count.
  • Luakit's IPC socket files are now opened in /tmp/.
  • Luakit now checks for accidental use of DEVELOPMENT_PATHS.
  • IPC endpoints' emit_signal() method now accepts a webview ID as its first argument, as well as a webview. This specifies a single destination for the IPC call.
  • modes.add_binds() now verifies that modes with the given names already exist, to guard against typos.
  • Scrolling keybinds now take a count.

Contributors to this release:

  • Aidan Holm (150 commits)
  • gleachkr (10 commits)
  • Zhong Jianxin (4 commits)
  • Stefan Hagen (3 commits)
  • Aric Belsito (1 commit)
  • Ygrex (1 commit)

[2017-07-26]

  • Required WebKitGTK+ version: 2.14+
  • A relatively recent version of GTK+ 3 is required; some features are not available on older versions.

Added

Adblock module

The adblock module previously available at https://github.com/luakit/luakit-plugins has been included into the main luakit repository, with the following changes:

  • Ported adblock module to use WebKit 2 compatible APIs. This breaks compatibility with WebKit 1.
  • Added color-coding to adblock filter list status indicator.
  • The Adblock chrome page CSS has been updated to be more consistent with other luakit chrome pages.
  • An enable/disable button has been added to the Adblock chrome page.
  • The adblock chrome page has received several other refactors and improvements.
  • Adblock no longer blocks ads on local files (pages on the file:// scheme).
  • Adblock no longer blocks data URIs for performance reasons.
  • Added links for quickly enabling/disabling filter lists to adblock chrome page.
  • Made adblock.enabled writeable, and removed adblock.state() function.
  • Adblock now blocks pages from being loaded until all filter list rules are fully loaded.
  • Adblock now enables newly-added filter lists by default.
  • Fixed a bug where luakit would not start if the adblock subscriptions file was missing.
  • Fixed broken :adblock-reload command.
  • Improved the consistency and formatting of adblock log messages.
  • Fixed a bug where the adblock subscriptions file would become corrupted.
  • Adblock simple mode has been removed.
  • Fixed parsing of adblock filter list rules containing '#'.
  • Fixed a bug where adblock would incorrectly block URIs on many domains, due to an design flaw.
  • Adblock now displays an error page when the adblock module blocks a page navigation.
  • Improved filter list rule length and ignore count calculation.
  • Added several optimizations for rule matching that significantly improve performance.

See also:

  • luakit://help/doc/modules/adblock.html
  • luakit://help/doc/modules/adblock_chrome.html

Error pages

A new module, error_page.lua, allows customization of luakit error pages, such as those displayed when a page fails to load.

  • Luakit error pages are now displayed with a nicer interface, provided by error_page.lua
  • Chrome page errors are now displayed with the error_page.lua module interface.
  • Error pages now show information about the current proxy, as unintended proxy use can be responsible for page load failures.
  • Error pages can now be customized with user CSS.

See also:

  • luakit://help/doc/modules/error_page.html

User styles

A new module, styles.lua, supports user stylesheets with @-moz-document sections. User stylesheets from https://userstyles.org are supported.

  • Luakit now automatically detects and parses user stylesheets on startup.
  • Added support for enabling/disabling user stylesheets immediately, without refreshing the page.
  • Added the :styles-list command to display the user stylesheets menu.
  • Added the :styles-reload command to reload all user stylesheet files from disk.
  • Removed the site-specific user_stylesheet_uri interface.

See also:

  • luakit://help/doc/modules/styles.html

Other new modules

  • open_editor.lua: Adds support for editing text areas and input fields in an external text editor.
  • newtab_chrome.lua: Adds support for customizing the new/blank tab page (luakit://newtab/) with HTML and CSS.
  • image_css.lua: Improves how images are displayed by WebKit.
  • vertical_tabs.lua: Displays tabs in a vertical tab bar to the left of the tab content.
  • referer_control_wm.lua: Adds support for blocking the Referer header on cross-origin requests.
  • viewpdf.lua: Adds support for automatically viewing downloaded PDF files.

New APIs

Core APIs:

  • Added luakit.process_limit to control the maximum number of web processes.
  • Added luakit.options and luakit.webkit2 properties.
  • Added lousy.util.table.filter_array() and lousy.util.lua_escape().
  • Added luakit spell checking API. A suitable language to check spelling with is automatically detected.
  • Added website data retrieval and removal APIs.
  • Added user stylesheet APIs, used by styles.lua. Stylesheet objects can be created from Lua code and enabled/disabled for individual webview widgets.
  • Added request API. This supports handling custom URI scheme requests asynchronously.
  • Added msg logging library. This replaces the info() and warn() functions.
  • Added more log levels. Luakit now has fatal, error, warn, info, verbose, and debug log levels.
  • Added regex class, to provide JavaScript- and PCRE-compatible regular expressions.
  • Added lousy.pickle library for Lua table serializing.
  • Added missing remove_signals method to Lua objects.
  • Added soup.cookies_storage to control the path to the cookies SQLite database.
  • Added IPC endpoint and web module APIs.
  • Added API for registering Lua functions accessible from JavaScript.
  • Added API for intercepting and modifying outgoing requests.

New widget APIs:

  • Added drawing_area, spinner, image, overlay widgets.
  • Added unique IDs to window widgets.
  • Added widget parent, focused properties.
  • Added widget "resize" signal.
  • Added "mouse-enter" and "mouse-leave" signals to eventbox widget.
  • Added window.ancestor() method to retrieve the window widget that a given widget is contained in.
  • Added support for getting/setting scrolled widget scroll position and scrollbar settings.
  • Added support for displaying tooltips over widgets.
  • Added support for customizing individual widgets with GTK 3's CSS support.
  • Added nrows() getter to lousy.widget.menu widget instances.

New webview APIs:

  • Added webview widget properties editable and is_playing_audio.
  • Added webview.modify_load_block() API. This allows Lua code to suspend page load operations.
  • Added webview widget private property.
  • Added webview widget "crashed" and "go-back-forward" signals.
  • Added APIs to get the web process ID of webview widgets and the current web extension ID.
  • Added APIs to save/restore the internal state of a webview widget.
  • Added "enable-scripts", "enable-styles", "enable-userscripts" signal APIs to customize module behavior for individual webview widgets.
  • Added signal for tab save decisions.

Miscellaneous

  • Added globals.page_step to control the size of the scrolling step.
  • Added the :tabdetach command to detach a tab into a separate window. The tab is not destroyed and recreated, so any ongoing work in the tab will not be lost.
  • Added build options to specify more system paths, easing installation and packaging for a variety of systems.
  • The build system now uses the correct Lua/LuaJIT binary for build scripts.
  • A testing framework has been added that supports asynchronous tests.
  • Automatically generated documentation is now included in luakit installations.
  • Mode and bind information is now included in generated documentation.
  • The documentation index now displays which modules are loaded.
  • Added support for private browsing on a per-tab basis.
  • Added support for defining search engines as Lua functions. This allows more complex input, such as specifying multiple fields in technical search engines.
  • Added support for getting/setting the text alignment of label widgets.
  • Added support for getting/setting the divider position of paned widgets.
  • Added support for getting/setting the background color of box and label widgets.
  • Added support for getting the width and height of widgets.
  • Added support for setting the minimum width and height of widgets.
  • Added basic profile support.
  • Added options to control externally editing text files.
  • Added a crash recovery session that is automatically saved regularly.
  • Improved the formatting of error tracebacks. Improved tracebacks are now used for debug.traceback() as well as error messages.
  • The xdg module now has new properties system_data_dirs and system_config_dirs.
  • The xdg module now ensures that the paths it returns do not end in a trailing slash, regardless of how the relevant environment variables are set.

Changed

  • User scripts can now run even when JavaScript has been disabled. They now use an isolated script world inaccessible from the web page.
  • User scripts now show an error message on failure.
  • The status bar and the tab bar are now hidden when luakit is fullscreen.
  • GLib logs are now funneled through luakit's log system.
  • Subsequent lines in log messages with multiple lines are now indented.
  • When the input bar is shown, the status bar is hidden. This is to prevent webview resizes causing performance issues for some users.
  • Error messages within the luakit window can now be selected with the mouse and copied.
  • An error message is now shown when the formfiller module fails to fill a form.
  • The undoclose menu is now automatically closed when there are no more menu entries.
  • Closed tabs are now saved in the luakit session file, so undoclose now works across sessions.
  • Individual tab history is now saved in the luakit session file.
  • The "navigation-request" signal now includes the reason for the navigation.
  • Plugin errors, load cancel errors, and frame load errors are now ignored.
  • Search behavior across multiple tabs has been improved.
  • Idle callback functions that throw errors are now removed.
  • Follow mode now has a new label maker: trim().
  • w:run_cmd() no longer adds the given command to the mode command history.
  • A compile-time check for older WebKit versions has been added.
  • All uses of module() in Lua code have been removed.
  • Most variables have been made non-global.
  • A follow mode heuristic has been added for links that contain a single image element.
  • Luakit no longer uses a custom luakit-specific useragent string. This mproves site compatibility with sites such as Google Maps and decreases user fingerprint.
  • All binds now have accompanying descriptions.
  • Chrome pages now have consistent CSS and page style.
  • introspector.lua has been renamed to introspector_chrome.lua for consistency with other chrome page modules.
  • Added a help chrome page.
  • Luakit now gives a full backtrace on startup failure.
  • Formfiller mode now uses visual selection to add forms to the formfiller file.
  • Formfiller mode now uses Lua patterns instead of JavaScript regular expressions.
  • Widget getters and setters now verify that the widget is still valid.
  • The widget "created" signal now has the new widget as an argument, making it much more useful.
  • Accessing unknown widget properties now prints a warning.
  • A developer warning is now printed if the web extension binary is not found.
  • Luakit is now completely restarted if loading a configuration file fails.
  • Luakit no longer shows follow hints for invisible elements.
  • The :lua command now has an implicit variable w, the current window table. This is for convenience.
  • The :lua command can now evaluate expressions as well as execute statements.
  • A resources/ directory tree has been added.
  • Tabs now have a themable hover color.
  • The default set of key bindings now includes bindings for number pad keys.
  • A small margin has been added to the status bar.
  • The formfiller now supports automatically filling forms when pages have finished loading. This is useful for automatically logging in to certain sites.
  • Added export_funcs parameter to chrome.add().
  • Key presses that do not prefix any valid bindings are now ignored. This prevents key bindings being ignored because the input buffer has filled up with garbage.
  • Follow mode now allows focusing inputs by their value (the text within them) and focusing empty inputs by their placeholder text.
  • The :javascript command now has improved error handling.
  • luakit:// URIs are no longer added to history.
  • Download objects now have the allow_overwrite property.
  • Performance of the ssl widget has been improved.
  • The downloads chrome page now displays file size statistics.
  • Trailing newlines are now stripped from log messages.
  • The webview widget scrolling interface has been modified for compatibility with WebKit 2.
  • The API for retrieving page source is now asynchronous.
  • Follow mode now strips the leading mailto: from email links, and allows the user to configure whether to ignore case in or not.
  • Changed the label widget width property to textwidth.
  • The socket widget is no longer destroyed upon plug disconnect.
  • go_next_prev.lua now uses an improved heuristic for guessing page relationship.
  • Other minor changes.

Removed

  • All support for building with WebKit 1 has been removed.
  • All support for building with GTK+ 2 has been removed.
  • The "cookie-changed" signal has been removed, due to a WebKit API limitation.
  • The download creation API has been removed, due to a WebKit API limitation.
  • The global info() and warn() functions have been removed in favor of the msg library.
  • The :viewsource command is removed, and replaced with :view-source.
  • The WITH_UNIQUE build option has been removed, as libunique is no longer used.
  • The webview widget show_scrollbars property has been removed. It is replaced by the hide_scrollbars.lua module.
  • The default mouse forward/backward bindings have been removed.
  • Support for webview.init_funcs and window.init_funcs has been removed. There are replacement signals that serve the same purpose.

Fixed

  • Changed outdated luaL_reg to luaL_Reg.
  • Fixed a desktop file issue preventing setting luakit as default browser for GNOME.
  • Fixed evaluated scripts appearing in the web inspector debugger tab.
  • Fixed find_config() assuming the system configuration is located at /etc/xdg/.
  • Fixed luakit window losing initial focus, preventing some key bindings from working.
  • Fixed luakit icon having incorrect permissions.
  • Removed use of some deprecated functions.
  • Fixed completion for hyphenated commands not working.
  • Fixed bind activation for hyphenated commands not working.
  • Fixed completion menu not closing.
  • Fixed a segmentation fault when removing a non-present signal from an object.
  • Fixed issues in how follow mode handled clicking on <input> elements.
  • Fixed broken conditional in noscript.lua.
  • Fixed a bug where calling view:load_string() from load_failed_cb() would cause reload loops.
  • Fixed a bug where the "link-unhover" signal was not being emitted.
  • Fixed click() in follow.lua to trigger more events to work around glitches.
  • Fixed go_up breaking on file:// URIs.
  • Fixed PKGBUILD issues.
  • Fixed contributor emails.
  • Fixed use-after-free of destroyed widgets.
  • Fixed incorrect chrome page header z-index.
  • Fixed a bug where the bin widget child property always returned itself.
  • Fixed a bug in URI __add operation.
  • Fixed long source paths appearing in Lua log output.
  • Fixed formfiller silently failing to add forms.
  • Fixed formfiller radio button and checkbox clicking behavior.
  • Fixed errors when handling tabs with empty titles
  • Change context menu 'New Window' items to 'New Tab' items
  • Fixed a bug where "property::textwidth" signal was not emitted.
  • Fixed a bug where invalid color codes were silently ignored.
  • Fixed unstable behavior when creating widgets without a specified type.
  • Fixed design flaws where several modules would not work without JavaScript enabled.
  • Fixed the bookmarks chrome page missing pagination.
  • Fixed a bug where user scripts would fail to add CSS on pages without a <head> element.
  • Fixed a bug where quitting luakit through the window manager circumvented luakit's exit prevention system.
  • Fixed the < and > binds not wrapping around consistently.
  • Fixed a bug where the "destroy" signal would not be emitted for some widget types.
  • Numerous other fixes and performance improvements.

Contributors to this release:

  • Aidan Holm (1585 commits)
  • Jenny Wong (71 commits)
  • Mason Larobina (17 commits)
  • Grégory DAVID (8 commits)
  • karottenreibe (7 commits)
  • Ygrex (6 commits)
  • Robbie Smith (4 commits)
  • Michishige Kaito (4 commits)
  • Ambrevar (3 commits)
  • Yuriy Melnyk (2 commits)
  • Plaque-fcc (2 commits)
  • loblik (2 commits)
  • Daniel Bolgheroni (2 commits)
  • windowsrefund (1 commit)
  • walt (1 commit)
  • Robbie (1 commit)
  • Peter Hofmann (1 commit)
  • Nuno Vieira (1 commit)
  • nmeum (1 commit)
  • Kane Wallmann (1 commit)
  • Jasper den Ouden (1 commit)
  • gleachkr (1 commit)
  • feivel (1 commit)
  • eshizhan (1 commit)
  • donlzx (1 commit)
  • Bartłomiej Piotrowski (1 commit)
  • Babken Vardanyan (1 commit)