Compare commits

...

1731 Commits

Author SHA1 Message Date
01zulfi
da894940d3 editor: disallow inserting empty embed urls/code
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-23 10:46:14 +05:00
Abdullah Atta
5d922d934c Merge branch 'master' into beta 2026-02-21 10:36:37 +05:00
Abdullah Atta
5bab9ea914 Merge pull request #9385 from streetwriters/fix/url-crash-in-editor
Fix web/desktop app crashes
2026-02-21 10:34:29 +05:00
Abdullah Atta
da06d7e636 misc: add stack trace deobfuscation script 2026-02-21 10:30:56 +05:00
Abdullah Atta
aece140473 web: fix crash on rewriting error message 2026-02-21 10:30:39 +05:00
Abdullah Atta
656f87e3c6 editor: fix crash if embed url is invalid or empty 2026-02-21 10:30:18 +05:00
Ammar Ahmed
7da168ab52 Merge pull request #9307 from streetwriters/fix-offline-mode-cache-attachments
mobile: fix switching app from background to foreground starts a new attachment cache download group
2026-02-20 08:12:57 +05:00
Ammar Ahmed
b20ad48b31 mobile: release 3.3.15-beta.0 2026-02-20 08:04:53 +05:00
Abdullah Atta
e113e1b59c web: bump version to 3.3.9-beta.1 2026-02-19 11:38:30 +05:00
Abdullah Atta
6bd4924c0b web: add logging about persistence type 2026-02-19 11:37:59 +05:00
Abdullah Atta
a2939aa183 web: use in memory db only for account recovery routes 2026-02-19 11:34:17 +05:00
Abdullah Atta
effa726b65 web: bump version to 3.3.9-beta.0 2026-02-19 10:43:37 +05:00
Abdullah Atta
20d9bf1f23 core: ensure user is fetched after sign up 2026-02-19 10:42:55 +05:00
Abdullah Atta
09e5d014df web: fix page state persistence on account recovery pages 2026-02-19 10:42:55 +05:00
Ammar Ahmed
fe143f66b7 core: remove log 2026-02-16 15:04:05 +05:00
Ammar Ahmed
75c8ca29ef web: publish vaultLocked event from db eventManager 2026-02-16 14:42:43 +05:00
Ammar Ahmed
c52779df23 Merge branch 'master' into beta 2026-02-16 14:40:45 +05:00
Ammar Ahmed
b7b77646e6 Merge pull request #9357 from streetwriters/mobile/release-3.3.14
mobile: release 3.3.14
2026-02-16 14:36:42 +05:00
01zulfi
1157c6b7cd Merge pull request #9351 from streetwriters/web/server-url-from-environment
web: prioritize environment variables for server urls configuration
2026-02-16 14:28:08 +05:00
Abdullah Atta
ab824d7f66 web: fix server urls 2026-02-16 14:27:50 +05:00
Abdullah Atta
702e28a6e6 Merge pull request #9323 from streetwriters/fix/password-changing
Fix account password changing
2026-02-16 14:15:39 +05:00
Ammar Ahmed
0e0ab58959 mobile: release 3.3.14 2026-02-16 13:39:41 +05:00
Ammar Ahmed
e5cdc9ea3d Merge pull request #9355 from streetwriters/fix/use-db-ev-manager
core: use db event manager
2026-02-16 13:34:31 +05:00
Ammar Ahmed
d3c9744e65 core: use db event manager 2026-02-16 13:11:45 +05:00
Ammar Ahmed
6b02144b30 Merge pull request #9354 from streetwriters/fix-loading-note-bug
mobile: loading note gets stuck
2026-02-16 13:07:27 +05:00
Abdullah Atta
91cbc5ddf0 core: simplify user signup 2026-02-16 13:06:58 +05:00
Ammar Ahmed
93aa1ca5aa Merge pull request #9352 from streetwriters/fix-attachment-upload-error
mobile: fix attachment upload error Failed to delete file
2026-02-16 12:59:15 +05:00
Ammar Ahmed
6ae13ebb2f mobile: fix attachment upload error Failed to delete file 2026-02-16 11:43:55 +05:00
Ammar Ahmed
73cdbf64c7 mobile: fix note loading is slow in editor after login/signup 2026-02-13 14:31:13 +05:00
Abdullah Atta
a63b15637f core: fix types 2026-02-13 11:33:09 +05:00
Ammar Ahmed
5153b43bc6 mobile: enable password change and forgot password 2026-02-13 11:27:58 +05:00
Ammar Ahmed
9ea7d09722 core: fix imports 2026-02-13 09:45:08 +05:00
01zulfi
b7b474b245 core: fix archived notes not showing in attachment's linked notes (#9001)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-12 14:19:59 +05:00
ash
e2184a8bdf web: fix text not selectable from entire height of editor (#8972)
Signed-off-by: Ash Holland <x-hv2j5m@keysmash.solutions>
2026-02-12 14:05:49 +05:00
01zulfi
9ea84ca9ae editor: reduce horizontal rule height for large screens (#9040)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-12 14:02:01 +05:00
01zulfi
50136e3689 editor: use last set code language as default (#7086)
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2026-02-12 13:49:52 +05:00
01zulfi
e87f5e5f89 editor: escape html in twitter embed src (#9326)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-10 12:33:56 +05:00
01zulfi
d44792d132 web: align check icon inside note's color in properties panel (#9308)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-09 12:33:28 +05:00
01zulfi
50b01e0b1b web: fix attachment not marked as uploaded when app locked & unlocked (#9306)
When RouteWrapper was unmounted, it would unsub all events including the ones subbed during db initialization (db.init()). Since db isn't initialized again when app is locked & unlocked, those events weren't subbed again. One of these event subscription (fileUploaded event) is responsible for marking an attachment as uploaded. There is no need to unsubscribe all events on RouteWrapper unmount.

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-02-09 12:32:29 +05:00
Abdullah Atta
122c3a96c7 web: fix account recovery 2026-02-09 12:27:36 +05:00
Abdullah Atta
4d407bd646 web: enable account recovery 2026-02-09 11:10:41 +05:00
Abdullah Atta
16b6b37b94 web: enable password changing 2026-02-09 11:08:00 +05:00
Abdullah Atta
8c766ef4f0 core: add initial DEK support 2026-02-09 11:07:53 +05:00
Ammar Ahmed
b7d2865435 mobile: fix switching app from background to foreground starts
a new attachment cache download group
2026-02-05 13:07:27 +05:00
Ammar Ahmed
8d9df5030c mobile: loading note gets stuck 2026-02-05 11:41:54 +05:00
Ammar Ahmed
af014cf8c1 Merge pull request #9297 from streetwriters/fix-toast-context-color-picker
mobile: fix toast context in color picker
2026-02-03 11:48:33 +05:00
Ammar Ahmed
1ddd7b1e6e mobile: fix toast context in color picker 2026-02-03 11:46:32 +05:00
Ammar Ahmed
9ef0179566 Merge pull request #9296 from streetwriters/fix-notebook-header-error
mobile: fix crash when opening notebook (happens randomly)
2026-02-03 11:11:51 +05:00
Ammar Ahmed
38690d18d4 mobile: fix crash when opening notebook (happens randomly) 2026-02-03 11:10:59 +05:00
Arjun Vijay Prakash
e381e54bb7 web: fix toolbar item indentation when moving between groups (#8624)
* web: adjust item depth calculation during move operation

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>

* web: add tests for customize-toolbar.tsx

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>

* refactor(toolbar): export types and functions in customize-toolbar.tsx

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>

* refactor(tests): simplify and import types for customize-toolbar tests

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>

* refactor(toolbar): remove export from internal functions in customize-toolbar.tsx

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>

---------

Signed-off-by: Arjun Vijay Prakash <arjunv.prakash12345@gmail.com>
2026-02-03 10:21:46 +05:00
little Kitchen
7001f98353 fix: unable to change zoom level back to 1.0 (#9283)
Fixed two issues with number input settings:

1. Added onBlur handler to immediately commit values when user
   clicks away, bypassing the 500ms debounce delay. This ensures
   values are saved even if the user navigates away quickly.

2. Added key prop based on current value to force re-render
   when the stored value changes, ensuring the input always
   reflects the actual persisted value.

Fixes #4035
2026-02-02 13:05:24 +05:00
Abdullah Atta
a836642d74 Merge pull request #7901 from 01zulfi/web/delete-data-for-not-logged-in-user
web: add delete data option for not logged in user
2026-02-02 12:31:01 +05:00
Abdullah Atta
a3d3add48f Merge pull request #7303 from 01zulfi/web/reminder-dialog-improvements
web: reminder dialogs improvements
2026-02-02 12:30:40 +05:00
01zulfi
994060cce2 editor: allow attaching image as file (#8752)
* editor: allow attaching image as file
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: fix image previews for regular attachments

* mobile: allow images to be added as attachment without preview

* web: minor refactor
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Co-authored-by: Ammar Ahmed <ammarahmed6506@gmail.com>
2026-02-02 10:26:03 +05:00
Abdullah Atta
75103dc706 Merge pull request #9237 from streetwriters/web/dont-render-properties-on-locked-note
web: don't render properties panel for locked sessions
2026-02-02 09:56:20 +05:00
Abdullah Atta
cf63c2fdc5 Merge branch 'master' into beta 2026-01-28 12:44:31 +05:00
Abdullah Atta
c07f5393f6 Merge pull request #9266 from streetwriters/release/v3.3.8
Release vNext
2026-01-28 12:42:38 +05:00
Abdullah Atta
406c63721d web: bump version to 3.3.8 2026-01-27 17:24:36 +05:00
Abdullah Atta
97f3e02f59 core: remove .only from note history tests 2026-01-27 12:25:39 +05:00
Abdullah Atta
5c6564f00b core: fix monograph sync tests 2026-01-27 12:20:54 +05:00
Ammar Ahmed
605e75efb3 mobile: fix and update tests 2026-01-27 12:02:20 +05:00
Ammar Ahmed
496f9ba340 ci: update build tools version 2026-01-27 10:59:49 +05:00
Ammar Ahmed
f98283f2dd mobile: update changelog 2026-01-27 10:08:17 +05:00
Ammar Ahmed
2d32e85a64 mobile: refactor 2026-01-27 09:59:43 +05:00
Ammar Ahmed
1a56a22a33 mobile: fix feature not locked 2026-01-26 13:40:51 +05:00
Ammar Ahmed
c85204d0c1 mobile: bump version to 3.3.13 2026-01-26 13:32:28 +05:00
Abdullah Atta
1d8a958eaf editor: update test snapshots 2026-01-26 13:07:35 +05:00
Abdullah Atta
b52f70d57d core: fix reminders tests 2026-01-26 12:49:50 +05:00
Chloe Oletto
12687dae7b core: Fix reminder sorting. (#9242)
Signed off by: Chloe Oletto <NeedsChloesure@riseup.net>
2026-01-22 09:26:27 +05:00
Chloe Oletto
c53c3167d8 web: Fix reminder dialog subtext formatting. (#9241)
Signed-off by: Chloe Oletto <NeedsChloesure@riseup.net>
2026-01-22 09:25:20 +05:00
Ammar Ahmed
f15b4cf634 mobile: show note references in reminder page 2026-01-20 10:17:57 +05:00
01zulfi
6430611e3e web: reminder dialogs improvements
* add note references (if any) in reminder edit dialog
* wrap snooze option buttons in reminder preview dialog

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-20 09:29:52 +05:00
01zulfi
afe57e41ce web: add confirmation dialog for delete data option
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-19 16:18:29 +05:00
Ammar Ahmed
86f3f90143 mobile: delete all data option in settings 2026-01-19 14:24:21 +05:00
01zulfi
d3ea51cc01 web: add delete data option for not logged in user
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-19 12:58:48 +05:00
01zulfi
60df472d53 editor: fix search scroll not working on switching editors or opening new editor (#8061)
* editor: fix search scroll not working on switching editors or opening new editor
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: initialize search right after editor is created
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-19 11:59:48 +05:00
01zulfi
67fe25bc8b common: make command palette keybinding same across web & desktop (#9235)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-17 21:18:52 +05:00
01zulfi
94dbec4486 web: don't render properties panel for locked sessions
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-17 14:04:38 +05:00
01zulfi
44a7aed308 intl: fix strings with '<<< HEAD' in pseudo-LOCALE.po (#9236)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-17 12:32:48 +05:00
Ammar Ahmed
f22937e1eb ci: update build tools version 2026-01-17 10:54:44 +05:00
Ammar Ahmed
c816f8b15b mobile: fix ts errors 2026-01-17 09:39:20 +05:00
01zulfi
fa4f4e7bea web: add command palette button in status bar (#7977)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 19:24:21 +05:00
01zulfi
076cea6d6d editor: add scrollbar to color picker (#8065)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 19:22:08 +05:00
01zulfi
d951b97bed web: fix getting active note commands in command palette (#9234)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 19:20:38 +05:00
Ammar Ahmed
bd888e57e5 mobile: release 3.3.13-beta.1 2026-01-16 14:46:15 +05:00
Abdullah Atta
3ba1234056 core: fix note expiry date index not created 2026-01-16 14:44:53 +05:00
Ammar Ahmed
4c5a668114 global: update deps 2026-01-16 14:31:53 +05:00
Abdullah Atta
06d1891389 web: bump version to 3.3.8-beta.1 2026-01-16 14:27:31 +05:00
Ammar Ahmed
c97a228ec8 Merge branch 'master' into beta 2026-01-16 14:26:17 +05:00
Ammar Ahmed
d11a200ebb Merge pull request #9233 from streetwriters/mobile/fix-web-clip
Fix web clip on mobile does not include url & date clipped
2026-01-16 14:24:46 +05:00
01zulfi
bfedc1f43e editor: replace simplebar with simple css styling (#9085)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 14:24:11 +05:00
Ammar Ahmed
b148083750 Merge pull request #9232 from streetwriters/mobile/fix-shortcuts-update
Fix shortcuts do not update in side menu
2026-01-16 14:24:01 +05:00
Ammar Ahmed
cdfd7333cd Merge pull request #9231 from streetwriters/mobile/fix-share-padding
Fix share sheet bottom padding
2026-01-16 14:23:44 +05:00
Ammar Ahmed
2ed32efefb Merge pull request #9210 from streetwriters/fix-editor-features-lock
mobile: fix editor features not updated on login or user change
2026-01-16 14:23:23 +05:00
01zulfi
e3331e6dee web: temporarily disable change&forgot password
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 14:21:01 +05:00
Ammar Ahmed
b3406be1ad mobile: disable password changing and forgot password 2026-01-16 14:21:01 +05:00
01zulfi
751d0ca861 editor: fix hidden collapse/expand icon when callout title is empty (#9220)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 13:06:43 +05:00
Ammar Ahmed
a614693dfa mobile: fix web clip does not include url & date clipped 2026-01-16 13:00:53 +05:00
01zulfi
c4bbceef67 web: add option to preview attachments in attachment manager (#9186)
* web: add option to preview attachments in attachment manager
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: open pdf preview dialog in full width&height
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: minor ui adjustment for pdf preview dialog

* web: fix pdf text selection not visible

---------

Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2026-01-16 13:00:14 +05:00
Abdullah Atta
d39e7c990d Merge pull request #9192 from streetwriters/core/note-history-title
Add support for saving title in note history sessions
2026-01-16 12:41:49 +05:00
Abdullah Atta
e248dbfa5b intl: update po files 2026-01-16 12:41:19 +05:00
Abdullah Atta
29f789493e web: fix previewing note history where only title has changed 2026-01-16 12:41:12 +05:00
Abdullah Atta
2b0e5c41c8 core: remove note content if history item has no content 2026-01-16 12:40:42 +05:00
Ammar Ahmed
e241b2fe72 mobile: fix showing properties from shortcuts 2026-01-16 11:49:08 +05:00
01zulfi
a91983340c web: support note title from session history in diff viewer
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 11:21:52 +05:00
Ammar Ahmed
2aa3aaf2f8 mobile: cleanup 2026-01-16 11:21:52 +05:00
Ammar Ahmed
6b2bf369ff core: ensure session content remains consistent when new session is created
New sessions can be created with title or content only, hence we need to pull the missing data from the note itself to keep session history consistent with previous sessions
2026-01-16 11:21:52 +05:00
Ammar Ahmed
fea5818951 core: update note history tests 2026-01-16 11:21:52 +05:00
Ammar Ahmed
e6eb71a484 core: restoring note history with title 2026-01-16 11:21:52 +05:00
Ammar Ahmed
1e023500be mobile: add support for setting note history session title 2026-01-16 11:21:34 +05:00
Ammar Ahmed
2c078de2c0 core: save note title in note session history item 2026-01-16 11:21:34 +05:00
Abdullah Atta
b373881b8b Merge pull request #9169 from streetwriters/editor/table-export-import-csv
editor: add options to export/import table <> csv
2026-01-16 11:19:10 +05:00
Abdullah Atta
6b37cf0dda intl: update locales 2026-01-16 11:18:02 +05:00
Abdullah Atta
1025c4ec6e editor: minor refactors 2026-01-16 11:17:49 +05:00
Abdullah Atta
c44f9f685d editor: parse csv directly to prosemirror nodes 2026-01-16 11:17:33 +05:00
Ammar Ahmed
5633d4504f mobile: fix shortcuts not updating 2026-01-16 11:10:45 +05:00
Abdullah Atta
c7aa49e541 common: move import/export csv to Pro plan 2026-01-16 10:58:17 +05:00
Ammar Ahmed
ee139463d2 mobile: export table to csv 2026-01-16 10:58:17 +05:00
01zulfi
2cf7f0cc27 editor: add options to export/import table <> csv
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-16 10:58:17 +05:00
Ammar Ahmed
210549445e global: add support for expiring notes (#9167)
* core: expiring notes

* core: add tests

* mobile: support setting not expiry date

* web: support note expiry dates
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: add tests for expiring notes

* core: fix tests

* mobile: delete expiring notes at startup

* core: create index on expiry date

* core: minor refactor

* core: remove `.only` sync test

* web: refactors

* mobile: set limit on expiring notes

* web: improve expiry date menu option && note item ui
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: add premium check for setting expiry for notes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: move note expiry date dialog into its own file && minor changes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: delete expired notes on startup

* web: minor refactors

---------

Co-authored-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2026-01-16 10:55:40 +05:00
Ammar Ahmed
5b85158a7c mobile: fix share sheet bottom padding 2026-01-16 10:38:55 +05:00
01zulfi
09cba1a1df editor: fix youtube embeds erroring with code 153 (#9180)
* web: add referer header with content origin
* youtube embeds aren't working without adding this header

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: use corsHost for youtube embeds

* editor: make youtube embed detection more robust

* web: remove referrer meta tag

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Ammar Ahmed <ammarahmed6506@gmail.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2026-01-15 19:22:46 +05:00
01zulfi
d75e2e85c9 desktop: fix start minimized on autostartup (#8492)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-15 10:41:36 +05:00
01zulfi
966673dfd1 editor: add clear current node keyboard shortcut (#7272)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-15 10:38:33 +05:00
Abdullah Atta
b8ad9265b9 Merge pull request #5726 from streetwriters/feature/conflict-on-locked-notes
Add support for showing conflicts on locked notes
2026-01-15 10:36:07 +05:00
Ammar Ahmed
b2f1fda641 mobile: show merge conflict on locked notes 2026-01-15 10:35:36 +05:00
Abdullah Atta
1544b656e0 web: fix conflict on locked note auto resolving 2026-01-15 10:34:39 +05:00
Abdullah Atta
d97314c484 core: enable conflicts on locked notes 2026-01-15 10:34:39 +05:00
Ammar Ahmed
1432553897 mobile: fix editor features not updated on login 2026-01-15 09:29:48 +05:00
Abdullah Atta
f585fb0381 Merge pull request #9159 from streetwriters/web/change-note-created-date
web: allow editing note's created date from properties panel
2026-01-14 22:06:15 +05:00
01zulfi
98557be52d web: replace note creation date edit popover with dialog
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 14:14:14 +05:00
Ammar Ahmed
e7da0a35d3 mobile: limit changing created date to note's edited date 2026-01-14 14:13:42 +05:00
Ammar Ahmed
965a7f91ed mobile: support changing date-created 2026-01-14 14:13:42 +05:00
01zulfi
2b1c973177 web: allow editing note's created date from properties panel
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 14:13:42 +05:00
Abdullah Atta
7e87cf7fdc Merge pull request #9170 from streetwriters/editor/fix-line-height-css-issues
editor: fix icons not aligning in outline,task,check lists & callouts because of custom line height
2026-01-14 13:52:36 +05:00
Ammar Ahmed
c8cd5a4dc8 mobile: fix line height not applied to paragraphs 2026-01-14 13:36:37 +05:00
Abdullah Atta
d00f7f6255 Merge pull request #9081 from streetwriters/fix/improve-sync-reliability
Improve sync reliability
2026-01-14 11:48:34 +05:00
01zulfi
e8690e3419 web: fix toc headings alignment (#9143)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 11:48:04 +05:00
Abdullah Atta
72ff45c722 Merge pull request #9182 from streetwriters/web/week-format
web: add setting to change week format
2026-01-14 11:40:26 +05:00
01zulfi
22a6271423 editor: fix duplicate block-id on splitting node (#9198)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 10:56:31 +05:00
01zulfi
a6032ffd72 web: fix empty command palette/quick open when locked note active (#9200)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 10:53:00 +05:00
01zulfi
69ea9992ce web: enable toc toggle on new notes (#9201)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-14 10:52:24 +05:00
Ammar Ahmed
36b4d69c2d mobile: week format settings 2026-01-09 11:22:03 +05:00
01zulfi
2129533aa9 web: add setting to change week format
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-08 15:49:13 +05:00
Abdullah Atta
e635ace338 Merge pull request #9174 from streetwriters/fix/theme-server-crashing
Fix theme server crashing on fetching total installs
2026-01-08 01:03:18 +05:00
Abdullah Atta
e729086015 server(themes): bump version to 1.0.4 2026-01-08 01:02:25 +05:00
Abdullah Atta
3fbb7ce548 server(themes): fix crash when fetching install count 2026-01-08 01:01:59 +05:00
01zulfi
e0c31d6fdd editor: fix icons not aligning in outline,task,check lists & callouts because of custom line height
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-07 14:05:57 +05:00
Ammar Ahmed
d19c5b9775 mobile: release 3.3.13-beta.0 2026-01-07 10:00:58 +05:00
Abdullah Atta
f01b88083f Merge branch 'master' into beta 2026-01-07 09:40:38 +05:00
Abdullah Atta
d3ab1d1d2a web: bump version to 3.3.8-beta.0 2026-01-07 09:39:11 +05:00
Ammar Ahmed
7855442d33 Merge pull request #9161 from streetwriters/mobile-multipart-uploads
mobile: add support for multipart uploads
2026-01-06 13:56:42 +05:00
Ammar Ahmed
bbaa6c76b4 mobile: add support for multipart uploads
Files >100MB fail currently using simple file upload methods.
2026-01-06 13:08:53 +05:00
Abdullah Atta
cf71809f6c Merge pull request #9132 from streetwriters/fix/themes-not-instaling
Fix themes not installing
2026-01-03 14:40:18 +05:00
Abdullah Atta
3b7d0ddb36 server(themes): remove _test key suffix 2026-01-03 14:40:06 +05:00
Abdullah Atta
482fea91f3 server(themes): bump version to 1.0.3 2026-01-03 14:39:20 +05:00
Abdullah Atta
4bace10bab server(themes): make counter increment faster 2026-01-03 14:38:45 +05:00
Abdullah Atta
603b7da9e6 server(theme): update theme's install count immediately on install 2026-01-03 14:38:00 +05:00
Abdullah Atta
bf4d168c96 server(theme): sort themes by total installs 2026-01-03 14:37:19 +05:00
Abdullah Atta
756bb82fb7 server(themes): sync themes every 1 hour (roughly) 2026-01-03 14:36:41 +05:00
Abdullah Atta
81b1005b02 Merge pull request #9128 from streetwriters/fix/themes-server-fetch-perf
Fix themes server fetch perf
2026-01-02 13:04:40 +05:00
Abdullah Atta
7ba52d1358 server(themes): bump version to 1.0.2 2026-01-02 13:03:36 +05:00
Abdullah Atta
fcfb2c7e01 server(themes): fetch installs once on sync instead of on every fetch 2026-01-02 13:03:19 +05:00
Abdullah Atta
fa0a5afa63 Merge pull request #9113 from streetwriters/editor/collapsible-headings-perf
editor: improve collapsible heading performance
2026-01-02 09:43:06 +05:00
01zulfi
b881b236a0 editor: export & use AttributeUpdate interface
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-01 15:23:27 +05:00
Ammar Ahmed
ec9c40bd64 Merge pull request #9125 from streetwriters/fix-subscription-wording
mobile: fix wrong trial end date shown in settings
2026-01-01 12:53:04 +05:00
Ammar Ahmed
f0f7857355 mobile: fix wrong trial end date shown in settings 2026-01-01 12:51:05 +05:00
Abdullah Atta
9c59cbbc40 Merge pull request #8944 from streetwriters/web/fix-resizing-editor
web: fix editor & note title resizing when window resizes
2026-01-01 11:19:40 +05:00
Abdullah Atta
6dce41a070 web: fix editor & note title resizing when window resizes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2026-01-01 11:19:23 +05:00
Abdullah Atta
dffeb05f86 Merge pull request #8488 from 01zulfi/global/day-format-setting
global: support day format options & $day$ title format & /day command
2026-01-01 10:51:53 +05:00
Abdullah Atta
ecfbfd83b9 Merge branch 'master' into beta 2026-01-01 10:44:45 +05:00
Ammar Ahmed
0aea1deea0 Merge pull request #9124 from streetwriters/fix-invalid-file-crash-on-restore
mobile: fix app crash when trying to restore an invalid file
2026-01-01 10:26:28 +05:00
Ammar Ahmed
f041b92360 mobile: fix app crash when trying to restore an invalid file 2026-01-01 10:15:54 +05:00
Abdullah Atta
64074030dd Merge pull request #9123 from streetwriters/fix/make-themes-host-configurable
Make themes server host configurable
2026-01-01 09:48:49 +05:00
Abdullah Atta
3387dda22b server(themes): bump version to 1.0.1 2026-01-01 09:46:50 +05:00
Abdullah Atta
534b810350 server(themes): make themes server port configurable 2026-01-01 09:46:25 +05:00
01zulfi
50666c1307 editor: add a collapsible heading test case
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-31 15:33:21 +05:00
01zulfi
200c9bd9eb editor: improve checks to not unecessary call toggle fn in heading update plugin
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-31 15:01:14 +05:00
Ammar Ahmed
2f93c6fdc8 mobile: support day format options 2025-12-31 14:57:16 +05:00
01zulfi
5c21c0a498 global: support day format options & $day$ title format & /day command
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-31 14:54:44 +05:00
Abdullah Atta
93c07d6842 Merge pull request #9122 from streetwriters/fix/themes-server-ci
Fix themes server docker image build & publish
2025-12-31 12:09:19 +05:00
Abdullah Atta
5d9f18ed77 ci: set build context to root for themes server 2025-12-31 12:08:11 +05:00
Abdullah Atta
313d47d9ff Merge pull request #8108 from StLyn4/docker-themes-server
docker: theme server
2025-12-31 11:57:11 +05:00
Abdullah Atta
304a9f3218 ci: add workflow for publishing theme server 2025-12-31 11:56:15 +05:00
Abdullah Atta
a160725acb server(themes): use bun in production 2025-12-31 11:53:22 +05:00
Abdullah Atta
05535b50da server(themes): no need for default env 2025-12-31 11:38:57 +05:00
Abdullah Atta
70fdcf2b44 server(theme): add support for cloudflare kv for counter persistance 2025-12-31 11:08:27 +05:00
Ammar Ahmed
67d47c283e mobile: fix default type homepage not loading 2025-12-31 09:42:53 +05:00
Ammar Ahmed
dd59aab328 Merge branch 'master' into beta 2025-12-31 09:34:23 +05:00
Ammar Ahmed
509b308419 Merge pull request #9119 from streetwriters/fix-navigation-unresponsive-ios
mobile: add simple tab bar implementation
2025-12-31 09:23:45 +05:00
01zulfi
7a12fd701e editor: batch update hidden attribute when toggling headings
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-30 16:53:02 +05:00
01zulfi
9396a06a89 core: support customizable monograph title (#8491)
* core: support customizable monograph title
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* mobile: set custom title for monograph

* web: minor ui changes

---------

Co-authored-by: Ammar Ahmed <ammarahmed6506@gmail.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-12-30 14:29:01 +05:00
Ammar Ahmed
9d9c3b7db5 mobile: add simple tab bar implementation
This fixes most bugs faced by users in side-menu on ios like swipe gesture working when it is disabled and navigation screen stuck on older ios versions.
2025-12-30 14:23:39 +05:00
Abdullah Atta
4cfb10db7c Merge pull request #8284 from 01zulfi/web/editor-line-height-setting
web: add editor line height setting
2025-12-30 14:09:26 +05:00
Abdullah Atta
50024b62cb intl: update locales 2025-12-30 14:08:30 +05:00
Ammar Ahmed
f31084baa7 mobile: configurable default line height setting 2025-12-30 14:07:45 +05:00
01zulfi
2688becb05 web: add editor line height setting
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-30 14:07:44 +05:00
01zulfi
8298900f76 editor: support ctrl+c for images (#8386)
* editor: support ctrl+c for images
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: add test for copy image functionality
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-30 13:46:24 +05:00
01zulfi
b0c18a8ece web: allow saving note from status icon click & tab menu (#8316)
* web: allow saving note from status icon click & tab menu
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: directly save content instead of using events

---------

Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-12-30 13:27:10 +05:00
Abdullah Atta
9659a12d70 Merge pull request #9117 from streetwriters/fix/monograph-ui
Fix monograph ui
2025-12-30 10:06:31 +05:00
Abdullah Atta
6abc25f58a monograph: bump version to 1.2.7 2025-12-30 10:05:51 +05:00
Abdullah Atta
a164ac67ce monograph: fix monograph ui 2025-12-30 10:04:27 +05:00
01zulfi
255677d98e editor: improve headingUpdatePlugin performance
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-29 14:23:16 +05:00
Ammar Ahmed
2a92ea4efd mobile: update export options 2025-12-29 10:25:04 +05:00
Ammar Ahmed
608b4f3009 mobile: update ios provisioning 2025-12-29 10:25:04 +05:00
Ammar Ahmed
a69cb1bf9c mobile: release 3.3.12 2025-12-29 10:25:04 +05:00
Abdullah Atta
be40b3d160 monograph: fix build 2025-12-29 10:25:04 +05:00
Abdullah Atta
51147b17cd monograph: bump version to 1.2.6 2025-12-29 10:25:04 +05:00
Abdullah Atta
5d0c2ae0b9 monograph: add support for reading secrets from file 2025-12-29 10:25:04 +05:00
Ammar Ahmed
8435e69cb5 Merge pull request #9110 from streetwriters/mobile-release/3.3.12
Mobile release/3.3.12
2025-12-29 10:24:05 +05:00
Ammar Ahmed
1d6a33e3be mobile: update export options 2025-12-27 11:47:31 +05:00
Ammar Ahmed
3f4d78af7d mobile: update ios provisioning 2025-12-27 10:19:31 +05:00
Abdullah Atta
f94012d184 Merge pull request #9103 from streetwriters/fix/monograph-build
monograph: fix build
2025-12-27 00:40:06 +05:00
Abdullah Atta
ca73c0c2ce monograph: fix build 2025-12-27 00:39:13 +05:00
Abdullah Atta
742bf31038 Merge pull request #9102 from streetwriters/feat/monograph/secrets-support
Add support for reading secrets from file
2025-12-27 00:28:45 +05:00
Abdullah Atta
1369b64cb1 monograph: bump version to 1.2.6 2025-12-27 00:27:15 +05:00
Abdullah Atta
bc3488512f monograph: add support for reading secrets from file 2025-12-27 00:26:51 +05:00
Ammar Ahmed
51f87911e1 mobile: release 3.3.12 2025-12-26 14:37:49 +05:00
Ammar Ahmed
4d4af5c278 Merge branch 'master' into beta 2025-12-26 11:24:47 +05:00
Ammar Ahmed
a6fcff4d86 Merge pull request #9099 from streetwriters/fix-file-errors
Fix bugs in file picker, pdf preview, backup restoration and vault unlock with biometrics
2025-12-26 11:23:39 +05:00
Ammar Ahmed
50b7f9eb68 mobile: refactor 2025-12-26 11:11:57 +05:00
Ammar Ahmed
a81c534258 mobile: fix ios crash when using biometrics 2025-12-25 22:03:20 +05:00
Ammar Ahmed
67cd2e6504 mobile: fix keyboard opens on app launch if locked note is opened in current tab 2025-12-25 15:25:49 +05:00
Ammar Ahmed
ed5c84b069 mobile: cleanup downloaded cache files on startup 2025-12-25 13:52:52 +05:00
Ammar Ahmed
f6c442ba88 mobile: fix pdf previews not working on ios 2025-12-25 13:51:13 +05:00
Ammar Ahmed
19e59b778d mobile: fix picking files on ios and android 2025-12-25 13:47:35 +05:00
Ammar Ahmed
0643a74ade Merge pull request #9084 from streetwriters/fix-notification-notes
mobile: fix loading note in editor from notifications
2025-12-25 11:41:39 +05:00
Ammar Ahmed
1babbb567c Merge pull request #9086 from streetwriters/fix-sidebar-gesture-close
mobile: fix sidebar close gesture on ios
2025-12-25 11:41:25 +05:00
Ammar Ahmed
11899501f2 Merge pull request #9087 from streetwriters/fix-color-picker-wheel-image
mobile: fix color picker wheel images not loaded
2025-12-25 11:41:02 +05:00
Ammar Ahmed
9982d7b7b4 Merge pull request #9088 from streetwriters/feat-home-shortcuts
Feat Android home launcher shortcuts
2025-12-25 11:40:27 +05:00
Ammar Ahmed
22497199c5 mobile: catch errors 2025-12-25 11:40:05 +05:00
Ammar Ahmed
873b180dab mobile: enable feature for pro users 2025-12-25 11:37:27 +05:00
Ammar Ahmed
ca8e505cd0 mobile: add support for color shortcuts on homescreen 2025-12-24 14:17:52 +05:00
Ammar Ahmed
465e1af838 mobile: keep shortcuts synced with the app 2025-12-24 13:11:08 +05:00
Ammar Ahmed
2f66ee04cc mobile: fix notification notes created on every app launch 2025-12-24 10:51:27 +05:00
Ammar Ahmed
a829594fad mobile: fix color picker wheel images not loaded 2025-12-23 13:57:57 +05:00
Ammar Ahmed
1427518e4b mobile: fix sidebar close gesture on ios 2025-12-23 13:43:15 +05:00
Ammar Ahmed
ecf75a07e4 mobile: fix loading note in editor from notifications
Fix a race condition where the loading note gets replaced by editor's stored state on app launch
2025-12-23 12:48:29 +05:00
01zulfi
41094c80d5 editor: add move line up/down keybinding (#7078)
* editor: add move line up/down keybinding
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* docs: update keyboard shortcuts

* editor: add missing changes

* editor: add move parent node up/down keyboard shortcut
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: refactor moveNode fn && add a test case
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: improve move node logic
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-12-23 12:39:30 +05:00
Abdullah Atta
09b12c6d7e Merge pull request #9083 from streetwriters/release/3.3.7
Release v3.3.7
2025-12-23 12:33:43 +05:00
Abdullah Atta
c560685285 web: bump version to 3.3.7 2025-12-23 12:15:04 +05:00
Abdullah Atta
48d2099308 Merge pull request #9082 from streetwriters/fix/checklist-txt-export 2025-12-23 12:08:21 +05:00
Abdullah Atta
ca3604129d Merge pull request #9082 from streetwriters/fix/checklist-txt-export
Fix check list text export
2025-12-23 12:05:21 +05:00
Abdullah Atta
583a68cabe core: fix merger tests 2025-12-23 11:53:43 +05:00
Abdullah Atta
924eaf8486 core: fix check list text export 2025-12-23 11:33:14 +05:00
Abdullah Atta
9c1a02dbd5 mobile: use db's event manager instead of global 2025-12-23 11:04:06 +05:00
Abdullah Atta
637a19ee21 web: use db's event manager instead of global 2025-12-23 11:03:59 +05:00
Abdullah Atta
896420064f core: improve sync reliability 2025-12-23 11:03:36 +05:00
01zulfi
f6140e8396 editor: fix crash on task list toggle & drag (#9078)
* make sure column resizing's handleMouseDown correctly checks for handle element

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-23 10:55:28 +05:00
Ammar Ahmed
b59a3fb5de mobile: improved navigation for deep links 2025-12-23 10:54:46 +05:00
Ammar Ahmed
0a7f8631b6 mobile: add home shortcuts
Add ability to create shortcuts on launcher homescreen for notes, notebooks and tags.
2025-12-22 18:59:36 +05:00
Ammar Ahmed
de37cb0da1 Merge branch 'master' into beta 2025-12-19 10:48:12 +05:00
Ammar Ahmed
50d0827972 Merge pull request #9071 from streetwriters/mobile-release/3.3.11
mobile: release 3.3.11
2025-12-19 10:47:24 +05:00
Abdullah Atta
a0d4be2379 Merge pull request #9069 from streetwriters/common/command-palette-web-keybinding
common: add ctrl+shift+: web keybinding for command palette
2025-12-18 11:56:06 +05:00
Ammar Ahmed
e4eb5d1f0f mobile: release 3.3.11 2025-12-18 11:46:32 +05:00
Ammar Ahmed
9ae4d3df55 Merge pull request #9067 from streetwriters/fix-wrapped-background-mobile
Fixed wrapped background in screenshots on mobile
2025-12-18 11:35:31 +05:00
Abdullah Atta
95b6b45cc4 Merge pull request #9068 from streetwriters/editor/fix-scroll-mobile-table
editor: fix scroll for tables in mobile
2025-12-18 11:34:29 +05:00
01zulfi
9280d0ef7e common: add ctrl+shift+: web keybinding for command palette
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-18 10:34:39 +05:00
01zulfi
5171b2e5e2 editor: fix scroll for tables in mobile
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-18 10:20:10 +05:00
Ammar Ahmed
8455ff876a mobile: fixed wrapped background in screenshots 2025-12-18 09:48:54 +05:00
Ammar Ahmed
167ce97dd9 Merge branch 'mobile-release/3.3.10' into beta 2025-12-18 09:47:30 +05:00
Ammar Ahmed
0503af6819 Merge pull request #9066 from streetwriters/mobile-release/3.3.10
Mobile release 3.3.10
2025-12-18 09:46:43 +05:00
Abdullah Atta
a218ee1c02 Merge branch 'release/3.3.6' into beta 2025-12-18 00:50:54 +05:00
Abdullah Atta
fbaba8ebe8 Merge pull request #9064 from streetwriters/release/3.3.6
Release v3.3.6
2025-12-18 00:48:11 +05:00
Abdullah Atta
64c70f51c9 web: bump version to 3.3.6 2025-12-17 23:09:20 +05:00
Abdullah Atta
946da6e274 desktop: update sqlite3-fts5-html to 0.0.6
this should fix the `The specified module could not be found` error on Windows
2025-12-17 23:02:46 +05:00
Ammar Ahmed
f42489ecb5 mobile: fix package version is null 2025-12-17 19:06:48 +05:00
Ammar Ahmed
abd5fa00ed mobile: fix ci workflow no space left 2025-12-17 16:28:50 +05:00
Abdullah Atta
9450849b9d web: remove htmlparser2 2025-12-17 16:25:07 +05:00
Ammar Ahmed
d66bda7adc mobile: release 3.3.10 2025-12-17 15:38:37 +05:00
Abdullah Atta
461c4acfb7 ci: use macos-15-intel instead of macos-13 2025-12-17 14:49:46 +05:00
Abdullah Atta
ccb0840771 web: update @playwright/test to 1.57.0 2025-12-17 14:49:22 +05:00
Abdullah Atta
b5a706a6a9 editor: fix TouchEvent is not defined when resizing columns 2025-12-17 14:40:25 +05:00
Abdullah Atta
a45b54dd85 Merge pull request #9041 from streetwriters/fix-subscription-type 2025-12-17 14:22:31 +05:00
01zulfi
a4d29f3e7a editor: hide expand/collapse icon for empty headings (#9063)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-17 14:18:30 +05:00
Ammar Ahmed
2a8ec8245f mobile: fix e2e tests 2025-12-17 13:01:33 +05:00
Ammar Ahmed
d85f32e1f2 mobile: fix babel config for reanimated when using metro bundler 2025-12-17 09:02:27 +05:00
Ammar Ahmed
adc7bb1d9e mobile: fix months ordering bug in wrapped 2025-12-17 09:01:58 +05:00
Ammar Ahmed
2dafde0117 mobile: improve navigation performance 2025-12-13 12:39:38 +05:00
Ammar Ahmed
7582a01b3f mobile: remove polkadot background 2025-12-13 12:38:52 +05:00
Ammar Ahmed
9081012673 mobile: fix drawer open animation velocity 2025-12-13 10:31:41 +05:00
Ammar Ahmed
bf83dfbd28 mobile: do not cache wrapped data 2025-12-13 10:20:12 +05:00
01zulfi
903b96e629 web: show spaces in note,notebook,tag,reminder list item titles (#9027)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-12 19:19:36 +05:00
Ammar Ahmed
3e9007806e mobile: release 3.3.10-beta.6 2025-12-12 12:00:58 +05:00
Abdullah Atta
b6ec0091f0 web: update lockfile (again) 2025-12-12 11:57:54 +05:00
Ammar Ahmed
726b4f5c0d Merge pull request #9037 from streetwriters/fix-clipper-images
Fix loading images in clipped pages
2025-12-12 11:54:11 +05:00
Abdullah Atta
2fdd3a2a85 web: update lockfile 2025-12-12 11:45:36 +05:00
Ammar Ahmed
4fbb39efd0 Merge pull request #9041 from streetwriters/fix-subscription-type
Fix subscription type
2025-12-12 11:05:45 +05:00
Ammar Ahmed
88ecb58153 mobile: fix wrapped ui on tablets 2025-12-12 10:38:05 +05:00
Abdullah Atta
d084da2914 global: update package lockfiles 2025-12-12 10:33:02 +05:00
Abdullah Atta
716de6f9eb web: bump version to 3.3.6-beta.3 2025-12-12 10:06:04 +05:00
Abdullah Atta
dfc4cbe01f Merge pull request #9042 from streetwriters/editor/fix-callout-heading
editor: fix callout collapse/expand on clicking right after its heading
2025-12-12 09:57:56 +05:00
Abdullah Atta
3a5b4c48f5 Merge branch 'master' into beta 2025-12-12 09:47:50 +05:00
Abdullah Atta
08b0fd498e Merge pull request #9049 from streetwriters/chore/disable-rebase-when-sync
config: disable rebase when sync vscode setting
2025-12-12 09:47:05 +05:00
Abdullah Atta
3f365e7ee1 config: disable rebase when sync vscode setting 2025-12-12 09:46:31 +05:00
Abdullah Atta
ebb5c078c9 Merge pull request #9048 from streetwriters/wrapped-2025
Notesnook Wrapped
2025-12-12 09:37:52 +05:00
Ammar Ahmed
f536def5fa mobile: wrapped 2025 2025-12-12 09:37:20 +05:00
01zulfi
2918b8f04b web: wrapped 2025
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

web: refined wrapped ui

web: make wrapped work automatically for future years

web: fix emoji for colors

web: format word count
2025-12-12 09:37:11 +05:00
01zulfi
bb3b05aab0 web: allow closing file drag overlay by click or esc key (#9044)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-11 11:29:28 +05:00
01zulfi
2cdfe2c158 editor: add shortcut to open search and replace (#9043)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-11 11:28:15 +05:00
01zulfi
d1dfafe1da editor: fix callout collapse/expand on clicking right after its heading
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-10 14:36:50 +05:00
01zulfi
144febb3cc web: handle null productId
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-10 13:01:55 +05:00
Ammar Ahmed
22b2d50139 mobile: fix productId usage 2025-12-10 10:11:21 +05:00
01zulfi
121e521eb7 editor: hide horizontal rule if its under a collapsed heading (#9038)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-12-10 10:01:14 +05:00
Ammar Ahmed
7ada9cacda core: fix productId can be null 2025-12-10 09:40:56 +05:00
Ammar Ahmed
5585d69dcf mobile: fix clipper build path 2025-12-09 12:49:37 +05:00
Ammar Ahmed
f5d73a0c8f clipper: set full src url on image.src 2025-12-09 12:49:02 +05:00
Ammar Ahmed
4563739f6e Merge branch 'mobile-release-3.3.10-beta.4' into beta 2025-12-09 10:49:52 +05:00
Abdullah Atta
79ed081c99 desktop: update sqlite-better-trigram to 0.0.5
this should fix the `The specified module could not be found` error on Windows
2025-12-08 15:14:08 +05:00
Ammar Ahmed
dc1c9a9d37 mobile: fix PrivacyInfo.xcprivacy file 2025-12-06 21:15:51 +05:00
Ammar Ahmed
25c90537c8 mobile: fix version code for iOS 2025-12-06 19:54:57 +05:00
Ammar Ahmed
b7aadf4b17 ci: Update iOS Workflow 2025-12-06 18:51:50 +05:00
Ammar Ahmed
b9587e0fd5 mobile: bump version to v3.3.10-beta.5 2025-12-06 18:46:19 +05:00
Ammar Ahmed
38e529f5bf mobile: update libs 2025-12-06 18:42:06 +05:00
Ammar Ahmed
81e2d7738f mobile: enable fade animation for splash screen 2025-12-06 18:41:53 +05:00
Ammar Ahmed
380a681cc1 mobile: fix splash screen in dark mode 2025-12-06 13:28:18 +05:00
Ammar Ahmed
8c2a557618 mobile: fix switching device mode while in fullscreen mode 2025-12-06 12:36:55 +05:00
Ammar Ahmed
7b98d2ede2 mobile: Update lockfile 2025-12-06 11:21:13 +05:00
Ammar Ahmed
64c544a86e mobile: fix notifee lib version 2025-12-06 11:10:31 +05:00
Ammar Ahmed
a048125a14 mobile: release 3.3.10-beta.4 2025-12-06 11:10:31 +05:00
Ammar Ahmed
4c37e16e92 mobile: remove delay when opening settings 2025-12-06 11:10:31 +05:00
Ammar Ahmed
c448bc151b mobile: remove unused hook 2025-12-06 11:10:31 +05:00
Ammar Ahmed
efcbefe1c8 mobile: fix ui shift on focus search 2025-12-06 11:10:31 +05:00
Ammar Ahmed
339a15803c mobile: fix app exits editor on focus keyboard 2025-12-06 11:10:31 +05:00
Ammar Ahmed
582a06c05a mobile: fix biometric unlock not working on iPad and tablet devices 2025-12-06 11:09:39 +05:00
Ammar Ahmed
852f1ec31a Merge pull request #8949 from streetwriters/mobile-fix-ipad-biometric-unlock
mobile: Fix biometric unlock not working on iPad and tablet devices
2025-12-05 14:43:24 +05:00
Ammar Ahmed
2ca142566c Merge branch 'mobile-release-3.3.10-beta.3' into beta 2025-12-04 14:37:27 +05:00
Ammar Ahmed
9a13d112cb mobile: Update Podfile 2025-12-04 14:36:52 +05:00
Abdullah Atta
bc9cbbc1f6 crypto: lazily import sodium 2025-12-03 19:15:31 +05:00
Ammar Ahmed
129bf49204 mobile: release v3.3.10-beta.3 2025-12-03 14:26:57 +05:00
Ammar Ahmed
a29acb6f30 mobile: update notifee to support new architecture 2025-12-03 14:26:57 +05:00
Ammar Ahmed
c957094b1e mobile: fix orientation changing and fullscreen mode on tablets 2025-12-03 14:26:57 +05:00
Ammar Ahmed
8e5743f417 mobile: fix orientation listening events 2025-12-03 14:26:57 +05:00
Ammar Ahmed
4ff42f1ae4 mobile: fix crash on configuration changed on android 2025-12-03 14:26:57 +05:00
Ammar Ahmed
06c8f5367e mobile: fix picking themes from file 2025-12-03 14:26:57 +05:00
Abdullah Atta
f74d7cf37e web: bump version to 3.3.6-beta.2 2025-12-03 14:06:45 +05:00
Abdullah Atta
b971b4d07a Merge pull request #9002 from streetwriters/web/new-note-properties-pane 2025-12-03 14:05:27 +05:00
Abdullah Atta
09fd5d8642 Merge pull request #9002 from streetwriters/web/new-note-properties-pane
web: release space taken by properties pane for new note/tab
2025-12-03 14:01:34 +05:00
Abdullah Atta
97447e8d6c Merge pull request #9016 from NeedsChloesure/patch/erroneous-filesize-check
Fix file size calculation
2025-12-03 14:01:05 +05:00
Abdullah Atta
c388045c68 web: fix file uploading not working in safari 2025-12-03 13:59:55 +05:00
Abdullah Atta
db4d998705 editor: fix TouchEvent is not defined 2025-12-03 13:59:36 +05:00
Chloe Oletto
011cc992e8 mobile: Incorrect math for determining total number of chunks causes erroneous assertation that there is one more chunk in certain conditions.
Signed-off-by: Chloe Oletto <needschloesure@riseup.net>
2025-12-01 02:45:21 -08:00
Chloe Oletto
2c1d8b0eea web: Incorrect math for determining total number of chunks causes erroneous assertation that there is one more chunk in certain conditions.
Signed-off-by: Chloe Oletto <needschloesure@riseup.net>
2025-12-01 02:43:33 -08:00
Ammar Ahmed
65ae22e70e Merge branch 'mobile-release-3.3.10-beta.2' into beta 2025-12-01 10:05:46 +05:00
01zulfi
81da60333d editor: fade all nodes inside a checklist item except for a nested checklist (#9008)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-29 12:37:36 +05:00
01zulfi
aa572febd4 editor: add toggle text color keybinding (#9010)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-29 12:36:09 +05:00
Ammar Ahmed
6060cb457d mobile: fix failing build errors on android 2025-11-29 00:01:56 +05:00
Ammar Ahmed
6ac0107274 mobile: bump react-native-upload library version 2025-11-28 18:52:12 +05:00
Ammar Ahmed
95de4855c0 mobile: release 3.3.10-beta.2 2025-11-28 14:36:33 +05:00
Ammar Ahmed
bcfff70e78 mobile: improve file uploads in background 2025-11-28 14:34:18 +05:00
Ammar Ahmed
11e7d34961 mobile: update deps 2025-11-28 12:22:16 +05:00
Ammar Ahmed
e48e523b90 mobile: use KeyboardAvoidingView on android 2025-11-28 12:21:42 +05:00
Ammar Ahmed
4689b4290e mobile: patch rn to fix keyboard hiding on android 2025-11-28 12:21:13 +05:00
Ammar Ahmed
f9af8d116c mobile: fix crash on pick image or file 2025-11-28 11:09:31 +05:00
Ammar Ahmed
1f9339e5ab Merge branch 'release-v3.3.10-beta.1' into beta 2025-11-28 09:29:38 +05:00
Ammar Ahmed
4bc9b718cc mobile: delay layout on navigating to settings 2025-11-27 14:14:19 +05:00
Abdullah Atta
eae6b058fc web: bump version to 3.3.6-beta.1 2025-11-27 14:11:19 +05:00
Ammar Ahmed
a29bcf713f mobile: fix loading data in share extension 2025-11-27 14:09:42 +05:00
Ammar Ahmed
6b171f578d mobile: release 3.3.10-beta.1 2025-11-27 13:31:50 +05:00
Ammar Ahmed
3f45c2ebd4 mobile: update react-native-actions-sheet 2025-11-27 13:31:50 +05:00
Ammar Ahmed
883b1a63b2 mobile: improve animation for fluid panels 2025-11-27 13:31:50 +05:00
Ammar Ahmed
4c0efa8b08 mobile: make gradlew executable 2025-11-27 13:31:50 +05:00
01zulfi
ed2a04d590 editor: improve inline code styling (#8987)
* editor: improve inline code styling
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: remove top&bottom padding from inline code
* it was cutting off a bit of text from top&bottom lines

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: update text color of inline code
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: adjust font size and padding of inline code

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-11-27 12:05:16 +05:00
01zulfi
52a3d1c373 editor: readonly table fixes (#8997)
* editor: readonly table fixes
* fix tables not hiding under collapsed headings in readonly view
* allow column resizing in readonly view
* fix scrollbar not showing in readonly view

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: remove table view

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-11-27 12:04:23 +05:00
01zulfi
573b24f28f editor: fix heading align (#8996)
this reverts all the custom layout based on divs & spans and moves back to using pseudo element for the expand/collapse icon.

There were a few problems with the previous logic:

1. We had to write custom logic for text alignment (not a huge deal but it could cause bugs down the line)
2. Aligning the icon properly was hit or miss. We were using flex which meant for multi line headings, the icon appeared way to the left instead of right next to the end of the heading.
3. The styling css for the previous logic was MASSIVE and handled lots of cases which meant more maintenance burden for us.

The new logic is simpler:

1. Use `::after` pseudo element for the expand/collapse icon. This works very nicely on Android.
2. Use selection range on the heading to compute bounding rects for each line. It's a bit hacky but works for both LTR & RTL headings.

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-11-27 11:43:27 +05:00
Abdullah Atta
e68e5bc6fb web: bump version to 3.3.6-beta.0 2025-11-27 11:43:27 +05:00
01zulfi
6473ce4244 editor: unhide children when collapsed heading is changed to non-heading node (#8946)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-27 11:43:27 +05:00
01zulfi
82685314f7 editor: improve table cell styling (#8960)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-27 11:43:27 +05:00
01zulfi
c1370af395 editor: change heading collapse icon pos (#8953)
* editor: enable heading in table, change collapse icon pos, && disable empty heading collapse
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: migrate empty collapsed headings in parseHTML instead of plugin
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: remove migration for empty collapsed headings
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: fix heading collapse on mobile
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: use ontouchend instead of ontouchstart

---------

Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-11-27 11:43:27 +05:00
Abdullah Atta
7779a8b752 Merge pull request #9003 from streetwriters/rn-82
Upgrade to React Native 82
2025-11-27 11:34:08 +05:00
Abdullah Atta
3de225f7c9 mobile: upgrade react native 0.82
this commit also bump app version to 3.3.10-beta.0
2025-11-27 11:32:50 +05:00
Abdullah Atta
1d6ff96dd9 Merge pull request #8930 from streetwriters/feat/improve-tables-on-mobile 2025-11-27 11:12:43 +05:00
Abdullah Atta
9f403b9d7f Merge branch 'master' into beta 2025-11-27 11:04:57 +05:00
Abdullah Atta
ea63e6a325 Merge pull request #8999 from streetwriters/web/fix-export-notes-count
web: show total notes count in export dialog
2025-11-27 09:17:22 +05:00
Vsevolod Volkov
c6d471cec9 docker: ability to build container with theme server 2025-11-26 19:24:04 +01:00
01zulfi
f7914c57c7 web: release space taken by properties pane for new note/tab
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-26 16:49:17 +05:00
01zulfi
fc55cbf3d7 web: show total notes count in export dialog
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-26 15:34:51 +05:00
Abdullah Atta
a5f2d39b07 Merge pull request #8977 from streetwriters/web/archive-drag-drop
web: allow archiving when notes drag-n-dropped on nav item
2025-11-24 09:39:56 +05:00
Abdullah Atta
e5395bf05a Merge pull request #8980 from streetwriters/editor/checklist-fade
editor: fade checklist when checked
2025-11-24 09:38:39 +05:00
01zulfi
30466e4a76 editor: fade checklist when checked
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

Update packages/editor/styles/styles.css

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>
2025-11-24 09:38:16 +05:00
Abdullah Atta
499ab7cdfe Merge pull request #8978 from streetwriters/web/exclude-empty-paragraph-count
web: exclude empty paragraphs in editor stats
2025-11-24 09:35:13 +05:00
01zulfi
2e49893841 web: exclude empty paragraphs in editor stats
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-21 09:48:14 +05:00
01zulfi
c295e1c9be web: allow archiving when notes drag-n-dropped on nav item
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-18 13:58:44 +05:00
Ammar Ahmed
6dd16f6791 mobile: fix biometric unlock not working on iPad and tablet devices 2025-11-12 12:19:57 +05:00
Abdullah Atta
97d21c818e Merge pull request #8858 from 01zulfi/editor/disable-collapsible-headings-in-table
editor: disable collapsible headings inside tables
2025-11-12 11:30:38 +05:00
Abdullah Atta
3beb60d8b6 Merge pull request #8918 from streetwriters/core/fix-keys-reencryption-on-update-password
core: fix user keys re-encryption when updating password
2025-11-12 11:29:03 +05:00
Abdullah Atta
3d00502341 editor: fix table column/row tool sizing 2025-11-12 11:23:16 +05:00
Abdullah Atta
7975dfcc78 editor: fix recursive enter in tables on mobile 2025-11-12 11:23:16 +05:00
Abdullah Atta
907406e7b2 editor: add support for resize on hover 2025-11-12 11:23:16 +05:00
Abdullah Atta
8b03f96a3f editor: fix column resize handle hiding after column resize 2025-11-12 11:23:16 +05:00
Abdullah Atta
5183b33f9d editor: fix type errors 2025-11-12 11:23:16 +05:00
Abdullah Atta
bfddf288eb editor: massive improvements to tables on mobile
- resizable columns
- cell selection
2025-11-12 11:23:16 +05:00
Abdullah Atta
28ada2b032 mobile: release v3.3.9 2025-11-12 09:48:21 +05:00
Ammar Ahmed
6343212d7e Merge pull request #8923 from streetwriters/mobile-release-3.3.9
mobile: release v3.3.9
2025-11-12 09:47:26 +05:00
01zulfi
f728ad8826 editor: disable collapsible headings inside tables
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-11 11:39:41 +05:00
Abdullah Atta
33c3bf0d69 Merge pull request #8919 from streetwriters/web/show-monograph-view-count
web: show monograph's view count
2025-11-08 13:07:14 +05:00
Abdullah Atta
2fc3cc3c76 web: remove border separation 2025-11-08 13:05:59 +05:00
Abdullah Atta
69a3fa4d90 web: lazily load monograph analytics 2025-11-08 12:59:29 +05:00
Abdullah Atta
bd4f130ef8 core: handle errors on monograph analytics fetch 2025-11-08 12:59:17 +05:00
Abdullah Atta
28b563b95b web: make monograph analytics a pro feature 2025-11-08 12:49:36 +05:00
Abdullah Atta
71952a354e core: monographs stats -> monograph analytics 2025-11-08 12:46:58 +05:00
Abdullah Atta
41ad8e0988 web: improve publish view ux 2025-11-07 19:26:32 +05:00
01zulfi
3e87e2ea5a web: use monograph stats api
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-07 10:54:15 +05:00
01zulfi
a6541b9731 web: show monograph's view count
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-06 14:10:52 +05:00
Abdullah Atta
b96af6c4cf mobile: release v3.3.9 2025-11-05 23:35:27 +05:00
Abdullah Atta
cc584461ad Merge pull request #8909 from streetwriters/mobile-release-3.3.8 2025-11-05 23:31:34 +05:00
Abdullah Atta
6069a41fa4 Merge pull request #8909 from streetwriters/mobile-release-3.3.8
Mobile release 3.3.8
2025-11-05 23:28:48 +05:00
01zulfi
7190207e5c core: fix user keys re-encryption when updating password
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-05 14:02:48 +05:00
01zulfi
05ea085cdc Merge pull request #8915 from streetwriters/release/v3.3.5
Release/v3.3.5
2025-11-05 13:15:30 +05:00
01zulfi
015453a40b Merge pull request #8914 from streetwriters/release/v3.3.5
web: bump version to 3.3.5
2025-11-05 13:07:01 +05:00
01zulfi
dad92a186c web: bump version to 3.3.5
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-05 12:08:04 +05:00
Abdullah Atta
7e5e19e72c Merge pull request #8913 from streetwriters/editor/fix-checklist-bulletlist
editor: fix checklist parsing as bulletlist
2025-11-05 12:03:55 +05:00
01zulfi
8e1484a029 editor: fix checklist parsing as bulletlist
* reduce list-item's parseHTML priority lower than check-list-item's parseHTML priority

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-05 11:01:52 +05:00
Ammar Ahmed
4a3b3a14ec mobile: release v3.3.8 2025-11-04 10:35:34 +05:00
Ammar Ahmed
758157cf78 mobile: update documentation link 2025-11-04 10:34:43 +05:00
Ammar Ahmed
a1a171d648 mobile: fix restore backup keeps loading 2025-11-04 10:24:22 +05:00
01zulfi
b2645fc4d9 Merge pull request #8908 from streetwriters/release/v3.3.4
Release/v3.3.4
2025-11-03 17:23:50 +05:00
01zulfi
92ba4d7624 Merge pull request #8907 from streetwriters/release/v3.3.4
web: bump version to 3.3.4
2025-11-03 17:13:35 +05:00
01zulfi
d44ee5ca05 web: bump version to 3.3.4
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-03 16:18:57 +05:00
Abdullah Atta
58f060ae59 Merge pull request #8905 from streetwriters/editor/fix-images-in-lists 2025-11-03 16:14:00 +05:00
Abdullah Atta
d7dde74675 Merge pull request #8905 from streetwriters/editor/fix-images-in-lists
editor: fix old inline images in bullet,numbered,task&check lists
2025-11-03 16:13:02 +05:00
01zulfi
5fde1c0f07 editor: fix old inline images in bullet,numbered,task&check lists
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-03 16:10:26 +05:00
Abdullah Atta
d9ea44f92a Merge pull request #8857 from 01zulfi/core/escape-paranthesis-in-search 2025-11-03 12:38:33 +05:00
Abdullah Atta
ffddbe2d7a Merge pull request #8857 from 01zulfi/core/escape-paranthesis-in-search
core: escape paranthesis in notes search query
2025-11-03 12:37:39 +05:00
01zulfi
eb3998d72d core: remove unnecessary only in tests
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-03 12:21:11 +05:00
01zulfi
fca61afd7c core: escape paranthesis in notes search query
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-03 11:02:02 +05:00
Abdullah Atta
1bf86386fa Merge pull request #8904 from streetwriters/editor/fix-heading-plugin 2025-11-03 10:29:23 +05:00
Abdullah Atta
33559250d8 Merge pull request #8904 from streetwriters/editor/fix-heading-plugin
editor: fix crash in heading plugin when pasting markdown content
2025-11-03 10:27:53 +05:00
01zulfi
38daca0099 editor: fix crash in heading plugin when pasting markdown content
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-11-03 09:01:09 +05:00
Abdullah Atta
6fc328c4dd clipper(web): bump version to 0.4.0 2025-11-01 19:44:29 +05:00
Abdullah Atta
36c8b8cc25 Merge pull request #8896 from streetwriters/webclipper/release/0.4.0
Update Web Clipper to 0.4.0
2025-11-01 19:43:00 +05:00
Abdullah Atta
dd4ca817c7 clipper(web): bump version to 0.4.0 2025-11-01 19:41:01 +05:00
Ammar Ahmed
a60a1aa406 Merge branch 'master' into beta 2025-11-01 09:43:46 +05:00
Ammar Ahmed
594ceb1f52 Merge pull request #8894 from streetwriters/mobile-release-3.3.7
Mobile release 3.3.7
2025-11-01 09:43:14 +05:00
Ammar Ahmed
fbc74ec359 mobile: update pods 2025-10-31 21:55:22 +05:00
Ammar Ahmed
0dfc1dfa52 mobile: release v3.3.7 2025-10-31 20:02:43 +05:00
Ammar Ahmed
b9c14ef9aa Merge pull request #8888 from streetwriters/fix-clipper-mobile
mobile: fix share extension not able to clip webpage
2025-10-31 18:38:59 +05:00
Ammar Ahmed
3fec2b397f Merge pull request #8883 from streetwriters/fix-16kb-alignment-x64
mobile: fix 16kb alignment on x86_64 platform
2025-10-31 18:38:34 +05:00
Ammar Ahmed
ec841caef7 Merge pull request #8866 from streetwriters/feat-add-clear-button-search
Feat add clear button search
2025-10-31 18:38:16 +05:00
Ammar Ahmed
c163fc3be4 Merge pull request #8865 from streetwriters/mobile-fix-crash-sub-status
mobile: fix crash in subscription-status settings item
2025-10-31 18:37:59 +05:00
Ammar Ahmed
1e04315596 Merge pull request #8853 from streetwriters/fix-export-notes-free-users
mobile: allow free users to export note in all formats
2025-10-31 18:37:18 +05:00
Ammar Ahmed
9aef28b03d Merge pull request #8856 from streetwriters/fix-table-cell-selection-mobile
Fix table cell selection mobile
2025-10-31 18:36:56 +05:00
Abdullah Atta
7bd1931195 Merge pull request #8892 from streetwriters/release/v3.3.3
Release/v3.3.3
2025-10-31 18:25:01 +05:00
01zulfi
88628c650f Merge pull request #8890 from streetwriters/release/v3.3.3
web: bump version to 3.3.3
2025-10-31 16:37:09 +05:00
01zulfi
9523fd52d8 web: bump version to 3.3.3
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-31 14:40:34 +05:00
01zulfi
c59091f946 editor: fix changing level of collapsed heading
* preserve collasped state
* reset visibility of hidden nodes under changed heading

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-31 14:06:54 +05:00
Abdullah Atta
8cc6df92f4 Merge pull request #8889 from 01zulfi/editor/fix-heading-level-change
editor: fix changing level of collapsed heading
2025-10-31 14:05:09 +05:00
01zulfi
042656856a editor: fix changing level of collapsed heading
* preserve collasped state
* reset visibility of hidden nodes under changed heading

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-31 13:14:06 +05:00
Ammar Ahmed
5921c61e98 mobile: fix share extension not able to clip webpage 2025-10-31 10:01:59 +05:00
Abdullah Atta
6a017c237d Merge branch 'master' into beta 2025-10-30 13:31:01 +05:00
Abdullah Atta
c5cd214d97 Merge pull request #8882 from 01zulfi/editor/fix-collapsible-hidden-under
editor: fix disappearing nodes under collapsed headings if heading is edited
2025-10-30 13:29:05 +05:00
Abdullah Atta
b30c35e59d Merge pull request #8877 from 01zulfi/editor/fix-outline-images
editor: fix images from older version not rendering in outline list
2025-10-30 13:28:00 +05:00
01zulfi
ce4fa13758 editor: fix disappearing nodes under collapsed headings if heading is edited
* design flaw in using the hiddenUnder attribute on hidden nodes, a hidden attribute should be sufficient

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-30 12:59:50 +05:00
01zulfi
1f47df0f45 editor: add test case to assert migration of old inline images in outline list item
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-30 12:53:21 +05:00
Abdullah Atta
27c641536a editor: add support for twitter embeds (#8879) 2025-10-30 12:02:25 +05:00
Ammar Ahmed
91109278b6 mobile: fix 16kb alignment on x86_64 platform 2025-10-30 11:16:23 +05:00
01zulfi
78e4672871 editor: fix images from older version not rendering in outline list
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-29 13:12:39 +05:00
Abdullah Atta
dbecd6a466 Merge pull request #8743 from 01zulfi/editor/restrict-attachment-for-notloggedin-users
editor: restrict attachment upload for not logged-in users
2025-10-29 12:35:53 +05:00
Ammar Ahmed
e690973107 mobile: restrict attachment upload by logged out users 2025-10-29 12:33:20 +05:00
Abdullah Atta
17b14e0ac6 Merge pull request #8875 from streetwriters/fix-remove-line-through-checklist
Fix remove line through checklist
2025-10-29 11:53:58 +05:00
Abdullah Atta
0f8da747f9 Merge pull request #8867 from streetwriters/fix/warn-arm64-translation
Warn users if app is running under arm64 translation
2025-10-29 11:53:19 +05:00
Ammar Ahmed
df7d91e4f3 mobile: fix resize input delay too long 2025-10-29 11:38:51 +05:00
Ammar Ahmed
7eefecd961 editor: do not strikethrough on checked item in checklist 2025-10-29 11:38:32 +05:00
Abdullah Atta
2ec764d862 clipper: update lockfile 2025-10-28 14:36:48 +05:00
Abdullah Atta
5a9b9da47e Merge pull request #8869 from 01zulfi/editor/fix-outline-list-collapse
editor: fix outline list item collapsing the parent item
2025-10-28 13:53:33 +05:00
01zulfi
c5a82bd779 editor: fix outline list item collapsing the parent item
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-28 13:37:44 +05:00
Abdullah Atta
9c2a807025 desktop: show warning after app is ready 2025-10-28 13:29:57 +05:00
Abdullah Atta
4fa1ea4380 desktop: warn users if app is running under arm64 translation 2025-10-28 12:41:34 +05:00
01zulfi
351d412fdf editor: restrict attachment upload for not logged-in users
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-28 12:40:25 +05:00
Ammar Ahmed
38600bf2a5 mobile: add tests 2025-10-28 12:00:38 +05:00
Ammar Ahmed
4720456d63 mobile: add clear button to search on mobile 2025-10-28 11:50:25 +05:00
Ammar Ahmed
5a2221c5d3 mobile: fix crash in subscription-status settings item 2025-10-28 10:52:11 +05:00
Abdullah Atta
91ef98df4f Merge pull request #8814 from streetwriters/feature/direct-navigation-to-setting-sections
Add support for direct navigation (via url) to setting sections
2025-10-27 15:34:34 +05:00
Abdullah Atta
8aa0a539f8 Merge pull request #7294 from 01zulfi/webclipper/bookmark 2025-10-27 15:19:50 +05:00
Abdullah Atta
68b921887b Merge pull request #7294 from 01zulfi/webclipper/bookmark
webclipper: add bookmark option
2025-10-27 15:19:07 +05:00
Abdullah Atta
dea91c48a2 web: add hr after bookmark link 2025-10-27 15:18:16 +05:00
Abdullah Atta
f2e91d4a5c webclipper: fix bookmark not working in web clipper 2025-10-27 15:18:00 +05:00
01zulfi
47be00355d webclipper: add bookmark option
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-27 13:58:06 +05:00
Abdullah Atta
61549e8e06 Merge pull request #8254 from 01zulfi/webclipper/start-clip-button 2025-10-27 13:49:21 +05:00
Abdullah Atta
05c4051cc9 Merge pull request #8254 from 01zulfi/webclipper/start-clip-button
webclipper: improve clipping ux
2025-10-27 13:48:44 +05:00
01zulfi
71fe6bbebc webclipper: improve clipping ux
* start clip when button is clicked, not on load or selection click
* add discard button

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-27 13:43:53 +05:00
Abdullah Atta
317be2c8da Merge pull request #8195 from 01zulfi/clipper/improve-clip-with-styles 2025-10-27 13:41:53 +05:00
Abdullah Atta
74ed529f16 Merge pull request #8195 from 01zulfi/clipper/improve-clip-with-styles
clipper: improve clip with styles
2025-10-27 13:31:53 +05:00
Abdullah Atta
24a6d8c3f9 editor: fix really large images not loading 2025-10-27 13:16:38 +05:00
Ammar Ahmed
14c1567c07 editor: fix scrollLeft value on mobile when using scroll container 2025-10-27 12:50:16 +05:00
Ammar Ahmed
fb778f56ed editor: use default scroll container on mobile to fix selection bugs 2025-10-27 12:47:41 +05:00
Abdullah Atta
1eb0ef0cbe editor: fix web clipped screenshot not visible in editor 2025-10-27 12:23:19 +05:00
Abdullah Atta
a81c8d0064 clipper: fix error on inlining css background images 2025-10-27 11:29:52 +05:00
Abdullah Atta
36099c6b4d clipper: update lockfile 2025-10-25 15:28:31 +05:00
01zulfi
8f7a15e692 clipper: remove unnecessary packages
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:44 +05:00
Abdullah Atta
de4a660eb2 clipper: add svg screenshots for debugging 2025-10-25 15:12:31 +05:00
Abdullah Atta
c53fab603f clipper: ignore noscript elements 2025-10-25 15:12:31 +05:00
01zulfi
a3e11b62e0 clipper: append head for node selection clips
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:30 +05:00
01zulfi
5d1775151d clipper: remove invalid element attributes for screenshot clips
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:30 +05:00
Abdullah Atta
a0f5880e2c clipper: serialize styles using xml serializer 2025-10-25 15:12:30 +05:00
Abdullah Atta
3dc7e70890 clipper: fix svg -> canvas -> image logic 2025-10-25 15:12:30 +05:00
01zulfi
2fa1fc8662 clipper: fix screenshot clip
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:27 +05:00
01zulfi
879a65a41c clipper: skip style inlining if property not present
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
Abdullah Atta
d5b68bf0da clipper: fix tests 2025-10-25 15:12:08 +05:00
Abdullah Atta
fd460d3e90 clipper: bg images in css not clipped 2025-10-25 15:12:08 +05:00
01zulfi
a74bd4972c clipper: move inlining stylesheeet & css import resolution logic to addStylesToHead
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
0ed8839ea9 clipper: fix build error
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
Abdullah Atta
d7b0f2684a clipper: minor perf improvements 2025-10-25 15:12:08 +05:00
Abdullah Atta
b5be9b3abf clipper: fix image inlining in stylesheets 2025-10-25 15:12:08 +05:00
01zulfi
911105c409 clipper: inline background-images style for stylesheets appended to head
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
200c842671 clipper: ignore print stylesheets when adding to head
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
5e5930e9e8 clipper: inline styles if cssRules.length > 0
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
Abdullah Atta
fd64c1cf2d clipper: set downloaded stylesheet as html instead of text 2025-10-25 15:12:08 +05:00
01zulfi
48e2916874 clipper: update filtering in cloned node
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
a4b0e5bfef clipper: bring back node processing
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
0b56121a26 clipper: preserve root element attributes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:12:08 +05:00
01zulfi
f3f61d0e19 clipper: remove unneeded code & packages
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:10:21 +05:00
01zulfi
faaf1eeadf clipper: remove images from clip if images false
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:42 +05:00
01zulfi
4fbaecc24e clipper: remove clone related functions
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:42 +05:00
01zulfi
4fb056095c clipper: create & use addStylesToHead()
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:42 +05:00
01zulfi
2d6142381b clipper: remove valid attributes check
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:41 +05:00
01zulfi
d97d14e830 clipper: improve clip with styles
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:41 +05:00
01zulfi
f2f3f7e393 clipper: (wip) improve clip with styles
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-25 15:07:41 +05:00
Ammar Ahmed
50176d2b3a mobile: allow free users to export note in all formats 2025-10-24 13:47:02 +05:00
Ammar Ahmed
c47c410446 mobile: fix styles in editor 2025-10-24 09:02:19 +05:00
Ammar Ahmed
3a5558eb16 mobile: release v3.3.6 2025-10-24 09:02:19 +05:00
Ammar Ahmed
f8171ddc3f mobile: allow users to open redeem code url from app 2025-10-24 09:02:19 +05:00
Ammar Ahmed
ece7b29005 Merge pull request #8839 from streetwriters/mobile-release-3.3.6
Mobile release 3.3.6
2025-10-24 09:01:33 +05:00
Ammar Ahmed
8cd8e93487 mobile: fix styles in editor 2025-10-23 21:58:27 +05:00
Ammar Ahmed
8900a6b080 mobile: release v3.3.6 2025-10-23 21:39:20 +05:00
Ammar Ahmed
19d90fa221 mobile: allow users to open redeem code url from app 2025-10-23 21:38:55 +05:00
Ammar Ahmed
55fb3d5332 Merge branch 'master' into beta 2025-10-23 13:48:46 +05:00
Ammar Ahmed
2e5ff859eb Merge pull request #8835 from streetwriters/fix-reminder-widget
mobile: fix reminders widget on android
2025-10-23 13:48:28 +05:00
Ammar Ahmed
06747575ee Merge pull request #8834 from streetwriters/fix-signup-navigation
mobile: fix navigation after signup complete broken
2025-10-23 13:48:07 +05:00
Ammar Ahmed
98bb8ca186 Merge pull request #8833 from streetwriters/fix-app-lock-free-user
mobile: fix app-lock disabled dialog does not show to free users
2025-10-23 13:47:46 +05:00
Ammar Ahmed
d5f68602b6 Merge pull request #8832 from streetwriters/fix-vault-biometrics-unlock
mobile: fix vault biometrics state incorrect on app launch
2025-10-23 13:47:09 +05:00
Ammar Ahmed
312999aa5b Merge pull request #8827 from streetwriters/fix-delete-note-locked-bulk
mobile: ask user for vault password before deleting locked notes in bulk
2025-10-23 13:46:09 +05:00
Ammar Ahmed
607a4d26f4 Merge pull request #8826 from streetwriters/fix-restore-button-mobile
mobile: fix restore button is hidden in history preview item
2025-10-23 13:44:09 +05:00
Ammar Ahmed
a88b6615e4 Merge pull request #8825 from streetwriters/fix-gesture-navigation
mobile: fix gesture navigation not working
2025-10-23 13:43:50 +05:00
Ammar Ahmed
f900098201 mobile: fix app-lock disabled dialog does not show to free users 2025-10-23 12:17:01 +05:00
Ammar Ahmed
d51aaa8eb1 mobile: fix vault biometrics state incorrect on app launch 2025-10-23 12:05:50 +05:00
Ammar Ahmed
e9a48ae028 mobile: fix reminders widget on android 2025-10-23 11:01:28 +05:00
Ammar Ahmed
90a0f619ec mobile: ask user for vault password before deleting locked notes in bulk 2025-10-22 19:27:43 +05:00
Ammar Ahmed
ed3662a636 mobile: fix restore button is hidden in history preview item 2025-10-22 14:54:47 +05:00
Ammar Ahmed
26eda3b105 mobile: fix gesture navigation not working 2025-10-22 14:40:56 +05:00
Ammar Ahmed
8f43882e29 mobile: fix navigation after signup complete broken 2025-10-22 14:27:26 +05:00
Ammar Ahmed
e239597eb1 Merge pull request #8821 from streetwriters/fix--disable-post-install-script
Fix fdroid build failing due to postinstall script using bun
2025-10-22 09:11:41 +05:00
Ammar Ahmed
bf1ef07d3a mobile: fix fdroid build failing due to postinstall script using bun 2025-10-22 09:09:32 +05:00
Abdullah Atta
7d2e1dab4c web: add support for direct navigation (via url) to setting sections 2025-10-21 14:42:37 +05:00
Ammar Ahmed
80392d394a Merge pull request #8812 from streetwriters/add-fdroid-changelog
mobile: add fdroid changelog
2025-10-21 09:19:55 +05:00
Ammar Ahmed
9ffa4d38c3 mobile: add fdroid changelog 2025-10-21 09:18:57 +05:00
Abdullah Atta
3ebcd36ca9 Merge pull request #8803 from streetwriters/release/3.3.2 2025-10-20 16:07:17 +05:00
Abdullah Atta
efec2dc898 Merge pull request #8803 from streetwriters/release/3.3.2
Release v3.3.2
2025-10-20 16:05:15 +05:00
Ammar Ahmed
5bd032e480 mobile: release v3.3.5 2025-10-20 13:53:14 +05:00
Abdullah Atta
c1bd4cfb01 web: bump version to 3.3.2 2025-10-20 13:01:57 +05:00
Abdullah Atta
0b943d8ecd editor: fix bullet list created as sub list of outline list 2025-10-20 12:52:57 +05:00
Ammar Ahmed
75e22a591e Merge pull request #8802 from streetwriters/fix-reset-root-state
Fix reset root state
2025-10-20 12:44:13 +05:00
Ammar Ahmed
66498e12ce mobile: fix multiple timers set on reset root state causing jank 2025-10-20 12:40:20 +05:00
Ammar Ahmed
d5fefd2f10 Merge pull request #8801 from streetwriters/fix-collapsible-headings
Fix collapsible headings on mobile
2025-10-20 12:12:20 +05:00
Ammar Ahmed
e2556d3228 mobile: fix collapsible heading 2025-10-20 12:09:22 +05:00
Abdullah Atta
2eb38d236e web: allow discounts in overlay checkout 2025-10-20 11:00:26 +05:00
Abdullah Atta
d9c57162f1 Merge pull request #8800 from streetwriters/fix/allow-discounts-in-overlay-checkout
Allow discounts in overlay checkout
2025-10-20 10:59:11 +05:00
Abdullah Atta
9f8f0e8413 web: allow discounts in overlay checkout 2025-10-20 10:57:51 +05:00
Abdullah Atta
ea52893be1 Merge branch 'master' into beta 2025-10-20 10:43:07 +05:00
Abdullah Atta
eef63d2028 Merge pull request #8799 from streetwriters/fix/entities-in-markdown-import
Fix html entities in markdown import
2025-10-20 10:37:32 +05:00
Abdullah Atta
14e0112e17 Merge pull request #8798 from streetwriters/fix/handle-attachment-errors-during-export
Handle attachment errors on export
2025-10-20 10:26:56 +05:00
Abdullah Atta
8ec9034fb2 Merge pull request #8797 from streetwriters/fix/disable-in-app-notices
Disable in-app noticies (temporarily)
2025-10-20 10:26:35 +05:00
Abdullah Atta
dc5973d75d editor: update package-lock file 2025-10-20 10:24:23 +05:00
Abdullah Atta
12126b2f9f web: fix html entities in markdown import 2025-10-20 10:17:59 +05:00
Abdullah Atta
9fa256be0e web: handle attachment errors on export 2025-10-20 08:58:22 +05:00
Abdullah Atta
c103328098 web: disable in-app noticies (temporarily) 2025-10-20 08:52:22 +05:00
Ammar Ahmed
ea2022bbe4 Merge branch 'mobile-release-v3.3.4' into beta 2025-10-20 08:39:56 +05:00
Ammar Ahmed
d7ced57319 Merge pull request #8796 from streetwriters/mobile-release-v3.3.4
Mobile release v3.3.4
2025-10-20 08:38:33 +05:00
Ammar Ahmed
2cc200dc2b mobile: fix paths for fonts 2025-10-18 13:35:23 +05:00
Ammar Ahmed
baa74d0353 mobile: fix build error due to tsgo usage 2025-10-18 12:56:40 +05:00
Ammar Ahmed
72b906da14 mobile: use currency symbol when possible 2025-10-18 12:15:30 +05:00
Ammar Ahmed
6db8c2fac2 mobile: release v3.3.4 2025-10-18 12:02:00 +05:00
Ammar Ahmed
09d5c0a65e mobile: fix sharing files from other apps to Notesnook 2025-10-18 12:01:19 +05:00
Ammar Ahmed
0b6b6a02cc editor: fix crash when adding new row in column 2025-10-18 09:04:06 +05:00
Abdullah Atta
f49c673e8e editor: fix crash when adding new row in table 2025-10-18 09:00:36 +05:00
Ammar Ahmed
64a8e9a075 mobile: set github release=false 2025-10-18 09:00:12 +05:00
Ammar Ahmed
e998b07ca5 mobile: fix strings 2025-10-18 08:57:54 +05:00
Ammar Ahmed
c189279030 mobile: fix sheet insets on android 16+ 2025-10-18 08:57:54 +05:00
Ammar Ahmed
12ddd6f958 mobile: add release type in github issue template 2025-10-18 08:57:54 +05:00
Ammar Ahmed
da06afda8a mobile: fix pricing on github release 2025-10-18 08:57:54 +05:00
Ammar Ahmed
bf808b7a2e mobile: fix editor toolbar height 2025-10-18 08:57:54 +05:00
Ammar Ahmed
13476a3f50 editor: fix checklist style 2025-10-18 08:56:04 +05:00
Ammar Ahmed
cfdf77a7b5 Merge branch 'fix-plans-showing-price' into beta 2025-10-17 09:59:38 +05:00
Ammar Ahmed
070c90362a Merge pull request #8782 from streetwriters/fix-plans-showing-price
Fix prices on github release and open checkout link in browser
2025-10-17 09:58:29 +05:00
Ammar Ahmed
c8d9858a0c Merge branch 'mobile-release-3.3.3' into beta 2025-10-17 09:11:28 +05:00
Ammar Ahmed
2685f60409 Merge pull request #8781 from streetwriters/mobile-release-3.3.3
mobile: release v3.3.3
2025-10-17 09:10:51 +05:00
Abdullah Atta
8d3bb5185c Merge branch 'master' into beta 2025-10-17 08:51:19 +05:00
Abdullah Atta
1f748a4026 global: introducing Notesnook Circle (#8779)
* core: add api for getting Notesnook Circle partners

* web: introduce notesnook circle

* core: export CirclePartner type

* mobile: add notesnook-circle

* web: use strings from intl for notesnook circle

* common: add notesnook circle to features

* web: fix local ips set for hosts

* mobile: fix db hosts

---------

Co-authored-by: Ammar Ahmed <ammarahmed6506@gmail.com>
2025-10-17 08:49:32 +05:00
Sudlon
b27f064ad4 editor: Add keybindings for highlighting the currently selected text (#8577)
* editor: Add keybindings for highlighting the currently selected text

Signed-off-by: Sudlon <sudlondon@outlook.com>

* editor: Change keybinding command to TipTap "syntax"

Signed-off-by: Sudlon <sudlondon@outlook.com>

* editor: Remove SHIFT-keybinding (leaving ALT-keybinding) for highlighting currently selected text

Signed-off-by: Sudlon sudlondon@outlook.com

* editor: Remove left-over references to the double keybinding for highlighting currently selected text

Signed-off-by: Sudlon sudlondon@outlook.com

---------

Signed-off-by: Sudlon <sudlondon@outlook.com>
Signed-off-by: Sudlon sudlondon@outlook.com
Co-authored-by: sudlon <sudlondon@outlook.com>
2025-10-16 16:59:37 +05:00
01zulfi
27f781cc63 editor: improve codeblock scrollbar styling (#8548)
* editor: improve codeblock scrollbar styling
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* editor: fix overflowed codeblock's bg color
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-16 16:50:35 +05:00
Abdullah Atta
1427958eca Merge pull request #8457 from 01zulfi/editor/tasklist-checklist-styling
editor: improve checklist styling
2025-10-16 15:01:24 +05:00
Abdullah Atta
436e09c255 editor: fix text direction not working in check lists 2025-10-16 14:50:13 +05:00
Abdullah Atta
cc9b2dd5b0 editor: add back line through for checked items 2025-10-16 14:45:40 +05:00
Abdullah Atta
0ba25419f3 editor: use single li element for simple checklists 2025-10-16 14:43:51 +05:00
Abdullah Atta
9238de4cb4 Merge pull request #8772 from 01zulfi/editor/fix-images-in-outline-lists
editor: fix inserting images in outline lists
2025-10-16 11:48:34 +05:00
01zulfi
2d5fe1058c editor: add test for code block in outline list
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-16 10:46:31 +05:00
01zulfi
b01d1fc87e editor: improve checklist styling
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-16 09:28:02 +05:00
Abdullah Atta
9f4c0a4c9a editor: move outline list item indicator to li from first child 2025-10-16 09:23:19 +05:00
Abdullah Atta
9eebda86c2 editor: fix enter/tab not working in block nodes inside outline list item 2025-10-16 09:22:49 +05:00
Abdullah Atta
d43e856fea editor: add support for all block types in outline list item 2025-10-16 09:22:15 +05:00
Abdullah Atta
7af1596038 editor: remove custom inline image -> block image migration 2025-10-16 09:21:45 +05:00
01zulfi
652f6eab0b editor: fix inserting images in outline lists
* inserting images in outline list was splitting the outline list into two, this commit fixes it

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-15 11:14:24 +05:00
Abdullah Atta
fdaddfdb92 Merge pull request #8767 from streetwriters/chore/update-electron-to-37 2025-10-13 14:12:34 +05:00
Abdullah Atta
9a1adf2065 Merge pull request #8767 from streetwriters/chore/update-electron-to-37
Update electron to v37
2025-10-13 14:12:01 +05:00
Abdullah Atta
f10b258f58 desktop: update electron to v37 2025-10-13 14:10:52 +05:00
01zulfi
7f558cbd41 core: handle inbox item sync & decryption (#8733)
* core: handle inbox item sync & decryption
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: minor refactors in handling inbox item sync
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: use inbox item salt
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: check inbox item version
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-13 14:02:32 +05:00
Ammar Ahmed
641eb28ce7 mobile: open web purchase in browser. 2025-10-13 11:33:48 +05:00
Ammar Ahmed
2c59a5f6f9 mobile: fix plan price not showing properly on gh release 2025-10-13 09:30:48 +05:00
Abdullah Atta
712f02e61e Merge branch 'master' into beta 2025-10-10 18:13:46 +05:00
Abdullah Atta
e5ad405a23 Merge pull request #8754 from streetwriters/release/3.3.1
Release v3.3.1
2025-10-10 18:12:40 +05:00
Abdullah Atta
cd1b78d8df ci: fix desktop builds 2025-10-10 17:53:41 +05:00
Abdullah Atta
3b1ca46945 web: fix desktop tests 2025-10-10 16:23:11 +05:00
Abdullah Atta
96c1636f88 web: bump version to 3.3.1 2025-10-10 15:54:29 +05:00
Abdullah Atta
a10f949856 Merge branch 'master' into beta 2025-10-10 15:53:32 +05:00
Abdullah Atta
9ff4757ed6 Merge pull request #8753 from streetwriters/fix/make-table-with-adjustable
Make table width adjustable
2025-10-10 15:52:26 +05:00
Abdullah Atta
17c1e77f54 editor: make table width adjustable 2025-10-10 15:47:05 +05:00
Abdullah Atta
187a2a7262 Merge pull request #8735 from 01zulfi/editor/restrict-pasting-premium-features
editor: restrict pasting premium features
2025-10-10 15:38:11 +05:00
Abdullah Atta
4621230549 Merge pull request #8751 from streetwriters/fix/discount-price-on-checkout
Fix discounted price in checkout
2025-10-10 15:33:42 +05:00
Abdullah Atta
d7cb3317a2 web: fix discounted price in checkout 2025-10-10 15:09:41 +05:00
01zulfi
6d81f26864 editor: restrict pasting premium features
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-08 13:31:24 +05:00
01zulfi
5219814b5a Merge pull request #8557 from 01zulfi/editor/refactor-collapsible-headings
editor: make headings collapsible
2025-10-08 13:26:37 +05:00
Abdullah Atta
bef9fd0fd0 Merge branch 'master' into beta 2025-10-08 13:25:42 +05:00
Abdullah Atta
2341293d92 Merge pull request #8734 from 01zulfi/common/fix-paragraph-keybinding
common: fix insert paragraph keybinding
2025-10-08 13:20:32 +05:00
Abdullah Atta
215387f8a9 Merge pull request #8731 from streetwriters/chore/get-rid-of-nx
Get rid of nx
2025-10-08 13:20:00 +05:00
01zulfi
534b8c5ad0 common: fix insert paragraph keybinding
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-08 11:57:42 +05:00
Abdullah Atta
b7b2ead9eb setup(tx): minor refactor 2025-10-08 10:57:58 +05:00
Abdullah Atta
b3e34d68e1 setup(tx): add support for passing flags down to commands 2025-10-08 10:55:52 +05:00
Abdullah Atta
39079612aa docs: remove mention of Nx from README 2025-10-08 10:29:18 +05:00
Abdullah Atta
be1af3111f setup: add support for passing args down to command 2025-10-08 10:28:02 +05:00
Abdullah Atta
8dcff49797 core: fix flaky note history tests 2025-10-08 10:27:43 +05:00
Abdullah Atta
687fb4e105 setup: remove editor-mobile from build all exclusion filter 2025-10-08 09:57:40 +05:00
Abdullah Atta
25ae780ad8 ci: get rid of NX_CLOUD_ACCESS_TOKEN 2025-10-08 09:49:05 +05:00
Abdullah Atta
b695367e6c global: add dotenv package 2025-10-08 09:34:59 +05:00
Abdullah Atta
bb274a84fe ci: use node v22 2025-10-08 08:56:20 +05:00
Abdullah Atta
364dccbf7a global: get rid of nx 2025-10-08 08:42:00 +05:00
Ammar Ahmed
105fb0fc69 mobile: release v3.3.3 2025-10-06 13:13:42 +05:00
Ammar Ahmed
89c408981c Merge branch 'master' into beta 2025-10-06 12:42:59 +05:00
Ammar Ahmed
110534edec Merge pull request #8714 from streetwriters/fix-mobile-client-selfhosted
Fix mobile client selfhosted
2025-10-06 12:40:26 +05:00
Ammar Ahmed
00e2190b2d Merge pull request #8713 from streetwriters/mobile-fix-legacy-pro-users
mobile: add support for LEGACY_PRO subscription plan name
2025-10-06 12:40:10 +05:00
Ammar Ahmed
e5c3fc667e Merge pull request #8712 from streetwriters/mobile-refactor-e2e-tests
mobile: refactor e2e tests
2025-10-06 12:39:57 +05:00
Ammar Ahmed
9aef8194f9 mobile: refactor e2e tests
Uses a builder pattern for writing tests to reduce code and simplify writing tests
2025-10-06 12:11:02 +05:00
Abdullah Atta
f76e0b7931 Merge pull request #8711 from 01zulfi/web/ignore-autobackup-notice-when-ignored
web: don't show auto-backup notice again after dismissal
2025-10-06 11:39:35 +05:00
Ammar Ahmed
0457e4417f mobile: minor cleanup 2025-10-06 11:10:19 +05:00
Ammar Ahmed
dae8b5c542 mobile: hide pricing flows on self hosted clients 2025-10-06 10:58:39 +05:00
01zulfi
60107dd77f web: don't show auto-backup notice again after dismissal
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-06 10:24:46 +05:00
Ammar Ahmed
4f3e19aaa2 mobile: add support for LEGACY_PRO subscription plan name 2025-10-06 09:55:28 +05:00
Ammar Ahmed
8c621f9f47 mobile: add null checks 2025-10-06 09:51:16 +05:00
Ammar Ahmed
74544efd62 mobile: update version to v3.3.2 2025-10-06 09:51:16 +05:00
Ammar Ahmed
c30ccbb68d mobile: fix crash on entering settings 2025-10-06 09:51:16 +05:00
Ammar Ahmed
c77050eccc Merge pull request #8710 from streetwriters/mobile-fix-3.3.1
mobile: release v3.3.2
2025-10-06 09:44:45 +05:00
Ammar Ahmed
f40ccdae41 mobile: add null checks 2025-10-05 01:11:09 +05:00
Ammar Ahmed
0a0aa09eea mobile: update version to v3.3.2 2025-10-05 01:02:56 +05:00
Ammar Ahmed
e2c55fb758 mobile: fix crash on entering settings 2025-10-05 00:58:02 +05:00
Ammar Ahmed
12e3335d52 mobile: release v3.3.1 2025-10-04 23:57:09 +05:00
Ammar Ahmed
f29439539d mobile: misc bug fixes 2025-10-04 23:57:09 +05:00
Ammar Ahmed
13c9fdba52 mobile: update monograph publish sheet 2025-10-04 23:57:09 +05:00
Ammar Ahmed
2cb087972c Merge pull request #8638 from streetwriters/mobile-release-v3.3.1
release v3.3.1 on mobile
2025-10-04 23:56:33 +05:00
Ammar Ahmed
41a32ede15 mobile: release v3.3.1 2025-10-04 23:27:30 +05:00
Abdullah Atta
95f52fba51 Merge pull request #8633 from streetwriters/release/v3.3 2025-10-04 22:08:21 +05:00
Abdullah Atta
e2159b7614 Merge pull request #8633 from streetwriters/release/v3.3
Release v3.3
2025-10-04 22:07:18 +05:00
Ammar Ahmed
ee33875edf mobile: misc bug fixes 2025-10-04 12:54:51 +05:00
Ammar Ahmed
28681fb1b0 mobile: update monograph publish sheet 2025-10-04 12:54:51 +05:00
Abdullah Atta
33194dc9f0 setup: show script logs only in verbose mode 2025-10-04 10:37:51 +05:00
Abdullah Atta
7509766df2 desktop: fix sqlite extensions can't be found in dev 2025-10-04 10:22:11 +05:00
Abdullah Atta
30a02a4977 core: fix type errors 2025-10-04 10:21:38 +05:00
Abdullah Atta
f67f4138c3 core: minor fixes to monographs 2025-10-04 10:18:38 +05:00
Abdullah Atta
49d51da1bd web: fix toggles not working in publish view 2025-10-04 10:18:22 +05:00
Abdullah Atta
17bfe4e075 desktop: handle errors thrown during backup creation 2025-10-04 09:31:15 +05:00
Abdullah Atta
d5905a4e5f desktop: update electron to v36 2025-10-04 09:28:55 +05:00
Abdullah Atta
e1b46d33f4 desktop: enable asar 2025-10-04 09:20:10 +05:00
Ammar Ahmed
ce7c003c54 mobile: fix bottom padding 2025-10-04 08:37:07 +05:00
Abdullah Atta
7f473ce7c8 ci: use custom task executor instead of nx 2025-10-04 08:27:09 +05:00
Abdullah Atta
c239f490b0 setup: add custom task runner as an alternative to nx 2025-10-04 00:09:23 +05:00
Abdullah Atta
1ad1915fcc config: cache {projectRoot}/locales 2025-10-03 21:42:11 +05:00
Abdullah Atta
14029de484 misc: update nx 2025-10-03 18:47:15 +05:00
Abdullah Atta
5d07db366b desktop: add logs in build script for debugging 2025-10-03 18:40:47 +05:00
Abdullah Atta
9e265dbecf web: add new version highlights 2025-10-03 18:38:08 +05:00
Abdullah Atta
717bce36e6 desktop: regenerate lockfile 2025-10-03 18:30:39 +05:00
Abdullah Atta
17831cdd8c ci: install sqlite3-fts5-html for all platforms 2025-10-03 18:13:12 +05:00
Ammar Ahmed
02e37c6ed4 mobile: prepare release v3.3.0 2025-10-03 14:39:04 +05:00
Abdullah Atta
16b52e9633 web: update export snapshots 2025-10-03 14:12:10 +05:00
Abdullah Atta
77eee945ca web: bump version to 3.3.0 2025-10-03 14:03:14 +05:00
Abdullah Atta
f21f235d37 core: remove pricing tests 2025-10-03 13:58:22 +05:00
Abdullah Atta
2949fcde38 core: fix e2e tests 2025-10-03 13:54:17 +05:00
Abdullah Atta
6ae1674de5 web: fix tests 2025-10-03 11:59:53 +05:00
Abdullah Atta
2bd74e043a core: fix note history cleanup tests 2025-10-03 09:05:52 +05:00
Abdullah Atta
1a05acbe9a core: fix isProduction always returns false 2025-10-03 09:03:12 +05:00
Abdullah Atta
a0597e13fe Revert "Merge pull request #8493 from 01zulfi/editor/collapsible-headings"
This reverts commit 7241dce7a6, reversing
changes made to ae5b422965.
2025-10-03 08:54:28 +05:00
Ammar Ahmed
d11d665395 mobile: do not allow changing plan if user subscribed to legacy pro sub 2025-10-03 08:41:11 +05:00
Abdullah Atta
ab2758ac79 intl: Revert "intl: clarify what happens to user data on plan switch"
This reverts commit 4377b8b340.
2025-10-02 14:45:13 +05:00
01zulfi
bb682a6f6e web: reset default notebook & tag feature if applicable (#8628)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-02 14:22:34 +05:00
Abdullah Atta
4377b8b340 intl: clarify what happens to user data on plan switch 2025-10-02 14:21:12 +05:00
Abdullah Atta
eb0c9b823b common: File size -> Maximum file size 2025-10-02 13:38:18 +05:00
Abdullah Atta
a595b12431 common: rerun feature available hooks on user subscription update 2025-10-02 11:26:16 +05:00
Abdullah Atta
ebd9b45cac web: fix features reset on subscription change 2025-10-02 11:17:08 +05:00
Abdullah Atta
5ae024f20a Merge branch 'master' into beta 2025-10-02 10:40:56 +05:00
Abdullah Atta
9ae93dec4c Merge pull request #8432 from 01zulfi/docs/standard-notes-import
docs: add standard notes import instructions
2025-10-02 10:35:02 +05:00
Abdullah Atta
93ecc9b1ac Merge pull request #8587 from 01zulfi/web/fix-status-item
web: fix update & vault status items vertical alignment
2025-10-02 10:33:01 +05:00
Ammar Ahmed
28455f8b31 mobile: update icons in settings 2025-10-02 09:43:46 +05:00
Abdullah Atta
b49be89b06 Merge pull request #8570 from 01zulfi/editor/support-math-paste
editor: support pasting math
2025-10-02 09:30:51 +05:00
Abdullah Atta
23e0748137 Merge pull request #8581 from streetwriters/fix/error-not-shown-gift-card
Fix error not shown on redeem code failure
2025-10-02 09:30:14 +05:00
Abdullah Atta
2f6d222cca Merge pull request #8603 from 01zulfi/core/fix-leading-spaces-export
core: fix leading spaces in txt export && remove unneeded space at start of txt
2025-10-02 09:29:23 +05:00
Abdullah Atta
ba1cfe05c4 Merge pull request #8621 from 01zulfi/core/fix-tag-title-sorting
core: fix tag sort by title
2025-10-02 09:29:07 +05:00
Abdullah Atta
6f80334296 core: fix tests 2025-10-02 09:24:50 +05:00
Ammar Ahmed
86da8a3620 mobile: add limit on 2fa sms setup 2025-10-02 09:09:20 +05:00
Abdullah Atta
11702c9209 Merge pull request #8615 from streetwriters/fix/web-app-not-working-on-mobile
Fix web app not working on mobile devices
2025-10-02 08:38:05 +05:00
Abdullah Atta
240d9b533f web: reset restricted features on app startup 2025-10-02 08:37:17 +05:00
01zulfi
8dc12f01b9 web: enforce sms2FA feature limit (#8627)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-01 14:58:42 +05:00
Ammar Ahmed
3b0dce6c6f mobile: fix crash 2025-10-01 13:42:59 +05:00
Ammar Ahmed
901dc4fe6d mobile: show discount on web plan offer 2025-10-01 13:42:59 +05:00
01zulfi
61748f40b6 web: fix text in upgrade dialog (#8623)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-10-01 11:45:30 +05:00
Abdullah Atta
871824f857 common: fix off by one error when checking limits 2025-10-01 10:34:11 +05:00
Ammar Ahmed
032c321568 mobile: fix announcements ui 2025-10-01 09:51:03 +05:00
Abdullah Atta
4883f02b62 web: fix subscription settings not updating on downgrade 2025-09-30 14:03:55 +05:00
Abdullah Atta
b43a8cbafe web: improve plan change dialog to show full plan comparison 2025-09-30 11:53:45 +05:00
Abdullah Atta
11c1fe3853 web: refresh user on subscription change 2025-09-30 11:53:45 +05:00
Ammar Ahmed
4a4576ebd5 mobile: allow changing plan if not subscribed anymore 2025-09-30 11:25:36 +05:00
Abdullah Atta
0b5128b13b web: fix after trial period pricing ui 2025-09-30 10:21:37 +05:00
Abdullah Atta
d1dbb85459 web: prevent changing plans if user subscription from iOS/Android 2025-09-30 10:17:57 +05:00
Abdullah Atta
ae1005d5f9 web: show provider info in subscription settings 2025-09-30 10:08:59 +05:00
Abdullah Atta
11e6074e21 web: simplify change plan dialog 2025-09-30 09:45:18 +05:00
Abdullah Atta
ea9aa2a136 web: navigate to /notes on subscription update in checkout view 2025-09-30 09:45:18 +05:00
Ammar Ahmed
203fe5bee0 mobile: update sheet paywall 2025-09-30 08:56:37 +05:00
Ammar Ahmed
4262641567 mobile: add subscription paused case 2025-09-30 08:55:53 +05:00
Ammar Ahmed
c0f79be78c mobile: fix keyboard does not open with autoFocus 2025-09-30 08:55:28 +05:00
01zulfi
239e301042 core: fix tag sort by title
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-29 11:23:03 +05:00
Ammar Ahmed
23bb80bbd6 Merge branch 'fix-server-url-error' into beta 2025-09-29 10:05:08 +05:00
Abdullah Atta
d7232a4f1f Merge pull request #8576 from streetwriters/feature/new-pricing
New pricing
2025-09-29 10:02:43 +05:00
Abdullah Atta
2bfc1af8ff common: add monograph link & embeds and sms 2fa feature limits 2025-09-29 10:02:11 +05:00
Abdullah Atta
3ac6873be4 core: fix pause/resume legacy subscription 2025-09-29 10:02:11 +05:00
Abdullah Atta
ce487a108c web: enable full page mode in web clipper for all users 2025-09-29 10:02:11 +05:00
Abdullah Atta
827930e28f web: fix plan changing if subscription is trialing 2025-09-29 10:02:11 +05:00
Abdullah Atta
8a13cf01b4 web: fix trial info not shwon during checkout 2025-09-29 10:02:11 +05:00
Abdullah Atta
641c541305 web: fallback to created date if billed at date is not present 2025-09-29 10:02:11 +05:00
Abdullah Atta
9285bae0cc web: hide refund button if subscription is trialing 2025-09-29 10:02:10 +05:00
Abdullah Atta
954ac3154f web: only show billing history if provider is Paddle 2025-09-29 10:02:10 +05:00
Abdullah Atta
571f3242e2 web: show checkout page instead of dialog from plans page 2025-09-29 10:02:10 +05:00
Abdullah Atta
9052948b8a web: notesnook logo should be a link in checkout page 2025-09-29 10:02:10 +05:00
Ammar Ahmed
af91a6ee98 mobile: minor fixes 2025-09-29 10:02:10 +05:00
Ammar Ahmed
16633dbd05 mobile: fix welcome message sheet ui 2025-09-29 10:02:10 +05:00
Ammar Ahmed
8a506edd37 mobile: fix navigation when changing plan 2025-09-29 10:02:10 +05:00
Ammar Ahmed
fdbac8e608 mobile: paywall fixes 2025-09-29 10:02:10 +05:00
Ammar Ahmed
cdca90bd54 core: add googlePurchaseToken type 2025-09-29 10:02:10 +05:00
Ammar Ahmed
fb7d8b0893 mobile: allow users to change plan 2025-09-29 10:02:10 +05:00
Ammar Ahmed
a49bc92a13 mobile: pricing fixes 2025-09-29 10:02:10 +05:00
Abdullah Atta
58c1f5e3ca web: add support for education plan purchase 2025-09-29 10:02:10 +05:00
Ammar Ahmed
f1a0c1b447 mobile: minor refactor 2025-09-29 10:02:10 +05:00
Ammar Ahmed
d8534da4df mobile: fix gap between plan cards 2025-09-29 10:02:10 +05:00
Ammar Ahmed
28daa38d80 mobile: fix upgrade plan button not showing 2025-09-29 10:02:10 +05:00
Ammar Ahmed
5c275adda8 mobile: fix imports 2025-09-29 10:02:10 +05:00
Ammar Ahmed
26ecf2a7fd editor: fix build error 2025-09-29 10:02:10 +05:00
Abdullah Atta
e23c0f55b7 web: improve change plan ux 2025-09-29 10:02:10 +05:00
Ammar Ahmed
a6b03635c7 mobile: update vector icons patch 2025-09-29 10:02:10 +05:00
Abdullah Atta
6587541729 web: send email in custom data on purchase 2025-09-29 10:02:10 +05:00
Abdullah Atta
bc4bfa63f7 web: go back on overlay checkout closed 2025-09-29 10:02:10 +05:00
Abdullah Atta
bdda2d4987 web: add support for direct checkout 2025-09-29 10:02:10 +05:00
Ammar Ahmed
ab34073870 mobile: fix ui on ipad and tablets 2025-09-29 10:02:10 +05:00
Abdullah Atta
152a59fe26 web: improve attachment errors on upload/download 2025-09-29 10:02:10 +05:00
Ammar Ahmed
cf169eb6d6 mobile: fix inconsistent button sizes 2025-09-29 10:02:10 +05:00
Ammar Ahmed
16da396289 mobile: fix ui 2025-09-29 10:02:10 +05:00
Ammar Ahmed
7ad3fd4057 mobile: refactor 2025-09-29 10:02:10 +05:00
Ammar Ahmed
aecf4f1ee8 mobile: fix attachment uploading 2025-09-29 10:02:10 +05:00
Abdullah Atta
8f48fcd788 web: fix crash on opening checkout for new user 2025-09-29 10:02:10 +05:00
Ammar Ahmed
cf64fb3743 core: fix db.pricing.sku type 2025-09-29 10:02:10 +05:00
Ammar Ahmed
a21111368e mobile: fix pricing on gh release 2025-09-29 10:02:10 +05:00
Abdullah Atta
383b914c52 web: post success message on checkout complete on react native 2025-09-29 10:02:10 +05:00
Abdullah Atta
555255a923 web: minor fix 2025-09-29 10:02:10 +05:00
Abdullah Atta
cd5a2ab179 web: fix cannot read property ASK_EVERY_TIME of undefined 2025-09-29 10:02:10 +05:00
Ammar Ahmed
48903f924c mobile: cleanup 2025-09-29 10:02:10 +05:00
Ammar Ahmed
7d46dd4fb0 mobile: cleanup 2025-09-29 10:02:10 +05:00
Abdullah Atta
cfa9f11f44 web: replace usage of subscription.type to subscription.plan 2025-09-29 10:02:10 +05:00
Abdullah Atta
1377ac38db common: no need for isLegacyPro 2025-09-29 10:02:10 +05:00
Abdullah Atta
d88b30b538 core: get rid of subscription.type (all subs now use .plan) 2025-09-29 10:02:10 +05:00
Ammar Ahmed
cfe0cded15 mobile: minor improvements 2025-09-29 10:02:10 +05:00
Ammar Ahmed
322f6b7aae mobile: pricing fixes 2025-09-29 10:02:10 +05:00
Ammar Ahmed
62ae26c464 mobile: pricing fixes for ios 2025-09-29 10:02:10 +05:00
Abdullah Atta
c920c999eb web: fix subscription settings for legacy pro users 2025-09-29 10:02:10 +05:00
Abdullah Atta
288f601651 web: use trialExpiryDate for showing trial end date 2025-09-29 10:02:10 +05:00
Ammar Ahmed
d4f902f63d mobile: fix crash when user logged out 2025-09-29 10:02:10 +05:00
Ammar Ahmed
7dddebef2e mobile: pricing fixes 2025-09-29 10:02:10 +05:00
Abdullah Atta
dc1498d672 web: ask for reason when requesting refund 2025-09-29 10:02:10 +05:00
Abdullah Atta
eb36c1d7cb web: show billing history even if user is not subscribed 2025-09-29 10:02:09 +05:00
Abdullah Atta
29c119a945 web: fix Upgrade to Pro being shown in drop down 2025-09-29 10:02:09 +05:00
Abdullah Atta
860bc10747 web: fix cannot use IS_DEV before initialization error 2025-09-29 10:02:09 +05:00
Abdullah Atta
215ca23190 web: add support for changing plans 2025-09-29 10:02:09 +05:00
Abdullah Atta
4b9d9e4353 web: add comparison table & faqs to plans selection dialog 2025-09-29 10:02:09 +05:00
Ammar Ahmed
fd5d4e56ea mobile: route to login page from paywall 2025-09-29 10:02:09 +05:00
Ammar Ahmed
9801d117a1 mobile: minor fixes 2025-09-29 10:02:09 +05:00
Ammar Ahmed
3c4fb8cb53 mobile: localize 2025-09-29 10:02:09 +05:00
Ammar Ahmed
ae17b34be9 mobile: localize strings 2025-09-29 10:02:09 +05:00
Ammar Ahmed
1a544754ef mobile: handle web payments 2025-09-29 10:02:09 +05:00
Ammar Ahmed
1ddfd15ee9 mobile: render faqs 2025-09-29 10:02:09 +05:00
Ammar Ahmed
035126ab2f mobile: small fixes 2025-09-29 10:02:09 +05:00
Abdullah Atta
e157ae8bc8 web: add checkout faqs 2025-09-29 10:02:09 +05:00
Abdullah Atta
25b0503a25 web: show features usage details in subscription settings 2025-09-29 10:02:09 +05:00
Abdullah Atta
ef235dd0aa web: show plans on login & signup 2025-09-29 10:02:09 +05:00
Ammar Ahmed
699080048d mobile: fix login flow 2025-09-29 10:02:09 +05:00
Ammar Ahmed
3c9b315f78 mobile: updates 2025-09-29 10:02:09 +05:00
Ammar Ahmed
1464006531 mobile: fix unneeded sync calls 2025-09-29 10:02:09 +05:00
Abdullah Atta
6921fcb3ae web: fix checkout 2025-09-29 10:02:09 +05:00
Abdullah Atta
286f8dd7cc core: add endpoint for getting checkout url 2025-09-29 10:02:09 +05:00
Abdullah Atta
d3e3ef5986 core: add endpoints for getting all products for new plans 2025-09-29 10:02:09 +05:00
Ammar Ahmed
ea1ffc59b8 common: fix too many queries to db 2025-09-29 10:02:09 +05:00
Abdullah Atta
5524886868 common: add function to fetch features usage details 2025-09-29 10:02:09 +05:00
Abdullah Atta
68b63cf635 web: introduce new checkout dialog 2025-09-29 10:02:09 +05:00
Abdullah Atta
74de09e441 web: use checkFeature in multi-select 2025-09-29 10:02:09 +05:00
Abdullah Atta
b82e9598bd theme: add new tertiary button variant 2025-09-29 10:02:09 +05:00
Abdullah Atta
25889192c4 web: refactor toggles in setting store 2025-09-29 10:02:09 +05:00
Abdullah Atta
76eac69f94 web: remove limit checking from state stores 2025-09-29 10:02:09 +05:00
Abdullah Atta
97f8f1e3c3 web: use checkFeature 2025-09-29 10:02:09 +05:00
Abdullah Atta
8722b6bc68 web: add feature limit check when adding new tag from editor 2025-09-29 10:02:09 +05:00
Abdullah Atta
8e8d2a4083 web: refactor and fix feature limit checks on toolbar customization 2025-09-29 10:02:09 +05:00
Abdullah Atta
4caac77706 web: show upgrade dialog on triggering feature limit in editor 2025-09-29 10:02:09 +05:00
Abdullah Atta
0f73f266b2 web: fix customizableSidebar feature limit checks 2025-09-29 10:02:09 +05:00
Abdullah Atta
8c70abda04 web: add feature limit check when adding new tag 2025-09-29 10:02:09 +05:00
Abdullah Atta
6881a5f432 web: prefer to show upgrade dialog before opening new notebook/tag/color dialog 2025-09-29 10:02:09 +05:00
Abdullah Atta
22e9ae6bf8 web: use new api for adding limits on settings 2025-09-29 10:02:09 +05:00
Abdullah Atta
eb73de6d8d web: add support for adding feature limits on settings 2025-09-29 10:02:09 +05:00
Abdullah Atta
1af7f1bd7f web: show upgrade dialog from toast 2025-09-29 10:02:09 +05:00
Abdullah Atta
3a0273a12b web: add upgrade dialog 2025-09-29 10:02:09 +05:00
Abdullah Atta
05795ca052 web: add feature limit checks to tag & notebook functions 2025-09-29 10:02:09 +05:00
Abdullah Atta
a5746c56eb web: check for defaultNotebookAndTag limit in editor 2025-09-29 10:02:09 +05:00
Abdullah Atta
80f66ab0ba web: remove app lock on first unlock if not allowed on user plan 2025-09-29 10:02:09 +05:00
Abdullah Atta
44e62f0eb0 core: rebuild trash cache even if trash cleanup interval is set to never 2025-09-29 10:02:09 +05:00
Abdullah Atta
a6e107f61d ui: add support for showing premium icon on menu items 2025-09-29 10:02:09 +05:00
Abdullah Atta
31bb78bfca web: add onBeforeOpen hook to dialog manager 2025-09-29 10:02:09 +05:00
Abdullah Atta
8bb9308173 web: fix crash on saving note 2025-09-29 10:02:09 +05:00
Abdullah Atta
46d279ca3b common: fix use-is-feature-available hook types 2025-09-29 10:02:09 +05:00
Ammar Ahmed
0a5bdaaa7f mobile: add plan preview in settings 2025-09-29 10:02:09 +05:00
Ammar Ahmed
3480b8c5da mobile: add sync control and offline mode limits 2025-09-29 10:02:09 +05:00
Ammar Ahmed
32e1fb5f56 mobile: update plan comparison 2025-09-29 10:02:09 +05:00
Abdullah Atta
d94e8d04c8 common: add /mo to storage limit caption
also add limits for fullOfflineMode & syncControls
2025-09-29 10:02:09 +05:00
Abdullah Atta
26e2b380b3 common: add function for showing features as a table 2025-09-29 10:02:09 +05:00
Ammar Ahmed
06710ff416 mobile: pricing changes 2025-09-29 10:02:09 +05:00
Ammar Ahmed
32a7f866c3 mobile: add limits to UI 2025-09-29 10:02:09 +05:00
Abdullah Atta
86b650712e common: export getFeature 2025-09-29 10:02:09 +05:00
Ammar Ahmed
0178e455f9 mobile: update paywall sheet 2025-09-29 10:02:09 +05:00
Ammar Ahmed
39693966c1 mobile: add feature manager 2025-09-29 10:02:09 +05:00
Ammar Ahmed
dc08a39173 mobile: introduce plan limits 2025-09-29 10:02:09 +05:00
Ammar Ahmed
1be518510a mobile: update 2025-09-29 10:02:09 +05:00
Ammar Ahmed
e513081010 mobile: fix build 2025-09-29 10:02:09 +05:00
Ammar Ahmed
9bc8bddc12 common: fix esm imports 2025-09-29 10:02:09 +05:00
Abdullah Atta
986b99f62e web: show used/total storage on user profile 2025-09-29 10:02:08 +05:00
Abdullah Atta
16092a4185 core: add types for storage limits 2025-09-29 10:02:08 +05:00
Abdullah Atta
26eafcfee9 web: upload direct to s3 via proxy 2025-09-29 10:02:08 +05:00
Abdullah Atta
f20c1ef4f4 web: clicking on "auto backups disabled" notice should open settings 2025-09-29 10:02:08 +05:00
Abdullah Atta
3f076d90c8 common: make feature checking more type safe 2025-09-29 10:02:08 +05:00
Abdullah Atta
df70fee70e common: add storage to feature limits 2025-09-29 10:02:08 +05:00
Ammar Ahmed
4df9c7d9f7 mobile: fix intro flow 2025-09-29 10:02:08 +05:00
Abdullah Atta
59916b924c web: markdown shortcuts should be turned off by default 2025-09-29 10:02:08 +05:00
Abdullah Atta
aafce93117 web: limit max note versions 2025-09-29 10:02:08 +05:00
Abdullah Atta
97ef91abdb web: limit set as homepage 2025-09-29 10:02:08 +05:00
Abdullah Atta
b426d61c3a web: add limits to app lock 2025-09-29 10:02:08 +05:00
Abdullah Atta
f08c484d40 web: add limits to block-level note linking 2025-09-29 10:02:08 +05:00
Abdullah Atta
b03a4559c5 core: make max note versions configurable 2025-09-29 10:02:08 +05:00
Abdullah Atta
d2f491ed66 common: add feature limits for app lock and note versions 2025-09-29 10:02:08 +05:00
Abdullah Atta
1a2a1da086 web: add limit on notebook restoration 2025-09-29 10:02:08 +05:00
Abdullah Atta
872f4d7e91 core: remove usage of db.features 2025-09-29 10:02:08 +05:00
Abdullah Atta
bce063e1bd web: add feature limits in almost all places 2025-09-29 10:02:08 +05:00
Abdullah Atta
e6dc5ddfed common: add is feature available utility 2025-09-29 10:02:08 +05:00
Abdullah Atta
bcbcd516f6 mobile: initial pricing changes 2025-09-29 10:01:59 +05:00
Ammar Ahmed
24da82313e mobile: pricing changes 2025-09-29 10:00:29 +05:00
Abdullah Atta
5fe29af51a web: migrate to paddle billing + new plans 2025-09-29 10:00:29 +05:00
Abdullah Atta
fbe551eb29 core: add new subscription types 2025-09-29 10:00:29 +05:00
Abdullah Atta
c097c4d457 web: fix web app not working on mobile devices
i thought service workers would work on Android but unfortunately, they are
super flaky causing lots of issues. I might revisit it later.
2025-09-26 11:03:41 +05:00
Ammar Ahmed
a792a3d6e4 mobile: allow underscores in url validation 2025-09-25 12:26:48 +05:00
Ammar Ahmed
28f1f276ce Merge pull request #8611 from streetwriters/fix-server-url-error
mobile: allow underscores in url validation
2025-09-25 12:24:18 +05:00
Ammar Ahmed
9470d2b61f mobile: allow underscores in url validation 2025-09-25 12:19:16 +05:00
01zulfi
95795a20c2 core: fix leading spaces in txt export && remove unneeded space at start of txt
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-24 09:35:26 +05:00
Ammar Ahmed
64b7b57b3e Merge branch 'mobile-release-3.2.12' into beta 2025-09-19 10:48:47 +05:00
Ammar Ahmed
5e05d96487 Merge pull request #8588 from streetwriters/mobile-release-3.2.12
Mobile release 3.2.12
2025-09-19 10:41:45 +05:00
Ammar Ahmed
18c9912068 mobile: update changelog 2025-09-19 09:55:36 +05:00
01zulfi
cd85753252 web: fix update & vault status items vertical alignment
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-18 14:19:56 +05:00
Ammar Ahmed
bdb135036c mobile: release v3.2.12 2025-09-18 12:43:30 +05:00
Ammar Ahmed
5d70f58a0d mobile: fix editor styles 2025-09-18 12:42:40 +05:00
Ammar Ahmed
b7d2d66e82 mobile: fix add tag button not show when no tags 2025-09-18 12:42:28 +05:00
Ammar Ahmed
6b028ef850 mobile: fix localization 2025-09-18 12:42:18 +05:00
Ammar Ahmed
8f85795e53 mobile: fix notebook tree in notesnook sheet 2025-09-18 12:42:07 +05:00
Ammar Ahmed
a0b7dff5fd Merge pull request #8585 from streetwriters/mobile-release-3.2.11
Mobile release 3.2.11
2025-09-18 12:39:21 +05:00
Ammar Ahmed
352018c042 Merge branch 'master' into mobile-release-3.2.11
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-09-18 12:39:10 +05:00
Abdullah Atta
2b1ac822ed editor: fix images not rendering 2025-09-18 11:19:36 +05:00
Abdullah Atta
b3c3890443 editor: fix type errors 2025-09-18 11:19:24 +05:00
Abdullah Atta
99e642780e web: fix error not shown on redeem code failure 2025-09-17 10:59:54 +05:00
Abdullah Atta
47088a0a66 Merge branch 'master' into beta 2025-09-16 13:04:21 +05:00
Abdullah Atta
fd48684396 Merge pull request #8568 from 01zulfi/web/attachment-navigate
web: fix settings not opening again after navigation from attachment manager
2025-09-16 13:03:25 +05:00
01zulfi
9b25ab8708 web: fix settings not opening again after navigation from attachment manager
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-16 12:37:36 +05:00
Abdullah Atta
c725ba8530 Merge pull request #8574 from streetwriters/ci/fix-desktop-tests-not-running
Fix desktop tests not triggering on PR/commit
2025-09-16 11:15:41 +05:00
Abdullah Atta
98287fbfc4 ci: fix desktop tests not triggering on PR/commit 2025-09-16 11:07:52 +05:00
Ammar Ahmed
3260695a09 Merge branch 'intl-fix-strings' into beta 2025-09-16 10:26:40 +05:00
Abdullah Atta
3a3434b021 Merge pull request #8562 from
streetwriters/fix/refresh-note-on-attachment-delete
2025-09-16 10:26:19 +05:00
Ammar Ahmed
9f24bd2250 Merge pull request #8573 from streetwriters/intl-fix-strings
intl: fix strings.ts
2025-09-16 10:12:13 +05:00
Ammar Ahmed
94f2a216ad intl: fix strings.ts 2025-09-16 10:11:43 +05:00
Ammar Ahmed
aeb4c984eb Merge branch 'fix-ipad-split-view' into beta 2025-09-16 10:10:17 +05:00
Ammar Ahmed
78e3ee5fd2 Merge pull request #8572 from streetwriters/fix-ipad-split-view
Fix keyboard in iPad split view
2025-09-16 10:10:05 +05:00
Ammar Ahmed
e94a2b2aa1 Merge branch 'mobile-editor-ui-update' into beta 2025-09-16 10:09:49 +05:00
Ammar Ahmed
1ddcf44eb0 Merge pull request #8551 from streetwriters/mobile-editor-ui-update
mobile: editor ui overhaul
2025-09-16 10:08:28 +05:00
Ammar Ahmed
5c5fb2ba2c Merge branch 'master' into mobile-editor-ui-update
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-09-16 10:08:10 +05:00
Ammar Ahmed
9344eadf34 Merge branch 'mobile-reminder-fixes' into beta 2025-09-16 10:06:58 +05:00
Ammar Ahmed
aa4995d871 Merge pull request #8525 from streetwriters/mobile-reminder-fixes
Fix reminders on mobile
2025-09-16 10:06:54 +05:00
Ammar Ahmed
e40c42afc3 Merge branch 'mobile-fix-add-notebook-btn' into beta 2025-09-16 10:06:34 +05:00
Ammar Ahmed
f818c41a02 Merge pull request #8524 from streetwriters/mobile-fix-add-notebook-btn
Fix add notebook button in Notebooks sheet
2025-09-16 10:06:30 +05:00
Ammar Ahmed
178d7e7471 Merge branch 'mobile-fix-notebook-tree' into beta 2025-09-16 10:06:11 +05:00
Ammar Ahmed
3f9d954e2f Merge pull request #8508 from streetwriters/mobile-fix-notebook-tree
Fix Notebook Tree when Searching for Notebooks
2025-09-16 10:06:05 +05:00
Ammar Ahmed
48a3eee232 Merge branch 'mobile-fix-reset-navigation' into beta 2025-09-16 10:05:00 +05:00
Ammar Ahmed
f1fcd227e7 Merge pull request #8535 from streetwriters/mobile-fix-reset-navigation
mobile: fix resetting navigation
2025-09-16 10:04:54 +05:00
Ammar Ahmed
84af1a9411 Merge branch 'mobile-fix-string-email' into beta 2025-09-16 10:04:05 +05:00
Ammar Ahmed
44d910121c Merge pull request #8507 from streetwriters/mobile-fix-string-email
Fix email confirmed description
2025-09-16 10:03:40 +05:00
Abdullah Atta
1258a95aad Merge pull request #8562 from streetwriters/fix/refresh-note-on-attachment-delete
Refresh note on attachment permanent delete
2025-09-16 09:43:15 +05:00
Abdullah Atta
295ab2c073 editor: add migration to convert inline images into block nodes 2025-09-16 09:21:09 +05:00
Abdullah Atta
7aa350a9d2 editor: remove image float 2025-09-16 09:21:09 +05:00
Abdullah Atta
ee76e43fca editor: fix warnings when expanding all props into ToolButton 2025-09-16 09:21:09 +05:00
Ammar Ahmed
1379193065 mobile: fix keyboard in ipad split view 2025-09-16 09:11:34 +05:00
01zulfi
0fa3598783 web: add manage inbox api tokens section (#8552)
* web: add manage inbox api tokens section
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: add view inbox api key option
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: don't generate inbox api key on client
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: use separate class for inbox api keys && don't set created date on client
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-16 01:15:03 +05:00
01zulfi
02960fb5a9 editor: support pasting math
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-15 15:41:16 +05:00
Abdullah Atta
a7fa42e944 web: refresh note on attachment permanent delete 2025-09-13 13:07:02 +05:00
Ammar Ahmed
02ab8e3938 mobile: editor ui improvements 2025-09-12 10:57:18 +05:00
Abdullah Atta
01c629f612 Merge pull request #8550 from streetwriters/release/web/v3.2.4 2025-09-12 08:52:11 +05:00
Abdullah Atta
5c120676e1 Merge pull request #8550 from streetwriters/release/web/v3.2.4
Release v3.2.4
2025-09-12 08:47:48 +05:00
Abdullah Atta
3821dc29ef web: fix some editor tests on macos 2025-09-12 08:28:39 +05:00
Abdullah Atta
3c51f73427 web: fix cannot destructure property checkout of He as it is undefined 2025-09-12 08:28:39 +05:00
Abdullah Atta
8db373ee34 web: bump version to 3.2.4 2025-09-12 08:28:39 +05:00
Abdullah Atta
1be6e6b444 Merge pull request #8388 from streetwriters/fix/theme-issues-2 2025-09-12 08:28:13 +05:00
Abdullah Atta
adcb73a2fc Merge pull request #8388 from streetwriters/fix/theme-issues-2
Fix theme related issues
2025-09-12 08:27:44 +05:00
Ammar Ahmed
4c97b3481d mobile: editor ui overhaul 2025-09-11 15:49:00 +05:00
Abdullah Atta
38579c37e1 Merge pull request #8549 from 01zulfi/web/fix-toc-crash 2025-09-11 13:49:32 +05:00
Abdullah Atta
4785544e18 Merge pull request #8549 from 01zulfi/web/fix-toc-crash
web: fix crash when shift+click on toc item
2025-09-11 13:48:33 +05:00
01zulfi
7812c15b48 web: fix crash when shift+click on toc item
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-11 09:39:00 +05:00
01zulfi
251145ea74 global: add enable inbox setting to generate/discard inbox key pair (#8527)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-09 22:12:44 +05:00
Abdullah Atta
5e4972c1d0 web: bump version to v3.3.0-beta.1 2025-09-09 14:57:07 +05:00
Abdullah Atta
64bfc80a42 Merge pull request #8395 from 01zulfi/editor/image-resizing-dimensions 2025-09-09 14:52:30 +05:00
Abdullah Atta
b841c6e0eb Merge pull request #8395 from 01zulfi/editor/image-resizing-dimensions
editor: show image dimensions during drag resizing
2025-09-09 14:51:44 +05:00
Abdullah Atta
7241dce7a6 Merge pull request #8493 from 01zulfi/editor/collapsible-headings
editor: make headings collapsible
2025-09-09 14:50:27 +05:00
01zulfi
8f25f9ba3e editor: extract evaluating click bounds for collapsible nodes into a util
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-09 14:39:32 +05:00
01zulfi
6ab58c68e1 editor: make headings collapsible
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-09 14:39:32 +05:00
01zulfi
ae5b422965 editor: if selected text is link, autofill url field in insert link popup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-09 13:07:55 +05:00
Abdullah Atta
55b6be0f15 Merge pull request #8542 from 01zulfi/editor/improve-insert-link-dialog
editor: if selected text is link, autofill url field in insert link popup
2025-09-09 13:07:18 +05:00
Abdullah Atta
f9324d9da5 Merge pull request #8489 from 01zulfi/editor/improve-table-styling
editor: improve table styling
2025-09-09 13:06:10 +05:00
Abdullah Atta
2362902675 Merge pull request #8546 from streetwriters/release/monograph/1.2.5 2025-09-09 12:53:44 +05:00
Abdullah Atta
dfe6a73ac1 Merge pull request #8546 from streetwriters/release/monograph/1.2.5
Release monographs v1.2.5
2025-09-09 12:53:20 +05:00
Abdullah Atta
afcb8835d2 ci: do not build for armv7 & armv8 platforms 2025-09-09 12:49:33 +05:00
Abdullah Atta
9dc9f186e1 monograph: use oven/bun:1.2.21-slim 2025-09-09 12:45:15 +05:00
Ammar Ahmed
875125cfe4 mobile: clear logs 2025-09-09 12:34:06 +05:00
Abdullah Atta
32d9cdd265 monograph: bump version to 1.2.5 2025-09-09 12:00:28 +05:00
Abdullah Atta
669f830dd7 Merge pull request #8545 from streetwriters/fix-monograph-report-not-working 2025-09-09 11:59:27 +05:00
Abdullah Atta
09deae9dbf Merge pull request #8545 from streetwriters/fix-monograph-report-not-working
Add report endpoint to connect-src content policy
2025-09-09 11:59:02 +05:00
Abdullah Atta
337582ac70 monograph: add report endpoint to connect-src content policy 2025-09-09 11:58:29 +05:00
01zulfi
820c78ce81 editor: if selected text is link, autofill url field in insert link popup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-08 11:28:16 +05:00
Abdullah Atta
23924a34a3 editor: move selection to newly added row/column 2025-09-08 10:22:15 +05:00
Abdullah Atta
428f1e746a editor: make table 100% width 2025-09-08 10:21:45 +05:00
Ammar Ahmed
565e692af8 mobile: fix crash during navigation 2025-09-05 12:40:20 +05:00
Ammar Ahmed
94e4721663 mobile: fix resetting navigation 2025-09-05 12:11:39 +05:00
Ammar Ahmed
8157c0812a mobile: reminder fixes
1. Allow editing reminder without changing date
2. Fix colors of buttons
3. Allow picking date and time in date picker dialog
4. Fix auto focus of title and description inputs
2025-09-05 11:30:18 +05:00
Ammar Ahmed
bc36837cd0 mobile: add missing buttons in reminder sheet 2025-09-04 14:26:47 +05:00
Ammar Ahmed
33540b000c mobile: show reminder description in properties 2025-09-04 14:26:33 +05:00
Ammar Ahmed
5a63a45d00 mobile: fix add notebook button 2025-09-04 11:43:36 +05:00
01zulfi
6eb1f2a4a7 editor: install & use simplebar for table scroll bar
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-02 13:02:55 +05:00
01zulfi
8fce6b5eb6 editor: show image dimensions during drag resizing
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-09-02 10:18:36 +05:00
Abdullah Atta
5bd1999269 Merge pull request #8487 from 01zulfi/web/reminder-search-delete 2025-08-29 11:43:30 +05:00
Abdullah Atta
4e44661e1b Merge pull request #8487 from 01zulfi/web/reminder-search-delete
web: fix deleting a reminder not removing from search list
2025-08-29 11:43:15 +05:00
Abdullah Atta
827ca2e427 Merge pull request #8509 from 01zulfi/editor/handle-empty-link-hrefs 2025-08-29 11:42:16 +05:00
Abdullah Atta
81fd1c097e Merge pull request #8509 from 01zulfi/editor/handle-empty-link-hrefs
editor: don't show open & copy tools for empty links
2025-08-29 11:39:39 +05:00
01zulfi
aaf82f359b editor: don't show open & copy tools for empty links
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-28 11:45:12 +05:00
Ammar Ahmed
aa7f14ae79 mobile: fix email confirmed description 2025-08-28 10:12:32 +05:00
Ammar Ahmed
0ad63da4a2 mobile: fix tree items in search 2025-08-25 14:51:56 +05:00
Ammar Ahmed
2885b9ac3e mobile: fix notebook tree when searching notebooks 2025-08-25 13:08:29 +05:00
01zulfi
1ae9e04e7a editor: improve table styling
* make tool buttons more prominent
* match scroll styling to rest of app
* add padding to cells
* add bg to header row

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-20 14:43:02 +05:00
01zulfi
693311a3db core: use RequestFetchV2 hub method (#8483)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-20 11:22:49 +05:00
Ammar Ahmed
a15ab99056 mobile: release v3.2.11 2025-08-20 10:32:54 +05:00
Ammar Ahmed
222cdbfa63 mobile: fix navigation 2025-08-20 10:01:19 +05:00
01zulfi
a1d8b34fb4 web: fix deleting a reminder not removing from search list
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-20 09:02:44 +05:00
Ammar Ahmed
35d08a6dfa Merge branch 'mobile-fix-open-note-notification' into beta 2025-08-20 08:49:59 +05:00
Ammar Ahmed
874352e753 Merge pull request #8400 from streetwriters/mobile-fix-open-note-notification
Fix opening pinned note from notification on android
2025-08-20 08:49:55 +05:00
Ammar Ahmed
6bb5e44442 Merge branch 'mobile-fix-notebook-tag-sorting-filter' into beta 2025-08-20 08:49:36 +05:00
Ammar Ahmed
49d1ab4be5 Merge pull request #8401 from streetwriters/mobile-fix-notebook-tag-sorting-filter
Fix filtered tags and notebooks not sorted correctly
2025-08-20 08:49:21 +05:00
Ammar Ahmed
54a0d0fd0c Merge branch 'mobile-fix-back-navigation' into beta 2025-08-20 08:48:58 +05:00
Ammar Ahmed
65a80dbd46 Merge pull request #8402 from streetwriters/mobile-fix-back-navigation
Fix back navigation on first app launch by resetting routes
2025-08-20 08:48:40 +05:00
Ammar Ahmed
dfeb01320d Merge branch 'fix-cache-clear-error' into beta 2025-08-20 08:48:20 +05:00
Ammar Ahmed
e55456f492 Merge pull request #8467 from streetwriters/fix-cache-clear-error
mobile: fix error when clearing cache on android
2025-08-20 08:48:01 +05:00
Ammar Ahmed
d33209afcc Merge branch 'fix-open-share-exported-notes-ios' into beta 2025-08-20 08:47:40 +05:00
Ammar Ahmed
3f9fce0d34 Merge pull request #8482 from streetwriters/fix-open-share-exported-notes-ios
mobile: fix sharing and opening exported notes on iOS
2025-08-20 08:47:21 +05:00
Ammar Ahmed
2ae094cf1f mobile: fix sharing and opening exported notes 2025-08-19 12:51:16 +05:00
Abdullah Atta
5530270b06 Merge pull request #8466 from 01zulfi/web/list-pane-max-size 2025-08-19 09:53:06 +05:00
Abdullah Atta
bc224f1674 Merge pull request #8466 from 01zulfi/web/list-pane-max-size
web: increase list pane max size to 1000 for large screens
2025-08-19 09:52:28 +05:00
01zulfi
8bb1582cca web: increase list pane max size to 1000
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-18 15:48:59 +05:00
01zulfi
c759408fdc core: add support for monographs sync 2025-08-18 13:16:12 +05:00
Ammar Ahmed
d02125a93c mobile: fix error when clearing cache on android 2025-08-18 13:15:45 +05:00
Abdullah Atta
30553ed0f1 Merge pull request #8389 from 01zulfi/common/update-keybindings 2025-08-13 13:31:34 +05:00
Abdullah Atta
d91ce4e936 Merge pull request #8389 from 01zulfi/common/update-keybindings
common: update keybindings for editor search, link, internal link, and command palette
2025-08-13 13:30:39 +05:00
Abdullah Atta
b315e70e1e Merge pull request #8392 from 01zulfi/web/fix-open-settings-shortcut 2025-08-13 13:30:11 +05:00
Abdullah Atta
deb902549b Merge pull request #8392 from 01zulfi/web/fix-open-settings-shortcut
web: fix open settings shortcut interfering with editor shortcut
2025-08-13 13:29:34 +05:00
Abdullah Atta
d6c6db68ba Merge pull request #8385 from Scott-will/master 2025-08-13 13:27:51 +05:00
Abdullah Atta
e41ed07805 Merge pull request #8385 from Scott-will/master
Handle pasting urls in html
2025-08-13 13:27:14 +05:00
Scott-will
f6e8dc0a88 editor: fix pasting html links with titles that look like links
Signed-off-by: Scott Williams scottwill1999@gmail.com

editor: update tests for html handling

Signed-off-by: Scott Williams scottwill1999@gmail.com

editor: add logic for markdown links

Signed-off-by: Scott Williams scottwill1999@gmail.com

editor: remove plugin in favour of markPasteRule

Signed-off-by: Scott Williams scottwill1999@gmail.com
2025-08-13 13:26:01 +05:00
01zulfi
0738b96161 docs: add missing instruction in desktop app dev setup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-13 12:24:28 +05:00
Abdullah Atta
044dd5ce59 Merge pull request #8391 from 01zulfi/docs/update-desktop-instructions
docs: add missing instruction in desktop app dev setup
2025-08-13 12:21:12 +05:00
01zulfi
6cca06fcbc docs: add standard notes import instructions
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-08-07 12:09:23 +05:00
Ammar Ahmed
50feebc0b0 mobile: fix fdroid build 2025-07-31 09:10:52 +05:00
Ammar Ahmed
b24830666c Merge pull request #8409 from streetwriters/fix-fdroid-build
mobile: fix fdroid build
2025-07-31 09:10:13 +05:00
Ammar Ahmed
470802c3e2 mobile: fix fdroid build 2025-07-31 09:09:38 +05:00
Ammar Ahmed
0e869708f7 Merge branch 'mobile-fix-fdroid-build' into beta 2025-07-29 15:05:53 +05:00
Ammar Ahmed
7e0e1eac93 Merge pull request #8406 from streetwriters/mobile-fix-fdroid-build
mobile: compile lazysodium from source
2025-07-29 15:05:39 +05:00
Ammar Ahmed
58cbf653b2 mobile: compile lazysodium from source 2025-07-29 15:04:49 +05:00
Ammar Ahmed
4b35f2ecd2 mobile: fix back navigation on first app launch 2025-07-28 14:20:11 +05:00
Ammar Ahmed
48d9a863ec mobile: fix filtered tags and notebooks not sorted correctly 2025-07-28 13:42:46 +05:00
Ammar Ahmed
1d616cf68f mobile: fix opening note from notification on android 2025-07-28 11:56:54 +05:00
Ammar Ahmed
efda6f86ae Merge branch 'mobile-release-3.2.10-fix' into beta 2025-07-26 12:48:44 +05:00
Ammar Ahmed
cdf6a4bb5b Merge pull request #8398 from streetwriters/mobile-release-3.2.10-fix
mobile: release v3.2.10
2025-07-26 12:48:28 +05:00
Ammar Ahmed
1b3735e2b2 mobile: release v3.2.10 2025-07-26 12:19:13 +05:00
Ammar Ahmed
54008a0de2 Merge branch 'mobile-release-3.2.9' into beta 2025-07-26 11:58:43 +05:00
Ammar Ahmed
850fc6b066 Merge pull request #8397 from streetwriters/mobile-release-3.2.9
mobile: release v3.2.9
2025-07-26 11:58:20 +05:00
Ammar Ahmed
67a398f583 Merge branch 'mobile-editor-ux-improvement' into beta 2025-07-26 10:53:01 +05:00
Ammar Ahmed
8a62070c8e Merge pull request #8394 from streetwriters/mobile-editor-ux-improvement
Mobile editor ux improvement
2025-07-26 10:52:01 +05:00
Ammar Ahmed
8aa31b8380 mobile: fix exiting table not working 2025-07-25 14:24:14 +05:00
Ammar Ahmed
f445a963f9 mobile: improve ux when clicking empty area in editor 2025-07-25 12:44:55 +05:00
Ammar Ahmed
d6e3f27612 mobile: add scroll to top and bottom in editor 2025-07-25 12:44:34 +05:00
Ammar Ahmed
4688d74edb mobile: improvements to editor ux
1. Tapping on empty in editor opens the keyboard
2. Swiping to open the editor when editor is empty opens the keyboard automatically
2025-07-25 11:57:44 +05:00
Ammar Ahmed
e88c755ba8 Merge branch 'mobile-fix-edit-notebook' into beta 2025-07-25 11:01:20 +05:00
Ammar Ahmed
1985007039 Merge pull request #8393 from streetwriters/mobile-fix-edit-notebook
mobile: fix edit notebook button causes app freeze on iOS
2025-07-25 11:01:03 +05:00
Ammar Ahmed
039c8faabe mobile: fix edit notebook button causes app freeze 2025-07-25 10:57:14 +05:00
01zulfi
fb1eb234b6 web: fix open settings shortcut interfering with editor shortcut
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-25 08:25:01 +05:00
01zulfi
7e70cd96b9 docs: add missing instruction in desktop app dev setup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-24 15:56:17 +05:00
01zulfi
f9a89783ed common: update keybindings for editor search, link, internal link, and command palette
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-23 09:45:12 +05:00
Abdullah Atta
26282352cb Merge pull request #8387 from 01zulfi/docs/keyboard-shortcuts-heading 2025-07-23 08:33:14 +05:00
Abdullah Atta
7f3c74b55b editor: fix theme related issues 2025-07-23 08:32:35 +05:00
Abdullah Atta
301ac781d6 Merge pull request #8387 from 01zulfi/docs/keyboard-shortcuts-heading
docs: add keyboard shortcuts heading
2025-07-23 08:31:41 +05:00
01zulfi
ce3c98ae9b docs: add keyboard shortcuts heading
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 16:28:07 +05:00
Abdullah Atta
1c3a6ffbde Merge pull request #7655 from 01zulfi/global/keyboard 2025-07-22 14:22:22 +05:00
Abdullah Atta
2447b3bea7 Merge pull request #7655 from 01zulfi/global/keyboard
global: keyboard shortcuts documentation && web dialog
2025-07-22 14:21:30 +05:00
Abdullah Atta
63888ff70e web: improve keyboard shortcuts dialog UI 2025-07-22 14:20:15 +05:00
Abdullah Atta
c6e3d1bd47 common: New note should be in the General category 2025-07-22 14:20:15 +05:00
Abdullah Atta
e03e02d702 common: add license header to keybindings.ts 2025-07-22 14:20:15 +05:00
Abdullah Atta
1abf51ae2b common: getGroupedKeybindings should return an array
this is so the groups are always ordered. It also makes it easier to iterate
over the groups.
2025-07-22 14:20:15 +05:00
Abdullah Atta
c41dfa3185 common: letter keys should be upper cased
this is common in a lot of places and it provides better readability as well.
2025-07-22 14:20:15 +05:00
01zulfi
52a07da230 editor: remove unneeded code
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:15 +05:00
01zulfi
f572bb1637 editor: fix insertParagraph keys
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:15 +05:00
01zulfi
773ede4b6c common: improve key formatting
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:15 +05:00
01zulfi
e4d42c8bac web: add command to show keyboard shortcuts in command palette
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
5b85067e15 web: improve contrast of keys text in keyboard shortcuts dialog
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
0d111f3a79 web: use keys from common/keybindings in command palette dialog
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
f6b6f2b4b7 web: support mac key formatting in keyboard shortcuts dialog
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
d55a2aa04d common: support mac keyboard formatting
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
0185eea740 editor: remove hardcoded keybind definitions
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
d44e8874b8 docs: move keyboard shortcuts script to docs/help
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
e34d33dd61 web: update key maps registeration
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:20:01 +05:00
01zulfi
4b2fb80c23 global: add keyboard shortcuts
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

global: (wip) move keyboard shortcuts metadata into common package
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

common: refactor keybindings.ts
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

global: (wip) more refactoring
* minor refactor dialog
* refactor logic out from script file to keybindings file

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

common: filter keybindings based on platform && minor ui changes

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

editor: use keyboard keys from common package
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

web: remove unrelated title-box change
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

editor: add TODO:remove comments
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-22 14:19:46 +05:00
Abdullah Atta
acbac95818 Merge pull request #8384 from streetwriters/themebuilder/release/1.4.0 2025-07-22 09:08:23 +05:00
Abdullah Atta
3c908ac079 Merge pull request #8384 from streetwriters/themebuilder/release/1.4.0
Update theme builder to new UI
2025-07-22 09:08:02 +05:00
Abdullah Atta
563f068948 theme-builder: bump version to 1.4.0 2025-07-22 09:03:09 +05:00
Abdullah Atta
6bf4300372 Merge pull request #8382 from 01zulfi/web/note-linking-dialog 2025-07-22 08:42:14 +05:00
Abdullah Atta
1344b958cb Merge pull request #8382 from 01zulfi/web/note-linking-dialog
web: migrate note linking dialog lists from tanstack virtual to virtuoso
2025-07-22 08:41:38 +05:00
01zulfi
32d7cab70c web: migrate note linking dialog lists from tanstack virtual to virtuoso
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-21 14:49:41 +05:00
Abdullah Atta
6f8f6d47f8 Merge pull request #8379 from streetwriters/docs/remove-onenote-sn-docs 2025-07-21 12:25:10 +05:00
Abdullah Atta
04a48979eb Merge pull request #8365 from 01zulfi/web/fix-nav-pane-on-small-screens 2025-07-21 12:24:17 +05:00
Abdullah Atta
1293fa2dec Merge pull request #8365 from 01zulfi/web/fix-nav-pane-on-small-screens
web: fix nav pane on small screens
2025-07-21 12:23:50 +05:00
Abdullah Atta
ff3a8fa738 Merge pull request #8381 from
streetwriters/fix/email-should-not-be-required-session-expiry
2025-07-21 12:20:27 +05:00
Abdullah Atta
8542cbf37e Merge pull request #8381 from streetwriters/fix/email-should-not-be-required-session-expiry
Email should not be required on session expiry
2025-07-21 12:19:42 +05:00
Abdullah Atta
62c6fba9a0 web: email should not be required on session expiry 2025-07-21 12:10:43 +05:00
Abdullah Atta
2d84154226 web: show hamburger menu button on mobile 2025-07-21 12:09:58 +05:00
01zulfi
c4e306d569 web: fix nav pane on small screens
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-21 11:56:45 +05:00
Abdullah Atta
83b6c6de1c Merge pull request #8380 from streetwriters/ci/run-tests-on-pr-ref 2025-07-21 11:48:01 +05:00
Abdullah Atta
e86f7491ef Merge pull request #8380 from streetwriters/ci/run-tests-on-pr-ref
Run tests on pr ref instead of base branch
2025-07-21 11:47:27 +05:00
Abdullah Atta
5151d83af9 ci: run tests on pr ref instead of base branch 2025-07-21 11:38:30 +05:00
Abdullah Atta
e462cb0596 Merge pull request #8379 from streetwriters/docs/remove-onenote-sn-docs
Remove standard notes and one note importer docs
2025-07-21 11:30:52 +05:00
Abdullah Atta
a30c0e4608 docs(help): remove standard notes and one note importer docs 2025-07-21 11:30:32 +05:00
Abdullah Atta
dbe8c1b9e6 Merge pull request #8378 from streetwriters/ci/migrate-to-pr-target 2025-07-21 11:29:01 +05:00
Abdullah Atta
f90e7982f7 Merge pull request #8378 from streetwriters/ci/migrate-to-pr-target
Fix tests from PRs opened from external forks
2025-07-21 11:28:11 +05:00
Abdullah Atta
40c69d7cba ci: use pull_request_target with authorization hook where required 2025-07-21 11:26:03 +05:00
Abdullah Atta
c9e6f3e532 Merge pull request #8372 from streetwriters/fix/web-tests 2025-07-21 09:54:05 +05:00
Abdullah Atta
23ee50f688 Merge pull request #8372 from streetwriters/fix/web-tests
Fix web E2E tests
2025-07-21 09:53:05 +05:00
Abdullah Atta
a7c857fb71 desktop: increase hookTimeout ton 120 seconds 2025-07-21 09:35:39 +05:00
Abdullah Atta
0f6622360c desktop: ignore error on failure to remove test artifacts 2025-07-21 09:28:26 +05:00
Abdullah Atta
578bc6e546 desktop: build app only once during tests 2025-07-21 09:19:53 +05:00
Abdullah Atta
70fd038207 desktop: add build retrying when running tests 2025-07-21 08:57:16 +05:00
Abdullah Atta
b30110a48a desktop: add support for running tests in parallel
we do this by copying the build directory instead of building it over and over
again for each test. This also makes the tests super fast.
2025-07-19 15:05:24 +05:00
Abdullah Atta
21978c4c1d desktop: patch better-sqlite3-multiple-ciphers on each test build 2025-07-19 12:32:22 +05:00
Abdullah Atta
ec48f2350d desktop: run tests sequentially
this is required since each test builds a new app and on linux & windows that
can cause issues if done in parallel
2025-07-19 11:02:32 +05:00
Abdullah Atta
fe1e3bb847 desktop: migrate tests to vitest 3 2025-07-19 11:01:57 +05:00
Abdullah Atta
69776f26d8 desktop: upgrade to vitest 3 2025-07-19 11:01:42 +05:00
Abdullah Atta
ab4092c088 desktop: fix dialog skipping in tests 2025-07-19 09:43:39 +05:00
Abdullah Atta
4948a8d7de desktop: add test artifacts cleanup on test finish 2025-07-19 09:43:23 +05:00
Abdullah Atta
0a607bce18 web: increase app lock test timeouts 2025-07-19 08:51:29 +05:00
Abdullah Atta
e59820e3d6 web: fix adding a one-time reminder before current time should not be possible 2025-07-19 08:50:22 +05:00
Abdullah Atta
85a2d25c1b web: wait for reminder dialog to close before proceeding in tests 2025-07-18 15:06:59 +05:00
Abdullah Atta
3bc7fc84f9 web: fix `if note is active in multiple tabs, moving the note to trash should
close those tabs` test
2025-07-18 14:45:06 +05:00
Abdullah Atta
249ce1ecbb web: remove new line at eof in test snapshots 2025-07-18 13:02:03 +05:00
Abdullah Atta
be7f8d9916 ci: run tests based on affected files on pr open 2025-07-18 12:59:04 +05:00
Abdullah Atta
0a0495f1a7 config: include editor/src/extensions/code-block/languages to build output 2025-07-18 12:51:11 +05:00
Abdullah Atta
2f7afa8556 web: update readonly edited note snapshots for linux & windows 2025-07-18 12:44:45 +05:00
Abdullah Atta
2f40905372 Merge pull request #8366 from Scott-will/master 2025-07-18 12:31:52 +05:00
Abdullah Atta
a6d0177153 Merge pull request #8366 from Scott-will/master
editor: maintain relative cursor location when list is sorted
2025-07-18 12:29:13 +05:00
Scott-will
b9e24888e7 editor: maintain relative cursor location when list is sorted
Signed-off-by: Scott Williams scottwill1999@gmail.com
2025-07-16 14:01:40 -07:00
Abdullah Atta
976199e5c6 Merge pull request #8364 from 01zulfi/editor/fix-readonly-links 2025-07-16 11:51:51 +05:00
Abdullah Atta
9017dae664 Merge pull request #8364 from 01zulfi/editor/fix-readonly-links
editor: fix internal links opening in new tab in readonly notes
2025-07-16 11:50:58 +05:00
01zulfi
94acc241d9 editor: fix internal links opening in new tab in readonly notes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-16 11:47:09 +05:00
Ammar Ahmed
765f3a476d mobile: release v3.2.9 2025-07-16 11:26:19 +05:00
01zulfi
449287e25a common: fix archive export (#8362)
* fix "_archive" folder generation for each archive note
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-16 11:07:20 +05:00
Ammar Ahmed
db2669d699 Merge branch 'fix-app-lauch-crash-pixel-device' into beta 2025-07-16 10:48:37 +05:00
Ammar Ahmed
2cdb916233 Merge pull request #8363 from streetwriters/fix-app-lauch-crash-pixel-device
mobile: fix crash on app launch on pixel devices
2025-07-16 10:47:16 +05:00
Ammar Ahmed
5f14261aba mobile: fix crash on app launch on pixel devices 2025-07-16 10:11:05 +05:00
Ammar Ahmed
5ae7855c7f Merge branch 'mobile-release-3.2.8' into beta 2025-07-16 09:38:58 +05:00
Ammar Ahmed
20138505c4 Merge pull request #8361 from streetwriters/mobile-release-3.2.8
mobile: release v3.2.8
2025-07-16 09:37:35 +05:00
Ammar Ahmed
49c09bfd85 mobile: release v3.2.8 2025-07-15 11:07:33 +05:00
Ammar Ahmed
d8ed47ddb8 Merge branch 'mobile-fix-sidebar-items-update' into beta 2025-07-15 10:58:16 +05:00
Ammar Ahmed
39bfc41d33 Merge branch 'mobile-fix-android-nav-bar' into beta 2025-07-15 10:58:07 +05:00
Ammar Ahmed
68a8ac588f Merge branch 'mobile-fix-color-tag-long-press-crash' into beta 2025-07-15 10:58:01 +05:00
Ammar Ahmed
49d9ece15a Merge branch 'mobile-fix-crash-on-move-notebook' into beta 2025-07-15 10:57:51 +05:00
Ammar Ahmed
475edf6732 Merge pull request #8356 from streetwriters/mobile-fix-sidebar-items-update
mobile: Fix sidebar items do not update after sync
2025-07-15 10:56:47 +05:00
Ammar Ahmed
76ea89b668 Merge pull request #8351 from streetwriters/mobile-fix-color-tag-long-press-crash
mobile: fix crash on long press color tag
2025-07-15 10:56:34 +05:00
Ammar Ahmed
56b3a8df6b Merge pull request #8349 from streetwriters/mobile-fix-android-nav-bar
mobile: fix nav bar handling on android 15 and above
2025-07-15 10:56:15 +05:00
Ammar Ahmed
e02de0c0f6 Merge pull request #8336 from streetwriters/mobile-fix-crash-on-move-notebook
Fix crash on moving notebook when no notebooks selected
2025-07-15 10:55:58 +05:00
Ammar Ahmed
84bfab2a72 mobile: fix sidebar items do not update after sync 2025-07-15 09:36:00 +05:00
Ammar Ahmed
a6825a2df2 mobile: fix bottom insets 2025-07-14 15:19:15 +05:00
Abdullah Atta
f9dc539057 Merge pull request #8318 from 01zulfi/web/dont-close-note-after-attachment-delete
web: don't close note after deleting its attachment
2025-07-14 13:33:08 +05:00
Abdullah Atta
833b40bdc3 Merge pull request #8350 from 01zulfi/web/hide-spell-checker-languages-on-mac 2025-07-14 12:58:11 +05:00
Abdullah Atta
9ba58d1a46 Merge pull request #8350 from 01zulfi/web/hide-spell-checker-languages-on-mac
web: hide spell checker language selector on mac os
2025-07-14 12:57:33 +05:00
Ammar Ahmed
29a99d3f97 mobile: fix crash on long press color tag 2025-07-14 12:48:58 +05:00
01zulfi
a8b6fe78ba web: hide spell checker language selector on mac os
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-14 12:42:49 +05:00
Ammar Ahmed
4abd69b460 mobile: fix nav bar handling on android 15 and above 2025-07-14 12:21:43 +05:00
01zulfi
0ca1d82861 web: don't close note after deleting its attachment
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-14 12:20:11 +05:00
Abdullah Atta
3dd25b9f83 Merge pull request #8348 from 01zulfi/web/fix-link-in-importer 2025-07-14 11:55:06 +05:00
Abdullah Atta
5c55b49976 Merge pull request #8348 from 01zulfi/web/fix-link-in-importer
web: fix github link in importer setting
2025-07-14 11:53:39 +05:00
01zulfi
c932961dd4 web: fix github link in importer setting
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-14 11:31:30 +05:00
Abdullah Atta
20cd5bef16 Merge pull request #8346 from 01zulfi/web/middle-click-new-note-button 2025-07-14 11:08:08 +05:00
Abdullah Atta
9b058bb17f Merge pull request #8345 from 01zulfi/web/fix-toolbar-bug 2025-07-14 11:07:49 +05:00
Abdullah Atta
47357c3e25 Merge pull request #8346 from 01zulfi/web/middle-click-new-note-button
web: create new tab on create note button's middle click
2025-07-14 10:52:12 +05:00
Abdullah Atta
3ec5a1cf2c Merge pull request #8345 from 01zulfi/web/fix-toolbar-bug
web: fix toolbar crash
2025-07-14 10:49:54 +05:00
01zulfi
13d8a7baf7 web: create new tab on create note button's middle click
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-14 09:21:19 +05:00
01zulfi
19b1e74d06 web: fix toolbar crash
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-14 09:12:16 +05:00
Ammar Ahmed
82de9b9b94 mobile: fix crash on moving notebook when no notebooks selected 2025-07-12 14:31:00 +05:00
Ammar Ahmed
2325f4e31c Merge branch 'mobile-release-3.2.7' into beta 2025-07-12 14:29:51 +05:00
Ammar Ahmed
867af58695 Merge pull request #8335 from streetwriters/mobile-release-3.2.7
mobile: release v3.2.7
2025-07-12 14:29:22 +05:00
Ammar Ahmed
cdd50f0258 mobile: release v3.2.7 2025-07-11 14:01:22 +05:00
Ammar Ahmed
8c8b92cc4e Merge pull request #8333 from streetwriters/mobile-fix-empty-note-bug
Fix notes open empty from notes list randomly
2025-07-11 13:57:47 +05:00
Ammar Ahmed
c0a3df0aa8 Merge branch 'mobile-fix-empty-note-bug' into beta 2025-07-11 13:57:12 +05:00
Ammar Ahmed
31dd1619f6 mobile: fix notes open empty from notes list 2025-07-11 12:54:39 +05:00
Abdullah Atta
ba6be6c84d web: bump version to v3.3.0-beta.0 2025-07-11 11:22:38 +05:00
Ammar Ahmed
b126b98eb0 Merge branch 'release-mobile-3.2.6' into beta 2025-07-11 11:16:05 +05:00
Ammar Ahmed
afb010e3ae Merge pull request #8331 from streetwriters/release-mobile-3.2.6
mobile: release v3.2.6
2025-07-11 11:15:19 +05:00
Abdullah Atta
f14e3d0f5e Merge pull request #8330 from 01zulfi/monograph/fix-api-host-on-client 2025-07-11 10:52:06 +05:00
Abdullah Atta
ddebdcda43 Merge pull request #8330 from 01zulfi/monograph/fix-api-host-on-client 2025-07-11 10:51:35 +05:00
01zulfi
29c69418e9 monograph: fix API_HOST on client
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-11 09:44:09 +05:00
Ammar Ahmed
3e565e5195 mobile: release v3.2.6 2025-07-08 14:42:46 +05:00
Ammar Ahmed
a13878d4a8 Merge branch 'mobile-fix-crash-on-boot-android' into beta 2025-07-08 14:40:24 +05:00
Ammar Ahmed
1b352d6162 Merge pull request #8320 from streetwriters/mobile-fix-crash-on-boot-android
Fix boot crash on android
2025-07-08 14:40:08 +05:00
Ammar Ahmed
258aa77cdd mobile: fix boot crash on android 2025-07-08 14:23:25 +05:00
Ammar Ahmed
bc8de87cda Merge branch 'mobile-fix-duplicate-body-notification' into beta 2025-07-08 12:25:52 +05:00
Ammar Ahmed
7789bd145c Merge pull request #8319 from streetwriters/mobile-fix-duplicate-body-notification
Fix reminder description duplicated in notification on iOS
2025-07-08 12:24:52 +05:00
Ammar Ahmed
c1457cc83f mobile: show description in notification body only 2025-07-08 12:20:40 +05:00
01zulfi
3ca0089ee8 web: add character, spaces, paragraphs count in status bar popup (#8311)
* web: add character, spaces, paragraphs count in status bar popup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: refactor selected text stats logic
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: use PopupPresenter for note statistics popup
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: improve gettng text for counting characters
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-07 11:54:01 +05:00
Abdullah Atta
29c9476c16 web: fix recovery key not getting set during account recovery 2025-07-04 19:54:17 +05:00
01zulfi
9e72f51851 web: disable reveal in list option when focus mode active (#8297)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-04 19:49:34 +05:00
01zulfi
a349611a30 web: fix scroll to search result (#8290)
* web: (wip) fix scroll to search result
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: fix scroll to search result
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-03 12:16:25 +05:00
01zulfi
1cd21087c2 common: include archive in export (#8279)
* common: include archive in export
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: include archive state in md-frontmatter export
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
01zulfi
eecb8f9c05 web: show color name tooltip in note properties panel (#8280)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
Abdullah Atta
e36fd28f47 core: add support for fields in search (#8261)
* core: add support for field based searching

* core: add more fields

* core: add `tagged`, `colored`, `in_notebook` fields
2025-07-01 10:25:57 +05:00
01zulfi
7ce44f4d84 web: support compact search results view (#8269)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
01zulfi
6d8e4e8ebc web: fix note create option in quick open dialog (#8263)
* open new tab when query empty
* use editor-store methods for note creation

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
01zulfi
deb507859a core: don't generate headline title if title was set during note creation (#8266)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
01zulfi
a165675b2a web: fix update status height (#8267)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-07-01 10:25:57 +05:00
Ammar Ahmed
8b316d0abf mobile: release v3.2.5 2025-06-30 13:54:35 +05:00
Ammar Ahmed
def5059ff1 mobile: fix app stuck on logout on ios 2025-06-30 13:44:30 +05:00
Ammar Ahmed
e1febfae31 mobile: fix loading pdf screen not showing 2025-06-30 13:37:13 +05:00
Ammar Ahmed
82aa506902 mobile: fix pdf view gets stuck 2025-06-30 12:40:18 +05:00
Ammar Ahmed
de1aa40ecf mobile: fix sqlite3-fts5-html lib loading error on ios 2025-06-30 12:39:12 +05:00
Ammar Ahmed
53724b437e mobile: fix app store error invalid swift support 2025-06-28 14:24:46 +05:00
Ammar Ahmed
1592620141 mobile: release v3.2.4 2025-06-28 13:35:21 +05:00
Ammar Ahmed
28ef87a95b mobile: fix ts error 2025-06-28 13:33:24 +05:00
Ammar Ahmed
d4019eea99 mobile: fix sync taking too long to complete 2025-06-28 13:33:24 +05:00
Ammar Ahmed
d13b46cbba mobile: do not embed framework in appex on ios 2025-06-28 08:50:31 +05:00
Ammar Ahmed
f1eb215bb9 mobile: release v3.2.3 2025-06-27 14:11:28 +05:00
Ammar Ahmed
92c7e1a0c1 mobile: wrap add-reminder screen in keyboard avoiding view on ios 2025-06-27 13:54:50 +05:00
Ammar Ahmed
b81cc178b5 mobile: make add-reminder sheet a screen 2025-06-27 12:56:50 +05:00
Abdullah Atta
dd42b82dbf web: bump version to v3.2.3 2025-06-27 09:49:40 +05:00
Abdullah Atta
ca6b50081a web: remove navigating to Monographs test 2025-06-27 09:48:44 +05:00
Abdullah Atta
4fa27046bb global: update lockfiles 2025-06-27 09:44:46 +05:00
01zulfi
8cadc6eaa4 web: fix scrolling toolbar also scrolling editor (#8256)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-27 09:43:36 +05:00
Abdullah Atta
ccae629833 web: update sqlite3-fts5-html to 0.0.4 2025-06-27 09:43:36 +05:00
Abdullah Atta
4a1cbe632c desktop: update sqlite3-fts5-html to 0.0.4 2025-06-27 09:43:36 +05:00
Abdullah Atta
579813d93a core: update sqlite3-fts5-html to 0.0.4 2025-06-27 09:43:36 +05:00
01zulfi
00d00c02ea editor: don't clear nodes in clear formatting option (#8260)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-27 09:43:36 +05:00
Abdullah Atta
765949cc40 web: only subscribe to note title if its generated 2025-06-27 09:43:36 +05:00
01zulfi
87cea6a120 web: hide monograph list for not logged in users (#8258)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-27 09:43:36 +05:00
Ammar Ahmed
83526d4d46 mobile: fix android toolbar 2025-06-27 09:37:17 +05:00
Ammar Ahmed
fca4faa114 mobile: convert sheets with input to screens or simple modals 2025-06-27 09:36:26 +05:00
Ammar Ahmed
171628c7b9 mobile: fix sqlite fts5 2025-06-27 09:34:16 +05:00
Ammar Ahmed
d456132dd6 mobile: release v3.2.2 2025-06-21 13:24:24 +05:00
Abdullah Atta
4ac7941b6c web: bump version to v3.2.2 2025-06-21 13:03:04 +05:00
Abdullah Atta
e7f5463917 web: make trash actions multi selectable 2025-06-21 13:00:46 +05:00
Abdullah Atta
6e41ce459d common: bulk resolve notebooks & tags 2025-06-21 13:00:46 +05:00
Abdullah Atta
f5095fa643 core: fix hang when resolving recursive nested notebooks 2025-06-21 13:00:46 +05:00
Abdullah Atta
e6a5b85011 web: register fts5 extensions after db decryption 2025-06-21 13:00:46 +05:00
Abdullah Atta
409c5a2517 web: update sqlite to v3.49.2 2025-06-21 13:00:46 +05:00
Abdullah Atta
35cd6b101d desktop: update better-sqlite3-multiple-ciphers to v11.10.0 2025-06-21 13:00:46 +05:00
Ammar Ahmed
2440e28168 mobile: fix android toolbar hidden behind keyboard on android 15 2025-06-20 14:49:15 +05:00
Ammar Ahmed
0078d509c5 mobile: release v3.2.1 2025-06-18 11:25:33 +05:00
Ammar Ahmed
0c2d57716d mobile: fix app crash on android 15 & 16 2025-06-18 11:16:07 +05:00
Abdullah Atta
678aeb98c3 ci: release snap to stable track (instead of release track) 2025-06-18 10:35:56 +05:00
Abdullah Atta
5f422f4eb7 web: bump version to v3.2.1 2025-06-18 10:27:50 +05:00
Abdullah Atta
2b26524fcd web: bump version to v3.2.1-beta.0 2025-06-18 10:27:13 +05:00
Abdullah Atta
7326533cc1 ci: publish snap beta 2025-06-18 10:27:13 +05:00
Abdullah Atta
c8aae5be61 desktop: change snap base to core22 2025-06-18 10:27:13 +05:00
Abdullah Atta
be1a8bf849 docs: remove mention of importer.notesnook.com (#8218) 2025-06-17 13:59:38 +05:00
Ammar Ahmed
2ffc2a27a5 mobile: fix android build 2025-06-17 12:49:38 +05:00
Ammar Ahmed
b0a9f3320b mobile: fix ios workflow
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-06-17 12:17:36 +05:00
Ammar Ahmed
0ef844f08c mobile: update pods 2025-06-17 11:58:48 +05:00
Abdullah Atta
bbe00b0f9a ci: disable snap on arm64 2025-06-17 11:56:42 +05:00
Ammar Ahmed
4dcaf70346 mobile: release v3.2.0 2025-06-17 11:45:39 +05:00
Abdullah Atta
76e5e3758a desktop: fix `'environment/DISABLE_WAYLAND' property does not match the
required schema`
2025-06-17 11:42:58 +05:00
Abdullah Atta
f460772d75 web: bump version to v3.2.0 2025-06-17 11:01:02 +05:00
Abdullah Atta
1cf1605564 core: fix small tokens ignored from query 2025-06-17 10:49:42 +05:00
01zulfi
0abbd41ff2 web: fix archived notes showing in search results (#8216)
* web: fix archived notes showing in search results
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: make notes param required in lookup.notesWithHighlighting
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-17 10:26:15 +05:00
Abdullah Atta
f16818ea93 web: fix tag navigation from editor 2025-06-17 10:26:15 +05:00
Abdullah Atta
719ab6dff3 web: fix ui glitch in note linking dialog 2025-06-17 10:26:15 +05:00
01zulfi
ed50d8041e editor: fix failing snapshot tests (#8215)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-17 10:26:15 +05:00
01zulfi
9a0de8dff8 web: fix navigating to notebooks & tags from note item (#8211)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-17 10:26:15 +05:00
01zulfi
caba714798 core: fix notebooks parentId() tests (#8213)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-17 10:26:15 +05:00
01zulfi
154cf897b3 web: fix move notebook dialog (#8214)
* also use db.notebooks.parentId()

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-17 10:26:15 +05:00
Abdullah Atta
323e53a1ef global: regenerate package-lock files to fix CI (#8212) 2025-06-17 09:44:35 +05:00
Ammar Ahmed
9b097cf233 mobile: update deps 2025-06-16 14:52:06 +05:00
Ammar Ahmed
75cb2fe194 mobile: fix pin and unpin from notifications 2025-06-16 14:09:45 +05:00
Ammar Ahmed
7aa975457c mobile: support android 16 2025-06-16 14:09:45 +05:00
Abdullah Atta
1932d27f1c core: fix group header for search results hidden 2025-06-16 14:09:45 +05:00
01zulfi
f226bdbff1 docs: add monograph size limit (#8206)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:09:45 +05:00
Abdullah Atta
7843943130 web: bump version to v3.2.0-beta.9 2025-06-16 14:09:45 +05:00
Abdullah Atta
a92afab3fc core: remove search results count
it was inaccurate and confused users
2025-06-16 14:09:45 +05:00
Abdullah Atta
1354ee683f web: reduce trial2pro discount to 30% 2025-06-16 14:09:45 +05:00
Abdullah Atta
891e311374 desktop: do not use native menu for tag suggestions on macos 2025-06-16 14:09:45 +05:00
Ammar Ahmed
881099c2c9 mobile: release beta 4 2025-06-16 14:09:45 +05:00
Ammar Ahmed
2dde6b6150 mobile: make adding notebook a dialog
* make manage tags sheet a screen
2025-06-16 14:09:45 +05:00
Abdullah Atta
a1f75dfed3 editor: fix search popup removed on link hover 2025-06-16 14:09:45 +05:00
Abdullah Atta
493ee81c42 core: fix search results sorting not working 2025-06-16 14:09:45 +05:00
Abdullah Atta
7109a36006 web: bump version to v3.2.0-beta.8 2025-06-16 14:09:45 +05:00
Abdullah Atta
6fccac9aea core: take into account boolean parameters in query 2025-06-16 14:09:45 +05:00
Ammar Ahmed
fa43f97bb4 mobile: default tag 2025-06-16 14:09:45 +05:00
01zulfi
e3a973d61e web: fix navigation commands in command palette (#8070)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:09:45 +05:00
01zulfi
542a628435 web: add move notebook dialog (#8099)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-06-16 14:09:45 +05:00
Ammar Ahmed
fdd25a11e7 mobile: fix ci build 2025-06-16 14:09:45 +05:00
Abdullah Atta
449ae78700 web: bump version to v3.2.0-beta.7 2025-06-16 14:09:45 +05:00
Ammar Ahmed
6bda4a9a73 mobile: fix mmkv patch 2025-06-16 14:09:27 +05:00
Ammar Ahmed
2d316ed1ec mobile: beta release 2025-06-16 14:09:27 +05:00
Abdullah Atta
570ae00453 core: fix false positives appearing in search 2025-06-16 14:09:27 +05:00
Ammar Ahmed
c845f7c1e1 mobile: update deps 2025-06-16 14:09:27 +05:00
Abdullah Atta
659e963b39 core: remove porter tokenizer for stemming
it didn't work very well. It was stemming things like "one" into "on"
2025-06-16 14:09:27 +05:00
Ammar Ahmed
63b8f7ef91 mobile: fix key missing warning in search-result item 2025-06-16 14:09:27 +05:00
Abdullah Atta
841e229866 core: fix lookup tests 2025-06-16 14:09:27 +05:00
Abdullah Atta
4098a27df0 core: update htmlparser2 2025-06-16 14:09:27 +05:00
Ammar Ahmed
918824f26b core: skip decodine entities when parsing html 2025-06-16 14:09:27 +05:00
Ammar Ahmed
83735705d2 mobile: update lockfiles 2025-06-16 14:09:27 +05:00
Ammar Ahmed
8ac6ccb701 mobile: fix android build 2025-06-16 14:09:27 +05:00
Ammar Ahmed
9ae00db676 mobile: fix ios build on rn 77 2025-06-16 14:09:27 +05:00
Ammar Ahmed
c389a1ce4d mobile: update fts5-html patch 2025-06-16 14:09:27 +05:00
Ammar Ahmed
817a58611e mobile: remove patch 2025-06-16 14:09:27 +05:00
Ammar Ahmed
bfa0f09fa0 mobile: update patches 2025-06-16 14:09:27 +05:00
Ammar Ahmed
0e461c19ed mobile: upgrade to RN 0.77.2 2025-06-16 14:09:27 +05:00
Abdullah Atta
7b289f8e58 core: sort content matches 2025-06-16 14:09:27 +05:00
Abdullah Atta
071052ce37 core: only expand matching callout & outline list items 2025-06-16 14:09:27 +05:00
Abdullah Atta
ec6ad79586 ci: fix prerelease not setting correctly on gh release 2025-06-16 14:09:27 +05:00
Abdullah Atta
96205fd5b7 web: bump version to 3.2.0-beta.6 2025-06-16 14:09:27 +05:00
01zulfi
4028a29bdb web: add support for setting a tag as default (#8060)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:09:27 +05:00
01zulfi
d812024c25 editor: remove styling for sibling elements of double spaced paragraphs (#8144)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:09:27 +05:00
Ammar Ahmed
92f4e33ac7 mobile: release new beta 2025-06-16 14:09:27 +05:00
Ammar Ahmed
ad056e0e3b mobile: skip rendering if query changed during search 2025-06-16 14:09:27 +05:00
Abdullah Atta
dc40601fb5 web: discard results if query changed during search 2025-06-16 14:09:27 +05:00
Abdullah Atta
65f3338df4 core: auto expand outline & callout in search result 2025-06-16 14:09:27 +05:00
Abdullah Atta
4f9a5cb074 core: fix phrase queries not getting highlighted 2025-06-16 14:09:27 +05:00
Abdullah Atta
eb550e95dc web: fix click on match no opening note at desired location 2025-06-16 14:09:27 +05:00
Ammar Ahmed
84dbab5bdf mobile: enable regexp in sqlite 2025-06-16 14:09:27 +05:00
Ammar Ahmed
c2aff26dfc mobile: fix tab gets focused in loop 2025-06-16 14:09:27 +05:00
Abdullah Atta
5dd9ce9f25 desktop: add SQLITE_ENABLE_REGEXP define to better-sqlite3 2025-06-16 14:09:27 +05:00
Abdullah Atta
e5998f51e9 desktop: do not gitignore *.patch 2025-06-16 14:09:27 +05:00
Abdullah Atta
538f1f1910 web: bump version to 3.2.0-beta.5 2025-06-16 14:09:27 +05:00
Abdullah Atta
9c2fa4eb30 core: use intl for showing search results count 2025-06-16 14:09:26 +05:00
Abdullah Atta
ab04b13582 core: install @notesnook/intl 2025-06-16 14:09:26 +05:00
Abdullah Atta
a6ef69905e web: use plain list instead of tree for showing search results 2025-06-16 14:09:26 +05:00
Abdullah Atta
565a2396f1 web: enable regexp in sqlite 2025-06-16 14:09:26 +05:00
Abdullah Atta
5a395aca3c desktop: enable regexp in sqlite 2025-06-16 14:09:26 +05:00
Abdullah Atta
f99ee88499 core: speed up search 2025-06-16 14:09:26 +05:00
Ammar Ahmed
dc7e5dfa50 core: fix stop-words import 2025-06-16 14:09:26 +05:00
Abdullah Atta
4f1bb994f2 core: filter out stop words in search query 2025-06-16 14:09:26 +05:00
Abdullah Atta
6357a8f3a1 web: bump version to v3.2.0-beta.4 2025-06-16 14:09:26 +05:00
Abdullah Atta
6c083bd76d ci: build desktop app on ubuntu-22-04
this fixes `Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38'
not found` error
2025-06-16 14:09:26 +05:00
Abdullah Atta
c53fbb7441 web: fix editor not jumping to search result 2025-06-16 14:09:26 +05:00
Abdullah Atta
6c28075070 web: fix various type errors causing crashes 2025-06-16 14:09:26 +05:00
Abdullah Atta
bb027c6f25 core: bring back limit in lookup 2025-06-16 14:09:12 +05:00
Ammar Ahmed
7dc5daffe8 mobile: release v3.2.0-beta.1 2025-06-16 14:09:12 +05:00
Ammar Ahmed
3e4862d768 mobile: fix note search 2025-06-16 14:09:12 +05:00
Abdullah Atta
29b0c2eeda web: use notesWithHighlighting for full notes search 2025-06-16 14:09:12 +05:00
Abdullah Atta
08e5f889f8 core: bring back old notes search 2025-06-16 14:09:12 +05:00
Ammar Ahmed
bc198b4cd7 mobile: release v3.2.0-beta.0 2025-06-16 14:09:12 +05:00
Abdullah Atta
5c71b77b98 web: bump version to 3.2.0-beta.3 2025-06-16 14:09:12 +05:00
Ammar Ahmed
5660178760 mobile: search and sorting 2025-06-16 14:08:56 +05:00
Abdullah Atta
8dac907ead web: localize search results count 2025-06-16 14:08:56 +05:00
Abdullah Atta
5b7c8eaa70 web: hide search results on editor focus & search cancel 2025-06-16 14:08:55 +05:00
Abdullah Atta
7ab4a2210a editor: make search results style toggleable 2025-06-16 14:08:55 +05:00
Abdullah Atta
c861b11c5f web: fix note not scrolling to selected match 2025-06-16 14:08:55 +05:00
Abdullah Atta
4f540dfdcb web: fix note not opening from search results if its already opened 2025-06-16 14:08:55 +05:00
Abdullah Atta
0e0add2f71 web: use same search ux for notes everywhere 2025-06-16 14:08:55 +05:00
Abdullah Atta
29edb3a3c3 web: improve search results ui 2025-06-16 14:08:55 +05:00
Abdullah Atta
ff723e5c78 core: improve prefix/suffix generation for matches 2025-06-16 14:08:55 +05:00
Abdullah Atta
ea76929c80 web: add full support for highlighting results in notes search 2025-06-16 14:08:55 +05:00
Abdullah Atta
5d4d84bded editor: add support for nn-search-result node 2025-06-16 14:08:55 +05:00
Abdullah Atta
0faf267735 core: add raw html content with highlighting in results 2025-06-16 14:08:55 +05:00
Abdullah Atta
197e95e66f web: add support for highlighting in search results 2025-06-16 14:08:55 +05:00
Abdullah Atta
9d4ae71bfe core: add console.time tracing for notes search 2025-06-16 14:08:55 +05:00
Abdullah Atta
422869c3d2 core: improve search results highlighting 2025-06-16 14:08:55 +05:00
Abdullah Atta
b7d478088b core: fix title matches not merged when query contains short tokens 2025-06-16 14:08:55 +05:00
Abdullah Atta
1827cbeb93 core: bring back search result sorting for notes 2025-06-16 14:08:55 +05:00
Abdullah Atta
66041a45f6 core: add support for highlighting search results 2025-06-16 14:08:55 +05:00
Ammar Ahmed
ccb0c858a2 mobile: fix archive count not shown 2025-06-16 14:08:55 +05:00
Ammar Ahmed
659b937852 mobile: update fts5-html lib 2025-06-16 14:08:55 +05:00
Ammar Ahmed
de48cea9eb mobile: support sorting search results 2025-06-16 14:08:55 +05:00
Abdullah Atta
404e3147b0 core: add a new migration to reindex fts5 2025-06-16 14:08:55 +05:00
Abdullah Atta
c0d64ff674 web: update sqlite3-fts5-html to v0.0.3 2025-06-16 14:08:55 +05:00
Abdullah Atta
bbcce64549 web: show date created on search results if sort by is set to date created 2025-06-16 14:08:55 +05:00
Abdullah Atta
1ca30b8a5b web: add support for sorting in search 2025-06-16 14:08:55 +05:00
Abdullah Atta
22b037ea1d core: add support for sortable search 2025-06-16 14:08:55 +05:00
01zulfi
2d74e3d4c0 editor: support ctrl/cmd+click to open internal links in new tab (#8131)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:55 +05:00
01zulfi
1be0e4790e web: add 'move to top' for sub-notebooks (#8066)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:55 +05:00
Ammar Ahmed
3770091b58 mobile: handle crash in background on device boot 2025-06-16 14:08:55 +05:00
Ammar Ahmed
0c86f11e21 mobile: fix new reminder title/headline is not autofill 2025-06-16 14:08:55 +05:00
Ammar Ahmed
73bf283fd7 mobile: add line break when appending to note 2025-06-16 14:08:55 +05:00
Ammar Ahmed
208bd13cdd mobile: fix crash in settings -> user subscription 2025-06-16 14:08:55 +05:00
01zulfi
42887a1dd5 web: persist double spaced lines config on logout (#8097)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:55 +05:00
01zulfi
0ec2f07be0 web: fix readonly note not locking when vault is locked (#8092)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:55 +05:00
01zulfi
82b70d2951 web: add support for drag/dropping notes on tab strip (#8090)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:55 +05:00
Abdullah Atta
8da961f300 web: bump version to 3.2.0-beta.2 2025-06-16 14:08:55 +05:00
Abdullah Atta
4fba380f2d core: fix `expected previously executed migration 2 to be at index 1 but
10 was found in its place.`
2025-06-16 14:08:54 +05:00
01zulfi
e1b046ec0c core: fix db.settings.getTrashCleanupInterval return type (#8076)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:54 +05:00
01zulfi
5d01159e20 web: add support for removing recents in command palette using delete key (#8069)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:54 +05:00
01zulfi
aeef53df55 web: press shift+enter to create note in quick open (#8068)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:54 +05:00
Ammar Ahmed
29433c4149 editor: fix alignment items in callout heading (#8101)
* editor: fix alignment items in callout heading

* Update packages/editor/styles/styles.css

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>

---------

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-06-16 14:08:54 +05:00
Abdullah Atta
0edac2ee9d desktop: update patched better-sqlite3-multiple-ciphers to 11.6.1 2025-06-16 14:08:54 +05:00
Abdullah Atta
4607dc3084 global: regenerate package-lock.json for theme & ui packages 2025-06-16 14:08:54 +05:00
Ammar Ahmed
41babda9b7 mobile: fix error in build 2025-06-16 14:08:54 +05:00
Ammar Ahmed
0fec38610c mobile: add option to disable auto update check 2025-06-16 14:08:54 +05:00
Abdullah Atta
3ecc43d976 misc: include @notesnook/theme package when generating flatpak sources 2025-06-16 14:08:54 +05:00
Abdullah Atta
9730560fb7 desktop: downgrade playwright 2025-06-16 14:08:54 +05:00
Abdullah Atta
6c0e51dc9d desktop: fix flatpak sources generation 2025-06-16 14:08:54 +05:00
Abdullah Atta
2a313a0026 desktop: regenerate package-lock.json 2025-06-16 14:08:54 +05:00
Abdullah Atta
5d4e60b829 web: update package-lock.json 2025-06-16 14:08:54 +05:00
Abdullah Atta
c0666d8547 global: fix dependencies version differences 2025-06-16 14:08:24 +05:00
Abdullah Atta
a5fa261e3b global: update package-lock.json 2025-06-16 14:08:24 +05:00
Ammar Ahmed
fa8aa4d88f mobile: archive notes 2025-06-16 14:08:24 +05:00
Abdullah Atta
b63be2de15 web: bump version to 3.2.0-beta.1 2025-06-16 14:08:24 +05:00
Abdullah Atta
173caf41d0 core: fix query-transformer tests 2025-06-16 14:08:24 +05:00
Ammar Ahmed
30e4f55218 mobile: add sqlite3-fts5-html module 2025-06-16 14:08:24 +05:00
Abdullah Atta
f3895f534e desktop: install sqlite3-fts5-html 2025-06-16 14:08:24 +05:00
Abdullah Atta
ea14db77de web: update wa-sqlite to use sqlite3-fts5-html for stripping html 2025-06-16 14:08:24 +05:00
Abdullah Atta
9bb48f4896 core: fix short queries search 2025-06-16 14:08:24 +05:00
Abdullah Atta
62b5cc853b core: remove @orama/stopwords 2025-06-16 14:08:24 +05:00
Abdullah Atta
90900628a2 core: strip html when searching notes
this commit also properly fixes search queries containing
words less than 3 characters in length
2025-06-16 14:08:24 +05:00
Abdullah Atta
ebf98bc652 core: fix warnings in tests 2025-06-16 14:08:24 +05:00
Ammar Ahmed
ddd3fe6ac5 mobile: update better trigram 2025-06-16 14:08:24 +05:00
Abdullah Atta
2964e7a8f0 core: fix db migration 2025-06-16 14:08:24 +05:00
Abdullah Atta
f6d1f5890a core: wrap query with invalid symbols in quotes 2025-06-16 14:08:24 +05:00
Abdullah Atta
1cc0cf19c8 core: update sqlite-better-trigram to v0.0.3 2025-06-16 14:08:24 +05:00
01zulfi
efc4f3566a core: fix trash cleanup interval setting retrieval (#8045)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:06 +05:00
01zulfi
85b7760e1e web: add more archive test cases (#8040)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:06 +05:00
Abdullah Atta
40ee0ecf47 desktop: no need to externalize @resvg/resvg-js 2025-06-16 14:08:06 +05:00
Abdullah Atta
513c9ee8a7 desktop: remove icon from native menu 2025-06-16 14:08:06 +05:00
Abdullah Atta
2aacadc24d desktop: only show native menus on macos 2025-06-16 14:08:06 +05:00
Abdullah Atta
716bb67b96 desktop: show native menus where possible 2025-06-16 14:08:06 +05:00
01zulfi
916b6a17aa web: assign accent color to links (#8041)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:08:06 +05:00
Abdullah Atta
813401ea91 desktop: update packages 2025-06-16 14:08:06 +05:00
01zulfi
70e5efbcea desktop: upgrade electron to v34.0.0 (#8038)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:07:44 +05:00
01zulfi
6c8dc223f2 web: fix automatic backup reminder setting reverting to never (#8037)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:07:44 +05:00
01zulfi
5b09528e7e web: fix focus last active tab method (#8034)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:07:44 +05:00
01zulfi
5de5ffe068 editor: improve hover link popup position (#8011)
* move it down so it doesn't block the link

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:07:44 +05:00
Abdullah Atta
1b511c8ddd web: bump version to 3.2.0-beta.0 2025-06-16 14:07:44 +05:00
Abdullah Atta
68d1a3f50e web: update @notesnook-imoporter/core to 2.2.2 2025-06-16 14:06:37 +05:00
01zulfi
74edd466d4 web: fix notestore is not defined error (#8012)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:05:54 +05:00
Abdullah Atta
34aa21790c web: update @notesnook-importer/core to 2.2.1 2025-06-16 14:05:54 +05:00
01zulfi
e7ec9e2aa3 web: add support for archiving notes (#7810)
* web: archive notes
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* global: arhives -> archived
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-06-16 14:05:54 +05:00
tarynlucia
20bbb6dd5b ui: correct grammar in vault creation message (issue #7497) (#8188)
Signed-off-by: Taryn Eng <taryn.eng@gmail.com>
2025-06-10 11:18:11 +05:00
Abdullah Atta
f937b164e9 web: update lockfile 2025-06-06 11:16:34 +05:00
Abdullah Atta
5b4e888ddd web: fix infinite rerenders on checkout screen 2025-06-06 11:01:14 +05:00
Abdullah Atta
410d983842 web: chore bump version to v3.1.1 2025-05-22 11:27:10 +05:00
Abdullah Atta
16cd92f03a web: fix flicker when programatically updating title 2025-05-22 11:20:58 +05:00
Abdullah Atta
c6ee1e6303 core: do not allow empty titles 2025-05-22 11:20:44 +05:00
SB
0f00d0e508 docs: add missing '-' in build-steps for MacOS and Linux (AppImage) 2025-05-16 10:12:24 +05:00
01zulfi
21fdc39db7 web: fix list pane not expanding (#7963)
* web: fix list pane not expanding
* fix list pane not expanding to saved width on reload
* fix list pane not expanding to saved width on collapse

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: collapse pane and set size to 0 when applicable
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-29 12:51:19 +05:00
01zulfi
bb5d5a5731 core: segregate logic for note headline and note headline title generation (#7968)
* core: segregate logic for note headline and note headline title generation
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: minor refactor note headline title
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-29 09:27:35 +05:00
Ammar Ahmed
bf5e68a82e ci: fix build ios
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-04-28 14:03:48 +05:00
Ammar Ahmed
cc7f479627 ci: fix build ios
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-04-28 13:53:21 +05:00
Ammar Ahmed
9eb183f6b5 ci: fix build ios
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-04-28 13:42:39 +05:00
Ammar Ahmed
cb29d71619 mobile: fix crash when going from trash -> search 2025-04-28 12:30:50 +05:00
Ammar Ahmed
a6120ed90f mobile: release v3.1.1 2025-04-28 12:26:46 +05:00
Ammar Ahmed
48040c955d mobile: fix crash on delete item 2025-04-28 12:26:12 +05:00
Ammar Ahmed
18b43882e1 mobile: fix crash in list 2025-04-28 11:36:48 +05:00
Ammar Ahmed
37dc409b60 mobile: fix cursor bug on ios 2025-04-28 11:36:37 +05:00
Ammar Ahmed
8ab05c5a98 mobile: fix typing in editor title input 2025-04-28 11:36:27 +05:00
Abdullah Atta
38509c66c5 web: update @notesnook-importer/core to 2.2.0 2025-04-25 14:33:32 +05:00
Abdullah Atta
fc40a05254 web: open settings with importer page instead of importer.notesnook.com 2025-04-25 14:33:32 +05:00
Ammar Ahmed
8078c3ed3c mobile: fix default font setting not followed 2025-04-25 11:51:28 +05:00
01zulfi
57280f3ebb web: make nav menu header draggable (#7985)
* web: make part of nav menu header draggable
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* Update apps/web/src/app.css

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>

* Update apps/web/src/components/navigation-menu/index.tsx

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>

---------

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>
Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
2025-04-25 11:21:16 +05:00
Ammar Ahmed
dc54644b4f mobile: remove READ_MEDIA_IMAGES permission 2025-04-24 15:29:58 +05:00
Abdullah Atta
ce31b0495d web: refresh app after import 2025-04-24 14:39:15 +05:00
Abdullah Atta
a62d4b5d4b web: move importer into web/desktop app (#7472)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-24 13:20:06 +05:00
Abdullah Atta
6f585c5e17 web: validate release track on app launch 2025-04-24 12:39:51 +05:00
Abdullah Atta
ffe7d944a6 web: use separate service worker cache for each app version 2025-04-24 12:39:51 +05:00
Abdullah Atta
bf0d6857d3 web: improve update installation 2025-04-24 12:39:51 +05:00
Ammar Ahmed
69f117bab7 mobile: fix swipe active offsets 2025-04-24 11:45:08 +05:00
Ammar Ahmed
cac945501d ci: fix release workflow
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-04-22 16:34:21 +05:00
Abdullah Atta
85a0762ccf web: update test snapshots 2025-04-22 12:37:08 +05:00
Abdullah Atta
0ce51bf481 web: fix tests 2025-04-22 12:25:39 +05:00
Abdullah Atta
6adc5065fb Merge v3.1.0 from streetwriters/beta 2025-04-22 12:06:04 +05:00
Ammar Ahmed
3b90a6d90e mobile: release v3.1.0 2025-04-22 12:00:24 +05:00
Abdullah Atta
aa5e6e7199 web: remove duplicate item in changelog 2025-04-22 11:47:16 +05:00
Abdullah Atta
ca53ec38d1 web: add more items in changelog 2025-04-22 11:46:39 +05:00
Abdullah Atta
80a3cc2fc1 web: conform notebook header with mobile ui 2025-04-22 11:42:43 +05:00
Ammar Ahmed
32c4e987dc mobile: fix crash in reminder notify sheet 2025-04-22 11:16:35 +05:00
Ammar Ahmed
ce0ef0a1cf mobile: hide keyboard when app is locked 2025-04-22 11:16:35 +05:00
Abdullah Atta
95fc9bd3d0 web: bump version to 3.1.0 2025-04-22 11:10:04 +05:00
Ammar Ahmed
fb21fef82f mobile: fix invalid tags linked to note from share menu 2025-04-21 12:34:48 +05:00
Ammar Ahmed
7760f5e898 mobile: fix sorting trash 2025-04-21 12:34:48 +05:00
Ammar Ahmed
fcc9915b04 mobile: fix focused route id incorrect 2025-04-21 12:34:48 +05:00
Abdullah Atta
8347dd5db7 common: remove limit on resolve tags & notebook in note 2025-04-21 12:26:10 +05:00
01zulfi
c2d3ba087a web: reduce snapSize of nav & list panes (#7951)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-21 11:39:30 +05:00
Abdullah Atta
e5883f179c web: fix search tests 2025-04-21 11:26:35 +05:00
Abdullah Atta
f7f1d3b3f0 web: fix crash on entering focus mode 2025-04-21 11:26:21 +05:00
Abdullah Atta
df3674f570 web: check if user is premium in behavior settings 2025-04-21 10:54:20 +05:00
01zulfi
a62beab172 web: show reset search button only when query text present (#7950)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-21 10:54:04 +05:00
01zulfi
528810155f web: fix toc bugs (#7775)
* fix duplicate headings showing in toc view
* fix negative level for some headings

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-21 10:12:53 +05:00
01zulfi
5c80b5300e web: fix notebooks tree (#7941)
* web: fix notebooks tree
* fix flicker when creating a new notebook/subnotebook
* fix crash when creating subnotebook
* fix notebook not expanding when subnotebook is created against it

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: fix duplicate notebooks in notebook search
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: consider node's children when expanding in refreshItem
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: get childNodes to check expansion in refreshItem
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-21 10:09:15 +05:00
Abdullah Atta
36c33160f4 web: make remove shortcut icon same size as shortcut link icon 2025-04-21 09:41:32 +05:00
Abdullah Atta
5cca28daa1 global: minor refactors 2025-04-21 09:39:18 +05:00
Abdullah Atta
5298ccd638 web: fix list pane not showing on navigate 2025-04-21 09:39:18 +05:00
Abdullah Atta
a5db1797e3 web: fix search not working in notebook 2025-04-21 09:39:18 +05:00
Ammar Ahmed
b1d034cf3f mobile: reload note on tab focus 2025-04-21 09:39:01 +05:00
Ammar Ahmed
4620ed0c1c mobile: fix color of tags border when note is colored 2025-04-18 13:10:36 +05:00
Ammar Ahmed
5c87b6f3b0 mobile: make sure fluid tabs panel loads 2025-04-18 13:00:56 +05:00
01zulfi
29ad783b3f intl: fix notes string (#7942)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-18 12:57:12 +05:00
01zulfi
3eae13e237 web: wrap notice text (#7938)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-18 12:55:58 +05:00
Ammar Ahmed
ee222b6302 mobile: move blue bar to left 2025-04-18 12:02:54 +05:00
Abdullah Atta
ae795a837d web: move the opened note indicator to the left of note item 2025-04-17 13:28:49 +05:00
Abdullah Atta
0396264842 web: show provider subtitle if pro plan is canceled 2025-04-17 13:17:17 +05:00
Abdullah Atta
e9fcd16fb5 web: hide subscription provider description on basic plan 2025-04-17 13:03:17 +05:00
01zulfi
944fcf0567 web: improve diff viewing (#7936)
* add close button to quit diff viewer
* allow property pane to open with only note history list

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-17 12:57:40 +05:00
01zulfi
251cc08a7d web: don't close tab on trash if note is in tab history (#7933)
* don't close tab if note was present in tab history

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-17 09:56:33 +05:00
Abdullah Atta
d2719123eb web: fix editor overflow on small screens 2025-04-16 13:27:31 +05:00
Abdullah Atta
88c0e2a2ce web: fix minor layout issue in note list when in compact mode 2025-04-16 12:24:45 +05:00
Abdullah Atta
b4366058dd web: fix flicker when typing in multiline title 2025-04-16 12:24:24 +05:00
01zulfi
b103cc09f2 core: fix notes search results having mismatched references (#7930)
* ids and items had different orders

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-15 10:37:47 +05:00
Abdullah Atta
d35c0be116 vericrypt: update instructions according to latest notesnook version 2025-04-14 14:00:49 +05:00
Ammar Ahmed
c9cf15e519 mobile: fix $headline$ format title not updating in realtime 2025-04-11 11:31:07 +05:00
Ammar Ahmed
408ae26b76 mobile: fix color scope 2025-04-11 10:51:04 +05:00
Abdullah Atta
3159d8fcc5 web: add accented bottom border on opened note 2025-04-11 10:49:31 +05:00
Ammar Ahmed
b976788f07 mobile: release v3.1.0-beta.4 2025-04-11 10:10:40 +05:00
Ammar Ahmed
a0311c1516 mobile: add bottom line to show note being edited 2025-04-11 09:20:10 +05:00
01zulfi
e17351f702 editor: disable spellcheck for links (#7911)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-11 09:12:43 +05:00
Ammar Ahmed
ffafae9970 mobile: fix color of section header 2025-04-10 14:38:22 +05:00
Ammar Ahmed
fa3d993ffd mobile: load new note always 2025-04-10 11:52:51 +05:00
01zulfi
2b7b8d526e web: don't close pinned tab on ctrl+w (#7805)
* web: don't close pinned tab on ctrl+w
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: focus previously activated tab if ctrl+w on pinned tab
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:51:40 +05:00
Ammar Ahmed
270394dc36 mobile: add missing break; 2025-04-10 10:29:27 +05:00
Ammar Ahmed
552e8f50b7 mobile: add support for changin sidebar + default home page 2025-04-10 10:29:27 +05:00
Abdullah Atta
b6d0d124fd web: replace switch with array.find to be more reliable 2025-04-10 10:29:27 +05:00
Abdullah Atta
7e3abc5819 web: add support for setting default sidebar tab 2025-04-10 10:29:27 +05:00
Abdullah Atta
6b3065617d ui: leave space for icon in menu button even if no icon 2025-04-10 10:29:26 +05:00
Abdullah Atta
9752ccf7cb intl: add strings for homepage 2025-04-10 10:29:26 +05:00
Abdullah Atta
ad1921a938 web: allow setting any thing in the sidebar as homepage 2025-04-10 10:29:26 +05:00
Ammar Ahmed
ed2201d525 mobile: catch error when moving file fails after download 2025-04-10 10:29:26 +05:00
Abdullah Atta
09b9719a3f web: bump version to 3.1.0-beta.6 2025-04-10 10:29:26 +05:00
Abdullah Atta
673ea6da86 editor: remove fixed line height 2025-04-10 10:29:26 +05:00
Ammar Ahmed
77d81ecc12 mobile: fix auto theme switching 2025-04-10 10:29:26 +05:00
Ammar Ahmed
00c38b6bcc mobile: fix last heading not shown in toc 2025-04-10 10:29:26 +05:00
Ammar Ahmed
24d9568c5d editor: add missing node types in editor 2025-04-10 10:29:26 +05:00
01zulfi
3b89b0c436 web: fix command palette not scrolling (#7881)
* Remove overflow: hidden styling from GroupedVirtuoso

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:29:26 +05:00
Abdullah Atta
940a3de130 web: fix note counts not updating in tags list 2025-04-10 10:29:26 +05:00
Abdullah Atta
81b291ae37 web: fix note counts not updating in notebooks list 2025-04-10 10:29:26 +05:00
01zulfi
f5ad31f0a3 web: fix search result note item not updating (#7878)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:29:26 +05:00
Abdullah Atta
59d4b92839 web: fix item counts not updating in sidebar 2025-04-10 10:29:26 +05:00
Abdullah Atta
530c864d10 web: fix filter input removed when no notebooks in list 2025-04-10 10:29:26 +05:00
Ammar Ahmed
fae6bf8f43 mobile: bug fixes 2025-04-10 10:29:26 +05:00
Ammar Ahmed
c395bc829f mobile: fix orientation check 2025-04-10 10:29:26 +05:00
Ammar Ahmed
19ee33ec3a mobile: fix input padding in side menu on ios 2025-04-10 10:29:26 +05:00
Ammar Ahmed
64ab6a3436 mobile: release v3.1.0-beta.3 2025-04-10 10:29:26 +05:00
Abdullah Atta
b758cd28e5 web: bump version to 3.1.0-beta.5 2025-04-10 10:29:26 +05:00
Abdullah Atta
db8e21f83b web: remove SharedWorker requirement for multi tab sqlite driver 2025-04-10 10:29:26 +05:00
Abdullah Atta
c23f31f284 web: use service worker for cross-tab communication only as a fallback
This commit basically reverts 1b63b2dccf.
Using service worker for this by default is a bad idea because:

1. It takes some time for the service worker to be installed and ready
which slows down first launch significantly
2. Service worker is not as reliable when updating from version to
version

We can, however, use it as a fallback i.e for devices that don't yet
support shared worker.
2025-04-10 10:29:26 +05:00
Ammar Ahmed
84d5420b51 mobile: update intl 2025-04-10 10:29:26 +05:00
Ammar Ahmed
02bdc61543 intl: update po files 2025-04-10 10:29:26 +05:00
Ammar Ahmed
71811ebf0d mobile: focus keyboard if biometry is disabled 2025-04-10 10:29:00 +05:00
Ammar Ahmed
b07d7e4f3f mobile: restore pinned notes on reboot 2025-04-10 10:29:00 +05:00
Ammar Ahmed
b141907066 mobile: cleanup 2025-04-10 10:28:59 +05:00
Ammar Ahmed
a0b46d49d6 mobile: update deps 2025-04-10 10:28:59 +05:00
Ammar Ahmed
85386c945f mobile: update locales 2025-04-10 10:28:59 +05:00
Ammar Ahmed
9de1373bdd mobile: bump version 2025-04-10 10:28:59 +05:00
Ammar Ahmed
6f4c35672d mobile: fix virtualization errors 2025-04-10 10:28:59 +05:00
Ammar Ahmed
ed32552155 mobile: run sync when necessary 2025-04-10 10:28:59 +05:00
Ammar Ahmed
88858308fb mobile: fix slow launch 2025-04-10 10:28:59 +05:00
Ammar Ahmed
78f875ab0f mobile: fix item counts not showing in side menu 2025-04-10 10:28:59 +05:00
Ammar Ahmed
9104c64170 mobile: fix minor bugs in tablets 2025-04-10 10:28:59 +05:00
Ammar Ahmed
aabb33a435 mobile: cleanup 2025-04-10 10:28:59 +05:00
Ammar Ahmed
ad43591f2c mobile: fix tablet rotation 2025-04-10 10:28:59 +05:00
Ammar Ahmed
8bc779d882 mobile: fix tablet bugs 2025-04-10 10:28:59 +05:00
Ammar Ahmed
193bddbe9e mobile: fix login ui on tablets 2025-04-10 10:28:59 +05:00
Ammar Ahmed
e03d394555 mobile: add notebooks button in notebook screen to view subnotebooks 2025-04-10 10:28:59 +05:00
Ammar Ahmed
72e4116773 mobile: fix crash when clicking sort button in trash 2025-04-10 10:28:59 +05:00
Ammar Ahmed
9b682163db mobile: fix ui 2025-04-10 10:28:59 +05:00
Ammar Ahmed
076312da7a mobile: fix sorting sheet in reminders 2025-04-10 10:28:59 +05:00
Ammar Ahmed
856a9b16e9 mobile: do not call scroll into view on focus 2025-04-10 10:28:59 +05:00
Ammar Ahmed
9de4e3eba6 mobile: change item positions 2025-04-10 10:28:59 +05:00
Ammar Ahmed
d90d263b04 mobile: fix check mark color in dialog 2025-04-10 10:28:59 +05:00
Ammar Ahmed
0170e51843 mobile: fix logout button not working in user sheet 2025-04-10 10:28:59 +05:00
Ammar Ahmed
b7f5a5dc66 mobile: minor improvements 2025-04-10 10:28:59 +05:00
Ammar Ahmed
20866ab2f5 mobile: add missing check when dragging to end 2025-04-10 10:28:59 +05:00
Ammar Ahmed
4efc13a602 mobile: fix colors 2025-04-10 10:28:59 +05:00
Ammar Ahmed
96303f5d0f mobile: update rspack to v1.2.7 2025-04-10 10:28:59 +05:00
Ammar Ahmed
020c9b254e mobile: use re.pack v5 with rspack 2025-04-10 10:28:59 +05:00
Ammar Ahmed
24c0f2f409 ci: update to actions/cache@v3 2025-04-10 10:28:59 +05:00
Ammar Ahmed
1b608f01ac ci: release app to beta track on play 2025-04-10 10:28:59 +05:00
Ammar Ahmed
fd98ab0a64 mobile: release beta 2 2025-04-10 10:28:59 +05:00
Ammar Ahmed
3d1dc879e0 mobile: fix linking a note 2025-04-10 10:28:59 +05:00
Ammar Ahmed
16253b8bf7 mobile: fix tree filtering in move notebook 2025-04-10 10:28:59 +05:00
Ammar Ahmed
3dba3079f7 mobile: fix items hides behind selection bar 2025-04-10 10:28:59 +05:00
Ammar Ahmed
1fe4ae199f mobile: cleanup 2025-04-10 10:28:59 +05:00
Ammar Ahmed
55842f1265 mobile: fix breadcrumbs 2025-04-10 10:28:59 +05:00
Ammar Ahmed
6644940115 mobile: fix properties not opening 2025-04-10 10:28:59 +05:00
Ammar Ahmed
dfd0dc72b8 mobile: fix ui 2025-04-10 10:28:59 +05:00
Ammar Ahmed
d7c4b9c776 mobile: fix toggle switch color in settings 2025-04-10 10:28:59 +05:00
Ammar Ahmed
728553115c mobile: fix input border color 2025-04-10 10:28:59 +05:00
Ammar Ahmed
6ee0d28a8b mobile: fix separator color 2025-04-10 10:28:59 +05:00
Ammar Ahmed
ead23c36c6 mobile: fix sidemenu colors 2025-04-10 10:28:59 +05:00
Ammar Ahmed
e62891b9c0 mobile: fix ui 2025-04-10 10:28:59 +05:00
Ammar Ahmed
9483c63cdc mobile: fix zindex 2025-04-10 10:28:59 +05:00
Ammar Ahmed
3eab773fd1 mobile: fix beta release getting update dialog prompt 2025-04-10 10:28:59 +05:00
Ammar Ahmed
30dd0e8657 mobile: fix loading locales in release 2025-04-10 10:28:59 +05:00
Ammar Ahmed
5d05df7f83 mobile: minor ui fixups 2025-04-10 10:28:59 +05:00
Ammar Ahmed
ebf80aacc5 mobile: minor ui fixes 2025-04-10 10:28:59 +05:00
Ammar Ahmed
55c6be4622 ci: add beta release workflow 2025-04-10 10:28:59 +05:00
Ammar Ahmed
8f1545916f mobile: ui updates 2025-04-10 10:28:59 +05:00
Ammar Ahmed
7f05043e03 mobile: fix back navigation bug 2025-04-10 10:28:59 +05:00
Ammar Ahmed
e663655924 mobile: fix editor state not restored sometimes on app launch 2025-04-10 10:28:59 +05:00
Ammar Ahmed
2fab9dc6f1 mobile: fix task list title rendered above status bar in editor 2025-04-10 10:28:59 +05:00
Ammar Ahmed
aba79c11d3 mobile: fix selection in sidebar on app launch 2025-04-10 10:28:59 +05:00
Ammar Ahmed
4e897dde47 mobile: fix various bugs 2025-04-10 10:28:59 +05:00
Ammar Ahmed
3375439e35 mobile: refactor and fix bugs 2025-04-10 10:28:59 +05:00
Ammar Ahmed
89dce0b655 mobile: improve app launch perf 2025-04-10 10:28:59 +05:00
Ammar Ahmed
ff53ea322d mobile: refactor some sheets into screens 2025-04-10 10:28:59 +05:00
Ammar Ahmed
d6f6bc2c5b mobile: add test-id 2025-04-10 10:28:59 +05:00
Ammar Ahmed
905080e743 mobile: refactor 2025-04-10 10:28:59 +05:00
Ammar Ahmed
d33f3c4769 mobile: use custom cache key for persist store 2025-04-10 10:28:59 +05:00
Ammar Ahmed
b6a1c9b73b mobile: minor refactor 2025-04-10 10:28:59 +05:00
Ammar Ahmed
20823f103c mobile: refactor 2025-04-10 10:28:59 +05:00
Ammar Ahmed
25a5d3277b mobile: refactor 2025-04-10 10:28:59 +05:00
Ammar Ahmed
72a80c8f57 mobile: fix moving and updating notebooks 2025-04-10 10:28:59 +05:00
Ammar Ahmed
a082c7d33a mobile: small ui improvements and perf fixes 2025-04-10 10:28:59 +05:00
Ammar Ahmed
99cac4b041 mobile: make skip login work properly 2025-04-10 10:28:59 +05:00
Ammar Ahmed
f804d7848f mobile: more fixes 2025-04-10 10:28:59 +05:00
Ammar Ahmed
446841e0f5 mobile: fix selected item ui 2025-04-10 10:28:59 +05:00
Ammar Ahmed
1d347fe26c mobile: fix bugs 2025-04-10 10:28:58 +05:00
Ammar Ahmed
abfa5d719a mobile: fix missing delete button in trash 2025-04-10 10:28:58 +05:00
Ammar Ahmed
32bc6ed328 mobile: fix pro button 2025-04-10 10:28:58 +05:00
Ammar Ahmed
ea2bc359cb mobile: enable testing in debug build 2025-04-10 10:28:58 +05:00
Ammar Ahmed
c540cb0fe4 mobile: enable debug tests 2025-04-10 10:28:58 +05:00
Ammar Ahmed
1642495754 mobile: cleanup 2025-04-10 10:28:58 +05:00
Ammar Ahmed
b034a59422 mobile: fix error set state in render 2025-04-10 10:28:58 +05:00
Ammar Ahmed
2486c055e4 mobile: add pro button in side-menu 2025-04-10 10:28:58 +05:00
Ammar Ahmed
79b43b1058 mobile: fix sidemenu padding top 2025-04-10 10:28:58 +05:00
Ammar Ahmed
b30fa436bd mobile: fix minor bugs 2025-04-10 10:28:58 +05:00
Ammar Ahmed
9e79a311cf mobile: fix typo 2025-04-10 10:28:58 +05:00
Ammar Ahmed
2f695d0b34 mobile: make all e2e tests pass 2025-04-10 10:28:58 +05:00
Ammar Ahmed
952a484994 mobile: minor cleanup 2025-04-10 10:28:58 +05:00
Ammar Ahmed
74b5e42492 mobile: finalize sidebar and list revamp 2025-04-10 10:28:58 +05:00
Ammar Ahmed
7f8dc88c5a mobile: refactor goToPage 2025-04-10 10:28:58 +05:00
Ammar Ahmed
c9a9b8dffb mobile: fix tsc errors 2025-04-10 10:28:58 +05:00
Ammar Ahmed
b315a834c2 mobile: ui redesign 2025-04-10 10:28:58 +05:00
Abdullah Atta
8f84c85c23 web: fix tests 2025-04-10 10:28:58 +05:00
Abdullah Atta
707ff935fe web: bump version to 3.1.0-beta.4 2025-04-10 10:28:58 +05:00
Abdullah Atta
39af23b349 web: close expanded nav pane on navigation 2025-04-10 10:28:58 +05:00
Abdullah Atta
318b95beec web: force list pane to be visible when reveal item in list is called 2025-04-10 10:28:58 +05:00
Abdullah Atta
174bb9a935 web: improve item flash animation when revealing item in list
this also fixes a potential memory leak due to event listener not unsubscribing
2025-04-10 10:28:58 +05:00
Abdullah Atta
f0fd20051e Revert "web: fix list pane not expanding (#7758)"
This reverts commit fd9db3605d.
2025-04-10 10:28:58 +05:00
Abdullah Atta
e3d72bd271 web: fix active tab background 2025-04-10 10:28:58 +05:00
Abdullah Atta
4dcd0cd356 web: fix Service worker did not respond. error 2025-04-10 10:28:58 +05:00
Abdullah Atta
e3793e67aa web: fix app not starting up on firefox 2025-04-10 10:28:58 +05:00
01zulfi
3f344c7249 web: don't remove properties pane when editor is refocused (#7780)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:58 +05:00
Abdullah Atta
8a1af7d01f intl: update strings 2025-04-10 10:28:58 +05:00
Abdullah Atta
117fc44f00 web: replace shared worker with service worker for sqlite 2025-04-10 10:28:58 +05:00
01zulfi
703456b808 web: collapse hovered navbar when item is clicked (#7771)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:58 +05:00
Abdullah Atta
b90cc90ea8 web: release v3.1.0-beta.3 2025-04-10 10:28:57 +05:00
Ammar Ahmed
45730e2a07 web: cleanup 2025-04-10 10:28:57 +05:00
01zulfi
c0272b9755 web: fix list pane not expanding (#7758)
* web: fix list pane not expanding
* when a nav item was clicked, list pane was removed entirely which made it difficult to re-open it, now when nav item is clicked we manually collapse, expand, or reset the list pane
* open list pane if 'reveal in list' is called
* open list pane if navigated to a different nav item

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: clicking on nav item should not collapse list pane
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: collapse hovered nav pane when notebook/tag item clicked
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:57 +05:00
01zulfi
a27a8804c4 web: restore notebook crumbs (#7765)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:57 +05:00
Ammar Ahmed
073d23aed3 web: bump version to 3.1.0-beta.2 for desktop and web 2025-04-10 10:28:57 +05:00
Abdullah Atta
7d9a795a1c web: make editor note properties work like toc 2025-04-10 10:28:57 +05:00
Abdullah Atta
8359fb8919 web: slightly improve add note button ui 2025-04-10 10:28:57 +05:00
Abdullah Atta
7c0ffff93f web: bump version to 3.1.0-beta.1 2025-04-10 10:28:57 +05:00
Abdullah Atta
46d2ea508c desktop: set publish channel to beta for beta builds 2025-04-10 10:28:57 +05:00
Abdullah Atta
fb48faa3af web: minor ui fixes 2025-04-10 10:28:57 +05:00
Abdullah Atta
048bb36165 theme: fix button hover colors 2025-04-10 10:28:57 +05:00
Abdullah Atta
0f01a03587 web: make notesnook branding a bit smaller 2025-04-10 10:28:57 +05:00
Abdullah Atta
fe17a6e9da web: minor ui changes and fixes 2025-04-10 10:28:57 +05:00
Abdullah Atta
a17414dd89 web: fix theme not persisting 2025-04-10 10:28:57 +05:00
Abdullah Atta
5d3f2182f0 web: collapse sidebar on navigate if sidebar is temporarily expanded 2025-04-10 10:28:57 +05:00
Abdullah Atta
03cd320665 desktop: explicitly deny geolocation permission to electron process 2025-04-10 10:28:57 +05:00
Abdullah Atta
2415ede4fa web: fix scrollbar styling in sidebar 2025-04-10 10:28:57 +05:00
Abdullah Atta
844efd5958 web: reset search on navigate 2025-04-10 10:28:57 +05:00
Abdullah Atta
4ba88b6f03 web: fix expand sidebar button not working 2025-04-10 10:28:57 +05:00
Abdullah Atta
d17d0c190b web: always show "X" button if there is query in search input 2025-04-10 10:28:57 +05:00
Abdullah Atta
beec9fab22 web: bump version to 3.1.0-beta.0 2025-04-10 10:28:57 +05:00
Abdullah Atta
710b3c412f web: use virtualized tree for rendering toc 2025-04-10 10:28:57 +05:00
Abdullah Atta
6bf31bf0ea editor: fix toc level mapping 2025-04-10 10:28:57 +05:00
Abdullah Atta
2f8bef5f3e web: add support for pre-expanding tree nodes on creation 2025-04-10 10:28:57 +05:00
Abdullah Atta
2dcf886322 web: do not collapse child nodes when collapsing parent 2025-04-10 10:28:57 +05:00
Abdullah Atta
0a362e9ce7 web: fix all tests 2025-04-10 10:28:57 +05:00
Abdullah Atta
e186615163 global: update ui 2025-04-10 10:28:57 +05:00
01zulfi
7abf19071d web: fix faulty useEffect
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:57 +05:00
01zulfi
30838749e1 web: refactor props for Tags component
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:57 +05:00
01zulfi
06df49d5d7 web: separate component for tab items in sidebar
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:57 +05:00
01zulfi
2c5e1f611b web: new sidebar ui
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-10 10:28:56 +05:00
01zulfi
0cc33f7a81 core: fix title generation when title format is set to $headline$ (#7739)
* core: generate headline title until user edit && update headline extraction
* when title format is set to $, keep generating headline title until user manually edits the title
* extract headline from first html tag with content rather than first paragraph

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: extract headline up to 150 chars regardless of html tag
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: improve note headline title code quality
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* core: remove HEADLINE_CHARACTER_LIMIT constant
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: only update title input if note title changes

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-04-10 10:17:45 +05:00
01zulfi
8a431fb79b web: add publish:update item in note menu options (#7664)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-07 11:21:12 +05:00
01zulfi
12cfc0dafd web: clear query when search is closed (#7700)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-04-07 11:19:49 +05:00
Ammar Ahmed
93c8a1827c editor: increase drop-cursor width 2025-03-28 14:25:59 +05:00
Ammar Ahmed
ca60eda7f2 editor: fix checklist item size 2025-03-28 14:25:59 +05:00
Ammar Ahmed
c22c51791e editor: fix task-list item alignment 2025-03-28 14:25:59 +05:00
01zulfi
d5a719c9f6 editor: font ligatures for common symbols (#7800)
* editor: font ligatures for common symbols
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* Update packages/editor/src/extensions/font-ligature/font-ligature.ts

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>

---------

Signed-off-by: Abdullah Atta <thecodrr@protonmail.com>
Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
2025-03-28 14:13:02 +05:00
Abdullah Atta
904c452cfe web: bump version to v3.0.32 2025-03-28 12:45:32 +05:00
Ammar Ahmed
2078ef9081 editor: do not use look behind regex (#7809) 2025-03-28 12:34:26 +05:00
Ammar Ahmed
fc9ee5bee1 mobile: release v3.0.34 2025-03-28 12:32:42 +05:00
01zulfi
d27595cfd9 web: pinned tab fixes (#7692)
* web: pinned tab fixes
* fix pinned tab not working after page reload
* fix note opening in new tab even if its tab is present when active note is pinned

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: fix focusing pinned tab after reloading app

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-03-27 16:00:50 +05:00
Abdullah Atta
b618386e6b web: clear caches on switching release track 2025-03-26 15:30:12 +05:00
Abdullah Atta
2e79b2c7a2 core: run trash cleanup after sync completion 2025-03-26 13:44:16 +05:00
01zulfi
4e4990bd98 web: add toggle focus mode command (#7736)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-25 12:09:19 +05:00
Abdullah Atta
4c8a44353a web: bump version to 3.0.31 2025-03-24 14:32:27 +05:00
Abdullah Atta
7dd8b13bc8 web: fix tests 2025-03-24 14:32:27 +05:00
01zulfi
e1aa3b59be web: add reset zoom button (#7750)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-24 12:36:01 +05:00
01zulfi
d79888793a web: mask email in session expired page description (#7783)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-24 12:34:57 +05:00
Abdullah Atta
b56e381022 web: fix editor cursor jumping to start on creating a new note 2025-03-24 12:28:30 +05:00
Ammar Ahmed
15b32b312d ci: use actions/cache v3
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-03-17 16:39:44 +05:00
Ammar Ahmed
6a0a00f126 ci: use actions/checkout v3
Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
2025-03-17 16:38:25 +05:00
Ammar Ahmed
9876c2ef6d mobile: bump version 2025-03-17 16:34:07 +05:00
Ammar Ahmed
fba29e3c80 mobile: fix sharing image from ios share sheet 2025-03-17 16:25:08 +05:00
Ammar Ahmed
b8275f5a3f Fix creating backups ios (#7777)
* mobile: fix copying file from app group during backup

* mobile: catch and show error if copying file fails during backup
2025-03-17 16:24:04 +05:00
01zulfi
b7e8365117 web: increase reminder dialog width (#7767)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-14 12:24:21 +05:00
Ammar Ahmed
8df7b5c56b web: fix editor rerendering on session type change from new to default (#7759)
* web: fix editor rerendering on session type change from new to default

* web: fix multiple notes created on typing new note
2025-03-14 11:57:16 +05:00
01zulfi
04519d1db7 editor: fix scroll into view when used by toc (#7764)
* add scroll-margin-top: 35px

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-14 11:55:55 +05:00
Ammar Ahmed
7b808bea0b web: fix ui flicker in editor when creating new note (#7761) 2025-03-12 13:16:13 +05:00
Ammar Ahmed
2878f1d9cf editor: ensure consistent gap between heading and first element in callout (#7757) 2025-03-12 13:11:14 +05:00
Ammar Ahmed
651f6011b8 desktop: release v3.0.30 2025-03-06 15:56:02 +05:00
Ammar Ahmed
f17cbb5aa3 web: release v3.0.30 2025-03-06 15:55:51 +05:00
Ammar Ahmed
a2a4a165a5 editor: fix item margins in editor (#7744) 2025-03-06 15:49:51 +05:00
Ammar Ahmed
9c7ff38f99 editor: fix image padding in readonly mode (#7743)
* editor: fix image padding in readonly mode

* editor: fix class name
2025-03-06 15:46:03 +05:00
01zulfi
76f27adbea web: command palette fixes (#7669)
* web: command palette fixes
* core: add getIdentifier in fuzzy; this allows the caller to provide a custom indentifier instead of relying on id field in the items list
* fix crashing when hitting enter when no results found
* fix commands list not refreshing when removing recent command
* fix recent command not showing up in the commands list
* fix searched commands showing up under wrong group label

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: improve getCommandById && improve remove from recents logic
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

---------

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-04 13:11:26 +05:00
01zulfi
85a5f38590 web: adding notes in tag/color should also add it to default notebook (#7732)
* when default notebook is set, adding notes in tag and color context should also add that note to default notebook
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-04 13:00:43 +05:00
01zulfi
dcdd876a4c web: align note title with rest of ui (#7731)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-04 09:54:57 +05:00
Abdullah Atta
d055908809 ci: build in beta mode when release track is beta 2025-03-01 15:31:28 +05:00
Abdullah Atta
89806148b2 ci: run apt-get update before installing flatpak etc 2025-03-01 14:55:39 +05:00
Abdullah Atta
433be12b2b desktop: hide release track selector for flatpak/snap builds 2025-03-01 14:49:38 +05:00
Abdullah Atta
9ff235e767 ci: change working-directory to ./apps/web before deployment 2025-03-01 13:19:18 +05:00
Abdullah Atta
9b6f7ff225 web: fix release track switching 2025-03-01 13:13:25 +05:00
Abdullah Atta
99f97ac565 web: fix release-track cookie not getting set 2025-03-01 11:41:37 +05:00
Abdullah Atta
7e598098fe ci: add support for publishing web app beta 2025-03-01 11:15:03 +05:00
Abdullah Atta
02afbf6c90 web: only redirect to beta if env.BETA_BASE_URL is present 2025-03-01 11:07:40 +05:00
Abdullah Atta
b464fafc18 web: bump version to 3.0.29 2025-03-01 11:05:26 +05:00
Abdullah Atta
e06320108b web: fix gap between title and editor on entering focus mode 2025-03-01 10:50:38 +05:00
Abdullah Atta
a377b13e2b editor: fix single & double spaced paragraph margins 2025-03-01 10:40:27 +05:00
Abdullah Atta
4728212531 core: fix tags & notebooks search 2025-03-01 10:23:58 +05:00
01zulfi
71fc2a3cac web: add keyboard shortcut for opening settings (#7701)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-01 09:31:23 +05:00
01zulfi
303282624e editor: hide hover popup if right click occurs before popup is shown (#7687)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-01 09:23:26 +05:00
01zulfi
2ca02937df editor: open internal links in new tab for middle mouse click (#7688)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-03-01 09:22:47 +05:00
Abdullah Atta
00b62df2e8 desktop: fix tests on windows 2025-02-28 18:03:05 +05:00
Abdullah Atta
6d377ded9a desktop: set APPIMAGE to true when testing linux to allow auto updater to work 2025-02-28 18:03:05 +05:00
Abdullah Atta
087c404225 desktop: fix tests on linux 2025-02-28 18:03:05 +05:00
Abdullah Atta
4932763468 desktop: extend test timeout to 2 minutes 2025-02-28 18:03:05 +05:00
Abdullah Atta
abcc19d5da desktop: skip tsc build during tests 2025-02-28 18:03:05 +05:00
Abdullah Atta
f1ce1e9b60 desktop: enable staging mode during tests to disable code signing 2025-02-28 18:03:05 +05:00
Abdullah Atta
5a6f99a41b desktop: double test timeout on CI 2025-02-28 18:03:05 +05:00
Abdullah Atta
1862802052 desktop: pass --config arg to electron-builder everywhere 2025-02-28 18:03:05 +05:00
Abdullah Atta
1adddbdb4c desktop: add more tests for auto updater 2025-02-28 18:03:05 +05:00
Abdullah Atta
15f4f2accb desktop: add support for switching release tracks
this also includes relevant tests for the auto updater
2025-02-28 18:03:05 +05:00
Abdullah Atta
725f3c3522 web: add support for switching release tracks
we make use of Cloudflare Pages Functions to redirect to the beta site
if a certain cookie is present. This ensures seamless switching between
release tracks.
2025-02-28 18:03:05 +05:00
01zulfi
efa73a1c32 web: update toast position (#7665)
* current position would overlap slightly with the status bar, this commit moves the toast a little higher so it doesn't overlap
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-25 13:21:57 +05:00
Abdullah Atta
00250c6669 web: bump version to v3.0.28 2025-02-25 11:41:46 +05:00
01zulfi
d11afda1a8 web: fix attachment table height for few items (#7662)
* assign min-height to container
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-25 11:39:44 +05:00
Abdullah Atta
1350784c33 editor: allow other permissions to iframe embeds 2025-02-25 11:00:52 +05:00
Abdullah Atta
1852a216a2 editor: fix Applying mismatched transaction errors on editor load
fixes #7656
2025-02-25 11:00:31 +05:00
Abdullah Atta
422c2492c4 web: fix react error on feature dialog 2025-02-25 10:10:06 +05:00
Abdullah Atta
c9c72741b3 desktop: fix app icon size on macos 2025-02-24 12:58:44 +05:00
Abdullah Atta
99dbcaff7d web: make tabs tests more resilient 2025-02-24 12:19:21 +05:00
Abdullah Atta
8d83f5474d web: fix editor tests 2025-02-24 11:53:51 +05:00
Abdullah Atta
a912a1a22e web: fix invalid usage of sessionId as noteId 2025-02-24 11:53:41 +05:00
Abdullah Atta
ea7afbe93e web: fix invalid usage of closeSessions 2025-02-24 11:53:18 +05:00
Abdullah Atta
7b2a8c3e20 web: fix executing recent command does nothing
fixes #7650
2025-02-24 11:16:38 +05:00
Abdullah Atta
911adfc151 web: fix reloading app loses the expanded size of a collapsed pane 2025-02-24 11:11:03 +05:00
Abdullah Atta
23f710856e web: fix collapsed pane cannot be resized 2025-02-24 11:10:37 +05:00
Abdullah Atta
7f6274821c web: fix title auto resizing on firefox 2025-02-24 10:48:11 +05:00
Abdullah Atta
4700843517 web: fix note content loading in editor
this broke when we migrated to the new tabs logic and was fixed by
using `editor.updateContent` which is significantly slower than
creating a new editor/editor view. This commit fixes that by
depending on the `getContent` function which changes whenever the
content is changed in a session handling all kinds of different
cases.
2025-02-24 10:38:37 +05:00
Abdullah Atta
8823054227 editor: disable suspiciousAttributes check in prosemirror
this check causes a significant slowdown when loading notes with huge
amount of nodes as it recursively scans the attributes of all the
nodes. Disabling this speeds up loading significantly but might
cause issues in some special cases. Fortunately, this error has never
been triggered by anyone in Notesnook. I wouldn't recommend anyone to
disable this without first testing it properly as it might expose you
to cross site scripting attacks.
2025-02-24 10:36:18 +05:00
Abdullah Atta
7c63a3e004 editor: optimize @tiptap/core
this optimizes the following functions in @tiptap/core:

- `mergeAttributes`
- `getRenderedAttributes`
- `injectExtensionAttributesToParseRule`

These functions stood out the most in the profiler.
2025-02-24 10:33:13 +05:00
Abdullah Atta
2a59154268 editor: improve note loading performance
this commit gets rid of the custom logic when loading a new note in
the same editor. Instead, we just create a new view in the same
editor which seems to be much faster then just replacing the state
of the old view.
2025-02-24 10:31:35 +05:00
Abdullah Atta
ed15d53484 editor: fix block-id extension slowing down pasting
we were using `tr.setNodeMarkup` which created a new step for each
node. If there were a lot of nodes, it'd cause an exponential slow
down. As an alternative, we are directly updating the node's blockId
attribute which is against the spec but it works and it's fast.
2025-02-22 09:42:33 +05:00
Abdullah Atta
fc8a4bb55d ci: run desktop build in ubuntu-24.04 2025-02-21 15:07:53 +05:00
Abdullah Atta
dd1c1bb11d ci: use apt-get with --quiet 2025-02-21 15:03:10 +05:00
Abdullah Atta
3ffbad5727 theme-builder: make theme builder compile again 2025-02-21 14:52:38 +05:00
Abdullah Atta
207ae39d13 ci: run web tests on 5 shards (instead of 4) 2025-02-21 14:34:02 +05:00
Abdullah Atta
ae141ac9c5 web: fix control + alt + right/left arrow tests 2025-02-21 14:26:50 +05:00
Abdullah Atta
40f058b14b web: bump version to v3.0.27 2025-02-21 13:13:53 +05:00
Abdullah Atta
865c9f3e32 web: remove check that compares note title with session title 2025-02-21 13:10:27 +05:00
Abdullah Atta
26df9bfdd8 web: fix editing a note and switching immediately to another note and editing the title shouldn't overlap both notes test 2025-02-21 13:04:53 +05:00
Abdullah Atta
1e52e01fb8 web: fix debug strings showing in production builds 2025-02-21 12:39:44 +05:00
01zulfi
5fece5faaa web: fix note title sync if note is opened in multiple tabs (#7636)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-21 12:36:07 +05:00
01zulfi
d7fdaf6c46 ui: fix submenu positioning (#7632)
position.top wasn't calculated correctly for the out of screen height case for non-mouse target

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-21 12:34:10 +05:00
Abdullah Atta
8e1faf9f60 web: command palette improvements
This includes:

- Full refactoring of the command palette
- Remove command transformation logic for dynamic
commands
- Replace note, notebook & tag specific commands
with a simple menu item -> command conversion logic
- Cached filtering (with notes, notebooks etc.
refetching on sync)
- Add support for fuzzy searching on command group
- Modernize UI to look more like a command palette and less like a dialog
2025-02-21 12:29:25 +05:00
Abdullah Atta
9dce39b32d core: reuse fuzzy search logic 2025-02-21 12:29:25 +05:00
Abdullah Atta
80a0b75887 core: remove matchOnly logic from fuzzy searcher
Search should always filter out the results, not return everything.
2025-02-21 12:29:25 +05:00
Abdullah Atta
c9704e1031 core: remove titleOnly lookup tests 2025-02-21 12:29:25 +05:00
Abdullah Atta
31e32cd154 core: fix query transformer tests 2025-02-21 12:29:25 +05:00
Abdullah Atta
61c296fc37 core: improve fuzzy filter lookup api to be more robust
- add ability to wrap matching text in prefix/suffix
- return match score for further sorting etc.
- fetch everything eagerly (instead of iterating on matches) for perf
- add support for ignoring fields (i.e. ignore id field)
2025-02-21 12:29:25 +05:00
Abdullah Atta
c8d38235b2 web: close command palette if already open on Ctrl/Cmd+K/P 2025-02-21 12:29:25 +05:00
Abdullah Atta
b717a64607 web: add support for closing dialogs imperatively 2025-02-21 12:29:25 +05:00
01zulfi
0f2b1d3e14 web: fix tags not adding/removing in note header bar (#7623)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-20 13:02:49 +05:00
Ammar Ahmed
4abefe63db core: fix error can't resolve './fuzzy' 2025-02-20 10:49:03 +05:00
Abdullah Atta
fc31b2a8d7 web: pressing escape key shouldn't exit fullscreen mode in firefox 2025-02-19 16:04:21 +05:00
01zulfi
2708bac4fb web: wrap & remove auto-resize of note title (#7290)
* web: wrap & remove auto-resize of note title
* wrap note title if it overflows
* remove auto-resizing of note title based on its length
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>

* web: remove newlines in title textarea

---------

Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
2025-02-19 15:56:36 +05:00
01zulfi
a47967dd53 web: add command palette (#7314)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-19 15:48:44 +05:00
01zulfi
53ba5562d3 intl: fix account casing (#7624)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-19 14:13:49 +05:00
three-b0dy
347df32943 monograph: fix docker build for aarch64 (#7622)
--platform=$BUILDPLATFORM will overwrite buildx settings

Signed-off-by: three-b0dy <120573565+three-b0dy@users.noreply.github.com>
2025-02-19 14:03:52 +05:00
01zulfi
ac8c63526b editor: add scroll margin & threshold props (#7292)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-18 12:27:55 +05:00
01zulfi
a48bd360ca editor: improve hr & p styling (#7489)
Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
2025-02-17 12:10:10 +05:00
Ammar Ahmed
f476969e9e mobile: pinned tab changes 2025-02-17 11:58:26 +05:00
Abdullah Atta
c45539dea6 web: add tests for pinned tabs 2025-02-17 11:58:26 +05:00
Abdullah Atta
d8f5815b84 web: disable opening new note in pinned tab 2025-02-17 11:58:26 +05:00
Abdullah Atta
2eaf07118a web: open note history in new tab if active tab is pinned 2025-02-17 11:58:26 +05:00
Abdullah Atta
b636b09a96 web: disable all kinds of navigation in pinned tabs 2025-02-17 11:58:26 +05:00
Abdullah Atta
c16bbcaad5 editor: add support for pasting as markdown 2025-02-17 11:57:24 +05:00
Abdullah Atta
49ffcbea03 editor: fix youtube embeds 2025-02-17 10:30:12 +05:00
Waqar Ahmed
f772cf0f14 editor: fix search in complex elements like tables (#7605)
The current search algorithm while accumulating text assumes that the
text nodes are always followed by a paragraph node with endPos ==
textNode.endPos + 1. This is not true for complex text elements like
tables where the endPos can be higher. Thus the start,end offsets of
TextNodesWithPosition start getting off and results in incorrectly
highlighted search results.

To fix this, simplify the TextNodesWithPosition to only hold start
position and offset since startPos is always correct. We can calculate
the end position on the fly by simply adding text length to startPos.

Issue #7431

Signed-off-by: Waqar Ahmed <waqar.17a@gmail.com>
2025-02-17 10:16:55 +05:00
Abdullah Atta
3f1406a05b monograph: bump version to v1.2.4 2025-02-15 23:39:37 +05:00
Abdullah Atta
21760b2b74 monograph: add a strict csp 2025-02-15 23:38:52 +05:00
1422 changed files with 870182 additions and 289235 deletions

View File

@@ -7,7 +7,7 @@ runs:
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
node-version: 22.x
cache: "npm"
cache-dependency-path: |
package-lock.json

View File

@@ -47,16 +47,21 @@ jobs:
- name: Install Detox CLI
run: npm install detox-cli --global
- name: Check for typescript errors
run: |
cd apps/mobile
npx tsc --noEmit
- name: Detox build
run: |
yarn build:android
ls apps/mobile/native/android/app/build/outputs/apk
ls apps/mobile/native/android/app/build/outputs/apk/release
ls apps/mobile/android/app/build/outputs/apk
ls apps/mobile/android/app/build/outputs/apk/release
- name: Get device name
id: device
run: |
AVD_NAME=$(node -p "require('./apps/mobile/native/.detoxrc.js').devices.emulator.device.avdName")
AVD_NAME=$(node -p "require('./apps/mobile/.detoxrc.js').devices.emulator.device.avdName")
echo "AVD_NAME=$AVD_NAME" >> $GITHUB_OUTPUT
- name: AVD cache

View File

@@ -4,8 +4,7 @@ on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 40
runs-on: ubuntu-22.04
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
@@ -22,7 +21,7 @@ jobs:
- name: Use specific Java version for the builds
uses: joschi/setup-jdk@v2
with:
java-version: "11"
java-version: "17"
architecture: "x64"
- name: Install node modules
@@ -31,7 +30,23 @@ jobs:
npm run bootstrap -- --scope=mobile
- name: Make Gradlew Executable
run: cd apps/mobile/native/android && chmod +x ./gradlew
run: cd apps/mobile/android && chmod +x ./gradlew
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: false
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Install CCache
uses: hendrikmuhs/ccache-action@v1.2.11
@@ -58,7 +73,7 @@ jobs:
ccache -p
- name: Cache gradle
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
@@ -69,12 +84,19 @@ jobs:
run: |
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-mmkv-storage/android/build.gradle
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-reanimated/android/build.gradle
sed -i -e 's/defaultConfig {/ndkVersion safeExtGet('ndkVersion', "25.2.9519653")\n defaultConfig {/g' apps/mobile/node_modules/react-native-reanimated//android/build.gradle
sed -i -e 's/defaultConfig {/ndkVersion safeExtGet('ndkVersion', "25.2.9519653")\n defaultConfig {/g' apps/mobile/node_modules/react-native-mmkv-storage/android/build.gradle
- name: CCache Stats Before Build
run: ccache -sv
- name: Check for typescript errors
run: |
npm run tx mobile:build
cd apps/mobile
npx tsc --noEmit
- name: Remove debug keystore
run: rm -rf apps/mobile/android/app/debug.keystore
- name: Build unsigned app bundle
run: yarn release:android:bundle
@@ -85,13 +107,13 @@ jobs:
id: sign_app
uses: r0adkll/sign-android-release@master
with:
releaseDirectory: apps/mobile/native/android/app/build/outputs/bundle/release
releaseDirectory: apps/mobile/android/app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
BUILD_TOOLS_VERSION: "36.0.0"
- name: Build apks for Github release
run: yarn release:android
@@ -100,17 +122,17 @@ jobs:
id: sign_apk
uses: r0adkll/sign-android-release@master
with:
releaseDirectory: apps/mobile/native/android/app/build/outputs/apk/release
releaseDirectory: apps/mobile/android/app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.PUBLIC_SIGNING_KEY }}
alias: ${{ secrets.PUBLIC_ALIAS }}
keyStorePassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
keyPassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
BUILD_TOOLS_VERSION: "36.0.0"
- name: Rename apk files
run: |
cd apps/mobile/native/android/app/build/outputs/apk/release/
cd apps/mobile/android/app/build/outputs/apk/release/
mv app-arm64-v8a-release-unsigned-signed.apk notesnook-arm64-v8a.apk
mv app-armeabi-v7a-release-unsigned-signed.apk notesnook-armeabi-v7a.apk
mv app-x86-release-unsigned-signed.apk notesnook-x86.apk
@@ -118,7 +140,7 @@ jobs:
- name: Get app version
id: package-version
uses: martinbeentjes/npm-get-version-action@master
uses: saionaro/extract-package-version@master
with:
path: apps/mobile
@@ -129,28 +151,29 @@ jobs:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: com.streetwriters.notesnook
releaseFiles: ${{steps.sign_app.outputs.signedReleaseFile}}
track: alpha
track: beta
status: completed
whatsNewDirectory: apps/mobile/native/android/releasenotes/
whatsNewDirectory: apps/mobile/android/releasenotes/
- name: Create release draft on Github
uses: softprops/action-gh-release@v1
with:
draft: true
tag_name: ${{ steps.package-version.outputs.current-version}}-beta-android
name: Notesnook Android v${{ steps.package-version.outputs.current-version}} Beta
tag_name: ${{ steps.package-version.outputs.version}}-beta-android
name: Notesnook Android v${{ steps.package-version.outputs.version}}
repository: streetwriters/notesnook
token: ${{ secrets.GITHUB_TOKEN }}
files: |
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-arm64-v8a.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-armeabi-v7a.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86_64.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-arm64-v8a.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-armeabi-v7a.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-x86.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-x86_64.apk
${{steps.sign_app.outputs.signedReleaseFile}}
- name: Upload sourcemaps
uses: actions/upload-artifact@v4
with:
name: sourcemaps
path: |
apps/mobile/native/android/app/build/**/*.map
apps/mobile/android/app/build/**/*.map
packages/editor-mobile/sourcemaps/*.map

View File

@@ -5,7 +5,6 @@ on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 40
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
@@ -25,13 +24,29 @@ jobs:
java-version: "17"
architecture: "x64"
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: false
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Install node modules
run: |
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=mobile
- name: Make Gradlew Executable
run: cd apps/mobile/native/android && chmod +x ./gradlew
run: cd apps/mobile/android && chmod +x ./gradlew
- name: Install CCache
uses: hendrikmuhs/ccache-action@v1.2.11
@@ -58,7 +73,7 @@ jobs:
ccache -p
- name: Cache gradle
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
@@ -69,12 +84,19 @@ jobs:
run: |
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-mmkv-storage/android/build.gradle
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-reanimated/android/build.gradle
sed -i -e 's/defaultConfig {/ndkVersion safeExtGet('ndkVersion', "25.2.9519653")\n defaultConfig {/g' apps/mobile/node_modules/react-native-reanimated//android/build.gradle
sed -i -e 's/defaultConfig {/ndkVersion safeExtGet('ndkVersion', "25.2.9519653")\n defaultConfig {/g' apps/mobile/node_modules/react-native-mmkv-storage/android/build.gradle
- name: CCache Stats Before Build
run: ccache -sv
- name: Check for typescript errors
run: |
npm run tx mobile:build
cd apps/mobile
npx tsc --noEmit
- name: Remove debug keystore
run: rm -rf apps/mobile/android/app/debug.keystore
- name: Build unsigned app bundle
run: yarn release:android:bundle
@@ -85,13 +107,13 @@ jobs:
id: sign_app
uses: r0adkll/sign-android-release@master
with:
releaseDirectory: apps/mobile/native/android/app/build/outputs/bundle/release
releaseDirectory: apps/mobile/android/app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
BUILD_TOOLS_VERSION: "36.0.0"
- name: Build apks for Github release
run: yarn release:android
@@ -100,17 +122,17 @@ jobs:
id: sign_apk
uses: r0adkll/sign-android-release@master
with:
releaseDirectory: apps/mobile/native/android/app/build/outputs/apk/release
releaseDirectory: apps/mobile/android/app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.PUBLIC_SIGNING_KEY }}
alias: ${{ secrets.PUBLIC_ALIAS }}
keyStorePassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
keyPassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
BUILD_TOOLS_VERSION: "36.0.0"
- name: Rename apk files
run: |
cd apps/mobile/native/android/app/build/outputs/apk/release/
cd apps/mobile/android/app/build/outputs/apk/release/
mv app-arm64-v8a-release-unsigned-signed.apk notesnook-arm64-v8a.apk
mv app-armeabi-v7a-release-unsigned-signed.apk notesnook-armeabi-v7a.apk
mv app-x86-release-unsigned-signed.apk notesnook-x86.apk
@@ -118,7 +140,7 @@ jobs:
- name: Get app version
id: package-version
uses: martinbeentjes/npm-get-version-action@master
uses: saionaro/extract-package-version@master
with:
path: apps/mobile
@@ -131,26 +153,26 @@ jobs:
releaseFiles: ${{steps.sign_app.outputs.signedReleaseFile}}
track: production
status: completed
whatsNewDirectory: apps/mobile/native/android/releasenotes/
whatsNewDirectory: apps/mobile/android/releasenotes/
- name: Create release draft on Github
uses: softprops/action-gh-release@v1
with:
draft: true
tag_name: ${{ steps.package-version.outputs.current-version}}-android
name: Notesnook Android v${{ steps.package-version.outputs.current-version}}
tag_name: ${{ steps.package-version.outputs.version}}-android
name: Notesnook Android v${{ steps.package-version.outputs.version}}
repository: streetwriters/notesnook
token: ${{ secrets.GITHUB_TOKEN }}
files: |
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-arm64-v8a.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-armeabi-v7a.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86.apk
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86_64.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-arm64-v8a.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-armeabi-v7a.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-x86.apk
apps/mobile/android/app/build/outputs/apk/release/notesnook-x86_64.apk
- name: Upload sourcemaps
uses: actions/upload-artifact@v4
with:
name: sourcemaps
path: |
apps/mobile/native/android/app/build/**/*.map
apps/mobile/android/app/build/**/*.map
packages/editor-mobile/sourcemaps/*.map

View File

@@ -9,7 +9,13 @@ on:
- "packages/core/**"
# re-run workflow if workflow file changes
- ".github/workflows/core.tests.yml"
pull_request:
pull_request_target:
branches:
- "master"
paths:
- "packages/core/**"
# re-run workflow if workflow file changes
- ".github/workflows/core.tests.yml"
types:
- "ready_for_review"
- "opened"
@@ -17,11 +23,21 @@ on:
- "reopened"
jobs:
test:
runs-on: ubuntu-22.04
authorize:
environment: ${{ github.event_name == 'pull_request_target' &&
github.event.pull_request.head.repo.full_name != github.repository &&
'external' || 'internal' }}
runs-on: ubuntu-latest
steps:
- run: echo true
test:
needs: authorize
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- name: Setup Node
uses: ./.github/actions/setup-node-with-cache
@@ -36,7 +52,6 @@ jobs:
echo "USER_PASSWORD=${{ secrets.USER_PASSWORD }}" >> $GITHUB_ENV
echo "USER_TOTP_SECRET=${{ secrets.USER_TOTP_SECRET }}" >> $GITHUB_ENV
echo "USER_HASHED_PASSWORD=${{ secrets.USER_HASHED_PASSWORD }}" >> $GITHUB_ENV
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Run all @notesnook/core tests
run: npx nx test:e2e @notesnook/core
run: npm run tx @notesnook/core:test:e2e

View File

@@ -33,6 +33,14 @@ on:
required: true
default: true
description: "Build for macOS?"
release-track:
type: choice
required: true
default: stable
description: "Select the release track"
options:
- stable
- beta
jobs:
build:
@@ -57,12 +65,13 @@ jobs:
npm i --cpu x64 sqlite-better-trigram
working-directory: ./apps/desktop
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Generate desktop build (stable)
if: ${{ inputs.release-track == 'stable' }}
run: npm run tx @notesnook/web:build:desktop
- name: Generate desktop build
run: npx nx build:desktop @notesnook/web
- name: Generate desktop build (beta)
if: ${{ inputs.release-track == 'beta' }}
run: BETA=true npm run tx @notesnook/web:build:desktop
- name: Build desktop bundle
working-directory: ./apps/desktop
@@ -94,12 +103,14 @@ jobs:
name: Notesnook Desktop v${{ steps.app_metadata.outputs.app_version }}
tag_name: v${{ steps.app_metadata.outputs.app_version }}
files: ./notesnook_build_v${{ steps.app_metadata.outputs.app_version }}.zip
prerelease: ${{ endsWith(steps.app_metadata.outputs.app_version, '-beta') }}
prerelease: ${{ inputs.release-track == 'beta' }}
target_commitish: ${{ github.ref }}
- name: Generate flatpak sources
if: inputs.publish-github && inputs.build-linux
run: |
sudo apt-get install -y flatpak flatpak-builder pipx
sudo apt-get update
sudo apt-get install -y --quiet flatpak flatpak-builder pipx
git clone https://github.com/flatpak/flatpak-builder-tools.git /tmp/flatpak-builder-tools
cd /tmp/flatpak-builder-tools/node
pipx install .
@@ -184,9 +195,9 @@ jobs:
CSC_LINK: ${{ secrets.mac_certs }}
CSC_KEY_PASSWORD: ${{ secrets.mac_certs_password }}
run: |
npx nx run release --project @notesnook/desktop -- --variant=mas
yarn electron-builder --mac mas --universal -p never
working-directory: ./apps/desktop
npm run tx @notesnook/desktop:release -- --variant=mas
cd apps/desktop
yarn electron-builder --config=electron-builder.config.js --mac mas --universal -p never
- name: Build zip and dmg
env:
@@ -197,13 +208,13 @@ jobs:
APPLE_API_KEY_ID: ${{ secrets.api_key_id }}
APPLE_API_ISSUER: ${{ secrets.api_key_issuer_id }}
run: |
npx nx run release --project @notesnook/desktop
npm run tx @notesnook/desktop:release
cd apps/desktop
if [ ${{ inputs.publish-github }} == true ]; then
yarn electron-builder --mac zip dmg --arm64 --x64 -p always
yarn electron-builder --config=electron-builder.config.js --mac zip dmg --arm64 --x64 -p always
else
yarn electron-builder --mac zip dmg --arm64 --x64 -p never
yarn electron-builder --config=electron-builder.config.js --mac zip dmg --arm64 --x64 -p never
fi
working-directory: ./apps/desktop
- name: Deploy to Testflight
if: inputs.publish-apple && steps.appstore.outputs.app-version-latest != steps.app_metadata.outputs.app_version
@@ -218,8 +229,8 @@ jobs:
xcrun altool --upload-package $package -t osx --apiKey $API_KEY_ID --apiIssuer $API_KEY_ISSUER_ID --apple-id ${{ steps.app_metadata.outputs.apple_app_id }} --bundle-id ${{ steps.app_metadata.outputs.app_bundle_id }} --bundle-short-version-string ${{ steps.app_metadata.outputs.app_version }} --bundle-version ${{ steps.app_metadata.outputs.bundle_version }}
working-directory: ./apps/desktop
build-linux:
name: Build for Linux
build-linux-x64:
name: Build for Linux x64
needs: build
if: inputs.build-linux
runs-on: ubuntu-22.04
@@ -236,7 +247,7 @@ jobs:
run: echo "SNAPCRAFT_STORE_CREDENTIALS=${{ secrets.snapcraft_token }}" >> $GITHUB_ENV
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
uses: samuelmeuli/action-snapcraft@v3
if: inputs.publish-snap
- name: Download build
@@ -252,18 +263,16 @@ jobs:
- name: Install sqlite-better-trigram for all arch
run: |
npm i --cpu arm64 sqlite-better-trigram
npm i --cpu x64 sqlite-better-trigram
working-directory: ./apps/desktop
- name: Build Electron wrapper
run: npx nx run release --project @notesnook/desktop
working-directory: ./apps/desktop
run: npm run tx @notesnook/desktop:release
- name: Build snap
if: inputs.publish-snap
run: |
yarn electron-builder --linux snap:x64 -p never
yarn electron-builder --config=electron-builder.config.js --linux snap:x64 -p never
working-directory: ./apps/desktop
- name: Build AppImage
@@ -271,18 +280,85 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ${{ inputs.publish-github }} == true ]; then
yarn electron-builder --linux AppImage:x64 AppImage:arm64 -p always
yarn electron-builder --config=electron-builder.config.js --linux AppImage:x64 -p always
else
yarn electron-builder --linux AppImage:x64 AppImage:arm64 -p never
yarn electron-builder --config=electron-builder.config.js --linux AppImage:x64 -p never
fi
working-directory: ./apps/desktop
- name: Publish on Snapcraft
if: inputs.publish-snap
run: |
snapcraft upload --release=stable ./output/notesnook_linux_amd64.snap
if [ ${{ inputs.release-track }} == 'beta' ]; then
snapcraft upload --release=beta ./output/notesnook_linux_amd64.snap
else
snapcraft upload --release=stable ./output/notesnook_linux_amd64.snap
fi
working-directory: ./apps/desktop
build-linux-arm64:
name: Build for Linux arm64
needs: build
if: inputs.build-linux
runs-on: ubuntu-22.04-arm
steps:
- name: Check out Git repository
uses: actions/checkout@v4
- name: Setup Node
uses: ./.github/actions/setup-node-with-cache
# - name: Setup Snapcraft Auth
# if: inputs.publish-snap
# run: echo "SNAPCRAFT_STORE_CREDENTIALS=${{ secrets.snapcraft_token }}" >> $GITHUB_ENV
# - name: Install Snapcraft
# uses: samuelmeuli/action-snapcraft@v1
# if: inputs.publish-snap
- name: Download build
uses: actions/download-artifact@v4
with:
name: build
path: ./apps/web/build
- name: Install packages
run: |
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=desktop
- name: Install sqlite-better-trigram for all arch
run: |
npm i --cpu arm64 sqlite-better-trigram
working-directory: ./apps/desktop
- name: Build Electron wrapper
run: npm run tx @notesnook/desktop:release
# - name: Build snap
# if: inputs.publish-snap
# run: |
# yarn electron-builder --config=electron-builder.config.js --linux snap:arm64 -p never
# working-directory: ./apps/desktop
- name: Build AppImage
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ${{ inputs.publish-github }} == true ]; then
yarn electron-builder --config=electron-builder.config.js --linux AppImage:arm64 -p always
else
yarn electron-builder --config=electron-builder.config.js --linux AppImage:arm64 -p never
fi
working-directory: ./apps/desktop
# - name: Publish on Snapcraft
# if: inputs.publish-snap
# run: |
# snapcraft upload --release=stable ./output/notesnook_linux_arm64.snap
# working-directory: ./apps/desktop
build-windows:
name: Build for Windows
needs: build
@@ -320,10 +396,13 @@ jobs:
run: |
npm i --cpu arm64 sqlite-better-trigram
npm i --cpu x64 sqlite-better-trigram
npm i --cpu arm64 sqlite3-fts5-html
npm i --cpu x64 sqlite3-fts5-html
working-directory: ./apps/desktop
- name: Build
run: npx nx run release --project @notesnook/desktop
run: node scripts/execute.mjs @notesnook/desktop:release
- name: Publish
env:
@@ -333,8 +412,8 @@ jobs:
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
run: |
if ($${{ inputs.publish-github }} -eq $true) {
yarn electron-builder --win --publish always
yarn electron-builder --config=electron-builder.config.js --win --publish always
} else {
yarn electron-builder --win --publish never
yarn electron-builder --config=electron-builder.config.js --win --publish never
}
working-directory: ./apps/desktop

View File

@@ -6,10 +6,16 @@ on:
branches:
- "master"
paths:
- "app/desktop/**"
- "apps/desktop/**"
# re-run workflow if workflow file changes
- ".github/workflows/desktop.tests.yml"
pull_request:
branches:
- "master"
paths:
- "apps/desktop/**"
# re-run workflow if workflow file changes
- ".github/workflows/desktop.tests.yml"
jobs:
build:
@@ -27,12 +33,8 @@ jobs:
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=web
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Generate desktop build
run: npx nx build:desktop @notesnook/web
run: npm run tx @notesnook/web:build:desktop
- name: Archive build artifact
uses: actions/upload-artifact@v4
@@ -43,7 +45,7 @@ jobs:
test-macos-x64:
name: Test macOS x64
needs: build
runs-on: macos-13
runs-on: macos-15-intel
steps:
- name: Check out Git repository
@@ -64,17 +66,15 @@ jobs:
npm run bootstrap -- --scope=desktop
- name: Build Electron wrapper
run: npx nx run release --project @notesnook/desktop
working-directory: ./apps/desktop
run: npm run tx @notesnook/desktop:release
- name: Build app
run: |
yarn electron-builder --mac --dir --x64
yarn electron-builder --config=electron-builder.config.js --mac --dir --x64
working-directory: ./apps/desktop
- name: Run tests x64
run: |
EXECUTABLE_PATH=output/mac/Notesnook.app/Contents/MacOS/Notesnook npm run test
run: npm run test
working-directory: ./apps/desktop
- name: Upload test results
@@ -109,17 +109,15 @@ jobs:
npm run bootstrap -- --scope=desktop
- name: Build Electron wrapper
run: npx nx run release --project @notesnook/desktop
working-directory: ./apps/desktop
run: npm run tx @notesnook/desktop:release
- name: Build app
run: |
yarn electron-builder --mac --dir --arm64
yarn electron-builder --config=electron-builder.config.js --mac --dir --arm64
working-directory: ./apps/desktop
- name: Run tests arm64
run: |
EXECUTABLE_PATH=output/mac-arm64/Notesnook.app/Contents/MacOS/Notesnook npm run test
run: npm run test
working-directory: ./apps/desktop
- name: Upload test results
@@ -160,17 +158,15 @@ jobs:
working-directory: ./apps/desktop
- name: Build Electron wrapper
run: npx nx run release --project @notesnook/desktop
working-directory: ./apps/desktop
run: npm run tx @notesnook/desktop:release
- name: Build app
run: |
yarn electron-builder --linux --dir --arm64 --x64
yarn electron-builder --config=electron-builder.config.js --linux --dir --arm64 --x64
working-directory: ./apps/desktop
- name: Run tests
run: |
EXECUTABLE_PATH=output/linux-unpacked/notesnook xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" -- npm run test
run: xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" -- npm run test
working-directory: ./apps/desktop
- name: Upload test results
@@ -208,20 +204,21 @@ jobs:
run: |
npm i --cpu arm64 sqlite-better-trigram
npm i --cpu x64 sqlite-better-trigram
npm i --cpu arm64 sqlite3-fts5-html
npm i --cpu x64 sqlite3-fts5-html
working-directory: ./apps/desktop
- name: Build Electron wrapper
run: npx nx run release --project @notesnook/desktop
working-directory: ./apps/desktop
run: node scripts/execute.mjs @notesnook/desktop:release
- name: Build app
run: |
npx cross-env NOTESNOOK_STAGING=true yarn electron-builder --win --dir --arm64 --x64
npx cross-env NOTESNOOK_STAGING=true yarn electron-builder --config=electron-builder.config.js --win --dir --arm64 --x64
working-directory: ./apps/desktop
- name: Run tests
run: |
npx cross-env EXECUTABLE_PATH=output/win-unpacked/Notesnook.exe npm run test
run: npm run test
working-directory: ./apps/desktop
- name: Upload test results

View File

@@ -10,6 +10,12 @@ on:
# re-run workflow if workflow file changes
- ".github/workflows/editor.tests.yml"
pull_request:
branches:
- "master"
paths:
- "packages/editor/**"
# re-run workflow if workflow file changes
- ".github/workflows/editor.tests.yml"
types:
- "ready_for_review"
- "opened"
@@ -32,12 +38,8 @@ jobs:
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=editor
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Build editor
run: npx nx build @notesnook/editor
run: npm run tx @notesnook/editor:build
- name: Run all @notesnook/editor tests
run: npx nx test @notesnook/editor
run: npm run tx @notesnook/editor:test

View File

@@ -4,28 +4,33 @@ on: workflow_dispatch
jobs:
build:
runs-on: macos-latest
runs-on: macos-26
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup Node
uses: ./.github/actions/setup-node-with-cache
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.1.1"
- name: Install node modules
run: |
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=mobile
- name: Build packages
run: npx nx run @notesnook/mobile:build
run: npm run tx @notesnook/mobile:build
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.11
with:
key: ${{ runner.os }}-ccache-${{ hashFiles(format('apps/mobile/native/ios/Podfile.lock')) }}
key: ${{ runner.os }}-ccache-${{ hashFiles(format('apps/mobile/ios/Podfile.lock')) }}
max-size: 1500M
restore-keys: |
${{ runner.os }}-ccache-
@@ -47,14 +52,22 @@ jobs:
ccache -p
- name: Cache Pods
uses: actions/cache@v2
uses: actions/cache@v3
id: pods-cache
with:
path: apps/mobile/native/ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('apps/mobile/native/ios/Podfile.lock') }}
path: apps/mobile/ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('apps/mobile/ios/Podfile.lock') }}
- name: Install Pods
run: npm run prepare:ios
run: |
cd apps/mobile/ios
pod install
- name: Check for typescript errors
run: |
npm run tx mobile:build
cd apps/mobile
npx tsc --noEmit
- name: CCache Stats Before Build
run: ccache -sv
@@ -65,9 +78,9 @@ jobs:
bundle-identifier: org.streetwriters.notesnook
scheme: Notesnook
configuration: "Release"
export-options: apps/mobile/native/ios/ExportOptions.plist
project-path: apps/mobile/native/ios/Notesnook.xcodeproj
workspace-path: apps/mobile/native/ios/Notesnook.xcworkspace
export-options: apps/mobile/ios/ExportOptions.plist
project-path: apps/mobile/ios/Notesnook.xcodeproj
workspace-path: apps/mobile/ios/Notesnook.xcworkspace
update-targets: |
Notesnook
Make Note
@@ -103,5 +116,5 @@ jobs:
name: Notesnook.zip
path: |
Notesnook.ipa
apps/mobile/native/ios/**/*.map
apps/mobile/ios/**/*.map
packages/editor-mobile/sourcemaps/*.map

View File

@@ -39,13 +39,13 @@ jobs:
echo ::set-output name=app_version::$(cat package.json | jq -r .version)
- name: Generate build
run: npx nx build @notesnook/monograph
run: npm run tx @notesnook/monograph:build
# Setup Buildx
- name: Docker Setup Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8
platforms: linux/amd64,linux/arm64
- name: Log in to Docker Hub
uses: docker/login-action@v3
@@ -77,7 +77,7 @@ jobs:
context: apps/monograph
file: apps/monograph/Dockerfile
push: true
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8
platforms: linux/amd64,linux/arm64
tags: streetwriters/monograph:${{ steps.package_metadata.outputs.app_version }},streetwriters/monograph:latest
cache-from: streetwriters/monograph:latest

View File

@@ -20,7 +20,6 @@ jobs:
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
echo "CLOUDFLARE_ACCOUNT_ID=${{ secrets.CLOUDFLARE_ACCOUNT_ID }}" >> $GITHUB_ENV
echo "CLOUDFLARE_API_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }}" >> $GITHUB_ENV

78
.github/workflows/themes.publish.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.
name: Publish @notesnook/themes-server
on: workflow_dispatch
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-22.04
permissions:
packages: write
contents: read
attestations: write
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Collect package metadata
id: package_metadata
working-directory: ./servers/themes
run: |
echo ::set-output name=app_version::$(cat package.json | jq -r .version)
# Setup Buildx
- name: Docker Setup Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
ecr: auto
logout: true
# Pull previous image from docker hub to use it as cache to improve the image build time.
- name: docker pull cache image
continue-on-error: true
run: docker pull streetwriters/themes-server:latest
# Setup QEMU
# - name: Set up QEMU
# uses: docker/setup-qemu-action@v2
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: streetwriters/themes-server
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
with:
context: .
file: servers/themes/Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: streetwriters/themes-server:${{ steps.package_metadata.outputs.app_version }},streetwriters/themes-server:latest
cache-from: streetwriters/themes-server:latest
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: index.docker.io/streetwriters/themes-server
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

View File

@@ -20,7 +20,6 @@ jobs:
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
echo "CLOUDFLARE_ACCOUNT_ID=${{ secrets.CLOUDFLARE_ACCOUNT_ID }}" >> $GITHUB_ENV
echo "CLOUDFLARE_API_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }}" >> $GITHUB_ENV

View File

@@ -27,10 +27,6 @@ jobs:
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=web
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Build
run: npm run build:web

View File

@@ -1,6 +1,16 @@
name: Publish @notesnook/web
on: workflow_dispatch
on:
workflow_dispatch:
inputs:
release-track:
type: choice
required: true
default: stable
description: "Select the release track"
options:
- stable
- beta
jobs:
build:
@@ -20,12 +30,23 @@ jobs:
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
echo "CLOUDFLARE_ACCOUNT_ID=${{ secrets.CLOUDFLARE_ACCOUNT_ID }}" >> $GITHUB_ENV
echo "CLOUDFLARE_API_TOKEN=${{ secrets.CLOUDFLARE_API_TOKEN }}" >> $GITHUB_ENV
- name: Generate build
- name: Generate build (stable)
if: ${{ inputs.release-track == 'stable' }}
run: npm run build:web
- name: Publish to Cloudflare Pages
run: npx --yes wrangler pages deploy --project-name=notesnook-app ./apps/web/build/
- name: Publish to Cloudflare Pages (stable)
if: ${{ inputs.release-track == 'stable' }}
working-directory: ./apps/web
run: npx --yes wrangler pages deploy --project-name=notesnook-app ./build/
- name: Generate build (beta)
if: ${{ inputs.release-track == 'beta' }}
run: npm run build:beta:web
- name: Publish to Cloudflare Pages (beta)
if: ${{ inputs.release-track == 'beta' }}
working-directory: ./apps/web
run: npx --yes wrangler pages deploy --branch=beta --project-name=notesnook-app-beta ./build/

View File

@@ -9,7 +9,13 @@ on:
- "apps/web/**"
# re-run workflow if workflow file changes
- ".github/workflows/web.tests.yml"
pull_request:
pull_request_target:
branches:
- "master"
paths:
- "apps/web/**"
# re-run workflow if workflow file changes
- ".github/workflows/web.tests.yml"
types:
- "ready_for_review"
- "opened"
@@ -17,12 +23,23 @@ on:
- "reopened"
jobs:
authorize:
environment: ${{ github.event_name == 'pull_request_target' &&
github.event.pull_request.head.repo.full_name != github.repository &&
'external' || 'internal' }}
runs-on: ubuntu-latest
steps:
- run: echo true
build:
needs: authorize
name: Build
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- name: Setup Node
uses: ./.github/actions/setup-node-with-cache
@@ -32,10 +49,6 @@ jobs:
npm ci --ignore-scripts --prefer-offline --no-audit
npm run bootstrap -- --scope=web
- name: Setup environment
run: |
echo "NX_CLOUD_ACCESS_TOKEN=${{ secrets.NX_CLOUD_ACCESS_TOKEN }}" >> $GITHUB_ENV
- name: Generate test build
run: npm run build:test:web
@@ -49,11 +62,13 @@ jobs:
name: 🧪 Test (${{ matrix.shard }}/${{ strategy.job-total }})
strategy:
matrix:
shard: [1, 2, 3, 4]
shard: [1, 2, 3, 4, 5]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- name: Download build
uses: actions/download-artifact@v4

3
.gitignore vendored
View File

@@ -11,4 +11,5 @@ nx-cloud.env
site
node_modules.backup
.nx
*.patch
/*.patch
.taskcache

View File

@@ -11,5 +11,5 @@
"cache": true,
"cacheStrategy": "content"
},
"git.rebaseWhenSync": true
"git.rebaseWhenSync": false
}

View File

@@ -27,7 +27,6 @@ Notesnook is built using the following technologies:
3. React Native — For mobile apps we are using React Native
4. Electron — For desktop app
5. NPM — listed here because we **don't** use Yarn or PNPM or XYZ across any of our projects.
6. Nx — maintaining monorepos is hard but Nx makes it easier.
> **Note: Each project in the monorepo contains its own architecture details which you can refer to.**
@@ -66,7 +65,7 @@ We take all queries, issues and bug reports that you might have. Feel free to as
## Additional Resources
- [Migrating & Importing your data from other apps — Importer](https://importer.notesnook.com/)
- [Migrating & Importing your data from other apps — Importer](https://help.notesnook.com/importing-notes)
- [Privacy policy](https://notesnook.com/privacy) & [Terms of service](https://notesnook.com/terms)
- [Verify Notesnook encryption claims yourself — Vericrypt](https://vericrypt.notesnook.com/)
- [Why Notesnook requires an email address?](https://blog.notesnook.com/why-notesnook-requires-an-email-address/)

View File

@@ -2,4 +2,6 @@ node_modules
build
output
dist
_catalog
_catalog
test-results
test-artifacts

View File

@@ -24,7 +24,7 @@ Requirements:
Before you can do anything, you'll need to [install Node.js](https://nodejs.org/en/download/) v16 or later on your system.
Once you have completed the setup, the first step is to `clone` the monorepo:
1. `clone` the monorepo:
```bash
git clone https://github.com/streetwriters/notesnook.git
@@ -33,19 +33,28 @@ git clone https://github.com/streetwriters/notesnook.git
cd notesnook
```
Once you are inside the `./notesnook` directory, run the preparation step:
2. Install dependencies:
```bash
# this might take a while to complete
npm install
```
Now you can finally start the desktop app for development:
3. Run the webapp for desktop environment:
```bash
cd apps/web
npm run start:desktop
```
4. In a separate terminal session, run the desktop app from the root of the project:
```bash
npm run start:desktop
```
### Release mode
To run the app in release mode:
```bash
@@ -58,13 +67,13 @@ This will compile and run the app in production mode but it won't generate any p
npm run release -- --rebuild
# For macOS
npx electron-builder --mac dmg --arm64 --x64 -publish never
npx electron-builder --config=electron-builder.config.js --mac dmg --arm64 --x64 --publish never
# For Linux (AppImage)
npx electron-builder --linux AppImage:x64 AppImage:arm64 -publish never
npx electron-builder --config=electron-builder.config.js --linux AppImage:x64 AppImage:arm64 --publish never
# For Windows
npx electron-builder --win --publish never
npx electron-builder --config=electron-builder.config.js --win --publish never
```
Feel free to play around with the `electron-builder` command to get the packages you need. `npx electron-builder --help` is a great resource to learn different commands & platforms supported by `electron-builder`.

View File

@@ -0,0 +1,242 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { testCleanup, test } from "./test-override.js";
import { writeFile } from "fs/promises";
import { Page } from "playwright";
import { gt, lt } from "semver";
import { describe } from "vitest";
test("update starts downloading if version is outdated", async ({
ctx: { page },
expect,
onTestFinished
}) => {
onTestFinished(testCleanup);
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await skipDialog(page);
await page.waitForSelector(".ProseMirror");
await page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /updating/i })
.waitFor({ state: "attached" });
});
test("update is only shown if version is outdated and auto updates are disabled", async ({
ctx,
expect,
onTestFinished
}) => {
onTestFinished(testCleanup);
await ctx.app.close();
await writeFile(
ctx.configPath,
JSON.stringify({
automaticUpdates: false
})
);
await ctx.relaunch();
const { page } = ctx;
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await skipDialog(page);
await page.waitForSelector(".ProseMirror");
await page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /available/i })
.waitFor({ state: "attached" });
});
describe("update to stable if it is newer", () => {
test.scoped({ options: { version: "3.0.0-beta.0" } });
test("test", async ({ ctx, expect, onTestFinished }) => {
onTestFinished(testCleanup);
await ctx.app.close();
await writeFile(
ctx.configPath,
JSON.stringify({
automaticUpdates: false,
releaseTrack: "beta"
})
);
await ctx.relaunch();
const { page } = ctx;
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await skipDialog(page);
await page.waitForSelector(".ProseMirror");
const updateButton = page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /available/i });
await updateButton.waitFor({ state: "visible" });
const content = await updateButton.textContent();
const version = content?.split(" ")?.[0] || "";
expect(gt(version, "3.0.0-beta.0")).toBe(true);
});
});
describe("update is not available if it latest stable version is older", () => {
test.scoped({ options: { version: "99.0.0-beta.0" } });
test("test", async ({ ctx, expect, onTestFinished }) => {
onTestFinished(testCleanup);
await ctx.app.close();
await writeFile(
ctx.configPath,
JSON.stringify({
automaticUpdates: false,
releaseTrack: "beta"
})
);
await ctx.relaunch();
const { page } = ctx;
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await skipDialog(page);
await page.waitForSelector(".ProseMirror");
await page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /checking for updates/i })
.waitFor({ state: "hidden" });
expect(
await page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /available/i })
.isHidden()
).toBe(true);
});
});
describe("downgrade to stable on switching to stable release track", () => {
test.scoped({ options: { version: "99.0.0-beta.0" } });
test("test", async ({ ctx, expect, onTestFinished }) => {
onTestFinished(testCleanup);
await ctx.app.close();
await writeFile(
ctx.configPath,
JSON.stringify({
automaticUpdates: false,
releaseTrack: "stable"
})
);
await ctx.relaunch();
const { page } = ctx;
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await skipDialog(page);
await page.waitForSelector(".ProseMirror");
await page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /checking for updates/i })
.waitFor({ state: "hidden" });
const updateButton = page
.locator(".theme-scope-statusBar")
.getByRole("button", { name: /available/i });
await updateButton.waitFor({ state: "visible" });
const content = await updateButton.textContent();
const version = content?.split(" ")?.[0] || "";
expect(lt(version, "99.0.0-beta.0")).toBe(true);
});
});
async function skipDialog(page: Page) {
try {
const dialog = page.locator(".ReactModal__Content");
const positiveButton = dialog.locator(
"button[data-role='positive-button']"
);
const negativeButton = dialog.locator(
"button[data-role='negative-button']"
);
if (await positiveButton.isVisible())
await positiveButton.click({ timeout: 1000 });
else if (await negativeButton.isVisible())
await negativeButton.click({ timeout: 1000 });
} catch (e) {
// ignore error
}
}

View File

@@ -0,0 +1,24 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { buildApp } from "./utils";
export default async function setup() {
await buildApp();
}

View File

@@ -1,53 +0,0 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import test from "node:test";
import { launchApp } from "./utils.mjs";
import assert from "assert";
import slugify from "slugify";
import path from "path";
import { mkdir } from "fs/promises";
test("make sure app loads", async (t) => {
const { app, page } = await launchApp();
try {
await page.waitForSelector("#authForm");
assert.ok(
await page.getByRole("button", { name: "Create account" }).isVisible()
);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await page.waitForSelector(".ProseMirror");
} catch (e) {
await mkdir("test-results", { recursive: true });
await page.screenshot({
path: path.join(
"test-results",
`${slugify(t.name)}-${process.platform}-${process.arch}-error.png`
)
});
throw e;
} finally {
await app.close();
}
});

View File

@@ -0,0 +1,40 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { testCleanup, test } from "./test-override.js";
test("make sure app loads", async ({
ctx: { page },
expect,
onTestFinished
}) => {
onTestFinished(testCleanup);
await page.waitForSelector("#authForm");
expect(
await page.getByRole("button", { name: "Create account" }).isVisible()
).toBe(true);
await page
.getByRole("button", { name: "Skip & go directly to the app" })
.click();
await page.waitForSelector(".ProseMirror");
});

View File

@@ -0,0 +1,64 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { test as vitestTest, TestContext } from "vitest";
import { buildAndLaunchApp, Fixtures, TestOptions } from "./utils";
import { mkdir, rm } from "fs/promises";
import path from "path";
import slugify from "slugify";
export const test = vitestTest.extend<Fixtures>({
options: { version: "3.0.0" } as TestOptions,
ctx: async ({ options }, use) => {
const ctx = await buildAndLaunchApp(options);
await use(ctx);
}
});
export async function testCleanup(context: TestContext) {
const ctx = (context.task.context as unknown as Fixtures).ctx;
if (context.task.result?.state === "fail") {
await mkdir("test-results", { recursive: true });
await ctx.page.screenshot({
path: path.join(
"test-results",
`${slugify(context.task.name)}-${process.platform}-${
process.arch
}-error.png`
)
});
}
await ctx.app.close();
await rm(ctx.userDataDir, {
force: true,
recursive: true,
maxRetries: 3,
retryDelay: 5000
}).catch(() => {
/*ignore */
});
await rm(ctx.outputDir, {
force: true,
recursive: true,
maxRetries: 3,
retryDelay: 5000
}).catch(() => {
/*ignore */
});
}

View File

@@ -0,0 +1,226 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { execSync } from "child_process";
import { cp } from "fs/promises";
import { fileURLToPath } from "node:url";
import path, { join, resolve } from "path";
import { _electron as electron } from "playwright";
import { existsSync } from "fs";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const IS_DEBUG = process.env.NN_DEBUG === "true" || process.env.CI === "true";
const productName = `NotesnookTestHarness`;
const SOURCE_DIR = resolve("output", productName);
export interface AppContext {
app: import("playwright").ElectronApplication;
page: import("playwright").Page;
configPath: string;
userDataDir: string;
outputDir: string;
relaunch: () => Promise<void>;
}
export interface TestOptions {
version: string;
}
export interface Fixtures {
options: TestOptions;
ctx: AppContext;
}
export async function buildAndLaunchApp(
options?: TestOptions
): Promise<AppContext> {
const productName = `notesnooktest${makeid(10)}`;
const outputDir = path.join("test-artifacts", `${productName}-output`);
const executablePath = await copyBuild({
...options,
outputDir
});
const { app, page, configPath, userDataDir } = await launchApp(
executablePath,
productName,
options?.version
);
const ctx: AppContext = {
app,
page,
configPath,
userDataDir,
outputDir,
relaunch: async () => {
const { app, page, configPath, userDataDir } = await launchApp(
executablePath,
productName,
options?.version
);
ctx.app = app;
ctx.page = page;
ctx.userDataDir = userDataDir;
ctx.configPath = configPath;
}
};
return ctx;
}
async function launchApp(
executablePath: string,
packageName: string,
version?: string
) {
const userDataDir = resolve(
__dirname,
"..",
"test-artifacts",
"user_data_dirs",
packageName
);
const app = await electron.launch({
executablePath,
args: IS_DEBUG ? [] : ["--hidden"],
env: {
...(process.platform === "linux"
? {
...(process.env as Record<string, string>),
APPIMAGE: "true"
}
: (process.env as Record<string, string>)),
CUSTOM_USER_DATA_DIR: userDataDir,
...(version
? {
CUSTOM_APP_VERSION: version
}
: {})
}
});
const page = await app.firstWindow();
const configPath = path.join(userDataDir, "UserData", "config.json");
return {
app,
page,
configPath,
userDataDir
};
}
let MAX_RETRIES = 3;
export async function buildApp(version?: string) {
if (!existsSync(SOURCE_DIR)) {
const args = [
"electron-builder",
"--dir",
`--${process.arch}`,
`--config electron-builder.config.js`,
`--c.extraMetadata.productName=${productName}`,
`--c.compression=store`,
"--publish=never"
];
if (version) args.push(`--c.extraMetadata.version=${version}`);
try {
execSync(`npx ${args.join(" ")}`, {
stdio: IS_DEBUG ? "inherit" : "ignore",
env: {
...process.env,
NOTESNOOK_STAGING: "true",
NN_PRODUCT_NAME: productName,
NN_APP_ID: `com.notesnook.test.${productName}`,
NN_OUTPUT_DIR: SOURCE_DIR
}
});
} catch (e) {
if (--MAX_RETRIES) {
console.log("retrying...");
return await buildApp(version);
} else throw e;
}
}
}
async function copyBuild({ outputDir }: { outputDir: string }) {
return process.platform === "win32"
? await makeBuildCopyWindows(outputDir, productName)
: process.platform === "darwin"
? await makeBuildCopyMacOS(outputDir, productName)
: await makeBuildCopyLinux(outputDir, productName);
}
async function makeBuildCopyLinux(outputDir: string, productName: string) {
const platformDir =
process.arch === "arm64" ? "linux-arm64-unpacked" : "linux-unpacked";
const appDir = await makeBuildCopy(outputDir, platformDir);
return resolve(
__dirname,
"..",
appDir,
productName.toLowerCase().replace(/\s+/g, "-")
);
}
async function makeBuildCopyWindows(outputDir: string, productName: string) {
const platformDir =
process.arch === "arm64" ? "win-arm64-unpacked" : "win-unpacked";
const appDir = await makeBuildCopy(outputDir, platformDir);
return resolve(__dirname, "..", appDir, `${productName}.exe`);
}
async function makeBuildCopyMacOS(outputDir: string, productName: string) {
const platformDir = process.arch === "arm64" ? "mac-arm64" : "mac";
const appDir = await makeBuildCopy(outputDir, platformDir);
return resolve(
__dirname,
"..",
appDir,
`${productName}.app`,
"Contents",
"MacOS",
productName
);
}
async function makeBuildCopy(outputDir: string, platformDir: string) {
const appDir = outputDir;
await cp(join(SOURCE_DIR, platformDir), outputDir, {
recursive: true,
preserveTimestamps: true,
verbatimSymlinks: true,
dereference: false,
force: true
});
return appDir;
}
function makeid(length: number) {
let result = "";
const characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
const charactersLength = characters.length;
let counter = 0;
while (counter < length) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
counter += 1;
}
return result.toLowerCase();
}

Binary file not shown.

View File

@@ -0,0 +1,223 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const path = require("path");
const pkg = require("./package.json");
const buildRoot = process.env.NN_BUILD_ROOT || ".";
const buildFiles = [
`${buildRoot}/build/`,
`!${buildRoot}/build/screenshots\${/*}`,
`!${buildRoot}/build/banner.jpg`,
`!${buildRoot}/build/*.ico`,
`!${buildRoot}/build/*.png`
];
const productName = process.env.NN_PRODUCT_NAME || "Notesnook";
const appId = process.env.NN_APP_ID || "org.streetwriters.notesnook";
const outputDir = process.env.NN_OUTPUT_DIR || "output";
const linuxExecutableName = process.env.NN_PRODUCT_NAME
? process.env.NN_PRODUCT_NAME.toLowerCase().replace(/\s+/g, "-")
: "notesnook";
const year = new Date().getFullYear();
const isBeta = pkg.version.includes("-beta");
/**
* @type {import("app-builder-lib").Configuration}
*/
module.exports = {
appId: appId,
productName: productName,
copyright: `Copyright © ${year} Streetwriters (Private) Limited`,
artifactName: "notesnook_${os}_${arch}.${ext}",
generateUpdatesFilesForAllChannels: true,
asar: true,
asarUnpack: [
"node_modules/sqlite-better-trigram-@(linux|darwin|windows)-${arch}/**/*",
"node_modules/sqlite3-fts5-html-@(linux|darwin|windows)-${arch}/**/*"
],
files: [
"!*.chunk.js.map",
"!*.chunk.js.LICENSE.txt",
...buildFiles,
"!node_modules${/*}",
"node_modules/better-sqlite3-multiple-ciphers/build/Release/better_sqlite3.node",
"node_modules/better-sqlite3-multiple-ciphers/lib",
"node_modules/better-sqlite3-multiple-ciphers/package.json",
"node_modules/file-uri-to-path",
"node_modules/bindings",
"node_modules/node-gyp-build",
"node_modules/sqlite-better-trigram",
"node_modules/sqlite3-fts5-html",
"node_modules/sodium-native/prebuilds/${platform}-${arch}",
{
from: "node_modules/sqlite-better-trigram-linux-${arch}",
to: "node_modules/sqlite-better-trigram-linux-${arch}"
},
{
from: "node_modules/sqlite-better-trigram-darwin-${arch}",
to: "node_modules/sqlite-better-trigram-darwin-${arch}"
},
{
from: "node_modules/sqlite-better-trigram-windows-${arch}",
to: "node_modules/sqlite-better-trigram-windows-${arch}"
},
{
from: "node_modules/sqlite3-fts5-html-linux-${arch}",
to: "node_modules/sqlite3-fts5-html-linux-${arch}"
},
{
from: "node_modules/sqlite3-fts5-html-darwin-${arch}",
to: "node_modules/sqlite3-fts5-html-darwin-${arch}"
},
{
from: "node_modules/sqlite3-fts5-html-windows-${arch}",
to: "node_modules/sqlite3-fts5-html-windows-${arch}"
},
"node_modules/sodium-native/index.js",
"node_modules/sodium-native/package.json"
],
afterPack: "./scripts/removeLocales.js",
mac: {
bundleVersion: "240",
minimumSystemVersion: "10.12.0",
target: [
{
target: "dmg",
arch: ["arm64", "x64"]
},
{
target: "zip",
arch: ["arm64", "x64"]
}
],
category: "public.app-category.productivity",
darkModeSupport: true,
type: "distribution",
hardenedRuntime: true,
entitlements: "assets/entitlements.mac.plist",
entitlementsInherit: "assets/entitlements.mac.plist",
gatekeeperAssess: false,
icon: "assets/icons/app.icns",
notarize: true
},
dmg: {
contents: [
{
x: 130,
y: 220
},
{
x: 410,
y: 220,
type: "link",
path: "/Applications"
}
],
icon: "assets/icons/app.icns",
title: "Install Notesnook"
},
mas: {
entitlements: "assets/entitlements.mas.plist",
entitlementsInherit: "assets/entitlements.mas.inherit.plist",
entitlementsLoginHelper: "assets/entitlements.mas.loginhelper.plist",
hardenedRuntime: true
},
win: {
target: [
{
target: "nsis",
arch: ["x64", "arm64"]
},
{
target: "portable",
arch: ["x64", "arm64"]
}
],
signtoolOptions: {
signingHashAlgorithms: ["sha256"],
sign: "./scripts/sign.js"
},
icon: "assets/icons/app.ico"
},
portable: {
artifactName: "notesnook_${os}_${arch}_portable.${ext}"
},
nsis: {
oneClick: true,
createDesktopShortcut: "always",
deleteAppDataOnUninstall: true
},
linux: {
target: [
{
target: "AppImage",
arch: ["x64", "arm64"]
},
{
target: "snap",
arch: ["x64", "arm64"]
}
],
category: "Office",
icon: "assets/icons/app.icns",
description: "Your private note taking space",
executableName: linuxExecutableName,
desktop: {
desktopActions: {
"new-note": {
Name: "New note",
Exec: `${linuxExecutableName} new note`
},
"new-notebook": {
Name: "New notebook",
Exec: `${linuxExecutableName} new notebook`
},
"new-reminder": {
Name: "New reminder",
Exec: `${linuxExecutableName} new reminder`
}
}
}
},
snap: {
autoStart: false,
confinement: "strict",
allowNativeWayland: true,
base: "core22"
},
extraResources: ["app-update.yml", "./assets/**"],
extraMetadata: {
main: path.join(buildRoot, "build", "electron.js")
},
directories: {
buildResources: "assets",
output: outputDir
},
publish: [
{
provider: "github",
repo: "notesnook",
owner: "streetwriters",
channel: isBeta ? "beta" : "latest"
}
]
};

File diff suppressed because it is too large Load Diff

View File

@@ -2,13 +2,15 @@
"name": "@notesnook/desktop",
"productName": "Notesnook",
"description": "Your private note taking space",
"version": "3.0.26",
"version": "3.3.9-beta.1",
"appAppleId": "1544027013",
"private": true,
"main": "./dist/cjs/index.js",
"module": "./dist/esm/index.js",
"types": "./dist/types/index.d.ts",
"sideEffects": false,
"sideEffects": [
"src/overrides.ts"
],
"exports": {
".": {
"require": {
@@ -27,239 +29,55 @@
"dependencies": {
"@lingui/core": "5.1.2",
"@notesnook/intl": "file:../../packages/intl",
"@notesnook/ui": "file:../../packages/ui",
"@trpc/client": "10.45.2",
"@trpc/server": "10.45.2",
"better-sqlite3-multiple-ciphers": "11.5.0",
"electron-trpc": "0.6.1",
"electron-updater": "^6.3.4",
"icojs": "^0.19.4",
"sqlite-better-trigram": "0.0.2",
"better-sqlite3-multiple-ciphers": "^12.4.1",
"electron-trpc": "0.7.1",
"electron-updater": "^6.6.2",
"icojs": "^0.19.5",
"sqlite-better-trigram": "0.0.5",
"sqlite3-fts5-html": "^0.0.6",
"typed-emitter": "^2.1.0",
"yargs": "^17.7.2",
"zod": "3.23.8"
"zod": "3.24.3"
},
"devDependencies": {
"@streetwriters/kysely": "^0.27.4",
"@types/node": "22.7.0",
"@types/node": "22.15.3",
"@types/yargs": "^17.0.33",
"chokidar": "^4.0.1",
"electron": "^31.7.4",
"electron-builder": "^25.1.8",
"chokidar": "^4.0.3",
"electron": "^37.0.0",
"electron-builder": "^26.0.12",
"esbuild": "0.21.5",
"vitest": "2.1.8",
"node-abi": "^3.68.0",
"node-gyp-build": "^4.8.2",
"playwright": "^1.48.2",
"node-abi": "^4.5.0",
"node-gyp-build": "^4.8.4",
"playwright": "1.48.2",
"prebuildify": "^6.0.1",
"slugify": "1.6.6",
"tree-kill": "^1.2.2",
"undici": "^6.19.8"
"undici": "^7.8.0",
"vitest": "^3.2.4"
},
"optionalDependencies": {
"dmg-license": "^1.0.11"
},
"overrides": {
"@electron/node-gyp": "^10.2.0-electron.2"
},
"scripts": {
"start": "node scripts/dev.mjs",
"staging": "node scripts/build.mjs --run",
"release": "node scripts/build.mjs",
"build": "node ../../scripts/build.mjs",
"bundle": "esbuild electron=./src/main.ts ./src/preload.ts --external:electron --external:fsevents --external:better-sqlite3-multiple-ciphers --external:sodium-native --minify --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=false --define:RELEASE=true",
"bundle": "esbuild electron=./src/main.ts ./src/preload.ts --external:electron --external:fsevents --external:better-sqlite3-multiple-ciphers --external:sodium-native --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=false --define:RELEASE=true",
"bundle:mas": "esbuild electron=./src/main.ts ./src/preload.ts --minify --external:electron --external:fsevents --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=true --define:RELEASE=true",
"postinstall": "patch-package",
"test": "node --test --test-timeout 30000 --test-force-exit"
"test": "vitest run"
},
"author": {
"name": "Streetwriters (Private) Limited",
"email": "support@streetwriters.co",
"url": "https://streetwriters.co"
},
"build": {
"appId": "org.streetwriters.notesnook",
"productName": "Notesnook",
"copyright": "Copyright © 2023 Streetwriters (Private) Limited",
"artifactName": "notesnook_${os}_${arch}.${ext}",
"generateUpdatesFilesForAllChannels": true,
"asar": false,
"files": [
"!*.chunk.js.map",
"!*.chunk.js.LICENSE.txt",
"build/",
"!build/screenshots${/*}",
"!build/banner.jpg",
"!build/*.ico",
"!build/*.png",
"!node_modules${/*}",
"node_modules/better-sqlite3-multiple-ciphers/build/Release/better_sqlite3.node",
"node_modules/better-sqlite3-multiple-ciphers/lib",
"node_modules/better-sqlite3-multiple-ciphers/package.json",
"node_modules/file-uri-to-path",
"node_modules/bindings",
"node_modules/node-gyp-build",
"node_modules/sqlite-better-trigram",
"node_modules/sodium-native/prebuilds/${platform}-${arch}",
{
"from": "node_modules/sqlite-better-trigram-linux-${arch}",
"to": "node_modules/sqlite-better-trigram-linux-${arch}"
},
{
"from": "node_modules/sqlite-better-trigram-darwin-${arch}",
"to": "node_modules/sqlite-better-trigram-darwin-${arch}"
},
{
"from": "node_modules/sqlite-better-trigram-windows-${arch}",
"to": "node_modules/sqlite-better-trigram-windows-${arch}"
},
"node_modules/sodium-native/index.js",
"node_modules/sodium-native/package.json"
],
"afterPack": "./scripts/removeLocales.js",
"mac": {
"bundleVersion": "240",
"minimumSystemVersion": "10.12.0",
"target": [
{
"target": "dmg",
"arch": [
"arm64",
"x64"
]
},
{
"target": "zip",
"arch": [
"arm64",
"x64"
]
}
],
"category": "public.app-category.productivity",
"darkModeSupport": true,
"type": "distribution",
"hardenedRuntime": true,
"entitlements": "assets/entitlements.mac.plist",
"entitlementsInherit": "assets/entitlements.mac.plist",
"gatekeeperAssess": false,
"icon": "assets/icons/app.icns",
"notarize": true
},
"dmg": {
"contents": [
{
"x": 130,
"y": 220
},
{
"x": 410,
"y": 220,
"type": "link",
"path": "/Applications"
}
],
"icon": "assets/icons/app.icns",
"title": "Install Notesnook"
},
"mas": {
"entitlements": "assets/entitlements.mas.plist",
"entitlementsInherit": "assets/entitlements.mas.inherit.plist",
"entitlementsLoginHelper": "assets/entitlements.mas.loginhelper.plist",
"hardenedRuntime": true
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64",
"arm64"
]
},
{
"target": "portable",
"arch": [
"x64",
"arm64"
]
}
],
"signtoolOptions": {
"signingHashAlgorithms": [
"sha256"
],
"sign": "./scripts/sign.js"
},
"icon": "assets/icons/app.ico"
},
"portable": {
"artifactName": "notesnook_${os}_${arch}_portable.${ext}"
},
"nsis": {
"oneClick": true,
"createDesktopShortcut": "always",
"deleteAppDataOnUninstall": true
},
"linux": {
"target": [
{
"target": "AppImage",
"arch": [
"x64",
"arm64"
]
},
{
"target": "snap",
"arch": [
"x64",
"arm64"
]
}
],
"category": "Office",
"icon": "assets/icons/app.icns",
"description": "Your private note taking space",
"executableName": "notesnook",
"desktop": {
"actions": [
{
"id": "new-note",
"name": "New note",
"args": "new note"
},
{
"id": "new-notebook",
"name": "New notebook",
"args": "new notebook"
},
{
"id": "new-reminder",
"name": "New reminder",
"args": "new reminder"
}
]
}
},
"snap": {
"autoStart": false,
"confinement": "strict",
"allowNativeWayland": true
},
"extraResources": [
"app-update.yml",
"./assets/**"
],
"extraMetadata": {
"main": "./build/electron.js"
},
"directories": {
"buildResources": "assets",
"output": "./output/"
},
"publish": [
{
"provider": "github",
"repo": "notesnook",
"owner": "streetwriters"
}
]
}
}

View File

@@ -1,36 +0,0 @@
diff --git a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js
index 739a48c..7a7b4af 100644
--- a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js
+++ b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js
@@ -117,6 +117,7 @@ class LinuxTargetHelper {
StartupWMClass: appInfo.productName,
...extra,
...targetSpecificOptions.desktop,
+ actions: undefined
};
const description = this.getDescription(targetSpecificOptions);
if (!(0, builder_util_1.isEmptyOrSpaces)(description)) {
@@ -160,6 +161,23 @@ class LinuxTargetHelper {
data += `\n${name}=${desktopMeta[name]}`;
}
data += "\n";
+
+ if (targetSpecificOptions.desktop.actions) {
+ let actionsData = "";
+ const validActions = [];
+ for (const action of targetSpecificOptions.desktop.actions) {
+ if (!action.id || !action.name || !action.args) continue;
+ actionsData += "\n";
+ actionsData += `[Desktop Action ${action.id}]
+Name=${action.name}
+Exec=${desktopMeta.Exec} ${action.args}`;
+ actionsData += "\n";
+
+ validActions.push(action.id);
+ }
+
+ data += `Actions=${validActions.join(";")};\n${actionsData}`
+ }
return Promise.resolve(data);
}
}

View File

@@ -0,0 +1,13 @@
diff --git a/node_modules/app-builder-lib/out/targets/snap.js b/node_modules/app-builder-lib/out/targets/snap.js
index 0b5405e..753f6c6 100644
--- a/node_modules/app-builder-lib/out/targets/snap.js
+++ b/node_modules/app-builder-lib/out/targets/snap.js
@@ -115,7 +115,7 @@ class SnapTarget extends core_1.Target {
else {
const archTriplet = archNameToTriplet(arch);
appDescriptor.environment = {
- DISABLE_WAYLAND: options.allowNativeWayland ? "" : "1",
+ DISABLE_WAYLAND: options.allowNativeWayland ? "0" : "1",
PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
SNAP_DESKTOP_RUNTIME: "$SNAP/gnome-platform",
LD_LIBRARY_PATH: [

View File

@@ -0,0 +1,11 @@
diff --git a/node_modules/better-sqlite3-multiple-ciphers/deps/defines.gypi b/node_modules/better-sqlite3-multiple-ciphers/deps/defines.gypi
index 1a14ecd..ff938f1 100644
--- a/node_modules/better-sqlite3-multiple-ciphers/deps/defines.gypi
+++ b/node_modules/better-sqlite3-multiple-ciphers/deps/defines.gypi
@@ -38,5 +38,6 @@
'SQLITE_TRACE_SIZE_LIMIT=32',
'SQLITE_USER_AUTHENTICATION=0',
'SQLITE_USE_URI=0',
+ 'SQLITE_ENABLE_REGEXP',
],
}

View File

@@ -1,39 +0,0 @@
diff --git a/node_modules/electron-trpc/dist/main.mjs b/node_modules/electron-trpc/dist/main.mjs
index 07971db..b67a3cf 100644
--- a/node_modules/electron-trpc/dist/main.mjs
+++ b/node_modules/electron-trpc/dist/main.mjs
@@ -537,8 +537,15 @@ class be {
attachWindow(r) {
F(this, w).includes(r) || (y("Attaching window", r.id), F(this, w).push(r), v(this, N, Z).call(this, r));
}
- detachWindow(r) {
- y("Detaching window", r.id), L(this, w, F(this, w).filter((e) => e !== r)), v(this, R, M).call(this, { webContentsId: r.webContents.id });
+ detachWindow(r, webContentsId) {
+ y("Detaching window", r.id);
+
+ if (r.isDestroyed() && webContentsId === undefined) {
+ throw new Error('webContentsId is required when calling detachWindow on a destroyed window');
+ }
+
+ L(this, w, F(this, w).filter((e) => e !== r));
+ v(this, R, M).call(this, { webContentsId: webContentsId ?? r.webContents.id });
}
}
w = new WeakMap(), E = new WeakMap(), R = new WeakSet(), M = function({
@@ -548,6 +555,7 @@ w = new WeakMap(), E = new WeakMap(), R = new WeakSet(), M = function({
for (const [i, a] of F(this, E).entries())
i.startsWith(`${r}-${e ?? ""}`) && (y("Closing subscription", i), a.unsubscribe(), F(this, E).delete(i));
}, N = new WeakSet(), Z = function(r) {
+ const webContentsId = r.webContents.id;
r.webContents.on("did-start-navigation", ({ frame: e }) => {
y(
"Handling webContents `did-start-navigation` event",
@@ -558,7 +566,7 @@ w = new WeakMap(), E = new WeakMap(), R = new WeakSet(), M = function({
frameRoutingId: e.routingId
});
}), r.webContents.on("destroyed", () => {
- y("Handling webContents `destroyed` event"), this.detachWindow(r);
+ y("Handling webContents `destroyed` event"), this.detachWindow(r, webContentsId);
});
};
const me = ({

View File

@@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
console.log("starting build...");
import path from "path";
import fs from "fs/promises";
import { existsSync } from "fs";
@@ -26,39 +27,56 @@ import * as childProcess from "child_process";
import { fileURLToPath } from "url";
import { patchBetterSQLite3 } from "./patch-better-sqlite3.mjs";
console.log("imports done...");
const args = yargs(process.argv);
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const root = args.root || path.join(__dirname, "..");
const skipTscBuild = args.skipTscBuild || false;
const webAppPath = path.resolve(path.join(__dirname, "..", "..", "web"));
await fs.rm("./build/", { force: true, recursive: true });
console.log("loaded args", {
args,
__filename,
__dirname,
root,
skipTscBuild,
webAppPath
});
await fs.rm(path.join(root, "build"), { force: true, recursive: true });
console.log("removed build folder");
if (args.rebuild || !existsSync(path.join(webAppPath, "build"))) {
console.log("rebuilding...");
await exec(
"npx nx build:desktop @notesnook/web",
"node scripts/execute.mjs @notesnook/web:build:desktop",
path.join(__dirname, "..", "..", "..")
);
}
// temporary until there's support for prebuilt binaries for linux ARM
if (os.platform() === "linux") await patchBetterSQLite3();
await patchBetterSQLite3();
await fs.cp(path.join(webAppPath, "build"), "build", {
await fs.cp(path.join(webAppPath, "build"), path.join(root, "build"), {
recursive: true,
force: true
});
if (args.variant === "mas") {
await exec(`yarn run bundle:mas`);
await exec(`yarn run bundle:mas --outdir=${path.join(root, "build")}`);
} else {
await exec(`yarn run bundle`);
await exec(`yarn run bundle --outdir=${path.join(root, "build")}`);
}
await exec(`yarn run build`);
if (!skipTscBuild) {
await exec(`yarn run build`);
}
if (args.run) {
await exec(`yarn electron-builder --dir --${process.arch}`);
await exec(
`yarn electron-builder --dir --${process.arch} --config=electron-builder.config.js`
);
if (process.platform === "win32") {
await exec(`.\\output\\win-unpacked\\Notesnook.exe`);
} else if (process.platform === "darwin") {

View File

@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { readFile, writeFile } from "fs/promises";
import { readFile, rm, writeFile } from "fs/promises";
import path from "path";
import { fileURLToPath } from "url";
@@ -25,6 +25,8 @@ const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export async function patchBetterSQLite3() {
console.log("Patching better-sqlite3");
const jsonPath = path.join(
__dirname,
"..",
@@ -34,15 +36,23 @@ export async function patchBetterSQLite3() {
);
const json = JSON.parse(await readFile(jsonPath, "utf-8"));
json.version = "11.5.1";
json.homepage = "https://github.com/thecodrr/better-sqlite3-multiple-ciphers";
json.repository.url =
"git://github.com/thecodrr/better-sqlite3-multiple-ciphers.git";
delete json.homepage;
delete json.repository;
await writeFile(jsonPath, JSON.stringify(json));
await rm(
path.join(
__dirname,
"..",
"node_modules",
"better-sqlite3-multiple-ciphers",
"build"
),
{ force: true, recursive: true }
);
}
if (process.argv[1] === __filename) {
console.log("Patching better-sqlite3");
patchBetterSQLite3();
}

View File

@@ -19,7 +19,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import { initTRPC } from "@trpc/server";
import { z } from "zod";
import { app, dialog, nativeTheme, Notification, shell } from "electron";
import {
app,
dialog,
Menu,
MenuItem,
nativeImage,
nativeTheme,
Notification,
shell
} from "electron";
import { AutoLaunch } from "../utils/autolaunch";
import { config, DesktopIntegration } from "../utils/config";
import { bringToFront } from "../utils/bring-to-front";
@@ -29,10 +38,11 @@ import { dirname } from "path";
import { resolvePath } from "../utils/resolve-path";
import { observable } from "@trpc/server/observable";
import { AssetManager } from "../utils/asset-manager";
import { isFlatpak } from "../utils";
import { isFlatpak, isSnap } from "../utils";
import { setupDesktopIntegration } from "../utils/desktop-integration";
import { rm } from "fs/promises";
import { disableCustomDns, enableCustomDns } from "../utils/custom-dns";
import type { MenuItem as NNMenuItem } from "@notesnook/ui";
const t = initTRPC.create();
@@ -49,6 +59,7 @@ const NotificationOptions = z.object({
export const osIntegrationRouter = t.router({
isFlatpak: t.procedure.query(() => isFlatpak()),
isSnap: t.procedure.query(() => isSnap()),
zoomFactor: t.procedure.query(() => config.zoomFactor),
setZoomFactor: t.procedure.input(z.number()).mutation(({ input: factor }) => {
@@ -224,5 +235,63 @@ export const osIntegrationRouter = t.router({
nativeTheme.off("updated", updated);
};
})
)
),
showMenu: t.procedure
.input(
z.object({
menuItems: z.array(z.any())
})
)
.subscription(({ input: { menuItems } }) =>
observable<string[]>((emit) => {
const items = menuItems as NNMenuItem[];
const menu = new Menu();
for (const item of items) {
const menuItem = toMenuItem(item, (id) => emit.next(id));
if (menuItem) menu.append(menuItem);
}
if (menu.items.length > 0) menu.popup();
return () => {
menu.removeAllListeners();
menu.closePopup();
};
})
)
});
function toMenuItem(
item: NNMenuItem,
onClick: (id: string[]) => void,
parentKey?: string
): MenuItem | undefined {
switch (item.type) {
case "lazy-loader":
return undefined;
case "separator":
return new MenuItem({ type: "separator" });
case "button": {
const submenu = item.menu ? new Menu() : undefined;
if (submenu && item.menu) {
for (const subitem of item.menu.items) {
const subMenuItem = toMenuItem(subitem, onClick, item.key);
if (subMenuItem) submenu.append(subMenuItem);
}
}
return new MenuItem({
label: item.title,
enabled: !item.isDisabled,
visible: !item.isHidden,
toolTip: item.tooltip,
sublabel: item.tooltip,
checked: item.isChecked,
type: submenu ? "submenu" : item.isChecked ? "checkbox" : "normal",
id: item.key,
submenu,
click: () => onClick(parentKey ? [parentKey, item.key] : [item.key]),
accelerator: item.modifier?.replace("Mod", "CommandOrControl")
});
}
}
}

View File

@@ -33,6 +33,8 @@ export class SQLite {
initialized = false;
preparedStatements: Map<string, Statement<unknown[]>> = new Map();
retryCounter: Record<string, number> = {};
extensionsLoaded = false;
constructor() {
console.log("new sqlite worker");
}
@@ -46,8 +48,6 @@ export class SQLite {
this.sqlite = require("better-sqlite3-multiple-ciphers")(
filePath
).unsafeMode(true);
const betterTrigram = require("sqlite-better-trigram");
betterTrigram.load(this.sqlite);
}
/**
@@ -113,11 +113,32 @@ export class SQLite {
};
}
} catch (e) {
if (e instanceof Error) e.message += ` (query: ${sql})`;
if (e instanceof Error)
throw rewriteError(e, `${e.message} (query: ${sql})`);
throw e;
} finally {
// Since SQLite 3.48.0 (SQLite3MC v2.0.2) it's not possible to load fts5
// extensions before database has been decrypting. This is because
// executing a `SELECT` now accesses the underlying databases resulting in
// an error. Since FTS5 extensions depend on `SELECT fts5` to load the
// fts5 API, we must wait decrypt the database before we can load
// the extensions.
if (!this.extensionsLoaded && (await this.isDatabaseReady())) {
this.loadExtensions();
}
}
}
private loadExtensions() {
this.sqlite?.loadExtension(
getExtensionPath("sqlite-better-trigram", "better-trigram")
);
this.sqlite?.loadExtension(
getExtensionPath("sqlite3-fts5-html", "fts5-html")
);
this.extensionsLoaded = true;
}
async run<R>(
sql: string,
parameters?: SQLiteCompatibleType[]
@@ -142,4 +163,61 @@ export class SQLite {
retryDelay: 500
});
}
/**
* This just executes `SELECT 1` on the database to make sure its ready.
* On an encrypted database, this will fail until `PRAGMA key` has been
* called.
*/
private async isDatabaseReady() {
// return this.exec(`SELECT 1;`)
// .then(() => true)
// .catch(() => false);
if (!this.sqlite) return false;
try {
this.sqlite.prepare(`SELECT 1;`).run();
return true;
} catch {
return false;
}
}
}
function getExtensionPath(extensionName: string, entryPoint: string) {
const path = require("path");
const { statSync } = require("fs");
const os = process.platform === "win32" ? "windows" : process.platform;
const packageName = `${extensionName}-${os}-${process.arch}`;
const extensionSuffix =
process.platform === "win32"
? "dll"
: process.platform === "darwin"
? "dylib"
: "so";
let loadablePath = path.join(
require.resolve(extensionName),
"..",
"..",
packageName,
`${entryPoint}.${extensionSuffix}`
);
if (loadablePath.includes(".asar"))
loadablePath = loadablePath
.replace("electron.asar", "app.asar")
.replace(".asar", ".asar.unpacked");
if (!statSync(loadablePath, { throwIfNoEntry: false })) {
throw new Error(`${extensionName} not found at ${loadablePath}.`);
}
return loadablePath;
}
function rewriteError(e: Error, message: string) {
const error = new Error(message);
error.stack = e.stack;
error.name = e.name;
error.cause = e.cause;
return error;
}

View File

@@ -23,6 +23,7 @@ import { CancellationToken, autoUpdater } from "electron-updater";
import type { AppUpdaterEvents } from "electron-updater/out/AppUpdater";
import { z } from "zod";
import { config } from "../utils/config";
import { app } from "electron";
type UpdateInfo = { version: string };
type Progress = { percent: number };
@@ -33,6 +34,7 @@ let downloadTimeout: NodeJS.Timeout | undefined = undefined;
export const updaterRouter = t.router({
autoUpdates: t.procedure.query(() => config.automaticUpdates),
releaseTrack: t.procedure.query(() => config.releaseTrack),
install: t.procedure.query(() => autoUpdater.quitAndInstall()),
download: t.procedure.query(async () => {
if (cancellationToken) return;
@@ -67,7 +69,13 @@ export const updaterRouter = t.router({
.mutation(({ input: { enabled } }) => {
config.automaticUpdates = enabled;
}),
changeReleaseTrack: t.procedure
.input(z.object({ track: z.string() }))
.mutation(({ input: { track } }) => {
config.releaseTrack = track;
app.relaunch();
app.exit();
}),
onChecking: createSubscription("checking-for-update"),
onDownloaded: createSubscription<"update-downloaded", UpdateInfo>(
"update-downloaded"

View File

@@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { app, BrowserWindow, nativeTheme, shell } from "electron";
import "./overrides";
import { app, BrowserWindow, nativeTheme, shell, dialog } from "electron";
import { isDevelopment } from "./utils";
import { registerProtocol, PROTOCOL_URL } from "./utils/protocol";
import { configureAutoUpdater } from "./utils/autoupdater";
@@ -85,6 +86,8 @@ async function createWindow() {
const mainWindowState = new WindowState({});
const mainWindow = new BrowserWindow({
show: !cliOptions.hidden,
paintWhenInitiallyHidden: cliOptions.hidden,
skipTaskbar: cliOptions.hidden,
x: mainWindowState.x,
y: mainWindowState.y,
width: mainWindowState.width,
@@ -101,7 +104,10 @@ async function createWindow() {
...(config.desktopSettings.nativeTitlebar
? {}
: {
titleBarStyle: process.platform === "win32" || process.platform === "darwin" ? "hidden" : "default",
titleBarStyle:
process.platform === "win32" || process.platform === "darwin"
? "hidden"
: "default",
frame: process.platform === "win32" || process.platform === "darwin",
titleBarOverlay: {
height: 37,
@@ -142,6 +148,11 @@ async function createWindow() {
await AssetManager.loadIcons();
setupDesktopIntegration(config.desktopSettings);
mainWindow.webContents.session.setPermissionRequestHandler(
(webContents, permission, callback) => {
callback(permission === "geolocation" ? false : true);
}
);
mainWindow.webContents.session.setSpellCheckerDictionaryDownloadURL(
"http://dictionaries.notesnook.com/"
);
@@ -171,6 +182,17 @@ async function createWindow() {
app.once("ready", async () => {
console.info("App ready. Opening window.");
if (app.runningUnderARM64Translation) {
console.log("App is running under ARM64 translation");
dialog.showMessageBoxSync({
message:
"Notesnook detected that it is running under ARM64 translation. For the best performance, please download the ARM64 build of Notesnook from our website.",
type: "warning",
buttons: ["Okay"],
title: "Degraded Performance Warning"
});
}
if (config.customDns) enableCustomDns();
else disableCustomDns();

View File

@@ -16,21 +16,26 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { app } from "electron";
import path from "path";
import React from "react";
import DialogProvider from "../components/dialog-provider";
import { Toast } from "../components/toast";
import { TabHolder } from "./tabs-holder";
import { ScopedThemeProvider } from "@notesnook/theme";
const _ApplicationHolder = () => {
return (
<>
<TabHolder />
<ScopedThemeProvider value="dialog">
<Toast />
</ScopedThemeProvider>
<DialogProvider />
</>
const customVersion = process.env.CUSTOM_APP_VERSION;
if (customVersion) {
app.getVersion = () => customVersion;
console.log("setting custom version:", customVersion);
}
if (process.env.CUSTOM_USER_DATA_DIR) {
app.setPath(
"appData",
path.join(process.env.CUSTOM_USER_DATA_DIR, "AppData")
);
};
export const ApplicationHolder = React.memo(_ApplicationHolder, () => true);
app.setPath(
"userData",
path.join(process.env.CUSTOM_USER_DATA_DIR, "UserData")
);
app.setPath(
"documents",
path.join(process.env.CUSTOM_USER_DATA_DIR, "Documents")
);
}

View File

@@ -39,7 +39,7 @@ const LINUX_AUTOSTART_DIRECTORY_PATH = path.join(
"autostart"
);
const STARTUP_ARGS = ["--hidden"];
const HIDDEN_ARG = "--hidden";
export class AutoLaunch {
static enable(hidden: boolean) {
@@ -54,13 +54,13 @@ export class AutoLaunch {
);
} else {
const loginItemSettings = app.getLoginItemSettings({
args: STARTUP_ARGS
args: hidden ? [HIDDEN_ARG] : undefined
});
if (loginItemSettings.openAtLogin) return;
app.setLoginItemSettings({
openAtLogin: true,
openAsHidden: hidden,
args: STARTUP_ARGS
args: hidden ? [HIDDEN_ARG] : undefined
});
}
}

View File

@@ -20,19 +20,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import { autoUpdater } from "electron-updater";
import { config } from "./config";
const CHANNEL = autoUpdater.currentVersion.raw.endsWith("-beta")
? "beta"
: "latest";
async function configureAutoUpdater() {
const releaseTrack =
config.releaseTrack === "stable" ? "latest" : config.releaseTrack;
autoUpdater.setFeedURL({
provider: "generic",
url: `https://notesnook.com/api/v1/releases/${process.platform}/${CHANNEL}`,
url: `https://notesnook.com/api/v1/releases/${process.platform}/${releaseTrack}`,
useMultipleRangeRequest: false,
channel: CHANNEL
channel: releaseTrack
});
autoUpdater.autoDownload = config.automaticUpdates;
autoUpdater.allowDowngrade = false;
autoUpdater.allowDowngrade =
// only allow downgrade if the current version is a prerelease
// and the user has changed the release track to stable
config.releaseTrack === "stable" &&
autoUpdater.currentVersion.prerelease.length > 0;
autoUpdater.allowPrerelease = false;
autoUpdater.autoInstallOnAppQuit = true;
autoUpdater.disableWebInstaller = true;

View File

@@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import { nativeTheme } from "electron";
import { JSONStorage } from "./json-storage";
import { z } from "zod";
import { autoUpdater } from "electron-updater";
export const DesktopIntegration = z.object({
autoStart: z.boolean().optional(),
@@ -46,6 +47,9 @@ export const config = {
automaticUpdates: true,
proxyRules: "",
customDns: true,
releaseTrack: autoUpdater.currentVersion.raw.includes("-beta")
? "beta"
: "stable",
backgroundColor: nativeTheme.themeSource === "dark" ? "#0f0f0f" : "#ffffff",
windowControlsIconColor:

View File

@@ -29,3 +29,7 @@ export function isDevelopment() {
export function isFlatpak() {
return existsSync("/.flatpak-info");
}
export function isSnap() {
return process.env.SNAP !== undefined;
}

View File

@@ -143,16 +143,44 @@ function setupMenu() {
})
);
if (params.isEditable)
if (params.isEditable) {
menu.append(
new MenuItem({
label: strings.paste(),
role: "pasteAndMatchStyle",
role: "paste",
enabled: clipboard.readText("clipboard").length > 0,
accelerator: "CommandOrControl+V"
})
);
menu.append(
new MenuItem({
label:
process.platform === "darwin"
? strings.pasteAndMatchStyle()
: strings.pasteWithoutFormatting(),
role: "pasteAndMatchStyle",
enabled: clipboard.readText("clipboard").length > 0,
accelerator:
process.platform === "darwin"
? "Option+Shift+Command+V"
: "Shift+CommandOrControl+V"
})
);
menu.append(
new MenuItem({
type: "separator"
})
);
menu.append(
new MenuItem({
label: strings.spellCheck(),
role: "toggleSpellChecker"
})
);
}
if (menu.items.length > 0) menu.popup();
});
}

View File

@@ -0,0 +1,42 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
testTimeout: 120 * 1000,
hookTimeout: 120 * 1000,
sequence: {
concurrent: true,
shuffle: true
},
globalSetup: "./__tests__/global-setup.ts",
dir: "./__tests__/",
exclude: [
"**/node_modules/**",
"**/dist/**",
"**/cypress/**",
"**/.{idea,git,cache,output,temp}/**",
"**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*",
"**/test-results/**",
"**/test-artifacts/**"
]
}
});

92
apps/mobile/.detoxrc.js Normal file
View File

@@ -0,0 +1,92 @@
/** @type {Detox.DetoxConfig} */
module.exports = {
testRunner: {
args: {
$0: "jest",
config: "e2e/jest.config.js"
},
jest: {
setupTimeout: 120000
}
},
apps: {
"ios.debug": {
type: "ios.app",
binaryPath:
"ios/build/Build/Products/Debug-iphonesimulator/Notesnook.app",
build:
"xcodebuild -workspace ios/Notesnook.xcworkspace -scheme YOUR_APP -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build"
},
"ios.release": {
type: "ios.app",
binaryPath:
"ios/build/Build/Products/Release-iphonesimulator/Notesnook.app",
build:
"xcodebuild -workspace ios/Notesnook.xcworkspace -scheme YOUR_APP -configuration Release -sdk iphonesimulator -derivedDataPath ios/build"
},
"android.debug": {
type: "android.apk",
binaryPath: "android/app/build/outputs/apk/debug/app-arm64-v8a-debug.apk",
testBinaryPath:
"android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
build:
"cd android ; ENVFILE=.env.test ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
reversePorts: [8081]
},
"android.release": {
type: "android.apk",
binaryPath:
"android/app/build/outputs/apk/release/app-arm64-v8a-release.apk",
testBinaryPath:
"android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk",
build:
"cd android ; ENVFILE=.env.test ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd .."
}
},
devices: {
simulator: {
type: "ios.simulator",
device: {
type: "iPhone 17 Pro Max"
}
},
attached: {
type: "android.attached",
device: {
adbName: ".*"
}
},
emulator: {
type: "android.emulator",
device: {
avdName: "Pixel_5_API_36"
}
}
},
configurations: {
"ios.sim.debug": {
device: "simulator",
app: "ios.debug"
},
"ios.sim.release": {
device: "simulator",
app: "ios.release"
},
"android.att.debug": {
device: "attached",
app: "android.debug"
},
"android.att.release": {
device: "attached",
app: "android.release"
},
"android.emu.debug": {
device: "emulator",
app: "android.debug"
},
"android.emu.release": {
device: "emulator",
app: "android.release"
}
}
};

View File

@@ -4,7 +4,7 @@ artifacts/
#
.DS_Store
native/android/app/src/main/assets/
android/app/src/main/assets/
*Issues.md
build_cache/
#
@@ -16,11 +16,12 @@ build_cache/
.cxx/
*.keystore
!debug.keystore
.kotlin/
# Xcode
#
native/ios/Pods
native/ios/DerivedData
ios/Pods
ios/DerivedData
build/
*.pbxuser
!default.pbxuser
@@ -39,7 +40,7 @@ DerivedData
*.xcuserstate
*.hprof
**/.xcode.env.local
native/cache
cache
# Android/IntelliJ
#
rn-build-deps/
@@ -57,7 +58,7 @@ yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
# fastlane
#
@@ -69,6 +70,7 @@ buck-out/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
vendor
# Bundle artifact
*.jsbundle

16
apps/mobile/Gemfile Normal file
View File

@@ -0,0 +1,16 @@
source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"
# Exclude problematic versions of cocoapods and activesupport that causes build failures.
gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
gem 'xcodeproj', '< 1.26.0'
gem 'concurrent-ruby', '< 1.3.4'
# Ruby 3.4.0 has removed some libraries from the standard library.
gem 'bigdecimal'
gem 'logger'
gem 'benchmark'
gem 'mutex_m'

View File

@@ -1,30 +1,41 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
CFPropertyList (3.0.7)
base64
nkf
rexml
activesupport (6.1.5)
concurrent-ruby (~> 1.0, >= 1.0.2)
activesupport (7.2.2.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
base64 (0.3.0)
benchmark (0.4.1)
bigdecimal (3.2.1)
claide (1.1.0)
cocoapods (1.11.3)
cocoapods (1.15.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.11.3)
cocoapods-core (= 1.15.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.4.0, < 2.0)
cocoapods-trunk (>= 1.6.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
@@ -32,10 +43,10 @@ GEM
gh_inspector (~> 1.0)
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 1.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.11.3)
activesupport (>= 5.0, < 7)
ruby-macho (>= 2.3.0, < 3.0)
xcodeproj (>= 1.23.0, < 2.0)
cocoapods-core (1.15.2)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
@@ -45,7 +56,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.3)
cocoapods-downloader (2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
@@ -54,47 +65,60 @@ GEM
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.1.10)
concurrent-ruby (1.3.3)
connection_pool (2.5.3)
drb (2.2.3)
escape (0.0.4)
ethon (0.15.0)
ethon (0.16.0)
ffi (>= 1.15.0)
ffi (1.15.5)
ffi (1.17.2)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (1.10.0)
httpclient (2.9.0)
mutex_m
i18n (1.14.7)
concurrent-ruby (~> 1.0)
json (2.6.1)
minitest (5.15.0)
json (2.12.2)
logger (1.7.0)
minitest (5.25.5)
molinillo (0.8.0)
mutex_m (0.3.0)
nanaimo (0.3.0)
nap (1.1.0)
netrc (0.11.0)
nkf (0.2.0)
public_suffix (4.0.7)
rexml (3.2.5)
rexml (3.4.1)
ruby-macho (2.5.1)
typhoeus (1.4.0)
securerandom (0.4.1)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.4)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
xcodeproj (1.21.0)
xcodeproj (1.25.1)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
zeitwerk (2.5.4)
rexml (>= 3.3.6, < 4.0)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (~> 1.11, >= 1.11.2)
activesupport (>= 6.1.7.5, != 7.1.0)
benchmark
bigdecimal
cocoapods (>= 1.13, != 1.15.1, != 1.15.0)
concurrent-ruby (< 1.3.4)
logger
mutex_m
xcodeproj (< 1.26.0)
RUBY VERSION
ruby 2.7.4p191
ruby 3.4.1p0
BUNDLED WITH
2.2.27
2.6.2

View File

@@ -1,6 +1,7 @@
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"
apply plugin: 'kotlin-parcelize'
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
@@ -11,13 +12,13 @@ import org.apache.tools.ant.taskdefs.condition.Os
react {
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '..'
root = file("$rootDir/../")
//root = file("$rootDir/..")
// The folder where the react-native NPM package is. Default is ../node_modules/react-native
reactNativeDir = file("$rootDir/../../node_modules/react-native")
//reactNativeDir = file("$rootDir/../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen
codegenDir = file("$rootDir/../../node_modules/react-native-codegen")
//codegenDir = file("$rootDir/../node_modules/react-native-codegen")
// The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
cliFile = file("$rootDir/../../node_modules/react-native/cli.js")
// cliFile = file("$rootDir/../node_modules/react-native/cli.js")
/* Variants */
// The list of variants to that are debuggable. For those we're going to
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
@@ -44,10 +45,13 @@ react {
// extraPackagerArgs = []
/* Hermes Commands */
// The hermes compiler command to run. By default it is 'hermesc'
hermesCommand = "$rootDir/../../node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc"
hermesCommand = "$rootDir/../node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc"
//
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
hermesFlags = ["-O", "-output-source-map"]
/* Autolinking */
autolinkLibrariesWithApp()
}
/**
@@ -69,14 +73,14 @@ def enableProguardInReleaseBuilds = true
* The preferred build flavor of JavaScriptCore.
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
* `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
/**
* Architectures to build native code for.
@@ -91,7 +95,7 @@ def fdroidBuild() {
}
def getNpmVersion() {
def inputFile = file("$rootDir/../../package.json")
def inputFile = file("$rootDir/../package.json")
def jsonPackage = new JsonSlurper().parseText(inputFile.text)
print(jsonPackage["version"])
return jsonPackage["version"]
@@ -100,6 +104,11 @@ def getNpmVersion() {
def isBuildingAAB = gradle.startParameter.getTaskNames().any { it.contains("bundleRelease") }
android {
androidResources {
noCompress += ["bundle"]
}
compileSdkVersion rootProject.ext.compileSdkVersion
ndkVersion rootProject.ext.ndkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -116,7 +125,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled true
versionCode 3042
versionCode 3093
versionName getNpmVersion()
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
@@ -157,7 +166,7 @@ android {
minifyEnabled enableProguardInReleaseBuilds
shrinkResources false
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
proguardFile "${rootProject.projectDir}/../../node_modules/detox/android/detox/proguard-rules-app.pro"
proguardFile "${rootProject.projectDir}/../node_modules/detox/android/detox/proguard-rules-app.pro"
buildConfigField "boolean", "FDROID_BUILD", "${fdroidBuild()}"
}
@@ -213,6 +222,8 @@ dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.2'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.2'
implementation 'com.google.code.gson:gson:2.11.0'
implementation project(":react-native-config")
androidTestImplementation('com.wix:detox:+')
implementation 'androidx.appcompat:appcompat:1.1.0'
@@ -224,16 +235,14 @@ dependencies {
}
}
}
task deleteFiles(type: Delete) {
delete './src/main/assets/static'
}
task copyEditorBundle(type: Copy) {
from '../../../../../packages/editor-mobile/build.bundle'
from '../../../../packages/editor-mobile/build.bundle'
into './src/main/assets'
}
@@ -253,7 +262,3 @@ copyFontFiles.dependsOn(copyEditorBundle);
copyPlainEditorBundle.dependsOn(copyFontFiles);
preBuild.dependsOn(copyPlainEditorBundle)
apply from: file("../../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

Binary file not shown.

View File

@@ -63,4 +63,7 @@
-keepattributes Signature
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keep class com.streetwriters.notesnook.datatypes.* { *; }
-keep class com.streetwriters.notesnook.datatypes.* { *; }
-keep class net.gotev.uploadservice.* { *; }
-keep class kotlinx.parcelize.* { *; }

View File

@@ -11,68 +11,68 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
tools:node="remove" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
android:name="android.permission.USE_FULL_SCREEN_INTENT"
tools:node="remove" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="application/pdf" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="text/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="image/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="application/pdf" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="text/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="image/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="video/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="audio/*" />
</intent>
</queries>
<data android:mimeType="video/*" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="audio/*" />
</intent>
</queries>
<application
android:name=".MainApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:theme="@style/BootTheme"
android:largeHeap="true"
android:supportsRtl="false"
android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:supportsRtl">
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
android:theme="@style/BootTheme">
<receiver android:exported="false" android:label="@string/reminders_title" android:name=".ReminderWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_reminders_info" />
</receiver>
<receiver android:exported="false" android:label="@string/quick_note" android:name=".NoteWidget">
<receiver
android:name=".NoteWidget"
android:exported="false"
android:label="@string/quick_note">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@@ -82,7 +82,10 @@
android:resource="@xml/new_note_widget_info" />
</receiver>
<receiver android:exported="false" android:label="@string/note" android:name=".NotePreviewWidget">
<receiver
android:name=".NotePreviewWidget"
android:exported="false"
android:label="@string/note">
<intent-filter>"
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@@ -92,33 +95,49 @@
android:resource="@xml/note_widget_info" />
</receiver>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
<receiver
android:name=".ReminderWidgetProvider"
android:exported="false"
android:label="@string/reminders_title">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_reminders_info" />
</receiver>
<activity
android:name=".NotePreviewConfigureActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:exported="true"
android:label="NotePreviewConfigure"
android:launchMode="singleTask"
android:exported="true"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" android:name=".NotePreviewConfigureActivity">
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:exported="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="Notesnook">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
@@ -129,29 +148,32 @@
<intent-filter android:label="Notesnook">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.streetwriters.notesnook" />
<data android:scheme="notesnook" />
</intent-filter>
</activity>
<activity android:exported="false" android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<activity
android:name="com.facebook.react.devsupport.DevSettingsActivity"
android:exported="false" />
<activity
android:name=".ShareActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:excludeFromRecents="true"
android:exported="true"
android:label="@string/title_activity_share"
android:noHistory="true"
android:screenOrientation="unspecified"
android:exported="true"
android:taskAffinity=""
android:excludeFromRecents="true"
android:windowSoftInputMode="adjustResize"
android:theme="@style/AppThemeB">
android:theme="@style/AppThemeB"
android:windowSoftInputMode="adjustResize">
<intent-filter android:label="Make Note">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
@@ -162,6 +184,7 @@
<intent-filter android:label="Make Note">
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
@@ -181,35 +204,41 @@
android:enabled="true"
android:exported="true"
android:stopWithTask="false" />
<service android:name="com.asterinet.react.bgactions.RNBackgroundActionsTask" />
<service android:name="com.asterinet.react.bgactions.RNBackgroundActionsTask" />
<service android:name="com.streetwriters.notesnook.BootTaskService" android:foregroundServiceType="dataSync" />
<service
android:name="com.streetwriters.notesnook.BootTaskService"
android:foregroundServiceType="specialUse">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="The service is required by the app to restore notifications of pinned notes, restore notification with reply input for creating notes and restore data in note preview widgets on device reboot." />
</service>
<service
android:name=".NotesnookTileService"
android:exported="true"
android:icon="@drawable/add_note"
android:label="New note"
android:exported="true"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE"/>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
<service
android:name=".ReminderViewsService"
android:exported="true"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<service
android:name=".ReminderViewsService"
android:exported="true"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_viewer_provider_paths" />
</provider>
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_viewer_provider_paths" />
</provider>
<provider
android:name="com.vinzscam.reactnativefileviewer.FileProvider"
@@ -221,12 +250,14 @@
android:resource="@xml/file_viewer_provider_paths" />
</provider>
<receiver android:exported="true" android:name=".BootRecieverService">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
<receiver
android:name=".BootRecieverService"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
</application>

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -14,19 +14,21 @@ public class BootRecieverService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (!isAppOnForeground((context))) {
/**
We will start our service and send extra info about
network connections
**/
Intent serviceIntent = new Intent(context, BootTaskService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(serviceIntent);
} else {
context.startService(serviceIntent);
}
HeadlessJsTaskService.acquireWakeLockNow(context);
}
try {
if (!isAppOnForeground((context))) {
/**
We will start our service and send extra info about
network connections
**/
Intent serviceIntent = new Intent(context, BootTaskService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(serviceIntent);
} else {
context.startService(serviceIntent);
}
HeadlessJsTaskService.acquireWakeLockNow(context);
}
} catch (Exception ignored) {}
}
private boolean isAppOnForeground(Context context) {

View File

@@ -39,7 +39,6 @@ public class BootTaskService extends HeadlessJsTaskService {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("com.streetwriters.notesnook",
"Default",
@@ -55,7 +54,7 @@ public class BootTaskService extends HeadlessJsTaskService {
this.startForeground(
1,
notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC);
ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
} else {
this.startForeground(
1,

View File

@@ -3,8 +3,16 @@ package com.streetwriters.notesnook;
import com.facebook.react.ReactActivity;
import android.content.Intent;
import android.content.res.Configuration;
import androidx.core.graphics.Insets;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactActivityDelegate;
@@ -12,8 +20,9 @@ import com.zoontek.rnbootsplash.RNBootSplash;
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
RNBootSplash.init(this);
protected void onCreate(Bundle savedInstanceState) {
RNBootSplash.init(this, R.style.BootTheme);
super.onCreate(null);
if (BuildConfig.DEBUG) {
WebView.setWebContentsDebuggingEnabled(true);
@@ -22,6 +31,7 @@ public class MainActivity extends ReactActivity {
try {
startService(new Intent(getBaseContext(), OnClearFromRecentService.class));
} catch (Exception ignored) {}
}
/**
@@ -37,20 +47,20 @@ public class MainActivity extends ReactActivity {
DefaultNewArchitectureEntryPoint.getFabricEnabled());
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getReactInstanceManager().onConfigurationChanged(this, newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getReactHost().onConfigurationChanged(this);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
@Override
protected String getMainComponentName() {

View File

@@ -0,0 +1,28 @@
package com.streetwriters.notesnook
import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import org.wonday.orientation.OrientationActivityLifecycle;
class MainApplication : Application(), ReactApplication {
override val reactHost: ReactHost by lazy {
getDefaultReactHost(
context = applicationContext,
packageList =
PackageList(this).packages.apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
add(NNativeModulePackage());
},
)
}
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(OrientationActivityLifecycle.getInstance());
loadReactNative(this)
}
}

View File

@@ -33,7 +33,7 @@ public class NotePreviewWidget extends AppWidgetProvider {
intent.putExtra(OpenNoteId, note.getId());
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra(RCTNNativeModule.IntentType, "OpenNote");
intent.setData(Uri.parse("https://notesnook.com/open_note?id=" + note.getId()));
intent.setData(Uri.parse("https://app.notesnook.com/open_note?id=" + note.getId()));
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE, getActivityOptionsBundle());
views.setOnClickPendingIntent(R.id.open_note, pendingIntent);
@@ -48,7 +48,8 @@ public class NotePreviewWidget extends AppWidgetProvider {
private static Bundle getActivityOptionsBundle() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ActivityOptions activityOptions = ActivityOptions.makeBasic();
activityOptions.setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
activityOptions.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
return activityOptions.toBundle();
} else
return null;

View File

@@ -31,7 +31,8 @@ public class NoteWidget extends AppWidgetProvider {
private static Bundle getActivityOptionsBundle() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ActivityOptions activityOptions = ActivityOptions.makeBasic();
activityOptions.setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
activityOptions.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
return activityOptions.toBundle();
} else
return null;

View File

@@ -0,0 +1,465 @@
package com.streetwriters.notesnook;
import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.WindowManager;
import android.widget.RemoteViews;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.google.gson.Gson;
import com.streetwriters.notesnook.datatypes.Note;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
public class RCTNNativeModule extends ReactContextBaseJavaModule {
Intent lastIntent;
ReactContext mContext;
static String IntentType = "com.streetwriters.notesnook.IntentType";
public RCTNNativeModule(ReactApplicationContext reactContext) {
super(reactContext);
mContext = reactContext;
}
@Override
public String getName() {
return "NNativeModule";
}
@ReactMethod
public void setBackgroundColor(final String color) {
try {
getCurrentActivity().getWindow().getDecorView().setBackgroundColor(Color.parseColor(color));
} catch (Exception e) {
}
}
@ReactMethod
public void getActivityName(Promise promise) {
try {
promise.resolve(getCurrentActivity().getClass().getSimpleName());
} catch (Exception e) {
promise.resolve(null);
}
}
@ReactMethod
public void setSecureMode(final boolean mode) {
try {
getCurrentActivity().runOnUiThread(() -> {
try {
if (mode)
getCurrentActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
else
getCurrentActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
} catch (Exception e) {
}
});
} catch (Exception e) {
}
}
@ReactMethod
public void setAppState(final String appState) {
SharedPreferences appStateDetails = getReactApplicationContext().getSharedPreferences("appStateDetails", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = appStateDetails.edit();
edit.putString("appState", appState);
edit.apply();
}
@ReactMethod(isBlockingSynchronousMethod = true)
public String getAppState() {
SharedPreferences appStateDetails = getReactApplicationContext().getSharedPreferences("appStateDetails", Context.MODE_PRIVATE);
String appStateValue = appStateDetails.getString("appState", "");
return appStateValue.isEmpty() ? null : appStateValue;
}
@ReactMethod(isBlockingSynchronousMethod = true)
public int getWidgetId() {
return NotePreviewConfigureActivity.appWidgetId;
}
@ReactMethod
public void setString(final String storeName, final String key, final String value) {
SharedPreferences details = getReactApplicationContext().getSharedPreferences(storeName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = details.edit();
edit.putString(key, value);
edit.apply();
}
@ReactMethod
public void removeString(final String storeName, final String key) {
SharedPreferences details = getReactApplicationContext().getSharedPreferences(storeName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = details.edit();
edit.remove(key);
edit.apply();
}
@ReactMethod
public void getString(final String storeName, final String key, Promise promise) {
SharedPreferences details = getReactApplicationContext().getSharedPreferences(storeName, Context.MODE_PRIVATE);
String value = details.getString(key, "");
promise.resolve(value.isEmpty() ? null : value);
}
@ReactMethod
public void saveAndFinish() {
NotePreviewConfigureActivity.saveAndFinish(mContext);
}
@ReactMethod(isBlockingSynchronousMethod = true)
public WritableMap getIntent() {
WritableMap map = Arguments.createMap();
if (getCurrentActivity() != null) {
Intent intent = getCurrentActivity().getIntent();
Bundle extras = getCurrentActivity().getIntent().getExtras();
if (extras != null && intent != lastIntent) {
lastIntent = intent;
if (Objects.equals(extras.getString(IntentType), "NewReminder")) {
map.putString(ReminderWidgetProvider.NewReminder, extras.getString(ReminderWidgetProvider.NewReminder));
} else if (Objects.equals(extras.getString(IntentType), "OpenReminder")) {
map.putString(ReminderViewsService.OpenReminderId, extras.getString(ReminderViewsService.OpenReminderId));
} else if (Objects.equals(extras.getString(IntentType), "OpenNote")) {
map.putString(NotePreviewWidget.OpenNoteId, extras.getString(NotePreviewWidget.OpenNoteId));
}
}
}
return map;
}
@ReactMethod
public void cancelAndFinish() {
NotePreviewConfigureActivity.activity.setResult(Activity.RESULT_CANCELED);
NotePreviewConfigureActivity.activity.finish();
}
@ReactMethod
public void getWidgetNotes(Promise promise) {
SharedPreferences pref = getReactApplicationContext().getSharedPreferences("appPreview", Context.MODE_PRIVATE);
Map<String, ?> map = pref.getAll();
WritableArray arr = Arguments.createArray();
for(Map.Entry<String,?> entry : map.entrySet()){
if (entry.getKey().equals("remindersList")) continue;
String value = (String) entry.getValue();
Gson gson = new Gson();
Note note = gson.fromJson(value, Note.class);
arr.pushString(note.getId());
}
promise.resolve(arr);
}
@ReactMethod
public void hasWidgetNote(final String noteId, Promise promise) {
SharedPreferences pref = getReactApplicationContext().getSharedPreferences("appPreview", Context.MODE_PRIVATE);
Map<String, ?> map = pref.getAll();
boolean found = false;
for(Map.Entry<String,?> entry : map.entrySet()){
String value = (String) entry.getValue();
if (value.contains(noteId)) {
found = true;
}
}
promise.resolve(found);
}
@ReactMethod
public void updateWidgetNote(final String noteId, final String data) {
SharedPreferences pref = getReactApplicationContext().getSharedPreferences("appPreview", Context.MODE_PRIVATE);
Map<String, ?> map = pref.getAll();
SharedPreferences.Editor edit = pref.edit();
ArrayList<String> ids = new ArrayList<>();
for(Map.Entry<String,?> entry : map.entrySet()) {
String value = (String) entry.getValue();
if (value.contains(noteId)) {
edit.putString(entry.getKey(), data);
ids.add(entry.getKey());
}
}
edit.apply();
for (String id: ids) {
NotePreviewWidget.updateAppWidget(mContext, AppWidgetManager.getInstance(mContext), Integer.parseInt(id));
}
}
@ReactMethod
public void updateReminderWidget() {
AppWidgetManager wm = AppWidgetManager.getInstance(mContext);
int[] ids = wm.getAppWidgetIds(ComponentName.createRelative(mContext.getPackageName(), ReminderWidgetProvider.class.getName()));
for (int id: ids) {
Log.d("Reminders", "Updating" + id);
RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget_reminders);
ReminderWidgetProvider.updateAppWidget(mContext, wm, id, views);
wm.notifyAppWidgetViewDataChanged(id, R.id.widget_list_view);
}
}
@ReactMethod(isBlockingSynchronousMethod = true)
public boolean isGestureNavigationEnabled() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
try {
String navBarMode = Settings.Secure.getString(
mContext.getContentResolver(),
"navigation_mode"
);
return "2".equals(navBarMode);
} catch (Exception e) {
return false;
}
} else {
return false;
}
}
@ReactMethod
public void addShortcut(final String id, final String type, final String title, final String description, final String color, Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
promise.reject("UNSUPPORTED", "Pinned launcher shortcuts require Android 8.0 or higher");
return;
}
try {
ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);
if (shortcutManager == null) {
promise.reject("ERROR", "ShortcutManager not available");
return;
}
String uri = "https://app.notesnook.com/open_" + type + "?id=" + id;
Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(uri));
intent.setPackage(mContext.getPackageName());
Icon icon = createLetterIcon(type, title, color);
ShortcutInfo shortcut = new ShortcutInfo.Builder(mContext, id)
.setShortLabel(title)
.setLongLabel(description != null && !description.isEmpty() ? description : title)
.setIcon(icon)
.setCategories(Set.of(type))
.setIntent(intent)
.build();
shortcutManager.requestPinShortcut(shortcut, null);
promise.resolve(true);
} catch (Exception e) {
promise.reject("ERROR", e.getMessage());
}
}
@ReactMethod
public void removeShortcut(final String id, Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
promise.reject("UNSUPPORTED", "Pinned launcher shortcuts require Android 8.0 or higher");
return;
}
try {
ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);
if (shortcutManager == null) {
promise.reject("ERROR", "ShortcutManager not available");
return;
}
shortcutManager.disableShortcuts(java.util.Collections.singletonList(id));
promise.resolve(true);
} catch (Exception e) {
promise.reject("ERROR", e.getMessage());
}
}
@ReactMethod
public void updateShortcut(final String id, final String type, final String title, final String description,final String color, Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
promise.reject("UNSUPPORTED", "Pinned launcher shortcuts require Android 8.0 or higher");
return;
}
try {
ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);
if (shortcutManager == null) {
promise.reject("ERROR", "ShortcutManager not available");
return;
}
// Get existing shortcut to preserve icon and intent
List<ShortcutInfo> shortcuts = shortcutManager.getPinnedShortcuts();
ShortcutInfo existingShortcut = null;
for (ShortcutInfo s : shortcuts) {
if (s.getId().equals(id)) {
existingShortcut = s;
break;
}
}
if (existingShortcut == null) {
return;
}
Icon icon = createLetterIcon(type, title, color);
ShortcutInfo updatedShortcut = new ShortcutInfo.Builder(mContext, id)
.setShortLabel(title)
.setIcon(icon)
.setLongLabel(description != null && !description.isEmpty() ? description : title)
.setIntent(existingShortcut.getIntent())
.build();
shortcutManager.updateShortcuts(java.util.Collections.singletonList(updatedShortcut));
promise.resolve(true);
} catch (Exception e) {
promise.reject("ERROR", e.getMessage());
}
}
@ReactMethod
public void removeAllShortcuts(Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
promise.reject("UNSUPPORTED", "Pinned launcher shortcuts require Android 8.0 or higher");
return;
}
try {
ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);
if (shortcutManager == null) {
promise.reject("ERROR", "ShortcutManager not available");
return;
}
List<ShortcutInfo> pinnedShortcuts = shortcutManager.getPinnedShortcuts();
if (!pinnedShortcuts.isEmpty()) {
List<String> ids = new ArrayList<>();
for (ShortcutInfo shortcut : pinnedShortcuts) {
ids.add(shortcut.getId());
}
shortcutManager.disableShortcuts(ids);
}
promise.resolve(true);
} catch (Exception e) {
promise.reject("ERROR", e.getMessage());
}
}
@ReactMethod
public void getAllShortcuts(Promise promise) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return;
}
ShortcutManager shortcutManager = mContext.getSystemService(ShortcutManager.class);
WritableArray shortcuts = Arguments.createArray();
List<ShortcutInfo> infos = shortcutManager.getPinnedShortcuts();
for (ShortcutInfo info: infos) {
WritableMap data = Arguments.createMap();
data.putString("id", info.getId());
if (info.getShortLabel() != null) {
data.putString("title", info.getShortLabel().toString());
}
if (info.getLongLabel() != null) {
data.putString("description", info.getLongLabel().toString());
}
if (!Objects.requireNonNull(info.getCategories()).isEmpty()) {
if (info.getCategories().contains("note")) {
data.putString("type", "note");
} else if (info.getCategories().contains("notebook")) {
data.putString("type", "notebook");
} else if (info.getCategories().contains("tag")) {
data.putString("type", "tag");
} else if (info.getCategories().contains("color")) {
data.putString("type", "color");
}
}
shortcuts.pushMap(data);
}
promise.resolve(shortcuts);
}
private Icon createLetterIcon(String type, String title, String colorCode) {
String letter = type.contains("tag") ? "#" : title != null && !title.isEmpty()
? title.substring(0, 1).toUpperCase()
: "?";
int color = type.equals("color") ? Color.parseColor(colorCode) : getColorForLetter(letter);
if (type.equals("notebook")) return Icon.createWithResource(mContext, R.drawable.ic_notebook);
// Use a larger canvas and fill it completely to avoid white borders from launcher masking.
int iconSize = 256;
Bitmap bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
if (type.equals("color")) {
Paint backgroundPaint = new Paint();
backgroundPaint.setColor(color);
backgroundPaint.setAntiAlias(true);
canvas.drawCircle(iconSize / 2, iconSize / 2, iconSize/2, backgroundPaint);
} else {
Paint textPaint = new Paint();
textPaint.setColor(color);
textPaint.setTextSize(130);
textPaint.setAntiAlias(true);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTypeface(android.graphics.Typeface.create(android.graphics.Typeface.DEFAULT, android.graphics.Typeface.BOLD));
float x = iconSize / 2f;
float y = (iconSize / 2f) - ((textPaint.descent() + textPaint.ascent()) / 2f);
canvas.drawText(letter, x, y, textPaint);
}
return Icon.createWithBitmap(bitmap);
}
private int getColorForLetter(String letter) {
int[] colors = {
0xFF1976D2, // Blue
0xFFD32F2F, // Red
0xFF388E3C, // Green
0xFFF57C00, // Orange
0xFF7B1FA2, // Purple
0xFF0097A7, // Cyan
0xFFC2185B, // Pink
0xFF455A64, // Blue Grey
0xFF6A1B9A, // Deep Purple
0xFF00796B, // Teal
0xFF512DA8, // Indigo
0xFF1565C0 // Dark Blue
};
int hash = Math.abs(letter.hashCode());
return colors[hash % colors.length];
}
}

View File

@@ -75,7 +75,7 @@ class ReminderRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactor
final Intent fillInIntent = new Intent();
final Bundle extras = new Bundle();
extras.putString(ReminderViewsService.OpenReminderId, reminder.getId());
fillInIntent.setData(Uri.parse("https://notesnook.com/open_reminder?id=" + reminder.getId()));
fillInIntent.setData(Uri.parse("https://app.notesnook.com/open_reminder?id=" + reminder.getId()));
fillInIntent.putExtra(RCTNNativeModule.IntentType, "OpenReminder");
fillInIntent.putExtras(extras);
views.setOnClickFillInIntent(R.id.reminder_item_btn, fillInIntent);

View File

@@ -26,7 +26,8 @@ public class ReminderWidgetProvider extends AppWidgetProvider {
private static Bundle getActivityOptionsBundle() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ActivityOptions activityOptions = ActivityOptions.makeBasic();
activityOptions.setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
activityOptions.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
return activityOptions.toBundle();
} else
return null;
@@ -42,7 +43,7 @@ public class ReminderWidgetProvider extends AppWidgetProvider {
new_reminder_intent.putExtra(NewReminder, NewReminder);
new_reminder_intent.setAction(Intent.ACTION_VIEW);
new_reminder_intent.putExtra(RCTNNativeModule.IntentType, "NewReminder");
new_reminder_intent.setData(Uri.parse("https://notesnook.com/new_reminder"));
new_reminder_intent.setData(Uri.parse("https://app.notesnook.com/new_reminder"));
PendingIntent pendingIntent2 = PendingIntent.getActivity(context, appWidgetId, new_reminder_intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE, getActivityOptionsBundle());
views.setOnClickPendingIntent(R.id.add_button, pendingIntent2);

View File

@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="#008837"
android:alpha="1">
<path
android:fillColor="@android:color/white"
android:pathData="M240,880Q207,880 183.5,856.5Q160,833 160,800L160,160Q160,127 183.5,103.5Q207,80 240,80L720,80Q753,80 776.5,103.5Q800,127 800,160L800,800Q800,833 776.5,856.5Q753,880 720,880L240,880ZM240,800L720,800Q720,800 720,800Q720,800 720,800L720,160Q720,160 720,160Q720,160 720,160L640,160L640,440L540,380L440,440L440,160L240,160Q240,160 240,160Q240,160 240,160L240,800Q240,800 240,800Q240,800 240,800ZM240,800Q240,800 240,800Q240,800 240,800L240,160Q240,160 240,160Q240,160 240,160L240,160Q240,160 240,160Q240,160 240,160L240,800Q240,800 240,800Q240,800 240,800ZM440,440L540,380L640,440L640,440L540,380L440,440Z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

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