Giter Site home page Giter Site logo

hovancik / stretchly Goto Github PK

View Code? Open in Web Editor NEW
4.4K 35.0 424.0 72.99 MB

The break time reminder app

Home Page: https://hovancik.net/stretchly

License: BSD 2-Clause "Simplified" License

JavaScript 70.97% HTML 19.49% CSS 9.38% Dockerfile 0.03% Shell 0.02% TypeScript 0.11%
electron macos linux reminder longer-breaks windows bsd breaks

stretchly's Introduction

Stretchly Awesome Humane Tech Build Status JavaScript Style Guide codecov Join the chat at https://gitter.im/stretchly/Lobby Translation status

Stretchly logo

The break time reminder app

Stretchly is a cross-platform Electron app that reminds you to take breaks when working on your computer.

Become a Sponsor! Become a Patron!

Table of contents

Install GitHub All Releases Packaging status

The latest official installers and portable versions for macOS, Windows and Linux can be found at Github Releases page. For supported versions of your OS check Electron's supported versions. Read on for details of specific OSes.

macOS

It is recommended to install Stretchly with Homebrew by running the folowing command. See Application Signing.

brew update && brew install --cask stretchly

When upgrading, run the following command. Don't forget to Quit Stretchly, first.

brew update && brew upgrade --cask

If you're using Alfred or Raycast on macOS you can use this Alfred Workflow or Raycast Extension to interact with Stretchly.

Application Signing

Stretchly is not signed (due to its costs and me not owning supported Apple device) so you will need to use a workaround for the first run. The workaround depends on if you're running an Intel or Apple Silicon chip.

sudo xattr -r -d com.apple.quarantine /Applications/Stretchly.app

If you install via Homebrew, you can use the --no-quarantine flag to automatically apply the correct workaround.

brew install --cask --no-quarantine stretchly

Not sure which chip your computer has? Here's how to tell.

Windows

You can also install Stretchly with Chocolatey by running the following command from the command line or from PowerShell:

choco install stretchly

To update:

choco upgrade stretchly

Stretchly is also available in Microsoft's winget. You can install it by running:

winget install -e --id Stretchly.Stretchly

Stretchly can be also found at official Microsoft Store.

You can install Stretchly for all users silently by running this as administrator:

installer.exe /S /allusers

Linux / Portable

For portable versions and for Linux installers, head to Github Releases page. The most widely used distributions should be covered.

Stretchly is also available in some of the Linux stores:

For Debian/Ubuntu and derivates you could also try this apt repository: deb [trusted=yes] https://apt.fury.io/hovancik/ /.

Linux note

Please see http://electron.atom.io/docs/api/tray/ for Electron's Tray Linux specifics.

For Natural breaks, you might need some packages too (libxss-dev).

If Stretchly is not starting, you might need to run:

sudo sysctl kernel.unprivileged_userns_clone=1

Read more here. Depending on your distro, you probably want to do something similar to this, so the preferences are kept after reboot: Add kernel.unprivileged_userns_clone=1 to /etc/sysctl.d/00-local-userns.conf and reboot.

Running from source

To run Stretchly from source you will need Node.js, ideally the one specified in package.json. Clone the repo, run npm install and then simply run npm start to start Stretchly.

Custom installer

You can create a custom installer by running npm run pack or npm run dist after npm install --no-save.

Default behavior

When you run Stretchly for the first time, you are presented with a Welcome window that allows you to change the language, review the preferences, view the online tutorial or simply continue with the default preferences.

Stretchly itself lives in your tray, only displaying a reminder window from time to time, which contains an idea for a break.

By default, there is a 20 second Mini Break every 10 minutes and a 5 minute Long Break every 30 minutes (after 2 Mini Breaks).

You'll be notified 10 seconds before a Mini Break (and 30 seconds before a Long Break) so that you can prepare to pause your work.

When a break starts, you can postpone it once for 2 minutes (Mini Breaks) or 5 minutes (Long Breaks). Then, after a specific time interval passes, you can skip the break. Both actions are available by clicking on the link at the bottom of window or by using the Ctrl/Cmd + X keyboard shortcut.

