Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

This evening option, prefferably with customizable time #456

Open
bubblefoil opened this issue Apr 12, 2018 · 15 comments
Open

This evening option, prefferably with customizable time #456

bubblefoil opened this issue Apr 12, 2018 · 15 comments

Comments

@bubblefoil
Copy link

I use my laptop both at work and home. Often I open a tab which I would like to get back to after work. Which is in the evening. Which sounds like "later today", although this option puts the tab off by just a few hours and I have to re-snooze the tabs repeatedly throughout the day.
I agree I could use the calendar but I am not a fan of this tiny mouse-wheel-scrollable combo, it is just too user unfriendly. Evening hours are too far down, scrolling with a wheel feels imprecise. I would prefer either a radial menu or an option to start dragging over the number to change it like with a slider.

@unhammer
Copy link

"This evening" should be a setting whenever it's between 9-5, and "next morning" when it's outside 9-5 :-)

@demoklion
Copy link

demoklion commented Feb 10, 2019

The UI of choosing time is unusable. Why not make a more standard one, where one can:

  • write time in (eg. 9, 9pm, 18, 16:52, 1652)

image

@xuiqzy
Copy link

xuiqzy commented May 19, 2019

Letting the user create custom snooze times would be a solution for a lot of requests here. This https://addons.mozilla.org/en-US/firefox/addon/snooze-tabby/?src=search unfortunately not open source and not really working addon for snoozing allows this for example. Having a fixed time (today at 9pm) and also an offset option (in 24hrs) would be really handy.
Should I rather create a new issue for this proposal?

@maxsu
Copy link

maxsu commented Sep 1, 2019

I'd like to add this - can any maintainers get me up to speed on the process here?

Looks like we'd have to edit:

src/icons

  • Add new icon

Eg, an evening version of the "Later Today" icon:

image

src/lib/time.js

  • Pick an id and locale message name (eg, evening and timeEvening)
  • Extend the times const on lines 10 - 18
  • Extend the case statement on lines 27 - 56

This is where a configurability requirement could begin to make things tricky. For now I'd say lets leave it out.

src/popup/snooze.html

  • Prettyprint html
  • Add a This Evening item

Likewise, the popup would need significant work to add any kind of configurability of individual items.

locales/**/snoozetabs.properties

  • Add a timeEvening message
  • Localize message

I don't know anything about localizing at this time. Note however that if we allow users to configure their own items, we can reduce localization work.

@maxsu
Copy link

maxsu commented Sep 1, 2019

@xuiqzy adding configurable times sounds like a good goal. Want to collaborate on that?

Questions:

  1. How do users specify time and date offsets?
    Ideas:
    • Fixed time of day + n days in the future (easy)
    • Time offset (+hours, minutes days) (easy)
    • Weekday names (medium, due to localization)
    • Custom rules (tricky af)
  2. Can users delete existing rules?
  3. Should users be able to reset rules?
  4. Should users be able to export or sync rules?

@demoklion How would you feel about an analog time picker with ability to type in the time? Wanna collaborate with me here?

image

Also, these do seem like existing issues.

Feel free to drop a comment here, or mention me on one of those issues!

@demoklion
Copy link

demoklion commented Sep 2, 2019

@maxsu hey, I think the baseline for this could be how gmail on android does this now (minus the swiping interactions and ML smarts in the background).
Using standard (or at least common) material components is a good start. They aren't perfect (material is mobile-first), but they're certaintly better than what we have now.
check eg. this component in material ui

Custom snooze settings are not that important to me, what's in the plugin now works fine. If choosing custom date/time is easier to do, that solves my issue.

edit: to answer your questions

  1. a+b
  2. yes
  3. yes
  4. yes I expect them to be the same on all my firefoxes

Anything else I can help with? I'm coding noob but UX pro.

@bubblefoil
Copy link
Author

I might actually be able to help with the inner parts. I have written some tampernonkey scripts and would like to learn the process of writing an extension. I am a UI noob, though.

