diff --git a/CHANGELOG.md b/CHANGELOG.md index 3985aa216..5f13fb604 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.1.5] - 2023.12.09 +## [0.1.8] - 2023.12.27- d26d1d360152a7d0e559b68486e85b72b88bd9ff +### Added +- DB logging for service-worker events +- Help page for notifications +- Test notification & web-push triggers inside app +- Check that the app is installed +### Fixed +- Project issuer display name + + +## [0.1.7] - 2023.12.19 - 91c6c7c11c71f96006cc876fc946f1f98a274ba2 +### Changed +- Icons +### Fixed +- Notification switch now shows message +- Prod/test server warning message at top of page + + +## [0.1.6] - 2023.12.17 - b445b1234fbfcf6b37d695373f259aab0eda1118 +### Added +- Infinite scroll on home page +### Changed +- UI improvements +- Show web-push subscription info +- Icon + + +## [0.1.5] - 2023.12.09 - 9c36bb509a9bae9bb3306d3bd9eeb144b67aa8ad ### Added - Web push notifications (though not finalized) - Credentials details page diff --git a/README.md b/README.md index b207b08ca..d3faf82cc 100644 --- a/README.md +++ b/README.md @@ -22,16 +22,25 @@ npm run lint If you are deploying in a subdirectory, add it to `publicPath` in vue.config.js, eg: `publicPath: "/app/time-tracker/",` -``` -npm run build -``` +* Update the CHANGELOG.md & the version in package.json, run `npm install`, and commit. -``` -npx prettier --write ./sw_scripts/ -``` -to make sure the service worker scripts are in proper form +* [Tag wth the new version.](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) + +* If production, change src/constants/app.ts DEFAULT_*_SERVER to be "PROD" and package.json to remove "_Test". Also record what version is on production. + +* `npm run build` -... then copy the contents of the `sw_scripts` folder to the `dist` folder - except additional_scripts.js. +* `npx prettier --write ./sw_scripts/` + +...to make sure the service worker scripts are in proper form. (It's only important if you changed something in that directory.) + +* `cp sw_scripts/[ns]* dist/` + +... to copy the contents of the `sw_scripts` folder to the `dist` folder - except additional_scripts.js. + +* `rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntutest@test.timesafari.app:time-safari` + +* Revert src/constants/app.ts and package.json, edit package.json to increment version & add "-beta", `npm install`, and commit. Also record what version is on production. @@ -103,10 +112,12 @@ To add an icon, add to main.ts and reference with `fa` element and `icon` attrib ### Clear/Reset data & restart -* Clear cache for site. (In Chrome, go to `chrome://settings/cookies` and "all site data and permissions"; in Firefox, go to `about:preferences` and search for cache.) -* Unregister service worker (in Chrome, go to `chrome://serviceworker-internals/`; in Firefox, go to `about:serviceworkers` or `about:debugging`). -* Clear notification permission (in Chrome, go to `chrome://settings/content/notifications`; in Firefox, go to `about:preferences` and search). -* Clear Cache Storage (in Chrome, in dev tools under Application; in Firefox, in dev tools under Storage). +* Clear cache for site. (In Chrome, go to `chrome://settings/cookies` and "all site data and permissions"; in Firefox, go to `about:preferences` and search for "cache" then "Manage Data", and also manually remove the IndexedDB data if the DBs still show.) +* Clear notification permission. (In Chrome, go to `chrome://settings/content/notifications`; in Firefox, go to `about:preferences` and search for "notifications".) +* Unregister service worker. (In Chrome, go to `chrome://serviceworker-internals/`; in Firefox, go to `about:serviceworkers`.) +* Clear Cache Storage manually, possibly deleting the DB. (In Chrome, in dev tools under Application; in Firefox, in dev tools under Storage.) + +(If you find more, add them to the HelpNotificationsView.vue file.) @@ -129,3 +140,4 @@ Gifts make the world go 'round! * [Many tools & libraries]() such as Nodejs.org, IntelliJ Idea, Veramo.io, Vuejs.org, threejs.org * [Bush 3D model](https://sketchfab.com/3d-models/lupine-plant-bf30f1110c174d4baedda0ed63778439) * [Forest floor image](https://www.goodfreephotos.com/albums/textures/leafy-autumn-forest-floor.jpg) +* Time Safari logo assisted by [DALL-E in ChatGPT](https://chat.openai.com/g/g-2fkFE8rbu-dall-e) diff --git a/package-lock.json b/package-lock.json index 754b7beea..5af4fead4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "TimeSafari", - "version": "0.1.5", + "name": "TimeSafari_Test", + "version": "0.1.9-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "TimeSafari", - "version": "0.1.5", + "name": "TimeSafari_Test", + "version": "0.1.9-beta", "dependencies": { "@ethersproject/hdnode": "^5.7.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", @@ -33,6 +33,7 @@ "ethereum-cryptography": "^2.1.2", "ethereumjs-util": "^7.1.5", "ethr-did-resolver": "^8.1.2", + "git-describe": "^4.1.1", "jdenticon": "^3.2.0", "js-generate-password": "^0.1.9", "localstorage-slim": "^2.5.0", @@ -8894,8 +8895,7 @@ "node_modules/@types/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" }, "node_modules/@types/send": { "version": "0.17.2", @@ -16272,6 +16272,30 @@ "node": ">=6" } }, + "node_modules/git-describe": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-describe/-/git-describe-4.1.1.tgz", + "integrity": "sha512-JC8ganO5kO80G8+XE98TDDjnMXQN3Estk3qdJuG2EGRF/l6zuMTMcN+8OSfQZ5FWpqIRLB015anWX4aSRgnxAQ==", + "dependencies": { + "@types/semver": "^7.3.8", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=4.0.0" + }, + "optionalDependencies": { + "semver": "^5.6.0" + } + }, + "node_modules/git-describe/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -19338,8 +19362,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", diff --git a/package.json b/package.json index 3a90b3bc4..e282d727d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "TimeSafari", - "version": "0.1.5", + "name": "TimeSafari_Test", + "version": "0.1.9-beta", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -33,6 +33,7 @@ "ethereum-cryptography": "^2.1.2", "ethereumjs-util": "^7.1.5", "ethr-did-resolver": "^8.1.2", + "git-describe": "^4.1.1", "jdenticon": "^3.2.0", "js-generate-password": "^0.1.9", "localstorage-slim": "^2.5.0", diff --git a/project.task.yaml b/project.task.yaml index 4016d1aff..1ebacae35 100644 --- a/project.task.yaml +++ b/project.task.yaml @@ -1,37 +1,22 @@ tasks: -- 40 notifications : - - push, where we trigger a ServiceWorker(?) in the app to reach out and check for new data assignee:matthew - - extract private_key_hex in py-push-server webpush.py - - lock down regenerate_vapid endpoint (so only we admins can do it on demand) - - remove sleep in py-push-server app.py - - revisit "maybe" and "never" buttons on account screen - - see if we can detect OS-level notifications if turned off - - write troubleshooting docs for notifications - - in py-push-server, when sending a push to a subscriber and we get on a 410 "error #106", delete the subscription record - - https://gitea.anomalistdesign.com/trent_larson/py-push-server/pulls/3/files +- DB migration error : + - replicate (Trent got contacts inserted in commit 7305606546a5fdfb646d2c3bf66417e4f200e5cc to break when updating to commit d7f4acb70253bd7d957d734a5d661c638d1ffad4 -- on old mac but not new one) + - fix -- .3 fix the Project-location-selection map display to not show on top of bottom icons (and any other UI tweaks on the map flow) assignee-group:ui +- 08 notifications : + - .2 after turning on notification, don't wait in push server but wait in client for message test (so that users don't have to wait 10 seconds for confirmation for some kind of confirmation) + - if navigator.serviceWorker is null, then tell the user to wait + - Make sure instructions note - Local install works after cleared out cache in Chrome -- .5 Add infinite scroll to gifts on the home page +- fix maskable icon -- .5 If notifications are not enabled, add message to front page with link/button to enable - -- add note after contact addition that they can see your info -- enhance help page instructions for debugging -- add way to test quickly a push notification -- help instructions for PWA install problems (secret failed, must reinstall) -- look at other examples for better UI friend.tech +- 04 generate & store next public key hash, and give to contacts for storage -- show VC details... somehow: - - 01 show my VCs - most interesting, or via search - - 01 allow download of each VC (& confirmations, to show that they actually own their data) - - 04 allow user to download VCs, mine + ones I can see about me from others - - add VC confirmation? +- .5 If notifications are not enabled, add message to front page with link/button to enable - Release Minimum Viable Product : - - generate new webpush.db entry, webpush.py private_key_hex & subscription_info & vapid_claims email - .5 deploy endorser.ch server above Dec 1 (to get plan searches by names as well as descriptions) - 08 thorough testing for errors & edge cases - 01 ensure ability to recover server remotely, and add redundant access @@ -44,8 +29,25 @@ tasks: - Other features - donation vs give, show offers, show give & outstanding totals, show network view, restrict registration, connect to contacts blocks: ref:https://raw.githubusercontent.com/trentlarson/lives-of-gifts/master/project.yaml#kickstarter%20for%20time +- show VC details... somehow: + - 01 show my VCs - most interesting, or via search + - 01 allow download of a particular VC, with confirmations (to show that they actually own their data) + - 04 allow user to download chains of VCs, mine + ones I can see about me from others + - add VC confirmation + +- record donations vs gives +- make server endpoint for full English description of limits - make identicons for contacts into more-memorable faces (and maybe change project identicons, too) -- allow some gives even if they aren't registered +- 02 watch for the service worker activation before showing the button to turn on notifications +- 01 server - show all claim details when issued by the issuer +- bug - got error adding on Firefox user #0 as contact for themselves +- bug (that is hard to reproduce) - back-and-forth on discovery & project pages led to "You need an identity to load your projects." error on product page when I had an identity +- bug (that is hard to reproduce) - in Chrome, install app then delete app and try from Chrome browser and see log errors "Uncaught TypeError: self.appendDailyLog is not a function" +- bug (that is hard to reproduce) - on the second 'give' recorded on prod it showed me as the agent +- 01 send visibility signal as a VC and store it +- 04 remove 'rowid' references (that are sqlite-specific); may involve server +- 04 look at other examples for better UI friend.tech +- 01 make the prod build copy the sw_scripts - .5 Add start date to project - .3 check that Android shows "back" buttons on screens without bottom tray - .1 Make give description text box into something that expands as they type? @@ -53,12 +55,16 @@ tasks: - .2 Show a warning if both giver and recipient are the same (but still allow?) - 01 Would it look better to shrink the buttons on many pages so they don't expand to the width of the screen? assignee-group:ui - .5 Display a more appealing confirmation on the map when erasing the marker -- .5 include the hash of the latest commit on help page next to version (maybe Trent's git-hash branch) - .5 remove references to localStorage for projectId (now that it's pulling from the path) -- bug (that is hard to reproduce) - on the second 'give' recorded on prod it showed me as the agent - switch some checks for activeDid to check for isRegistered - .2 in SeedBackupView, don't load the mnemonic and keep it in memory; only load it when they click "show" - .5 fix cert generation on server (since it didn't happen automatically for Nov 30) +- warn if they're using the web (android only?) + https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getInstalledRelatedApps + https://web.dev/articles/get-installed-related-apps + +- 04 fix lack of initial notification in Firefox (on MacOS, maybe others) + - contacts v+ : - 01 Import all the non-sensitive data (ie. contacts & settings). - .2 show error to user when adding a duplicate contact @@ -78,6 +84,7 @@ tasks: - 24 Move to Vite - 32 accept images for projects - 32 accept images for contacts +- import project interactions from GitHub/GitLab and manage signing - linking between projects or plans : - show total time given to & from a project @@ -100,6 +107,8 @@ tasks: - automated tests, eg. cypress - Notifications (wake on the phone, push notifications) + - pull instead of push, maybe via scheduled runs + - have a notification pop-up on Mac screen - Connect with phone contacts @@ -112,12 +121,11 @@ tasks: - Do we want split first name & last name? -- 40 notifications v+ : - - pull, w/ scheduled runs - - 01 On nearby search, if user starts changing their box but cancels and goes back to the map it is zoomed far out. Fix to fit the box better. - 16 From the home screen, make the quick action even easier. +- allow some gives even if they aren't registered - maybe someday as a gift to the world, but we really want this to be built via personal connections + log: - videos for multiple identities https://youtu.be/p8L87AeD76w and for adding time to contacts https://youtu.be/7Yylczevp10 done:2023-03-29 - project lists, contact totals & actions, multiple identifiers, stats-world, activity feed, rename of this project file (use "--follow --") milestone:2 done:2023-06-27 diff --git a/public/favicon.ico b/public/favicon.ico index df36fcfb7..7dd1c898e 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/img/icons/android-chrome-192x192.png b/public/img/icons/android-chrome-192x192.png index b02aa64d9..d98e8be1a 100644 Binary files a/public/img/icons/android-chrome-192x192.png and b/public/img/icons/android-chrome-192x192.png differ diff --git a/public/img/icons/android-chrome-512x512.png b/public/img/icons/android-chrome-512x512.png index 06088b011..ec8cb09f9 100644 Binary files a/public/img/icons/android-chrome-512x512.png and b/public/img/icons/android-chrome-512x512.png differ diff --git a/public/img/icons/android-chrome-maskable-192x192.png b/public/img/icons/android-chrome-maskable-192x192.png deleted file mode 100644 index 791e9c8c2..000000000 Binary files a/public/img/icons/android-chrome-maskable-192x192.png and /dev/null differ diff --git a/public/img/icons/android-chrome-maskable-512x512.png b/public/img/icons/android-chrome-maskable-512x512.png deleted file mode 100644 index 5f2098ed2..000000000 Binary files a/public/img/icons/android-chrome-maskable-512x512.png and /dev/null differ diff --git a/public/img/icons/apple-touch-icon-120x120.png b/public/img/icons/apple-touch-icon-120x120.png index 1427cf627..ea61f7e74 100644 Binary files a/public/img/icons/apple-touch-icon-120x120.png and b/public/img/icons/apple-touch-icon-120x120.png differ diff --git a/public/img/icons/apple-touch-icon-152x152.png b/public/img/icons/apple-touch-icon-152x152.png index f24d454a2..e112d96ab 100644 Binary files a/public/img/icons/apple-touch-icon-152x152.png and b/public/img/icons/apple-touch-icon-152x152.png differ diff --git a/public/img/icons/apple-touch-icon-180x180.png b/public/img/icons/apple-touch-icon-180x180.png index 404e192a9..70a5fcfc0 100644 Binary files a/public/img/icons/apple-touch-icon-180x180.png and b/public/img/icons/apple-touch-icon-180x180.png differ diff --git a/public/img/icons/apple-touch-icon-60x60.png b/public/img/icons/apple-touch-icon-60x60.png index cf10a5602..7374d4665 100644 Binary files a/public/img/icons/apple-touch-icon-60x60.png and b/public/img/icons/apple-touch-icon-60x60.png differ diff --git a/public/img/icons/apple-touch-icon-76x76.png b/public/img/icons/apple-touch-icon-76x76.png index c500769e3..df5e54cc8 100644 Binary files a/public/img/icons/apple-touch-icon-76x76.png and b/public/img/icons/apple-touch-icon-76x76.png differ diff --git a/public/img/icons/apple-touch-icon.png b/public/img/icons/apple-touch-icon.png index 03c0c5d5e..70a5fcfc0 100644 Binary files a/public/img/icons/apple-touch-icon.png and b/public/img/icons/apple-touch-icon.png differ diff --git a/public/img/icons/favicon-16x16.png b/public/img/icons/favicon-16x16.png index 42af00963..dbcf457b2 100644 Binary files a/public/img/icons/favicon-16x16.png and b/public/img/icons/favicon-16x16.png differ diff --git a/public/img/icons/favicon-32x32.png b/public/img/icons/favicon-32x32.png index 46ca04dee..1aa11955d 100644 Binary files a/public/img/icons/favicon-32x32.png and b/public/img/icons/favicon-32x32.png differ diff --git a/public/img/icons/msapplication-icon-144x144.png b/public/img/icons/msapplication-icon-144x144.png index 7808237a1..443baa2c2 100644 Binary files a/public/img/icons/msapplication-icon-144x144.png and b/public/img/icons/msapplication-icon-144x144.png differ diff --git a/public/img/icons/mstile-150x150.png b/public/img/icons/mstile-150x150.png index 3b37a43ae..c8ce73a3c 100644 Binary files a/public/img/icons/mstile-150x150.png and b/public/img/icons/mstile-150x150.png differ diff --git a/public/img/icons/safari-pinned-tab.svg b/public/img/icons/safari-pinned-tab.svg index e44c0d5b0..15d957488 100644 --- a/public/img/icons/safari-pinned-tab.svg +++ b/public/img/icons/safari-pinned-tab.svg @@ -1,3 +1,226 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/App.vue b/src/App.vue index e63adf97e..b8481b826 100644 --- a/src/App.vue +++ b/src/App.vue @@ -169,20 +169,12 @@ > Turn on Notifications -
- - -
+ @@ -238,6 +230,10 @@