Clicking the Stretchly icon in your tray area will display the current status of breaks, provide menu items with extra functionality, and link to the Preferences.

Stretchly is monitoring your idle time, so when you are idle for 5 minutes, breaks will be paused until you return.

Stretchly is also monitoring Do Not Disturb mode, so breaks are paused when DnD mode is On.

Stretchly follows the theme of your system and is also available in dark mode.

Interact with stretchly from command line

When a Stretchly instance is running, the stretchly command can be use to interact with it from the command line.

Type stretchly help to get a list of all commands and options available as well as some examples.

Preferences

Most of the preferences can be customized by clicking on the "Preferences" item in the tray menu. (On Windows, to open Preferences, you can also double-click on the tray icon.)

Preferences are divided into multiple categories and you are encouraged to take some time to make Stretchly your own by customizing them.

You can also Restore the defaults to return to the default preferences state.

Advanced Preferences

While the most of the preferences can be edited via the app, some options and values are not available to make the app easy to understand and setup.

All preferences are saved in a JSON file, so you can set Stretchly in the way you need. Use the Ctrl/Cmd + D shortcut while viewing the About section of Preferences, to show debug info and display a clickable link to the preferences file.

It's recommended to Quit Stretchly before editing the preferences file.

To make sure that all works as expected, it's always good idea to check that format of the preferences file is correct, ie. by using jsonformatter.

After you make changes to preferences files, some of the values being shown in Preferences or elsewhere might show incorrect value, as the UI is expecting specific values and is not handling cases where user makes manual changes to preferences file.

Some of the extra preferences are available in Contributor Preferences for Contributors. Those are marked by Contributor Preferences badge.

Preferences marked with Not Reliable might not work correctly and might break Stretchly. Use at own risk.

Note: Before 1.0, Mini Breaks and Long Breaks were called Microbreaks and Breaks, respectively. To keep the upgrade smooth they still use that name in preferences file and in code.

Preferences editable in the app

Here are the preferences editable via the app. If values in the app does not suite your style, you could edit them maually:

  • microbreakDuration - duration of Mini Break (ms)
  • microbreakInterval - interval of Mini Break (ms)
  • breakDuration - duration of Long Break (ms)
  • breakInterval - interval of Long Break (Mini Breaks)
  • breakNotification - show notification before Mini Break
  • microbreakNotification - show notification before Long Break
  • microbreak - enable Mini Breaks
  • break - enable Long Breaks
  • microbreakStrictMode - enable strict mode for Mini Breaks
  • breakStrictMode - enable strict mode for Long Breaks
  • mainColor - theme color code (for Long Breaks),
  • miniBreakColor - theme color code (for Mini Breaks),
  • transparentMode - show break windows as transparent
  • audio - sound theme name (for Long Breaks)
  • miniBreakAudio - sound theme name (for Mini Breaks)
  • fullscreen - show breaks in fullscreen mode
  • ideas - show break ideas
  • naturalBreaks - monitor idle time
  • allScreens - show breaks on all screens
  • language - language
  • useMonochromeTrayIcon - use monochrome icon
  • useMonochromeInvertedTrayIcon - use inverted monochrome icon
  • silentNotifications - enable sounds
  • monitorDnd - monitor DND mode
  • checkNewVersion - check for new versions

Editing Break ideas

In the preferences file, change useIdeasFromSettings: false, to useIdeasFromSettings: true, and edit breakIdeas and microbreakIdeas.

Note that when a new Stretchly version with new break ideas is out, your custom ideas will not be overwritten. You can reset break ideas to the latest defaults when you "Restore defaults" from Preferences window.

Editing Break notification interval Contributor Preferences

In the preferences file, change breakNotificationInterval: 30000, to whatever value you want. 30000 is 30 seconds. Same goes for Mini Breaks.

Editing sunrise time to pause breaks until morning

In the preferences file you can set the morningHour setting to pause until that hour today or the next day Otherwise, you can set morningHour: "sunrise" and set posLatitude, posLongitude in preferences to pause until the actual sunrise in your area. E.g. if you live in Boston you would set: morningHour: "sunrise", posLatitude: 42.3, posLongitude: 71

Editing postpone functionality Contributor Preferences

