| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>SingleFile help</title>
- <link rel="stylesheet" href="help.css">
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <meta name="color-scheme" content="light dark">
- <link rel="icon" href="/src/ui/resources/icon_128.png">
- </head>
- <body>
- <div>
- <div id="titleBorder">
- <h2>SingleFile</h2>
- <h4>Save a complete page into a single HTML file</h4>
- </div>
- <span id="index">
- <a href="#getting-started">Getting started</a> -
- <a href="#general-notes">Additional notes</a> -
- <a href="#options">Options description</a> -
- <a href="#annotation-editor">Annotation editor</a> -
- <a href="#notes">Technical notes</a> -
- <a href="#template-variables">Template variables</a> -
- <a href="#template-functions">Template functions</a> -
- <a href="#external-messages">Integration with other extensions</a> -
- <a href="#known-issues">Known issues</a> -
- <a href="#unknown-issues">Troubleshooting unknown issues</a> -
- <a href="#contributors">Contributors</a> </span>
- <hr>
- <ol>
- <li><a id="getting-started">Getting started</a>
- <ul>
- <li>Wait until the page is fully loaded.</li>
- <li>Click on the SingleFile button <img src="../resources/icon_16.png" class="icon"> in the
- extension toolbar to process and save the page.</li>
- <li>You can click again on the button to cancel the action when processing a page.</li>
- </ul>
- </li>
- <li><a id="general-notes">Additional notes</a>
- <ul>
- <li>To save multiple tabs, select them first and click on the SingleFile button <img
- src="../resources/icon_16.png" class="icon">.</li>
- <li>Open the context menu by right-clicking the SingleFile button <img
- src="../resources/icon_16.png" class="icon"> in the extension toolbar or on the webpage. It
- allows you to save: <ul>
- <li>the current tab,</li>
- <li>or the selected content,</li>
- <li>or the selected frame.</li>
- </ul>
- </li>
- <li>You can also process multiple tabs in one click and save: <ul>
- <li id="selectableTabsMenu">the selected tabs,</li>
- <li>or the unpinned tabs,</li>
- <li>or all the tabs.</li>
- </ul>
- </li>
- <li id="autoSaveMenu">The context menu also allows you to activate the auto-save of: <ul>
- <li>the current tab,</li>
- <li>or the unpinned tabs,</li>
- <li>or all the tabs.</li>
- </ul>
- </li>
- <li>You can highlight text, add notes, format and remove content before saving the page with the <a
- href="#annotation-editor">Annotation editor</a> by selecting "Annotate and save the page..."
- in the context menu</li>
- <li id="autoSaveHint">With auto-save active, pages are automatically saved every time after being
- loaded (or before
- being unloaded if not). </li>
- <li>Select "Save Selection" from the context menu without selecting any content first to display a
- selector that will help you choose content by hovering over it with the mouse.</li>
- <li>Right-click on the SingleFile button and select "Options" to open the options page.</li>
- <li id="saveToGDriveHint">Enable the option "Destination > upload to Google Drive" to upload
- pages to Google Drive</li>
- <li id="shortcutsSection">You can use the customizable shortcut Ctrl+Shift+Y to save the current tab
- or the selected tabs.
- Go to about:addons and select "Manage extension shortcuts" in the cogwheel menu to change it in
- Firefox. Go to chrome://extensions/shortcuts to change it in Chrome..</li>
- <li>The default save folder is the download folder configured in your browser, cf. about:preferences
- in Firefox, chrome://settings in Chrome, and Settings > General > File download location in
- Safari.</li>
- </ul>
- </li>
- <li><a id="options">Options description</a>
- <p>You can customize SingleFile through the options page. Right-click on SingleFile button <img
- src="../resources/icon_16.png" class="icon"> in the browser toolbar and select "Options"/"Manage
- extension" in the context menu to open the options page.</p>
- <p>Profiles</p>
- <ul>
- <li>
- <p>A profile is a set of user-defined options associated to a unique name.</p>
- <p>The drop-down list in the upper right of the options page allows you to select a profile and
- modify the associated options. The buttons next to the drop-down list allows you
- respectively to create, delete and rename a profile. </p>
- </li>
- <li>
- <p>You can select the default profile through the context menu of SingleFile. The selection is
- persistent and applied to all tabs. </p>
- </li>
- <li>
- <p>You can also override the default profile by associating a profile to a complete or partial
- URL. See the description of the <a href="#auto-settings-rules">Auto-settings rules</a>
- feature for more info. </p>
- </li>
- </ul>
- <p>User interface</p>
- <ul>
- <li data-options-label="addMenuEntryLabel"> <span class="option">Option: add entry in the context
- menu of the webpage</span>
- <p>Check this option to display an entry for SingleFile in the context menu of the webpage. The
- context menu of the SingleFile button <img src="../resources/icon_16.png" class="icon"> in
- the extension toolbar is displayed whether this option is checked or not. </p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="shadowEnabledLabel"> <span class="option">Option: overlay a shadow on the
- page during processing</span>
- <p>Check this option to overlay a shadow on the page when SingleFile is retrieving page
- resources. This reminds you that you should not close the tab. </p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="openSavedPageLabel" id="openSavedPageOption"> <span class="option">Option:
- open saved pages in a new tab</span>
- <p>Check this option to display the saved page in a new tab. This option can be useful, for
- example, in order to check the page is properly saved.</p>
- </li>
- <li data-options-label="autoCloseLabel"> <span class="option">Option: auto-close the tab after the
- page is saved</span>
- <p>Check this option to automatically close the tab after saving the page displayed inside. </p>
- </li>
- </ul>
- <p>File name</p>
- <ul>
- <li data-options-label="filenameTemplateLabel"> <span class="option">Option: template</span>
- <p>The template allows you to customize the file name of saved pages. You can use any valid
- character and "/" to create sub-folders (with the option "save pages in background" active).
- You can also use any variables from <a href="#template-variables">this list</a> and
- functions from <a href="#template-functions">this list</a> anywhere in the template.</p>
- <p>Invalid characters are automatically transformed and collapsed to underscores. File names
- cannot exceed 192 characters and are truncated if longer. The invalid characters are:
- <code>[</code> <code>~</code> <code>+</code> <code>\</code> <code>?</code> <code>%</code>
- <code>*</code> <code>:</code> <code>|</code> <code>"</code> <code><</code>
- <code>></code> and control characters from 0 to 31 in the ASCII table. When you want
- to customize the infobar, you can prefix the special characters <code>%</code>,
- <code><</code>, <code>></code>, <code>{</code>, <code>}</code> and <code>|</code> with
- <code>\</code> (e.g. <code>\></code>) to keep them in the infobar content.
- </p>
- <p>Template examples:</p>
- <ul>
- <li><code>{page-title} ({date-iso} {time-locale}).html</code> will produce filenames like
- "Introduction to SingleFile (2018-09-15 11_06_03 PM).html" for a page having
- "Introduction to SingleFile" as title.</li>
- <li><code>archives/{url-last-segment} - {date-iso}</code> will produce filenames like
- "welcome - 2018-09-15" for a page hosted on https://example.com/welcome.html. The saved
- files will be saved in the sub-directory "archives".</li>
- <li><code>archives/{year-locale}/{month-locale}/{day-locale}/{page-title}.html</code> will
- produce filenames like "Introduction to SingleFile.html" stored into 3 sub-directories
- in the "archives" folder, one for each part of the save date (e.g.
- "2018/9/15/Introduction to SingleFile.html").</li>
- </ul>
- </li>
- <li data-options-label="filenameMaxLengthLabel"> <span class="option">Option: max length</span>
- <p>Enter the maximum length of the filename (without the extension) and its unit (bytes or
- characters).</p>
- </li>
- <li data-options-label="filenameReplacementCharacterLabel"> <span class="option">Option: replacement
- character</span>
- <p>Enter the character used to replace invalid characters in the filename.</p>
- </li>
- <li data-options-label="replaceEmojisInFilenameLabel">
- <span class="option">Option: replace emojis with text</span>
- <p>Check this option to replace emojis in the file name with their unicode text representation.
- </p>
- </li>
- <li data-options-label="saveFilenameTemplateDataLabel">
- <span class="option">Option: save the filename template data into the page</span>
- <p>Check this option to save the template file data to the page. This allows you to recover
- template data previously used when saving the page and, for example, to ensure that the file
- is saved in the same directory as the original file when saving the page again.
- </p>
- </li>
- <li data-options-label="confirmFilenameLabel" id="confirmFilenameOption"> <span
- class="option">Option: open the "Save as"
- dialog to confirm the file name</span>
- <p>Check this option to display the "Save as" dialog in order to confirm the file name before
- saving the page. If the option "save pages in background" is unchecked then a prompt dialog
- will be displayed instead of the "Save as" dialog. </p>
- </li>
- <li data-options-label="filenameConflictActionLabel" id="filenameConflictActionOption"> <span
- class="option">Option: file name
- conflict resolution</span>
- <p>Choose the most appropriate action when the filename of the saved page is conflicting with
- existing ones on the filesystem. The "skip duplicate files" action only detects duplicates
- among files downloaded during the current browsing session.</p>
- </li>
- </ul>
- <p>File format</p>
- <ul>
- <li data-options-label="fileFormatSelectLabel">
- <span class="option">Option: format</span>
- <p>Select the output format of the saved file:
- </p>
- <ul>
- <li><code>"HTML"</code>: HTML file (default format). This format produces HTML files that do
- not depend on JavaScript to be opened.
- </li>
- <li><code>"self-extracting ZIP (universal)"</code>: self-extracting ZIP file that can be
- opened on any platform. This format produces files smaller than the "HTML" format but
- requires JavaScript to be enabled to open the file.
- </li>
- <li><code>"self-extracting ZIP"</code>: self-extracting ZIP file that can be
- opened on any platform from HTTP but not from the filesystem in some browsers (e.g.
- in browsers based on Chromium or WebKit) without SingleFile to be installed. This format
- produces files smaller (approx. 1%) than the "self-extracting ZIP (universal)" format.
- </li>
- <li><code>"ZIP"</code>: ZIP file. This format produces ZIP files that cannot be opened in a
- browser but can be opened in the annotation editor.
- </li>
- </ul>
- </li>
- <li data-options-label="passwordLabel">
- <span class="option">Option: password</span>
- <p>Type a password to encrypt the ZIP file with AES-256 (compatible with Winzip). Be careful, if
- you lose the password, it will be impossible to open the file. Enabling this option
- increases the CPU consumption and the time needed to save or read a page.</p>
- </p>
- </li>
- <li data-options-label="insertEmbeddedImageLabel">
- <span class="option">Option: embed image</span>
- <p>Check one of the options to embed an image when saving the page as a ZIP file
- (self-extracting or not). This allows you to display the saved page as a PNG image when
- the filename extension is changed to ".png".
- </p>
- </li>
- <li data-options-label="createRootDirectoryLabel">
- <span class="option">Option: create a root directory</span>
- <p>Check this option to create a root directory in the ZIP file. The directory name consists of
- a timestamp and the identifier of the tab where the saved page is displayed.
- </p>
- </li>
- <li data-options-label="preventAppendedDataLabel">
- <span class="option">Option: do not append data after the ZIP data</span>
- <p>Check this option to remove the data appended after the ZIP data. The resulting file may be
- easier to open with some archive managers that do not support ZIP files with appended data.
- Enabling this option increases the time needed to save a page.
- </p>
- </li>
- <li data-options-label="insertTextBodyLabel">
- <span class="option">Option: make text searchable</span>
- <p>Check this option to insert the text content of the saved page into the self-extracting ZIP
- file. This makes it possible, for example, to search for pages from the text. Note that if
- the selected format is "self-extracting ZIP (universal)", the text content is
- encoded in UTF-8 but the page is declared in ISO-8859-1.
- </p>
- </li>
- </ul>
- <p>HTML content</p>
- <ul>
- <li data-options-label="compressHTMLLabel"> <span class="option">Option: compress HTML
- content</span>
- <p>Check this option to remove all HTML comments and unneeded tags, spaces, quotes and
- whitespace characters. Checking this option helps to reduce the size of the file without
- altering the document.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="removeHiddenElementsLabel"> <span class="option">Option: remove hidden
- elements</span>
- <p>Check this option to remove all hidden elements. Checking this option can help to reduce the
- size of the file without altering the document. It may also increase the CPU consumption and
- the time needed to save a page.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="insertMetaCSPLabel"> <span class="option">Option: set content security
- policy</span>
- <p>Check this option to add a meta tag with a policy to block any external resources from being
- loaded.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="removeFramesLabel"> <span class="option">Option: remove frames</span>
- <p>Check this option to remove all frame and iframe elements. Checking this option can
- considerably reduce the size of the file without altering the document most of the time. It
- may also decrease the time needed to save a page.</p>
- </li>
- <li data-options-label="saveOriginalURLsLabel"> <span class="option"></span>: save original
- URLs of embedded resources</span>
- <p>Check this option to save the URLs of the resources embedded into the saved page. URLs
- are stored in attributes with a name prefixed with "data-sf-original-" and suffixed with the
- original attribute name (e.g. "data-sf-original-src", "data-sf-original-href") for HTML
- contents. For CSS contents, URLs are stored as comments beginning with "original URL:".
- </li>
- <li data-options-label="removeInfobarSavedDateLabel">
- <span class="option">Option: do not include the saved date</span>
- <p>Check this option to remove the saved date included in the saved page and displayed in the
- infobar.</p>
- </li>
- <li data-options-label="saveRawPageLabel"> <span class="option">Option: save raw page</span>
- <p>Check this option to save the raw HTML file that the browser received. When this option is
- checked, the page will be saved as if JavaScript was disabled. Checking this option may
- alter the document.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- </ul>
- <p>Infobar</p>
- <ul>
- <li data-options-label="displayInfobarLabel" id="displayInfobarOption"> <span class="option">Option:
- display an infobar when
- viewing a saved page</span>
- <p>Check this option to display the ℹ button at the top right of the page when viewing a saved
- page. By clicking this button, you can get more information about the saved date and open
- the original URL.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="infobarTemplateLabel"> <span class="option">Option: template of the infobar
- content</span>
- <p>The template allows you to customize the content displayed in the infobar. You can use any
- valid character, <code>\n</code> for new lines or <code>\t</code> for tabs. You can also use
- any variables from <a href="#template-variables">this list</a> anywhere in the template. If
- the template or the resulting content is empty, the infobar will display the saved date by
- default. </p>
- <p>Template examples:</p>
- <ul>
- <li><code>{url-href} ({date-iso})</code> will produce contents like "https://www.example.com
- (2018-09-15 11 06 03 PM)".</li>
- <li><code>Title: {page-title}</code> will produce contents like "Title: Example Domain" for
- a page having "Example Domain" as title.</li>
- </ul>
- </li>
- <li data-options-label="confirmInfobarLabel"> <span class="option">Option: open a prompt dialog to
- edit the infobar content</span>
- <p>Check this option to display a prompt dialog in order to confirm the infobar content before
- saving the page. </p>
- </li>
- <li data-options-label="includeInfobarLabel"> <span class="option"></span>Option: include infobar in
- the saved page</span>
- <p>Check this option to display the ℹ button at the top right of the page when viewing a saved
- page in a browser where SingleFile is not installed.</p>
- </li>
- <li data-options-label="openInfobarLabel"> <span class="option"></span>Option: keep infobar
- open</span>
- <p>Check this option to keep the infobar open when viewing a saved page.</p>
- </li>
- </ul>
- <p>Stylesheets</p>
- <ul>
- <li data-options-label="removeUnusedStylesLabel"> <span class="option">Option: remove unused
- styles</span>
- <p>Check this option to remove all the CSS rules and styles that do not match any element in the
- saved page. Checking this option will not alter the document and can considerably reduce the
- size of the file. It will also increase the CPU consumption and the time needed to save a
- page.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="removeAlternativeMediasLabel"> <span class="option">Option: remove
- stylesheets for alternative devices to screens</span>
- <p>Check this option to remove stylesheets that are not used for the screen display like
- stylesheets for print preview and speech synthesizers. Checking this option can help to
- reduce the size of the file.</p>
- </li>
- <li data-options-label="compressCSSLabel"> <span class="option">Option: compress CSS content</span>
- <p>Check this option to minify CSS stylesheets. Checking this option can reduce size of the file
- without altering the document. It may also increase the CPU consumption and the time needed
- to save a page.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="groupDuplicateStylesheetsLabel"> <span class="option">Option: group
- duplicate stylesheets together</span>
- <p>Check this option to group together all the duplicate inline stylesheets. Checking this
- option should not alter the document and can considerably reduce the size of the file. This
- option is ignored with archive formats based on ZIP files. Please note that this option
- requires JavaScript to be enabled in order to function properly.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="moveStylesInHeadLabel"> <span class="option">Option: move in the head
- element the styles found outside of it</span>
- <p>
- Check this option to move all the style elements found outside the head element into the
- head element. This can be useful to avoid a FOUC ("flash of unstyled content") when
- displaying a saved page.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- </ul>
- <p>Images</p>
- <ul>
- <li data-options-label="groupDuplicateImagesLabel"> <span class="option">Option: group duplicate
- images together</span>
- <p>Check this option to avoid saving multiple times duplicate images. Checking this option
- should not alter the document in modern browsers and can considerably reduce the size of the
- file. This option is ignored with archive formats based on ZIP files.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="loadDeferredImagesLabel"> <span class="option">Option: save deferred
- images</span>
- <p>Check this option to save all the deferred images (or frames) that are not yet displayed.
- This may help to save all the images without scrolling the page. This feature does its best
- effort and is not guaranteed to work on all sites. It will also increase the time needed to
- save a page.
- </p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="loadDeferredImagesMaxIdleTimeLabel"> <span class="option">Option: maximum
- idle time (ms)</span>
- <p>Enter the maximum delay of time to wait for deferred images. You can increase this value if
- for example the network or system conditions are degraded. You can also decrease this value
- otherwise.</p>
- </li>
- <li data-options-label="loadDeferredImagesDispatchScrollEventLabel"> <span class="option">Option:
- dispatch "scroll" event</span>
- <p>Check this option to dispatch the <a
- href="https://developer.mozilla.org/docs/Web/API/Document/scroll_event"
- target="_blank">"scroll"
- event</a> when waiting for deferred images. This can improve the loading of images
- on some sites but it can also cause unexpected scrolling problems on some other sites.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="loadDeferredImagesKeepZoomLevelLabel"> <span class="option">Option: zoom out
- the page</span>
- <p>Check this option to save the entire content of a page by zooming out the page. This can help
- saving pages using infinite virtual lists for example. </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="loadDeferredImagesBeforeFramesLabel"> <span class="option">Option: load
- deferred frames</span>
- <p>Check this option to load deferred frames and images before saving frame contents. It will
- increase the time needed to save a page.
- </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="removeAlternativeImagesLabel"> <span class="option">Option: remove images
- for alternative screen resolutions</span>
- <p>Check this option to remove images that are alternatives in lower and/or higher resolutions
- to the ones displayed by default. Checking this option can considerably reduce the size of
- the file.</p>
- </li>
- </ul>
- <p>Fonts</p>
- <ul>
- <li data-options-label="removeUnusedFontsLabel"> <span class="option">Option: remove unused
- fonts</span>
- <p>Check this option to remove all font CSS rules that do not match any content. Checking this
- option should not alter the document and can considerably reduce the size of the file.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="removeAlternativeFontsLabel"> <span class="option">Option: remove
- alternative fonts</span>
- <p>Check this option to remove fonts that are alternatives to the ones used. Checking this
- option should not alter the document and can considerably reduce the size of the file.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- </ul>
- <p>Destination</p>
- <ul>
- <li data-options-label="saveToFilesystemLabel"> <span class="option">Option: save to
- filesystem</span>
- <p>Check this option to save the downloaded page on the filesystem of your computer.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="sharePageLabel" id="sharePageInput"> <span class="option">Option: share
- page</span>
- <p>Check this option to share the page with other applications. This option is only available in
- browsers supporting the <a href="https://web.dev/web-share/" target="_blank">Web Share
- API</a>.
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveToClipboardLabel" id="saveToClipboardOption"> <span
- class="option">Option: copy to clipboard</span>
- <p>Check this option to copy the page to the clipboard. This option does not work with
- archive formats based on ZIP files.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveToGitHubLabel"> <span class="option">Option: upload to GitHub</span>
- <p>Check this option to save the page on GitHub. See the <a
- href="https://github.com/gildas-lormeau/SingleFile/wiki/How-to-publish-saved-pages-with-SingleFile-on-GitHub"
- target="_blank">documentation page</a> to learn how to configure SingleFile to save
- pages on GitHub. Warning: once a page saved on GitHub, it is complicated to delete it, see
- the <a
- href="https://docs.github.com/github/authenticating-to-github/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository"
- target="_blank">documentation page</a> on GitHub for more information.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="githubTokenLabel"> <span class="option">Option: access token</span>
- <p>Enter your personal access token on GitHub, see the <a
- href="https://docs.github.com/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token"
- target="_blank">documentation page</a> on GitHub for more information.</p>
- </li>
- <li data-options-label="githubUserLabel"> <span class="option">Option: user name</span>
- <p>Enter your user name on GitHub.</p>
- </li>
- <li data-options-label="githubRepositoryLabel"> <span class="option">Option: repository name</span>
- <p>Enter the name of the repository on GitHub where the saved pages will be archived, see
- the <a
- href="https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-new-repository"
- target="_blank">documentation page</a> on GitHub for more information on how to create a
- repository.
- </p>
- </li>
- <li data-options-label="githubBranchLabel"> <span class="option">Option: branch name</span>
- <p>Enter the repository branch name where pages will be archived. The branch
- <strong>must</strong> exist on GitHub, see the <a
- href="https://docs.github.com/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site"
- target="_blank">documentation page</a> on GitHub for more information on how to publish
- the branch on github.io.
- </p>
- </li>
- <li data-options-label="saveWithWebDAVLabel"> <span class="option">Option: upload to a WebDAV
- server</span>
- <p>Check this option to save the page on a WebDAV server.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="webDAVURLLabel"> <span class="option">Option: URL</span>
- <p>Enter the URL of the WebDAV server.</p>
- </li>
- <li data-options-label="webDAVUserLabel"> <span class="option">Option: user identifier</span>
- <p>Enter your user identifier on the WebDAV server.</p>
- </li>
- <li data-options-label="webDAVPasswordLabel"> <span class="option">Option: password</span>
- <p>Enter your password.</p>
- </li>
- <li data-options-label="saveToGDriveLabel" id="saveToGDriveOption"> <span class="option">Option:
- upload to Google Drive</span>
- <p>Check this option to save the page on Google Drive.</p>
- <p>The permissions requested by SingleFile allow it to access only to the files and folders it
- has created. When you uncheck this option, SingleFile revokes automatically its access to
- your Google Drive account.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveToS3Label" id="saveToS3Option"> <span class="option">Option: upload to
- Amazon S3</span>
- <p>Check this option to save the page on Amazon S3. You must configure the bucket policy to
- include the permission <code>s3:PutObject</code>, and <code>s3:HeadObject</code> or
- <code>s3:ListObjects</code>, or <code>s3:GetObject</code> if you do not want to overwrite or
- skip existing files in the event of a filename conflict.
- </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="S3DomainLabel"> <span class="option">Option: domain</span>
- <p>Enter the domain of the Amazon S3 server (e.g. <code>s3.amazonaws.com</code>).</p>
- </li>
- <li data-options-label="S3RegionLabel"> <span class="option">Option: region</span>
- <p>Enter the region of the Amazon S3 server (e.g. <code>us-east-1</code>).</p>
- </li>
- <li data-options-label="S3BucketLabel"> <span class="option">Option: bucket name</span>
- <p>Enter the name of the bucket on Amazon S3 where the saved pages will be archived. Pages will
- be uploaded to <code><bucket name>.<domain></code></p>.
- </li>
- <li data-options-label="S3AccessKeyLabel"> <span class="option">Option: access key</span>
- <p>Enter your access key on Amazon S3 (e.g. <code>AKDO525K84LJTH4SFAKE</code>).</p>
- </li>
- <li data-options-label="S3SecretKeyLabel"> <span class="option">Option: secret key</span>
- <p>Enter your secret key on Amazon S3.</p>
- </li>
- <li data-options-label="saveToDropboxLabel" id="saveToDropboxOption"> <span class="option">Option:
- upload to Dropbox</span>
- <p>Check this option to save the page on Dropbox.</p>
- <p>The permissions requested by SingleFile allow it to access only to the files and folders it
- has created.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveWithCompanionLabel" id="saveWithCompanionOption"> <span
- class="option">Option: save with
- SingleFile Companion</span>
- <p>Check this option to delegate the saving process to SingleFile Companion. It is a program
- that runs outside the browser and can help to make the saving process more transparent. It
- also allows the pages to be saved in another directory than the download directory. You can
- find more info <a href="https://github.com/gildas-lormeau/single-file-companion"
- target="_blank">here</a></p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveToRestFormApiLabel"> <span class="option">Option: upload to a REST Form
- API</span>
- <p>Check this option to save the page on an API endpoint accepting form data.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="saveToRestFormApiUrlLabel"> <span class="option">Option: URL</span>
- <p>Enter the URL of the API endpoint.</p>
- </li>
- <li data-options-label="saveToRestFormApiTokenLabel"> <span class="option">Option: authorization
- token</span>
- <p>Provide the the value of the "Bearer" token to authenticate the request.</p>
- </li>
- <li data-options-label="saveToRestFormApiFileFieldNameLabel"> <span class="option">Option: archive
- data field name</span>
- <p>Enter the name of the field that will contain the data of the saved page.</p>
- </li>
- <li data-options-label="saveToRestFormApiUrlFieldNameLabel"> <span class="option">Option: archive
- URL field name</span>
- <p>Enter the name of the field that will contain the URL of the saved page.</p>
- </li>
- </ul>
- <p>Network</p>
- <ul>
- <li data-options-label="blockResourcesLabel"> <span class="option">Option: blocked resources</span>
- <p>
- Check the options below to block the download of the corresponding resource types.
- </p>
- </li>
- <li data-options-label="blockMixedContentLabel"> <span class="option">Option: block mixed
- contents</span>
- <p>Check this option to block active content served from HTTP when viewing a page in HTTPS. You
- can find more information about mixed content pages <a
- href="https://developer.mozilla.org/docs/Web/Security/Mixed_content"
- target="_blank">here</a>.</p>
- </li>
- <li data-options-label="acceptHeadersLabel"> <span class="option">Option: "Accept" headers</span>
- <p>
- Enter the <a href="https://developer.mozilla.org/docs/Web/HTTP/Headers/Accept"
- target="_blank">"Accept" HTTP
- header</a> values below to adjust support for the corresponding resource types.
- </p>
- <p class="notice">It is recommended to leave these values <u>as they are</u></p>
- </li>
- <li data-options-label="setMaxResourceSizeLabel"> <span class="option">Option: set maximum size
- (MB)</span>
- <p>Check this option to remove from the saved page embedded resources (i.e. images, stylesheets,
- scripts and iframes) that exceeds a given size.</p>
- </li>
- <li data-options-label="maxResourceSizeLabel"> <span class="option">Option: maximum size (MB)</span>
- <p>Enter the maximum size in megabytes.</p>
- </li>
- <li data-options-label="setMaxResourceDelayLabel"> <span class="option">Option: set maximum
- download delay (s)</span>
- <p>Check this option to remove from the saved page embedded resources (i.e. images, stylesheets,
- scripts and iframes) that exceeds a given download time.</p>
- </li>
- <li data-options-label="maxResourceDelayLabel"> <span class="option">Option: maximum download delay
- (s)</span>
- <p>Enter the maximum download delay in seconds.</p>
- </li>
- <li data-options-label="passReferrerOnErrorLabel" id="passReferrerOnErrorOption"> <span
- class="option">Option: pass \"Referer\"
- header on
- cross-origin errors</span>
- <p>Check this option to pass the HTTP header "Referer" with the "origin" policy after an 401,
- 403, or 404 HTTP error when downloading a cross-origin resource. You should enable this
- option if you cannot download resources blocked by a hotlink protection.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- </ul>
- <p>Annotation editor</p>
- <ul>
- <li data-options-label="defaultEditorModeLabel"> <span class="option">Option: default mode</span>
- <p>Select the default mode when opening the annotation editor. The available choices are:
- <ul>
- <li><code>normal</code>: default value</li>
- <li><code>edit the page</code>: enable the button <img
- src="../resources/button_note_edit.png" class="icon button"></li>
- <li><code>format the page</code>: enable the button <img
- src="../resources/button_note_format.png" class="icon button"> if the page can be
- formatted</li>
- <li><code>remove elements</code>: enable the button <img
- src="../resources/button_cut_inner.png" class="icon button"></li>
- <li><code>remove external elements</code>: enable the button <img
- src="../resources/button_cut_outer.png" class="icon button"></li>
- </ul>
- </p>
- </li>
- <li data-options-label="applySystemThemeLabel"> <span class="option">Option: apply the system theme
- when formatting a page in the annotation editor</span>
- <p>Uncheck this option if you do not want to apply the theme of the operating system or the
- browser (e.g. dark or light) when you click on the button "Format the page for better
- readability" in the annotation editor.</p>
- </li>
- <li data-options-label="warnUnsavedPageLabel"> <span class="option">Option: warn if leaving page
- with unsaved changes</span>
- <p>Check this option to display a blocking popup when you leave the annotation editor (e.g.
- close the tab) without saving the changes.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="openEditorLabel"> <span class="option">Option: edit page before
- saving</span>
- <p>Check this option to open the annotation editor before saving any page. Checking this option
- removes the entry "Annotate and save the page..." from the context menu.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="autoOpenEditorLabel" id="autoOpenEditorOption"> <span class="option">Option:
- open the annotation editor when viewing a page saved with SingleFile</span>
- <p>Check this option to open the annotation editor when displaying a page saved by SingleFile.
- </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="displayInfobarInEditorLabel"> <span class="option">Option:
- display the infobar</span>
- <p>Check this option to display the infobar when displaying a page in the annotation editor.</p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </p>
- </li>
- </ul>
- <p id="bookmarksSection">Bookmarks</p>
- <ul id="bookmarksOptions">
- <li data-options-label="saveCreatedBookmarksLabel"> <span class="option">Option: save the page of a
- newly created bookmark</span>
- <p>Check this option to save pages that you add into your bookmarks. Note that if the page is to
- be saved is not already displayed in a tab, SingleFile will open temporarily a new tab to
- save the page. </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="replaceBookmarkURLLabel"> <span class="option">Option: link the new bookmark
- to the saved page</span>
- <p>Check this option to replace the URL of the page added into your bookmark with the file URI
- of the saved page on your disk. </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- <li data-options-label="ignoredBookmarkFoldersLabel"> <span class="option">Option: ignored
- folders</span>
- <p>Enter a list of bookmark folder names to ignore. The folder names must be separated with a
- comma. SingleFile will ignore bookmarks added in folders that contains these names.
- </p>
- </li>
- <li data-options-label="allowedBookmarkFoldersLabel"> <span class="option">Option: allowed
- folders</span>
- <p>Enter a list of bookmark folder names to allow. The folder names must be separated with a
- comma. SingleFile will only save pages added in folders that contains these names.
- </p>
- </li>
- </ul>
- <p id="autoSaveSection">Auto-save</p>
- <ul id="autoSaveOptions">
- <li data-options-label="autoSaveLoadOrUnloadLabel"> <span class="option">Option: auto-save after
- page load or on page unload</span>
- <p>Check this option to auto-save pages after being loaded. If you browse to another page before
- the page is fully loaded then the page will be saved just before being unloaded. With this
- option active, you are guaranteed pages will always be saved. Some frame contents may be
- missing (if you checked "remove frames") when pages are saved before being unloaded. </p>
- </li>
- <li data-options-label="autoSaveLoadLabel"> <span class="option">Option: auto-save after page
- load</span>
- <p>Check this option to auto-save pages after being loaded.</p>
- </li>
- <li data-options-label="autoSaveUnloadLabel"> <span class="option">Option: auto-save on page
- unload</span>
- <p>Check this option to auto-save pages before being unloaded instead of saving pages after
- being loaded. With this option active, you are guaranteed pages will always be saved but
- some frame contents may be missing (if you checked "remove frames"). </p>
- </li>
- <li data-options-label="autoSaveDiscardLabel"> <span class="option">Option: auto-save on tab
- discard</span>
- <p>Check this option to auto-save pages when discarding a tab. Some frame contents may be
- missing (if you checked "remove frames"). </p>
- </li>
- <li data-options-label="autoSaveRemoveLabel"> <span class="option">Option: auto-save on tab
- removal</span>
- <p>Check this option to auto-save pages when closing a tab. Some frame contents may be missing
- (if you checked "remove frames"). </p>
- </li>
- <li data-options-label="autoSaveDelayLabel"> <span class="option">Option: auto-save waiting delay
- after load (s)</span>
- <p>Enter the delay in seconds to wait before saving a page when the "auto-save on page load or
- on page unload" or "auto-save on page load" is checked. </p>
- </li>
- <li data-options-label="autoSaveRepeatLabel"> <span class="option">Option: auto-save
- periodically</span>
- <p>Check this option to auto-save pages periodically after load.</p>
- </li>
- <li data-options-label="autoSaveRepeatDelayLabel"> <span class="option">Option: period (s)</span>
- <p>Enter the delay in seconds to wait before each page saving when the "auto-save
- periodically" option is checked. </p>
- </li>
- <li data-options-label="autoSaveExternalSaveLabel"> <span class="option">Option: save the page with
- SingleFile Companion</span>
- <p>Check this option to delegate the capturing and saving process to SingleFile Companion. It is
- a program that runs outside the browser and can help to make the saving process more
- transparent. It also allows the pages to be saved in another directory than the download
- directory. You can find more info <a
- href="https://github.com/gildas-lormeau/single-file-companion" target="_blank">here</a>
- </p>
- </li>
- </ul>
- <p>Misc.</p>
- <ul>
- <li data-options-label="addProofLabel"> <span class="option">Option: add proof of existence</span>
- <p>Check this option to create a worldwide proof of the existence of the page you want to save.
- </p>
- <ul>
- <li> <strong>What is a proof of existence (data anchoring)?</strong><br> Data anchoring
- consists in building a time-stamped proof of existence for a data by linking it to a
- tamper resistant and time-stamped blockchain. Data anchoring implementation relies on
- the resilience and immutability of the Bitcoin blockchain to provide the best possible
- security level </li>
- <li> <strong>How does this protect my data?</strong><br> The anchoring mechanism only
- handles data impressions. Your data remains where you calculate the fingerprints, i.e.
- in the browser. Their confidentiality is totally preserved. </li>
- <li> <strong> The day after your backup you can get freely the proof receipt here: <a
- href="https://gildas-lormeau.github.io/singlefile-woleet/index.html"
- target="_blank">gildas-lormeau.github.io/singlefile-woleet/index.html</a>.
- A proof receipt will be used to verify the validity of the evidence </strong> </li>
- </ul>
- <p> More information <a href="https://doc.woleet.io" target="_blank">doc.woleet.io</a> </p>
- </li>
- <li data-options-label="woleetKeyLabel" hidden> <span class="option">Option: access token</span>
- <p>Enter your personal access token on Woleet, see the <a href="http://app.woleet.io/"
- target="_blank">registration page</a> on Woleet for more information.</p>
- </li>
- <li data-options-label="backgroundSaveLabel" id="backgroundSaveOption"> <span class="option">Option:
- save pages in
- background</span>
- <p>Uncheck this option if you get invalid file names like
- "37bec68b-446a-46a5-8642-19a89c231b46.html" or interrupted downloads when saving pages. You
- can also uncheck this option if you want the "Save as" dialog to remember the last saved
- path. Unchecking this option prevent using sub-directories in filename templates.</p>
- <p class="notice">It is recommended to <u>check</u> this option</p>
- </li>
- <li data-options-label="displayStatsLabel"> <span class="option">Option: display stats in the
- console after processing</span>
- <p>Check this option to display stats about processing in the JavaScript developer tools of your
- browser. Checking this option may increase the CPU consumption and the time needed to save a
- page. </p>
- <p class="notice">It is recommended to <u>uncheck</u> this option</p>
- </li>
- </ul>
- <p id="auto-settings-rules">Auto-settings rules</p>
- <ul>
- <li>The auto-settings rules let you associate a complete or partial URL with a profile. It also
- allows to associate a specific profile for the auto-save, or to disable it (check "display
- 'Auto-save profile' column"). When two or more rules match a URL of a page to save, the rule
- with the longest URL will be chosen. The special profile "-" means the current profile. </li>
- <li>You can use the special value "*" as URL to create a rule that applies to all URLs</li>
- <li>You can use regular expressions by prefixing the URL with "regexp:" (e.g. "regexp:.*\.com" to
- match all URLs containing ".com"). When zero or more rules based on URLs and one or more rules
- based on regular expressions match a URL, the longest rule based on regular expression will be
- chosen. </li>
- </ul>
- <p>Form buttons</p>
- <ul>
- <li><span class="option">synchronize options</span>
- <p>Check this option to synchronize your options and make them available in all instances of the
- browser you are logged into, on different devices.</p>
- </li>
- <li><span class="option">Reset</span>
- <p>Reset all options to their default values.</p>
- </li>
- </ul>
- </li>
- <li><a id="annotation-editor">Annotation editor</a>
- <p>The annotation editor can be opened by selecting "Annotate and save the page" in the context menu or
- by enabling the option "Annotation editor > edit page before saving". It allows you to:
- <ul>
- <li>add notes by clicking one of these buttons: <img src="../resources/button_note_yellow.png"
- class="icon button"> <img src="../resources/button_note_pink.png" class="icon button"> <img
- src="../resources/button_note_blue.png" class="icon button"> <img
- src="../resources/button_note_green.png" class="icon button"></li>
- <li>hide or show notes by clicking the button <img src="../resources/button_note_visible.png"
- class="icon button"></li>
- <li>highlight text by clicking one of these buttons: <img
- src="../resources/button_highlighter_yellow.png" class="icon button"> <img
- src="../resources/button_highlighter_pink.png" class="icon button"> <img
- src="../resources/button_highlighter_blue.png" class="icon button"> <img
- src="../resources/button_highlighter_green.png" class="icon button"></li>
- <li>hide or show highlighted text by clicking the button <img
- src="../resources/button_highlighter_visible.png" class="icon button"></li>
- <li>remove text highlighting by clicking the button <img
- src="../resources/button_highlighter_delete.png" class="icon button"></li>
- <li>edit the page by clicking the button <img src="../resources/button_note_edit.png"
- class="icon button"> </li>
- <li>format the page to improve readability (when possible) by clicking the button <img
- src="../resources/button_note_format.png" class="icon button"> </li>
- <li>remove contents by clicking the button <img src="../resources/button_cut_inner.png"
- class="icon button"> (inner elements) or <img src="../resources/button_cut_outer.png"
- class="icon button"> (outer elements)</li>
- <li>undo removes by clicking the button <img src="../resources/button_undo_cut.png"
- class="icon button"> or the button <img src="../resources/button_undo_all_cut.png"
- class="icon button"> (undo all)
- <li>redo removes by clicking the button <img src="../resources/button_redo_cut.png"
- class="icon button"></li>
- <li>print the page by clicking the button <img src="../resources/button_print.png"
- class="icon button"> or by pressing <code>Ctrl-P</code></li>
- <li>save the page by clicking the button <img src="../resources/button_download.png"
- class="icon button"> or by pressing <code>Ctrl-S</code></li>
- </ul>
- </p>
- <br>
- <p>
- You can use the following keyboard shortcuts when removing contents with <img
- src="../resources/button_cut_inner.png" class="icon button"> or <img
- src="../resources/button_cut_outer.png" class="icon button">:
- <ul>
- <li><code>Tab</code>: expand the selection</li>
- <li><code>Shift-Tab</code>: reduce the selection</li>
- <li><code>Space</code>: remove the selected element</li>
- <li><code>Ctrl-Z</code>: undo the last removal</li>
- <li><code>Ctrl-Shift-Z</code>: redo the last removal</li>
- <li><code>Ctrl</code>: select/unselect multiple elements, releasing the <code>Ctrl</code> key
- validates the selection</li>
- <li><code>Shift</code>: temporarily reverse the type of removal (i.e. removal of inner elements or
- removal of outer elements) on the last selected element and reset the other selected elements if
- any</li>
- <li><code>Escape</code>: reset selected elements</li>
- </ul>
- </p>
- </ul>
- </li>
- <li><a id="template-variables">Template variables</a>
- <p>The template variables are used to customize the infobar content or the file name of a saved page.
- They help to insert dynamic values like the save date or the page title.</p>
- <p> You can limit the length of a dynamic value by adding <code>[<em>maxByteSize</em>]</code> or
- <code>[<em>maxCharSize</em>ch]</code> just after the variable name. The <code>maxByteSize</code>
- value is the maximum length of the value in bytes (e.g. `{page-title}[20]` to limit the title to 20
- bytes). The <code>maxCharSize</code> value is the maximum length in characters (e.g.
- `{page-title}[10ch]` to limit the title to 10 characters).
- </p>
- <ul>
- <li><code>{navigator-language}</code>: the language of the browser</li>
- <li><code>{page-title}</code>: the title of the page</li>
- <li><code>{page-heading}</code>: the content of the H1 tag in the page</li>
- <li><code>{page-language}</code>: the language of the page</li>
- <li><code>{page-description}</code>: the description of the page</li>
- <li><code>{page-author}</code>: the author of the page</li>
- <li><code>{page-creator}</code>: the creator of the page</li>
- <li><code>{page-publisher}</code>: the publisher of the page</li>
- <li><code>{datetime-iso}</code>: the save date and time in the ISO format (e.g.
- "2018-09-15T22_38_26_317Z")</li>
- <li><code>{datetime-utc}</code>: the save date and time in UTC format (e.g. "Sat, 15 Sep 2018
- 22_38_26 GMT")</li>
- <li><code>{datetime-locale}</code>: the localized value of the date and time (e.g. "9_16_2018,
- 12_54_31 AM")</li>
- <li><code>{date-iso}</code>: the save date in the ISO format (e.g. "2018-09-15")</li>
- <li><code>{date-locale}</code>: the localized value of the save date (e.g. "16_09_2018")</li>
- <li><code>{time-iso}</code>: the save time in the ISO format (e.g. "22_38_26_317")</li>
- <li><code>{time-locale}</code>: the localized value of the save time (e.g. "00_38_26")</li>
- <li><code>{time-ms}</code>: the save time is ms since the Unix Epoch (e.g. 1563582018000)</li>
- <li><code>{day-utc}</code>: the day of the save date in UTC format (e.g. "15")</li>
- <li><code>{day-locale}</code>: the localized value of the day (e.g. "15")</li>
- <li><code>{month-utc}</code>: the month of the save date in UTC format (e.g. "09")</li>
- <li><code>{month-locale}</code>: the localized value of the month (e.g. "09")</li>
- <li><code>{year-utc}</code>: the year of the save date in UTC format (e.g. "2018")</li>
- <li><code>{year-locale}</code>: the localized value of the year (e.g. "2018")</li>
- <li><code>{hours-utc}</code>: the hour of the save date in UTC format (e.g. "20")</li>
- <li><code>{hours-locale}</code>: the localized value of the hour (e.g. "22")</li>
- <li><code>{minutes-utc}</code>: the minutes of the save date in UTC format (e.g. "38")</li>
- <li><code>{minutes-locale}</code>: the localized value of the minutes (e.g. "38")</li>
- <li><code>{seconds-utc}</code>: the seconds of the save date in UTC format (e.g. "31")</li>
- <li><code>{seconds-locale}</code>: the localized value of the seconds (e.g. "31")</li>
- <li><code>{visit-datetime-iso}</code>: the visit date and time in the ISO format (e.g.
- "2018-09-15T22_38_26_317Z")</li>
- <li><code>{visit-datetime-utc}</code>: the visit date and time in UTC format (e.g. "Sat, 15 Sep 2018
- 22_38_26 GMT")</li>
- <li><code>{visit-datetime-locale}</code>: the localized value of the date and time (e.g. "9_16_2018,
- 12_54_31 AM")</li>
- <li><code>{visit-date-iso}</code>: the visit date in the ISO format (e.g. "2018-09-15")</li>
- <li><code>{visit-date-locale}</code>: the localized value of the visit date (e.g. "16_09_2018")</li>
- <li><code>{visit-time-iso}</code>: the visit time in the ISO format (e.g. "22_38_26_317")</li>
- <li><code>{visit-time-locale}</code>: the localized value of the visit time (e.g. "00_38_26")</li>
- <li><code>{visit-time-ms}</code>: the visit time is ms since the Unix Epoch (e.g. 1563582018000)
- </li>
- <li><code>{visit-day-utc}</code>: the day of the visit date in UTC format (e.g. "15")</li>
- <li><code>{visit-day-locale}</code>: the localized value of the day (e.g. "15")</li>
- <li><code>{visit-month-utc}</code>: the month of the visit date in UTC format (e.g. "09")</li>
- <li><code>{visit-month-locale}</code>: the localized value of the month (e.g. "09")</li>
- <li><code>{visit-year-utc}</code>: the year of the visit date in UTC format (e.g. "2018")</li>
- <li><code>{visit-year-locale}</code>: the localized value of the year (e.g. "2018")</li>
- <li><code>{visit-hours-utc}</code>: the hour of the visit date in UTC format (e.g. "20")</li>
- <li><code>{visit-hours-locale}</code>: the localized value of the hour (e.g. "22")</li>
- <li><code>{visit-minutes-utc}</code>: the minutes of the visit date in UTC format (e.g. "38")</li>
- <li><code>{visit-minutes-locale}</code>: the localized value of the minutes (e.g. "38")</li>
- <li><code>{visit-seconds-utc}</code>: the seconds of the visit date in UTC format (e.g. "31")</li>
- <li><code>{visit-seconds-locale}</code>: the localized value of the seconds (e.g. "31")</li>
- <li><code>{url-href}</code>: the URL of the page (e.g. "http://example.com/category/index.html")
- </li>
- <li><code>{url-href-digest-sha-1}</code>: the SHA-1 hash value of the URL of the page (e.g.
- 4b826844d9f5c128533e4ff14d746334f3ac9e00)</li>
- <li><code>{url-href-flat}</code>: the URL of the page with replaced slashes (e.g.
- "http__example.com_category_index.html")</li>
- <li><code>{url-pathname}</code>: the path name of the URL (e.g. "category/index.html")</li>
- <li><code>{url-pathname-flat}</code>: the path name of the URL with replaced slashes (e.g.
- "category_index.html")</li>
- <li><code>{url-last-segment}</code>: the last part of the pathname (without the extension) or the
- host if not found (e.g. "index")</li>
- <li><code>{url-protocol}</code>: the protocol of the URL (e.g. "https")</li>
- <li><code>{url-host}</code>: the host name + the port of the URL (e.g. "example.com_8080")</li>
- <li><code>{url-hostname}</code>: the host name of the URL (e.g. "example.com")</li>
- <li><code>{url-hostname-suffix}</code>: the suffix of the host name of the URL (e.g. "com")</li>
- <li><code>{url-hostname-domain}</code>: the domain of the host name of the URL (e.g. "example")</li>
- <li><code>{url-hostname-root}</code>: the root of the host name of the URL (e.g. "example.com")</li>
- <li><code>{url-hostname-subdomains}</code>: the sub-domains of the host name of the URL (e.g.
- "sub" for "sub.example.com"), "www" is ignored</li>
- <li><code>{url-port}</code>: the port of the URL (e.g. "8080")</li>
- <li><code>{url-username}</code>: the user name of the URL (e.g. "john_doe")</li>
- <li><code>{url-password}</code>: the password of the URL (e.g. "qwerty123")</li>
- <li><code>{url-search}</code>: the search string of the URL (e.g. "order=ascending")</li>
- <li><code>{url-hash}</code>: the hash of the URL (e.g. "chapter-2")</li>
- <li><code>{url-referrer}</code>: the URI of the page that "linked" to the page (e.g.
- "http://example.com")</li>
- <li><code>{url-referrer-flat}</code>: the URI of the page that "linked" to the page with slashed
- replaced (e.g. "http_example.com")</li>
- <li><code>{bookmark-pathname}</code>: the path name of the newly created bookmark (e.g. "My
- Bookmarks/Last Month") when the option "Bookmarks > save the page of a
- newly created bookmark" is enabled</li>
- <li><code>{bookmark-pathname-flat}</code>: the path name of the newly created bookmark with replaced
- slashes (e.g. "My Bookmarks_Last Month") when the option "Bookmarks > save the page of a
- newly created bookmark" is enabled</li>
- <li><code>{tab-id}</code>: the unique identifier of the tab (e.g. "326")</li>
- <li><code>{tab-index}</code>: the index of the tab in the window (e.g. "1")</li>
- <li><code>{digest-sha-256}</code>: the SHA-256 hash value of the entire page content (e.g.
- e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)</li>
- <li><code>{digest-sha-384}</code>: the SHA-384 hash value of the entire page content</li>
- <li><code>{digest-sha-512}</code>: the SHA-512 hash value of the entire page content</li>
- <li><code>{profile-name}</code>: the name of the profile used to save the page</li>
- <li><code>{filename-extension}</code>: the extension of the filename depending on the file format
- (i.e. "html", "u.zip.html", "zip.html", "zip")</li>
- <li><code>{save-action}</code>: the action used to save the page (i.e. "page", "selection")</li>
- <li><code>{options-json}</code>: the JSON representation of the options used to save the page. Each
- property name is written in camel case (e.g. "blockScripts")</li>
- <li><code>{options-text}</code>: the text representation of the options used to save the page. The
- text representation is formatted with a list of options and their values separated by a line
- break (e.g. "saveRawPage: false\includeInfobar: true...")</li>
- </ul>
- </li>
- <li><a id="template-functions" href="#template-functions">Template functions</a>
- <p>The template functions are used to format values in the template or to insert values depending on
- parameters.</p>
- <p>The syntax of a function call is <code>%<em>function-name</em><<em>parameter</em>></code>.
- You can pass multiple parameters separated with a pipe character (e.g.
- "%<em>function-name</em><<em>parameter1</em>|<em>parameter2</em>>"). Like the template
- variables, you can limit the length of a dynamic value by adding <code>[<em>maxByteSize</em>]</code>
- or <code>[<em>maxCharSize</em>ch]</code> just after the function name.
- </p>
- <ul>
- <li><code>%if-empty<value|default></code>: returns the <code>default</code> value if
- <code>value</code> is empty (e.g. "%if-empty<{page-title}|Untitled>" to return "Untitled"
- if the page title is empty).
- You also can pass multiple values separated with a pipe character (e.g.
- "%if-empty<{page-title}|{page-heading}|Untitled>" to return the page heading if not empty,
- the page title if not empty or "Untitled" if both are empty).
- </li>
- <li><code>%if-not-empty<value|default></code>: returns the <code>default</code> value if
- <code>value</code> is not empty (e.g. "%if-not-empty<{page-title}({page-title})> to return
- the page title surrounded by parentheses if the page title is not empty).
- You also can pass multiple values separated like with the function <code>%if-empty</code>.
- </li>
- <li><code>%if-equals<value|expected|trueValue|falseValue></code>: returns the
- <code>trueValue</code> if <code>value</code> equals <code>expected</code> or the
- <code>falseValue</code> otherwise (e.g.
- "%if-equals<{page-title}|Untitled|{page-heading}|{page-title}>"
- to return the page heading if the page title equals "Untitled" or the page title otherwise).
- <li><code>%if-not-equals<value|expected|trueValue|falseValue></code>: returns the
- <code>trueValue</code> if <code>value</code> does not equal <code>expected</code> or the
- <code>falseValue</code> otherwise (e.g.
- "%if-not-equals<{page-title}|Untitled|{page-title}|{page-heading}>"
- to return the page title if the page title does not equal "Untitled" or the page heading
- otherwise).
- <li><code>%if-contains<value|expected|trueValue|falseValue></code>: returns the
- <code>trueValue</code> if <code>value</code> contains <code>expected</code> or the
- <code>falseValue</code> otherwise (e.g.
- "%if-contains<{page-title}|Untitled|{page-heading}|{page-title}>"
- to return the page heading if the page title contains "Untitled" or the page title otherwise).
- </li>
- <li><code>%if-not-contains<value|expected|trueValue|falseValue></code>: returns the
- <code>trueValue</code> if <code>value</code> does not contain <code>expected</code> or the
- <code>falseValue</code> otherwise (e.g.
- "%if-not-contains<{page-title}|Untitled|{page-title}|{page-heading}>"
- to return the page title if the page title does not contain "Untitled" or the page heading
- otherwise).
- </li>
- <li><code>%substring<value|start|end></code>: returns a substring of the <code>value</code>
- (e.g. "%substring<{page-title}|0|20>" to return the first 20 characters of the page
- title, "%substring<{page-title}|5>" to return the page title without the first 5
- characters).
- </li>
- <li><code>%lowercase<value></code>: returns the <code>value</code> in lowercase (e.g.
- "%lowercase<{page-title}>" to return the page title in lowercase).
- </li>
- <li><code>%uppercase<value></code>: returns the <code>value</code> in uppercase (e.g.
- "%uppercase<{page-title}>" to return the page title in uppercase).
- </li>
- <li><code>%capitalize<value></code>: returns the <code>value</code> with the first letter in
- uppercase (e.g. "%capitalize<{page-title}>" to return the page title with the first letter
- in uppercase).
- </li>
- <li><code>%replace<value|search|replacement></code>: returns the <code>value</code> with
- all <code>search</code> values replaced by <code>replacement</code> (e.g.
- "%replace<{page-title}| |_>" to replace all spaces by underscores in the page title).
- </li>
- <li><code>%repeat<value|count></code>: returns the <code>value</code> repeated
- <code>count</code> times (e.g. "%repeat<{page-title}|3>" to repeat the page title 3
- times).
- </li>
- <li><code>%index-of<value|search|fromIndex></code>: returns the index of the first occurrence
- of <code>search</code> in <code>value</code> (e.g. "%index-of<{page-title}|"Title">" to
- return the index of the first occurrence of the string "Title" in <code>page-title</code>).
- </li>
- <li><code>%last-index-of<value|search|fromIndex></code>: returns the index of the last
- occurrence of <code>search</code> in <code>value</code> (e.g.
- "%last-index-of<{page-title}|"Title">" to return the index of the last occurrence of the
- string "Title" in <code>page-title</code>).
- </li>
- <li><code>%length<value></code>: returns the length of the <code>value</code> (e.g.
- "%length<{page-title}>" to return the length of the page title).
- </li>
- <li><code>%trim<value></code>: returns the <code>value</code> with all leading and trailing
- whitespace removed (e.g. "%trim<{page-title}>" to remove all leading and trailing
- whitespace in the page title).
- </li>
- <li><code>%trim-left<value></code>: returns the <code>value</code> with all leading
- whitespace removed (e.g. "%trim-left<{page-title}>" to remove all leading whitespace in
- the page title).
- </li>
- <li><code>%trim-right<value></code>: returns the <code>value</code> with all trailing
- whitespace removed (e.g. "%trim-right<{page-title}>" to remove all trailing whitespace in
- the page title).
- </li>
- <li><code>%pad-left<value|length|pad></code>: returns the <code>value</code> with
- <code>pad</code> added to the left side so as to make the length of the <code>value</code> equal
- to <code>length</code> (e.g. "%pad-left<{page-title}|20|_>" to add underscores to the left
- side of the page title so as to make its length equal to 20).
- </li>
- <li><code>%pad-right<value|length|pad></code>: returns the <code>value</code> with
- <code>pad</code> added to the right side so as to make the length of the <code>value</code>
- equal to <code>length</code> (e.g. "%pad-right<{page-title}|20|_>" to add underscores to
- the right side of the page title so as to make its length equal to 20).
- </li>
- <li><code>%url-search-name<index></code>: the name of the search parameter at the specified
- index (e.g. "%url-search-name<0>" for the name of the first search parameter)
- </li>
- <li><code>%url-search-value<index></code>: the value of the search parameter at the specified
- index (e.g. "%url-search-value<0>" for the value of the first search parameter)
- </li>
- <li><code>%url-search-named-value<name></code>: the value of the search parameter with the
- specified name (e.g. "%url-search-named-value<id>" for the value of the search parameter
- "id")
- </li>
- <li><code>%url-segment<index></code>: the segment of the pathname at the specified index (e.g.
- "%url-segment<0>" for the first segment of the pathname)
- </li>
- <li><code>%url-hostname-subdomain<index></code>: the subdomain of the hostname at the
- specified index (e.g. "%url-hostname-subdomain<0>" for the first subdomain of the
- hostname)
- </li>
- <li><code>%stringify<value></code>: the string representation of the specified value (e.g.
- "%stringify<{page-title}>" for the string representation of the page title)
- </li>
- <li><code>%encode-uri<value></code>: the URI-encoded representation of the specified value
- (e.g. "%encode-uri<{page-title}>" for the URI-encoded representation of the page title)
- </li>
- <li><code>%decode-uri<value></code>: the URI-decoded representation of the specified value
- (e.g. "%decode-uri<{page-title}>" for the URI-decoded representation of the page title)
- </li>
- <li><code>%encode-uri-component<value></code>: the URI-encoded representation of the
- specified value (e.g. "%encode-uri-component<{page-title}>" for the URI-encoded
- representation of the page title)
- </li>
- <li><code>%decode-uri-component<value></code>: the URI-decoded representation of the
- specified value (e.g. "%decode-uri-component<{page-title}>" for the URI-decoded
- representation of the page title)
- </li>
- <li><code>%page-element-text<selector></code>: the text content of the first element matching
- the specified selector (e.g. "%page-element-text<h1>" for the text content of the first H1
- element)
- </li>
- <li><code>%page-element-attribute<selector|attribute></code>: the value of the specified
- attribute of the first element matching the specified selector (e.g.
- "%page-element-attribute<h1|class>" for the class attribute of the first H1 element)
- </li>
- <li><code>%date-locale<locales></code>: the localized value of the date and time (e.g.
- "%date-locale<en-US>" for the date and time in the US English format)
- </li>
- <li><code>%time-locale<locales></code>: the localized value of the time (e.g.
- "%time-locale<en-US>" for the time in the US English format)
- </li>
- <li><code>%datetime-locale<locales></code>: the localized value of the date and time (e.g.
- "%datetime-locale<en-US>" for the date and time in the US English format)
- </li>
- <li><code>%datetime-custom<locale|year|month|day|weekday|hour|minute|second|hour12|time-zone|fractional-seconds-digits|time-zone-name|era|locale-matcher></code>:
- the date and time formatted according to the specified locale and options. See below for the
- list of options. You can pass <code> </code> (space character) as a value to use the default
- value for an option. You can also omit options at the end of the list. For example, to format
- the date and time in the US English format with the year, day, and weekday, you can use
- "%datetime-custom<en-US|numeric| |numeric| |numeric>".
- <ul>
- <li><code>locale</code>: the locale to use as a BCP 47 language tag (e.g. "en-US")</li>
- <li><code>year</code>: the year format (i.e. "numeric", "2-digit")</li>
- <li><code>month</code>: the month format (i.e. "numeric", "2-digit", "narrow", "short",
- "long")
- </li>
- <li><code>day</code>: the day format (i.e. "numeric", "2-digit")</li>
- <li><code>weekday</code>: the weekday format (i.e. "narrow", "short", "long")</li>
- <li><code>hour</code>: the hour format (i.e. "numeric", "2-digit")</li>
- <li><code>minute</code>: the minute format (i.e. "numeric", "2-digit")</li>
- <li><code>second</code>: the second format (i.e. "numeric", "2-digit")</li>
- <li><code>hour12</code>: whether to use 12-hour time (i.e. "true", "false")</li>
- <li><code>time-zone</code>: the time zone of the IANA Time Zone Database (e.g. "UTC", "GMT",
- "EST", "PST", "America/New_York")</li>
- <li><code>fractional-seconds-digits</code>: the number of fractional second digits (i.e.
- "1" to "3")</li>
- <li><code>time-zone-name</code>: the time zone name format (i.e. "short", "long",
- "shortOffset", "longOffset", "shortGeneric", "longGeneric")</li>
- <li><code>day-period</code>: the day period (i.e. "narrow", "short", "long")</li>
- <li><code>era</code>: the era (i.e. "narrow", "short", "long")</li>
- <li><code>locale-matcher</code>: the locale matcher (e.g. "lookup", "best fit")</li>
- </ul>
- You can find more information about the options in the <a
- href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#parameters"
- target="_blank">DateTimeFormat constructor</a> documentation.
- </li>
- <li><code>%option-value<key></code>: the value of the specified option (e.g.
- "%option-value<displayInfobar>" for the value of the "displayInfobar" option)
- </li>
- </ul>
- </li>
- <li>
- <a id="external-messages">Integration with other extensions</a>
- <p>SingleFile can receive messages from other extensions. The messages must be sent to the extension ID
- of SingleFile and must be a string containing one of the following values:
- <ul>
- <li>
- <code>"save-page"</code>: save the current page
- </li>
- <li>
- <code>"edit-and-save-page"</code>: edit the current page in the annotation editor and save it
- </li>
- <li>
- <code>"save-selected-links"</code>: save all the links in the selected content
- </li>
- <li>
- <code>"save-selected-content"</code>: save the selected content
- </li>
- <li>
- <code>"save-selected-tabs"</code>: save the selected tabs
- </li>
- <li>
- <code>"save-unpinned-tabs"</code>: save the unpinned tabs
- </li>
- <li>
- <code>"save-all-tabs"</code>: save all the tabs
- </li>
- </ul>
- </p>
- </li>
- <li><a id="notes">Technical notes</a>
- <ul>
- <li>All images are converted into <a href="http://en.wikipedia.org/wiki/Base64"
- target="_blank">base64</a>. </li>
- <li>All resources except frame contents are injected in the document using <a
- href="http://en.wikipedia.org/wiki/Data_URI_scheme" target="_blank">data URI scheme</a>.
- </li>
- <li>Frame contents are injected as text in the document by using the srcdoc attribute. </li>
- </ul>
- </li>
- <li><a id="known-issues">Known issues</a>
- <ul>
- <li>All browsers
- <ul>
- <li>For security reasons, you cannot save pages hosted on https://chrome.google.com,
- https://addons.mozilla.org and some other Mozilla domains. When this happens, 🚫 is
- displayed on top of the SingleFile icon.</li>
- <li>For security reasons, SingleFile is sometimes unable to save the image representation of
- canvas and snapshots of video elements.</li>
- <li>The last saved path cannot be remembered by default. To circumvent this limitation,
- disable the option "Misc. > Save pages in background".</li>
- <li>The following characters are replaced with _ in filenames: ~, +, \, ?, %, *, :, |, ",
- <, >. This is done to maintain compatibility with various OSs and file systems.
- If you don't need that level of compatibility and know what you are doing, you can
- change the list of forbidden characters in
- <a href="https://github.com/gildas-lormeau/SingleFile/wiki/Hidden-options">Hidden
- options</a>.
- </li>
- </ul>
- </li>
- <li>Chromium-based browsers
- <ul>
- <li>You must enable the option "Allow access to file URLs" in the extension page to display
- the infobar when viewing a saved page, to save or to annotate a page stored on the
- filesystem.</li>
- <li>If the filename of a saved page looks like "56833935-156b-4d8c-a00f-19599c6513d3",
- disable the option "Misc. > Save pages in background". Reinstalling the browser may
- also fix this issue.</li>
- <li>Disabling the option 'File name > open the "Save as" dialog to confirm the file name'
- will work if and only if "Ask where to save each file before downloading" is disabled in
- chrome://settings/downloads</li>
- </ul>
- </li>
- <li>Firefox
- <ul>
- <li>The "File name > file name conflict resolution" option does not work if set to
- "prompt for a name".
- </li>
- <li>Sometimes, SingleFile is unable to save the contents of sandboxed iframes.</li>
- <li>When processing a page from the filesystem, external resources (e.g. images,
- stylesheets, fonts etc.) will not be embedded into the saved page.</li>
- </ul>
- </li>
- </ul>
- </li>
- <li><a id="unknown-issues">Troubleshooting unknown issues</a>
- <p>Please follow these steps if you find an unknown issue:</p>
- <ul>
- <li>Save the page in incognito.</li>
- <li>If saving page in incognito did not fix the issue, reset SingleFile options.</li>
- <li>If resetting options did not fix the issue, restart the browser.</li>
- <li>If restarting the browser did not fix the issue, try to disable all other extensions to see if
- there is a conflict.</li>
- <li>If there is a conflict then try to determine against which extension(s).</li>
- <li>Please report the issue <a href="https://github.com/gildas-lormeau/SingleFile/issues"
- target="_blank">here</a>
- with a short description on how to reproduce it.</li>
- </ul>
- <p>Suggestions are welcome :)</p>
- </li>
- <li><a id="contributors">Contributors</a>
- <ul>
- <li>Chinese translation done by yfdyh000 (<a href="https://github.com/yfdyh000"
- target="_blank">GitHub profile</a>), KrasnayaPloshchad (<a
- href="https://github.com/KrasnayaPloshchad" target="_blank">GitHub
- profile</a>), frostblazergit (<a href="https://github.com/frostblazergit"
- target="_blank">GitHub profile</a>), NightSharp (<a href="https://github.com/NightSharp"
- target="_blank">GitHub profile</a>), lqzhgood (<a href="https://github.com/lqzhgood"
- target="_blank">GitHub profile</a>) </li>
- <li>Traditional Chinese translation done by frostblazergit (<a
- href="https://github.com/frostblazergit" target="_blank">GitHub profile</a>), lqzhgood (<a
- href="https://github.com/lqzhgood" target="_blank">GitHub profile</a>)</li>
- <li>Dutch translation done by jooleer (<a href="https://github.com/jooleer" target="_blank">GitHub
- profile</a>)</li>
- <li>Dutch translation done by jooleer (<a href="https://github.com/jooleer" target="_blank">GitHub
- profile</a>)</li>
- <li>German translation done by womotroll (<a href="https://github.com/womotroll"
- target="_blank">GitHub profile</a>), bannmann (<a href="https://github.com/bannmann"
- target="_blank">GitHub profile</a>) </li>
- <li>Italian translation done by Fastbyte01 (<a href="https://github.com/Fastbyte01"
- target="_blank">GitHub profile</a>)</li>
- <li>Japanese translation, done by Shitennouji (四天王寺) (<a href="https://github.com/Shitennouji"
- target="_blank">GitHub profile</a>)</li>
- <li>Polish translation done by xesarni (<a href="https://github.com/xesarni" target="_blank">GitHub
- profile</a>)
- </li>
- <li>Portuguese translation done by @Blackspirits (<a href="https://github.com/Blackspirit"
- target="_blank">GitHub profile</a>)
- </li>
- <li>Portuguese-Brazilian translation done by @mezysinc, Blackspirits (<a
- href="https://github.com/Blackspirit" target="_blank">GitHub profile</a>)
- </li>
- <li>Russian translation done by rstp14 (<a href="https://github.com/rstp14" target="_blank">GitHub
- profile</a>), kramola-RU (<a href="https://github.com/kramola-RU" target="_blank">GitHub
- profile</a>), solokot (<a href="https://github.com/solokot" target="_blank">GitHub
- profile</a>)</li>
- <li>Spanish translation done by strel (<a href="https://github.com/strel" target="_blank">GitHub
- profile</a>)</li>
- <li>Turkish translation done by hbaklan943 (<a href="https://github.com/hbaklan943"
- target="_blank">GitHub profile</a>)</li>
- <li>Ukrainian translation done by perdolka (<a href="https://github.com/perdolka"
- target="_blank">GitHub profile</a>), gildas-lormeau</li>
- </ul>
- </li>
- <li><a id="icons">Icons</a>
- <ul>
- <li>Icon made by <a href="https://www.flaticon.com/authors/kiranshastry" title="Kiranshastry"
- target="_blank" s>Kiranshastry</a> from <a href="https://www.flaticon.com/" title="Flaticon"
- target="_blank">www.flaticon.com</a> is licensed by <a
- href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
- target="_blank">CC 3.0 BY</a> </li>
- </ul>
- </li>
- </ol>
- </div>
- <script type="module" src="../bg/ui-help.js"></script>
- </body>
- </html>
|