Code Monkey home page Code Monkey logo

iitc-button's People

Contributors

404links2 avatar adarny avatar aokie avatar bznein avatar d64134n0 avatar dzmitry-babak-idf avatar gysghost avatar handatakuya avatar izluis avatar ko-la avatar lan0vsky avatar lionsapporo avatar lordmichael94 avatar lucka-me avatar mariuszu avatar maxetmoritz avatar mcben avatar metlee avatar modos189 avatar mvolfik avatar purkkakoodari avatar ravidor avatar relationlife avatar sarenking avatar suburbanno avatar swantzter avatar szhigunov avatar tarmn3 avatar terrance avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

iitc-button's Issues

Unable to turn off external plugins

I use external plugins with IITC button (mainly @AlfonsoML button for Pogo s2 cells) because I play both PoGo and Ingress. In PoGo mode, I do want those tools, because they're extremely useful. However, when I'm planning links and looking at unclaimed portals for the latest event (lol), I don't want a zillion stops/gyms showing up everywhere. On mobile IITC I just disable the plugin for now and re-enable it, but I can't seem to turn the plugin on or off.

I'm on Chrome on MacOS.

Multiple pinned ingress tabs

When I relaunch browser - all previously opened tabs restored, including pinned Ingress.
And then if I try to open ingress tab from IITC-Button - I get another pinned tab.

pogo-s2 plugin isn't working with IITC-Button on Chrome

This plugin works just fine with IITC-CE inside of tampermonkey, but doesn't appear to even try to load when it's inside of IITC-Button.

The plugin is here: https://gitlab.com/AlfonsoML/pogo-s2

The plugin has a few Pokemon Go centric features, such as flagging a portal as a Gym or Pokestop, being able to overlay S2 cells of adjustable sizes, and highlight S2 Cells that are full and cannot accept any new submissions.

Reporting issue on both repos because I'm not sure where the issue actually is.
Issue on their repo: https://gitlab.com/AlfonsoML/pogo-s2/issues/40

RFE: update indicator, notification, and history view

This is a suggestion / request for enhancement. IITC-Button provides an update mechanism for plugins. To keep user informed and aware of ongoing enhancements and possible changes to plugin behaviors, the IITC-Button could provide both a visual indicator that plugins have been recently updated and a view to show update history where ideally one could read relevant changelog entry. This could have downstream benefit of improving bug reports from users by more accurately identifying version of plugin issue is occurring with and if it started after a recent update or not.

Possibility to support Safari

The web extension APIs were delivered with Safari 14 for macOS in WWDC20, and Safari 15 for iOS / iPadOS in WWDC21. Now it is possible to build IITC-Button for Safari with:

  • All the existing code, npm run build as usual
  • A new Xcode project:
    1. Add Safari Extension target for both macOS and iOS
    2. Add the output files in ./dist to the Safari Extension targets
    3. Build & run the project and enable extension in Safari
  • Some modifications to the existing code, because:
    • Safari for iOS does not support persistent background
    • Safari for macOS seems to calculate the size of popups with its elements instead of the viewport

I've forked the repo, made some changes and added the Xcode project to support-safari branch, it works so far.

But I have some questions:

  • I'm not familiar with web extension, will those modifications break the Firefox and Chrome version?
  • The source code is licensed under GPLv3, is App Store compatible with it?

Hope we can discuss it!

Hot to uninstall external plugins

There is a button to delete external plugins but it doesn't seem to work as expected (like removing the plugin 😉)

When I click the button it tells me that the changes will be applied after rebooting IITC. But this does not happen - how to reboot IITC?? 😕

The extension generates many js errors

Compared to the way that IITC works with Tampermonkey, I guess that this extensions injects the code later or is missing some extra clean up because the original intel keeps running and it generates errors on page load and then on every click on the page.
Opening the js console is enough to check this.
The problem affects both Chrome and Firefox
imagen

More tools to work with external plugins

