Commit Graph

378 Commits

Author SHA1 Message Date
tophf
fefe82fd54 remove what-input, use own implementation, rebase on master 2017-12-13 03:27:10 +03:00
tophf
510ae91ac0 don't insert ­ before whitespace 2017-12-12 03:18:37 +03:00
tophf
3410a58cd9 don't add ­ on word boundaries and strip it from tooltips
addresses #300
2017-12-11 22:39:22 +03:00
tophf
d035e18b9f expose responseType in download() 2017-12-10 10:11:19 +03:00
tophf
b2b82f8310 break shorter words (5-10) followed by punctuation in tWordBreak 2017-12-10 10:11:18 +03:00
tophf
0a865318a4 popup: "configure" opens USO page and expands the settings area 2017-12-10 07:56:41 +03:00
tophf
4b207f3dd4 basic tweaks/fixes for inline search 2017-12-10 04:03:04 +03:00
tophf
36fcb02b51 auto-unsubscribe prefs observer when element is gone 2017-12-09 17:38:00 +03:00
tophf
18b20d13be onDOMscriptReady: notify all matching subscribers 2017-12-08 21:55:08 +03:00
tophf
1c68ac1a3a initialize editor page fully in First Meaningful Paint frame
* previously it wasn't the case when colorpicker option was enabled
* the cost of always loading colorview is ~1ms for >200ms here
2017-12-08 06:20:56 +03:00
tophf
99cce55a8e ensure long words break before breaking the layout
supersedes 40075a0d
2017-12-07 23:21:27 +03:00
tophf
f40dc29497 add rudimentary reject/catch for mozParser inside worker 2017-12-07 08:41:52 +03:00
tophf
e4e8f04c95 code cosmeticsiv 2017-12-07 06:54:51 +03:00
tophf
fb3138f700 add .vivaldi class on <html> 2017-12-07 06:52:43 +03:00
tophf
543132aafa auto-apply on changes - new option in usercss config 2017-12-06 23:33:48 +03:00
tophf
f337e18515 recognize usercss @updateURL
* installation URL is preferred - same behavior as before

* @updateURL is used when the style was drag'n'dropped into the manage page
  because there's no real URL in this case

* install-usercss page shows the new update URL, which is set as per the above,
  under the checkbox that enables updates
2017-12-06 22:35:19 +03:00
tophf
1273903b05 import usercss files drag'n'dropped into the manage page 2017-12-06 11:03:43 +03:00
tophf
03b6f6c263 manage: search regexps, add search help, fix favicons toggle icon
* the toggle icon is now a triangle, rotated when open
2017-12-06 09:39:45 +03:00
Rob Garrison
db621b8657 Manage: Make filter & backup containers collapsible 2017-12-06 00:09:56 +03:00
tophf
a6f63d096e extract checkboxes to global.css, fixes 2017-12-05 04:39:29 +03:00
tophf
dd05955a38 fixup d97337de: preceding comment may be absent 2017-12-04 20:12:47 +03:00
tophf
c0c60fb7a2 add a terse invocation syntax for $element and rename it to $create 2017-12-04 08:57:12 +03:00
tophf
39a521fb80 FF: don't style checkboxes in FF < 54, not 57
See #271
2017-12-03 07:59:41 +03:00
tophf
e6e762505f FF: don't style checkboxes in FF < 57 2017-12-03 07:07:43 +03:00
tophf
55564b543a replace 'about:blank' tabs in openURL() 2017-12-03 02:44:20 +03:00
tophf
6704956b22 fixup 0de69e30: avoid passing falsy selectors to $() 2017-12-02 21:41:28 +03:00
tophf
0de69e306d code refactor: add $.remove() and $$.remove() 2017-12-02 19:54:54 +03:00
tophf
f5516db8f4 off-load mozParser to a worker 2017-12-01 02:35:56 +03:00
tophf
9c3229717f fixup d660e6bd: off-by-1 in parseStringUnquoted 2017-12-01 00:23:06 +03:00
tophf
a61ee5f093 fixup 362d9444: autoscroll manage page only during incremental search 2017-11-30 01:13:13 +03:00
tophf
6f0dd5e9b6 fixup 362d9444: never scroll manage page on toggling a visible entry 2017-11-30 00:54:40 +03:00
tophf
189342472e manage: collapsible #options block 2017-11-29 19:27:31 +03:00
tophf
362d944428 manage: incremental search on typing + up/down arrows 2017-11-29 17:59:02 +03:00
tophf
cbe90272b9 silence some useless warnings in console 2017-11-29 17:59:01 +03:00
tophf
d660e6bd72 usercss validator: more precise error position report 2017-11-27 14:54:18 +03:00
tophf
13d7e30a75 usercss saving: display errors from mozparser in <pre> 2017-11-27 06:55:12 +03:00
tophf
8d3fd9cc3b fixups for a58f42de (backtick) and 05677d93 (copy changed meta) 2017-11-27 03:19:31 +03:00
tophf
23efcb1db8 usercss: inform when the entire metadata block is missing/invalid 2017-11-26 21:13:54 +03:00
tophf
0d80177691 accept xhr options in download(url, options)
also fixup d1964bbc: an error should reject with a code, not XHR's ProgressEvent
2017-11-26 21:09:29 +03:00
tophf
a58f42dee0 usercss editor: save as template when @name is empty
* reduced the flickering on page open
* show * in title for new styles
* align the values in the default template
* don't ask to save an untouched template
* don't spam the console with errors
* trivial code refactor and cosmetics
2017-11-26 18:43:40 +03:00
tophf
0e518bddcb don't add usercss vars to empty sections 2017-11-26 04:52:14 +03:00
tophf
6aef6cdcd7 0 is a valid tab id 2017-11-25 20:24:15 +03:00
tophf
978e5ca9f0 sendMessage()
Promise mode [default]:
  - rejects on receiving {__ERROR__: message} created by
    background.js::onRuntimeMessage
  - suppresses chrome.runtime.lastError
    by browserAction.setText which lacks a callback param in chrome API