In the preferences file, you can edit microbreakPostpone and breakPostpone to enable or disable the ability to postpone breaks, microbreakPostponeTime and breakPostponeTime to change the postpone time in milliseconds, microbreakPostponesLimit and breakPostponesLimit to change the number of allowed postpones per break, and finally, microbreakPostponableDurationPercent and breakPostponableDurationPercent to change the percentage of the break during which the user can postpone it.

New version notification Contributor Preferences

In the preferences file, set notifyNewVersion: false, to disable new version notification.

Play sound at the start of the Break Contributor Preferences

In the preferences file, set microbreakStartSoundPlaying: true, to start a Mini Break with a sound (The same sound will be played as at the end of the break). Same for breakStartSoundPlaying.

Different sound for Mini and Long breaks

To play different sound for Mini Breaks, set miniBreakAudio to desired value (crystal-glass, silence, tic-toc, wind-chime).

Different color theme for Mini and Long breaks

To have different theme for Mini Breaks, set miniBreakColor to desired value, ie #123456.

Natural breaks inactivity time Contributor Preferences

In the preferences file, set naturalBreaksInactivityResetTime to your preferred value (in milliseconds greater than than 20000ms). This is an idle time length, after which Stretchly breaks will be paused until the user resumes activity.

Volume for break sounds Contributor Preferences

In the preferences file, set volume to your preferred value. Default value is 1, which is 100% volume. Set it, for example, to 0.61 for 61% volume.

Postpone/Finish Break Shortcut

In the preferences file, set endBreakShortcut to your preferred value. We do not validate this input, so please check Electron's documentation for available values for key and modifier. When a given accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.

If you'd like to disable the shortcut, set value to empty string "".

Default value is CmdOrCtrl+X.

Toggle Breaks Shortcut

Toggling between Pause Breaks and running breaks.

In the preferences file, set pauseBreaksToggleShortcut to your preferred value. We do not validate this input, so please check Electron's documentation for available values for key and modifier. When a given accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.

If you'd like to disable the shortcut, set value to empty string "". That's the default value as well.

Skip to the next Break Shortcut

In the preferences file, set skipToNextScheduledBreakShortcut, skipToNextMiniBreakShortcut, skipToNextLongBreakShortcut to your preferred value. We do not validate this input, so please check Electron's documentation for available values for key and modifier. When a given accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.

If you'd like to disable the shortcut, set value to empty string "". That's the default value as well.

Reset Breaks Shortcut

In the preferences file, set resetBreaksShortcut to your preferred value. We do not validate this input, so please check Electron's documentation for available values for key and modifier. When a given accelerator is already taken by other applications, this call will silently fail. This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.

If you'd like to disable the shortcut, set value to empty string "". That's the default value as well.

Appearance Contributor Preferences

In the preferences file, change themeSource: 'system' to either 'light' or 'dark' to always use the specified theme.

Break window color

In the preferences file, change mainColor to whatever color you like.

Welcome window Contributor Preferences

To show the Welcome window again on the next start, change "isFirstRun" to true.

Theme transparency Contributor Preferences

To specify how solid the break window should be when Theme transparency is enabled, set the value of opacity from 0 to 1 (which is in turn 0 to 100%).

Break window size Contributor Preferences

To specify the size of the break window, set the value of breakWindowHeight and breakWindowWidth from 0 to 0.99 (which is in turn 0 to 99% of the size of the screen). Don't set 100% as that's fullscreen.

Make Stretchly show breaks as regular windows Contributor Preferences Not Reliable

If you want Stretchly breaks to act as regular windows (have a titlebar, turn off always on top, be minimizable and focusable) set showBreaksAsRegularWindows to true.

Pause/resume breaks only when specific command is running

By editing appExclusions in preferences file, you can automatically control when Stretchly breaks are paused.

If you want Stretchly to be paused when specific apps are running, you could have this value (breaks are paused when Skype or Atom are running):

"appExclusions": [
    {
        "rule": "pause",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom"
        ]
    }
]

If you want Stretchly to be running when specific apps are as well, you could have this value (breaks are paused when Skype or Atom are not running):

"appExclusions": [
    {
        "rule": "resume",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom"
        ]
    }
]