I'd like to have such possibilities:

  1. See extended info about installed plugins:
  • metainfo (version, urls)
  • source code (or possibility to save it as file)
  1. Add plugin by url
    Actually, it's possible now (i can paster url directly in file chooser), I'd prefer more obvious way, like special input field.

  2. Delete plugin

Working with local webserver

I propose following enhancements:

  • Work without meta.json
    In this case use meta from stable build.
  • Do not download (GET) files to check if they updated.
    Use HEAD, and compare Last-Modified header with previous.
  • Work with meta.json
    Check update of meta.json only, and if it is changed - update all scripts.

Local server address

'local': "http://127.0.0.1:8000"

  1. When entering address in settings - it get accepted only after removing 'http://' part.
    It is not obvious and generally wrong.

  2. When entering wrong address - text become red. But it is not clear enough, e.g. when it's initially red, or for color-blind person.
    So better output error message to status line.

  3. Wrong address is not stored. But what if it is not 'wrong', but just temporary unavailable?
    I suppose any user-entered value should be stored (and empty should be converted to default).

  4. Instead of 127.0.0.1 better use localhost.
    BTW, in recent version python server defaulted to ip6 (::1), so localhost would be more robust.

Unknow Plugin

I had 3 Unknow Plugins and in the user setup i see 1 line without plugin name or switch button.

I cant delete this and it dosn´t work.

i hope that right here its the iitc button.
Unbenannt

Phantom plugins / Should gracefully degrade if plugin status is undefined

I've ran into the status of external plugins being undefined (cause still to be determined) which results in the plugin in the plugin list to not show the plugin name and the plugin actions to be pushed out so aren't visible unless you scroll horizontally which is likely not obvious to user so it looks like there is a plugin they can't easily identify or delete. It may be particular plugins that are causing the issue but ideally user should still be able to disable, enable, download, and delete user plugins even if plugin is misbehaving.

image

Unable to load script if description contains ";"

