floccusaddon / floccus

:cloud: Sync your bookmarks privately across browsers and devices
https://floccus.org
Mozilla Public License 2.0
5.32k stars 234 forks source link

Let user decide if future update notifications are shown or not #1640

Open hartsberger opened 3 weeks ago

hartsberger commented 3 weeks ago

Describe the feature you'd like to request

As a followup of my first feature request (https://github.com/floccusaddon/floccus/issues/1634) It would be great when the user gets asked if future update notifications should be shown or not.

Describe the solution you'd like

Add a section to the update page that lets the user decide if future update notifications should be shown or not. (Just like the "Automated Error Reporting" options that are available on the update page)

Describe alternatives you've considered

I know that you rely on donations and that this feature request could reduce the amount of donations due to the user is not aware of it anymore.

Alternative 1: Ask the user if update notifications should not be shown until:

Alternative 2: If the Add-On is used on many clients in a company, give an admin somehow the option to turn of those messages globally. Question: If you receive a (yearly) donation from a company, would it be possible to hide all the donation-messages?

Thanks

github-actions[bot] commented 3 weeks ago

Hello :wave:

Thank you for taking the time to open this issue with floccus. I know it's frustrating when software causes problems. You have made the right choice to come here and open an issue to make sure your problem gets looked at and if possible solved. I'm Marcel and I created floccus and have been maintaining it ever since. I currently work for Nextcloud which leaves me with less time for side projects like this one than I used to have. I still try to answer all issues and if possible fix all bugs here, but it sometimes takes a while until I get to it. Until then, please be patient. Note also that GitHub is a place where people meet to make software better together. Nobody here is under any obligation to help you, solve your problems or deliver on any expectations or demands you may have, but if enough people come together we can collaborate to make this software better. For everyone. Thus, if you can, you could also have a look at other issues to see whether you can help other people with your knowledge and experience. If you have coding experience it would also be awesome if you could step up to dive into the code and try to fix the odd bug yourself. Everyone will be thankful for extra helping hands! One last word: If you feel, at any point, like you need to vent, this is not the place for it; you can go to the forum, to twitter or somewhere else. But this is a technical issue tracker, so please make sure to focus on the tech and keep your opinions to yourself.

I look forward to working with you on this issue Cheers :blue_heart:

marcelklehr commented 3 weeks ago

Hi @hartsberger I see your dilemma.

a period of X months is over

What would be X months be ideally, in your opinion. Currently, it's set to 35 days.

hartsberger commented 3 weeks ago

In my opinion 6 months would be sufficient.

But this would still be interesting:

Question: If you receive a (yearly) donation from a company, would it be possible to hide all the donation-messages?

marcelklehr commented 3 weeks ago

Are you able to set values in web extension local storage with your deployment method? You could set the time the last intervention was displayed to 2050 and it would never get shown.

hartsberger commented 3 weeks ago

Can you please describe where this storage should reside in Mozilla Firefox and Microsoft Edge? Do I have to add some lines to "prefs.js" for Firefox? Or how can I modify these storages? Thanks.

marcelklehr commented 3 weeks ago

That's a good question, I don't know where the different browsers store this data.

hartsberger commented 2 weeks ago

Well, then I am not able to set values in these storages. If anyone else could give me a hint, this would be awesome.

Back to topic: Is there a chance that you set a greater time period?

marcelklehr commented 2 weeks ago

I've increased the time to 75 days now. I think understand your need. Basically, we would need to disable the update screen for company installations, ideally only for those that donate. What are you able to influence in your deployment process? Do you have other extensions where this works for example?

hartsberger commented 2 weeks ago

I can only modify these things in my deployment process:

marcelklehr commented 2 weeks ago

ADMX sounds like an interesting possibility:

LLM explanation on using ADMX to set config values for web extensions To set a value using ADMX (Administrative Templates) that a web extension in Firefox or Edge can read, you need to configure the appropriate group policy settings. This involves creating or editing ADMX files to define policies and then applying these policies via Group Policy Management. Here's how you can do it: ### Step-by-Step Guide for Firefox 1. **Download the Firefox ADMX Templates:** - You can download the ADMX templates for Firefox from the [Mozilla GitHub repository](https://github.com/mozilla/policy-templates). 2. **Add ADMX Templates to Group Policy:** - Extract the downloaded files. - Copy the `.admx` files to `C:\Windows\PolicyDefinitions` on your domain controller. - Copy the corresponding language files (e.g., `.adml`) to `C:\Windows\PolicyDefinitions\en-US` or your respective language folder. 3. **Configure Policies:** - Open the Group Policy Management Console (GPMC) and create a new Group Policy Object (GPO) or edit an existing one. - Navigate to `Computer Configuration` > `Policies` > `Administrative Templates` > `Mozilla` > `Firefox`. - Configure the desired policies. For example, you might set an extension's configuration using the `ExtensionSettings` policy. 4. **Set Custom Preferences:** - To set custom preferences that your web extension can read, you can use the `Preferences` policy. Here’s an example of setting a custom preference: ```json { "Extensions": { "your-extension-id@example.com": { "install": true, "locked": { "customPreference": "customValue" } } } } ``` 5. **Deploy the Policy:** - Link the GPO to the appropriate organizational unit (OU) in Active Directory. - Force a policy update on the target machines using the command `gpupdate /force`. 6. **Read the Preference in the Extension:** - In your web extension, you can read the preference using the `browser.storage.managed` API. ```javascript browser.storage.managed.get('customPreference').then((result) => { console.log('Custom preference:', result.customPreference); }); ``` ### Step-by-Step Guide for Microsoft Edge 1. **Download the Edge ADMX Templates:** - Download the Microsoft Edge policy files from the [Microsoft Edge Enterprise landing page](https://www.microsoft.com/edge/business/download). 2. **Add ADMX Templates to Group Policy:** - Extract the downloaded files. - Copy the `.admx` files to `C:\Windows\PolicyDefinitions` on your domain controller. - Copy the corresponding language files (e.g., `.adml`) to `C:\Windows\PolicyDefinitions\en-US` or your respective language folder. 3. **Configure Policies:** - Open the Group Policy Management Console (GPMC) and create a new Group Policy Object (GPO) or edit an existing one. - Navigate to `Computer Configuration` > `Policies` > `Administrative Templates` > `Microsoft Edge` > `Extensions` or other relevant settings. 4. **Set Custom Preferences:** - To set custom preferences that your web extension can read, use the `ExtensionInstallForcelist` and `ExtensionSettings` policies. Here’s an example of configuring an extension and setting a custom preference: ```json { "ExtensionInstallForcelist": ["your-extension-id@example.com"], "ExtensionSettings": { "your-extension-id@example.com": { "installation_mode": "force_installed", "preferences": { "customPreference": "customValue" } } } } ``` 5. **Deploy the Policy:** - Link the GPO to the appropriate organizational unit (OU) in Active Directory. - Force a policy update on the target machines using the command `gpupdate /force`.

Floccus could then read the settings you have set in the json.