You can specify multiple values, (as appExclusions is array) and Stretchly will take the first one that is marked as "active": true. Multiple commands can be specified as well. Commands should be case sensitive, but seems like this is not consistent across platforms. Therefore, sometimes, going all lowercase might be needed (this was noticed on Windows).

You can also specify appExclusionsCheckInterval in milliseconds: lower number means more often checks, but also higher CPU usage. Default value is 1000 which is 1 second.

Pause breaks on Suspend/Lock Not Reliable

If you don't want to reset breaks once system is back from Suspend/Lock, set pauseForSuspendOrLock to false.

Monitor to show breaks on Not Reliable

In case you have disabled showing of breaks on all monitors, you can specify which one should contain the break window. Set screen value to one of the following:

  • "primary" - primary monitor as given by OS
  • "cursor" - monitor where there is cursor
  • "0" (or 0), "1", "2" etc, where "0" is the first monitor returned by OS and so forth

Show time to the next break in menubar icon Contributor Preferences Not Reliable

If you want Stretchly to show time to the next break in menubar icon set timeToBreakInTray to true.

Show current time in breaks Contributor Preferences

To show current time in breaks, set the value of currentTimeInBreaks from false to true.

Hide menubar/tray icon Contributor Preferences

To hide Stretchly icon in menubar/tray, set the value of showTrayIcon from true to false.

Note that this will disable graphical way of opening Stretchly Preferences. To access Preferences, you will have to use command line options (ie: stretchly preferences on Linux).

Show break actions (Skip, Pause, Reset) in Strict Mode

If you want to show options 'Skip to next break', 'Pause' or 'Reset Breaks' even while in Strict mode, set showBreakActionsInStrictMode to true.

Contributor Preferences

Stretchly is free but you can support it by contributing code, translations or money. You will be rewarded by getting access to Contributor Preferences, ability to Sync Preferences, chat on Discord and more!

You can access contributor features after authenticating with Github or Patreon in the "Love Stretchly" section of Preferences.

GitHub Sponsors does not charge any fees for sponsorships from user accounts, so 100% of these sponsorships go to the sponsored developer or organization. Github Sponsors Matching Fund will also match every donation.

You will be able to access Contributor Preferences, Sync Preferences. You won't be able to chat on Discord.

Patreon has fees plus it uses PayPal, which has its fees as well.

You will be able to access Contributor Preferences, Sync Preferences and Discord chat.

Donating with Crypto currencies

Bitcoin

3EyJNtJPuQjfqP5czN88kPySwxVjv7h42y

Ethereum

0x377f05E76e96EC4C19fF225e767FeD77b1750294

Zcash

t1XyjwJtViEqATUnPKG6mdUwN4TkoCfxzcM

Let me know if you would like to use some other currency.

Currently, there are no rewards for donating with Crypto currencies, as we can't programmatically match them.

PayPal has fees.

Currently, there are no rewards for donating via PayPal, as we can't programmatically match them.

By contributing code (or translations), you will be able to access Contributor Preferences, Sync Preferences. You won't be able to chat on Discord.

Development

Feel free to join in the development of this app via Issues and Pull Requests.

Before implementing a feature, please open an Issue first, so we can be sure that no one else is working on it and that the changes will be accepted. It is important do discuss changes before implementing them (Why should we add it? How should it work? How should it look? Where will it be? ...).

Pre-requisites

  • Node.js (please use version specified in package.json)
    • Linux/MacOS - you might want to use Node Version Manager to install specific version
    • Windows - download installer for specific version; during installation check β€œInstall Additional Tools for Node.js”
  • git
  • Github account, if you'd like to upstream your changes

Now you can clone the repo with git clone https://github.com/hovancik/stretchly.git. Change to the new created directory and run npm i to install node packages needed.

Read on.

Debugging

You can use Stretchly's built-in debug shortcut by pressing Ctrl/Cmd + D in the About section to show information such as:

  • Location of the Preferences and Log file (Clicking on file location will open it),
  • Debug information for break planner

You can copy debug information to the clipboard.

If you start Stretchly in development mode with the npm run dev command, it makes it possible to debug the application in your browser on http://localhost:9222.

Logging