Callback mode:
  - enabled by passing a second param
  - doesn't suppress chrome.runtime.lastError
2017-11-25 18:00:38 +03:00
tophf
8f04e17d27 fix #223 - Android compatibility 2017-11-25 16:25:20 +03:00
tophf
d97337ded7 fix mozImport: properly discern comments outside of @-moz-document 2017-11-24 13:19:16 +03:00
tophf
479d95711b linter report expands/collapses on click; the state is saved 2017-11-24 13:19:15 +03:00
tophf
fe3b1511f6 add "[x] only Usercss" filter in the manager 2017-11-24 13:19:12 +03:00
tophf
b99391887d add colorpicker hotkey config icon [default: none]
* uses the last submitted color by default
* doesn't insert the default color until a change or the Enter key
* fix a few bugs in colorpicker introduced in the rewrite
2017-11-24 13:19:06 +03:00
tophf
37a62b0407 fix/rewrite/integrate colorpicker
* full rewrite of colorview.js to make it 10-100 times faster (render on demand via extendMode)
* full rewrite of colorpicker.js to simplify CSS
* automatic light/dark theme based on current color of the editor
* fixes, tweaks, speedups
* color spot will always be on the left of its text i.e. no line break on wrapping
* support #RRGGBBAA and #RGBA hex colors
* support "transparent" as rgba(0, 0, 0, 0)
* HEX/hex toggle
* fix HSLA regexp
* Esc/Enter key to close
* innerHTML -> textContent
* toggle the feature correctly
* fade out before autohiding
* always show alpha 1 like devtools does
* set cursor:pointer only on the clickable part of the sliders
* bigger color format switcher with a tooltip
* autofocus input on open, disable spellcheck
* try not to obscure the source color spot & text
* restore focus without scrolling
2017-11-20 15:19:58 +03:00
tophf
10ce4eeefa prefs.subscribe: allow multiple listeners for one key 2017-11-19 15:55:35 +03:00
tophf
9689288bdc new editor option: autoclose brackets/quotes [default: off] 2017-11-17 02:36:05 +03:00
tophf
0ed37c2667 popup: add side borders in Chrome 62+
fixes #226
2017-11-14 11:20:49 +03:00
tophf
94ed435e75 fixup d2b9b302: prevent setting version var to 'undefined' 2017-11-14 11:12:18 +03:00
tophf
3c08342e98 open usercss installer tab next to the source tab 2017-11-14 09:38:08 +03:00
tophf
417d6855ff remove backtrackTo and trimNewLines from mozParser
* backtrackTo is not needed since 2e86c958
* trimNewLines does exactly the same as trim()
2017-11-14 09:24:38 +03:00
tophf
70a827b033 dd69e1e5 followup + handle empty at-values
see #235
2017-11-14 08:55:53 +03:00
tophf
1d463d7820
Merge pull request #134 from eight04/dev-user-css
Install styles from *.user.css file
2017-11-14 08:22:56 +03:00
eight
d02984ee2a Add: expose parseError.index 2017-11-09 15:53:09 +08:00
eight
988a920a2f Fix: use getOwnTab in closeCurrentTab 2017-11-09 14:11:26 +08:00
eight
7842ac752a i18n: styleMetaErrorPreprocessor 2017-11-09 09:12:15 +08:00
eight
09e7d67dd2 Refactor: buildMeta 2017-11-09 09:12:15 +08:00
eight
a1b818f0c5 Fix: invalid default value for dropdown 2017-11-09 09:12:15 +08:00
eight
f86d0fc2e7 Fix: use sticky flag to avoid slicing string 2017-11-09 09:12:15 +08:00
eight
6358162bec Fix: createOption in one line 2017-11-09 09:12:15 +08:00
eight
3a78681d9e Fix: use .map to build varDef 2017-11-09 09:12:14 +08:00
eight
95e3ba13cd Fix: newStyleInUsercss -> newStyleAsUsercss 2017-11-09 09:12:14 +08:00
eight
0c292c3150 Fix: download should throw status code 2017-11-09 09:12:14 +08:00
eight
5f5b06b10c Fix: use FIREFOX variable 2017-11-09 09:12:14 +08:00
eight
2b614bdee2 Fix: dom.js is not a content script anymore 2017-11-09 09:12:13 +08:00
tophf
d2b9b30239 reliable userAgent detection in FF before 57
fixes #228
2017-11-08 06:53:36 +03:00
eight
5a9f78e2ac Add: key:label syntax in var select 2017-11-04 08:38:17 +08:00
eight
db1643e9b8 Refactor: pull out colorParser 2017-11-01 11:18:13 +08:00
eight
71a1c5e18a Fix: old -> oldStyle 2017-11-01 11:17:01 +08:00
eight
f35fbb5b36 Fix: add styleMetaErrorSelectValueMismatch 2017-11-01 11:17:01 +08:00
eight
45e70b2b6a Fix: use Array.isArray 2017-11-01 11:17:01 +08:00
eight
79b6266cf9 Fix: no new line before use strict 2017-11-01 11:13:57 +08:00
eight
62748b3b79 Fix: use arrow function for IIFE 2017-10-30 01:22:10 +08:00
eight
7c2248933a Change: let makeLink accept object 2017-10-15 02:59:55 +08:00
tophf
721dfc4787 export: create blob directly
fixes #211
2017-10-14 04:25:54 +03:00
eight
54076d9f17 Merge branch 'master' of https://github.com/openstyles/stylus into dev-user-css 2017-10-12 16:28:18 +08:00
eight
40ad7837fc Change: allow makeLink to append child. Add rel=noopener 2017-10-12 16:12:34 +08:00
eight
eec52ad239 Revert "Add: detail dialog. Move makeAuthor to dom.js. Move external.svg into"
This reverts commit 5b701d06ad.
2017-10-12 16:10:17 +08:00
eight
5b701d06ad Add: detail dialog. Move makeAuthor to dom.js. Move external.svg into
images.
2017-10-11 14:52:42 +08:00
eight
3906060aef Add: multi-line string syntax 2017-10-09 02:45:26 +08:00
eight
4115705d8f Fix: uso replace doesn't work on var select 2017-10-09 02:45:11 +08:00
eight
c0378e3f05 Fix: uso preprocessor infinite recursion 2017-10-09 02:44:17 +08:00
eight
77b6b6c857 Change: drop looseJSONParse 2017-10-09 01:03:51 +08:00
eight
a901ca29c1 Add: allow array in var select 2017-10-09 00:59:10 +08:00
eight
cd00c20fa4 Fix: newStyleFormat -> newStyleInUsercss 2017-10-09 00:52:05 +08:00
eight
3cb1943648 Add: newStyleFormat option 2017-10-08 23:26:23 +08:00
eight
fc51d806da Fix: force using stylelint when editor mode is not css 2017-10-07 18:00:25 +08:00
eight
56e669fbcf Fix: normalize version 2017-10-06 17:09:28 +08:00
eight
c0514a6699 Change: default linter 2017-10-06 16:33:49 +08:00
tophf
0978308325 openerTabId added in FF57: https://bugzil.la/1238314 2017-09-30 02:40:01 +03:00
tophf
bf9ebab295 extract browser version instead of boolean 2017-09-30 02:32:05 +03:00
eight
7365a8bada Fix: various fixes 2017-09-25 18:43:55 +08:00
eight
d1964bbc16 Fix: make download be able to read file: 2017-09-19 08:51:55 +08:00
eight
1e9ee786ea Fix: normalize new line 2017-09-18 08:16:11 +08:00
eight
aed3698c74 Fix: looseJSONParse doesn't work on chrome 49 2017-09-16 10:14:24 +08:00
eight
a0495f466f Change style structure 2017-09-16 10:14:23 +08:00
eight
eaf33afbe3 Rewrite parser, add uso preprocessor 2017-09-15 13:40:04 +08:00
eight
70bbc08ee0 Add editor.appliesToLineWidget option 2017-09-14 09:58:22 +08:00
eight
2ba4c4f11b Fix: remove debounce dependency 2017-09-14 09:15:58 +08:00
eight
97fd2aa083 Compat: firefox 2017-09-13 23:35:34 +08:00
eight
b61b058824 Fix: pull out makeLink 2017-09-13 17:34:27 +08:00
eight
2342cc50e9 fixup! Fix: rewrite loadScript, merge onDOMscripted, injectCSS, injectScript 2017-09-12 23:19:55 +08:00
eight
2506b957f8 Fix: rewrite loadScript, merge onDOMscripted, injectCSS, injectScript 2017-09-12 23:19:16 +08:00
eight
23bd3e2cc7 fixup! Fix: err -> e 2017-09-12 20:48:03 +08:00
eight
6b1d6564fb Fix: drop pad 2017-09-12 20:44:12 +08:00
eight
8e5ffd036f Fix: use rgb() when alpha === 1 2017-09-12 20:29:09 +08:00
eight
a3f26d89b8 Fix: _parse -> parseRGB 2017-09-12 20:25:59 +08:00
eight
e3c3dcc1ff Fix: use .map to build vars 2017-09-12 20:24:25 +08:00
eight
51e92e5a7b Fix: use IIFE for try-catch in tDocLoader 2017-09-12 20:08:09 +08:00
eight
431dbdc81c Fix: remove escapeHtml completely 2017-09-12 20:03:24 +08:00
eight
d4ddefe8a0 Merge branch 'master' of https://github.com/openstyles/stylus into dev-user-css 2017-09-12 03:40:56 +08:00
eight
41f0174362 Add: valid url 2017-09-12 02:46:37 +08:00
eight
3730a4e483 Fix: i18n and escapeHtml, url 2017-09-12 02:32:27 +08:00
eight
381ee88e94 Fix: i18n error message 2017-09-12 01:48:10 +08:00
eight
f305719db3 Fix: update progress 2017-09-12 01:23:32 +08:00
eight
8bc6986cac Change: make unknown preprocessor throw 2017-09-12 00:10:27 +08:00
eight
3daff40acf Add: vars validation 2017-09-09 19:29:35 +08:00
eight
4e0f4b34bb Add: colorParser 2017-09-07 01:51:27 +08:00
eight
1f44898475 Add: adopt node-semver 2017-09-06 03:08:03 +08:00
eight
78264a1c34 Add: parse more metas, add variable type 2017-09-05 18:48:18 +08:00
tophf
36d790e0c2 improve CSS transition suppression on own pages in FF 2017-09-04 01:05:32 +03:00
tophf
09010c20a6 enqueue stuff dependent on DB decision 2017-09-03 21:25:19 +03:00
tophf
53aa239da3 fallback to chrome.storage when IndexedDB is dysfunctional 2017-09-03 20:06:42 +03:00
tophf
ea8eaf3146 swap parameters in prefs.subscribe 2017-09-03 20:06:30 +03:00
tophf
7a50387d35 fixup cd6bcc65: read BG.localStorage dummy properly 2017-09-03 20:06:30 +03:00
tophf
1d1d0453e1 code cosmetics to silence eslint 2017-09-02 19:32:12 +03:00
eight
0e5ab44f67 Fix: remove message.js dependency from localization.js 2017-09-01 18:21:01 +08:00
tophf
d3b7b45452 editor: toggle #options block upon clicking its title 2017-09-01 12:49:09 +03:00
eight
8607d779f9 Change how var is saved 2017-09-01 14:38:46 +08:00
eight
9c2acd5cc9 Fix: remove unused variable 'event' 2017-09-01 14:36:13 +08:00
tophf
85a5702fe0 refactor lint report stuff, use $element 2017-08-31 23:19:43 +03:00
tophf
fa5ebb8958 use callbacks in animateElement to avoid re-animation 2017-08-31 13:42:30 +03:00
eight
81f490c34d Fix: csslint is moved 2017-08-30 17:41:07 +08:00
eight
7b9348a545 Fix: better error message 2017-08-30 17:40:19 +08:00
eight
dece4b57f3 Add: install styles from *.user.css file
Fix: handle dup name+namespace

