Commit Graph

47 Commits

Author SHA1 Message Date
tophf
ac4a420e2b ESLint: customize the rules; fix the issues 2017-04-18 12:46:23 +03:00
tophf
363f752934 Use messageBox in manage for confirm; partially revert c5741aff 2017-04-18 12:46:23 +03:00
tophf
4936426fa3 dom.js: extract common DOM functions 2017-04-18 12:46:22 +03:00
tophf
b51c264c8b confirmDelete: extract, refactor, use in manage 2017-04-18 12:46:22 +03:00
tophf
8bcd7f60c5 Restore implicit handleUpdate in saveStyle 2017-04-18 12:46:22 +03:00
tophf
b1c19bdf3d Import styles: show report with Undo button 2017-04-18 12:46:22 +03:00
tophf
a717e632c6 Expose tDocLoader.stop() to prevent unneeded observation 2017-04-18 12:43:30 +03:00
tophf
c1338e63d1 Highlight updated/saved style in manage page 2017-04-18 12:43:30 +03:00
tophf
2f4da37fdb Refactor and speed up popup & manager
Popup:
* Enforce 200-800px range for the popup width option

Manage:
* faster search via cachedStyles.byId
* faster restoration of search results on history nav
* style name is clickable and opens the editor
* animated highlight of style element on update/add/save
* expandable extra applies-to targets
* remember scroll position on normal history navigation
* boz-sizing in #header, also in editor
* applies-to targets use structured markup
* get*Tab*, enableStyle and deleteStyle are promisified
2017-04-18 12:43:29 +03:00
tophf
1dde91ea85 Global 'event' var is non-standard, FF doesn't support it 2017-04-18 12:43:29 +03:00
tophf
f4e689721a Improve style caching, cache requests too, add code:false mode
Previously, when a cache was invalidated and every tab/iframe issued a getStyles request, we previous needlessly accessed IndexedDB for each of these requests. It happened because 1) the global cachedStyles was created only at the end of the async DB-reading, 2) and each style record is retrieved asynchronously so the single threaded JS engine interleaved all these operations. It could easily span a few seconds when many tabs are open and you have like 100 styles.

Now, in getStyles: all requests issued while cachedStyles is being populated are queued and invoked at the end.

Now, in filterStyles: all requests are cached using the request's options combined in a string as a key. It also helps on each navigation because we monitor page loading process at different stages: before, when committed, history traversal, requesting applicable styles by a content script. Icon badge update also may issue a copy of the just issued request by one of the navigation listeners.

Now, the caches are invalidated smartly: style add/update/delete/toggle only purges filtering cache, and modifies style cache in-place without re-reading the entire IndexedDB.

Now, code:false mode for manage page that only needs style meta. It reduces the transferred message size 10-100 times thus reducing the overhead caused by to internal JSON-fication in the extensions API.