Stretchly uses [log](https://github.com/megahertz/electron-log) package for some extra logging. Format as following:

  • System: my message for messages regarding Operating System, ie: System: resume or unlock
  • Stretchly: my message for messages regarding Stretchly

Translations

You can help to translate Stretchly on Weblate. Consider joining with your Github account to be correctly credited. Translation status

Known issues

  • idle time detection doesn't work on Wayland (electron/electron#27912)
  • Windows Store build's autorstart is not working, so was disabled. You need to do it manually.

MacOS

  • users experiencing their Dock hiding after a break, requiring command + tab or a mouse click to get focus back, check System Preferences > Users & Groups > {User} > Login Items. If Hide is checked for Stretchly, uncheck it, it should solve the issue.

Windows

  • users who upgraded to Windows 10 from previous Windows versions might be in "Do Not Disturb mode" all the time so they need to check "Show breaks even in Do Not Disturb mode"
  • users with Chromium-based browser (Chrome, Edge, etc...) might need to set some flags when browser is non-responsive after break

Contributors

Also see Github's list of contributors.

1.0 Icon and UI design by Colin Shanley (www.colinshanley.com).

Humans and Tools

Sounds credits

Sounds used in this application are listed here.

Fonts credits

This app uses Noto Sans fonts licensed under the Apache License, Version 2.0.

License

See LICENSE file.

stretchly's People

Contributors

70h avatar albanobattistella avatar alehpa avatar aleuca avatar asterite avatar aziks0 avatar balazsnasz avatar bittin avatar bramborman avatar darksworm avatar dicaver avatar gowee avatar hovancik avatar jcbarry avatar jonatanwick avatar lyubomirv avatar mhuijzer avatar mwoz123 avatar omeritzics avatar ompugao avatar p-bo avatar pan93412 avatar pramit-marattha avatar santossi avatar srakrn avatar tsathis avatar unholyhub avatar weblate avatar xifangczy avatar yarons avatar

Stargazers

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

Watchers

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

stretchly's Issues

A JavaScript error occurred in the main process

I was just dragging two files on to my email (gmail) for attaching them, and a micro break screen popped out :) and I saw that the file contents are put into green stretchly screen :) and after micro-break screen disappeared, an error message popped out. I hope I had given enough information :)

P.S. files were text files of 10-50 lines matlab code

image

An in-range update of electron is breaking the build 🚨

Version 1.4.12 of electron just got published.

Branch Build failing 🚨
Dependency electron
Current Version 1.4.11
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As electron is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build is in progress Details

  • ❌ continuous-integration/appveyor/branch Waiting for AppVeyor build to complete Details

  • βœ… bitHound - Code No failing files. Details

  • ❌ bitHound - Dependencies 2 failing dependencies. Details

Release Notes v1.4.12

1.4.12

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Feedback

Hi, I got some feedback from sindresorhus/awesome-electron#420 (comment)

What do you think? (if anyone here ;]). I will implement some stuff, but I don't plan to work on plaform-specific stuff.

Some feedback. For macOS, but might also apply to other platforms:

App name should be captialized. stretchly => Stretchly.
I would recommend reading https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/OSXHIGuidelines/ Your app doesn't feel very native to the platform.
Menubar icons should not be colored.
Quit should be Quit Stretchly and also have a shortcut to quit.
All the menu items should be titleized.
Settings => Preferences...
About should be at the bottom above Quit.
There should be a separator above Settings.
The About window is way too big, it should not be resizable, and the links there are not styled.
Don't use a notification to inform me that Settings are saved when changed. That's just annoying.
The Settings window should not be resizable.
A lot of the text is too hard to read because it its thinness and bad contrast.
The "buttons" in the app are not clear enough. They're just normal text without even changing the mouse pointer.
Drop the splash screen. That's just annoying.
Since you already have a settings window, you should move "start at login" there, to reduce stuff in the menu.
If I click "Pause - for two hours", it should show me how much time left there is of the pause.

Monitor system idle time for natural breaks

It'd be fantastic if stretchly could monitor user idle time for 'natural' breaks - if I've been away for the computer for 10 minutes, for example, it should count as my last break and restart the timer when I come back. Ditto for 1-minute rests resetting the microbreak timer.