@maxsu
Copy link

maxsu commented Sep 5, 2019

I've pushed a commit to a temporary feature branch.

Please review the commit - it's very simple so far. I don't think this will necessarily become a feature of the app, but it's a useful entry point into the code (and of course all are welcome to use my branch or pull the feature).

image

Things to note:

  1. I manually adjusted the height of the app's CSS to accommodate the new entry. Otherwise the app looks like this:
    image
    This may need to become automatic if users can add or delete entries. I am somewhat remiss in that I lack the CSS-fu to do this! Help welcome!

  2. I didn't make an effort to localize the additions (even in an automated way). We may need to look into whether pontoon localization is still available, or find another open source localization service. I'd hate to scale back on localization.

To test the code, do:

1a. Clone my project at the feature branch:

git clone -b feature/thisEvening https://github.com/maxsu/SnoozeTabs.git

OR..

1b. Checkout my project as a remote.

cd src/SnoozeTabs
git remote add maxsu https://github.com/maxsu/SnoozeTabs.git
git checkout maxsu/feature/thisEvening

  1. Build the project in production mode

npm install
npm run package

  1. Install as a temporary plugin in Firefox
  • Go to Menu > Add-Ons > Tools for all addons > Load Temporary Addon
  • Load SnoozeTabs/dist/manifest.json

Enjoy!

@bubblefoil
Copy link
Author

Why do I need python to build it?

@bwinton
Copy link
Owner

bwinton commented Sep 17, 2019

I don't believe you do? What error are you getting that suggests it's missing Python?

@bubblefoil
Copy link
Author

The error said it could not find python.exe. So I added it to paths and the error changed a little, it was still Python related, though.
I'm afraid I cannot give you more info, my laptop died recently and I did not have a change to try it again since then.

@smartfonreddit
Copy link

As a user of this addon, would I need to download the updated xpi from elsewhere, or will the official one on AMO get updated in future?

@maxsu
Copy link

maxsu commented Oct 1, 2019

You have two options currently, both require building my branch of the repo (see my post above).

  1. Run it as a temporary addon (about:debugging > Load Temporary Addon)
  2. Load the xpi into Firefox developer edition (about:config > set xpinstall.signatures.required to false)

Let me know if you get it working, or have trouble. Please post console logs in the latter case.

If you test it and feel the feature merits inclusion into AMO, I'll create a PR.

@bubblefoil
Copy link
Author

Hi, I'm back with a replacement laptop and another attempt to build the forked version.
I got the same error, here is the console output and npm log:
https://gist.github.com/bubblefoil/f43633e8ff166879661fb0747f595418
https://gist.github.com/bubblefoil/4956939ecef098c480c954de697238c6

@maxsu
Copy link

maxsu commented Oct 12, 2019

Thanks for posting logs. I see what's happening - you are working in windows without protective WSL armor*! You are quite brave!

I can replicate your error. Here's what I did to fix it:

  1. Install npm's windows-build-tools, which handles node-gyp's python dependency. (see this guide)

    From admin powershell, do:

    npm install --global production windows-build-tools --vs2015

  2. Open package.json and update node-sass from 3.13.0 to 4.12.

    • Old version of node-sass was not compatible with Windows
  3. Run npm install.

    • You can ignore the peer requirement and optional dependency warnings.
  4. Run npm run package using git bash, if you have it available.

    • If you run this in cmd, you'll see a mv error; despite this error, the web extension will build and appear as a .zip file in the ./web-ext-artifacts directory.
    • In either case, the raw extension's manifest.json will be in ./dist

*) On a side note, the extension is definitely packaged to be built on linux, and in general I've had much better luck working with node, python, etc in microsoft's surprisingly decent WSL environment. You might want to consider moving to that - See instructions for WSL + windows insider + the Ubuntu 18.04 WSL image. To get started with node, see my notes here.

Good luck, and let me know if worked!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants