# Change log

From XOWA: the free, open-source, offline wiki application

## Categories

### High-level categories

Change log items are divided into the following high-level categories:

- Wiki: New Wikis to be downloaded from archive.org
- PC: Changes related to the XOWA application on Windows, Linux, and Mac OS X personal computers.
- Android: Changes related to the XOWA Android app on Android OS phones, tablets, and related devices
- Server: Changes related to the XOWA HTTP Server on Windows, Linux, Mac OS X, and Raspberry PI machines
- Doc: Documentation changes in home wiki and http://xowa.org
- Dev: Code-related changes.

Note that PC changes will probably also affect Andriod and Server. All three apps share the same code-base.

### Sub-categories

For PC, Android, and Server, change log items are further divided into the following sub-categories:

- major: Major change, fix or addition. Probably noticeable.
- minor: Minor change, fix or addition. Possibly noticeable.
- trivial: Trivial change, fix or addition. Probably unnoticeable.

The most important category to review is major. The other categories may be skipped due to lower importance (if they were more important, they would be bumped up to major).

## v4.5.2.1704 (2017-04-26)

### Wiki

- Package: Publish 2017-04 English Wikipedia.

  Links: Wiki_setup/English_wikis

## PC

minor

- Full-text search: Tweak UI including consistently-sized wikis, borders around snips, and vertical-centering for snip num.

- Search: Include pages with scores of 10,000 or less.

  Example: list byzantine emperors; list latin proverbs.

- Scribunto.Common: Fix script error 'Country data' on many en.w game pages.

  Message: `=Module:CountryData:12 bad argument: string expected, got nil`
  Resolved by: Return error message if title is invalid.
  Links: https://en.wikipedia.org/wiki/Tetris