Both Workrave and Time Out (for Mac) have this feature.

I do not know if Electron exposes the necessary hooks to implement it. It may require platform-specific binary extensions, unfortunately.

Suggestion: Pre defined breaks

Firstly, great piece of software - it has a HUGE amount of potential. I really hope this gets continued development.

The ability to add a list of pre-defined times throughout the day to take a break. This on top of the existing static interval approach would be great.

For example:

  • Always take a 10 minute break at 10:00am.
  • Always take a 30 minute break at 12:00pm.
  • Always take a 15 minute break at 4:00pm.

This would be useful for those like myself that would usually work through my pre-defined break times and not stop for lunch etc.

Cmd+X does not skip the break anymore

Ever since 0.8.1, where the break windows don't steal focus anymore (which I think is a big improvement), the shortcut for skipping doesn't work anymore.

Reset timer on resume from sleep

Currently the first thing to happen when my PC resumes from sleep (S3) is that Stretchly tries to enforce a break. This also means the long break schedule is not correctly synced to when I was using my PC. I would suggest that Stretchly should simply reset its count to 0 when it detects a system resuming from sleep.

This is on Windows 10 x64 using version 0.9.0.

Support for Monochrome icon on OS X

Could you add support for monochrome icons on OS X so the icon doesn't look ugly in the menu bar. Also a HighDPI (2x) icon would be appreciated, as it looks quite pixelated on Retina displays.

Support for multiple monitors

Currently I see notifications displayed across my two monitors, centered as they were one.

Would it be possible that the notification is centered on one (primary) monitor?

Running tests causes test-missing.json to be deleted

At any rate, any time I run the full test suite, the test-missing.json file is deleted and I have to be careful not to add the deletion into the commit, and git reset it to restore it. Is this an intentional behavior?

The cause seems to be, in the test/settings.js:

afterEach(() => {
    if (settings && settings.destroy) {
      settings.destroy()
      settings = null
    }
  })

and in app/utils/settings.js:

destroy () {
    this.data = null
    fs.unlinkSync(this.settingsFile)
  }

What is the reason for this destroy function? I can't find it being called anywhere besides in the test.

Feature: manager for our own break ideas

I'd love to be able to add a couple break ideas specific to myself, like "spend ten minutes weeding the garden" or "go for a jog".

As a followup, some break ideas might be worth submitting back to a repo, but then users should also be able to blacklist ones that don't apply. That last part might be important for a11y, too.

erroneous 'a new version is available' messages

I'm on the latest version, 0.8.1, but I occasionally get messages popping up saying "a new version of Stretchly is available"

Also, the About screen shows latest version: undefined

about stretchly v0 8 1

Mac OSX 10.12.4

Multiple monitors

I just started using this and for some reason -- i'm using multiple monitors -- it doesn't show the break on both monitors ?

I think you could try and tie the break notification to where the mouse is ? (this way you'd get a better reading what's the current 'selected' monitor);

I also think it would be great to have the notification full screen.

[Linux] desktop file is lacking a Categories= entry

The desktop file is lacking a Categories= entry in the *.desktop file.

According to the menu spec,

By including one of the Main Categories in an application's desktop entry file, the application will be ensured that it will show up in a section of the application menu dedicated to this category. If multiple Main Categories are included in a single desktop entry file, the entry may appear more than once in the menu.

Hence, please add at least one of the following in the Categories= key.

Main Category Description Notes
AudioVideo Application for presenting, creating, or processing multimedia (audio/video)
Audio An audio application Desktop entry must include AudioVideo as well
Video A video application Desktop entry must include AudioVideo as well
Development An application for development
Education Educational software
Game A game
Graphics Application for viewing, creating, or processing graphics
Network Network application such as a web browser
Office An office type application
Science Scientific software
Settings Settings applications Entries may appear in a separate menu or as part of a "Control Center"
System System application, "System Tools" such as say a log viewer or network monitor
Utility Small utility application, "Accessories"

In addition, you could specify one or more from the longer list of Additional Categories.

Please test the result with desktop-file-validate and make sure it passes.

electron-builder offers native support for this since v19.22.1.

Reference: AppImage/appimage.github.io#2

