Releases: weaponsforge/my-phonebook
my-phonebook_v2.1.1
Summary
November 1, 2024
- Fix: create a temporary .env file on scheduled docker image pull
What's Changed
- v2.1.1 by @weaponsforge in #146
Full Changelog: v2.1.0...v2.1.1
my-phonebook_v2.1.0
Summary
October 4, 2024
- Feat: deploy the latest development images to Docker Hub, #142
- Feat: pull the development images every 2 months to keep them active in the free Docker Hub account
- Feat: allow debugging the server running in the container in VSCode
- Fix: use actions upload/download artifact v4, #140
What's Changed
- feat: deploy development images to docker hub by @weaponsforge in #143
- fix: use actions upload/download artifact v4 by @weaponsforge in #145
- v2.1.0 by @weaponsforge in #144
Full Changelog: v2.0.4...v2.1.0
my-phonebook_v2.0.4
Summary
July 14, 2024
- Hot reload NextJS and nodemon on Docker desktop (WSL2), #137
What's Changed
- Fix/weaponsforge 137 by @weaponsforge in #138
- v2.0.4 by @weaponsforge in #139
Full Changelog: v2.0.3...v2.0.4
my-phonebook_v2.0.3
Summary
May 28, 2023
- When visiting the
/
route:- Redirect signed in users to the
/contacts
page - Redirect the signed-out users to the
/login
page
- Redirect signed in users to the
- When visiting the login page
- Redirect signed in users to the
/contacts
route
- Redirect signed in users to the
- Set
animate=true
as default - Set the default theme to
light
- Updated / fix the
useSyncLocalStorage
JSON.parsing
What's Changed
Full Changelog: v2.0.2...v2.0.3
my-phonebook_v2.0.2
Summary
April 27, 2023
NOTE: This Release completes MyPhonebook v1 Beta version
- Fix the actionCode URL sent in the account email verification for the v2.0.1 production website by setting the production website's URL in the server's
CLIENT_WEBSITE_URL
env variable - Attach the requesting whitelisted domain's (root) origin in the CSV/PDF export API's
Access-Control-Allow-Origin
response header instead of theCLIENT_WEBSITE_URL
variable value, #118 - Display the resend email verification link in the /recoverPassword page
- Append the
NEXT_PUBLIC_BASE_PATH
in account-related links on the production website. - Minor URL.createObjectURL optimizations
What's Changed
- Fix/weaponsforge 118 by @weaponsforge in #119
- v2.0.2 by @weaponsforge in #120
Full Changelog: v2.0.1...v2.0.2
my-phonebook_v2.0.1
Summary
April 25, 2023
- Update use-sync-v to v2.0.19
useSyncQueryV
data is now cached by default
- Cache the /contacts thumbnail photos, #115
- Re-download an updated Contact photo thumbnail in the /contacts page
What's Changed
- added profile picture cache on global var by @vikyw89 in #116
- v2.0.1 by @weaponsforge in #117
Full Changelog: v2.0.0...v2.0.1
my-phonebook_v2.0.0
Summary
April 25, 2023
- Change password feature inside the /settings page, #30
- Sidebar re-design
- Export all Contacts or selected Contacts to CSV/PDF from the sidebar Download tab, #43
- Update use-sync-v version to v2.0.16
- Upload a Contact photo when creating a new Contact or updating an existing Contact, #39, #104
- Delete a Contact photo along with Contact document deletion
- Linked profile_picture_url to actual picture from firebase
- 🆕 👉 Make Contact photos private - Store the Contact photo's Full Firebase Storage File path in the
profile_picture_url
field instead of the uploaded file's public StoragedownloadURL
- Display an option to resend the account verification email in the
- /register page - when trying to register an unverified email
- /account page - when signing in with an unverified email
- Use a stricter set of Firebase Storage Security Rules for Contact photo uploads, #50
- Display user-friendly generic Firebase permissions error messages when uploading Contact photos and creating/updating Contact documents
- Fix page errors in the /account?mode=resend_email_verification and mode=resetPassword pages
Firebase Storage Rules Updates
- Photo Image File Specifications
- The new Storage Rules accepts image files of type
.jpg
,.jpeg
,.png
,.gif
,.bmp
and.webp
- Image Files should not exceed
1 MB
(megabyte)
- The new Storage Rules accepts image files of type
- Filename
- The Firebase Storage file name should follow the pattern
photo_{docId}
without a file extension name. - For example, when uploading a "mountain.jpg" photo on Contact document
HgKAzTCzoHaIBSvqYYCAEZBO9Qp1
- Firebase Storage file name becomes
photo_HgKAzTCzoHaIBSvqYYCAEZBO9Qp1
- Firebase Storage file name becomes
- The Firebase Storage file name should follow the pattern
- Full Firebase Storage File path
- The Storage Rules only accepts a full Firebase storage file path following the pattern:
photos/{userId}/photo_{docId}
- User uploads to other paths are blocked
- Using "mountain.jpg" and the Contact document from the previous example,
- Full Firebase Storage file path becomes:
photos/XwLYjqlWbSMRJLqcwrS9wla1bzs1/photos_HgKAzTCzoHaIBSvqYYCAEZBO9Qp1
- The total Firebase Storage file path string length should not exceed
100
characters - The
{userId}
path segment refers to a signed-in user'sauthId
(uid). Users must be signed-in and have a valid Firebase Auth record:- emailVerified=true
- custom claims account_level=2
- Full Firebase Storage file path becomes:
- The Storage Rules only accepts a full Firebase storage file path following the pattern:
- Display an option to resend the account verification email in the
- /register page - when trying to register an unverified email
- /account page - when signing in with an unverified email
What's Changed
- Feature/viky 30 by @vikyw89 in #103
- export contacts UI by @vikyw89 in #105
- Feature/weaponsforge 43 by @weaponsforge in #106
- fix: bumped use-sync-v version and bug on /login by @vikyw89 in #108
- Feature/weaponsforge 39 by @weaponsforge in #109
- Update/weaponsforge 39 by @weaponsforge in #110
- Update/weaponsforge 39b by @weaponsforge in #111
- put real profile_picture on /contacts with initial as fallback by @vikyw89 in #113
- v2.0.0 by @weaponsforge in #114
Full Changelog: v1.0.6...v2.0.0
my-phonebook_v1.0.6
Summary
April 16, 2023
- Export contacts API endpoint on
/api/contacts/export
, #14- Exports contacts to a CSV file
- Exports contacts to a PDF file
- API documentation and example usage is available on the dev api docs for reference
- use route instead of state ref ui.. or show.. in the client app
- added sidebar
- adjusted mobile responsiveness
- Strict Firestore Security Rules for Issue #50
- Minimal Firebase Storage Security Rules for Issue #51
What's Changed
- Feature/weaponsforge 14 by @weaponsforge in #99
- Feature/viky 98 by @vikyw89 in #100
- Feature/weaponsforge 50 by @weaponsforge in #101
- v1.0.6 by @weaponsforge in #102
Full Changelog: v1.0.5...v1.0.6
Firestore Security Rules Summary
-
Allow writing (create, update, delete) documents under the
users
root-level collection only- success:
/users/{userId}
- fail:
/mycollection/{docId}
- success:
-
Allow writing (create, update, delete) of only uid-named documents under the
/users
root collection- success:
/users/{userId}
- fail:
/users/mydocument
- success:
-
Allow writing (create, update, delete) documents in allowed subcollections only. Currently, only the
users/{userId}/contacts
subcollection is allowed to contain documents- success:
/users/{userId}/contacts/{docId}
- fail:
/users/{userId}/tickets/{docId}
- success:
-
Allow reading documents only when a user is signed-in, the user has an
request.auth.account_level
key and the requested document falls under (or is) a/{userId}
document- success (requires sign-in):
/users/{userId}/contacts/{docId}
,/users/{userId}
- success (requires sign-in):
-
Disable creating new subcollections under documents in
users/{userId}/contacts/{docId}
- Creating subcollections under a document in a subcollection is disabled by default
- fail (creating mysubcollection):
/users/{userId}/contacts/{docId}/mysubcollection/{newId}
Create New Contact Document Rules
The following fields and their field type and character lengths are required when creating a new Contact under /users/{userId}/contacts/{docId}
. Adding extra fields will cause the Contact document creation to fail.
Field | Type | Length |
---|---|---|
doc_id | string | 50 |
email_address | string | 50 |
first_name | string | 50 |
last_name | string | 50 |
middle_name | string | 50 |
phone_number | string | 50 |
profile_picture_url | string | 600 |
sorting | string | 200 |
date_created | Firestore Timestamp | - |
date_updated | Firestore Timestamp | - |
Update Contact Document Rules
The following fields and their field type and character lengths are required when updating an existing Contact under `/users/{userId}/contacts/{docId}. Adding extra fields will also cause the Contact document update to fail.
Provide the Required fields and do not supply the Not Allowed fields when updating a Contact. One or more Optional fields may be set for update.
Required
Field | Type | Length |
---|---|---|
date_updated | Firestore Timestamp | - |
Not Allowed
Field | Type | Length |
---|---|---|
doc_id | string | 50 |
date_created | Firestore Timestamp | - |
Optional
Field | Type | Length |
---|---|---|
email_address | string | 50 |
first_name | string | 50 |
last_name | string | 50 |
middle_name | string | 50 |
phone_number | string | 50 |
profile_picture_url | string | 600 |
sorting | string | 200 |
Update User Profile Document Rules
The following fields and their field type and character lengths are required when updating an existing User profile document in /users/{userId}
. Adding extra fields will also cause the document update to fail.
Provide the Required fields and do not supply the Not Allowed fields when updating a User profile document. One or more Optional fields may be set for update.
Required
Field | Type | Length |
---|---|---|
date_updated | Firestore Timestamp | - |
Not Allowed
Field | Type | Length |
---|---|---|
doc_id | string | 50 |
date_created | Firestore Timestamp | - |
Optional
Field | Type | Length |
---|---|---|
email_address | string | 50 |
first_name | string | 50 |
last_name | string | 50 |
middle_name | string | 50 |
phone_number | string | 50 |
my-phonebook_v1.0.5
Summary
April 5, 2023
- Create a default (blank) user document after email verification under
/users/{authId}
after a successful email verification. #93 - Redirect to the
/contacts
page after a successful sign-in. - Dry-run
npm run export
on the GH actions lint.yml - Use the
use-sync-v
lib for managing the user auth states, an update for #76 - Remove the redux lib and related files
What's Changed
- Feature/weaponsforge 93 by @weaponsforge in #95
- Update/weaponsforge 76 by @weaponsforge in #96
- v1.0.5 by @weaponsforge in #97
Full Changelog: v1.0.4...v1.0.5
my-phonebook_v1.0.4
Summary
April 4, 2023
User Profile
Contacts
- View a contact document, #36
- View contacts list feature, #32
- Create a new contact feature, #34
- Update contact, #40
- Search and filter contacts feature
Other Updates
- Create the resend email verification page, #22 , #23
- Use descriptive text content on the account handler page (from email), with URL link back to the /login and /resend email verification pages #87
/contacts route UI - wired firestore, firebaseAuth to profile page
- Desktop and mobile layout adjustments
- Fix the
npm export
bug useSyncLocalStorage
hooks update- the old one returned
[value, setValue]
- the new one, only return value
- and the
setValue
is extracted to different function
- the old one returned
What's Changed
- Feature/weaponsforge 87 by @weaponsforge in #88
- Feature/viky 31 by @vikyw89 in #89
- Fix/vikyw 90 by @vikyw89 in #91
- Feature/viky 27 by @vikyw89 in #92
- v1.0.4 by @weaponsforge in #94
Full Changelog: v1.0.3...v1.0.4