diff --git a/.env.development b/.env.development new file mode 100644 index 00000000..9e5c0060 --- /dev/null +++ b/.env.development @@ -0,0 +1,4 @@ +# Only the variables that start with VUE_APP_ are seen in the application process.env in Vue. + +# this won't resolve as a URL on production; it's a URN only found in the test system +VUE_APP_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HNTZYJJXTGT0EZS3VEJGX7AK diff --git a/.env.production b/.env.production new file mode 100644 index 00000000..9adc667d --- /dev/null +++ b/.env.production @@ -0,0 +1,4 @@ +# Only the variables that start with VUE_APP_ are seen in the application process.env in Vue. +VUE_APP_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01GXYPFF7FA03NXKPYY142PY4H +VUE_APP_DEFAULT_ENDORSER_API_SERVER=https://api.endorser.ch +VUE_APP_DEFAULT_IMAGE_API_SERVER=https://image-api.timesafari.app diff --git a/CHANGELOG.md b/CHANGELOG.md index 94ec7a56..bab2bbc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,13 +6,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Environment variable for BVC meetings project +### Changed in DB or environment +- Test that a new browser session will get the right default API +- Test that a new browser session will send the right BVC meetings project + + +## [0.2.17] - 2024.03.01 - 3612ea42240c5e1b7d7eff29a39ff18f1b869b36 +### Added +- Shortcut page for Bountiful Voluntaryist Community +### Changed +- More readable, targeted summaries in home-page feed items ### Changed in DB -- ? +- Nothing -## [0.2.14] - 2024.02.14 +## [0.2.14] - 2024.02.14 - 5f9edea1167dbfb64e16648764eed8c09b24eaeb ### Changed -- Combine all service worker scripts into a single file +- Combine all service worker scripts into a single file. ### Changed in DB - Nothing diff --git a/README.md b/README.md index fa0569d4..04286a07 100644 --- a/README.md +++ b/README.md @@ -32,21 +32,22 @@ npm run lint * `npx prettier --write ./sw_scripts/` -* Update the project.task.yaml & CHANGELOG.md & the version in package.json, run `npm install`, and commit. +* Update the project.task.yaml & CHANGELOG.md & the version in package.json, run `npm install`. -* [Tag wth the new version.](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) +* If production: change package.json to remove "_Test". Also record what version is on production. -... though maybe you do that after testing and release, since that isn't used in the build (and you often increment a lot during testing). - -* 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` +* `npm run build-dev` for test servers or `npm run build` for production. * Get on the server and back up the time-safari folder. * `rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntutest@test.timesafari.app:time-safari` -* Revert src/constants/app.ts and package.json (if that was prod), edit package.json to increment version & add "-beta", `npm install`, and commit. Tag if you didn't before. Also record what version is on production. +* Revert src/constants/app.ts and package.json (if that was prod). + +* Commit changes. Record the new hash in the changelog. Edit package.json to increment version & add "-beta", `npm install`, and commit. Also record what version is on production. + +* [Tag with the new version.](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) + diff --git a/package-lock.json b/package-lock.json index 213d10b3..6be25ee3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "TimeSafari_Test", - "version": "0.2.15-beta", + "version": "0.2.18-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "TimeSafari_Test", - "version": "0.2.15-beta", + "version": "0.2.18-beta", "dependencies": { "@dicebear/collection": "^5.3.5", "@dicebear/core": "^5.3.5", @@ -17,6 +17,7 @@ "@pvermeer/dexie-encrypted-addon": "^3.0.0", "@tweenjs/tween.js": "^21.0.0", "@types/js-yaml": "^4.0.9", + "@types/luxon": "^3.4.2", "@veramo/core": "^5.4.1", "@veramo/credential-w3c": "^5.4.1", "@veramo/data-store": "^5.4.1", @@ -41,7 +42,7 @@ "js-generate-password": "^0.1.9", "js-yaml": "^4.1.0", "localstorage-slim": "^2.5.0", - "luxon": "^3.4.3", + "luxon": "^3.4.4", "merkletreejs": "^0.3.11", "moment": "^2.29.4", "notiwind": "^2.0.2", @@ -9171,6 +9172,11 @@ "@types/geojson": "*" } }, + "node_modules/@types/luxon": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==" + }, "node_modules/@types/mime": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", @@ -20252,9 +20258,9 @@ } }, "node_modules/luxon": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz", - "integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", "engines": { "node": ">=12" } diff --git a/package.json b/package.json index 80b5bb21..17b4044f 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "TimeSafari_Test", - "version": "0.2.15-beta", + "version": "0.2.18-beta", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", + "build-dev": "vue-cli-service build --mode development", "lint": "vue-cli-service lint" }, "dependencies": { @@ -17,6 +18,7 @@ "@pvermeer/dexie-encrypted-addon": "^3.0.0", "@tweenjs/tween.js": "^21.0.0", "@types/js-yaml": "^4.0.9", + "@types/luxon": "^3.4.2", "@veramo/core": "^5.4.1", "@veramo/credential-w3c": "^5.4.1", "@veramo/data-store": "^5.4.1", @@ -41,7 +43,7 @@ "js-generate-password": "^0.1.9", "js-yaml": "^4.1.0", "localstorage-slim": "^2.5.0", - "luxon": "^3.4.3", + "luxon": "^3.4.4", "merkletreejs": "^0.3.11", "moment": "^2.29.4", "notiwind": "^2.0.2", diff --git a/project.task.yaml b/project.task.yaml index 4ed2a306..4bb16bd8 100644 --- a/project.task.yaml +++ b/project.task.yaml @@ -5,43 +5,40 @@ tasks : - .1 on ideas, put an "x" to close it - .2 fix give dialog from "more contacts" off home page to allow giving to this user -- 01 in the feed, group by project or contact or topic or time/$ (via BC) -- .2 anchor hash into BTC - -- .1 when gave to a project, say "gave to project" - .2 fix bottom of project selection map, where the icons are hidden but a tap goes to the icon's page -- 01 separate not-on-platform vs totally anonymous; terminology "unidentified"? +- .5 stop from seeing an error on the first page when browser doesn't support service workers (which I've seen on iPhone; visible in Firefox private window) +- .2 don't show a warning on a totally new project when the authorized agent is set +- .2 anchor hash into BTC +- .2 list the "show more" contacts alphabetically -- 01 page for BVC +- 32 image on give : + - Show a camera to take a picture + - Scale the image to a reasonable size + - Upload to a public readable place + - check the rate limits + - use CID (hash?) + - put the image URL in the claim + - Rates - images erased? + - image not associated with JWT ULID since that's assigned later - 24 compelling UI for credential presentations - discover who in my network has activity on a project + - 24 compelling UI for statistics (eg. World?) -- .5 stop from seeing an error on the first page when browser doesn't support service workers (which I've seen on iPhone; visible in Firefox private window) +- 01 in the feed, group by project or contact or topic or time/$ (via BC) +- 01 separate not-on-platform vs totally anonymous; terminology "unidentified"? - .2 add links between projects -- 32 image on give : - - Show a camera to take a picture - - Scale the image to a reasonable size - - Upload to a public readable place - restrict size, catch all errors, multiple file types - - check the rate limits - - use CID (hash?) - - put the image URL in the claim - - Rates - images erased? - - image not associated with JWT ULID since that's assigned later - - 24 make the contact browsing on the front page something that invites more action -- .2 list the "show more" contacts alphabetically - .5 change server plan & project endpoints to use jwtId as identifier rather than rowid - 16 edit offers & gives, or revoke allowing re-creation - .1 When available in the server, give message for 'nonAmountGiven' on offers on ProjectsView page. - .1 Add help instructions for "Encryption key has changed" error. (It is a problem if localStorage is cleared, but the contacts & settings remain and they have to restore their seeds.) -- .5 add more detail on TimeSafari.org - .1 show better error when user with no ID goes to the "My Project" page -- 08 add button to front page to prompt for ideas for gratitude : - - show previous on "Your" screen - - checkboxes - randomize vs show in order, show non-person-oriented messages, show only contacts, show only projects +- 01 in front page prompt for ideas for gratitude : + - randomize (not show in order) + - checkboxes - show non-person-oriented messages, show only contacts, show only projects - .5 add a notice on the front page if their notifications are off - 08 allow user to add a time when they want their daily notification @@ -80,6 +77,7 @@ tasks : - create a help-desk document & add screenshots - .1 update "offer" units to have same functionality as "give" units +- .5 add a link to any 'give' records that fulfill an offer on ClaimView - 01 on home page, prompt for install check in addition to "supports notifications" check (since they won't get notified if Chrome is closed) - 01 on Mac (& Windows?) desktop, add a help blurb so that they can find it again (since it doesn't show in Application list) - bug (that is hard to reproduce) - got error adding on Firefox user #0 as contact for themselves diff --git a/src/App.vue b/src/App.vue index 2d8935fa..484d0153 100644 --- a/src/App.vue +++ b/src/App.vue @@ -288,21 +288,14 @@ interface VapidResponse { }; } -import { DEFAULT_PUSH_SERVER } from "@/constants/app"; +import { DEFAULT_PUSH_SERVER, NotificationIface } from "@/constants/app"; import { db } from "@/db/index"; import { MASTER_SETTINGS_KEY } from "@/db/tables/settings"; import { sendTestThroughPushServer } from "@/libs/util"; -interface Notification { - group: string; - type: string; - title: string; - text: string; -} - @Component export default class App extends Vue { - $notify!: (notification: Notification, timeout?: number) => void; + $notify!: (notification: NotificationIface, timeout?: number) => void; b64 = ""; serviceWorkerReady = false; @@ -589,7 +582,7 @@ export default class App extends Vue { } }) .catch((error) => { - console.log("Push provider server communication failed:", error); + console.error("Push provider server communication failed:", error); return false; }); @@ -604,7 +597,7 @@ export default class App extends Vue { return response.ok; }) .catch((error) => { - console.log("Push server communication failed:", error); + console.error("Push server communication failed:", error); return false; }); diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue index fbc103d9..8583dd5d 100644 --- a/src/components/GiftedDialog.vue +++ b/src/components/GiftedDialog.vue @@ -75,6 +75,8 @@ diff --git a/src/views/QuickActionBvcEndView.vue b/src/views/QuickActionBvcEndView.vue new file mode 100644 index 00000000..f158fbb0 --- /dev/null +++ b/src/views/QuickActionBvcEndView.vue @@ -0,0 +1,377 @@ + + + diff --git a/src/views/QuickActionBvcView.vue b/src/views/QuickActionBvcView.vue new file mode 100644 index 00000000..67c5f653 --- /dev/null +++ b/src/views/QuickActionBvcView.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/views/SearchAreaView.vue b/src/views/SearchAreaView.vue index 18de5618..4b3a7501 100644 --- a/src/views/SearchAreaView.vue +++ b/src/views/SearchAreaView.vue @@ -105,21 +105,15 @@ import { LTileLayer, } from "@vue-leaflet/vue-leaflet"; +import QuickNav from "@/components/QuickNav.vue"; +import { NotificationIface } from "@/constants/app"; import { db } from "@/db/index"; import { BoundingBox, MASTER_SETTINGS_KEY } from "@/db/tables/settings"; -import QuickNav from "@/components/QuickNav.vue"; const DEFAULT_LAT_LONG_DIFF = 0.01; const WORLD_ZOOM = 2; const DEFAULT_ZOOM = 2; -interface Notification { - group: string; - type: string; - title: string; - text: string; -} - @Component({ components: { QuickNav, @@ -130,7 +124,7 @@ interface Notification { }, }) export default class DiscoverView extends Vue { - $notify!: (notification: Notification, timeout?: number) => void; + $notify!: (notification: NotificationIface, timeout?: number) => void; isChoosingSearchBox = false; isNewMarkerSet = false; diff --git a/src/views/SeedBackupView.vue b/src/views/SeedBackupView.vue index 24e55b4a..7d6f8148 100644 --- a/src/views/SeedBackupView.vue +++ b/src/views/SeedBackupView.vue @@ -65,25 +65,20 @@