Skip to content

Latest commit

 

History

History
1563 lines (1534 loc) · 55.3 KB

CHANGELOG.md

File metadata and controls

1563 lines (1534 loc) · 55.3 KB

Changelog

All notable changes to this project will be documented in this file.

Planned

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Detect if "week" view is including weekend 5 🏕 Medium #158 No No Could do it using this API endpoint: https://developers.google.com/calendar/api/v3/reference/settings/list or though DOM
Enhance the calendar picker 5 🏝 Low #174 No No When creating a calendar, there is a calendar picker
The picker shows all calendar names in black.
If there are a lot of calendars, it takes time to find the right one
It would be helpful to have each line in the calendar picker be colored in some way using the calendar's theme color
Make extension work in Firefox 13 🏕 Medium maxpatiiuk #150 No No Guide: https://extensionworkshop.com/documentation/develop/browser-compatibility
Provide a way to independently rename a calendar 13 🏝 Low #173 No No If you have view access to some calendars, but no edit access, you can't rename them.
What is more, even if you do have permission to rename the calendar, renaming the calendar would apply the change to everyone - there is no way for different people to have different calendar names.
Our extension could add that feature
Add a faster way to set notifications 13 🏔 High maxpatiiuk No No Allow putting something like 10m.1h.1d in the event title and have extension conver that into notifications. The dificulty is that this would involve pressing a lot of buttons and opening dialogs on user's behalf (as setting notifications requires quite a few button clicks)
Display the goals badge in Google Calendar header 13 🏝 Low jakeangus #76 No No Display the progress toward each goal in a badge in the google calendar header. Piggy back on the colors of each calendar when displaying the badge. Clicking on the badge would open the overlay
Add export to XLSX 8 🏝 Low #155 No No Currently, data export to CSV and TSV is supported.
Adding XLSX support would be cool, though perhaps a bit tricky as it would require adding a large library - thus this is optional
Add indicator for events with description 8 🏕 Medium #181 No No Google Calendar does not show previews of descriptions for events that have descriptions nor does it provide an indicator that even has a description.
As a result, it's easy to add some important details about the event into the description and forget that it's there.
Some sort of indicator would be wonderful (i.e, a red corner or a stripe)
The difficulty is that there is no indication in the DOM that an element has an event, thus we would have to make network requests to get this information. And there would have to be a separate network request for each calendar. And if user is rapidly moving though calendars, that's a lot of network requests...

Sprint #13

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Add an explicit "Sign in with Google" button 3 🌋 Urgent maxpatiiuk #214 Yes #213 Yes Our OAuth Consent Screen application was rejected again.
This time because the Google OAuth button didn't follow the branding requirements.
See https://developers.google.com/identity/branding-guidelines
Record an introductory demo video 3 🏕 Medium maxpatiiuk Yes Yes Rather than a video that goes over all features, record a 3-5 minute video that gives a quick introduction to basic features of the extension - for jump starting new users
Edit: I cut the video that goes over all features into a shorter format and posted that publicly on the extension page
Detect selected time zone 5 🏝 Low jakeangus #59 No #202 No Currently, the plugin assumes that Google Calendar's time zone matched the system time zone.
That is not always the case as user can change Google Calendar's time zone independently
Improve test coverage 5 🏝 Low jetsemr No No
Make extension work in Edge 3 🏕 Medium Durbatuluk1701 #151 No No Guide: https://extensionworkshop.com/documentation/develop/browser-compatibility/Documentation: https://learn.microsoft.com/en-us/microsoft-edge/extensions-chromium/developer-guide/port-chrome-extension
See also #150
Allow hiding virtual categories 8 🏔 High jetsemr #124 No No Calendar categories (virtual calendars) would become even more useful once we have the ability to hide them.
This would, for example, allow excluding from the charts events whose name match a certain rule, or just temporary peeking at what the charts might look like without some categories
Do a quad chart 13 🌋 Urgent jakeangus No No See instructions and rubrics on Canvas. Due May 3rd
Make time series chart use AM/PM when appropriate 2 🏕 Medium #179 No No Currently, it always uses 24 hour time. Instead, need to modify it to listen for user's preference for AM/PM vs 24 time
General testing 5 🌋 Urgent No No Need to do general testing of all the features to improve stability. Open GitHub bugs for discovered issues and add a corresponding row to this table
Detect last used view 3 🏕 Medium #129 No No See #78 (comment)
Add a loading indicator 3 🏝 Low #157 No No When events are being fetched or any other async action is happening, a proper loading indicator (or a loading skeleton) needs to be visible
Fill out CHANGELOG.md 2 🏝 Low maxpatiiuk No No Fill it out based on this spreadsheet or upload this spreadsheet to GitHub

