help.html 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>SingleFile help</title>
  6. <link rel="stylesheet" href="help.css">
  7. <meta name="viewport" content="width=device-width,initial-scale=1">
  8. <meta name="color-scheme" content="light dark">
  9. <link rel="icon" href="/src/ui/resources/icon_128.png">
  10. </head>
  11. <body>
  12. <div>
  13. <div id="titleBorder">
  14. <h2>SingleFile</h2>
  15. <h4>Save a complete page into a single HTML file</h4>
  16. </div>
  17. <span id="index">
  18. <a href="#getting-started">Getting started</a> -
  19. <a href="#general-notes">Additional notes</a> -
  20. <a href="#options">Options description</a> -
  21. <a href="#annotation-editor">Annotation editor</a> -
  22. <a href="#notes">Technical notes</a> -
  23. <a href="#template-variables">Template variables</a> -
  24. <a href="#template-functions">Template functions</a> -
  25. <a href="#external-messages">Integration with other extensions</a> -
  26. <a href="#known-issues">Known issues</a> -
  27. <a href="#unknown-issues">Troubleshooting unknown issues</a> -
  28. <a href="#contributors">Contributors</a> </span>
  29. <hr>
  30. <ol>
  31. <li><a id="getting-started">Getting started</a>
  32. <ul>
  33. <li>Wait until the page is fully loaded.</li>
  34. <li>Click on the SingleFile button <img src="../resources/icon_16.png" class="icon"> in the
  35. extension toolbar to process and save the page.</li>
  36. <li>You can click again on the button to cancel the action when processing a page.</li>
  37. </ul>
  38. </li>
  39. <li><a id="general-notes">Additional notes</a>
  40. <ul>
  41. <li>To save multiple tabs, select them first and click on the SingleFile button <img
  42. src="../resources/icon_16.png" class="icon">.</li>
  43. <li>Open the context menu by right-clicking the SingleFile button <img
  44. src="../resources/icon_16.png" class="icon"> in the extension toolbar or on the webpage. It
  45. allows you to save: <ul>
  46. <li>the current tab,</li>
  47. <li>or the selected content,</li>
  48. <li>or the selected frame.</li>
  49. </ul>
  50. </li>
  51. <li>You can also process multiple tabs in one click and save: <ul>
  52. <li id="selectableTabsMenu">the selected tabs,</li>
  53. <li>or the unpinned tabs,</li>
  54. <li>or all the tabs.</li>
  55. </ul>
  56. </li>
  57. <li id="autoSaveMenu">The context menu also allows you to activate the auto-save of: <ul>
  58. <li>the current tab,</li>
  59. <li>or the unpinned tabs,</li>
  60. <li>or all the tabs.</li>
  61. </ul>
  62. </li>
  63. <li>You can highlight text, add notes, format and remove content before saving the page with the <a
  64. href="#annotation-editor">Annotation editor</a> by selecting "Annotate and save the page..."
  65. in the context menu</li>
  66. <li id="autoSaveHint">With auto-save active, pages are automatically saved every time after being
  67. loaded (or before
  68. being unloaded if not). </li>
  69. <li>Select "Save Selection" from the context menu without selecting any content first to display a
  70. selector that will help you choose content by hovering over it with the mouse.</li>
  71. <li>Right-click on the SingleFile button and select "Options" to open the options page.</li>
  72. <li id="saveToGDriveHint">Enable the option "Destination &gt; upload to Google Drive" to upload
  73. pages to Google Drive</li>
  74. <li id="shortcutsSection">You can use the customizable shortcut Ctrl+Shift+Y to save the current tab
  75. or the selected tabs.
  76. Go to about:addons and select "Manage extension shortcuts" in the cogwheel menu to change it in
  77. Firefox. Go to chrome://extensions/shortcuts to change it in Chrome..</li>
  78. <li>The default save folder is the download folder configured in your browser, cf. about:preferences
  79. in Firefox, chrome://settings in Chrome, and Settings > General > File download location in
  80. Safari.</li>
  81. </ul>
  82. </li>
  83. <li><a id="options">Options description</a>
  84. <p>You can customize SingleFile through the options page. Right-click on SingleFile button <img
  85. src="../resources/icon_16.png" class="icon"> in the browser toolbar and select "Options"/"Manage
  86. extension" in the context menu to open the options page.</p>
  87. <p>Profiles</p>
  88. <ul>
  89. <li>
  90. <p>A profile is a set of user-defined options associated to a unique name.</p>
  91. <p>The drop-down list in the upper right of the options page allows you to select a profile and
  92. modify the associated options. The buttons next to the drop-down list allows you
  93. respectively to create, delete and rename a profile. </p>
  94. </li>
  95. <li>
  96. <p>You can select the default profile through the context menu of SingleFile. The selection is
  97. persistent and applied to all tabs. </p>
  98. </li>
  99. <li>
  100. <p>You can also override the default profile by associating a profile to a complete or partial
  101. URL. See the description of the <a href="#auto-settings-rules">Auto-settings rules</a>
  102. feature for more info. </p>
  103. </li>
  104. </ul>
  105. <p>User interface</p>
  106. <ul>
  107. <li data-options-label="addMenuEntryLabel"> <span class="option">Option: add entry in the context
  108. menu of the webpage</span>
  109. <p>Check this option to display an entry for SingleFile in the context menu of the webpage. The
  110. context menu of the SingleFile button <img src="../resources/icon_16.png" class="icon"> in
  111. the extension toolbar is displayed whether this option is checked or not. </p>
  112. <p class="notice">It is recommended to <u>check</u> this option</p>
  113. </li>
  114. <li data-options-label="shadowEnabledLabel"> <span class="option">Option: overlay a shadow on the
  115. page during processing</span>
  116. <p>Check this option to overlay a shadow on the page when SingleFile is retrieving page
  117. resources. This reminds you that you should not close the tab. </p>
  118. <p class="notice">It is recommended to <u>check</u> this option</p>
  119. </li>
  120. <li data-options-label="openSavedPageLabel" id="openSavedPageOption"> <span class="option">Option:
  121. open saved pages in a new tab</span>
  122. <p>Check this option to display the saved page in a new tab. This option can be useful, for
  123. example, in order to check the page is properly saved.</p>
  124. </li>
  125. <li data-options-label="autoCloseLabel"> <span class="option">Option: auto-close the tab after the
  126. page is saved</span>
  127. <p>Check this option to automatically close the tab after saving the page displayed inside. </p>
  128. </li>
  129. </ul>
  130. <p>File name</p>
  131. <ul>
  132. <li data-options-label="filenameTemplateLabel"> <span class="option">Option: template</span>
  133. <p>The template allows you to customize the file name of saved pages. You can use any valid
  134. character and "/" to create sub-folders (with the option "save pages in background" active).
  135. You can also use any variables from <a href="#template-variables">this list</a> and
  136. functions from <a href="#template-functions">this list</a> anywhere in the template.</p>
  137. <p>Invalid characters are automatically transformed and collapsed to underscores. File names
  138. cannot exceed 192 characters and are truncated if longer. The invalid characters are:
  139. <code>[</code> <code>~</code> <code>+</code> <code>\</code> <code>?</code> <code>%</code>
  140. <code>*</code> <code>:</code> <code>|</code> <code>"</code> <code>&lt;</code>
  141. <code>&gt;</code> and control characters from 0 to 31 in the ASCII table.
  142. </p>
  143. <p>Template examples:</p>
  144. <ul>
  145. <li><code>{page-title} ({date-iso} {time-locale}).html</code> will produce filenames like
  146. "Introduction to SingleFile (2018-09-15 11_06_03 PM).html" for a page having
  147. "Introduction to SingleFile" as title.</li>
  148. <li><code>archives/{url-last-segment} - {date-iso}</code> will produce filenames like
  149. "welcome - 2018-09-15" for a page hosted on https://example.com/welcome.html. The saved
  150. files will be saved in the sub-directory "archives".</li>
  151. <li><code>archives/{year-locale}/{month-locale}/{day-locale}/{page-title}.html</code> will
  152. produce filenames like "Introduction to SingleFile.html" stored into 3 sub-directories
  153. in the "archives" folder, one for each part of the save date (e.g.
  154. "2018/9/15/Introduction to SingleFile.html").</li>
  155. </ul>
  156. </li>
  157. <li data-options-label="filenameMaxLengthLabel"> <span class="option">Option: max length</span>
  158. <p>Enter the maximum length of the filename (without the extension) and its unit (bytes or
  159. characters).</p>
  160. </li>
  161. <li data-options-label="filenameReplacementCharacterLabel"> <span class="option">Option: replacement
  162. character</span>
  163. <p>Enter the character used to replace invalid characters in the filename.</p>
  164. </li>
  165. <li data-options-label="replaceEmojisInFilenameLabel">
  166. <span class="option">Option: replace emojis with text</span>
  167. <p>Check this option to replace emojis in the file name with their unicode text representation.
  168. </p>
  169. </li>
  170. <li data-options-label="saveFilenameTemplateDataLabel">
  171. <span class="option">Option: save the filename template data into the page</span>
  172. <p>Check this option to save the template file data to the page. This allows you to recover
  173. template data previously used when saving the page and, for example, to ensure that the file
  174. is saved in the same directory as the original file when saving the page again.
  175. </p>
  176. </li>
  177. <li data-options-label="confirmFilenameLabel" id="confirmFilenameOption"> <span
  178. class="option">Option: open the "Save as"
  179. dialog to confirm the file name</span>
  180. <p>Check this option to display the "Save as" dialog in order to confirm the file name before
  181. saving the page. If the option "save pages in background" is unchecked then a prompt dialog
  182. will be displayed instead of the "Save as" dialog. </p>
  183. </li>
  184. <li data-options-label="filenameConflictActionLabel" id="filenameConflictActionOption"> <span
  185. class="option">Option: file name
  186. conflict resolution</span>
  187. <p>Choose the most appropriate action when the filename of the saved page is conflicting with
  188. existing ones on the filesystem. The "skip duplicate files" action only detects duplicates
  189. among files downloaded during the current browsing session.</p>
  190. </li>
  191. </ul>
  192. <p>File format</p>
  193. <ul>
  194. <li data-options-label="fileFormatSelectLabel">
  195. <span class="option">Option: format</span>
  196. <p>Select the ouput format of the saved file:
  197. </p>
  198. <ul>
  199. <li><code>"HTML"</code>: HTML file (default format). This format produces HTML files that do
  200. not depend on JavaScript to be opened.
  201. </li>
  202. <li><code>"self-extracting ZIP (universal)"</code>: self-extracting ZIP file that can be
  203. opened on any platform. This format produces files smaller than the "HTML" format but
  204. requires JavaScript to be enabled to open the file.
  205. </li>
  206. <li><code>"self-extracting ZIP"</code>: self-extracting ZIP file that can be
  207. opened on any platform from HTTP but not from the filesystem in some browsers (e.g.
  208. in browsers based on Chromium or WebKit) without SingleFile to be installed. This format
  209. produces files smaller (approx. 1%) than the "self-extracting ZIP (universal)" format.
  210. </li>
  211. <li><code>"ZIP"</code>: ZIP file. This format produces ZIP files that cannot be opened in a
  212. browser but can be opened in the annotation editor.
  213. </li>
  214. </ul>
  215. </li>
  216. <li data-options-label="passwordLabel">
  217. <span class="option">Option: password</span>
  218. <p>Type a password to encrypt the ZIP file with AES-256 (compatible with Winzip). Be careful, if
  219. you lose the password, it will be impossible to open the file. Enabling this option
  220. increases the CPU consumption and the time needed to save or read a page.</p>
  221. </p>
  222. </li>
  223. <li data-options-label="createRootDirectoryLabel">
  224. <span class="option">Option: create a root directory</span>
  225. <p>Check this option to create a root directory in the ZIP file. The directory name consists of
  226. a timestamp and the identifier of the tab where the saved page is displayed.
  227. </p>
  228. </li>
  229. <li data-options-label="preventAppendedDataLabel">
  230. <span class="option">Option: do not append data after the ZIP data</span>
  231. <p>Check this option to remove the data appended after the ZIP data. The resulting file may be
  232. easier to open with some archive managers that do not support ZIP files with appended data.
  233. Enabling this option increases the time needed to save a page.
  234. </p>
  235. </li>
  236. <li data-options-label="insertTextBodyLabel">
  237. <span class="option">Option: make text searchable</span>
  238. <p>Check this option to insert the text content of the saved page into the self-extracting ZIP
  239. file. This makes it possible, for example, to search for pages from the text. Note that if
  240. the selected fomrmat is "self-extracting ZIP (universal)", the text content is
  241. encoded in UTF-8 but the page is declared in ISO-8859-1.
  242. </p>
  243. </li>
  244. <li data-options-label="insertEmbeddedImageLabel">
  245. <span class="option">Option: insert embedded images</span>
  246. <p>Check this option to embed an image in all types of ZIP file, making them compatible with the
  247. PNG format. This image is displayed when the archive renamed as a PNG file is opened in an
  248. image viewer.
  249. </p>
  250. </li>
  251. </ul>
  252. <p>HTML content</p>
  253. <ul>
  254. <li data-options-label="compressHTMLLabel"> <span class="option">Option: compress HTML
  255. content</span>
  256. <p>Check this option to remove all HTML comments and unneeded tags, spaces, quotes and
  257. whitespace characters. Checking this option helps to reduce the size of the file without
  258. altering the document.</p>
  259. <p class="notice">It is recommended to <u>check</u> this option</p>
  260. </li>
  261. <li data-options-label="removeHiddenElementsLabel"> <span class="option">Option: remove hidden
  262. elements</span>
  263. <p>Check this option to remove all hidden elements. Checking this option can help to reduce the
  264. size of the file without altering the document. It may also increase the CPU consumption and
  265. the time needed to save a page.</p>
  266. <p class="notice">It is recommended to <u>check</u> this option</p>
  267. </li>
  268. <li data-options-label="insertMetaCSPLabel"> <span class="option">Option: set content security
  269. policy</span>
  270. <p>Check this option to add a meta tag with a policy to block any external resources from being
  271. loaded.</p>
  272. <p class="notice">It is recommended to <u>check</u> this option</p>
  273. </li>
  274. <li data-options-label="removeFramesLabel"> <span class="option">Option: remove frames</span>
  275. <p>Check this option to remove all frame and iframe elements. Checking this option can
  276. considerably reduce the size of the file without altering the document most of the time. It
  277. may also decrease the time needed to save a page.</p>
  278. </li>
  279. <li data-options-label="saveOriginalURLsLabel"> <span class="option"></span>: save original
  280. URLs of embedded resources</span>
  281. <p>Check this option to save the URLs of the resources embedded into the saved page. URLs
  282. are stored in attributes with a name prefixed with "data-sf-original-" and suffixed with the
  283. original attribute name (e.g. "data-sf-original-src", "data-sf-original-href") for HTML
  284. contents. For CSS contents, URLs are stored as comments beginning with "original URL:".
  285. </li>
  286. <li data-options-label="removeInfobarSavedDateLabel">
  287. <span class="option">Option: do not include the saved date</span>
  288. <p>Check this option to remove the saved date included in the saved page and displayed in the
  289. infobar.</p>
  290. </li>
  291. <li data-options-label="saveRawPageLabel"> <span class="option">Option: save raw page</span>
  292. <p>Check this option to save the raw HTML file that the browser received. When this option is
  293. checked, the page will be saved as if JavaScript was disabled. Checking this option may
  294. alter the document.</p>
  295. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  296. </li>
  297. </ul>
  298. <p>Infobar</p>
  299. <ul>
  300. <li data-options-label="displayInfobarLabel" id="displayInfobarOption"> <span class="option">Option:
  301. display an infobar when
  302. viewing a saved page</span>
  303. <p>Check this option to display the ℹ button at the top right of the page when viewing a saved
  304. page. By clicking this button, you can get more information about the saved date and open
  305. the original URL.</p>
  306. <p class="notice">It is recommended to <u>check</u> this option</p>
  307. </li>
  308. <li data-options-label="infobarTemplateLabel"> <span class="option">Option: template of the infobar
  309. content</span>
  310. <p>The template allows you to customize the content displayed in the infobar. You can use any
  311. valid character, <code>\n</code> for new lines or <code>\t</code> for tabs. You can also use
  312. any variables from <a href="#template-variables">this list</a> anywhere in the template. If
  313. the template or the resulting content is empty, the infobar will display the saved date by
  314. default. </p>
  315. <p>Template examples:</p>
  316. <ul>
  317. <li><code>{url-href} ({date-iso})</code> will produce contents like "https://www.example.com
  318. (2018-09-15 11 06 03 PM)".</li>
  319. <li><code>Title: {page-title}</code> will produce contents like "Title: Example Domain" for
  320. a page having "Example Domain" as title.</li>
  321. </ul>
  322. </li>
  323. <li data-options-label="confirmInfobarLabel"> <span class="option">Option: open a prompt dialog to
  324. edit the infobar content</span>
  325. <p>Check this option to display a prompt dialog in order to confirm the infobar content before
  326. saving the page. </p>
  327. </li>
  328. <li data-options-label="includeInfobarLabel"> <span class="option"></span>Option: include infobar in
  329. the saved page</span>
  330. <p>Check this
  331. option to display the ℹ button at the top right of the page when viewing a saved page in a
  332. browser where SingleFile is not installed.</p>
  333. </li>
  334. </ul>
  335. <p>Stylesheets</p>
  336. <ul>
  337. <li data-options-label="removeUnusedStylesLabel"> <span class="option">Option: remove unused
  338. styles</span>
  339. <p>Check this option to remove all the CSS rules and styles that do not match any element in the
  340. saved page. Checking this option will not alter the document and can considerably reduce the
  341. size of the file. It will also increase the CPU consumption and the time needed to save a
  342. page.</p>
  343. <p class="notice">It is recommended to <u>check</u> this option</p>
  344. </li>
  345. <li data-options-label="removeAlternativeMediasLabel"> <span class="option">Option: remove
  346. stylesheets for alternative devices to screens</span>
  347. <p>Check this option to remove stylesheets that are not used for the screen display like
  348. stylesheets for print preview and speech synthesizers. Checking this option can help to
  349. reduce the size of the file.</p>
  350. </li>
  351. <li data-options-label="compressCSSLabel"> <span class="option">Option: compress CSS content</span>
  352. <p>Check this option to minify CSS stylesheets. Checking this option can reduce size of the file
  353. without altering the document. It may also increase the CPU consumption and the time needed
  354. to save a page.</p>
  355. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  356. </li>
  357. <li data-options-label="moveStylesInHeadLabel"> <span class="option">Option: move in the head
  358. element the styles found outside of it</span>
  359. <p>
  360. Check this option to move all the style elements found outside the head element into the
  361. head element. This can be useful to avoid a FOUC ("flash of unstyled content") when
  362. displaying a saved page.</p>
  363. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  364. </li>
  365. </ul>
  366. <p>Images</p>
  367. <ul>
  368. <li data-options-label="groupDuplicateImagesLabel"> <span class="option">Option: group duplicate
  369. images together</span>
  370. <p>Check this option to avoid saving multiple times duplicate images. Checking this option
  371. should not alter the document in modern browsers and can considerably reduce the size of the
  372. file. This option is ignored with archive formats based on ZIP files.</p>
  373. <p class="notice">It is recommended to <u>check</u> this option</p>
  374. </li>
  375. <li data-options-label="loadDeferredImagesLabel"> <span class="option">Option: save deferred
  376. images</span>
  377. <p>Check this option to save all the deferred images (or frames) that are not yet displayed.
  378. This may help to save all the images without scrolling the page. This feature does its best
  379. effort and is not guaranteed to work on all sites. It will also increase the time needed to
  380. save a page.
  381. </p>
  382. <p class="notice">It is recommended to <u>check</u> this option</p>
  383. </li>
  384. <li data-options-label="loadDeferredImagesMaxIdleTimeLabel"> <span class="option">Option: maximum
  385. idle time (ms)</span>
  386. <p>Enter the maximum delay of time to wait for deferred images. You can increase this value if
  387. for example the network or system conditions are degraded. You can also decrease this value
  388. otherwise.</p>
  389. </li>
  390. <li data-options-label="loadDeferredImagesDispatchScrollEventLabel"> <span class="option">Option:
  391. dispatch "scroll" event</span>
  392. <p>Check this option to dispatch the <a
  393. href="https://developer.mozilla.org/docs/Web/API/Document/scroll_event"
  394. target="_blank">"scroll"
  395. event</a> when waiting for deferred images. This can improve the loading of images
  396. on some sites but it can also cause unexpected scrolling problems on some other sites.</p>
  397. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  398. </li>
  399. <li data-options-label="loadDeferredImagesKeepZoomLevelLabel"> <span class="option">Option: zoom out
  400. the page</span>
  401. <p>Check this option to save the entire content of a page by zooming out the page. This can help
  402. saving pages using infinite virtual lists for example. </p>
  403. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  404. </li>
  405. <li data-options-label="loadDeferredImagesBeforeFramesLabel"> <span class="option">Option: load
  406. deferred frames</span>
  407. <p>Check this option to load deferred frames and images before saving frame contents. It will
  408. increase the time needed to save a page.
  409. </p>
  410. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  411. </li>
  412. <li data-options-label="removeAlternativeImagesLabel"> <span class="option">Option: remove images
  413. for alternative screen resolutions</span>
  414. <p>Check this option to remove images that are alternatives in lower and/or higher resolutions
  415. to the ones displayed by default. Checking this option can considerably reduce the size of
  416. the file.</p>
  417. </li>
  418. </ul>
  419. <p>Fonts</p>
  420. <ul>
  421. <li data-options-label="removeUnusedFontsLabel"> <span class="option">Option: remove unused
  422. fonts</span>
  423. <p>Check this option to remove all font CSS rules that do not match any content. Checking this
  424. option should not alter the document and can considerably reduce the size of the file.</p>
  425. <p class="notice">It is recommended to <u>check</u> this option</p>
  426. </li>
  427. <li data-options-label="removeAlternativeFontsLabel"> <span class="option">Option: remove
  428. alternative fonts</span>
  429. <p>Check this option to remove fonts that are alternatives to the ones used. Checking this
  430. option should not alter the document and can considerably reduce the size of the file.</p>
  431. <p class="notice">It is recommended to <u>check</u> this option</p>
  432. </li>
  433. </ul>
  434. <p>Destination</p>
  435. <ul>
  436. <li data-options-label="saveToFilesystemLabel"> <span class="option">Option: save to
  437. filesystem</span>
  438. <p>Check this option to save the downloaded page on the filesystem of your computer.</p>
  439. <p class="notice">It is recommended to <u>check</u> this option</p>
  440. </li>
  441. <li data-options-label="saveToClipboardLabel" id="saveToClipboardOption"> <span
  442. class="option">Option: copy to clipboard</span>
  443. <p>Check this option to copy the page to the clipboard. This option does not work with
  444. archive formats based on ZIP files.</p>
  445. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  446. </li>
  447. <li data-options-label="saveToGitHubLabel"> <span class="option">Option: upload to GitHub</span>
  448. <p>Check this option to save the page on GitHub. See the <a
  449. href="https://github.com/gildas-lormeau/SingleFile/wiki/How-to-publish-saved-pages-with-SingleFile-on-GitHub"
  450. target="_blank">documentation page</a> to learn how to configure SingleFile to save
  451. pages on GitHub. Warning: once a page saved on GitHub, it is complicated to delete it, see
  452. the <a
  453. href="https://docs.github.com/github/authenticating-to-github/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository"
  454. target="_blank">documentation page</a> on GitHub for more information.</p>
  455. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  456. </li>
  457. <li data-options-label="githubTokenLabel"> <span class="option">Option: access token</span>
  458. <p>Enter your personal access token on GitHub, see the <a
  459. href="https://docs.github.com/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token"
  460. target="_blank">documentation page</a> on GitHub for more information.</p>
  461. </li>
  462. <li data-options-label="githubUserLabel"> <span class="option">Option: user name</span>
  463. <p>Enter your user name on GitHub.</p>
  464. </li>
  465. <li data-options-label="githubRepositoryLabel"> <span class="option">Option: repository name</span>
  466. <p>Enter the name of the repository on GitHub where the saved pages will be archived, see
  467. the <a
  468. href="https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-new-repository"
  469. target="_blank">documentation page</a> on GitHub for more information on how to create a
  470. repository.
  471. </p>
  472. </li>
  473. <li data-options-label="githubBranchLabel"> <span class="option">Option: branch name</span>
  474. <p>Enter the repository branch name where pages will be archived. The branch
  475. <strong>must</strong> exist on GitHub, see the <a
  476. href="https://docs.github.com/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site"
  477. target="_blank">documentation page</a> on GitHub for more information on how to publish
  478. the branch on github.io.
  479. </p>
  480. </li>
  481. <li data-options-label="saveWithWebDAVLabel"> <span class="option">Option: upload to a WebDAV
  482. server</span>
  483. <p>Check this option to save the page on a WebDAV server.</p>
  484. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  485. </li>
  486. <li data-options-label="webDAVURLLabel"> <span class="option">Option: URL</span>
  487. <p>Enter the URL of the WebDAV server.</p>
  488. </li>
  489. <li data-options-label="webDAVUserLabel"> <span class="option">Option: user identifier</span>
  490. <p>Enter your user identifier on the WebDAV server.</p>
  491. </li>
  492. <li data-options-label="webDAVPasswordLabel"> <span class="option">Option: password</span>
  493. <p>Enter your password.</p>
  494. </li>
  495. <li data-options-label="saveToGDriveLabel" id="saveToGDriveOption"> <span class="option">Option:
  496. upload to Google Drive</span>
  497. <p>Check this option to save the page on Google Drive.</p>
  498. <p>The permissions requested by SingleFile allow it to access only to the files and folders it
  499. has created. When you uncheck this option, SingleFile revokes automatically its access to
  500. your Google Drive account.</p>
  501. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  502. </li>
  503. <li data-options-label="saveToDropboxLabel" id="saveToDropboxOption"> <span class="option">Option:
  504. upload to Dropbox</span>
  505. <p>Check this option to save the page on Dropbox.</p>
  506. <p>The permissions requested by SingleFile allow it to access only to the files and folders it
  507. has created.</p>
  508. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  509. </li>
  510. <li data-options-label="saveWithCompanionLabel" id="saveWithCompanionOption"> <span
  511. class="option">Option: save with
  512. SingleFile Companion</span>
  513. <p>Check this option to delegate the saving process to SingleFile Companion. It is a program
  514. that runs outside the browser and can help to make the saving process more transparent. It
  515. also allows the pages to be saved in another directory than the download directory. You can
  516. find more info <a href="https://github.com/gildas-lormeau/single-file-companion"
  517. target="_blank">here</a></p>
  518. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  519. </li>
  520. </ul>
  521. <p>Network</p>
  522. <ul>
  523. <li data-options-label="blockResourcesLabel"> <span class="option">Option: blocked resources</span>
  524. <p>
  525. Check the options below to block the download of the corresponding resource types.
  526. </p>
  527. </li>
  528. <li data-options-label="blockMixedContentLabel"> <span class="option">Option: block mixed
  529. contents</span>
  530. <p>Check this option to block active content served from HTTP when viewing a page in HTTPS. You
  531. can find more information about mixed content pages <a
  532. href="https://developer.mozilla.org/docs/Web/Security/Mixed_content"
  533. target="_blank">here</a>.</p>
  534. </li>
  535. <li data-options-label="acceptHeadersLabel"> <span class="option">Option: "Accept" headers</span>
  536. <p>
  537. Enter the <a href="https://developer.mozilla.org/docs/Web/HTTP/Headers/Accept"
  538. target="_blank">"Accept" HTTP
  539. header</a> values below to adjust support for the corresponding resource types.
  540. </p>
  541. <p class="notice">It is recommended to leave these values <u>as they are</u></p>
  542. </li>
  543. <li data-options-label="setMaxResourceSizeLabel"> <span class="option">Option: set maximum size
  544. (MB)</span>
  545. <p>Check this option to remove from the saved page embedded resources (i.e. images, stylesheets,
  546. scripts and iframes) that exceeds a given size.</p>
  547. </li>
  548. <li data-options-label="maxResourceSizeLabel"> <span class="option">Option: maximum size (MB)</span>
  549. <p>Enter the maximum size in megabytes.</p>
  550. </li>
  551. <li data-options-label="setMaxResourceDelayLabel"> <span class="option">Option: set maximum
  552. download delay (s)</span>
  553. <p>Check this option to remove from the saved page embedded resources (i.e. images, stylesheets,
  554. scripts and iframes) that exceeds a given download time.</p>
  555. </li>
  556. <li data-options-label="maxResourceDelayLabel"> <span class="option">Option: maximum download delay
  557. (s)</span>
  558. <p>Enter the maximum download delay in seconds.</p>
  559. </li>
  560. <li data-options-label="passReferrerOnErrorLabel" id="passReferrerOnErrorOption"> <span
  561. class="option">Option: pass \"Referer\"
  562. header on
  563. cross-origin errors</span>
  564. <p>Check this option to pass the HTTP header "Referer" with the "origin" policy after an 401,
  565. 403, or 404 HTTP error when downloading a cross-origin resource. You should enable this
  566. option if you cannot download resources blocked by a hotlink protection.</p>
  567. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  568. </li>
  569. </ul>
  570. <p>Annotation editor</p>
  571. <ul>
  572. <li data-options-label="defaultEditorModeLabel"> <span class="option">Option: default mode</span>
  573. <p>Select the default mode when opening the annotation editor. The available choices are:
  574. <ul>
  575. <li><code>normal</code>: default value</li>
  576. <li><code>edit the page</code>: enable the button <img
  577. src="../resources/button_note_edit.png" class="icon button"></li>
  578. <li><code>format the page</code>: enable the button <img
  579. src="../resources/button_note_format.png" class="icon button"> if the page can be
  580. formatted</li>
  581. <li><code>remove elements</code>: enable the button <img
  582. src="../resources/button_cut_inner.png" class="icon button"></li>
  583. <li><code>remove external elements</code>: enable the button <img
  584. src="../resources/button_cut_outer.png" class="icon button"></li>
  585. </ul>
  586. </p>
  587. </li>
  588. <li data-options-label="applySystemThemeLabel"> <span class="option">Option: apply the system theme
  589. when formatting a page in the annotation editor</span>
  590. <p>Uncheck this option if you do not want to apply the theme of the operating system or the
  591. browser (e.g. dark or light) when you click on the button "Format the page for better
  592. readability" in the annotation editor.</p>
  593. </li>
  594. <li data-options-label="warnUnsavedPageLabel"> <span class="option">Option: warn if leaving page
  595. with unsaved changes</span>
  596. <p>Check this option to display a blocking popup when you leave the annotation editor (e.g.
  597. close the tab) without saving the changes.</p>
  598. <p class="notice">It is recommended to <u>check</u> this option</p>
  599. </li>
  600. <li data-options-label="openEditorLabel"> <span class="option">Option: edit page before
  601. saving</span>
  602. <p>Check this option to open the annotation editor before saving any page. Checking this option
  603. removes the entry "Annotate and save the page..." from the context menu.</p>
  604. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  605. </li>
  606. <li data-options-label="autoOpenEditorLabel" id="autoOpenEditorOption"> <span class="option">Option:
  607. open the annotation editor when viewing a page saved with SingleFile</span>
  608. <p>Check this option to open the annotation editor when displaying a page saved by SingleFile.
  609. </p>
  610. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  611. </li>
  612. <li data-options-label="displayInfobarInEditorLabel"> <span class="option">Option:
  613. display the infobar</span>
  614. <p>Check this option to display the infobar when displaying a page in the annotation editor.</p>
  615. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  616. </p>
  617. </li>
  618. </ul>
  619. <p id="bookmarksSection">Bookmarks</p>
  620. <ul id="bookmarksOptions">
  621. <li data-options-label="saveCreatedBookmarksLabel"> <span class="option">Option: save the page of a
  622. newly created bookmark</span>
  623. <p>Check this option to save pages that you add into your bookmarks. Note that if the page is to
  624. be saved is not already displayed in a tab, SingleFile will open temporarily a new tab to
  625. save the page. </p>
  626. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  627. </li>
  628. <li data-options-label="replaceBookmarkURLLabel"> <span class="option">Option: link the new bookmark
  629. to the saved page</span>
  630. <p>Check this option to replace the URL of the page added into your bookmark with the file URI
  631. of the saved page on your disk. </p>
  632. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  633. </li>
  634. <li data-options-label="ignoredBookmarkFoldersLabel"> <span class="option">Option: ignored
  635. folders</span>
  636. <p>Enter a list of bookmark folder names to ignore. The folder names must be separated with a
  637. comma. SingleFile will ignore bookmarks added in folders that contains these names.
  638. </p>
  639. </li>
  640. <li data-options-label="allowedBookmarkFoldersLabel"> <span class="option">Option: allowed
  641. folders</span>
  642. <p>Enter a list of bookmark folder names to allow. The folder names must be separated with a
  643. comma. SingleFile will only save pages added in folders that contains these names.
  644. </p>
  645. </li>
  646. </ul>
  647. <p id="autoSaveSection">Auto-save</p>
  648. <ul id="autoSaveOptions">
  649. <li data-options-label="autoSaveLoadOrUnloadLabel"> <span class="option">Option: auto-save after
  650. page load or on page unload</span>
  651. <p>Check this option to auto-save pages after being loaded. If you browse to another page before
  652. the page is fully loaded then the page will be saved just before being unloaded. With this
  653. option active, you are guaranteed pages will always be saved. Some frame contents may be
  654. missing (if you checked "remove frames") when pages are saved before being unloaded. </p>
  655. </li>
  656. <li data-options-label="autoSaveLoadLabel"> <span class="option">Option: auto-save after page
  657. load</span>
  658. <p>Check this option to auto-save pages after being loaded.</p>
  659. </li>
  660. <li data-options-label="autoSaveUnloadLabel"> <span class="option">Option: auto-save on page
  661. unload</span>
  662. <p>Check this option to auto-save pages before being unloaded instead of saving pages after
  663. being loaded. With this option active, you are guaranteed pages will always be saved but
  664. some frame contents may be missing (if you checked "remove frames"). </p>
  665. </li>
  666. <li data-options-label="autoSaveDiscardLabel"> <span class="option">Option: auto-save on tab
  667. discard</span>
  668. <p>Check this option to auto-save pages when discarding a tab. Some frame contents may be
  669. missing (if you checked "remove frames"). </p>
  670. </li>
  671. <li data-options-label="autoSaveRemoveLabel"> <span class="option">Option: auto-save on tab
  672. removal</span>
  673. <p>Check this option to auto-save pages when closing a tab. Some frame contents may be missing
  674. (if you checked "remove frames"). </p>
  675. </li>
  676. <li data-options-label="autoSaveDelayLabel"> <span class="option">Option: auto-save waiting delay
  677. after load (s)</span>
  678. <p>Enter the delay in seconds to wait before saving a page when the "auto-save on page load or
  679. on page unload" or "auto-save on page load" is checked. </p>
  680. </li>
  681. <li data-options-label="autoSaveRepeatLabel"> <span class="option">Option: auto-save
  682. periodically</span>
  683. <p>Check this option to auto-save pages periodically after load.</p>
  684. </li>
  685. <li data-options-label="autoSaveRepeatDelayLabel"> <span class="option">Option: period (s)</span>
  686. <p>Enter the delay in seconds to wait before each page saving when the "auto-save
  687. periodically" option is checked. </p>
  688. </li>
  689. <li data-options-label="autoSaveExternalSaveLabel"> <span class="option">Option: save the page with
  690. SingleFile Companion</span>
  691. <p>Check this option to delegate the capturing and saving process to SingleFile Companion. It is
  692. a program that runs outside the browser and can help to make the saving process more
  693. transparent. It also allows the pages to be saved in another directory than the download
  694. directory. You can find more info <a
  695. href="https://github.com/gildas-lormeau/single-file-companion" target="_blank">here</a>
  696. </p>
  697. </li>
  698. </ul>
  699. <p>Misc.</p>
  700. <ul>
  701. <li data-options-label="addProofLabel"> <span class="option">Option: add proof od existence</span>
  702. <p>Check this option to create a worldwide proof of the existence of the page you want to save.
  703. </p>
  704. <ul>
  705. <li> <strong>What is a proof of existence (data anchoring)?</strong><br> Data anchoring
  706. consists in building a time-stamped proof of existence for a data by linking it to a
  707. tamper resistant and time-stamped blockchain. Data anchoring implementation relies on
  708. the resilience and immutability of the Bitcoin blockchain to provide the best possible
  709. security level </li>
  710. <li> <strong>How does this protect my data?</strong><br> The anchoring mechanism only
  711. handles data impressions. Your data remains where you calculate the fingerprints, i.e.
  712. in the browser. Their confidentiality is totally preserved. </li>
  713. <li> <strong> The day after your backup you can get freely the proof receipt here: <a
  714. href="https://gildas-lormeau.github.io/singlefile-woleet/index.html"
  715. target="_blank">gildas-lormeau.github.io/singlefile-woleet/index.html</a>.
  716. A proof receipt will be used to verify the validity of the evidence </strong> </li>
  717. </ul>
  718. <p> More information <a href="https://doc.woleet.io" target="_blank">doc.woleet.io</a> </p>
  719. </li>
  720. <li data-options-label="woleetKeyLabel" hidden> <span class="option">Option: access token</span>
  721. <p>Enter your personal access token on Woleet, see the <a href="http://app.woleet.io/"
  722. target="_blank">registration page</a> on Woleet for more information.</p>
  723. </li>
  724. <li data-options-label="backgroundSaveLabel" id="backgroundSaveOption"> <span class="option">Option:
  725. save pages in
  726. background</span>
  727. <p>Uncheck this option if you get invalid file names like
  728. "37bec68b-446a-46a5-8642-19a89c231b46.html" or interrupted downloads when saving pages. You
  729. can also uncheck this option if you want the "Save as" dialog to remember the last saved
  730. path. Unchecking this option prevent using sub-directories in filename templates.</p>
  731. <p class="notice">It is recommended to <u>check</u> this option</p>
  732. </li>
  733. <li data-options-label="displayStatsLabel"> <span class="option">Option: display stats in the
  734. console after processing</span>
  735. <p>Check this option to display stats about processing in the JavaScript developer tools of your
  736. browser. Checking this option may increase the CPU consumption and the time needed to save a
  737. page. </p>
  738. <p class="notice">It is recommended to <u>uncheck</u> this option</p>
  739. </li>
  740. </ul>
  741. <p id="auto-settings-rules">Auto-settings rules</p>
  742. <ul>
  743. <li>The auto-settings rules let you associate a complete or partial URL with a profile. It also
  744. allows to associate a specific profile for the auto-save, or to disable it (check "display
  745. 'Auto-save profile' column"). When two or more rules match a URL of a page to save, the rule
  746. with the longest URL will be chosen. The special profile "-" means the current profile. </li>
  747. <li>You can use the special value "*" as URL to create a rule that applies to all URLs</li>
  748. <li>You can use regular expressions by prefixing the URL with "regexp:" (e.g. "regexp:.*\.com" to
  749. match all URLs containing ".com"). When zero or more rules based on URLs and one or more rules
  750. based on regular expressions match a URL, the longest rule based on regular expression will be
  751. chosen. </li>
  752. </ul>
  753. <p>Form buttons</p>
  754. <ul>
  755. <li><span class="option">synchronize options</span>
  756. <p>Check this option to synchronize your options and make them available in all instances of the
  757. browser you are logged into, on different devices.</p>
  758. </li>
  759. <li><span class="option">Reset</span>
  760. <p>Reset all options to their default values.</p>
  761. </li>
  762. </ul>
  763. </li>
  764. <li><a id="annotation-editor">Annotation editor</a>
  765. <p>The annotation editor can be opened by selecting "Annotate and save the page" in the context menu or
  766. by enabling the option "Annotation editor &gt; edit page before saving". It allows you to:
  767. <ul>
  768. <li>add notes by clicking one of these buttons: <img src="../resources/button_note_yellow.png"
  769. class="icon button"> <img src="../resources/button_note_pink.png" class="icon button"> <img
  770. src="../resources/button_note_blue.png" class="icon button"> <img
  771. src="../resources/button_note_green.png" class="icon button"></li>
  772. <li>hide or show notes by clicking the button <img src="../resources/button_note_visible.png"
  773. class="icon button"></li>
  774. <li>highlight text by clicking one of these buttons: <img
  775. src="../resources/button_highlighter_yellow.png" class="icon button"> <img
  776. src="../resources/button_highlighter_pink.png" class="icon button"> <img
  777. src="../resources/button_highlighter_blue.png" class="icon button"> <img
  778. src="../resources/button_highlighter_green.png" class="icon button"></li>
  779. <li>hide or show highlighted text by clicking the button <img
  780. src="../resources/button_highlighter_visible.png" class="icon button"></li>
  781. <li>remove text highlighting by clicking the button <img
  782. src="../resources/button_highlighter_delete.png" class="icon button"></li>
  783. <li>edit the page by clicking the button <img src="../resources/button_note_edit.png"
  784. class="icon button"> </li>
  785. <li>format the page to improve readability (when possible) by clicking the button <img
  786. src="../resources/button_note_format.png" class="icon button"> </li>
  787. <li>remove contents by clicking the button <img src="../resources/button_cut_inner.png"
  788. class="icon button"> (inner elements) or <img src="../resources/button_cut_outer.png"
  789. class="icon button"> (outer elements)</li>
  790. <li>undo removes by clicking the button <img src="../resources/button_undo_cut.png"
  791. class="icon button"> or the button <img src="../resources/button_undo_all_cut.png"
  792. class="icon button"> (undo all)
  793. <li>redo removes by clicking the button <img src="../resources/button_redo_cut.png"
  794. class="icon button"></li>
  795. <li>print the page by clicking the button <img src="../resources/button_print.png"
  796. class="icon button"> or by pressing <code>Ctrl-P</code></li>
  797. <li>save the page by clicking the button <img src="../resources/button_download.png"
  798. class="icon button"> or by pressing <code>Ctrl-S</code></li>
  799. </ul>
  800. </p>
  801. <br>
  802. <p>
  803. You can use the following keyboard shortcuts when removing contents with <img
  804. src="../resources/button_cut_inner.png" class="icon button"> or <img
  805. src="../resources/button_cut_outer.png" class="icon button">:
  806. <ul>
  807. <li><code>Tab</code>: expand the selection</li>
  808. <li><code>Shift-Tab</code>: reduce the selection</li>
  809. <li><code>Space</code>: remove the selected element</li>
  810. <li><code>Ctrl-Z</code>: undo the last removal</li>
  811. <li><code>Ctrl-Shift-Z</code>: redo the last removal</li>
  812. <li><code>Ctrl</code>: select/unselect multiple elements, releasing the <code>Ctrl</code> key
  813. validates the selection</li>
  814. <li><code>Shift</code>: temporarily reverse the type of removal (i.e. removal of inner elements or
  815. removal of outer elements) on the last selected element and reset the other selected elements if
  816. any</li>
  817. <li><code>Escape</code>: reset selected elements</li>
  818. </ul>
  819. </p>
  820. </ul>
  821. </li>
  822. <li><a id="template-variables">Template variables</a>
  823. <p>The template variables are used to customize the infobar content or the file name of a saved page.
  824. They help to insert dynamic values like the save date or the page title.</p>
  825. <p> You can limit the length of a dynamic value by adding <code>[<em>maxByteSize</em>]</code> or
  826. <code>[<em>maxCharSize</em>ch]</code> just after the variable name. The <code>maxByteSize</code>
  827. value is the maximum length of the value in bytes (e.g. `{page-title}[20]` to limit the title to 20
  828. bytes). The <code>maxCharSize</code> value is the maximum length in characters (e.g.
  829. `{page-title}[10ch]` to limit the title to 10 characters).
  830. </p>
  831. <ul>
  832. <li><code>{page-title}</code>: the title of the page</li>
  833. <li><code>{page-heading}</code>: the content of the H1 tag in the page</li>
  834. <li><code>{page-language}</code>: the language of the page</li>
  835. <li><code>{page-description}</code>: the description of the page</li>
  836. <li><code>{page-author}</code>: the author of the page</li>
  837. <li><code>{page-creator}</code>: the creator of the page</li>
  838. <li><code>{page-publisher}</code>: the publisher of the page</li>
  839. <li><code>{datetime-iso}</code>: the save date and time in the ISO format (e.g.
  840. "2018-09-15T22_38_26_317Z")</li>
  841. <li><code>{datetime-utc}</code>: the save date and time in UTC format (e.g. "Sat, 15 Sep 2018
  842. 22_38_26 GMT")</li>
  843. <li><code>{datetime-locale}</code>: the localized value of the date and time (e.g. "9_16_2018,
  844. 12_54_31 AM")</li>
  845. <li><code>{date-iso}</code>: the save date in the ISO format (e.g. "2018-09-15")</li>
  846. <li><code>{date-locale}</code>: the localized value of the save date (e.g. "16_09_2018")</li>
  847. <li><code>{time-iso}</code>: the save time in the ISO format (e.g. "22_38_26_317")</li>
  848. <li><code>{time-locale}</code>: the localized value of the save time (e.g. "00_38_26")</li>
  849. <li><code>{time-ms}</code>: the save time is ms since the Unix Epoch (e.g. 1563582018000)</li>
  850. <li><code>{day-utc}</code>: the day of the save date in UTC format (e.g. "15")</li>
  851. <li><code>{day-locale}</code>: the localized value of the day (e.g. "15")</li>
  852. <li><code>{month-utc}</code>: the month of the save date in UTC format (e.g. "09")</li>
  853. <li><code>{month-locale}</code>: the localized value of the month (e.g. "09")</li>
  854. <li><code>{year-utc}</code>: the year of the save date in UTC format (e.g. "2018")</li>
  855. <li><code>{year-locale}</code>: the localized value of the year (e.g. "2018")</li>
  856. <li><code>{hours-utc}</code>: the hour of the save date in UTC format (e.g. "20")</li>
  857. <li><code>{hours-locale}</code>: the localized value of the hour (e.g. "22")</li>
  858. <li><code>{minutes-utc}</code>: the minutes of the save date in UTC format (e.g. "38")</li>
  859. <li><code>{minutes-locale}</code>: the localized value of the minutes (e.g. "38")</li>
  860. <li><code>{seconds-utc}</code>: the seconds of the save date in UTC format (e.g. "31")</li>
  861. <li><code>{seconds-locale}</code>: the localized value of the seconds (e.g. "31")</li>
  862. <li><code>{visit-datetime-iso}</code>: the visit date and time in the ISO format (e.g.
  863. "2018-09-15T22_38_26_317Z")</li>
  864. <li><code>{visit-datetime-utc}</code>: the visit date and time in UTC format (e.g. "Sat, 15 Sep 2018
  865. 22_38_26 GMT")</li>
  866. <li><code>{visit-datetime-locale}</code>: the localized value of the date and time (e.g. "9_16_2018,
  867. 12_54_31 AM")</li>
  868. <li><code>{visit-date-iso}</code>: the visit date in the ISO format (e.g. "2018-09-15")</li>
  869. <li><code>{visit-date-locale}</code>: the localized value of the visit date (e.g. "16_09_2018")</li>
  870. <li><code>{visit-time-iso}</code>: the visit time in the ISO format (e.g. "22_38_26_317")</li>
  871. <li><code>{visit-time-locale}</code>: the localized value of the visit time (e.g. "00_38_26")</li>
  872. <li><code>{visit-time-ms}</code>: the visit time is ms since the Unix Epoch (e.g. 1563582018000)
  873. </li>
  874. <li><code>{visit-day-utc}</code>: the day of the visit date in UTC format (e.g. "15")</li>
  875. <li><code>{visit-day-locale}</code>: the localized value of the day (e.g. "15")</li>
  876. <li><code>{visit-month-utc}</code>: the month of the visit date in UTC format (e.g. "09")</li>
  877. <li><code>{visit-month-locale}</code>: the localized value of the month (e.g. "09")</li>
  878. <li><code>{visit-year-utc}</code>: the year of the visit date in UTC format (e.g. "2018")</li>
  879. <li><code>{visit-year-locale}</code>: the localized value of the year (e.g. "2018")</li>
  880. <li><code>{visit-hours-utc}</code>: the hour of the visit date in UTC format (e.g. "20")</li>
  881. <li><code>{visit-hours-locale}</code>: the localized value of the hour (e.g. "22")</li>
  882. <li><code>{visit-minutes-utc}</code>: the minutes of the visit date in UTC format (e.g. "38")</li>
  883. <li><code>{visit-minutes-locale}</code>: the localized value of the minutes (e.g. "38")</li>
  884. <li><code>{visit-seconds-utc}</code>: the seconds of the visit date in UTC format (e.g. "31")</li>
  885. <li><code>{visit-seconds-locale}</code>: the localized value of the seconds (e.g. "31")</li>
  886. <li><code>{url-href}</code>: the URL of the page (e.g. "http://example.com/category/index.html")
  887. </li>
  888. <li><code>{url-href-digest-sha-1}</code>: the SHA-1 hash value of the URL of the page (e.g.
  889. 4b826844d9f5c128533e4ff14d746334f3ac9e00)</li>
  890. <li><code>{url-href-flat}</code>: the URL of the page with replaced slashes (e.g.
  891. "http__example.com_category_index.html")</li>
  892. <li><code>{url-pathname}</code>: the path name of the URL (e.g. "category/index.html")</li>
  893. <li><code>{url-pathname-flat}</code>: the path name of the URL with replaced slashes (e.g.
  894. "category_index.html")</li>
  895. <li><code>{url-last-segment}</code>: the last part of the pathname (without the extension) or the
  896. host if not found (e.g. "index")</li>
  897. <li><code>{url-protocol}</code>: the protocol of the URL (e.g. "https")</li>
  898. <li><code>{url-host}</code>: the host name + the port of the URL (e.g. "example.com_8080")</li>
  899. <li><code>{url-hostname}</code>: the host name of the URL (e.g. "example.com")</li>
  900. <li><code>{url-hostname-suffix}</code>: the suffix of the host name of the URL (e.g. "com")</li>
  901. <li><code>{url-hostname-domain}</code>: the domain of the host name of the URL (e.g. "example")</li>
  902. <li><code>{url-hostname-root}</code>: the root of the host name of the URL (e.g. "example.com")</li>
  903. <li><code>{url-hostname-subdomains}</code>: the sub-domains of the host name of the URL (e.g.
  904. "sub" for "sub.example.com"), "www" is ignored</li>
  905. <li><code>{url-port}</code>: the port of the URL (e.g. "8080")</li>
  906. <li><code>{url-username}</code>: the user name of the URL (e.g. "john_doe")</li>
  907. <li><code>{url-password}</code>: the password of the URL (e.g. "qwerty123")</li>
  908. <li><code>{url-search}</code>: the search string of the URL (e.g. "order=ascending")</li>
  909. <li><code>{url-hash}</code>: the hash of the URL (e.g. "chapter-2")</li>
  910. <li><code>{url-referrer}</code>: the URI of the page that "linked" to the page (e.g.
  911. "http://example.com")</li>
  912. <li><code>{url-referrer-flat}</code>: the URI of the page that "linked" to the page with slashed
  913. replaced (e.g. "http_example.com")</li>
  914. <li><code>{bookmark-pathname}</code>: the path name of the newly created bookmark (e.g. "My
  915. Bookmarks/Last Month") when the option "Bookmarks &gt; save the page of a
  916. newly created bookmark" is enabled</li>
  917. <li><code>{bookmark-pathname-flat}</code>: the path name of the newly created bookmark with replaced
  918. slashes (e.g. "My Bookmarks_Last Month") when the option "Bookmarks &gt; save the page of a
  919. newly created bookmark" is enabled</li>
  920. <li><code>{tab-id}</code>: the unique identifier of the tab (e.g. "326")</li>
  921. <li><code>{tab-index}</code>: the index of the tab in the window (e.g. "1")</li>
  922. <li><code>{digest-sha-256}</code>: the SHA-256 hash value of the entire page content (e.g.
  923. e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)</li>
  924. <li><code>{digest-sha-384}</code>: the SHA-384 hash value of the entire page content</li>
  925. <li><code>{digest-sha-512}</code>: the SHA-512 hash value of the entire page content</li>
  926. <li><code>{profile-name}</code>: the name of the profile used to save the page</li>
  927. <li><code>{filename-extension}</code>: the extension of the filename depending on the file format
  928. (i.e. "html", "u.zip.html", "zip.html", "zip")</li>
  929. <li><code>{save-action}</code>: the action used to save the page (i.e. "page", "selection")</li>
  930. </ul>
  931. </li>
  932. <li><a id="template-functions" href="#template-functions">Template functions</a>
  933. <p>The template functions are used to format values in the template or to insert values depending on
  934. parameters.</p>
  935. <p>The syntax of a function call is <code>%<em>function-name</em>&lt;<em>parameter</em>&gt;</code>.
  936. You can pass multiple parameters separated with a pipe character (e.g.
  937. "%<em>function-name</em>&lt;<em>parameter1</em>|<em>parameter2</em>&gt;"). Like the template
  938. variables, you can limit the length of a dynamic value by adding <code>[<em>maxByteSize</em>]</code>
  939. or <code>[<em>maxCharSize</em>ch]</code> just after the function name.
  940. </p>
  941. <ul>
  942. <li><code>%if-empty&lt;value|default&gt;</code>: returns the <code>default</code> value if
  943. <code>value</code> is empty (e.g. "%if-empty&lt;{page-title}|Untitled&gt;" to return "Untitled"
  944. if the page title is empty).
  945. You also can pass multiple values separated with a pipe character (e.g.
  946. "%if-empty&lt;{page-title}|{page-heading}|Untitled&gt;" to return the page heading if not empty,
  947. the page title if not empty or "Untitled" if both are empty).
  948. </li>
  949. <li><code>%if-not-empty&lt;value|default&gt;</code>: returns the <code>default</code> value if
  950. <code>value</code> is not empty (e.g. "%if-not-empty&lt;{page-title}({page-title})&gt; to return
  951. the page title surrounded by parentheses if the page title is not empty).
  952. You also can pass multiple values separated like with the function <code>%if-empty</code>.
  953. </li>
  954. <li><code>%if-equals&lt;value|expected|trueValue|falseValue&gt;</code>: returns the
  955. <code>trueValue</code> if <code>value</code> equals <code>expected</code> or the
  956. <code>falseValue</code> otherwise (e.g.
  957. "%if-equals&lt;{page-title}|Untitled|{page-heading}|{page-title}&gt;"
  958. to return the page heading if the page title equals "Untitled" or the page title otherwise).
  959. <li><code>%if-not-equals&lt;value|expected|trueValue|falseValue&gt;</code>: returns the
  960. <code>trueValue</code> if <code>value</code> does not equal <code>expected</code> or the
  961. <code>falseValue</code> otherwise (e.g.
  962. "%if-not-equals&lt;{page-title}|Untitled|{page-title}|{page-heading}&gt;"
  963. to return the page heading if the page title does not equal "Untitled" or the page title
  964. otherwise).
  965. <li><code>%if-contains&lt;value|expected|trueValue|falseValue&gt;</code>: returns the
  966. <code>trueValue</code> if <code>value</code> contains <code>expected</code> or the
  967. <code>falseValue</code> otherwise (e.g.
  968. "%if-contains&lt;{page-title}|Untitled|{page-heading}|{page-title}&gt;"
  969. to return the page heading if the page title contains "Untitled" or the page title otherwise).
  970. </li>
  971. <li><code>%if-not-contains&lt;value|expected|trueValue|falseValue&gt;</code>: returns the
  972. <code>trueValue</code> if <code>value</code> does not contain <code>expected</code> or the
  973. <code>falseValue</code> otherwise (e.g.
  974. "%if-not-contains&lt;{page-title}|Untitled|{page-title}|{page-heading}&gt;"
  975. to return the page heading if the page title does not contain "Untitled" or the page title
  976. otherwise).
  977. </li>
  978. <li><code>%substring&lt;value|start|end&gt;</code>: returns a substring of the <code>value</code>
  979. (e.g. "%substring&lt;{page-title}|0|20&gt;" to return the first 20 characters of the page
  980. title, "%substring&lt;{page-title}|5&gt;" to return the page title without the first 5
  981. characters).
  982. </li>
  983. <li><code>%lowercase&lt;value&gt;</code>: returns the <code>value</code> in lowercase (e.g.
  984. "%lowercase&lt;{page-title}&gt;" to return the page title in lowercase).
  985. </li>
  986. <li><code>%uppercase&lt;value&gt;</code>: returns the <code>value</code> in uppercase (e.g.
  987. "%uppercase&lt;{page-title}&gt;" to return the page title in uppercase).
  988. </li>
  989. <li><code>%capitalize&lt;value&gt;</code>: returns the <code>value</code> with the first letter in
  990. uppercase (e.g. "%capitalize&lt;{page-title}&gt;" to return the page title with the first letter
  991. in uppercase).
  992. </li>
  993. <li><code>%replace&lt;value|search|replacement&gt;</code>: returns the <code>value</code> with
  994. all <code>search</code> values replaced by <code>replacement</code> (e.g.
  995. "%replace&lt;{page-title}| |_&gt;" to replace all spaces by underscores in the page title).
  996. </li>
  997. <li><code>%repeat&lt;value|count&gt;</code>: returns the <code>value</code> repeated
  998. <code>count</code> times (e.g. "%repeat&lt;{page-title}|3&gt;" to repeat the page title 3
  999. times).
  1000. </li>
  1001. <li><code>%index-of&lt;value|search|fromIndex&gt;</code>: returns the index of the first occurrence
  1002. of <code>search</code> in <code>value</code> (e.g. "%index-of&lt;{page-title}|"Title"&gt;" to
  1003. return the index of the first occurrence of the string "Title" in <code>page-title</code>).
  1004. </li>
  1005. <li><code>%last-index-of&lt;value|search|fromIndex&gt;</code>: returns the index of the last
  1006. occurrence of <code>search</code> in <code>value</code> (e.g.
  1007. "%last-index-of&lt;{page-title}|"Title"&gt;" to return the index of the last occurrence of the
  1008. string "Title" in <code>page-title</code>).
  1009. </li>
  1010. <li><code>%length&lt;value&gt;</code>: returns the length of the <code>value</code> (e.g.
  1011. "%length&lt;{page-title}&gt;" to return the length of the page title).
  1012. </li>
  1013. <li><code>%trim&lt;value&gt;</code>: returns the <code>value</code> with all leading and trailing
  1014. whitespace removed (e.g. "%trim&lt;{page-title}&gt;" to remove all leading and trailing
  1015. whitespace in the page title).
  1016. </li>
  1017. <li><code>%trim-left&lt;value&gt;</code>: returns the <code>value</code> with all leading
  1018. whitespace removed (e.g. "%trim-left&lt;{page-title}&gt;" to remove all leading whitespace in
  1019. the page title).
  1020. </li>
  1021. <li><code>%trim-right&lt;value&gt;</code>: returns the <code>value</code> with all trailing
  1022. whitespace removed (e.g. "%trim-right&lt;{page-title}&gt;" to remove all trailing whitespace in
  1023. the page title).
  1024. </li>
  1025. <li><code>%pad-left&lt;value|length|pad&gt;</code>: returns the <code>value</code> with
  1026. <code>pad</code> added to the left side so as to make the length of the <code>value</code> equal
  1027. to <code>length</code> (e.g. "%pad-left&lt;{page-title}|20|_&gt;" to add underscores to the left
  1028. side of the page title so as to make its length equal to 20).
  1029. </li>
  1030. <li><code>%pad-right&lt;value|length|pad&gt;</code>: returns the <code>value</code> with
  1031. <code>pad</code> added to the right side so as to make the length of the <code>value</code>
  1032. equal to <code>length</code> (e.g. "%pad-right&lt;{page-title}|20|_&gt;" to add underscores to
  1033. the right side of the page title so as to make its length equal to 20).
  1034. </li>
  1035. <li><code>%url-search-name&lt;index&gt;</code>: the name of the search parameter at the specified
  1036. index (e.g. "%url-search-name&lt;0&gt;" for the name of the first search parameter)
  1037. </li>
  1038. <li><code>%url-search-value&lt;index&gt;</code>: the value of the search parameter at the specified
  1039. index (e.g. "%url-search-value&lt;0&gt;" for the value of the first search parameter)
  1040. </li>
  1041. <li><code>%url-search-named-value&lt;name&gt;</code>: the value of the search parameter with the
  1042. specified name (e.g. "%url-search-named-value&lt;id&gt;" for the value of the search parameter
  1043. "id")
  1044. </li>
  1045. <li><code>%url-segment&lt;index&gt;</code>: the segment of the pathname at the specified index (e.g.
  1046. "%url-segment&lt;0&gt;" for the first segment of the pathname)
  1047. </li>
  1048. <li><code>%url-hostname-subdomain&lt;index&gt;</code>: the subdomain of the hostname at the
  1049. specified index (e.g. "%url-hostname-subdomain&lt;0&gt;" for the first subdomain of the
  1050. hostname)
  1051. </li>
  1052. <li><code>%stringify&lt;value&gt;</code>: the string representation of the specified value (e.g.
  1053. "%stringify&lt;{page-title}&gt;" for the string representation of the page title)
  1054. </li>
  1055. <li><code>%encode-uri&lt;value&gt;</code>: the URI-encoded representation of the specified value
  1056. (e.g. "%encode-uri&lt;{page-title}&gt;" for the URI-encoded representation of the page title)
  1057. </li>
  1058. <li><code>%decode-uri&lt;value&gt;</code>: the URI-decoded representation of the specified value
  1059. (e.g. "%decode-uri&lt;{page-title}&gt;" for the URI-decoded representation of the page title)
  1060. </li>
  1061. <li><code>%encode-uri-component&lt;value&gt;</code>: the URI-encoded representation of the
  1062. specified value (e.g. "%encode-uri-component&lt;{page-title}&gt;" for the URI-encoded
  1063. representation of the page title)
  1064. </li>
  1065. <li><code>%decode-uri-component&lt;value&gt;</code>: the URI-decoded representation of the
  1066. specified value (e.g. "%decode-uri-component&lt;{page-title}&gt;" for the URI-decoded
  1067. representation of the page title)
  1068. </li>
  1069. <li><code>%page-element-text&lt;selector&gt;</code>: the text content of the first element matching
  1070. the specified selector (e.g. "%page-element-text&lt;h1&gt;" for the text content of the first H1
  1071. element)
  1072. </li>
  1073. <li><code>%page-element-attribute&lt;selector|attribute&gt;</code>: the value of the specified
  1074. attribute of the first element matching the specified selector (e.g.
  1075. "%page-element-attribute&lt;h1|class&gt;" for the class attribute of the first H1 element)
  1076. </li>
  1077. </ul>
  1078. </li>
  1079. <li>
  1080. <a id="external-messages">Integration with other extensions</a>
  1081. <p>SingleFile can receive messages from other extensions. The messages must be sent to the extension ID
  1082. of SingleFile and must be a string containing one of the following values:
  1083. <ul>
  1084. <li>
  1085. <code>"save-page"</code>: save the current page
  1086. </li>
  1087. <li>
  1088. <code>"edit-and-save-page"</code>: edit the current page in the annotation editor and save it
  1089. </li>
  1090. <li>
  1091. <code>"save-selected-links"</code>: save all the links in the selected content
  1092. </li>
  1093. <li>
  1094. <code>"save-selected-content"</code>: save the selected content
  1095. </li>
  1096. <li>
  1097. <code>"save-selected-tabs"</code>: save the selected tabs
  1098. </li>
  1099. <li>
  1100. <code>"save-unpinned-tabs"</code>: save the unpinned tabs
  1101. </li>
  1102. <li>
  1103. <code>"save-all-tabs"</code>: save all the tabs
  1104. </li>
  1105. </ul>
  1106. </p>
  1107. </li>
  1108. <li><a id="notes">Technical notes</a>
  1109. <ul>
  1110. <li>All images are converted into <a href="http://en.wikipedia.org/wiki/Base64"
  1111. target="_blank">base64</a>. </li>
  1112. <li>All resources except frame contents are injected in the document using <a
  1113. href="http://en.wikipedia.org/wiki/Data_URI_scheme" target="_blank">data URI scheme</a>.
  1114. </li>
  1115. <li>Frame contents are injected as text in the document by using the srcdoc attribute. </li>
  1116. </ul>
  1117. </li>
  1118. <li><a id="known-issues">Known issues</a>
  1119. <ul>
  1120. <li>All browsers
  1121. <ul>
  1122. <li>For security reasons, you cannot save pages hosted on https://chrome.google.com,
  1123. https://addons.mozilla.org and some other Mozilla domains. When this happens, 🚫 is
  1124. displayed on top of the SingleFile icon.</li>
  1125. <li>For security reasons, SingleFile is sometimes unable to save the image representation of
  1126. canvas and snapshots of video elements.</li>
  1127. <li>The last saved path cannot be remembered by default. To circumvent this limitation,
  1128. disable the option "Misc. &gt; Save pages in background".</li>
  1129. <li>The following characters are replaced with _ in filenames: ~, +, \, ?, %, *, :, |, ",
  1130. &lt;, &gt;. This is done to maintain compatibility with various OSs and file systems.
  1131. If you don't need that level of compatibility and know what you are doing, you can
  1132. change the list of forbidden characters in
  1133. <a href="https://github.com/gildas-lormeau/SingleFile/wiki/Hidden-options">Hidden
  1134. options</a>.
  1135. </li>
  1136. </ul>
  1137. </li>
  1138. <li>Chromium-based browsers
  1139. <ul>
  1140. <li>You must enable the option "Allow access to file URLs" in the extension page to display
  1141. the infobar when viewing a saved page, to save or to annotate a page stored on the
  1142. filesystem.</li>
  1143. <li>If the filename of a saved page looks like "56833935-156b-4d8c-a00f-19599c6513d3",
  1144. disable the option "Misc. &gt; Save pages in background". Reinstalling the browser may
  1145. also fix this issue.</li>
  1146. <li>Disabling the option 'File name &gt; open the "Save as" dialog to confirm the file name'
  1147. will work if and only if "Ask where to save each file before downloading" is disabled in
  1148. chrome://settings/downloads</li>
  1149. </ul>
  1150. </li>
  1151. <li>Firefox
  1152. <ul>
  1153. <li>The "File name &gt; file name conflict resolution" option does not work if set to
  1154. "prompt for a name".
  1155. </li>
  1156. <li>Sometimes, SingleFile is unable to save the contents of sandboxed iframes.</li>
  1157. <li>When processing a page from the filesystem, external resources (e.g. images,
  1158. stylesheets, fonts etc.) will not be embedded into the saved page.</li>
  1159. </ul>
  1160. </li>
  1161. </ul>
  1162. </li>
  1163. <li><a id="unknown-issues">Troubleshooting unknown issues</a>
  1164. <p>Please follow these steps if you find an unknown issue:</p>
  1165. <ul>
  1166. <li>Save the page in incognito.</li>
  1167. <li>If saving page in incognito did not fix the issue, reset SingleFile options.</li>
  1168. <li>If resetting options did not fix the issue, restart the browser.</li>
  1169. <li>If restarting the browser did not fix the issue, try to disable all other extensions to see if
  1170. there is a conflict.</li>
  1171. <li>If there is a conflict then try to determine against which extension(s).</li>
  1172. <li>Please report the issue <a href="https://github.com/gildas-lormeau/SingleFile/issues"
  1173. target="_blank">here</a>
  1174. with a short description on how to reproduce it.</li>
  1175. </ul>
  1176. <p>Suggestions are welcome :)</p>
  1177. </li>
  1178. <li><a id="contributors">Contributors</a>
  1179. <ul>
  1180. <li>Chinese translation done by yfdyh000 (<a href="https://github.com/yfdyh000"
  1181. target="_blank">GitHub profile</a>), KrasnayaPloshchad (<a
  1182. href="https://github.com/KrasnayaPloshchad" target="_blank">GitHub
  1183. profile</a>), frostblazergit (<a href="https://github.com/frostblazergit"
  1184. target="_blank">GitHub profile</a>), NightSharp (<a href="https://github.com/NightSharp"
  1185. target="_blank">GitHub profile</a>), lqzhgood (<a href="https://github.com/lqzhgood"
  1186. target="_blank">GitHub profile</a>) </li>
  1187. <li>Traditional Chinese translation done by frostblazergit (<a
  1188. href="https://github.com/frostblazergit" target="_blank">GitHub profile</a>), lqzhgood (<a
  1189. href="https://github.com/lqzhgood" target="_blank">GitHub profile</a>)</li>
  1190. <li>German translation done by womotroll (<a href="https://github.com/womotroll"
  1191. target="_blank">GitHub profile</a>), bannmann (<a href="https://github.com/bannmann"
  1192. target="_blank">GitHub profile</a>) </li>
  1193. <li>Italian translation done by Fastbyte01 (<a href="https://github.com/Fastbyte01"
  1194. target="_blank">GitHub profile</a>)</li>
  1195. <li>Japanese translation, done by Shitennouji (四天王寺) (<a href="https://github.com/Shitennouji"
  1196. target="_blank">GitHub profile</a>)</li>
  1197. <li>Polish translation done by xesarni (<a href="https://github.com/xesarni" target="_blank">GitHub
  1198. profile</a>)
  1199. </li>
  1200. <li>Portuguese translation done by @Blackspirits (<a href="https://github.com/Blackspirit"
  1201. target="_blank">GitHub profile</a>)
  1202. </li>
  1203. <li>Portuguese-Brazilian translation done by @mezysinc, Blackspirits (<a
  1204. href="https://github.com/Blackspirit" target="_blank">GitHub profile</a>)
  1205. </li>
  1206. <li>Russian translation done by rstp14 (<a href="https://github.com/rstp14" target="_blank">GitHub
  1207. profile</a>), kramola-RU (<a href="https://github.com/kramola-RU" target="_blank">GitHub
  1208. profile</a>), solokot (<a href="https://github.com/solokot" target="_blank">GitHub
  1209. profile</a>)</li>
  1210. <li>Spanish translation done by strel (<a href="https://github.com/strel" target="_blank">GitHub
  1211. profile</a>)</li>
  1212. <li>Turkish translation done by hbaklan943 (<a href="https://github.com/hbaklan943"
  1213. target="_blank">GitHub profile</a>)</li>
  1214. <li>Ukrainian translation done by perdolka (<a href="https://github.com/perdolka"
  1215. target="_blank">GitHub profile</a>), gildas-lormeau</li>
  1216. </ul>
  1217. </li>
  1218. <li><a id="icons">Icons</a>
  1219. <ul>
  1220. <li>Icon made by <a href="https://www.flaticon.com/authors/kiranshastry" title="Kiranshastry"
  1221. target="_blank" s>Kiranshastry</a> from <a href="https://www.flaticon.com/" title="Flaticon"
  1222. target="_blank">www.flaticon.com</a> is licensed by <a
  1223. href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
  1224. target="_blank">CC 3.0 BY</a> </li>
  1225. </ul>
  1226. </li>
  1227. </ol>
  1228. </div>
  1229. <script type="module" src="../bg/ui-help.js"></script>
  1230. </body>
  1231. </html>