- Parser.Time: Fix script error 'Check date value in access date' on many en.w page.

  Message: `Check date values in: |access-date=`
  Resolved by: Ignore multiple years / multiple days when parsing date for #time function.
  Example: {{#time:Y-m-d|12 November 2016 2008}} {{#time:Y-m-d|2 12 November 2016}}.
  Links: https://en.wikipedia.org/wiki/Antipas,_Cotabato https://en.wikipedia.org/wiki/Paris

- Scribunto.Uniq: Handle '[convert invalid number]' on some en.w pages. {detected by khanhhung2512 }

  Resolved by: Add more support for UNIQ substitutions with extension tags.
  Links: https://en.wikipedia.org/Ethanol

- Scribunto.Uniq: Fix script errors for chart on a few dozen en.w pages.

  Message: `Module:Chart:212 group names should contain (2)`
  Resolved by: Change UNIQ marker to include quotes.
  Example: '\"`UNIQ--item-0-QINU`\"'.
  Links: https://en.wikipedia.org/Fokus_(magazine) https://en.wikipedia.org/wiki/Thin_film_solar_cell https://en.wikipedia.org/wiki/Economy_of_Greece

- Scribunto.Uniq: Fix script error on a few dozen en.w pages on American soccer.

  Message: `Unmatched close-bracket at pattern character 282`
  Resolved by: Replace xtag_bgn / xtag_end with UNIQ.
  Links: https://en.wikipedia.org/2015_San_Jose_Earthquakes_season

- Scribunto.Regex: Fix script error '=Module:fr-verb:249 Internal error: expected pronunciation' on many en.d page in French section.

  Message: `=Module:fr-verb:249 Internal error: expected pronunciation "tʁae" to end with "je"`
  Resolved by: If gsub_replace lua proc returns nothing, do not replace with empty string.
  Links: https://en.wiktionary.org/wiki/tracer https://en.wiktionary.org/wiki/bitter https://en.wiktionary.org/wiki/voir

- Luaj: Fix script error '=Module:zh-glyph:120 attempt to concatenate nil and string' on a few hundred en.d pages for Chinese chars.

  Message: `=Module:zh-glyph:120 attempt to concatenate nil and string` [broken since: stack]
  Resolved by: Add more logic for surrogate pairs (2-length chars).
  Links: https://en.wiktionary.org/wiki/儉 https://en.wiktionary.org/wiki/僮 https://en.wiktionary.org/wiki/僉 https://en.wiktionary.org/wiki/僅 https://en.wiktionary.org/wiki/佻

- Scribunto.Regex: Fix script error '=Module:ru-pron:827 Number of parts of speech' on a few dozen en.d page in Russian section.

  Message: `=Module:ru-pron:827 Number of parts of speech (4) should match number of words (5)`
  Resolved by: Add only first match for mw.ustring.match, not all of them.
  Links: https://en.wiktionary.org/wiki/действительное_причастие_настоящего_времени

- Parser.Table: Fix premature short paragraphs on some pages.

  Resolved by: Close previous paragraph when starting table.
  Example: [[A]] b\n{| -> <p>[[A]] b</p> x> <p>[[A]]\n<p>b.
  Links: https://en.wikipedia.org/wiki/Template_engine_(web)

- Wikibase.Coordinate: Reverse NS / EW direction for geocoordinates; also, standardize spacing / symbols for wikibase.

  Message: `=Module:Location map:353 Malformed coordinates value`
  Links: https://en.wikipedia.org/wiki/Hulme_Arch_Bridge https://www.wikidata.org/wiki/Q5936167 https://en.wikipedia.org/wiki/Paris

- Wikibase.Scribunto: Fix '{{#statements}}' showing up in page.

  Resolved by: Support #statements keyword.
  Example: {{#statements:P6|from=Q668}}.
  Links: https://en.wikipedia.org/wiki/India

- Scribunto.Site: Fix script error 'scn.wikipedia.org' on a few en.w page.

  Message: `=Module:Interwiki/data:42 could not find a host in URL 'scn.wikipedia.org'; please check your wiki's interwiki data`
  Resolved by: Use fully-qualified url for url property, not domain.
  Example: url -> https://scn.wikipedia.org/wiki/$1 x> scn.wikipedia.org.
  Links: https://en.wikipedia.org/wiki/Macaroon https://en.wikipedia.org/wiki/Academy_of_Music https://en.wikipedia.org/wiki/Tōkai_Nuclear_Power_Plant https://en.wikipedia.org/wiki/Country_lane

- Scribunto.Lang: Fix script error 'No name for language egy' on 1 en.w page.

  Message: `=Module:language:121 No name for the language egy could be found ;`
  Resolved by: Return 1st three letters of unknown language codes, not blank.
  Links: https://en.wikipedia.org/wiki/List_of_country-name_etymologies

- Parser.Xml: Fix script error 'Unable to convert section' on 1 en.w page.

  Message: `=Module:Decimals:10 Unable to convert "Expression error: Unrecognized word "section>"." to a number`
  Links: https://en.wikipedia.org/wiki/National_Popular_Vote_Interstate_Compact

- Parser.Date: Parse times with format of 'm/d/yyyy' where d == 13.

  Links: https://en.wiktionary.org/tongue-in-chic https://en.wiktionary.org/serve_up

- Personal_wikis: Do not prompt for upgrading to latest search database version when first using search.

  Resolved by: Create personal wikis with latest search database schema.

trivial

- Mass_parse: Do not fail when generating full-text search indexes.

- Mass_parse: Embed page_score in full-text search index.

- Scribunto.Regex: Demote message level of "regex is invalid" from warn to log.

  Links: https://en.wiktionary.org/仝

## v4.5.0.1703 (2017-03-29)

### Wiki

- Package: Publish 2017-03 English Wikipedia.

  Links: Wiki_setup/English_wikis

- Package: Publish 2017-03 Russian wikis.

  Links: Wiki_setup/Russian_wikis

- Package: Publish 2017-03 Hindi wikis. {requested by anonymous}

  Links: Wiki_setup/Hindi_wikis

- Package: Publish 2017-03 Tibetan wikis. {requested by anonymous}

  Links: Wiki_setup/Tibetan_wikis

## PC

major

- Full-text search: Add Full-text search for Wikipedias.

  Links: App/Full-text_search

- Full-text search: Redesign Search UI including highlighting matches in snips and ignoring HTML tags.

- Gui: Add search and allpages button. {requested by Ope30}

- Wikibase: Fix "Module:Wikidata:813 attempt to call nil" on many ru.w pages.

  Message: `Module:Wikidata:813 attempt to call nil`
  Resolved by: Synchronize latest of mw.wikibase.lua and mw.wikibase.entity.lua.
  Example: /xowa/bin/any/xowa/xtns/Scribunto/engines/LuaCommon/lualib/mw.wikibase.lua|mw.wikibase.entity.lua.
  Links: https://ru.wikipedia.org/wiki/Армения https://ru.wikipedia.org/wiki/Пайк,_Роберт

- Wikibase: Fix 'mw.wikibase.entity.lua:56 attempt to call nil' on several dozen ru.w pages.

  Message: `mw.wikibase.entity.lua:56 attempt to call nil`
  Links: https://ru.wikipedia.org/wiki/Бейлина,_Нина_Михайловна

minor

- Page_sync: Show synced page immediately, not after another refresh. {detected by khanhhung2512 }

- Category: Fix fatal page load error when page_cat_db_id is invalid. {detected by Ope30}

  Links: https://en.wikipedia.org/wiki/Seven_Wells_Hill

- File: Handle long directory names on Windows systems. {detected by Ope30}

  Links: https://de.wikipedia.org/wiki/Wikipedia:Quiz/Geschichte

- Wikibase: Fix missing image on some ru.w pages. {detected by Ope30}

  Resolved by: Add 'datatype' property to 'Property:' pages.
  Links: https://ru.wikipedia.org/wiki/Маргарян,_Андраник_Наапетович

- Import: Fix file selector not working on Import offline. {detected by anonymous}

  Links: Dashboard/Import/Offline

- Gui: Add option to display actual HTML in SWT browser.

  Links: Special:XowaCfg?grp=xowa.wiki.hdumps

- Options: Add 'options link' to get direct call to option group.

  Links: Special:XowaCfg

- Gui: Add url_box format for displaying custom urls like 'English Wikipedia/Earth'. {requested by Ope30}

  Links: Special:XowaCfg?grp=xowa.gui.url bar

- Gui: Change back-color of Options.Shortcut.Bindings window from gray to white.

- Personal_wikis: Fix perpetual "Do you want to upgrade your search databases" when using Search field for personal wikis.

trivial

- Html: Upgrade oojs-ui to show XowaSearch magnifying glass on Safari.

- Mass_parse: Fix critical import failure when importing ru.wikinews.org.

  Resolved by: Ignore duplicate page titles.

- Mass_parse: Do not fail if no images in wiki.

## Android

major

- Full-text search: Add Full-text search for Wikipedias.

  Links: App/Full-text_search

## v4.4.0.1703 (2017-03-06)

### Wiki

- Package: Publish 2017-02 German Wikipedia.

  Links: Wiki_setup/German_wikis

- Package: Publish 2017-02 French Wikipedia.

  Links: Wiki_setup/French_wikis

## PC

major

- Gui: Add night mode. {assisted by anonymous4; requested by Lasairiona}

- Personal_wikis: Add page backup feature. {suggested by Lasairiona}

- Full-text search: Add preliminary implementation of full-text search for personal wikis.

  Links: Special:XowaSearch

- XULRunner: Fix bad layout on French Wikipedia main page.

  Resolved by: Upgrade xulrunner from v24 to v31.
  Example: flex:.35em.

minor

- Wikibase: Fix multiple "unknown datavalue type" on many fr.w pages.

  Message: `Erreur de script: =Module:Wikidata:522 unknown datavalue type. Erreur de script: =Module:Coordinates:808 unknown datavalue type.`
  Resolved by: Use scribunto key name for datatypes.
  Links: https://fr.wikipedia.org/wiki/Louis_Malle https://fr.wikipedia.org/wiki/Toulon

- Personal_wikis: Update modified date on page save. {detected by Lasairiona}

- Personal_wikis: Show personal wikis in left sidebar. {detected by Lasairiona}

- Personal_wikis: Add timestamp to quick save status message.

  Example: saved Main Page (01:02:03.456).

- Personal_wikis: Speed up creation of wikis.

  Resolved by: Do not download css when creating wiki.

- Personal_wikis: Speed up loading of wikis.

  Resolved by: Do not load every personal wiki on startup.

- App: Speed up loading of app. {detected by Lasairiona}

  Resolved by: Remove initialMemorySize of 256 MB.

- Command-line: Support ?curid for command-line calls. {detected by shopuz}

- Log: Remove "current" directory; always use timestamp directory. {detected by anonymous}

trivial

- Search: Clear cache after pages are reindexed.

- App_update: Redownload update_db if download fails.

- App: Fix rare crash to desktop.

  Resolved by: Call toString on Error, not getMessage.

- Log: Delete old Download Central logs.

  Example: /xowa/user/anonymous/app/tmp/xolog.

## v4.3.0.1702 (2017-02-21)

### Wiki

- Package: Publish 2017-02 English Wikipedia.

  Links: Wiki_setup/English_wikis

- Package: Publish 2017-02 Gujarati wikis.

  Links: Wiki_setup/Gujarati_wikis

### PC

major

- Personal_wikis: Add "Delete Page" button to edit mode.

- Personal_wikis: Add Category insertions, updates.

  Links: App/Personal_wikis/Default_Main_Page#Category

- Personal_wikis: Add import option.

  Links: Special:XowaWikiDirectory

- Gui: Fix extremely short url bar on some machines.

  Resolved by: Support High DPI machines.

- Dev: Change license to GPLv3 / Apache2.

minor

- Import: Fix page_redirects to English namespaces in non-English wikis .

- Wiki: Support curid query argument. {requested by anonymous}

  Links: https://en.wikipedia.org/wiki/?curid=303

- Gui: Change keyboard shortcut to focus html browser from escape to Ctrl+M.

- Gui: Change keyboard shortcut to restore url bar from Ctrl+U to escape.

- Sql: Add SQL exec page.

  Links: Special:XowaSql

trivial

- Options: Remove Javascript enabled option else user can inadvertently cause many Special screens to stop working. {detected by anonymous}

- Personal_wikis: Update invalid page_ids (-1, 0) to valid page_ids.

- Gui: Hide info box control in lower-right hand corner.

## v4.2.0.1702 (2017-02-12)

### PC

major

- Personal_wikis: Support creation of personal wikis. {requested by Dax}

  Links: Special:XowaWikiItem

minor

- Wiki: Support renamed folders. {detected by Ope30}

  Example: /xowa/wiki/en.wikipedia.org-2016.12.

- DownloadCentral: Add button to remove items from "Available" list. {requested by markusmaresch}

- DownloadCentral: When moving items between tables, add item to correct spot in table, not at bottom.

## v4.1.0.1702 (2017-02-04)

### Wikis

- Package: Publish 2017-01 Simple Wikipedia. {requested by anonymous}

- Package: Publish 2017-01 Chinese wikis. {requested by anonymous}

### PC

major

- App_update: Add in-app application updater.

  Links: App/Setup/Update/In-app

minor

- Html_dump: Fix Special:Random not working if "Prefer HTML databases" checked. {detected by Ope30}

  Resolved by: Update title to redirected page.

- Parser: Fix missing text for unknown number of pages.

  Resolved by: Escape dangling tags; do not let them gobble up rest of page.
  Example: <ref>aEOS -> &lt;ref>aEOS.
  Links: https://en.wikipedia.org/wiki/Russia

- Parser: Fix broken tables on a few dozen en.w pages.

  Resolved by: Ignore whitespace between dl and tblw.
  Example: ": {|".
  Links: https://en.wikipedia.org/wiki/Poland

- Custom_wiki: Show images in pages within the File namespace. {detected by anonymous}

- Custom_wiki: Rename files by replacing "spaces" with "underscores". {detected by Jakz, anonymous}

  Example: "A b.png" -> "A_b.png".

- Custom_wiki: Show img.src for files when viewing html. {detected by anonymous}

- Custom_wiki: Integrate files with app cache.

  Links: Special:XowaCfg?grp=xowa.files.general

- Custom_wiki: Do not delete xml file after import. {detected by anonymous}

- Custom_wiki: Use extension of thumbnail, not original. {detected by anonymous}

  Example: A.svg -> 400.png x> 400.svg.

- Custom_wiki: Use relative not absolute path for orig dir.

  Example: -> ~{orig_dir}7/70/ x> C:\xowa\wiki\custom_wiki\file\orig\7\70.

- Html: Show Creative Commons license at bottom of page. {requested by Ope30}

- Html: Show missing left sidebar on small wikis. {detected by Ope30}

  Resolved by: If MediaWiki:Sidebar does not exist, use language's message 'sidebar', not null.
  Links: https://sw.wiktionary.org https://sw.wikibooks.org https://af.wikipedia.org https://af.wiktionary.org https://af.wikibooks.org

- Wiki: Support renamed folders. {requested by Ope30}

  Example: /xowa/wiki/en.wikipedia.org-2016.12.

- Embeddable: Fix default ns_mgr being used for wikis. {detected by Rüdiger Gleim}

- Embeddable: Fix multiple multi-threaded parsing errors. {detected by Rüdiger Gleim}

- Mass_parse: Fix #ifexist not working after dumping 1st namespace.

  Resolved by: Clear ns_loaded cache; Add different cache clearing methods.

trivial

- Cfg: Change operating-system specific config file from "os.gfs" to "os.os_name.gfs".

  Example: /xowa/user/anonymous/app/cfg/os.lnx_64.gfs.

## v4.0.0.1701 (2017-01-01)

### Wikis

- Package: Publish 2016-12 Italian wikis.

- Package: Publish 2016-12 Swahili wikis.

### PC

major

- Cfg: Add new Options system.

  Links: Options

- Setup: Change to semantic versioning.

  Example: 4.0.17011.1 vs 4.1.

minor

- Wikibase: Fix 'Attached KML error' on many dozen en.w pages. {detected by Ope30}

  Resolved by: Do not cast 'numeric-id' to 'string'; leave as 'int'.
  Example: Route map: Attached KML Error: item specified on Wikidata, or in |wikidata=, is not a KML file (P31→Q26267864 not found).
  Links: https://en.wikipedia.org/wiki/Hollywood_Walk_of_Fame

- Gui: Allow Ctrl+Insert to be used to copy text. {detected by William}

  Resolved by: Do not override Ctrl+Insert with Ctrl+Minus.

- Gui: Support numpad keys for page find. {detected by William}

- Gui: Add option to auto-remember last tab opened.

- Gui: Support Command key on Mac OS X for keyboard shortcuts.

- Html: Remove horizontal scroll bar on some Mac OS X configurations.

  Resolved by: Replace width:20vw with width:20em in /xowa/user/wiki/home/html/xowa_common.css.

- Edit: Add section-editing. {requested by anonymous}

- Cfg: Add better support for Shortcuts.

- Category: Show Hidden Categories in "Hidden" section.

  Links: https://en.wikipedia.org/wiki/A

- Search.Suggest: Do not add * at end of search phrase; use auto-wildcard option instead.

- Search: Fix 'url_default' not working.

- Xtn.Popups: Fix multiple blue lines at bottom of page whenever new popup shows.

  Resolved by: Suppress attributes from mw-body class.

- Redirect: Allow redirects to Special pages.

  Example: #REDIRECT [[Special:XowaCfg]].
  Links: Options

- Gui: Allow navigation to urls with arguments.

  Example: Special:XowaCfg%3Fgrp%3Dxowa.html.css.

- Mass_parse: Fix memory leak / slow performance due to over-zealous page caching.

  Resolved by: Add two levels of permenance to page cache; add separate ifexists cache.

trivial

- Cfg: Remove 'Gui - Url bar' Symbols.

- Cfg: Replace 'Custom wiki commands' with 'Unzip bz2 file'.

- Cfg: Remove Search Suggest 'AllPages look-ahead', 'AllPages minimum length', and 'Log enabled'.

- Cfg: Remove config page for Firefox Addon.

- Wikibase: Add "fiwikivoyage" to list of known wikis.

- Html: Remove content_editable support.

dev

- Math: Refactor Math classes.

- Mass_parse: Refactor make cmd to merge other wkr tables such as log_basic_temp.

- Gui: Refactor IptKey; in particular, use SWING and SWT constants where possible; also handle modifers.

- Mass_parse: Improve performance when returning Keyvals from Scribunto function.

## Archives

- 2016 Change Log
- 2015 Change Log
- 2014 Change Log
- 2013 Change Log

### XOWA

- Main page
- Screenshots
- Video
- Download XOWA
- Download wikis

### Getting started

- Requirements
- Installation
- Simple Wikipedia
- English Wikipedia
- Other Wikipedias

### Android

- Setup
- Video

### Help

- About
- Contents
- Media
- Feedback

### Blog

- Current

### Links

- Wikimedia dumps
- XOWA @ archive.org
- English Wikipedia

### Donate

- archive.org
- Wikipedia
- XOWA