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