Also fast&direct getStylesSafe for own pages; code cosmetics
2017-04-18 12:43:28 +03:00
tophf
e807d41eb7 Refactor manage::codeIsEqual -> storage::styleSectionsEqual 2017-03-16 13:32:12 +03:00
tophf
38006847f7 Don't apply styles until import is finished 2017-03-16 13:32:12 +03:00
Jeremy Schomery
d6ec816ea9 adding options UI (fixes #22, #24) 2017-02-14 19:05:53 +03:30
narcolepticinsomniac
801c637d7e Update for backup 2017-01-30 14:22:28 -05:00
Jeremy Schomery
5623bca182 #1 follow up 2017-01-13 12:23:17 +03:30
Jeremy Schomery
c1ab447130 Removing sending info to Google Analytics 2017-01-11 15:34:44 +03:30
Jeremy Schomery
9582c65a84 import styles from Stylish extension 2017-01-11 15:25:38 +03:30
hideheader
3f46c60135 Updating from Style Manager failure
https://forum.userstyles.org/discussion/49688/chrome-my-userstyle-wont-get-updated
https://github.com/JasonBarnabe/stylish-chrome/issues/172

This is sufficient to make updates work again, but there are underlying problems.
2016-05-19 16:53:45 -04:00
Jason
5fb21f2816 Add opt-out for analytics and make it ping once per day 2016-03-23 21:38:15 -05:00
Jason
fa97a94494 Various performance improvements 2016-03-19 16:58:01 -05:00
Jason
2973cac28f Switch to IndexedDB #167 2016-03-06 20:27:17 -06:00
Jason
a01bdf7b5a chrome.extension.onMessage -> chrome.runtime.onMessage 2016-01-30 18:06:04 -06:00
Jason
d957cd1b3b chrome.extension.sendMessage -> chrome.runtime.sendMessage 2016-01-30 17:08:10 -06:00
tophf
d971bbda8a Remove unneeded "Pref" word from prefs methods 2015-10-15 00:34:47 +03:00
tophf
1f961b0993 Deprecate localStorage, refactor prefs 2015-10-15 00:34:46 +03:00
tophf
a9ff8c14f3 Fix jsonEquals() bug: actually compare the properties 2015-08-28 19:45:15 +03:00
tophf
4f61494e0d Move html templates to html file 2015-08-03 08:13:01 +03:00
tophf
67fe43e9a9 Editor: use history back for Back-To-Manage when appropriate 2015-06-10 17:18:13 +03:00
tophf
9cfa214d19 Manage: remember scroll position, initialize styles earlier 2015-06-10 12:20:37 +03:00
tophf
36a70fa612 Manager: search styles filter 2015-05-14 19:57:05 +03:00
tophf
8a407fc0f4 Manager: styleAdded event bugfix and code dedup
styleAdded event handler was trying to use 'installed' variable
that wasn't defined in the scope
2015-05-13 23:16:06 +03:00
tophf
a0c5674f6f Wait for background page to load on Chrome startup
At startup Chrome lazy-loads extension's background page,
thus occasionally breaking apply.js and Stylish own pages
2015-05-05 21:36:16 +03:00
tophf
0e6f63951a Localization: embed in html, autorun, apply earlier 2015-05-01 13:33:01 +03:00
tophf
3dd8eb1fc6 Manager: "Apply all updates" button 2015-03-20 17:29:48 +03:00
tophf
8e6e1f97b2 Manager: "Edit" button re-uses existing tabs, shift-click opens a new window 2015-03-20 17:29:47 +03:00
hideheader
222f970d23 [option] List actions before styles in the popup
Styles are listed before actions by default. Actions are listed before
styles if `popup.stylesFirst` is false. A control for the option is shown
in "Manage" if `popup.stylesFirstUI` is true.
2015-03-14 21:35:45 -04:00
hideheader
a0482d3f0b Listing filters for 'Manage'
Two independent filters. One allows only styles that are enabled, the
other allows only styles that were written locally (that is, styles
without an update URL).
2015-03-14 13:33:36 -04:00
hideheader
6ec65ab9e9 Use typed preference methods correctly
(1) `loadPrefs` was called with string instead of boolean
(2) Sense of boolean `popup.breadcrumbs.usePath` was inverted
(3) `loadPrefs` wasn't passing default to `getPrefs`
(4) `JSON.stringify(string)` added quotes to string
(5) Preferences `manage.enabledFirst`, `observer.observeFrameContent`, `observer.observeFrameLoad` aren't used
2015-03-07 02:53:33 -05:00
Jason Barnabe
a6616e5637 Fix defaulting of prefs 2015-02-17 13:50:51 -06:00
Jason Barnabe
d879b5e0c4 Add option for smart indentation in editor 2015-02-08 22:02:08 -06:00
Jason Barnabe
e5d50b02e7 Sort styles by name in manage 2015-01-30 11:32:14 -06:00
Jason Barnabe
16abc9c19d Convert to Unix linebreaks 2015-01-30 11:31:20 -06:00
Jason Barnabe
ecc3bf18a9 issue #4 Add option to hide number of enabled styles in active tab from toolbar icon 2014-02-07 20:04:06 -06:00
Jason Barnabe
6bf6cff755 issue 5 updates for styles with settings 2014-02-06 15:05:31 -06:00
Jason Barnabe
9270dc1596 issue 44 Stop using deprecated Chrome APIs 2012-08-19 20:14:33 -05:00
Jason Barnabe
b019038f57 initial commit 2012-04-15 20:56:12 -05:00