Compare commits

...
Author SHA1 Message Date
StandardNotes CI 74923a1f6b chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2025-07-15 19:50:22 +00:00
Antonella Sgarlatta d02e5cab74 fix: Prevent text from hiding behind navbar in Android (#2914) 2025-07-15 16:21:08 -03:00
Antonella Sgarlatta 2459e06b19 fix: Prevent setting negative item created_at_timestamp values (#2913)
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
* fix: Prevent setting negative item created at timestamps
* chore: add unit tests for PurePayload
2025-07-09 11:26:51 -03:00
StandardNotes CI d2d10eb747 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2025-07-04 09:32:58 +00:00
Antonella Sgarlatta 117781bb36 fix: Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift (#2912) 2025-07-04 14:34:55 +05:30
StandardNotes CI 07f45245a3 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2025-07-01 19:47:40 +00:00
Antonella Sgarlatta da22238ced chore: update react-native-safe-area-context (#2911) 2025-07-02 00:49:18 +05:30
StandardNotes CI 44bfcb2d1b chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2025-06-26 03:33:36 +00:00
Antonella Sgarlatta 555453617d chore: fix simplenote converter test (#2910) 2025-06-26 00:05:26 -03:00
Antonella Sgarlatta f9f069f31f Merge pull request #2909 from standardnotes/fix/fix-simplenote-converter
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
fix: fix simplenote converter
2025-06-25 16:55:20 -03:00
Antonella Sgarlatta f776cb30d4 fix: fix simplenote converter 2025-06-24 23:15:22 -03:00
StandardNotes CI c2bdff0794 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2025-06-24 14:05:47 +00:00
Antonella Sgarlatta becf5751b2 Merge pull request #2908 from standardnotes/chore/update-code-editor-version
chore: update code editor version
2025-06-24 10:36:06 -03:00
Antonella Sgarlatta e06d1fcd4f chore: update code editor version 2025-06-24 10:35:16 -03:00
StandardNotes CI 44fba053b1 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected].0
2025-06-24 07:57:49 +00:00
Aman Harwara 52b052fe84 chore: trigger release (skip e2e) 2025-06-24 13:17:48 +05:30
Aman Harwara caa8eff216 feat: Tag search will now only show the direct tag results instead of also showing the parent and siblings (#2906) 2025-06-24 12:32:27 +05:30
Antonella Sgarlatta c050a2cd33 fix: Fixed issue with UI sometimes getting shifted up on iOS 2025-06-24 12:23:36 +05:30
StandardNotes CI 5f61500ee0 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2025-06-22 19:36:49 +00:00
Aman Harwara 782af6ecdc chore: fix menus not having correct max height on mobile web browsers 2025-06-23 00:38:05 +05:30
StandardNotes CI c493b2c2ea chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2025-06-19 20:43:38 +00:00
Antonella Sgarlatta 9c1bb35355 fix: Fixed issue where Android app would crash on screen rotation (#2905) 2025-06-20 01:43:53 +05:30
StandardNotes CI ddaf52d57e chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2025-06-19 17:30:34 +00:00
Antonella Sgarlatta b49f81bf1f chore: fix LinkedItemBubble styling (#2902) 2025-06-19 22:31:50 +05:30
StandardNotes CI 125aad4b3d chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2025-06-18 15:24:23 +00:00
Antonella Sgarlatta e2250600a8 chore: display tag title as string in delete dialog (#2904) 2025-06-18 20:25:58 +05:30
StandardNotes CI 974fcef288 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected].0
2025-06-16 11:34:39 +00:00
Aman Harwara 7bce025efb feat: Added image alignment options and preference in Super notes (#2903) 2025-06-16 16:33:27 +05:30
StandardNotes CI 57cb8445fd chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
2025-06-12 11:20:15 +00:00
Aman Harwara 165fc695d1 chore: trigger release [skip e2e] 2025-06-12 16:40:53 +05:30
StandardNotes CI 6ea58ca33c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
2025-06-12 07:28:17 +00:00
Antonella Sgarlatta f8223a884c fix: revert keychain dependency back to fork (#2901) (skip e2e) 2025-06-12 12:49:25 +05:30
StandardNotes CI 35eb6d2410 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2025-06-05 10:18:25 +00:00
Aman Harwara 8c7b6a694c chore: upgrade lexical [skip e2e] 2025-06-05 15:38:46 +05:30
Aman Harwara 92ecbcae30 chore: sync podfile 2025-06-05 15:12:22 +05:30
StandardNotes CI 5f6717b0c0 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2025-05-22 20:50:26 +00:00
Aman Harwara 15c184af83 chore: use upgraded keychain package [skip e2e] 2025-05-23 02:10:58 +05:30
StandardNotes CI 6fe8f16828 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
2025-05-12 17:09:50 +00:00
Aman Harwara 631facc10e chore: only add bottom safe area padding in note view if note is locked 2025-05-12 22:10:11 +05:30
StandardNotes CI 4a6a386eda chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2025-05-12 13:26:08 +00:00
Aman Harwara 9792e16c8f chore: add safe area padding to editor content + only send resize event on android if edge-to-edge [skip e2e] 2025-05-12 18:46:50 +05:30
StandardNotes CI 1d11803f22 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected].4
2025-05-02 19:17:04 +00:00
Aman Harwara 2a3dd79da0 chore: handle safe area insets better on android (skip e2e) 2025-05-03 00:37:25 +05:30
StandardNotes CI a1d6a02c87 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected].3
2025-05-02 10:21:40 +00:00
Aman Harwara 0b9b39b11c chore: trigger rebuild [skip e2e] 2025-05-02 15:41:22 +05:30
Aman Harwara c4e0138ce3 fix: Fixed issue with keyboard on Android covering content (#2899) 2025-05-02 15:16:32 +05:30
StandardNotes CI 16df4d327c chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected].2
2025-04-25 18:36:09 +00:00
Aman Harwara bdf6be38d2 fix: Fix issue where searching across formatted text would not work in Super note (#2897) (skip e2e) 2025-04-25 23:57:14 +05:30
Aman Harwara 23f5ac1c19 chore: add setup node step to pr workflow 2025-04-25 20:10:10 +05:30
StandardNotes CI cf3ed7cf42 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2025-04-23 17:24:27 +00:00
Aman Harwara b2281141f8 fix: Always show "note from selection" option in toolbar to prevent layout shift on smaller widths (skip e2e) 2025-04-23 22:45:02 +05:30
StandardNotes CI fd4ba26210 chore(release): publish
CodeQL / Analyze (javascript) (push) Has been cancelled
Sync Repo / git-sync (push) Has been cancelled
Publish Packages / Build & Test (push) Has been cancelled
Publish Packages / Build Docker Image (push) Has been cancelled
Publish Packages / E2E Base Test Suite (push) Has been cancelled
Publish Packages / E2E Vaults Test Suite (push) Has been cancelled
Publish Packages / Build and publish Docker Image for Web App (push) Has been cancelled
Publish Packages / Publish to NPM (push) Has been cancelled
Publish Packages / Publish to Docker Hub (push) Has been cancelled
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2025-04-23 12:08:53 +00:00
Aman Harwara b32a866f33 feat: Add toolbar option to create new note from selection in a Super note (#2896) (skip e2e) 2025-04-23 17:29:18 +05:30
144 changed files with 3608 additions and 1131 deletions
+6
View File
@@ -13,6 +13,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Install dependencies
run: yarn install --immutable
- name: Build
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -68,7 +68,7 @@
"npm-check-updates": "^16.10.17",
"prettier": "3.0.0",
"sass-loader": "^13.3.2",
"typescript": "5.2.2",
"typescript": "5.8.3",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.93](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/api
## [1.26.92](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/api
## [1.26.91](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/api
## [1.26.90](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/api
## [1.26.89](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-05-07)
**Note:** Version bump only for package @standardnotes/api
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api",
"version": "1.26.89",
"version": "1.26.93",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.1.532](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.531](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.530](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.529](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.528](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.527](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.526](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.525](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.524](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.523](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.522](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.521](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.520](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.519](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.518](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.517](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.516](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.515](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.514](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.513](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.512](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.511](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/clipper
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/clipper",
"description": "Web clipper browser extension for Standard Notes",
"version": "1.1.511",
"version": "1.1.532",
"private": true,
"scripts": {
"build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js",
+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.110.137](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.136](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.135](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.134](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.133](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.132](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.131](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.130](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.129](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.128](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.127](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.126](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.125](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.124](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.123](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.122](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.121](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.120](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.119](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.118](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.117](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.116](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/desktop
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/desktop",
"main": "./app/dist/index.js",
"version": "3.110.116",
"version": "3.110.137",
"license": "AGPL-3.0",
"author": "Standard Notes.",
"private": true,
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.21.111](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.110](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.109](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.108](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.107](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-05-07)
**Note:** Version bump only for package @standardnotes/encryption
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/encryption",
"version": "1.21.107",
"version": "1.21.111",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+22
View File
@@ -3,6 +3,28 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.28.131](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.130](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.129](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.128](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.127](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
### Bug Fixes
* Fix issue where searching across formatted text would not work in Super note ([#2897](https://github.com/standardnotes/app/issues/2897)) (skip e2e) ([bdf6be3](https://github.com/standardnotes/app/commit/bdf6be38d241a5c35be56a50e239591294383f95))
## [1.28.126](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-01-31)
### Bug Fixes
+1 -1
View File
@@ -27,7 +27,7 @@
"babel-loader": "^8.2.3",
"html-webpack-plugin": "^5.5.0",
"ts-loader": "^9.2.6",
"typescript": "^4.0.5",
"typescript": "*",
"typescript-eslint": "0.0.1-alpha.0",
"webpack": "*",
"webpack-cli": "*",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/filepicker",
"version": "1.28.126",
"version": "1.28.131",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.20.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/files
## [1.20.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/files
## [1.20.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/files
## [1.20.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/files
## [1.20.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-05-07)
**Note:** Version bump only for package @standardnotes/files
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files",
"version": "1.20.10",
"version": "1.20.14",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+96
View File
@@ -3,6 +3,102 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.58.194](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.193](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)
### Bug Fixes
* Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift ([#2912](https://github.com/standardnotes/app/issues/2912)) ([117781b](https://github.com/standardnotes/app/commit/117781bb3655a2bd6b9b0ca5a4d12f7bbefd164e))
## [3.58.192](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.191](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.190](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.189](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
### Bug Fixes
* Fixed issue with UI sometimes getting shifted up on iOS ([c050a2c](https://github.com/standardnotes/app/commit/c050a2cd339bb7a8fd482904216de1db2b8fe568))
## [3.58.188](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.187](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
### Bug Fixes
* Fixed issue where Android app would crash on screen rotation ([#2905](https://github.com/standardnotes/app/issues/2905)) ([9c1bb35](https://github.com/standardnotes/app/commit/9c1bb353550c0256b4e6dcbee1e087cc9ffdd628))
## [3.58.186](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.185](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.184](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.183](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.182](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.181](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.180](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.179](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.178](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.177](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.176](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
### Bug Fixes
* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))
## [3.58.175](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.174](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.173](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.172](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/mobile
@@ -37,13 +37,6 @@ public class MainActivity extends ReactActivity {
DefaultNewArchitectureEntryPoint.getFabricEnabled());
}
// Fix for Dark theme subscriptions https://github.com/facebook/react-native/issues/28823#issuecomment-642032481
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getReactInstanceManager().onConfigurationChanged(this, newConfig);
}
/*
On back button press, background app instead of quitting it
https://github.com/facebook/react-native/issues/13775
+91 -2
View File
@@ -1261,6 +1261,72 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context (5.5.1):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.11.18.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- react-native-safe-area-context/common (= 5.5.1)
- react-native-safe-area-context/fabric (= 5.5.1)
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context/common (5.5.1):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.11.18.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context/fabric (5.5.1):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.11.18.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- react-native-safe-area-context/common
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-version-info (1.1.1):
- React-Core
- react-native-webview (13.13.5):
@@ -1602,8 +1668,27 @@ PODS:
- RCTTypeSafety
- React-Core
- ReactCommon/turbomodule/core
- RNKeychain (8.1.2):
- RNKeychain (10.0.0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.11.18.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- RNNotifee (9.1.8):
- React-Core
- RNNotifee/NotifeeCore (= 9.1.8)
@@ -1701,6 +1786,7 @@ DEPENDENCIES:
- React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
- react-native-fingerprint-scanner (from `../node_modules/react-native-fingerprint-scanner`)
- react-native-mmkv (from `../node_modules/react-native-mmkv`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-version-info (from `../node_modules/react-native-version-info`)
- react-native-webview (from `../node_modules/react-native-webview`)
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
@@ -1829,6 +1915,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-fingerprint-scanner"
react-native-mmkv:
:path: "../node_modules/react-native-mmkv"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-version-info:
:path: "../node_modules/react-native-version-info"
react-native-webview:
@@ -1952,6 +2040,7 @@ SPEC CHECKSUMS:
React-microtasksnativemodule: b740ebae7fad70aa78bc24cc0dfc15ac9637b6eb
react-native-fingerprint-scanner: 562585260768cad51ae48e4b505d28c8731aecfa
react-native-mmkv: 24917f0685641ccfd37c9b7004b26c00551128be
react-native-safe-area-context: 143faa2b60b6cc3e06e966d5fa23af6b31326814
react-native-version-info: f0b04e16111c4016749235ff6d9a757039189141
react-native-webview: 5095dd03fc98a529e44a6bb81aed21062b5f879e
React-NativeModulesApple: af0571ac115d09c9a669ed45ce6a4ca960598a2d
@@ -1986,7 +2075,7 @@ SPEC CHECKSUMS:
RNFileViewer: 4b5d83358214347e4ab2d4ca8d5c1c90d869e251
RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8
RNIap: d73cedfb73b396cad75f90f4ed7d64352d6381cf
RNKeychain: df33ae4d27df06622fc14190b790ba8749f6be76
RNKeychain: 455cc7002480eac3d24f67b4329ec80c7d901edc
RNNotifee: 5e3b271e8ea7456a36eec994085543c9adca9168
RNPrivacySnapshot: ccad3a548338c2f526bb7b1789af3fb0618b7d1d
RNShare: 56b5431c60e1e9ee167191f4f327471af1c2941a
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/mobile",
"version": "3.58.172",
"version": "3.58.194",
"author": "Standard Notes.",
"private": true,
"license": "AGPL-3.0",
@@ -63,7 +63,7 @@
"react-native-flag-secure-android": "standardnotes/react-native-flag-secure-android#cb08e74583c22a5d912842459b35ebbbb4bcd852",
"react-native-fs": "^2.20.0",
"react-native-iap": "^12.16.2",
"react-native-keychain": "standardnotes/react-native-keychain#4fd687461cecfa26d482d820ee43c0de61b964d4",
"react-native-keychain": "standardnotes/react-native-keychain#618c3e1f253e6980866ee02a80c3ea66fa6f5bad",
"react-native-mmkv": "^3.2.0",
"react-native-privacy-snapshot": "standardnotes/react-native-privacy-snapshot#653e904c90fc6f2b578da59138f2bfe5d7f942fe",
"react-native-share": "^12.0.9",
@@ -76,6 +76,7 @@
},
"dependencies": {
"@notifee/react-native": "^9.1.8",
"react-native-safe-area-context": "^5.5.1",
"react-native-store-review": "^0.4.3"
}
}
+6 -5
View File
@@ -1,10 +1,11 @@
import React from 'react'
import { MobileWebAppContainer } from './MobileWebAppContainer'
const AppComponent: React.FC = () => {
return <MobileWebAppContainer />
}
import { SafeAreaProvider } from 'react-native-safe-area-context'
export const MobileWebApp = () => {
return <AppComponent />
return (
<SafeAreaProvider>
<MobileWebAppContainer />
</SafeAreaProvider>
)
}
+54 -23
View File
@@ -2,7 +2,7 @@
import { ApplicationEvent, ReactNativeToWebEvent } from '@standardnotes/snjs'
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Button, Dimensions, Keyboard, Platform, Text, View } from 'react-native'
import { Button, Dimensions, Keyboard, KeyboardEvent, Platform, Text, View } from 'react-native'
import VersionInfo from 'react-native-version-info'
import { WebView, WebViewMessageEvent } from 'react-native-webview'
import { OnShouldStartLoadWithRequest, WebViewNativeConfig } from 'react-native-webview/lib/WebViewTypes'
@@ -15,6 +15,7 @@ import { IsDev } from './Lib/Utils'
import { ReceivedSharedItemsHandler } from './ReceivedSharedItemsHandler'
import { ReviewService } from './ReviewService'
import notifee, { EventType } from '@notifee/react-native'
import { useSafeAreaInsets } from 'react-native-safe-area-context'
const LoggingEnabled = IsDev
@@ -42,6 +43,9 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
const _reviewService = useRef(new ReviewService(device))
const [showAndroidWebviewUpdatePrompt, setShowAndroidWebviewUpdatePrompt] = useState(false)
const [didLoadEnd, setDidLoadEnd] = useState(false)
const insets = useSafeAreaInsets()
useEffect(() => {
const removeStateServiceListener = stateService.addEventObserver((event: ReactNativeToWebEvent) => {
@@ -58,7 +62,7 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
webViewRef.current?.postMessage(JSON.stringify({ reactNativeEvent: event, messageType: 'event' }))
})
const keyboardShowListener = Keyboard.addListener('keyboardWillShow', () => {
const keyboardWillShowListener = Keyboard.addListener('keyboardWillShow', () => {
device.reloadStatusBarStyle(false)
webViewRef.current?.postMessage(
JSON.stringify({
@@ -78,45 +82,62 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
)
})
const keyboardHideListener = Keyboard.addListener('keyboardDidHide', () => {
device.reloadStatusBarStyle(false)
})
const keyboardWillChangeFrame = Keyboard.addListener('keyboardWillChangeFrame', (e) => {
const fireKeyboardSizeChangeEvent = (e: KeyboardEvent) => {
webViewRef.current?.postMessage(
JSON.stringify({
reactNativeEvent: ReactNativeToWebEvent.KeyboardFrameWillChange,
reactNativeEvent: ReactNativeToWebEvent.KeyboardSizeChanged,
messageType: 'event',
messageData: {
height: e.endCoordinates.height,
contentHeight: e.endCoordinates.screenY,
isFloatingKeyboard: e.endCoordinates.width !== Dimensions.get('window').width,
isFloatingKeyboard: Math.floor(e.endCoordinates.width) !== Math.floor(Dimensions.get('window').width),
},
}),
)
}
const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', (e) => {
// iOS handles this using the `willChangeFrame` event instead
if (Platform.OS === 'android' && insets.bottom > 0) {
fireKeyboardSizeChangeEvent(e)
webViewRef.current?.postMessage(
JSON.stringify({
reactNativeEvent: ReactNativeToWebEvent.KeyboardDidShow,
messageType: 'event',
}),
)
}
device.reloadStatusBarStyle(false)
})
const keyboardDidChangeFrame = Keyboard.addListener('keyboardDidChangeFrame', (e) => {
webViewRef.current?.postMessage(
JSON.stringify({
reactNativeEvent: ReactNativeToWebEvent.KeyboardFrameDidChange,
messageType: 'event',
messageData: { height: e.endCoordinates.height, contentHeight: e.endCoordinates.screenY },
}),
)
const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => {
// iOS handles this using the `willChangeFrame` event instead
if (Platform.OS === 'android' && insets.bottom > 0) {
webViewRef.current?.postMessage(
JSON.stringify({
reactNativeEvent: ReactNativeToWebEvent.KeyboardDidHide,
messageType: 'event',
}),
)
}
device.reloadStatusBarStyle(false)
})
const keyboardWillChangeFrame = Keyboard.addListener('keyboardWillChangeFrame', (e) => {
fireKeyboardSizeChangeEvent(e)
})
return () => {
removeStateServiceListener()
removeBackHandlerServiceListener()
removeColorSchemeServiceListener()
keyboardShowListener.remove()
keyboardHideListener.remove()
keyboardWillChangeFrame.remove()
keyboardDidChangeFrame.remove()
keyboardWillShowListener.remove()
keyboardWillHideListener.remove()
keyboardDidShowListener.remove()
keyboardDidHideListener.remove()
keyboardWillChangeFrame.remove()
}
}, [webViewRef, stateService, device, androidBackHandlerService, colorSchemeService])
}, [webViewRef, stateService, device, androidBackHandlerService, colorSchemeService, insets.bottom])
useEffect(() => {
return notifee.onForegroundEvent(({ type, detail }) => {
@@ -333,6 +354,7 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
receivedSharedItemsHandlerInstance.deinit()
}
}, [])
useEffect(() => {
return device.addApplicationEventReceiver((event) => {
if (event === ApplicationEvent.Launched) {
@@ -341,7 +363,16 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
})
}, [device])
const [didLoadEnd, setDidLoadEnd] = useState(false)
const injectJS = `
document.documentElement.style.setProperty('--safe-area-inset-top', '${insets.top}px');
document.documentElement.style.setProperty('--safe-area-inset-bottom', '${insets.bottom}px');
document.documentElement.style.setProperty('--safe-area-inset-left', '${insets.left}px');
document.documentElement.style.setProperty('--safe-area-inset-right', '${insets.right}px');
true;
`
if (Platform.OS === 'android') {
webViewRef.current?.injectJavaScript(injectJS)
}
if (showAndroidWebviewUpdatePrompt) {
return (
+22
View File
@@ -3,6 +3,28 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.58.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
### Bug Fixes
* Prevent setting negative item created_at_timestamp values ([#2913](https://github.com/standardnotes/app/issues/2913)) ([2459e06](https://github.com/standardnotes/app/commit/2459e06b19f54a5a35b6dde11f361dc5c60ab7f5))
# [1.58.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
### Features
* Tag search will now only show the direct tag results instead of also showing the parent and siblings ([#2906](https://github.com/standardnotes/app/issues/2906)) ([caa8eff](https://github.com/standardnotes/app/commit/caa8eff216b2d7a47f849f85f1eb2248eea10c62))
## [1.57.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/models
# [1.57.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
### Features
* Added image alignment options and preference in Super notes ([#2903](https://github.com/standardnotes/app/issues/2903)) ([7bce025](https://github.com/standardnotes/app/commit/7bce025efbab6d57c4dabb8354d400c87eb90032))
## [1.56.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-05-07)
**Note:** Version bump only for package @standardnotes/models
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/models",
"version": "1.56.1",
"version": "1.58.1",
"publishConfig": {
"access": "public"
},
@@ -0,0 +1,438 @@
import { deepFreeze, useBoolean } from '@standardnotes/utils'
import { PayloadSource } from '../Types/PayloadSource'
import { TransferPayload } from '../../TransferPayload/Interfaces/TransferPayload'
import { ItemContent, FillItemContent } from '../../Content/ItemContent'
import { PurePayload } from './PurePayload'
import { SyncResolvedParams, SyncResolvedPayload } from '../../../Runtime/Deltas/Utilities/SyncResolvedPayload'
import { PersistentSignatureData } from '../../../Runtime/Encryption/PersistentSignatureData'
import { ContentType } from '@standardnotes/domain-core'
// Mock the utils functions
jest.mock('@standardnotes/utils', () => ({
deepFreeze: jest.fn(),
useBoolean: jest.fn((value, defaultValue) => value !== undefined ? !!value : defaultValue),
}))
// Mock the content type encryption check
jest.mock('../../../Runtime/Encryption/ContentTypeUsesRootKeyEncryption', () => ({
ContentTypeUsesRootKeyEncryption: jest.fn((contentType: string) => {
const rootKeyTypes = [
ContentType.TYPES.RootKey,
ContentType.TYPES.ItemsKey,
ContentType.TYPES.EncryptedStorage,
ContentType.TYPES.TrustedContact,
ContentType.TYPES.KeySystemRootKey,
]
return rootKeyTypes.includes(contentType)
}),
}))
class TestPurePayload extends PurePayload<TransferPayload<ItemContent>, ItemContent> {
copy(override?: Partial<TransferPayload>, source?: PayloadSource): this {
const newPayload = {
...this.ejected(),
...override,
}
return new TestPurePayload(newPayload, source || this.source) as this
}
copyAsSyncResolved(override?: Partial<TransferPayload<ItemContent>> & SyncResolvedParams, source?: PayloadSource): SyncResolvedPayload {
const newPayload = {
...this.ejected(),
...override,
}
return new TestPurePayload(newPayload, source || this.source) as any
}
}
describe('PurePayload', () => {
const mockDeepFreeze = deepFreeze as jest.MockedFunction<typeof deepFreeze>
const mockUseBoolean = useBoolean as jest.MockedFunction<typeof useBoolean>
beforeEach(() => {
jest.clearAllMocks()
mockDeepFreeze.mockImplementation((obj) => obj)
mockUseBoolean.mockImplementation((value, defaultValue) => value !== undefined ? !!value : defaultValue)
})
const createValidRawPayload = (overrides: Partial<TransferPayload<ItemContent>> = {}): TransferPayload<ItemContent> => ({
uuid: '123e4567-e89b-12d3-a456-426614174000',
content_type: ContentType.TYPES.Note,
content: FillItemContent({}),
deleted: false,
updated_at: new Date('2023-01-01T12:00:00Z'),
created_at: new Date('2023-01-01T10:00:00Z'),
created_at_timestamp: 1672570800000,
updated_at_timestamp: 1672578000000,
...overrides,
})
describe('constructor', () => {
it('should throw error when uuid is null', () => {
const rawPayload = createValidRawPayload({ uuid: null as any })
expect(() => new TestPurePayload(rawPayload)).toThrow(
'Attempting to construct payload with null uuid'
)
})
it('should throw error when uuid is undefined', () => {
const rawPayload = createValidRawPayload({ uuid: undefined as any })
expect(() => new TestPurePayload(rawPayload)).toThrow(
'Attempting to construct payload with null uuid'
)
})
it('should throw error when content type uses root key encryption but has key_system_identifier', () => {
const rawPayload = createValidRawPayload({
content_type: ContentType.TYPES.RootKey,
key_system_identifier: 'some-key-system-id'
})
expect(() => new TestPurePayload(rawPayload)).toThrow(
'Rootkey-encrypted payload should not have a key system identifier'
)
})
it('should allow key_system_identifier for non-root-key content types', () => {
const rawPayload = createValidRawPayload({
content_type: ContentType.TYPES.Note,
key_system_identifier: 'some-key-system-id'
})
expect(() => new TestPurePayload(rawPayload)).not.toThrow()
})
it('should set all properties correctly from raw payload', () => {
const rawPayload = createValidRawPayload({
uuid: 'test-uuid',
content_type: ContentType.TYPES.Note,
content: FillItemContent({ references: [] }),
deleted: true,
dirty: true,
duplicate_of: 'original-uuid',
user_uuid: 'user-uuid',
key_system_identifier: 'key-system-id',
shared_vault_uuid: 'vault-uuid',
last_edited_by_uuid: 'editor-uuid',
dirtyIndex: 5,
globalDirtyIndexAtLastSync: 3,
lastSyncBegan: new Date('2023-01-01T11:00:00Z'),
lastSyncEnd: new Date('2023-01-01T11:30:00Z'),
})
const payload = new TestPurePayload(rawPayload, PayloadSource.LocalDatabaseLoaded)
expect(payload.uuid).toBe('test-uuid')
expect(payload.content_type).toBe(ContentType.TYPES.Note)
expect(payload.content).toEqual(rawPayload.content)
expect(payload.deleted).toBe(true)
expect(payload.dirty).toBe(true)
expect(payload.duplicate_of).toBe('original-uuid')
expect(payload.user_uuid).toBe('user-uuid')
expect(payload.key_system_identifier).toBe('key-system-id')
expect(payload.shared_vault_uuid).toBe('vault-uuid')
expect(payload.last_edited_by_uuid).toBe('editor-uuid')
expect(payload.dirtyIndex).toBe(5)
expect(payload.globalDirtyIndexAtLastSync).toBe(3)
expect(payload.source).toBe(PayloadSource.LocalDatabaseLoaded)
})
it('should use default PayloadSource.Constructor when source is not provided', () => {
const rawPayload = createValidRawPayload()
const payload = new TestPurePayload(rawPayload)
expect(payload.source).toBe(PayloadSource.Constructor)
})
it('should call useBoolean for deleted field', () => {
const rawPayload = createValidRawPayload({ deleted: true })
mockUseBoolean.mockReturnValue(true)
const payload = new TestPurePayload(rawPayload)
expect(mockUseBoolean).toHaveBeenCalledWith(true, false)
expect(payload.deleted).toBe(true)
})
it('should use false as default for deleted when undefined', () => {
const rawPayload = createValidRawPayload({ deleted: undefined })
mockUseBoolean.mockReturnValue(false)
const payload = new TestPurePayload(rawPayload)
expect(mockUseBoolean).toHaveBeenCalledWith(undefined, false)
expect(payload.deleted).toBe(false)
})
it('should handle optional properties as undefined when not provided', () => {
const rawPayload = createValidRawPayload()
const payload = new TestPurePayload(rawPayload)
expect(payload.user_uuid).toBeUndefined()
expect(payload.key_system_identifier).toBeUndefined()
expect(payload.shared_vault_uuid).toBeUndefined()
expect(payload.last_edited_by_uuid).toBeUndefined()
expect(payload.dirty).toBeUndefined()
expect(payload.duplicate_of).toBeUndefined()
expect(payload.dirtyIndex).toBeUndefined()
expect(payload.globalDirtyIndexAtLastSync).toBeUndefined()
})
it('should schedule deepFreeze to be called', (done) => {
const rawPayload = createValidRawPayload()
const payload = new TestPurePayload(rawPayload)
setTimeout(() => {
expect(mockDeepFreeze).toHaveBeenCalledWith(payload)
done()
}, 10)
})
})
describe('date handling', () => {
it('should handle valid dates correctly', () => {
const createdAt = new Date('2023-01-01T10:00:00Z')
const updatedAt = new Date('2023-01-01T12:00:00Z')
const rawPayload = createValidRawPayload({
created_at: createdAt,
updated_at: updatedAt,
created_at_timestamp: createdAt.getTime(),
updated_at_timestamp: updatedAt.getTime(),
})
const payload = new TestPurePayload(rawPayload)
expect(payload.created_at).toEqual(createdAt)
expect(payload.updated_at).toEqual(updatedAt)
expect(payload.created_at_timestamp).toBe(createdAt.getTime())
expect(payload.updated_at_timestamp).toBe(updatedAt.getTime())
})
it('should handle negative updated_at dates by resetting to epoch', () => {
const rawPayload = createValidRawPayload({
updated_at: new Date(-1000),
updated_at_timestamp: -1000,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.updated_at).toEqual(new Date(0))
expect(payload.updated_at_timestamp).toBe(0)
})
it('should handle negative created_at dates by using updated_at values', () => {
const updatedAt = new Date('2023-01-01T12:00:00Z')
const rawPayload = createValidRawPayload({
created_at: new Date(-1000),
created_at_timestamp: -1000,
updated_at: updatedAt,
updated_at_timestamp: updatedAt.getTime(),
})
const payload = new TestPurePayload(rawPayload)
expect(payload.created_at).toEqual(updatedAt)
expect(payload.created_at_timestamp).toBe(updatedAt.getTime())
})
it('should use current date for created_at when not provided', () => {
const rawPayload = createValidRawPayload({
created_at: undefined as any,
created_at_timestamp: undefined as any,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.created_at).toBeInstanceOf(Date)
expect(payload.created_at.getTime()).toBeGreaterThan(0)
})
it('should use epoch date for updated_at when not provided', () => {
const rawPayload = createValidRawPayload({
updated_at: undefined as any,
updated_at_timestamp: undefined as any,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.updated_at).toEqual(new Date(0))
expect(payload.updated_at_timestamp).toBe(0)
})
it('should handle sync dates correctly', () => {
const syncBegan = new Date('2023-01-01T11:00:00Z')
const syncEnd = new Date('2023-01-01T11:30:00Z')
const rawPayload = createValidRawPayload({
lastSyncBegan: syncBegan,
lastSyncEnd: syncEnd,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.lastSyncBegan).toEqual(syncBegan)
expect(payload.lastSyncEnd).toEqual(syncEnd)
})
it('should handle undefined sync dates', () => {
const rawPayload = createValidRawPayload({
lastSyncBegan: undefined,
lastSyncEnd: undefined,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.lastSyncBegan).toBeUndefined()
expect(payload.lastSyncEnd).toBeUndefined()
})
})
describe('ejected method', () => {
it('should return comprehensive TransferPayload', () => {
const rawPayload = createValidRawPayload({
uuid: 'test-uuid',
content_type: ContentType.TYPES.Note,
content: FillItemContent({ references: [] }),
deleted: true,
dirty: true,
duplicate_of: 'original-uuid',
user_uuid: 'user-uuid',
key_system_identifier: 'key-system-id',
shared_vault_uuid: 'vault-uuid',
last_edited_by_uuid: 'editor-uuid',
dirtyIndex: 5,
globalDirtyIndexAtLastSync: 3,
lastSyncBegan: new Date('2023-01-01T11:00:00Z'),
lastSyncEnd: new Date('2023-01-01T11:30:00Z'),
})
const payload = new TestPurePayload(rawPayload)
const ejected = payload.ejected()
expect(ejected.uuid).toBe('test-uuid')
expect(ejected.content_type).toBe(ContentType.TYPES.Note)
expect(ejected.content).toEqual(rawPayload.content)
expect(ejected.deleted).toBe(true)
expect(ejected.dirty).toBe(true)
expect(ejected.duplicate_of).toBe('original-uuid')
expect(ejected.user_uuid).toBe('user-uuid')
expect(ejected.key_system_identifier).toBe('key-system-id')
expect(ejected.shared_vault_uuid).toBe('vault-uuid')
expect(ejected.last_edited_by_uuid).toBe('editor-uuid')
expect(ejected.dirtyIndex).toBe(5)
expect(ejected.globalDirtyIndexAtLastSync).toBe(3)
expect(ejected.lastSyncBegan).toEqual(new Date('2023-01-01T11:00:00Z'))
expect(ejected.lastSyncEnd).toEqual(new Date('2023-01-01T11:30:00Z'))
})
it('should include undefined values in ejected payload', () => {
const rawPayload = createValidRawPayload()
const payload = new TestPurePayload(rawPayload)
const ejected = payload.ejected()
expect(ejected.user_uuid).toBeUndefined()
expect(ejected.key_system_identifier).toBeUndefined()
expect(ejected.shared_vault_uuid).toBeUndefined()
expect(ejected.last_edited_by_uuid).toBeUndefined()
expect(ejected.dirty).toBeUndefined()
expect(ejected.duplicate_of).toBeUndefined()
expect(ejected.dirtyIndex).toBeUndefined()
expect(ejected.globalDirtyIndexAtLastSync).toBeUndefined()
})
})
describe('getters', () => {
it('should return correct serverUpdatedAt', () => {
const updatedAt = new Date('2023-01-01T12:00:00Z')
const rawPayload = createValidRawPayload({ updated_at: updatedAt })
const payload = new TestPurePayload(rawPayload)
expect(payload.serverUpdatedAt).toEqual(updatedAt)
})
it('should return correct serverUpdatedAtTimestamp', () => {
const timestamp = 1672578000000
const rawPayload = createValidRawPayload({ updated_at_timestamp: timestamp })
const payload = new TestPurePayload(rawPayload)
expect(payload.serverUpdatedAtTimestamp).toBe(timestamp)
})
})
describe('signature data', () => {
it('should handle signature data correctly', () => {
const signatureData: PersistentSignatureData = {
signature: 'test-signature',
publicKey: 'test-public-key',
} as any
const rawPayload = createValidRawPayload({ signatureData })
const payload = new TestPurePayload(rawPayload)
expect(payload.signatureData).toEqual(signatureData)
})
it('should handle undefined signature data', () => {
const rawPayload = createValidRawPayload({ signatureData: undefined })
const payload = new TestPurePayload(rawPayload)
expect(payload.signatureData).toBeUndefined()
})
})
describe('error handling', () => {
it('should include content_type in error message when uuid is null', () => {
const rawPayload = createValidRawPayload({
uuid: null as any,
content_type: ContentType.TYPES.Note,
})
expect(() => new TestPurePayload(rawPayload)).toThrow(
/Content type: Note/
)
})
})
describe('edge cases', () => {
it('should handle empty string content', () => {
const rawPayload = createValidRawPayload({ content: '' })
const payload = new TestPurePayload(rawPayload)
expect(payload.content).toBe('')
})
it('should handle string content', () => {
const rawPayload = createValidRawPayload({ content: 'encrypted-content' })
const payload = new TestPurePayload(rawPayload)
expect(payload.content).toBe('encrypted-content')
})
it('should handle zero timestamps', () => {
const rawPayload = createValidRawPayload({
created_at_timestamp: 0,
updated_at_timestamp: 0,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.created_at_timestamp).toBe(0)
expect(payload.updated_at_timestamp).toBe(0)
})
it('should handle null/undefined nullish coalescing correctly', () => {
const rawPayload = createValidRawPayload({
user_uuid: null as any,
key_system_identifier: null as any,
shared_vault_uuid: null as any,
last_edited_by_uuid: null as any,
})
const payload = new TestPurePayload(rawPayload)
expect(payload.user_uuid).toBeUndefined()
expect(payload.key_system_identifier).toBeUndefined()
expect(payload.shared_vault_uuid).toBeUndefined()
expect(payload.last_edited_by_uuid).toBeUndefined()
})
})
})
@@ -65,7 +65,7 @@ export abstract class PurePayload<T extends TransferPayload<C>, C extends ItemCo
this.updated_at = new Date(rawPayload.updated_at || 0)
this.updated_at_timestamp = rawPayload.updated_at_timestamp || 0
if (this.updated_at_timestamp < 0) {
if (this.updated_at < new Date(0) || this.updated_at_timestamp < 0) {
this.updated_at_timestamp = 0
this.updated_at = new Date(0)
}
@@ -73,7 +73,7 @@ export abstract class PurePayload<T extends TransferPayload<C>, C extends ItemCo
this.created_at = new Date(rawPayload.created_at || new Date())
this.created_at_timestamp = rawPayload.created_at_timestamp || 0
if (this.created_at_timestamp < 0) {
if (this.created_at < new Date(0) || this.created_at_timestamp < 0) {
this.created_at_timestamp = this.updated_at_timestamp
this.created_at = this.updated_at
}
@@ -38,8 +38,11 @@ export function itemMatchesQuery(
searchQuery: SearchQuery,
collection: ReferenceLookupCollection,
): boolean {
const shouldCheckForSomeTagMatches = searchQuery.shouldCheckForSomeTagMatches ?? true
const itemTags = collection.elementsReferencingElement(itemToMatch, ContentType.TYPES.Tag) as SNTag[]
const someTagsMatches = itemTags.some((tag) => matchResultForStringQuery(tag, searchQuery.query) !== MatchResult.None)
const someTagsMatches =
shouldCheckForSomeTagMatches &&
itemTags.some((tag) => matchResultForStringQuery(tag, searchQuery.query) !== MatchResult.None)
if (itemToMatch.protected && !searchQuery.includeProtectedNoteText) {
const match = matchResultForStringQuery(itemToMatch, searchQuery.query)
@@ -5,6 +5,7 @@ import { SearchableItem } from './SearchableItem'
export type SearchQuery = {
query: string
includeProtectedNoteText: boolean
shouldCheckForSomeTagMatches?: boolean
}
export interface ReferenceLookupCollection {
@@ -43,6 +43,7 @@ export const PrefDefaults = {
[PrefKey.SuperNoteExportEmbedBehavior]: 'reference',
[PrefKey.SuperNoteExportUseMDFrontmatter]: true,
[PrefKey.SuperNoteExportPDFPageSize]: 'A4',
[PrefKey.SuperNoteImageAlignment]: 'left',
[PrefKey.SystemViewPreferences]: {},
[PrefKey.AuthenticatorNames]: '',
[PrefKey.ComponentPreferences]: {},
@@ -36,6 +36,7 @@ export enum PrefKey {
SuperNoteExportEmbedBehavior = 'superNoteExportEmbedBehavior',
SuperNoteExportUseMDFrontmatter = 'superNoteExportUseMDFrontmatter',
SuperNoteExportPDFPageSize = 'superNoteExportPDFPageSize',
SuperNoteImageAlignment = 'superNoteImageAlignment',
AuthenticatorNames = 'authenticatorNames',
PaneGesturesEnabled = 'paneGesturesEnabled',
ComponentPreferences = 'componentPreferences',
@@ -101,4 +102,5 @@ export type PrefValue = {
[PrefKey.AddImportsToTag]: boolean
[PrefKey.AlwaysCreateNewTagForImports]: boolean
[PrefKey.ExistingTagForImports]: string | undefined
[PrefKey.SuperNoteImageAlignment]: 'left' | 'center' | 'right'
}
+88
View File
@@ -3,6 +3,94 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.834](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.833](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.832](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.831](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.830](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.829](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.828](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.827](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.826](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.825](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.824](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.823](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.822](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.821](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.820](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.819](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.818](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.817](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.816](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.815](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.814](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.813](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.812](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/releases
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/releases",
"version": "1.4.812",
"version": "1.4.834",
"license": "AGPL-3.0",
"main": "dist/releases.json",
"types": "dist/index.d.ts",
+22
View File
@@ -3,6 +3,28 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.71.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/services
## [1.71.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/services
## [1.71.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/services
## [1.71.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/services
## [1.71.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
### Bug Fixes
* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))
## [1.71.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-11-22)
### Bug Fixes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/services",
"version": "1.71.4",
"version": "1.71.9",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -6,6 +6,5 @@ export enum WebAppEvent {
PanelResized = 'PanelResized',
WindowDidFocus = 'WindowDidFocus',
WindowDidBlur = 'WindowDidBlur',
MobileKeyboardDidChangeFrame = 'MobileKeyboardDidChangeFrame',
MobileKeyboardWillChangeFrame = 'MobileKeyboardWillChangeFrame',
}
+28
View File
@@ -3,6 +3,34 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.209.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/snjs
## [2.209.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
### Bug Fixes
* Fixed issue with UI sometimes getting shifted up on iOS ([c050a2c](https://github.com/standardnotes/app/commit/c050a2cd339bb7a8fd482904216de1db2b8fe568))
## [2.209.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/snjs
## [2.209.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/snjs
## [2.209.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/snjs
## [2.209.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
### Bug Fixes
* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))
## [2.209.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-11-22)
**Note:** Version bump only for package @standardnotes/snjs
@@ -5,10 +5,11 @@ export enum ReactNativeToWebEvent {
LosingFocus = 'LosingFocus',
AndroidBackButtonPressed = 'AndroidBackButtonPressed',
ColorSchemeChanged = 'ColorSchemeChanged',
KeyboardFrameWillChange = 'KeyboardFrameWillChange',
KeyboardFrameDidChange = 'KeyboardFrameDidChange',
KeyboardSizeChanged = 'KeyboardSizeChanged',
KeyboardWillShow = 'KeyboardWillShow',
KeyboardWillHide = 'KeyboardWillHide',
KeyboardDidShow = 'KeyboardDidShow',
KeyboardDidHide = 'KeyboardDidHide',
ReceivedFile = 'ReceivedFile',
ReceivedLink = 'ReceivedLink',
ReceivedText = 'ReceivedText',
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/snjs",
"version": "2.209.6",
"version": "2.209.12",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+38
View File
@@ -3,6 +3,44 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.38.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
### Bug Fixes
* fix simplenote converter ([f776cb3](https://github.com/standardnotes/app/commit/f776cb30d488d70994afdc174bb8035cf100b810))
## [1.38.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
### Bug Fixes
* Fixed issue with UI sometimes getting shifted up on iOS ([c050a2c](https://github.com/standardnotes/app/commit/c050a2cd339bb7a8fd482904216de1db2b8fe568))
## [1.38.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.38.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.38.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.38.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
### Bug Fixes
* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))
## [1.38.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.38.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-01-31)
**Note:** Version bump only for package @standardnotes/ui-services
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/ui-services",
"version": "1.38.3",
"version": "1.38.11",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -22,7 +22,7 @@ describe('SimplenoteConverter', () => {
it('should parse', async () => {
const converter = new SimplenoteConverter()
const result = await converter.parse(data, createNote)
const result = await converter.parse(data, createNote, (markdown) => markdown)
expect(result).not.toBeNull()
expect(result?.length).toBe(3)
@@ -50,10 +50,10 @@ export class SimplenoteConverter implements Converter {
return false
}
convert: Converter['convert'] = async (file, { insertNote: createNote, readFileAsText }) => {
convert: Converter['convert'] = async (file, { insertNote: createNote, convertMarkdownToSuper, readFileAsText }) => {
const content = await readFileAsText(file)
const notes = await this.parse(content, createNote)
const notes = await this.parse(content, createNote, convertMarkdownToSuper)
if (!notes) {
throw new Error('Could not parse notes')
@@ -65,13 +65,18 @@ export class SimplenoteConverter implements Converter {
}
}
createNoteFromItem(item: SimplenoteItem, trashed: boolean, createNote: InsertNoteFn): ReturnType<InsertNoteFn> {
createNoteFromItem(
item: SimplenoteItem,
trashed: boolean,
createNote: InsertNoteFn,
convertMarkdownToSuper: (markdown: string) => string,
): ReturnType<InsertNoteFn> {
const createdAtDate = new Date(item.creationDate)
const updatedAtDate = new Date(item.lastModified)
const splitContent = splitAtFirst(item.content, '\r\n')
const title = splitContent[0] ?? createdAtDate.toLocaleString()
const text = splitContent[1] ?? item.content
const text = convertMarkdownToSuper(splitContent[1] ?? item.content)
return createNote({
createdAt: createdAtDate,
@@ -83,14 +88,18 @@ export class SimplenoteConverter implements Converter {
})
}
async parse(data: string, createNote: InsertNoteFn) {
async parse(data: string, createNote: InsertNoteFn, convertMarkdownToSuper: (markdown: string) => string) {
try {
const parsed = JSON.parse(data) as SimplenoteData
const activeNotes = await Promise.all(
parsed.activeNotes.reverse().map((item) => this.createNoteFromItem(item, false, createNote)),
parsed.activeNotes
.reverse()
.map((item) => this.createNoteFromItem(item, false, createNote, convertMarkdownToSuper)),
)
const trashedNotes = await Promise.all(
parsed.trashedNotes.reverse().map((item) => this.createNoteFromItem(item, true, createNote)),
parsed.trashedNotes
.reverse()
.map((item) => this.createNoteFromItem(item, true, createNote, convertMarkdownToSuper)),
)
return [...activeNotes, ...trashedNotes]
@@ -20,7 +20,7 @@ export interface WebApplicationInterface extends ApplicationInterface {
contentHeight: number
isFloatingKeyboard: boolean
}): void
handleMobileKeyboardDidChangeFrameEvent(frame: { height: number; contentHeight: number }): void
handleMobileKeyboardDidHideEvent(): void
handleReceivedFileEvent(file: { name: string; mimeType: string; data: string }): void
handleReceivedTextEvent(item: { text: string; title?: string }): Promise<void>
handleReceivedLinkEvent(item: { link: string; title: string }): Promise<void>
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.17.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/utils
## [1.17.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-05-07)
**Note:** Version bump only for package @standardnotes/utils
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/utils",
"version": "1.17.13",
"version": "1.17.14",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+5 -1
View File
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { sanitize } from 'dompurify'
import { find, isArray, mergeWith, remove, uniq, uniqWith } from 'lodash'
import { escape, find, isArray, mergeWith, remove, uniq, uniqWith } from 'lodash'
import { AnyRecord } from '@standardnotes/common'
const collator = typeof Intl !== 'undefined' ? new Intl.Collator('en', { numeric: true }) : undefined
@@ -612,6 +612,10 @@ export function sanitizeHtmlString(html: string): string {
return sanitize(html)
}
export function escapeHtmlString(html: string): string {
return escape(html)
}
let sharedDateFormatter: unknown
export function dateToLocalizedString(date: Date): string {
if (typeof Intl !== 'undefined' && Intl.DateTimeFormat && typeof navigator !== 'undefined') {
+106
View File
@@ -3,6 +3,112 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.198.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)
### Bug Fixes
* Prevent text from hiding behind navbar in Android ([#2914](https://github.com/standardnotes/app/issues/2914)) ([d02e5ca](https://github.com/standardnotes/app/commit/d02e5cab7462ea4754a3e650be571a16f6c9c7b4))
## [3.198.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)
### Bug Fixes
* Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift ([#2912](https://github.com/standardnotes/app/issues/2912)) ([117781b](https://github.com/standardnotes/app/commit/117781bb3655a2bd6b9b0ca5a4d12f7bbefd164e))
## [3.198.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)
**Note:** Version bump only for package @standardnotes/web
## [3.198.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)
**Note:** Version bump only for package @standardnotes/web
## [3.198.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
**Note:** Version bump only for package @standardnotes/web
# [3.198.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)
### Bug Fixes
* Fixed issue with UI sometimes getting shifted up on iOS ([c050a2c](https://github.com/standardnotes/app/commit/c050a2cd339bb7a8fd482904216de1db2b8fe568))
### Features
* Tag search will now only show the direct tag results instead of also showing the parent and siblings ([#2906](https://github.com/standardnotes/app/issues/2906)) ([caa8eff](https://github.com/standardnotes/app/commit/caa8eff216b2d7a47f849f85f1eb2248eea10c62))
## [3.197.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)
**Note:** Version bump only for package @standardnotes/web
## [3.197.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
### Bug Fixes
* Fixed issue where Android app would crash on screen rotation ([#2905](https://github.com/standardnotes/app/issues/2905)) ([9c1bb35](https://github.com/standardnotes/app/commit/9c1bb353550c0256b4e6dcbee1e087cc9ffdd628))
## [3.197.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)
**Note:** Version bump only for package @standardnotes/web
## [3.197.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)
**Note:** Version bump only for package @standardnotes/web
# [3.197.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)
### Features
* Added image alignment options and preference in Super notes ([#2903](https://github.com/standardnotes/app/issues/2903)) ([7bce025](https://github.com/standardnotes/app/commit/7bce025efbab6d57c4dabb8354d400c87eb90032))
## [3.196.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)
**Note:** Version bump only for package @standardnotes/web
## [3.196.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)
**Note:** Version bump only for package @standardnotes/web
## [3.196.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)
**Note:** Version bump only for package @standardnotes/web
## [3.196.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/web
## [3.196.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)
**Note:** Version bump only for package @standardnotes/web
## [3.196.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
**Note:** Version bump only for package @standardnotes/web
## [3.196.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)
### Bug Fixes
* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))
## [3.196.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)
### Bug Fixes
* Fix issue where searching across formatted text would not work in Super note ([#2897](https://github.com/standardnotes/app/issues/2897)) (skip e2e) ([bdf6be3](https://github.com/standardnotes/app/commit/bdf6be38d241a5c35be56a50e239591294383f95))
## [3.196.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
### Bug Fixes
* Always show "note from selection" option in toolbar to prevent layout shift on smaller widths (skip e2e) ([b228114](https://github.com/standardnotes/app/commit/b2281141f825ae614dbeeb3545e21f0554fc2ebe))
# [3.196.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
### Features
* Add toolbar option to create new note from selection in a Super note ([#2896](https://github.com/standardnotes/app/issues/2896)) (skip e2e) ([b32a866](https://github.com/standardnotes/app/commit/b32a866f33c17cd46fc832a63d318767930f3b05))
## [3.195.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)
**Note:** Version bump only for package @standardnotes/web
+262
View File
@@ -1,5 +1,267 @@
{
"versions": [
{
"version": "3.198.5",
"title": "[3.198.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-15)",
"date": null,
"body": "### Bug Fixes\n\n* Prevent text from hiding behind navbar in Android ([#2914](https://github.com/standardnotes/app/issues/2914)) ([d02e5ca](https://github.com/standardnotes/app/commit/d02e5cab7462ea4754a3e650be571a16f6c9c7b4))",
"parsed": {
"_": [
"Prevent text from hiding behind navbar in Android (#2914) (d02e5ca)"
],
"Bug Fixes": [
"Prevent text from hiding behind navbar in Android (#2914) (d02e5ca)"
]
}
},
{
"version": "3.198.4",
"title": "[3.198.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-04)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift ([#2912](https://github.com/standardnotes/app/issues/2912)) ([117781b](https://github.com/standardnotes/app/commit/117781bb3655a2bd6b9b0ca5a4d12f7bbefd164e))",
"parsed": {
"_": [
"Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift (#2912) (117781b)"
],
"Bug Fixes": [
"Fixed issue where safe area insets were not always applying properly on iOS, causing a UI shift (#2912) (117781b)"
]
}
},
{
"version": "3.198.3",
"title": "[3.198.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-07-01)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.198.2",
"title": "[3.198.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-26)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.198.1",
"title": "[3.198.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.198.0",
"title": "[3.198.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-24)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue with UI sometimes getting shifted up on iOS ([c050a2c](https://github.com/standardnotes/app/commit/c050a2cd339bb7a8fd482904216de1db2b8fe568))\n\n### Features\n\n* Tag search will now only show the direct tag results instead of also showing the parent and siblings ([#2906](https://github.com/standardnotes/app/issues/2906)) ([caa8eff](https://github.com/standardnotes/app/commit/caa8eff216b2d7a47f849f85f1eb2248eea10c62))",
"parsed": {
"_": [
"Fixed issue with UI sometimes getting shifted up on iOS (c050a2c)",
"Tag search will now only show the direct tag results instead of also showing the parent and siblings (#2906) (caa8eff)"
],
"Bug Fixes": [
"Fixed issue with UI sometimes getting shifted up on iOS (c050a2c)"
],
"Features": [
"Tag search will now only show the direct tag results instead of also showing the parent and siblings (#2906) (caa8eff)"
]
}
},
{
"version": "3.197.4",
"title": "[3.197.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-22)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.197.3",
"title": "[3.197.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue where Android app would crash on screen rotation ([#2905](https://github.com/standardnotes/app/issues/2905)) ([9c1bb35](https://github.com/standardnotes/app/commit/9c1bb353550c0256b4e6dcbee1e087cc9ffdd628))",
"parsed": {
"_": [
"Fixed issue where Android app would crash on screen rotation (#2905) (9c1bb35)"
],
"Bug Fixes": [
"Fixed issue where Android app would crash on screen rotation (#2905) (9c1bb35)"
]
}
},
{
"version": "3.197.2",
"title": "[3.197.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-19)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.197.1",
"title": "[3.197.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-18)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.197.0",
"title": "[3.197.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-16)",
"date": null,
"body": "### Features\n\n* Added image alignment options and preference in Super notes ([#2903](https://github.com/standardnotes/app/issues/2903)) ([7bce025](https://github.com/standardnotes/app/commit/7bce025efbab6d57c4dabb8354d400c87eb90032))",
"parsed": {
"_": [
"Added image alignment options and preference in Super notes (#2903) (7bce025)"
],
"Features": [
"Added image alignment options and preference in Super notes (#2903) (7bce025)"
]
}
},
{
"version": "3.196.9",
"title": "[3.196.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.8",
"title": "[3.196.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-06-05)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.7",
"title": "[3.196.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-22)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.6",
"title": "[3.196.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.5",
"title": "[3.196.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.4",
"title": "[3.196.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.196.3",
"title": "[3.196.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-05-02)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue with keyboard on Android covering content ([#2899](https://github.com/standardnotes/app/issues/2899)) ([c4e0138](https://github.com/standardnotes/app/commit/c4e0138ce3ef9bc0adb75dae08aec2203473552d))",
"parsed": {
"_": [
"Fixed issue with keyboard on Android covering content (#2899) (c4e0138)"
],
"Bug Fixes": [
"Fixed issue with keyboard on Android covering content (#2899) (c4e0138)"
]
}
},
{
"version": "3.196.2",
"title": "[3.196.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-25)",
"date": null,
"body": "### Bug Fixes\n\n* Fix issue where searching across formatted text would not work in Super note ([#2897](https://github.com/standardnotes/app/issues/2897)) (skip e2e) ([bdf6be3](https://github.com/standardnotes/app/commit/bdf6be38d241a5c35be56a50e239591294383f95))",
"parsed": {
"_": [
"Fix issue where searching across formatted text would not work in Super note (#2897) (skip e2e) (bdf6be3)"
],
"Bug Fixes": [
"Fix issue where searching across formatted text would not work in Super note (#2897) (skip e2e) (bdf6be3)"
]
}
},
{
"version": "3.196.1",
"title": "[3.196.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)",
"date": null,
"body": "### Bug Fixes\n\n* Always show \"note from selection\" option in toolbar to prevent layout shift on smaller widths (skip e2e) ([b228114](https://github.com/standardnotes/app/commit/b2281141f825ae614dbeeb3545e21f0554fc2ebe))",
"parsed": {
"_": [
"Always show \"note from selection\" option in toolbar to prevent layout shift on smaller widths (skip e2e) (b228114)"
],
"Bug Fixes": [
"Always show \"note from selection\" option in toolbar to prevent layout shift on smaller widths (skip e2e) (b228114)"
]
}
},
{
"version": "3.196.0",
"title": "[3.196.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)",
"date": null,
"body": "### Features\n\n* Add toolbar option to create new note from selection in a Super note ([#2896](https://github.com/standardnotes/app/issues/2896)) (skip e2e) ([b32a866](https://github.com/standardnotes/app/commit/b32a866f33c17cd46fc832a63d318767930f3b05))",
"parsed": {
"_": [
"Add toolbar option to create new note from selection in a Super note (#2896) (skip e2e) (b32a866)"
],
"Features": [
"Add toolbar option to create new note from selection in a Super note (#2896) (skip e2e) (b32a866)"
]
}
},
{
"version": "3.195.33",
"title": "[3.195.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2025-04-23)",
+10 -10
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/web",
"version": "3.195.33",
"version": "3.198.5",
"license": "AGPL-3.0",
"main": "dist/app.js",
"author": "Standard Notes.",
@@ -33,7 +33,7 @@
"@standardnotes/authenticator": "^2.4.0",
"@standardnotes/autobiography-theme": "^1.2.7",
"@standardnotes/bold-editor": "^1.6.4",
"@standardnotes/classic-code-editor": "^1.5.7",
"@standardnotes/classic-code-editor": "^1.6.2",
"@standardnotes/dynamic-theme": "^1.2.8",
"@standardnotes/filepicker": "workspace:*",
"@standardnotes/focus-theme": "^1.4.6",
@@ -108,17 +108,17 @@
},
"dependencies": {
"@ariakit/react": "^0.3.9",
"@lexical/clipboard": "0.30.0",
"@lexical/headless": "0.30.0",
"@lexical/link": "0.30.0",
"@lexical/list": "0.30.0",
"@lexical/react": "0.30.0",
"@lexical/rich-text": "0.30.0",
"@lexical/utils": "0.30.0",
"@lexical/clipboard": "0.32.1",
"@lexical/headless": "0.32.1",
"@lexical/link": "0.32.1",
"@lexical/list": "0.32.1",
"@lexical/react": "0.32.1",
"@lexical/rich-text": "0.32.1",
"@lexical/utils": "0.32.1",
"@radix-ui/react-slot": "^1.0.1",
"@react-pdf/renderer": "^3.3.2",
"comlink": "^4.4.1",
"fast-diff": "^1.3.0",
"lexical": "0.30.0"
"lexical": "0.32.1"
}
}
@@ -357,8 +357,8 @@ export class WebApplication extends SNApplication implements WebApplicationInter
this.notifyWebEvent(WebAppEvent.MobileKeyboardWillChangeFrame, frame)
}
handleMobileKeyboardDidChangeFrameEvent(frame: { height: number; contentHeight: number }): void {
this.notifyWebEvent(WebAppEvent.MobileKeyboardDidChangeFrame, frame)
handleMobileKeyboardDidHideEvent(): void {
setCustomViewportHeight(100, 'vh', true)
}
handleOpenFilePreviewEvent({ id }: { id: string }): void {
@@ -1,8 +1,8 @@
import { FunctionComponent, MouseEventHandler } from 'react'
import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, MouseEventHandler } from 'react'
import Icon from '@/Components/Icon/Icon'
import { IconType } from '@standardnotes/snjs'
type Props = {
interface Props extends ComponentPropsWithoutRef<'button'> {
onClick: MouseEventHandler<HTMLButtonElement>
className?: string
icon: IconType
@@ -12,32 +12,31 @@ type Props = {
disabled?: boolean
}
const IconButton: FunctionComponent<Props> = ({
onClick,
className = '',
icon,
title,
focusable,
iconClassName = '',
disabled = false,
}) => {
const click: MouseEventHandler<HTMLButtonElement> = (e) => {
e.preventDefault()
onClick(e)
}
const focusableClass = focusable ? '' : 'focus:shadow-none'
return (
<button
type="button"
title={title}
className={`no-border flex cursor-pointer flex-row items-center bg-transparent ${focusableClass} ${className}`}
onClick={click}
disabled={disabled}
aria-label={title}
>
<Icon type={icon} className={iconClassName} />
</button>
)
}
const IconButton = forwardRef(
(
{ onClick, className = '', icon, title, focusable, iconClassName = '', disabled = false, ...rest }: Props,
ref: ForwardedRef<HTMLButtonElement>,
) => {
const click: MouseEventHandler<HTMLButtonElement> = (e) => {
e.preventDefault()
onClick(e)
}
const focusableClass = focusable ? '' : 'focus:shadow-none'
return (
<button
{...rest}
type="button"
title={title}
className={`no-border flex cursor-pointer flex-row items-center bg-transparent ${focusableClass} ${className}`}
onClick={click}
disabled={disabled}
aria-label={title}
ref={ref}
>
<Icon type={icon} className={iconClassName} />
</button>
)
},
)
export default IconButton
@@ -1,6 +1,7 @@
import { classNames } from '@standardnotes/snjs'
import { ButtonStyle, getColorsForPrimaryVariant } from '../Button/Button'
import Icon from '../Icon/Icon'
import { useAvailableSafeAreaPadding } from '@/Hooks/useSafeAreaPadding'
type Props = {
label: string
@@ -14,12 +15,15 @@ const PropertiesRequiredForFixedPositioningToWorkOnIOSSafari: React.CSSPropertie
const FloatingAddButton = ({ label, style, onClick }: Props) => {
const buttonClasses = getColorsForPrimaryVariant(style)
const { hasBottomInset } = useAvailableSafeAreaPadding()
return (
<button
className={classNames(
'fixed bottom-6 right-6 z-editor-title-bar ml-3 flex h-15 w-15 cursor-pointer items-center',
'fixed right-6 z-editor-title-bar ml-3 flex h-15 w-15 cursor-pointer items-center',
`justify-center rounded-full border border-solid border-transparent ${buttonClasses}`,
'hover:brightness-125',
hasBottomInset ? 'bottom-[calc(var(--safe-area-inset-bottom)+0.5rem)]' : 'bottom-6',
)}
title={label}
aria-label={label}
@@ -13,15 +13,23 @@ import { isFileTypePreviewable } from './isFilePreviewable'
import PreviewComponent from './PreviewComponent'
import Button from '../Button/Button'
import { ProtectedIllustration } from '@standardnotes/icons'
import { ImageZoomLevelProps } from './ImageZoomLevelProps'
import { OptionalSuperEmbeddedImageProps } from './OptionalSuperEmbeddedImageProps'
type Props = {
application: WebApplication
file: FileItem
isEmbeddedInSuper?: boolean
} & ImageZoomLevelProps
} & OptionalSuperEmbeddedImageProps
const FilePreview = ({ file, application, isEmbeddedInSuper = false, imageZoomLevel, setImageZoomLevel }: Props) => {
const FilePreview = ({
file,
application,
isEmbeddedInSuper = false,
imageZoomLevel,
setImageZoomLevel,
alignment,
changeAlignment,
}: Props) => {
const [isAuthorized, setIsAuthorized] = useState(application.isAuthorizedToRenderItem(file))
const isFilePreviewable = useMemo(() => {
@@ -137,6 +145,8 @@ const FilePreview = ({ file, application, isEmbeddedInSuper = false, imageZoomLe
isEmbeddedInSuper={isEmbeddedInSuper}
imageZoomLevel={imageZoomLevel}
setImageZoomLevel={setImageZoomLevel}
alignment={alignment}
changeAlignment={changeAlignment}
/>
) : (
<FilePreviewError
@@ -0,0 +1,64 @@
import { classNames, IconType } from '@standardnotes/snjs'
import IconButton from '@/Components/Button/IconButton'
import StyledTooltip from '@/Components/StyledTooltip/StyledTooltip'
import { ElementFormatType } from 'lexical'
export function getCSSValueFromAlignment(format: ElementFormatType) {
switch (format) {
case 'start':
case 'left':
return 'start'
case 'right':
case 'end':
return 'end'
default:
return 'center'
}
}
const Options = [
{
alignment: 'left',
label: 'Left align',
},
{
alignment: 'center',
label: 'Center align',
},
{
alignment: 'right',
label: 'Right align',
},
]
export function ImageAlignmentOptions({
alignment: currentAlignment,
changeAlignment,
}: {
alignment: ElementFormatType
changeAlignment: (format: ElementFormatType) => void
}) {
return Options.map(({ alignment, label }) => (
<StyledTooltip label={label} key={alignment}>
<IconButton
className={classNames(
alignment === currentAlignment && '!bg-info text-info-contrast',
'rounded p-1 hover:bg-contrast',
)}
icon={`format-align-${alignment}` as IconType}
title={label}
focusable={true}
onClick={(e) => {
// the preventDefault and stopPropagation for these events are required
// so that the keyboard doesn't jump when you select another option
e.preventDefault()
e.stopPropagation()
changeAlignment(alignment as ElementFormatType)
}}
onMouseDown={(e) => {
e.preventDefault()
}}
/>
</StyledTooltip>
))
}
@@ -1,12 +1,16 @@
import { classNames, IconType } from '@standardnotes/snjs'
import { IconType, PrefKey } from '@standardnotes/snjs'
import { FunctionComponent, useCallback, useEffect, useState } from 'react'
import IconButton from '../Button/IconButton'
import { ImageZoomLevelProps } from './ImageZoomLevelProps'
import IconButton from '@/Components/Button/IconButton'
import { OptionalSuperEmbeddedImageProps } from './OptionalSuperEmbeddedImageProps'
import usePreference from '@/Hooks/usePreference'
import { getCSSValueFromAlignment, ImageAlignmentOptions } from './ImageAlignmentOptions'
import { ElementIds } from '../../Constants/ElementIDs'
import { getOverflows } from '@/Components/Popover/Utils/Collisions'
type Props = {
objectUrl: string
isEmbeddedInSuper: boolean
} & ImageZoomLevelProps
} & OptionalSuperEmbeddedImageProps
const MinimumZoomPercent = 10
const DefaultZoomPercent = 100
@@ -19,6 +23,8 @@ const ImagePreview: FunctionComponent<Props> = ({
isEmbeddedInSuper,
imageZoomLevel,
setImageZoomLevel,
alignment,
changeAlignment,
}) => {
const [imageWidth, setImageWidth] = useState(0)
const [imageHeight, setImageHeight] = useState<number>(0)
@@ -48,8 +54,96 @@ const ImagePreview: FunctionComponent<Props> = ({
const widthIfEmbedded = imageWidth * (imageZoomPercent / PercentageDivisor)
const imageResizer = (
<>
<span className="mr-1.5">{isEmbeddedInSuper ? 'Size' : 'Zoom'}:</span>
<IconButton
className="rounded p-1 hover:bg-contrast"
icon={'subtract' as IconType}
title={isEmbeddedInSuper ? 'Decrease size' : 'Zoom Out'}
focusable={true}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
const newPercent = imageZoomPercent - ZoomPercentModifier
if (newPercent >= ZoomPercentModifier) {
setImageZoom(newPercent)
} else {
setImageZoom(imageZoomPercent)
}
}}
onMouseDown={(e) => {
e.preventDefault()
}}
/>
{isZoomInputVisible ? (
<div className="mx-2">
<input
type="number"
className="w-10 bg-default text-center"
defaultValue={imageZoomPercent}
onKeyDown={(event) => {
event.stopPropagation()
if (event.key === 'Enter') {
const value = parseInt(event.currentTarget.value)
if (value >= MinimumZoomPercent && value <= MaximumZoomPercent) {
setImageZoom(value)
}
setIsZoomInputVisible(false)
}
}}
onBlur={(event) => {
setIsZoomInputVisible(false)
const value = parseInt(event.currentTarget.value)
if (value >= MinimumZoomPercent && value <= MaximumZoomPercent) {
setImageZoom(value)
}
}}
/>
%
</div>
) : (
<button
className="mx-1 rounded px-1.5 py-1 hover:bg-contrast"
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
setIsZoomInputVisible((visible) => !visible)
}}
>
{imageZoomPercent}%
</button>
)}
<IconButton
className="rounded p-1 hover:bg-contrast"
icon="add"
title={isEmbeddedInSuper ? 'Increase size' : 'Zoom In'}
focusable={true}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
setImageZoom(imageZoomPercent + ZoomPercentModifier)
}}
onMouseDown={(e) => {
e.preventDefault()
}}
/>
</>
)
const defaultSuperImageAlignment = usePreference(PrefKey.SuperNoteImageAlignment)
const finalAlignment = alignment || defaultSuperImageAlignment
const justifyContent = isEmbeddedInSuper ? getCSSValueFromAlignment(finalAlignment) : 'center'
return (
<div className="group relative flex h-full min-h-0 w-full items-center justify-center">
<div
className="group relative flex h-full min-h-0 w-full items-center"
style={{ justifyContent }}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
}}
>
<div
className="relative flex h-full w-full items-center justify-center overflow-auto"
style={{
@@ -78,71 +172,37 @@ const ImagePreview: FunctionComponent<Props> = ({
}}
/>
</div>
<div
className={classNames(
isEmbeddedInSuper ? 'hidden focus-within:flex group-hover:flex' : '',
'absolute bottom-6 left-1/2 flex -translate-x-1/2 items-center rounded border border-solid border-border bg-default px-3 py-1',
)}
>
<span className="mr-1.5">{isEmbeddedInSuper ? 'Size' : 'Zoom'}:</span>
<IconButton
className="rounded p-1 hover:bg-contrast"
icon={'subtract' as IconType}
title={isEmbeddedInSuper ? 'Decrease size' : 'Zoom Out'}
focusable={true}
onClick={() => {
const newPercent = imageZoomPercent - ZoomPercentModifier
if (newPercent >= ZoomPercentModifier) {
setImageZoom(newPercent)
} else {
setImageZoom(imageZoomPercent)
{!isEmbeddedInSuper && (
<div className="absolute bottom-6 left-1/2 flex -translate-x-1/2 items-center rounded border border-solid border-border bg-default px-3 py-1">
{imageResizer}
</div>
)}
{isEmbeddedInSuper && (
<div
className="invisible absolute bottom-full left-1/2 z-10 w-max -translate-x-1/2 px-1 pb-1 focus-within:visible group-hover:visible [.embedBlockFocused_&]:visible"
ref={(popover) => {
const editorRoot = document.getElementById(ElementIds.SuperEditorContent)
if (!popover || !editorRoot) {
return
}
const editorRootRect = editorRoot.getBoundingClientRect()
const popoverRect = popover.getBoundingClientRect()
const overflows = getOverflows(popoverRect, editorRootRect)
if (overflows.top > 0) {
popover.style.setProperty('--tw-translate-y', `${overflows.top}px`)
}
}}
/>
{isZoomInputVisible ? (
<div className="mx-2">
<input
type="number"
className="w-10 bg-default text-center"
defaultValue={imageZoomPercent}
onKeyDown={(event) => {
event.stopPropagation()
if (event.key === 'Enter') {
const value = parseInt(event.currentTarget.value)
if (value >= MinimumZoomPercent && value <= MaximumZoomPercent) {
setImageZoom(value)
}
setIsZoomInputVisible(false)
}
}}
onBlur={(event) => {
setIsZoomInputVisible(false)
const value = parseInt(event.currentTarget.value)
if (value >= MinimumZoomPercent && value <= MaximumZoomPercent) {
setImageZoom(value)
}
}}
/>
%
>
<div className="flex divide-x divide-border rounded border border-border bg-default">
{changeAlignment && (
<div className="flex items-center gap-1 px-1 py-0.5">
<ImageAlignmentOptions alignment={finalAlignment} changeAlignment={changeAlignment} />
</div>
)}
<div className="flex items-center px-2 py-0.5 text-sm">{imageResizer}</div>
</div>
) : (
<button
className="mx-1 rounded px-1.5 py-1 hover:bg-contrast"
onClick={() => setIsZoomInputVisible((visible) => !visible)}
>
{imageZoomPercent}%
</button>
)}
<IconButton
className="rounded p-1 hover:bg-contrast"
icon="add"
title={isEmbeddedInSuper ? 'Increase size' : 'Zoom In'}
focusable={true}
onClick={() => {
setImageZoom(imageZoomPercent + ZoomPercentModifier)
}}
/>
</div>
</div>
)}
</div>
)
}

Some files were not shown because too many files have changed in this diff Show More