All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Replace share option "Share C2PA Photo" with "Share Asset Profile"
- Prevent user from performing List in CaptureClub with the same asset twice.
- Prevent race condition when creating network action history record.
- Network action order detail page.
- Display a message on activities page if no transactions or network action orders found.
- Have activities display default to Capture transactions.
- Error message should be displayed at network action orders page. Like when no internet connection.
- Fix ios activity details page cid overflow. #1383
- Rename "More actions" to "Network actions."
- Connect points displayed on the wallets page to real backend.
- Have Capture blockchain certificate links to the new authmedia asset profile page.
- Better error display on wallets and transfer page.
- Check internet connection and prevent users from visiting transfer page if no internet connection.
- Hide buy NUM button.
- Fix network action order history getting generated even when confirm order failed.
- A whole new wallets page
- A new tab in activities page to display network action order history
- Change num token icon from the black one to the blue one
- Fix activity details cid text overflow. #1167
- Remove add to contacts checkbox when the receiver already exists in contacts
- Have message default to asset caption when send
- Update edit asset caption help text
- Display edit icon when no caption
- Removed the new introductory UI/UX for new users
- Add NUM balance loading indicator
- Add hyperlink for users to view NUM wallet transaction history on EtherScan/BscScan
- New introductory UI/UX for new users
- Show custody wallet balance instead of Capture wallet balance
- Fix null message overwriting asset caption when send. #1166
- Avoid bluetooth initialization at App startup.
- Unuploaded Captures disappear after user pulls to refresh. #918
- Add GoPro support (hidden by default)
- Support NUM payment for network applications.
- Do not show the private key directly. Users need to agree with the warnings to see and copy their private key.
- Make the default language of Camera UI to be
en
instead ofzh-TW
.
- Can edit caption of Captures.
- Show warnings when users try to copy private key.
- Show "Deregister from network" option when uploading is not completed.
- Change network application dialog to support selection input and input validation.
- Do not show Capture options menu when post-creation workflow has not been completed yet
- Fix camera activity issue on Android 11 (API level 30).
- Show ERC20 and BEP20 NUM tokens in profile page.
- Add migration for APPs upgrading from versions before 0.42.0.
- Change network application fields to meet the new Bubble database schema.
- Update Android target version to Android 11 (API level 30).
- Fix Capture icon display issue in signup page.
- Add "More Actions" in the Capture options menu, which will open a page of network applications.
- Support posting Capture in CaptureClub.
- Upgrade all dia-backend API to v3.
- Change the "send" icon to "share" icon in Capture Details page.
- Can see caption of every Capture
- Can see NFT address and token ID of every Capture
- Update "Public Key" text to "Wallet Address" in Profile page
- Update colors, icon, and splash screen to the new brand theme
- Incorrect verification code length validation caused by improper input type.
- Missing trusted client key variable settings in GitHub workflow template.
- Remove the ownership transfer restriction for not-from-store Captures.
- Missing CI trusted client key variable
- Show CAPT balance in profile page
- Can mint NFT token for asset in capture options menu
- Can either "Copy IPFS link" or "Share C2PA photo" by clicking the send button
- Create asset using v3 API
- Change descriptions for actions in capture option menu
- Dark mode display issue on Android devices
- Phone verification code form duplicate paste issue. #839
- Homepage side menu display issue.
- Add syncing mechanism with backend asset wallet to use consistent signing keys even if App is uninstalled and resinstalled.
- Upgrade to Angular 12 and Webpack 5.
- Share CAI-injected photo so that photos can speak for themselves.
- Shared photo can be parsed by media-reader only when sharing them as "files". (e.g. sharing with gmail/gdrive, etc)
- iOS: Share as "saving to files" instead of "saving to photos".
- APPs like instagram, facebook will compress the photo and the photo can not be parsed with our media-reader.
- Shared photo can be parsed by media-reader only when sharing them as "files". (e.g. sharing with gmail/gdrive, etc)
- Show capture images/videos in their original aspect instead of fixed 1:1 ratio, which will usually crop them.
- Update iOS permission usage description.
- Allow sending PostCapture acquired from store.
- Can pull down to refresh Capture tab to sync with backend.
- Add back all changes in 0.36.0 and fixed dark mode display issue.
- Revert all changes in 0.36.0
-
Add phone verification and email verification feature. #781 #783
-
Darkmode for Android and iOS. #678 #782 #796
-
Generate v2 signed message and signature and migrate data when upgrading. #778 #779
-
Activity text
Accepted
changed toReceived
.
- iOS video recording display issue. #747
- Attach user token when opening CaptureClub within the App.
- Fix broken-image icon appears in 0.34.3
- Add a check to fix incorrect thumbnail file-extensions when loading URLs
- Improve Home page initial loading time and UX.
- Fix video range request issue on Android. #754
- Use sha256sum instead of full file content base64 to reduce serialized
signedTargets
size to avoid crashing caused by signing a very large string with Web3.
- Remove incomplete dark mode styling
- Show different background color based on collection type.
- Implement checkbox to add PostCapture receiver to contacts.
- Avoid prefetching
DiaBackendAsset
s withoutsource_transaction
.
- Show PostCaptures transfered back to its original owner.
- Fix height of media on
SendingPostCapturePage
.
- Open certificate on clicking media ID.
- Show store icon on PostCapture grid if from store.
- Use ETH wallet signature. #692
- Fix media height on
DetailsPage
. - Show loading animation on media background.
- Bump node.js version to 16.2.0.
- Avoid screen rotation on iOS. #700
- Add back the missing information page.
- Fix details page toolbar oversize on iOS devices. #691
- Align slides on details page to top.
Re-release due to exception in Action workflow.
- Implement swipable details page. #689
- Support PostCapture transfer. #687
- Support PostCapture deletion. #686
- Display Not Disclosed if no created timestamp.
- Remove email icon on friend-invitation dialog.
- Fix geolocation coordinate to 6 digits.
- Maintain ignored transactions from DIA backend. #690
- Make series details page readonly.
- Replace deprecated
FirebaseInstanceId
withFirebaseMessaging
token. #688
- Remove email icon on
friend-invitation-dialog
. - Allow thumbnail not found error from DIA backend and show broken image icon if thumbnail cannot be found.
- Fix floating point of geolocation to 6 digits.
- Show video recording limitation dialog.
- Support large media as Capture assets. #683
- Allow
deploy-app-store
inpre-release
workflow to be failed.
- Support video recording.
- Support GIF as Capture media asset.
- Add Play and App Store badges on README.
- Reorganize shared services, components and modules.
Re-release for exceptions occur in pre-release workflow.
- Replace
DiaBackendAsset.parsed_meta.mime_type
withDiaBackendAsset.asset_file_mime_type
to avoid undefined value.
Re-release for exceptions occur in pre-release workflow.
- Switch to Capture tab (the leftmost) after clicking capture button.
- Revert accidentally reverted home page tab order and icons.
- Fix typo:
BETTERY_LEVEL
->BATTERY_LEVEL
.
- Move CaptureClub link from tab buttons to side menu.
- Revert Sentry error report integration.
- Integrate Sentry error report. #641
- Show optional menus without network connection on capture-details page.
Re-release to update Android versionCode
.
- Show video icon on thumbnail if the media type is video. #629
- Catch and toast error messages on HTTP error responses.
- Enable CaptureClub.
- Fix orientation bug on Android API 26.
- Replace
MatBottomSheet
withActionSheetController
to handle Android back button. #628 - Change NS usage description to English.
- Support video view. #627
- Re-add series view.
- Show IPFS supporting files if the URL is valid.
- Move the order of optional menus on PostCapture details page.
- Remove view on CaptureClub option on Capture details page.
- View IPFS supporting files on in-app browser.
- Show view CaptureClub option if the source of the DIA backend asset is 'store'.
This release is for CaptureClub beta-launch event. Thus, we need to fix the minor version to 27 even though we have added features.
- Show supporting video on IPFS. #640
- Add option to view asset on CaptureClub.
- Remove CaptureClub in home drawer.
- Revert home tab icons.
- Move CaptureStore tab to drawer.
- Update tutorial screenshots.
- Update i18n for NS usage descriptions.
- Update
EndBug/version-check
to v2 to avoidTypeError: Cannot read property 'id' of undefined
.
- Change NS usage description to English.
- Remove tab change animation to avoid the waiting time after capturing.
- Update optional icons on tutorial images. #626
- Show tutorial for store/series release. #622
- Change
selectedIndex
of home tabs to capture tab after capturing. #623
- Replace series view and store tab with coming soon images. #625
- Update tutorial images and text.
- Update tutorial pages.
- Remove mock from-store icons.
- Bump dependecies and enable dependabot integration.
- Replace
ion-img
withimg
to avoid a lazy loading bug.72b260
- Connect series page with DIA backend series APIs. #618
- Improve performance of loading image thumbnail after capturing. #616
- Enable production mode.
- Show offline icon on avatar when no network connection. #615
- Refresh PostCaptures correctly with local cache. #614
- Show editable avatar on profile page. #608
- Move network status bar below
ion-segment
on PostCapture tab for consistency. #607 - Make contacts header style consistent with other headers. #605
- Prevent user from dismissing prefetch dialog by clicking backdrop.
- Use native
getUri
when reading large image. #604
- Enable AOT on build.
- Migrate linter from TSLint to ESLint.
- Use lodash-es for tree-shaking.
- Show network status bar on PostCapture tab. #601
- Cache PostCaptures in memory. #600
- Implement fullscreen image viewer. #602
- Implement contacts page to remove contacts. #599
- Upgrade Angular from 10.0 to 11.0. #603
- Show avatar on contact selection dialog. #597
- Display username instead of email. #590
- Change the order of Store tab.
- Change in-app browser toolbar color to the primary color of the theme.
- Avoid fetching expired PostCaptures created before onboarding timestamp. #596
- Open store with in-app browser. #588
- Implement better validation geolocation for showing geo icon. #588
- Revert #576 for stable performance on mobile devices. #580
- Refresh PostCaptures when accept transaction. #581
- Fetch returned PostCaptures on app start. #587
- Swap the order of PostCapture and Capture tabs. #577
- Implement series page with placeholding data. #574
- Get thumbnail source with native URI instead of DataURL. #576
- Open Google maps with internal browser instead of external app.
- Prefetch 9 PostCaptures upon initializing PostCapture tab. #572
- Remove geolocation icons on PostCapture tab. #569
- Display username instead of email on PostCapture details page. #570
- Save iOS build number only if the version number increased.
- Add the missing translations on PostCapture details page. #571
- Implement avatar uploading. #565
- Display profile information on Capture tab. #562
- Update the layout of PostCapture tab to grid layout. #564
- Revert string 'Moment' to 'Capture'. #566
- Display username instead of email on Capture details page. #563
- Add upload-google-drive-qa job to pre-release workflow.
- Change the app name from Capture Lite to Capture for iOS.
- Add username editing. #550
- Open Google Maps with extenrnal URL on clicking localtion info. #548
- Implement password-resetting dialog. #549
- Improve register performance. #551
- Remove calling
logout
endpoints on logging out. #547
- Show build number on Slack message. #546
- Remove all user data on logging out. #545
- Add CI/CD for iOS. #544
- Implement options menu for
PostCaptureCard
. #536
- Update the title of error dialog on prefetching. #533
- Reduce the size of PostCapture sender email. #530
- Disable tab pagination on
HomPage
. #537 - Adjust he position and size of the capture status-preview icons. #537
- Remove the title on
CaptureDetailsPage
. #538
- Display stroked status style on transactions page if the asset is not owned by the user. #526
- Update tutorial images. #527, #524
- Adjust the items of options menu on capture-details page. #525
- Replace media-query with safe-area properties. #525
- Remove email confirmation page after signup as users no longer need to verify their emails before using the app. #523
- Implement capture sharing. #499
- Show capture status icons on capture-tab. #509
- Show certificate on authmedia by clicking media ID. #512
- Remove new year frame when sharing. #507
- Fix error handling on login
HttpErrorResponse
. #508 - Remove "view more" information on
PostCaptureCard
#510
Re-release due to an internal error on releaseing.
- Fix unintended pre-fetching conditions. #501
- Adjust tutorial slides layout.
Re-release due to an internal error on releaseing.
- Force screen orientation to portrait on Android devices to avoid layout error.
- Adjust tutorial layout and i18n. #498
- Show error dialog on pre-fetching errors. #496
- Format tutorial pages. #495
- Move tab toolbar to bottom on home page. #493
- Use "moment" to replace "photo". #497
- Remove beta string on splash screen for Android.
- Avoid redundant writing of original image when update
ProofRepository
withupdate()
. #489 - Avoid some corner cases when prefetching without network connection. #490
- Prevent prefetching dialog from displaying again when the user decides to skip. #492
- Fix the toolbar height on Activity and CaptureDetails pages in iOS devices. #492
- Remove
isNewLogin
condition wrappingredirectOnboarding()
on home page. - Set
isNewLogin
tofalse
before checking if to prefetch dialog. - Set
hasPrefetchedDiaBackendAssets
totrue
after migration.
- Migrate
Proof.diaBackendAssetId
. #482 - Determine if pre-fetch by remote asset count. #483
- Change tab labels to icons. #485
- Migrate data only if user logged in first time.
- Add order parameter on querying DIA backend transaction.
- Use local font to load icons offline. #479
- Show prefetching/tutorial pages only on first time login. #480
Re-release due to an internal error on uploading to Play Store.
- Implement uploading bar. #455
- Resume uploading after reconnection. #457
- Display spinner on loading captures. #459
- Show contact information on about page.
- Implement customized GPS cache policy. #454
- Improve capture performance. #444
- Load PostCaptures from remote only.
- Remove buggy PostCapture deletion feature.
- Display photo directly after captured. #442
- WORKAROUND: remove asset cache and refresh asset after sending PostCapture.
- Use
shareReplay({bufferSize: 1, refCount: true})
to replaceshare()
to avoid the sharedObservable
from not emitting on subscribe.
- Implement deletion for PostCaptures. #434
- Fix PostCaptures accidentally displayed on Capture tab. #431
- Show resend activation email button on user-not-active-error. #420
- Hide share button on PostCapture preview. #426
- Fix iOS native i18n. #418
- Fix font and text position on tutorial page. #410
- Add padding to empty inbox text. #409
- iOS splash screen has Beta mark now.
- Fix iOS push notifcation issues. #337 #365
- Login will timeout after 20 seconds to prevent infinite loading popup.
- Show tutorial slides when users open the app first time. #376
- Share watermarked PostCapture to other apps. #346
- Show migrating and syncing message on home page. #370
- Avoid captures disappear when loading thumbnails. #361
- Show push notification on foreground and background with Android and iOS devices. #373
- Fix typos.
- Add
beta
string to the splash image. #360
- Sort captures descendingly. #358
- Collect complete device info provided by Capacitor Device plugin. #359
- Fix the view-all button out of place in WebKit browser in iOS devices. #348
- Add extension to files stored in
ImageStore
. #345
- Fix drop pictures during capturing. #341
- Change the
background-size
tocover
for capture thumbs. #343 - Rename
nothing-here
toempty-inbox
. #342 - Migrate
DiaBackendAuthService
. #340 - Handle geolocation error message for native devices. #328
- Limitation: Cannot receive push notification on iOS. Inbox on iOS is only updated when the App is started.
- Migrate old assets and proofs by fetching from DIA backend.
- Migrate the old
FileStore
toImageStore
.
- Use
r0adkll/upload-google-play@v1.0.7
to avoidThis edit has already been successfully committed, please create a new Edit.
error.
- Remove
npm run test-ci
during pre-release CD.
- Update version code for Android to avoid releasing conflicts.
- Show error message with snackbar when fails to get geolocation information. #308, #267
- Show contact list on contact selection dialog. #307, #230
- Improve contacts and transactions loading time with repository pattern. #226
- Implement the re-upload mechanism on publishing Proofs to DIA backend. #321, #217, #292, #212
- Show notification when receive new PostCapture. #310, #295
- Show notification when a PostCapture has expired. #229
- Show a badge indicating new items in inbox. #190
- WORKAROUND: Limit to display 10 PostCaptures to avoid #291.
- Update UI to follow the design. #320
- Use repository pattern to implement
DiaBackendContactRepository
andDiaBackendTransactionRepository
.
- Remove opening dashboard on clicking media ID. #324
- Add transaction-details page. #286
- Display different status badge to distinguish different "In Progress" activity. #199
- Rewrite the tests of
NotificationService
withMockLocalNotificationsPlugin
. - Rewrite tests for
PreferenceManager
service by mocking CapacitorStorage
plugin. - Rewrite the interface of
ConfirmAlert
with tests. - Add tests for
LanguageService
. - Change the pre-release branch to master.
- Rename
NumbersStorageBackend
withDiaBackend
. - Implement
NotificationService.notifyOnGoing
method. Close #254. - Apply on-going notification to
CollectorService.runAndStore
method. - Apply on-going notification to
DiaBackendAssetRepository.add
method. - Reimplement simplified
IgnoredTransactionRepository
. - Extract
/api/**/transactions
endpoints to standalone service. - Extract
/api/**/assets
endpoints to standalone service. - Extract
/auth
endpoints to standalone service with tests. - Add readonly modifier to most dictionary interface.
- Improve the import location for
secret.ts
from set-secret preconfig.
- Fix white margin on iOS 13.7 iPhone 6s Plus. #289
- Fix background color of the PostCapture image. #285
- Fix unified font size on Capture tab. #284
- Fix cannot scroll on asset page. #282
- Rename
FileStore
toImageStore
for self-explanatory naming.
- Lazily generate thumbnail and cache it to reduce memory use. #287, #288
- Remove confusing hash on collecting notifications.
- Migrate to Node 14.x. #279
- Add tests for
CapacitorFactsProvider
. - Add tests for
WebCryptoApiSignatureProvider
. - Remove
MemoryTable
by mocking CapacitorFilesystem
plugin. #42 - Implement
ImageStore
to randomly and safely store files with base64 string. - Extract
serializeSortedSignedTargets
method fromProof
class andCollectorService
.
- Fix warning: Form Submission Canceled. #251
- Fix captures cannot be stored on mobile devices. #283
- Extract binary (base64) string from
Proof.assets
property. - Remove the proof after sending the PostCapture.
- Improve the performance of Proof saving and loading.
- Reduce the memory use with the operations on
Proof
instances. - Use
async
pipe to resolveProof
thumbnail independently. - Refresh captures on home page only when a
Proof
get published.
- Extract binary (base64) string from
- Fix
CapacitorFilesystemTable.initialize
may cause a race condition.
- Increase the timeout for QA release and Android build to 60 minutes.
- Use
SharedModule
andSharedTestingModule
to import all common module at once. #253
- Unable to display captures.
- WORKAROUND: Store expired PostCapture with a very fragile implementation. #229
- WORKAROUND: Polling to get inbox badge count. #190
- Crop image with fixed ratio. #235
- Open dashboard link on clicking asset ID. #197
- Update UI and color theme. #228
- Remove notification after a proof published or collected.
- Create GitHub Release page only if deploy on Play Console successfully.
- Refactor
Proof
class. #252 - Add formatter and linters. #180
- Refactor
NotificationService
with mock for test. #236 - Use
Promise
to replaceObservable
only emitting once. #233
- Fix PostCapture UI. #276
- Align title in header to center. #260
- Update style of the "View-All" button on the capture details page. #260
- Fix the ripple effects for buttons. #260
- Fix the scrolling on PostCapture tab. #260
- Fix warning:
ExpressionChangedAfterItHasBeenCheckedError
#260
- Remove demo app section on README.
- Update
r0adkll/upload-google-play
from v1.0.4 to v1 to avoid using deprecatedset-env
command in Action.
- Require user name on sign-up page. #224
- Show "Nothing here" on inbox page when no item to show. #222
- Rename "publishing proof" to "registering asset" #223, #208
- Update UI components and color scheme to follow the Figma design. #255, #228, #218, #219, #235
- Change the notification small icon to launcher icon. #237
- Improve stability and reliability of data persistence. #227
- Rename app name to Capture and proof detials to capture details. #201 #202
- Show the sender instead of owner on app-post-capture-card. #198
- Release APK connecting to prod-site.
- Workaround: Catch Error from Capacitor.Filesystem.deleteFile on Android or iOS Devices. #193
- Workaround: fix different naming for information. Use constant string for the names of information.
- Fix location cannot display on asset page in zh-tw. #187
- No response on clicking Ignore button the on inbox page. #184
- The copy button of the media ID on the asset page only copy "mid-here" string to the clipboard. #185
- The operations in
Plugin.BackgroundTask
from Capacitor is running outside ofngZone
, which causes the change detection fails. #186
- PostCapture MVP. #182, #170, #171
- Add terms and policy links to singup page.
- Update UI design. #178
- Fix toolbars (headers) overlap on iOS devices. #179
- Build capture wall. #141
- Build pages for contact selection and sending PostCapture. #143, #147
- Configure the CD with GitHub Action to deploy Android release to Google Play Console on QA release. #144
- Remove unnecessary
header.component
. #151 - Merge the
internal
branch intodevelop
. From now on, we only maintain the develop branch with secrets environment variables to access storage backend. - Improve the architecture for router guards.
- Rebuild most pages with
@angular/material
library, including: #160- rebuild
storage.page
with PostCapture tab - rebuild
about.page
- add
profile.page
- add
privacy.page
- rebuild
settings.page
- rebuild
proof.page
- rebuild
information.page
#142 - rebuild
signup.page
- rebuild
login.page
- rebuild
- Remove unnecessary abstraction in UI:
- multiple publishers on
settings.page
- multiple information providers on
information.page
- multiple signatures on
information.page
- multiple publishers on
- Update Ionic color theme to be consistent with design and
@angular/material
.
- Cascadingly remove proof thumb. #149
- Fix
this.router.navigate.(['..'])
not working bug.
- Add missing zh-TW translations.
- Add zh-Tw language support.
- Add login and signup pages.
- Revert the accidentally overridden drawer menu.
- Add settings and drawer. #97
- Group photos by date. #95
- Add ALL/TAG view modes on the storge page.
- Add iOS platform support.
- Improve storage performance. #85
- Fix the app does not catch the image from external camera app when the available memory is low on Android. #83
- Display version on the settings page. #20
- Implement the preferences for CapacitorProvider. #24
- Implement numbers-storage publisher. #28 #25
- Add launcher icon and splash screen. #22
- Use PKCS#8 and SubjectPublicKeyInfo format in ECDSA signatures.
- Change the format of SortedProofInformation to be the same as Starling Capture.
- Make the proof deletion a blocking action.
- Enable TypeScript strict checks. #19
- Replace ngx-translate with transloco library. #18
- Update dependencies and enable dependabot. #30
- Enable Codacy with coverage. #41
- Fix race conditions caused by Promise is eagerly created in switchMapTo(), concatMapTo(), or mergeMapTo() by wrapping the promise with defer().
This is the first release! Capture Lite is a cross-platform app adapted from Starling Capture app.
- Media Source
- Picture captured from the internal camera
- Information Provider
- Capacitor built-in
Device
andGeolocation
plugins
- Capacitor built-in
- Signature Provider
- Web Crypto API
- Publisher
- Sample publisher - a sample publisher does nothing
- Web - see the demo here
- Android - the APK file
app-debug.apk
is attached to this release