Fix: eslint eqeqeq

Fix: trim @name's spaces

Add: check update for userstyle

Add: build CSS variable

Fix: only check dup when id is not provided

Refactor: userStyle2json -> userstyle.json

Add: style for input

Add: config dialog

Fix: preserve config during update

Fix: onchange doesn't fire on keyboard enter event

Fix: remove empty file

Add: validator. Metas must stay in the same line

Add: warn the user if installation failed

Fix: add some delay before starting installation

Add: open the editor after first installation

Fix: add openEditor to globals

Fix: i18n

Add: preprocessor. Move userstyle.build to background page.

Fix: remove unused global

Fix: preserved unknown prop in saveStyleSource() like saveStyle()

Add: edit userstyle source

Fix: load preprocessor dynamically

Fix: load content script dynamically

Fix: buildCode is async function

Fix: drop Object.entries

Fix: style.sections is undefined

Fix: don't hide the name input but disable it

Fix: query the style before installation

Revert: changes to editor, editor.html

Refactor: use term `usercss` instead of `userstyle`

Fix: don't show homepage action for usercss

Refactor: move script-loader to js/

Refactor: pull out mozParser

Fix: code style

Fix: we don't need to build meta anymore

Fix: use saveUsercss instead of saveStyle to get responsed error

Fix: last is undefined, load script error

