Luakit 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:
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:
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:
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)