Versions 0.8.1 is better than 0.9.0

I use 0.8.1 because 0.9.0 has a couple of issues. First, it does not show itself when I'm in another fullscreen app. Second, it has dock icon which is always present. Will it be fixed in next versions?

Selecting a sound more than once doubles the volume

I'm not sure if it's just a Windows (10) thing, or my system, or what. But when I select a sound, change it, and then select the first sound again it gets louder. If I do this a couple of times it gets REALLY loud!

Translations

Would be great to have stretchly in different languages. I can recommend Crowdin or Weblate for managing the translations.

Multiple monitor suggestion

Running on Gnome 3.24

Very nice app, but I wondered if there would be a way to have the window appear on all screens, not just one? Would make it harder to miss if I have mouse focus on one screen but am looking at another.

Suggestion: Don't count the timers if there's no activity on the computer

So in workrave, they don't count the timers if you aren't using the computer. If you're not typing or moving the mouse.

I think this is very useful behaviour because if you step away from the computer during a break and come back later than when the break ends, you don't get a shorter time before the next break.

[mac] Does not refocus active app after break

One of the most annoying factors for me at this time is when a break is over, the OS is in a state where stretchly is the active app, but no windows of it are open. This breaks a continuity in workflow for people who use mostly the keyboard (eg programmers).

Time remaining in icon

It would be nice if there was an option to make the icon represent how much time there is left until next break. I was thinking in a circle that fills/empties, similar to MacOS progress icon.
240_degrees_filled1600

Refactor schedule management responsibilities into a single class

Right now, BreaksPlanner plans the next break, but executing that break is handled by code in main.js. This means the 'what state are we in?' logic is split between these two files, with a complex interaction bouncing between them through interval timers.

In #93, I integrated the idle time break skipping into BreaksPlanner, but this solution feels somewhat hacky.

I think it might help to have a single schedule management object that is responsible for all aspects of planning both the start and the ends of breaks, as well as monitoring idle time for natural breaks. It can be an EventEmitter and use events to tell the UI to show/hide the break window, update break progress bars, etc. It can also serve as a single source of information about the current state of the break timings (simplifying the solution to #63), in addition to cleaning up my solution to #59. It would further make it easier to use the idle time detection logic to make the 'in a break' timer only tick down when you're actually stopping use of the computer, like Workrave.

This object may also benefit from a defined state machine to record different states, but I haven't thought enough about what the state machine would look like to have a good handle on how useful it would be.

An in-range update of electron-builder is breaking the build 🚨

Version 10.7.0 of electron-builder just got published.

Branch Build failing 🚨
Dependency electron-builder
Current Version 10.6.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As electron-builder is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/appveyor/branch Waiting for AppVeyor build to complete Details

  • ❌ continuous-integration/travis-ci/push The Travis CI build is in progress Details

  • ❌ bitHound - Dependencies 2 failing dependencies. Details

  • βœ… bitHound - Code No failing files. Details

Release Notes 10.7.0

10.7.0 (2016-12-12)

Features

Commits

The new version differs by 2 commits .

  • 4faa3fb feat: force application signing
  • 88ce3b7 chore: use bundled yarn to test on travis, remove validate-commit-msg

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

FR: Counter for finished / skipped breaks

I would like to see the ratio of done and skipped breaks. This could be tracked over time and shown so I can improve on doing breaks. I must say that I'm skipping micro breaks a lot as the interruption is just to annoying while working on something.

Translate

When do you plan to translate the application? at least you can start with the language of the massages that come out in the breaks.
Or at least put them in an easy file to open and translate.

Very good application, thank you.

Create longer breaks

Hi, thank you for this great app. I was using workrave but that is really showing its age.

How hard would be to implement longer breaks?

Thanks.

Option to display no advices during breaks

I often find the repeated texts annoying, and would prefer to stay with a clean black box, containing only a countdown.

Also, some texts (like the one about bathrooms in the office), sometimes appear in weird and useless situations: when I'm working in a cafe or home, or when I'm having a coleague by my side.

Alternatively, I'd suggest a settings page, where you could select which messages you find useful, or even write your own.

Countdown/timer does not appear on the screens

Hello - not sure if this is how I document an issue, but ... I have Stretchly installed on my Win 10 computer. I have configured it to come up for short breaks every 20 minutes and longer breaks every 90 minutes. On both of these screens, I don't see the timer. So I forget (if I'm very hard at work) if what I'm seeing is a 10-second break or a 5 minute break. I don't see how to configure the timer in the 'settings' area.
2017-08-03_12-47-29

