Marti Admin

Re: @hklene:

Now I found a way to pacify those warnings

Probably in relation to Licensing enforcement (comment).

If you could please have a look?

That server is returning something bizarre for the url at the @icon check.

See #1323.

I have temporarily suspended the automatic @icon check... this does still mean that if we see abuse with huge @icon values above and beyond the 256x256 resolution the default TOS action will apply... e.g. one risks their script and account termination. I put in the rejection so it didn't have to resort to this.

Thanks for the bug report... next time if you notice you are tripping the server please post on Development so it can be addressed quicker. Your current @icon fails to load client side as well.

Re: @hklene:

Is there some way to specify "GPL-3.0-or-later"

Excellent question and you are ahead of the game. ;) :)

Current SPDX static dependency (dep) is at SPDX v1.x. When jslicense/spdx-osi.json#2 is resolved then we'll be bumping up to SPDX v2.x to accommodate this. If you are on GitHub and are feeling generous with a brief moment of your time please go add a thumbs up on the issue so we can migrate.

In the meantime please use the older version of GPL-3.0+, with the "+" to visually indicate "-or-later". Auto-linker will point to the deprecated SPDX but that will change with SPDX v2.x. The actual license is not deprecated just the SPDX short identifier is.

When our deps are incremented to the latest then GPL-3.0+ (and GPL-3.0 and the like) will no longer be valid... but until then we are using the "old style" which just changed around January 2018.

What's interesting is if you read GPL and you don't specify a version it can be any version. SPDX doesn't cover this use case although it's probably a good thing since GPL-2.0 had issues with TiVo back in the day and that would open up a hole.

See also:

I've given you time to experiment with this .user.js... however the latest incarnation that has the function of runthis() is unacceptable.

Before the default TOS action is applied I would suggest that you:

  1. Delete the script
  2. If you need a test script name it as such instead of forking TopDownButtonsEverywhere. Initially you didn't have any of that Authors code in here but you do currently with 1.6+e9df704

If you fail to do this in a short amount of time your account is eligible for removal.

Thank you for your immediate cooperation,
OUJS Admin

One other thing... your script you posted about 3 hours ago isn't a .user.js and is a data structure for Ad blockers (contains no valid JavaScript). This isn't acceptable.

When I get done with some server reworks later today if it's not gone then you are since you've managed to violate the the TOS twice already.

How stupid is this?

Yes your subject and how you are presenting yourself is pretty much that.

Wouldn't it be logical that template stays,

That is a placeholder and not a template for the very inexperienced... open up another tab if you need that much assistance. Typing is a good thing to learn too.

Can't you make it stay on page

Hop to it... #1232.

Btw... choose your words wisely as to not conflict with the Terms of Service please.

Suggestions and pull requests for the site are welcome on Development.

Re: @AltoRetrato:

I'd rather receive an e-mail notification ... Is there any chance for this to be implemented?

Unlikely but not impossible. We would have to amend the TOS to collect email addresses.

A RSS feed ... would work as well... Is there any chance for this to be implemented?

Not in the near future but I personally would like to see that on Development. Read vs. unread could be handled by the client.

Next time if you plan on forking someones code please go to that script homepage, then click on Source Code tab... make your changes optionally or later... then click the "Submit Code as Fork" button and it will back link it automatically on your fork to that Authors.

Forward linking is currently fine how you did it if you so choose to do so on that original script.

It's been fixed on this script for now.

OUJS Admin

Give it a whirl now with the patch. Seems to work with your custom style of .meta.js being generated offsite. Let me know if you have any other issues.... although this issue should have been on Development for speedier response times. Good thing I checked here this evening otherwise you may have had a long wait time. :)

However before I go twiddle with that... the GH cache timing is an issue e.g. nothing that we can do about it. Slowing down fast commits to GH is required by them in their caching scheme otherwise they serve old source regardless of what is showing in HTML view.

Hmmm... webhook says it tried to deliver the .meta.js from GH. Interesting little glitch. Will try a patch in a bit.

Thanks for keeping comments for the licensing. Closing.

And now it's 1.9... above comment still stands though.

Not that this is needed as all known current .user.js engines already have update checking built in... your embedded update checker is showing version 1.8 as compared to this scripts @version which is currently 1.9.

You might consider just dropping that routine and utilizing @version when you want to trigger an update.

Thanks for the look,
OUJS Admin

Your other account is banned.

  1. If we see this script hitting our site every second this account will go away as well.
  2. If you post scripts that aren't yours and claim they are yours your account will go away.