If the description field in the meta block contains special characters (like ; or ") the ittc-button loader will fail to load them.

Reason: loader.js will search for for ";" and truncate the line.

let GM_info_raw = code.substring(0, code.indexOf(";"));

Additional the generated GM_info (fct: preparationUserScript) may contain invalid javascript if using quotes in the metablock.
return 'var GM_info = {"script": {"version": "'+plugin['version']+'",' +

Example:

// ==UserScript==
// @name            IITC plugin: MyPlugin
// @id              IITC-plugin-MyPlugin
// @category        Misc
// @version         1.0
// @namespace       https://github.com/jonatkins/ingress-intel-total-conversion
// @description     Bug ; " me
// @include         https://intel.ingress.com/*
// @grant           none
// ==/UserScript==
console.log("loaded");

Bug Report: Gaode Map tiles are broken

Environment

  • Browser: Edge 117.0.2045.55
  • OS: macOS Sonoma 14.0
  • IITC version: 0.36.1

Steps to reproduce

  1. Turn off Map Tiles > Gaode if it is on now
  2. Refresh
  3. Turn on Map Tiles > Gaode
  4. Refresh

Expected behavior

Gaode Map is choosable from the map tiles

Actual behavior

Gaode Map is not there

Console output

Uncaught (in promise) DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
    at o (chrome-extension://febaefghpimpenpigafpolgljcfkeakn/js/content-script.js:23:239)
    at HTMLDocument.a (chrome-extension://febaefghpimpenpigafpolgljcfkeakn/js/content-script.js:23:376)
    at <anonymous>:2:14
o		@	content-script.js:23
a		@	content-script.js:23
(anonymous)	@	VM2895:2

And VM2895 is this snippet:

document.dispatchEvent(new CustomEvent('IITCButtonInitJS',{
    detail: {
        "plugin": {
            "author": "johnd0e",
            "category": "Map Tiles",
            "code": "// ==UserScript==\n// @author         johnd0e\n// @name ... TRUNCATED HERE",
            "description": "Map layers from AutoNavi / Gaode (高德地图)",
            "filename": "basemap-gaode.user.js",
            "icon": "https://iitc.app/extras/plugin-icons/basemap-gaode.png",
            "icon64": "https://iitc.app/extras/plugin-icons/basemap-gaode-64.png",
            "id": "basemap-gaode",
            "name": "Gaode (高德地图) / AutoNavi map",
            "namespace": "https://github.com/IITC-CE/ingress-intel-total-conversion",
            "status": "on",
            "uid": "Gaode (高德地图) / AutoNavi map+https://github.com/IITC-CE/ingress-intel-total-conversion",
            "version": "0.1.1"
        },
        "tab_id": 1403434310
    }
}));

This broke the plugin because the uid field of this snippet contained non-latin Chinese characters.

Errors in Chrome

  1. Unrecognized manifest key 'applications'.
  2. Uncaught TypeError: Cannot read property 'addEventListener' of null
    Stack: app/popup/popup.js:183 (anonymous function)

Feature Request: Ability to Export User-Installed Plugins

UserScript Managers allow the user to import/export scripts and their associated data, both individually and all simultaneously.

IITC-Button allows import/export of LocalStorage-based data using a plugin, but there is no apparent means of exporting user-installed plugins (and optionally, their data) all at the same time.

Adding this functionality would bring parity with the UserScript Manager installations and allow easier movement between computers/browsers/profiles without needing to port over the entire Browser profile where IITC-Button is installed.

Some plugins have dependencies, and their scripts must be injected in order.

Depending on the (random) order the scripts are being loaded / sorted in on the external scripts, makes several plugins seem to be enabled / disabled at random due to errors.

It would be useful to make load order deterministic and sortable.

In addition, for toggling enabled status of plugins, it would be cool if they could be sorted alphabetically (as opposed to load order) or grouped into folders much like the default plugins are.

External plugins do not work

I successfully add a couple external plugins, and see them in UserScripts category.
But that's all.
And I even do not see any error in DevTools console.

Edit: some plugins work, some don't.
I will provide examples later.

Support GM.* functions

The IITC-Button is lacking Support for the GM.* functions.

This means all Plugins that are using them don't work in IITC-Button

The GM.* function is commonly used to store credentials or make requests to do stuff like syncing with a backend server in a defined way so other plugins can't access them.

Without them the only other option is store them in a shared area where all scripts can access them.

Thats why IITC-Button should get a proper GM.* support especially:

  • Value Handling
    • GM.getValue
    • GM.setValue
    • GM.deleteValue
    • GM.listValues
  • HTTP Requests
    • GM.xmlHttpRequest
    • GM.getResourceUrl

Header-Parser exception

const key = sp[1].replace("@", "");

will fail if line is empty

like:

// @download sdfsdf

// @author sdfsdf

/edit
additional: a missing space between // and @ is also accepted by tampermonkey but not by iitc-button
//@author sdfsdf

Wrong pages intercepted

  1. This is only page that should be processed:
    https://github.com/TheSned/IITCPlugins/raw/master/copy-portal-details-for-op-sheet.user.js

  2. These pages should not be processed:
    https://github.com/TheSned/IITCPlugins/blob/master/copy-portal-details-for-op-sheet.user.js
    https://github.com/TheSned/IITCPlugins/blame/master/copy-portal-details-for-op-sheet.user.js
    https://github.com/TheSned/IITCPlugins/commits/master/extend-poly-lines.user.js

  3. As for pages like https://github.com/TheSned/IITCPlugins/blob/master/copy-portal-details-for-op-sheet.user.js
    It would be perfect to add button (in div.BtnGroup) to open file in IITC-Button.

  4. It's bad that IITC-Button try to intercept every *.user.js file, as there may be scripts not related to IITC.
    Is it possible to check file's content?
    Most IITC plugins have // @name IITC plugin: line.

  5. When IITC-Button turned off it should not intercept anything.
    But it tries, even when I forbid access to pages (via Chrome context menu This can read and change site data >)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.