1# Changelog
2
3## [develop]
4
5### Added
6
7- Added command `:userscripts-reload` to reload lua scripts.
8- The tabgroup plugin is now included in luakit (:tabmenu).
9- Allow configuration of shortcuts that should be passed through (https://github.com/luakit/luakit/pull/921).
10
11### Changed
12
13- Allow functions to be bound to more than one key (https://github.com/luakit/luakit/issues/913).
14-
15
16### Fixed
17
18- No more `gdk_keymap_get_default()` compiler warning.
19- Fixed an issue where links were hinted, but then could be followed.
20- Fixed the paging on the the bookmarks page.
21
22## [2.3]
23
24### Added
25
26- Added Gopher protocol support, see comment in rc.lua.
27- Added two commands to clear website data (:clear-data, :clear-favicon-db).
28- Added dark mode support setting `application.prefer_dark_mode`.
29- The tabmenu plugin is now included in luakit (:tabmenu).
30
31### Changed
32
33- Removed debug symbol generation for default make.
34- Changed the C standard from gnu99 to c11 because Webkit wants it.
35- The proxy module remembers when no proxy or system proxy was used last.
36- The proxy widget is hidden when proxy "None" is active.
37
38### Fixed
39
40- Fixed bounding box not spanning over whole element.
41- Fixed an issue where styled hint labels caused intransparent bounding boxes.
42- Fixed a race condition when a tab is closed on NetBSD.
43- Do not execute "git ls-files" when luakit is not a git repository
44
45### Update information
46
47- The gopher module needs `luasocket` installed.
48
49## [2.2]
50
51### Added
52
53- Hint CSS can now be customized via `theme.lua`.
54- Added the `:save` command, to save the complete page as a single MHTML file.
55
56### Changed
57
58- `mime-type-decision` is now only emitted for a successful response.
59- Removed the default Shift-d binding for deleting the current session.
60- Removed the `socket` widget for Wayland compatibility.
61- `:bookmarks` will now reuse an existing bookmarks tab if present.
62- `tablist.always_visible` has been deprecated in favour of `tablist.visibility`.
63- Empty tabs are no longer saved to history.
64- Session recovery has been made slightly more robust.
65
66### Fixed
67
68- Fixed the tablist not being hidden in fullscreen mode.
69- Fixed poor performance when loading/saving data with `lousy.pickle`.
70- Fixed poor memory usage behaviour caused by excessive numbers of Web Views.
71- Fixed proxy not being set from `proxy.set_active()`.
72- Fixed `window.new_tab_page` being ignored for bare `:open`/`:tabopen` commands.
73- Fixed `re_match_text` always matching everything.
74- Fixed panic when `/etc/hosts` cannot be read.
75- Fixed `view-source:` pages being inadvertently affected by stylesheets.
76- Fixed domain-specific keys not being loaded from persisted settings.
77
78## [2.1]
79
80### Added
81
82- Added `userstyles.toggle_sheet` function.
83- Added WebKit build version information to the `luakit://help/` page header
84- Added WebKit build/runtime version information to the output of `luakit --help`
85
86### Changed
87
88- `userstyles` module now continuously applies styles while editing.
89- Duplicate `download::status` signals are no longer emitted.
90- Changed default data directory permissions to be user-accessible only (`0700`).
91- Luakit now changes the cookie database to be user-accessible only (`0600`) automatically.
92
93### Fixed
94
95- Improved error when calling `:javascript` command without an argument.
96
97## [2.0]
98
99### Migrating from version 2017-08-10
100
101 1. Remove the two `if unique then ... end` blocks from your `rc.lua`.
102 2. Add `require "unique_instance"` to your `rc.lua`, before all other `require` statements.
103 4. Remove all configuration files except `rc.lua` and `theme.lua`. Any changes to `globals.lua`
104    need to be migrated to `rc.lua` and changed to use the `settings` API.
105
106### Added
107
108 - Added `styles.new_style` function.
109 - Added `styles.toggle_sheet` function.
110 - Added `styles.watch_styles` function, and enabled live-editing of user styles.
111 - Added `luakit.install_paths` table. `luakit.install_path` is now deprecated.
112 - Added `Control-Y` readline binding.
113 - Added ability to control whether links from secondary instances open in a new window.
114 - Added `luakit.resource_path` property to control where luakit searches for resource files.
115 - Added `lousy.util.find_resource` function.
116 - Added `scroll` signal.
117 - Added ability to bind actions to webview scroll events.
118 - Added ability to set the default zoom level.
119 - Added `webview` widget `"permission-request"` signal.
120 - Added `webview` widget `hardware_acceleration_policy` property.
121 - Added `webview` widget `allow_file_access_from_file_urls` and `allow_universal_access_from_file_urls` properties.
122 - Added `settings` module and APIs. This replaces the `domain_props` module.
123 - Added `tablist.always_visible` setting.
124 - Added `utf8.len` (same as `string.wlen`) and `utf8.offset` methods.
125 - Added `utf8.charpattern` property.
126 - Added `:set` and `:seton` commands, for changing settings.
127 - Added ability to always save session before exiting luakit.
128 - Added `markup` option to window `set_prompt()` method.
129 - Added `detach-tab` signal.
130 - Added support for multi-byte characters in hints.
131 - Added widget `replace` method.
132
133### Changed
134
135 - It is no longer necessary to add bindings to tables with `lousy.bind.add_binds()`.
136 - Readline bindings have been moved to `readline.lua`.
137 - Readline bindings are now automatically bound when the input bar is visible.
138 - Unique instance support has been moved to `unique_instance.lua`.
139 - The `image` widget now uses `luakit.resource_path` to locate local files.
140 - The log viewer now shows errors logged by a user-defined rc.lua failing to load.
141 - Luakit will now remove its IPC socket file before restarting.
142 - The editor command now defaults to using `xdg-open` to edit files.  The `default` builtin
143   command has been renamed `autodetect`.
144 - Changed `luakit://introspector/` to `luakit://binds/`.
145 - URL completion now uses word-based fuzzy matching.
146 - `:download` now uses the current page URI by default.
147 - `gy` now accepts a count.
148 - `:tabopen` will now only open local files when given an absolute path.
149 - `:styles-list` now lists active styles first and disabled styles last.
150
151### Removed
152
153 - Removed `domain_props` module. It is replaced by the `settings` module and its APIs.
154 - Removed all configuration files except `rc.lua` and `theme.lua`.
155 - Removed `enable_private_browsing` webview property.
156 - Removed `w.closed_tabs` field. It is now private to the `undoclose` module.
157
158### Fixed
159
160 - Fixed <luakit://help/> not finding documentation with custom DOCDIR
161 - Various minor documentation fixes.
162 - Fixed `Control-Scroll` and `Shift-Scroll` key bindings not working with smooth scrolling.
163 - Fixed inability to switch focus between web page elements with `Tab` and `Shift-Tab`.
164 - Fixed log page bug when logging messages with newlines.
165 - Fixed `Up` and `Down` keybindings being broken on completion menu.
166 - Fixed hardcoded path to luakit icon.
167 - Fixed luakit:// pages not working and spewing errors when not using LuaJIT.
168 - Fixed thumbnail hinting not retrieving thumbnail links correctly.
169 - Fixed inability to bind `Modifier-Minus`.
170 - Fixed readline handling of wide characters.
171 - Fixed completion not suggesting history/bookmarks items without titles/tags.
172 - Fixed `:dump` command not working due to use of a removed API.
173 - Fixed follow hints being sometimes truncated by the viewport edge.
174 - Follow mode now renders hints much faster.
175 - Fixed Forward/Back keys not working due to outdated bind syntax.
176 - Fixed opening local files with names containing spaces from `:tabopen` and the command-line.
177
178## [2017-08-10]
179
180 - Required WebKitGTK+ version: 2.16+
181
182### Breaking changes
183
184 - Support for WebKitGTK+ versions older than 2.16 has been removed.
185 - It is no longer possible to override built-in luakit modules with Lua
186   files in one's personal configuration directory.
187 - The configuration files `binds.lua` and `modes.lua` have become built-in luakit modules.
188   Configuration files named `binds.lua` or `modes.lua` will not be loaded. Any custom
189   bindings should be moved to `rc.lua`.
190
191### Added
192
193 - New `history.frozen` API allows temporarily freezing history collection.
194 - New `lousy.widget.zoom` statusbar widget: shows current page zoom level.
195 - Added `log` signal, emitted whenever a message is logged.
196 - New `widget.is_alive` property. Can be accessed even if the widget has been destroyed.
197 - Added `luakit://log/` chrome page: displays log messages.
198 - Added status bar widget that notifies of any Lua warnings or errors.
199 - Added migration, quick-start, and files and directories guides to documentation.
200 - Added frequently-asked questions to documentation.
201 - Added `luakit.wch_upper` and `luakit.wch_lower` key case conversion utility functions.
202 - Added `formfiller.extend` function for extending the formfiller DSL.
203 - Added context-aware command completion.
204
205### Fixed
206
207 - Fixed code-blocks in documentation being formatted incorrectly.
208 - Fixed incompatibility of `editor.lua` with urxvt.
209 - Fixed slow performance while beginning a search.
210 - Fixed `lousy.util.table.join` merging tables in unpredictable order.
211 - Fixed `image_css` raising errors on page zoom in/out.
212 - Worked around `image_css` breaking slightly when using non-1.0 zoom_level.
213 - Fixed sessions failing to save with a mix of tabs and private tabs.
214 - Worked around webview widgets self-focusing on click.
215
216### Changed
217
218 - `editor.lua` now uses substitution strings, rather than `global` to determine which editor to open.
219 - `open_editor.lua` now uses `editor.lua` rather than always using `xdg-open`.
220 - `--log` can now set different log levels for different modules, similarly to `mpv`.
221 - Documentation now has inter-page references.
222 - The adblock page-blocked page now has a "Continue anyway" button.
223 - Serializing Lua functions now includes their upvalues.
224 - `adblock` and `styles` now log the directory searched for files.
225 - `<ctrl-a>` and `<Ctrl-x>` bindings now take an optional count.
226 - Luakit's IPC socket files are now opened in `/tmp/`.
227 - Luakit now checks for accidental use of DEVELOPMENT_PATHS.
228 - IPC endpoints' `emit_signal()` method now accepts a webview ID as its first argument, as well as a webview.
229   This specifies a single destination for the IPC call.
230 - `modes.add_binds()` now verifies that modes with the given names already exist, to guard against typos.
231 - Scrolling keybinds now take a count.
232
233### Contributors to this release:
234
235 - Aidan Holm    (150 commits)
236 - gleachkr      (10 commits)
237 - Zhong Jianxin (4 commits)
238 - Stefan Hagen  (3 commits)
239 - Aric Belsito  (1 commit)
240 - Ygrex         (1 commit)
241
242## [2017-07-26]
243
244 - Required WebKitGTK+ version: 2.14+
245 - A relatively recent version of GTK+ 3 is required; some features are not available on older versions.
246
247### Added
248
249#### Adblock module
250
251The adblock module previously available at <https://github.com/luakit/luakit-plugins>
252has been included into the main luakit repository, with the following changes:
253
254 - Ported adblock module to use WebKit 2 compatible APIs. This breaks compatibility with WebKit 1.
255 - Added color-coding to adblock filter list status indicator.
256 - The Adblock chrome page CSS has been updated to be more consistent with other luakit chrome pages.
257 - An enable/disable button has been added to the Adblock chrome page.
258 - The adblock chrome page has received several other refactors and improvements.
259 - Adblock no longer blocks ads on local files (pages on the `file://` scheme).
260 - Adblock no longer blocks data URIs for performance reasons.
261 - Added links for quickly enabling/disabling filter lists to adblock chrome page.
262 - Made `adblock.enabled` writeable, and removed `adblock.state()` function.
263 - Adblock now blocks pages from being loaded until all filter list rules are fully loaded.
264 - Adblock now enables newly-added filter lists by default.
265 - Fixed a bug where luakit would not start if the adblock subscriptions file was missing.
266 - Fixed broken `:adblock-reload` command.
267 - Improved the consistency and formatting of adblock log messages.
268 - Fixed a bug where the adblock subscriptions file would become corrupted.
269 - Adblock simple mode has been removed.
270 - Fixed parsing of adblock filter list rules containing '#'.
271 - Fixed a bug where adblock would incorrectly block URIs on many domains, due to an design flaw.
272 - Adblock now displays an error page when the adblock module blocks a page navigation.
273 - Improved filter list rule length and ignore count calculation.
274 - Added several optimizations for rule matching that significantly improve performance.
275
276See also:
277
278 - <luakit://help/doc/modules/adblock.html>
279 - <luakit://help/doc/modules/adblock_chrome.html>
280
281#### Error pages
282
283A new module, `error_page.lua`, allows customization of luakit error
284pages, such as those displayed when a page fails to load.
285
286 - Luakit error pages are now displayed with a nicer interface, provided by `error_page.lua`
287 - Chrome page errors are now displayed with the `error_page.lua` module interface.
288 - Error pages now show information about the current proxy, as unintended proxy use can be responsible for page load failures.
289 - Error pages can now be customized with user CSS.
290
291See also:
292
293 - <luakit://help/doc/modules/error_page.html>
294
295#### User styles
296
297A new module, `styles.lua`, supports user stylesheets with
298`@-moz-document` sections. User stylesheets from <https://userstyles.org> are
299supported.
300
301 - Luakit now automatically detects and parses user stylesheets on startup.
302 - Added support for enabling/disabling user stylesheets immediately, without refreshing the page.
303 - Added the `:styles-list` command to display the user stylesheets menu.
304 - Added the `:styles-reload` command to reload all user stylesheet files from disk.
305 - Removed the site-specific `user_stylesheet_uri` interface.
306
307See also:
308
309 - <luakit://help/doc/modules/styles.html>
310
311#### Other new modules
312
313 - `open_editor.lua`: Adds support for editing text areas and input fields in an external text editor.
314 - `newtab_chrome.lua`: Adds support for customizing the new/blank tab page (`luakit://newtab/`) with HTML and CSS.
315 - `image_css.lua`: Improves how images are displayed by WebKit.
316 - `vertical_tabs.lua`: Displays tabs in a vertical tab bar to the left of the tab content.
317 - `referer_control_wm.lua`: Adds support for blocking the `Referer` header on cross-origin requests.
318 - `viewpdf.lua`: Adds support for automatically viewing downloaded PDF files.
319
320#### New APIs
321
322Core APIs:
323
324 - Added `luakit.process_limit` to control the maximum number of web processes.
325 - Added `luakit.options` and `luakit.webkit2` properties.
326 - Added `lousy.util.table.filter_array()` and `lousy.util.lua_escape()`.
327 - Added luakit spell checking API. A suitable language to check spelling with is automatically detected.
328 - Added website data retrieval and removal APIs.
329 - Added user stylesheet APIs, used by `styles.lua`. Stylesheet objects can be created from Lua code and enabled/disabled for individual `webview` widgets.
330 - Added request API. This supports handling custom URI scheme requests asynchronously.
331 - Added `msg` logging library. This replaces the `info()` and `warn()` functions.
332 - Added more log levels. Luakit now has `fatal`, `error`, `warn`, `info`, `verbose`, and `debug` log levels.
333 - Added `regex` class, to provide JavaScript- and PCRE-compatible regular expressions.
334 - Added `lousy.pickle` library for Lua table serializing.
335 - Added missing `remove_signals` method to Lua objects.
336 - Added `soup.cookies_storage` to control the path to the cookies SQLite database.
337 - Added IPC endpoint and web module APIs.
338 - Added API for registering Lua functions accessible from JavaScript.
339 - Added API for intercepting and modifying outgoing requests.
340
341New widget APIs:
342
343 - Added `drawing_area`, `spinner`, `image`, `overlay` widgets.
344 - Added unique IDs to `window` widgets.
345 - Added widget `parent`, `focused` properties.
346 - Added widget `"resize"` signal.
347 - Added `"mouse-enter"` and `"mouse-leave"` signals to `eventbox` widget.
348 - Added `window.ancestor()` method to retrieve the `window` widget that a given widget is contained in.
349 - Added support for getting/setting `scrolled` widget scroll position and scrollbar settings.
350 - Added support for displaying tooltips over widgets.
351 - Added support for customizing individual widgets with GTK 3's CSS support.
352 - Added `nrows()` getter to `lousy.widget.menu` widget instances.
353
354New webview APIs:
355
356 - Added `webview` widget properties `editable` and `is_playing_audio`.
357 - Added `webview.modify_load_block()` API. This allows Lua code to suspend page load operations.
358 - Added `webview` widget `private` property.
359 - Added `webview` widget `"crashed"` and `"go-back-forward"` signals.
360 - Added APIs to get the web process ID of `webview` widgets and the current web extension ID.
361 - Added APIs to save/restore the internal state of a `webview` widget.
362 - Added `"enable-scripts"`, `"enable-styles"`, `"enable-userscripts"` signal APIs to customize module behavior for individual `webview` widgets.
363 - Added signal for tab save decisions.
364
365#### Miscellaneous
366
367 - Added `globals.page_step` to control the size of the scrolling step.
368 - 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.
369 - Added build options to specify more system paths, easing installation and packaging for a variety of systems.
370 - The build system now uses the correct Lua/LuaJIT binary for build scripts.
371 - A testing framework has been added that supports asynchronous tests.
372 - Automatically generated documentation is now included in luakit installations.
373 - Mode and bind information is now included in generated documentation.
374 - The documentation index now displays which modules are loaded.
375 - Added support for private browsing on a per-tab basis.
376 - Added support for defining search engines as Lua functions. This allows more complex input, such as specifying multiple fields in technical search engines.
377 - Added support for getting/setting the text alignment of `label` widgets.
378 - Added support for getting/setting the divider position of `paned` widgets.
379 - Added support for getting/setting the background color of `box` and `label` widgets.
380 - Added support for getting the width and height of widgets.
381 - Added support for setting the minimum width and height of widgets.
382 - Added basic profile support.
383 - Added options to control externally editing text files.
384 - Added a crash recovery session that is automatically saved regularly.
385 - Improved the formatting of error tracebacks. Improved tracebacks are now used for `debug.traceback()` as well as error messages.
386 - The `xdg` module now has new properties `system_data_dirs` and `system_config_dirs`.
387 - 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.
388
389### Changed
390
391 - User scripts can now run even when JavaScript has been disabled. They now use an isolated script world inaccessible from the web page.
392 - User scripts now show an error message on failure.
393 - The status bar and the tab bar are now hidden when luakit is fullscreen.
394 - GLib logs are now funneled through luakit's log system.
395 - Subsequent lines in log messages with multiple lines are now indented.
396 - When the input bar is shown, the status bar is hidden. This is to prevent webview resizes causing performance issues for some users.
397 - Error messages within the luakit window can now be selected with the mouse and copied.
398 - An error message is now shown when the formfiller module fails to fill a form.
399 - The undoclose menu is now automatically closed when there are no more menu entries.
400 - Closed tabs are now saved in the luakit session file, so undoclose now works across sessions.
401 - Individual tab history is now saved in the luakit session file.
402 - The `"navigation-request"` signal now includes the reason for the navigation.
403 - Plugin errors, load cancel errors, and frame load errors are now ignored.
404 - Search behavior across multiple tabs has been improved.
405 - Idle callback functions that throw errors are now removed.
406 - Follow mode now has a new label maker: `trim()`.
407 - `w:run_cmd()` no longer adds the given command to the mode command history.
408 - A compile-time check for older WebKit versions has been added.
409 - All uses of `module()` in Lua code have been removed.
410 - Most variables have been made non-global.
411 - A follow mode heuristic has been added for links that contain a single image element.
412 - Luakit no longer uses a custom luakit-specific useragent string. This mproves site compatibility with sites such as Google Maps and decreases user fingerprint.
413 - All binds now have accompanying descriptions.
414 - Chrome pages now have consistent CSS and page style.
415 - `introspector.lua` has been renamed to `introspector_chrome.lua` for consistency with other chrome page modules.
416 - Added a help chrome page.
417 - Luakit now gives a full backtrace on startup failure.
418 - Formfiller mode now uses visual selection to add forms to the formfiller file.
419 - Formfiller mode now uses Lua patterns instead of JavaScript regular expressions.
420 - Widget getters and setters now verify that the widget is still valid.
421 - The widget `"created"` signal now has the new widget as an argument, making it much more useful.
422 - Accessing unknown widget properties now prints a warning.
423 - A developer warning is now printed if the web extension binary is not found.
424 - Luakit is now completely restarted if loading a configuration file fails.
425 - Luakit no longer shows follow hints for invisible elements.
426 - The `:lua` command now has an implicit variable `w`, the current window table. This is for convenience.
427 - The `:lua` command can now evaluate expressions as well as execute statements.
428 - A `resources/` directory tree has been added.
429 - Tabs now have a themable hover color.
430 - The default set of key bindings now includes bindings for number pad keys.
431 - A small margin has been added to the status bar.
432 - The formfiller now supports automatically filling forms when pages have finished loading. This is useful for automatically logging in to certain sites.
433 - Added `export_funcs` parameter to `chrome.add()`.
434 - 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.
435 - Follow mode now allows focusing inputs by their value (the text within them) and focusing empty inputs by their placeholder text.
436 - The `:javascript` command now has improved error handling.
437 - `luakit://` URIs are no longer added to history.
438 - Download objects now have the `allow_overwrite` property.
439 - Performance of the `ssl` widget has been improved.
440 - The downloads chrome page now displays file size statistics.
441 - Trailing newlines are now stripped from log messages.
442 - The `webview` widget scrolling interface has been modified for compatibility with WebKit 2.
443 - The API for retrieving page source is now asynchronous.
444 - Follow mode now strips the leading `mailto:` from email links, and allows the user to configure whether to ignore case in or not.
445 - Changed the `label` widget `width` property to `textwidth`.
446 - The `socket` widget is no longer destroyed upon plug disconnect.
447 - `go_next_prev.lua` now uses an improved heuristic for guessing page relationship.
448 - Other minor changes.
449
450### Removed
451
452 - All support for building with WebKit 1 has been removed.
453 - All support for building with GTK+ 2 has been removed.
454 - The `"cookie-changed"` signal has been removed, due to a WebKit API limitation.
455 - The download creation API has been removed, due to a WebKit API limitation.
456 - The global `info()` and `warn()` functions have been removed in favor of the `msg` library.
457 - The `:viewsource` command is removed, and replaced with `:view-source`.
458 - The `WITH_UNIQUE` build option has been removed, as `libunique` is no longer used.
459 - The `webview` widget `show_scrollbars` property has been removed. It is replaced by the `hide_scrollbars.lua` module.
460 - The default mouse forward/backward bindings have been removed.
461 - Support for `webview.init_funcs` and `window.init_funcs` has been removed. There are replacement signals that serve the same purpose.
462
463### Fixed
464
465 - Changed outdated `luaL_reg` to `luaL_Reg`.
466 - Fixed a desktop file issue preventing setting luakit as default browser for GNOME.
467 - Fixed evaluated scripts appearing in the web inspector debugger tab.
468 - Fixed `find_config()` assuming the system configuration is located at `/etc/xdg/`.
469 - Fixed luakit window losing initial focus, preventing some key bindings from working.
470 - Fixed luakit icon having incorrect permissions.
471 - Removed use of some deprecated functions.
472 - Fixed completion for hyphenated commands not working.
473 - Fixed bind activation for hyphenated commands not working.
474 - Fixed completion menu not closing.
475 - Fixed a segmentation fault when removing a non-present signal from an object.
476 - Fixed issues in how follow mode handled clicking on `<input>` elements.
477 - Fixed broken conditional in `noscript.lua`.
478 - Fixed a bug where calling `view:load_string()` from `load_failed_cb()` would cause reload loops.
479 - Fixed a bug where the `"link-unhover"` signal was not being emitted.
480 - Fixed `click()` in `follow.lua` to trigger more events to work around glitches.
481 - Fixed `go_up` breaking on `file://` URIs.
482 - Fixed PKGBUILD issues.
483 - Fixed contributor emails.
484 - Fixed use-after-free of destroyed widgets.
485 - Fixed incorrect chrome page header z-index.
486 - Fixed a bug where the `bin` widget `child` property always returned itself.
487 - Fixed a bug in URI `__add` operation.
488 - Fixed long source paths appearing in Lua log output.
489 - Fixed formfiller silently failing to add forms.
490 - Fixed formfiller radio button and checkbox clicking behavior.
491 - Fixed errors when handling tabs with empty titles
492 - Change context menu 'New Window' items to 'New Tab' items
493 - Fixed a bug where `"property::textwidth"` signal was not emitted.
494 - Fixed a bug where invalid color codes were silently ignored.
495 - Fixed unstable behavior when creating widgets without a specified type.
496 - Fixed design flaws where several modules would not work without JavaScript enabled.
497 - Fixed the bookmarks chrome page missing pagination.
498 - Fixed a bug where user scripts would fail to add CSS on pages without a `<head>` element.
499 - Fixed a bug where quitting luakit through the window manager circumvented luakit's exit prevention system.
500 - Fixed the `<` and `>` binds not wrapping around consistently.
501 - Fixed a bug where the `"destroy"` signal would not be emitted for some widget types.
502 - Numerous other fixes and performance improvements.
503
504### Contributors to this release:
505
506 - Aidan Holm            (1585 commits)
507 - Jenny Wong            (71 commits)
508 - Mason Larobina        (17 commits)
509 - Grégory DAVID         (8 commits)
510 - karottenreibe         (7 commits)
511 - Ygrex                 (6 commits)
512 - Robbie Smith          (4 commits)
513 - Michishige Kaito      (4 commits)
514 - Ambrevar              (3 commits)
515 - Yuriy Melnyk          (2 commits)
516 - Plaque-fcc            (2 commits)
517 - loblik                (2 commits)
518 - Daniel Bolgheroni     (2 commits)
519 - windowsrefund         (1 commit)
520 - walt                  (1 commit)
521 - Robbie                (1 commit)
522 - Peter Hofmann         (1 commit)
523 - Nuno Vieira           (1 commit)
524 - nmeum                 (1 commit)
525 - Kane Wallmann         (1 commit)
526 - Jasper den Ouden      (1 commit)
527 - gleachkr              (1 commit)
528 - feivel                (1 commit)
529 - eshizhan              (1 commit)
530 - donlzx                (1 commit)
531 - Bartłomiej Piotrowski (1 commit)
532 - Babken Vardanyan      (1 commit)
533