If you wish to continue here be more respectful.

OUJS Admin

Re: @TheOpenUserNut:

... formal pull request ...

Sometimes that gets the attention better.

Could have also used this FAQ applied to this:

diff --git a/./Pandora_music_replay_and_download.user.js.original b/./Pandora_music_replay_and_download.user.js
index 70549c6..ae1637e 100644
--- a/./Pandora_music_replay_and_download.user.js.original
+++ b/./Pandora_music_replay_and_download.user.js
@@ -203,7 +203,7 @@ to {transform:rotate(360deg)}
             if (!audioURLs.contains(item.src)) {
-                renderAudioHTML(item.src,$("[data-qa='mini_track_title']").text(),$("[data-qa='mini_track_artist_name']").text(),$("[data-qa='mini_track_image']")[0].src);
+                renderAudioHTML(item.src,$("[data-qa='mini_track_title']").text(),$("[data-qa='mini_track_artist_name']").text(),$("[data-qa='mini_track_image']")[0].src,$("[data-qa='playing_album_name']").text());
@@ -217,6 +217,7 @@ to {transform:rotate(360deg)}
 <div class='audioinfo'>
 <div class='audiotitle'>${title}</div>
+<div class='audioalbum'>${album}</div>
 <div class='audioartist'>${artist}</div>
 <div class="audiofns">
 <div class="audiotrack">
@@ -285,4 +286,4 @@ to {transform:rotate(360deg)}
\ No newline at end of file

using the diff keyword after the first set of three backticks. Gives some fancy colorings including which lines were changed. :)

Re: @TheOpenUserNut:

Please remember to put any code in back ticks (` ... pair of these with code in between) or code fences (three back ticks on their own lines with the code in between... see this FAQ) so the author can see what you are talking about. You can always tap the Preview button to see how it will turn out.

The posting has been fixed for you.

OUJS Admin

Re: @Mottie:

I am forced to manually update my userscripts is because the GitHub hook doesn't work

Works for me. Are you sure you followed the instructions at /user/add/scripts#sync-script?

Your account looks fine with the Auth you provided and as you it imports just fine so that leaves whatever you have done on your GH account for the webhook.


Re: @glebm:

Unescaping and beautifying the bookmarklet this comes out to be:

(function () {
  function e(e, o, r) {
    const c = e.nodeValue.split("\t").map(e => e.split(" "));
    if (1 === c.length && 1 === c[0].length) return;
    const a = e.parentNode,
      d = t => {
        a.insertBefore(t, e)
    n(c, e => 1 === e.length && "" === e[0], e => d(t(o.repeat(e))), e => n(e, e => "" === e, e => d(t(r.repeat(e))), e => d(document.createTextNode(e)))), a.removeChild(e)

  function t(e) {
    const t = document.createElement("span");
    return t.textContent = e, = c, t

  function n(e, t, n, o) {
    const r = e.length;
    e.reduce((e, c, a) => {
      const d = t(c);
      return d && a !== r - 1 ? e + 1 : (e > 0 && n(e), d || o(c), 1)
    }, 0)
  var o = "·",
    r = "â",
    c = .8;
  ! function () {
    for (const t of document.querySelectorAll("table[data-tab-size]")) {
      const n = r.padEnd(+t.dataset.tabSize),
        c = document.createTreeWalker(t, NodeFilter.SHOW_TEXT, {
          acceptNode(e) {
            let t = e.parentNode;
            for (;
              "TABLE" != t.nodeName;) {
              if (t.classList.contains("blob-code-inner")) return t.firstChild !== e || " " !== e.nodeValue ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
              t = t.parentNode
            return NodeFilter.FILTER_SKIP
        a = [];
      for (; c.nextNode();) a.push(c.currentNode);
      for (const t of a) e(t, n, o)

... looks like the identifiers have been mangled and the code compressed. Bordering on the fine line between legible and obfuscation.

Re: @sizzle:

you should use a code block with syntax highlighting

@glebm did use a code fence however I added the js to see if it would highlight and it doesn't do well with bookmarklets (inspect the HTML rendered at the pre/code tags and it will have a class of lang-js if the highlighter tried) . I'm usually validating these as much as I can and created this FAQ entry for this exact reason.

I do agree that bookmarklets shouldn't be posted especially since most of the browsers are starting to or have blocked these. Maybe the beautify option on a new script can make it look pretty for validation... haven't tried yet.