Fix: switch to moz-format

Fix: drop injectContentScript. Move usercss check into install-user-css

Fix: response -> respond

Fix: globals -> global

Fix: queryUsercss -> filterUsercss

Fix: add processUsercss function

Fix: only open editor for usercss

Fix: remove findupUsercss fixme

Fix: globals -> global

Fix: globals -> global

Fix: global pollution

Revert: update.js

Refactor: checkStyle

Add: support usercss

Fix: no need to getURL in background page

Fix: merget semver.js into usercss.js

Fix: drop all_urls in match pattern

Fix: drop respondWithError

Move stylus -> stylus-lang

Add stylus-lang/readme

Fix: use include_globs

Fix: global pollution
2017-08-30 17:29:41 +08:00
tophf
b91324992d skip already queued in onDOMscripted 2017-08-29 17:14:57 +03:00
tophf
e65e3c9c0b fixup efc001c0: css_beautify is dodgy 2017-08-29 14:28:59 +03:00
tophf
5330db11af FF: ignore lastError in sendMessage where irrelevant 2017-08-28 15:20:38 +03:00
tophf
cd6bcc6511 FF: when not dom.storage.enabled use dummies 2017-08-28 15:20:38 +03:00
tophf
777fc06834 FF: avoid reloading if dysfunctional 2017-08-28 15:20:37 +03:00
tophf
9946f3c781 regroup some of lint* data and code
* all lint-related js files are prefixed by lint-
* config-related stuff is grouped in linterConfig
* CM helper is rewritten and moved in /edit now that CSSLint supports these features
* chromeSync methods that apply LZString got LZ in their names
* empty string is used for 'disabled' in linter selector
2017-08-28 15:20:37 +03:00
Rob Garrison
487bb53145 Use optimal DOM selection functions
Reverts part of 7046d48cf9d574
2017-08-27 17:20:46 -05:00
Rob Garrison
8dc2115347 Revert no-inline-comments (2ea5a3bbaa2fdb0a) 2017-08-27 17:20:46 -05:00
Rob Garrison
afc38b0bc8 update element selectors in all files 2017-08-27 17:20:46 -05:00
Rob Garrison
d563495c26 Fix no-inline-comments issues 2017-08-27 17:20:45 -05:00
Rob Garrison
80ed34f3e7 Use correct multi-line statement formatting 2017-08-27 17:20:45 -05:00
Rob Garrison
014adf8d8a Fix linting issues with injection code 2017-08-27 17:20:43 -05:00
Rob Garrison
3c160a3fa5 Add script/link injection code 2017-08-27 17:20:43 -05:00
Rob Garrison
dfa71f699e Add linter select option 2017-08-27 17:20:42 -05:00
tophf
80ff6f6832 fixup 8976bd58: specify parent to avoid deadzoning 2017-08-27 14:30:39 +03:00
tophf
320ea3485a hyphenate blocked-info in FF 2017-08-27 13:02:58 +03:00
tophf
90ab2959a6 abandon automatic translation in CSS
* it fails with some languages in some versions of FF
* it's not as flexible as HTML templates
* we were only using it for a few messages
2017-08-27 13:02:17 +03:00
tophf
243da0b0d1 fix opening own pages from an incognito window popup in Chrome 2017-08-26 15:57:33 +03:00
tophf
8976bd58b8 inform when dysfunctional due to FF options 2017-08-26 15:34:27 +03:00
tophf
64ba125601 manage: add inverted filters (disabled, external) 2017-08-22 17:24:44 +03:00
tophf
21b2ba572b tHTML: handle mixed text/element nodes in top level 2017-08-18 17:00:06 +03:00
tophf
815f8ca959 also find styles for URLs with stripped #hash
kinda fixes #155