Alternate full screen behaviour

Full screen apps should cause Stretchly to engage different behaviour, as having your screen disappear is not always desirable and can lead to videos continuing to play, or in the case of games, Stretchly failing to take over the screen correctly or getting you killed. Where a fullscreen app is detected I think Stretchly should offer the following options:

  1. Issue a five second warning sound so that the user can pause whatever it is (good for videos, not necessarily for games due to cutscenes etc.)
  2. Play a sound (and repeat every minute) until the user triggers the break (better for games)
  3. Block breaks while fullscreen mode enabled

setToolTip not working on macOS

So I have notices that setToolTip is not working correctly on macOS.
easy way to reproduce is:

start app, skip to next break, cancel break -> . tooltip is not there

Seems to work on Linux. @sxmanton how about Windows? I didn't tested there yet.

I would like to solve this before making a release. I guess I should open issue with electron.

FR: Free configurable pause skipping

Most web meetings run 1h, so I log in 5 min before and maybe it runs 10 min longer.

Hence I would like to pause Stretchly for 1,5h because 1h is too short and 2h is normally too long.

Postpone Break for X minutes

Sometimes your are really concentrated and actively working, and a break in that second is just annoying. Two ideas:

  • Monitor keyboard activity and wait for a X seconds gap before showing the break
  • Add a "postpone by X minutes" option. See: http://www.dejal.com/timeout/

[bug] Object destroyed at Timeout.finishMicroBreak

Hi, I encountered this error a couple times. Seems like it may be related to #68 due to same stack trace.

I am unsure of what the trigger may have been, I do not remember if I was doing any specific action before the break window appeared that would trigger it. For what it's worth I don't think I was drag and dropping at the time, but I'm not totally sure. I will try to pay more attention and reproduce it if I can.

I encountered it only when running in development (i.e. npm start), so far have not encountered it in the production release, but I also have only just started using the app.

image

FR: Time range when stretchly should be active

IMO it doesn't make sense that I get the 1st micro break indicator after a couple of minutes after I booted my system. I would like to be able to define a start time, when stretchly should begin. So I could set it to 10:00 and before I'm not interrupted.

Suggestion: only give notifications for rest breaks

I like the notifications for rest breaks, because I can finish my sentence before the fullscreen break appears. This way, I have no excuse for 'quickly' finishing up (which, of course, always finally causes me to ignore the break).

Microbreaks are so short, on the other hand, that I can keep the rest of my sentence in mind, and continue after stretching my legs. The -30 seconds notifications actually distracts me from my work.

Would it be possible to only display notifications for rest breaks? Or make that optional (but watch out: I love your minimalistic settings screen, keep it like that!)

I don't notice the pauses when I'm in fullscreen (OSX)

So if an application is running in fullscreen mode on OSX (such as a video, web browser, or emacs) when stretchly pauses trigger they do not show up over the application. It also doesn't steal the focus from the application so basically the notification goes entirely unnoticed. Since I'm probably in full screen most of the time, this makes it so that stretchly barely helps me at all.

restore previous application focus after break

After a break or microbreak is over, I would like focus to be restored to the previously active application.
Currently, for example, if I have Chrome open and then a microbreak begins, when the microbreak is over (or I press Ctrl-x), focus is not automatically restored to Chrome. I have to click on the Chrome window or use the Mac application switcher to restore focus to Chrome. (the quickest way I've found to do that is to press Cmd-Tab then Cmd-Shift-Tab)

Details:

  • stretchly 0.8.0
  • Mac OS 10.12.3 Sierra

Thanks for making this app, I'm enjoying it!

Move window

It would be great if you could move the reminder window. Now it's fixed in the middle of the screen. You want to pause a video or close other things to take a break, but you can't because it's on top (especially if on a single monitor). So you just hit skip.

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.