Sprint #12

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Create a demo video from the snippets and voice it 13 🌋 Urgent jakeangus Yes Yes
Investigate migrating to Firefox 5 🏕 Medium maxpatiiuk #150 Yes Yes Results of investigation: #150 (comment)
Write privacy policy 5 🌋 Urgent maxpatiiuk #210 Yes #209 Yes It is required by Google to pass OAuth Consent Screen. Limited Use disclosure is needed too
Comply with OAuth Consent Screen requirements 5 🌋 Urgent maxpatiiuk Yes Yes They sent me a long list of things to fix after my initial application. Including the following:
- Record a demo video of how OAuth is used in the extension
- Write privacy policy and limited use disclosure
- Add a favicon (browser tab icon) to the homepage of the extension documentation
- Verify my ownership of the patii.uk domain (it hosts the documentation for the extension)
Add a way to unghost an event 3 🌋 Urgent maxpatiiuk #207 Yes #212 Yes In case you accidentally ghosted an event or wanted to just temporary ghost it
Extension does not work on first sign in 5 🌋 Urgent maxpatiiuk #211 Yes #212 Yes Seems to be fixed after reloading the page. Quite strange

Sprint #11

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Record video snippets for the demo 3 🌋 Urgent maxpatiiuk Yes Yes
Overlay container is cut off at the bottom 3 🏝 Low jakeangus #127 Yes #203 Yes The overlay container is cut off a bit at the bottom
Fix a dozen discovered small issues 5 🏕 Medium maxpatiiuk #201 Yes #204 Yes Things needed to fix:
Fix "Calendar Plus" button not appearing for new users
Fix week offset not being added correctly
Use box-sizing border-box everywhere
Cache weekStart in storage (Fixes Cache the UserSettings in Local Storage #201)
Refactor week start detection code
Increase max height of Virtual Calendars
Fix header condensing styles not being applied
Fix duration picker being not wide enough
Research promotion strategy for extension 3 🏔 High maxpatiiuk Yes Yes Figure out how to best promote the extension, what options we have and how should we proceed
Cache the UserSettings in Local Storage 2 🏕 Medium Durbatuluk1701 #201 Yes #204 Yes User Settings should be stored in local storage and retrieved periodically, where default is to pull from Local Storage

Sprint #10

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Detect first day of the week 5 🏕 Medium Durbatuluk1701 #60 Yes #199 Yes Currently, the extension assumes Sunday is the first day of the week.
This is not always the case. User can customize this in Calendar settings. The extension should piggy-back on that setting
Publish extension to Google WebStore 5 🌋 Urgent maxpatiiuk #152 Yes #200 Yes So that it's publicly visible
Also need to make screenshots, description and demo videos

Sprint #9

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Handle auth token expiration 3 🏔 High maxpatiiuk #188 Yes #189 Yes Need to refresh the access token when necessary.
Currently, if the tab is left open for a long time, the toke eventually expires and all requests fail until the page reload.
Extension is broken if page is loaded with sidebar collapsed 5 🏕 Medium maxpatiiuk #101 Yes #190 Yes If the page is loaded with sidebar collapsed (Google Calendar remembers if you collapsed it in previous session), then Calendar Plus extension fails to read the list of currently visible calendars, leading it to treat all calendars as disabled.
Should fix this by caching the list of calendars that were visible last time and updating that list once the sidebar is expanded again
Add settings import/export feature 2 🏕 Medium maxpatiiuk #193 Yes #194 Yes Add ability to export layout, preferences, autocomplete predictions and other settings (but also to import them)
Extend export to JSON/TSV to every widget 3 🏝 Low maxpatiiuk #191 Yes #192 Yes
Add a "Condenced" UI mode 5 🏕 Medium maxpatiiuk #161 Yes #197 Yes Google Calendar does not show previews of descriptions for events that have descriptions nor does it provide an indicator that even has a description.
As a result, it's easy to add some important details about the event into the description and forget that it's there.
Some sort of indicator would be wonderful (i.e, a red corner or a stripe)

Sprint #8

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Add a 24hr time allocation visualization 13 🏔 High maxpatiiuk #165 Yes #175 Yes See https://www.reddit.com/r/dataisbeautiful/comments/101hvnv/oc_i_tracked_every_hour_of_my_life_for_5_years/
This kind of 24h visualization is quite nice - https://preview.redd.it/2657fm8lxn9a1.png?width=2387&format=png&auto=webp&s=5a5411232b151320838ef24083bada5003fda31a
We should implement something like that
Add export to JSON 3 🏝 Low jakeangus #154 Yes #184 Yes Currently, data export to CSV and TSV is supported.
Adding JSON support would be great too
Make event ghosting smarter 5 🏝 Low maxpatiiuk #153 Yes #182 Yes See #102 (comment)
Define the ghost events using event names rather than even IDs
Doughnut chart labels are incorrect 3 🏔 High maxpatiiuk #183 Yes #182 Yes When you have several calendars and virtual calendars, the labels on the doughnut chart seem to be off by one (calendars seem to get the label from virtual calendars)

Sprint #7

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Validate RegExp 2 🏝 Low maxpatiiuk #126 Yes Yes When adding an "Autocomplete Prediction" using "Regex" matcher, validate the entered regular expression for validity
Auto calendar switcher should not try to switch calendar if correct calendar is already selected 3 🏕 Medium maxpatiiuk #121 Yes Yes When creating a new event, if you selected calendar "A", and then the event name matched calendar "A" based on the autocomplete predictions rule, the extension tries to select calendar "A" once again, rather than detects that the calendar is already selected
Fetch repeated events more efficiently 8 🏕 Medium maxpatiiuk #148 Yes Yes When fetching events, call with singleEvents: true (see https://developers.google.com/calendar/api/v3/reference/events/list)
This way, instead of sending each instance of a repeated event, Google Calendar will send the rules on how the event repeats
This will potentially reduce the response size by a lot when fetching over large periods (i.e, a year)
Ability to supress "Edit recurring event" dialog 8 🏕 Medium maxpatiiuk #128 Yes Yes When making edits to repeated events, an "Edit recurring event" dialog pops up.
Most of the time you want to only edit the current instance of the event, not all repeated events.
Thus, it would be great if you could suppress that dialog, unless the user is holding a special key (i.e, shift)
Handle pagination when fetching events 5 🏕 Medium maxpatiiuk #149 Yes Yes Events fetch endpoint (https://developers.google.com/calendar/api/v3/reference/events/list) returns 2500 results max
This is not enough when fetching events for entire year (or even for a month in case of power users)
The API provides pagination, but the code does not yet look beyond the first page - need to fix that
Improve Caching Strategy 5 🏕 Medium maxpatiiuk #82 Yes Yes A cache layer was added for computed event durations
However, we need to make caching smarter. For one, caching must be disabled for events in the future, as future events are likely to change (perhaps, the stale-while-refresh strategy could be used)
Also, there should be button to explicitly recompute the durations for current view (day, week or month)
Ideally, we should detect which events changed and recompute only those, but that is a bit out of scope at the moment due to complexity involved
Allow hiding dangerous "Edit All" option 2 🏕 Medium maxpatiiuk #160 Yes Yes
Fetch events for current year 13 🏝 Low maxpatiiuk #90 Yes Yes There are some unique challanges involved in fetching events for entire year
Make stacked area chart work when in year view 5 🏝 Low maxpatiiuk #91 Yes Yes Need to group data by month, rather than show each day as a separate column

Sprint #6

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Allow defining calendar name shortcuts 5 🏕 Medium maxpatiiuk #122 Yes #135 Yes Add a UI for defining shorter names for calendars. Shorter versions should be accepted by future components, and is to be treated as a synonym - to speed up data entry
Support using calendar name shortcuts in event names 3 🏕 Medium maxpatiiuk #123 Yes #135 Yes Need to support a syntax like this for event names: synonym: eventName. If user is creating an event by that name, and synonym, matches a defined calendar synonym, it should automatically switch to corresponding calendar and remove the synonym: part from the event name
Charts is double or tripple counting the durations 5 🏔 High maxpatiiuk #134 Yes #142 Yes Seems like every time you open the chart, the total durations increase. See #134
Fix test depending on Daylight Savings Time 3 🏝 Low maxpatiiuk #114 Yes Yes The test in /src/src/tests/tests/globalSetup.test.ts depends on whether or not we are currently observing daylight savings time.
This test should be resistant to changes in daylight savings time while still in the same location
Add a button to UI to refetch events for current view 3 🏔 High maxpatiiuk #125 Yes #142 Yes There should be button to explicitly recompute the durations for current view (day, week or month)` into a separate issue

Sprint #5

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Disable animations if user indicated so in system settings 3 🏝 Low jetsemr #89 Yes #141 Yes This will improve user experience and enhance accessibility compliance
Make Doughnut Chart factor in virtual calendars 8 🏔 High maxpatiiuk #116 Yes #119 Yes Virtual calendars can be defined now. Next, need to make Doughnut Chart display the virtual calendars
Add support for "customday" view 5 🏝 Low maxpatiiuk #61 Yes #132 Yes Google Calendar has one user-customizable view that can be set to display X days at once. The extension should detect the preferences for that view.
Currently, the "Calendar Plus" button just disappears when "customday" view is selected
Add an option to ignore all-day events 3 🏝 Low maxpatiiuk #105 Yes #119 Yes Currently, an all-day event is treated as an event that spans entire days, and thus contributes 24 hours to the plots.
However, this can easily skew the statistics.
There should be an option to ignore all-day events when plotting the events.
Note, changing the value of this pref would require wiping the events cache
Add a keyboard shortcut to open the overlay 2 🏕 Medium Durbatuluk1701 #106 Yes #115 Yes This would be useful for power users who would save a lot of time with a keyboard shortcut rather than have to use the mouse to open the overlay
Make keyboard shorctut that opens the overlay customizable 5 🏝 Low maxpatiiuk #107 Yes #130 Yes Once a keyboard shortcut is added, it needs to be customizable to improve usability and to be compliant with the accessibility standards

Sprint #4

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Record the voiceover for the demo video 5 🌋 Urgent jakeangus Yes Yes
Edit the demo video 5 🌋 Urgent jakeangus Yes Yes
Add user preferences menu 5 🏝 Low maxpatiiuk #99 Yes #102 Yes For UI and behavior customization. Also, would improve accessibility
Add a way to "ghost" an event 3 🏝 Low maxpatiiuk #100 Yes #102 Yes Need to add a keyboard shortcut for marking an event as "ghosted".
Ghosted events are rendered as semi-transparent and are not interactive (thus preventing accidental clicks)
Add a way to customize the "ghost event" shortcut 2 🏝 Low maxpatiiuk #99 Yes #102 Yes
Add UI for defining virtual calendars and autocomplete rules 3 🏔 High maxpatiiuk #86 Yes #102 Yes Let user set rules that determine how to subdivide a calendar (i.e, create a virtual calendar for all events in "KU Homework" calendar that begin with "EECS 665")
Add autocomplete when user is creating a new event 5 🏕 Medium maxpatiiuk #87 Yes #104 Yes This is useful for power users who are creating a lot of events
Automatically switch to correct calendar when creating a calendar event 5 🏕 Medium maxpatiiuk #88 Yes #104 Yes Automatically put the newly created event into a correct calendar based on the event name

Sprint #3

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Overlay closes when changing view mode 3 🏕 Medium Durbatuluk1701 #58 Yes #113 Yes - When the view mode is changed, the overlay closes and is no longer visible
Make the widget grid customizable 5 🏕 Medium maxpatiiuk #71 Yes #85 Yes Allow changing the size of each widge, removing widgets and adding widgets. Make sure everything is keyboard accessible and screen reader accessible
Display a stacked area chart 13 🏔 High maxpatiiuk #72 Yes #83 Yes Display a stacked area chart in a widget when in week view. The chart should show the daily time spent on events from each calendar
Make stacked area chart work when in day view 2 🏝 Low maxpatiiuk #72 Yes #83 Yes Display a stacked area chart in a widget when in week view. The chart should show the daily time spent on events from each calendar
Make stacked area chart work when in month view 8 🏝 Low maxpatiiuk #72 Yes #83 Yes Display a stacked area chart in a widget when in week view. The chart should show the daily time spent on events from each calend
Add a doughnut chart 5 🏕 Medium maxpatiiuk Yes #83 Yes For easily summarizing the total number of hours spent on a task in a given period
Add Code Coverage Reports 3 🏝 Low jetsemr #11 Yes #94 No Add a github-bot that comments the current code coverage percentage on each Pull Request
Allow exporting data 2 🏝 Low jakeangus #73 Yes #93 Yes Allow exporting data from the stacked area chart as a JSON or CSV
Add ability to set goals 5 🏕 Medium maxpatiiuk #74 Yes #92 Yes Add ability to set, edit and remove goals for total number of hours of events in a given calendar. Goals should be synced with Google Extension Storage API
Calculate progress towards goals 2 🏝 Low maxpatiiuk #75 Yes #92 Yes Calculate the current progress toward each goal the user set
Add a badge for showing progress towards each goal 2 🏕 Medium maxpatiiuk #77 Yes #92 Yes Display the progress toward each goal in a widget in the dashboard
Record the footage for the demo video 3 🌋 Urgent maxpatiiuk Yes Yes

Sprint #2

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Integrate with TSDoc 2 🏝 Low jetsemr #10 Yes #65 Yes To generate human-friendly documentation
Add a cache layer on top of Storage API 5 🏔 High Durbatuluk1701 #9 Yes #80 Yes Integrating with Google Drive API won't be needed.
But, we will need a cache layer to save the computed summary of how much time the user spent on a particular event in a given week
Calendar Plus Button not Appearing on Landing Page 2 🏝 Low Durbatuluk1701 #40 Yes #78 Yes The button to launch the Calendar Plus overlay does not appear on the default landing page
Listen for extension icon click 3 🏝 Low jakeangus #42 Yes #79 Yes When user click on our extension in the list of extensions some action should happen.
Could possibly switch to the calendar tab, or open a new page
Look for useful manifest.json and service_worker commands 3 🏕 Medium maxpatiiuk #43 Yes Yes Look over the Manifest v3 spec in search of useful metadata options and commands we could add to our extension
Look over service_worker commands and chrome extensions APIs for the list of possible actions and events
Sync the list of visible calendars 5 🏔 High maxpatiiuk #45 Yes #62 Yes Users can enable/disable calendars by clicking on them on the sidebar. The plugin should intercept that action somehow to keep the list of visible calendars synchronized.
Add documentation for getting React DevTools to work 3 🏔 High maxpatiiuk #46 Yes #53 Yes React DevTools Extension does not work for debugging Chrome Extension out of the box.
You have to do special steps. Need to add information about that to the documentation
Make reloading extension easier 3 🏔 High maxpatiiuk #54 Yes #55 Yes After each webpack rebuild, you need to go to the "Extensions" page in Google Chrome and press the "Update" button to reload the extension and see the newest changes.
There should be a an easier way
Fetch events for current day 3 🏕 Medium maxpatiiuk #41 Yes #67 Yes - Standard data objects to an event object
- Retrieve events for specific timeframe
- Display events on user interface
Fetch events for current week 5 🏕 Medium maxpatiiuk #41 Yes #67 Yes
Fetch events for current month 8 🏕 Medium maxpatiiuk #41 Yes #67 Yes

Sprint #1

Name Story Points Priority Assignee GitHub Issue Completed Pull Request Merged Description
Add initial boilerplate code for a React/TypeScript/Tailwind project with Jest 3 🌋 Urgent Durbatuluk1701 #3 Yes #1 and #2 Yes - The code repository should be accessible via GitHub
- The repository should have a correctly configured package.json so that npm install automatically installs necessary dependencies
- The repositories code should compile without errors
Add and populate the manifest.json file to make the project be recognized as a Chrome Extension 2 🌋 Urgent maxpatiiuk #4 Yes #2 Yes - The manifest.json file should include necessary project information to for the package to be recognized as a Chrome extension
- The project should be configured to build files into a webpacked bundle of javascript code
Make extension add a button to the Google Calendar page 3 🌋 Urgent maxpatiiuk #5 Yes #27 Yes - When a user launches Google calendar while the extension is installed, a placeholder button should appear on the page
- This button does not necessarily do anything, but should appear in a way that is not detrimental to normal GCal user experience
Display a full-page overlay, or a modal dialog when a button is pressed 3 🌋 Urgent maxpatiiuk #6 Yes #27 Yes - When the button from requirement 3 is pressed, a dialog or modal will appear
- The dialog/modal should disappear if it is clicked off of or closed
- The dialog/modal does not need to explicitly say anything just must appear and be closable
Render a grid of blank widgets for the future plugins 1 🏕 Medium Durbatuluk1701 #7 Yes #34 Yes - There should be a dashboard page with blank widget slots
- The widget slots should be reasonably sized similar to those outlined in the Figma model in the Initial Architecture document
- Widgets should be flexible enough to hold a generic component, but just a placeholder for now
Add a day/week/month/year selection option to the header of the overlay. Changing the view mode should also change the view mode in the Google Calendar behind the extension 3 🌋 Urgent maxpatiiuk #29 Yes #36 Yes - The full page overlay references in #4 should have headers with the outlined options displayed
- There should be a button to toggle the view mode that will also toggle the GCal view mode behind the modal
Add a button to go to next/previous week. Also, support N and P keyboard shortcuts (which are already used by Google Calendar). Make sure the week displayed in the extension and in Google Calendar is synchronized 3 🌋 Urgent maxpatiiuk #29 Yes #36 Yes - The overlay should add buttons for week traversal
- Add keyboard support for week traversal by the N and P keys
- Ensure synchronization with the GCal behind overlay
Copy the name of current week/month/year from the Google Calendar header to the header of our overlay and make sure it stays in sync on changes to view mode or when going to next/previous week 3 🏝 Low maxpatiiuk #29 Yes #36 Yes - The overlay header should show the date
- The date should stay the same when moving to next or previous week
Add an oAuth integration so that the extension can get access to Google APIs on user's behalf 8 🏔 High maxpatiiuk #8 Yes #44 Yes - The user should be able to login with an existing google account
- Credentials should be used to access Google Calendar API