as per spec the fragment portion is ignored in @-moz-document:
https://www.w3.org/TR/2012/WD-css3-conditional-20120911/#url-of-doc
but we still respect url("foo#hash") set in userstyles
because the spec is outdated and doesn't account for SPA sites

collateral damage: simplified URLS.supported()
2017-08-18 13:18:19 +03:00
tophf
aded4f7c01 display full text in tooltips of ellipsized buttons 2017-08-18 10:25:35 +03:00
tophf
1ca68b8488 fixup ede1187b: settings may be missing 2017-08-16 21:44:59 +03:00
tophf
ede1187b31 popupWidth setting isn't a special sync case anymore 2017-08-13 17:33:57 +03:00
tophf
30c19cf64e fixup 860443b9: BG can point to itself 2017-08-04 12:42:34 +03:00
tophf
860443b909 ensure getBackgroundPage is fully loaded 2017-07-29 08:17:49 +03:00
tophf
3b49d83616 In Chrome 61.0.3161+ NTP can't be styled anymore 2017-07-23 12:42:34 +03:00
Jeremy Schomery
7affeedd3b removing tE() 2017-07-22 12:56:37 +03:00
Jeremy Schomery
332f95e1ff i18n-html to i18n-text if possible. tNodeList now parses HTML content using tHTML 2017-07-22 12:56:37 +03:00
Jeremy Schomery
0955fc852c removing a few more innerHTMLs 2017-07-22 12:56:28 +03:00
tophf
12d67fda6c fixup 312424ff: process multiple top-level elements in tHTML 2017-07-22 12:56:28 +03:00
Jeremy Schomery
61971b97c8 tHTML uses parseFromString instead of innerHTML. showHelp now uses tHTML 2017-07-22 12:56:28 +03:00
tophf
b50c19a802 editor import: warn about invalid -moz-document functions
* fixes #118
* alleviates #116 by switching showRegExpTester() from innerHTML to DOM
2017-07-19 15:09:29 +03:00
Rob Garrison
417e3b5de3 Add eqeqeq definition to eslint 2017-07-16 13:07:21 -05:00
Rob Garrison
4cbd48b9f9 Rename options.html & fix path 2017-07-14 03:25:33 -05:00
Rob Garrison
ac91e25eb4 Move messaging.js file & references 2017-07-13 19:52:40 -05:00
Rob Garrison
0037c699d9 Fix eslint issues 2017-07-12 16:26:21 -05:00
Rob Garrison
7a9d629ec8 Restructure folders 2017-07-12 16:26:20 -05:00