* Add suppport for tap to reload on PWA
* Clean empty className
* Move click event to site title
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* Add support for download resource from link
* Parse external link and add file ext name from mime info
* Add zh-Hans locale for `download-link`
* fix typo on code and comments
* Update server/resource.go
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
Co-authored-by: boojack <stevenlgtm@gmail.com>
* Fix copy-to-clipboard not works well in Safari
* Fix typescript type check failure
* Remove global copy inject in home page
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* Add support to fetch devProxyServer from environment
* Add docker compose file for developer
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* Change all `Robot` to `Bot`
* Change all `r` of `Bot` to `b`
* Change `Robot` to `bot` in comments
* Fix typo
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* feat(#1568): Added "ask ai" section session splitting function
Added "ask ai" section session splitting function
Optimize the "ask ai" dialogue style
* fix(#1568): Fix wrong attribute "appearance"
* fix(#1568): Add ts type define
* fix(#1568): Add ts type define
* fix(#1568): Resolve the issue of components not being stretched when only user input is available
* feat(#1568): New session automatic switching function
* refactor(#1729): remove unused code
* feat(#1568): New Remove Session Function
New Remove Session Function
Rename some methods
* Add retry wait for telegram.GetUpdates
* Add support to set telegram robot token from UI
* Change validator of UserSettingTelegramUserID
* Add support to set telegram user id from UI
* Fix typescript check
* Add validator for SystemSettingTelegramRobotTokenName
* Optimize error notice while config telegram params
* Change for review
* Fix telegram user id could not be empty
* Fix telegram robot could not be empty
* Fix for eslint (again)
* Update web/src/components/Settings/SystemSection.tsx
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
Co-authored-by: boojack <stevenlgtm@gmail.com>
* Add support for `publicid` in PathTemplate
* Use `publicid` by default instead of `filename` in filesystem
* Fix blank string of `systemSettingLocalStoragePath` affect incorrectly
* Add ext name to compatible with OS's preview
* Optimize code for systemSettingLocalStoragePath empty
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* Add image thumbnail instead of an icon
* Change thumbnail size of dashboard to fixed
* Fix for eslint-checks
* Fix for eslint-checks
* Replace css with tailwind
* Remove the parent div used for style
* Show preview while click on the resource
* Change for review Suggested by @Zeng1998
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* Add a common function for resize image blob
* Auto generate thumbnail for image resources
* Auto thumbnail support for fetch image resources
* Add support for image thumbnail in view
* Fix missing error check
* Fix es-lint check
* Fix uncontrolled data used in path expression
* Remove thumbnail while origin resource been deleted
* Change the thumbnail's storage path
---------
Co-authored-by: Athurg Feng <athurg@gooth.org>
* fix: unexpected empty lines when copying-pasting
* add ref
* feat: support to filter plain link
* eslint
* fix the typo
* fix the typo
* unified the import path
* Add preliminar Windows support for both
development and production environments.
Default profile.Data will be set to "C:\ProgramData\memos" on Windows.
Folder will be created if it does not exist, as this behavior is
expected for Windows applications.
System service installation can be achieved with third-party tools,
explained in docs/windows-service.md.
Not sure if it's worth using https://github.com/kardianos/service
to make service support built-in.
This could be a nice addition alongside #1583 (add Windows artifacts)
* feat: improve Windows support
- Fix local file storage path handling on Windows
- Improve Windows dev script
* feat: add max upload size setting to UI & more
- feat: add max upload size setting to UI
- feat: max upload size setting is checked on UI during upload,
but also enforced by the server
- fix: overflowing mobile layout for Create SSO, Create Storage
and other Settings dialogs
- feat: add HelpButton component with some links to docs were appropriate
- remove LearnMore component in favor of HelpButton
- refactor: change some if/else to switch statements
- refactor: inline some err == nil checks
! Existing databases without the new setting 'max-upload-size-mib'
will show an upload error, but this can be user-fixed by simply
setting the value on system settings UI.
* improvements requested by @boojack
* update zh-Hans translations
* minor update
* update instruction part
* print json_value for debugging purpose
* update post requests related
* machine translate with chunks to get around {{field}}
Hiding dialogs result in the body to stay frozen due to mounting behaviour of the dialog, but using 'X' button hides the dialog and won't let user scroll any further. Removing overflow behaviour during hiding procedure will improve User Experience.
* Add option to hide Ask AI and update dev version
* Fix formatting according to eslint
* Replace option to hide Ask AI with auto hiding based on config
* Fix golangci-lint errors
* Remove showAskAI logic from OpenAPI
* feat: improve i18n support as a whole
- Remove dayjs in favor of /helpers/datetime.ts, which uses
Intl.DateTimeFormat and Date. Dayjs is not exactly i18n friendly
and has several locale related opened issues.
- Move/refactor date/time code from /helpers/utils.ts to
/helpers/datetime.ts.
- Fix Daily Review weekday not changing according to selected date.
- Localize Daily review weekday and month.
- Load i18n listed strings from /locales/{locale}.json in a dynamic way.
This makes much easier to add new locales, by just adding a properly
named json file and listing it only in /web/src/i18n.ts and
/api/user_setting.go.
- Fallback languages are now set in /web/src/i18n.ts.
- Full language codes are now preffered, but they fallback to 2-letter
codes when not available.
- The locale dropdown is now populated dynamically from the available
locales. Locale names are populated by the browser via
Intl.DisplayNames(locale).
- /web/src/i18n.ts now exports a type TLocale from availableLocales
array. This is used only by findNearestLanguageMatch(). As I was unable
to use this type in ".d.ts" files, I switched the Locale type from
/web/src/types/i18n.d.ts to string.
- Move pretty much all hardcoded text strings to i18n strings.
- Add pt-BR translation.
- Remove site.ts and move its content to a i18n string.
- Rename zh.json to zh-Hans.json to get the correct language name on
selector dropdown.
- Remove pt_BR.json and replace with pt-BR.json.
- Some minor layout spacing fixes to accommodate larger texts.
- Improve some error messages.
* Delete .yarnrc.yml
* Delete package-lock.json
* fix: 158:28 error Insert `⏎` prettier/prettier
* add i18n
* add base e2e test
* add multiple test for e2e
* extract the funciton of write memo
* change test sturct
* deteled unused dir
* use fixture
* add fixture
* restruced the project
* feat: add workflow
* feat: change playwright test position
* feat: change playwright test position
* using yarn intead of npm
* change install method
* only enable sign in test
* adjust the order of test
* change report pos
* fix style of e2e workflow
* add review test
* unify locale
* randome write content
* change report pos
* reduce unused wait time
* reduce unused folder
* stash
* merge upstream locale
* change test name
* add test item
* change action name
* add lanuage setting
* add shotscreen
* change name of test
* fix the error of import dep
* fix the error of import dep
* fix the error of filename
* fix the format of workflow
* fix the name error of test case
* feat: change the describe of test case
* feat: remove unused test
* feat: change the fixtures name
* feat: remove unused config
* feat: change docker action
* feat: change the generate method
* feat: extrace screenshot
* feat: change extra path
* feat: change extra path
* feat: screenshot and upload
* feat: change upload filename
* feat: change login method
* feat: change e2e method
* feat: change e2e test
* feat: add wait for login
---------
Co-authored-by: CorrectRoadH <a778917369@gmail.comå>
refactor and update ko.json
- added missing translation keys into ko.json
- synced the JSON key order of ko.json with en.json
- removed unused translation data
* feat: add support for resource page on frontend
* [WIP]feat: add backend support for limit and offset search
* feat: add reducer to add resource
* support fetch all resource when first search
* beautify the fetch ui
* restore file
* feat: add all resource before clear resource
* eslint
* i18n
* chore:change the nane
* chore: change the name of param
* eslint
* feat: setIsComplete to true when first loading resource fully
* fix the bug of fetch
* feat change finally to then
* feat: add await and async to clear and search
* feat: return all resource when fetch
* chore: change variable name
* Update web/src/pages/ResourcesDashboard.tsx
Co-authored-by: boojack <stevenlgtm@gmail.com>
* fix missing const value
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* stash: file upload
* feat: add style button
* feat: add style of list
* feat: add checkbox for list
* feat: support file upload by drag
* feat: beautify the ui
* feat: support file upload
* stash
* fix: the resource is incorrectly when upload multiple files
* feat: beautify the ui
* chore: reduce unused line
* stash
* chore: deleted unused line
* chore: deleted unused line
* chore
* chore: change the function declare
* feat: support to prompt file is too large
* feat:drop prompt to cover all element
* fix: eslint
* fix: the name of i18n
* chore: refactor the import deps
* feat: beautify the ui
* feat: support the style of button
* feat: beautify the switch ui
* chore: refactor the component
* chore: refactor the resource item dropdown
* feat: use memo to reduce unused computing in drop
* feat: use memo to reduce the calc of resource list
* chore:change name
* Update web/src/locales/en.json
Co-authored-by: boojack <stevenlgtm@gmail.com>
* chore: the import of deps
* fix: the window size of fecting data
* feat: support to save the state of style
* remove pnpm-lock
* merge main
* chore: simpify the statement
* fix: delete conflict marker
* feat: add i18n for select
* feat:support dark mode
* eslint
* feat: add more file icon
* feat: delete the storage of resource style
* Update web/src/components/ResourceCover.tsx
Co-authored-by: boojack <stevenlgtm@gmail.com>
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* stash: file upload
* feat: add style button
* feat: add style of list
* feat: add checkbox for list
* feat: support file upload by drag
* feat: beautify the ui
* feat: support file upload
* stash
* fix: the resource is incorrectly when upload multiple files
* feat: beautify the ui
* chore: reduce unused line
* stash
* chore: deleted unused line
* chore: deleted unused line
* chore
* chore: change the function declare
* feat: support to prompt file is too large
* feat:drop prompt to cover all element
* fix: eslint
* fix: the name of i18n
* chore: refactor the import deps
* feat: beautify the ui
* feat: support the style of button
* feat: beautify the switch ui
* chore: refactor the component
* chore: refactor the resource item dropdown
* feat: use memo to reduce unused computing in drop
* feat: use memo to reduce the calc of resource list
* chore:change name
* Update web/src/locales/en.json
Co-authored-by: boojack <stevenlgtm@gmail.com>
* chore: the import of deps
* fix: the window size of fecting data
* feat: support to save the state of style
* remove pnpm-lock
* merge main
* chore: simpify the statement
* fix: delete conflict marker
* feat: add i18n for select
* feat:support dark mode
* eslint
* feat: delete the storage of resource style
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* stash: file upload
* feat: support file upload by drag
* feat: beautify the ui
* feat: support file upload
* stash
* fix: the resource is incorrectly when upload multiple files
* feat: beautify the ui
* chore: reduce unused line
* stash
* chore: deleted unused line
* chore: deleted unused line
* chore
* chore: change the function declare
* feat: support to prompt file is too large
* feat:drop prompt to cover all element
* fix: eslint
* fix: the name of i18n
* chore: refactor the import deps
* feat: beautify the ui
* Update web/src/locales/en.json
Co-authored-by: boojack <stevenlgtm@gmail.com>
* chore: the import of deps
* fix: the window size of fecting data
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* feat: refator the file dashboard
* feat: support select resouce file
* feat: suppor delete select files
* feat: support share menu, implement rename and delete
* chore: change the color of hover
* chore: refator file dashboard to page
* feat: add i18n for button
* feat: beautify the button
* fix: the error position of button
* feat: only select when click circle instead of whole card
* feat: beautify file dashboard
* chore: factor the filecard code
* feat: using dropdown component intead of component
* feat: add i18n for delete selected resource button
* feat: delete the unused style of title
* chore: refactor file cover
* feat: support more type file cover
* feat: use memo to reduce unused computing in filecover
* feat: when no file be selected, click the delete will error
* feat: store the select resource id instead of source to save memory
* chore: delete unused code
* feat: refactor the file card
* chore: delete unused style file
* chore: change file to resource
* chore: delete unused import
* chore: fix the typo
* fix: the error of handle check click
* fix: the error of handle of uncheck
* chore: change the name of selectList to selectedList
* chore: change the name of selectList to selectedList
* chore: change the name of selectList to selectedList
* chore: delete unused import
* feat: support Responsive Design
* feat: min display two card in a line
* feat: adjust the num of a line in responsive design
* feat: adjust the num of a line to 6 when using md
* feat: add the color of hover source card when dark
* chore: refactor resource cover css to reduce code
* chore: delete unnessnary change
* chore: change the type of callback function
* chore: delete unused css code
* feat: add zh-hant i18n
* feat: change the position of buttons
* feat: add title for the icon button
* feat: add opacity for icon
* feat: refactor searchbar
* feat:move Debounce to search
* feat: new resource search bar
* feat: reduce the size of cover
* support file search
* Update web/src/pages/ResourcesDashboard.tsx
Co-authored-by: boojack <stevenlgtm@gmail.com>
* Update web/src/components/ResourceCard.tsx
Co-authored-by: boojack <stevenlgtm@gmail.com>
* chore: reduce css code
* feat: support lowcase and uppercase search
* chore: reserve the searchbar
* feat: refator resource Search bar
* chore: change the param name
* feat: resource bar support dark mode
* feat: beautify the UI of dashboard
* chore: extract positionClassName from actionsClassName
* feat: reduce the length of search bar
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* feat: Allow users to customize the refresh time for Daily Reviews
* feat: Allow users to customize the refresh time for Daily Reviews. Lint fix
* feat: Allow users to customize the refresh time for Daily Reviews. change daily review time offset to include only hour
* feat: Allow users to customize the refresh time for Daily Reviews. Retrigger to try CodeQL pass.
---------
Co-authored-by: Aswath S <aswath.s@thoughtworks.com>
* feat: automatically change language to browser language on first launch(#1238)
* Update web/src/store/module/global.ts
* chroe: rename languageCodeCovert to convertLanguageCodeToLocale
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* fix
* fix bug
* changes
* Revert "changes"
This reverts commit 2b2084c7bd.
* should close the toast if its error also
* no internal errors + sso
* change the text to Incorrect login credentials, please try again
Translated using Weblate (Turkish)
Currently translated at 19.5% (41 of 210 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 33.3% (70 of 210 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (210 of 210 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (210 of 210 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (210 of 210 strings)
Translated using Weblate (Turkish)
Currently translated at 1.4% (3 of 210 strings)
Translated using Weblate (Turkish)
Currently translated at 0.4% (1 of 210 strings)
Translated using Weblate (Turkish)
Currently translated at 0.0% (0 of 0 strings)
Added translation using Weblate (Turkish)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (210 of 210 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 91.4% (192 of 210 strings)
Translate-URL: https://hosted.weblate.org/projects/memos/web/es/
Translate-URL: https://hosted.weblate.org/projects/memos/web/nl/
Translate-URL: https://hosted.weblate.org/projects/memos/web/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/memos/web/sv/
Translate-URL: https://hosted.weblate.org/projects/memos/web/tr/
Translate-URL: https://hosted.weblate.org/projects/memos/web/zh_Hant/
Translation: memos/web
Co-authored-by: Felipe Nogueira <contato.fnog@gmail.com>
Co-authored-by: Jasper Platenburg <jasperdgp@outlook.com>
Co-authored-by: Luna Jernberg <droidbittin@gmail.com>
Co-authored-by: Onur Ravli <onur@ravli.co>
Co-authored-by: SiriYang <www.yangxinruei@qq.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translated using Weblate (Portuguese (Brazil))
Currently translated at 25.7% (54 of 210 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 0.0% (0 of 0 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (210 of 210 strings)
Added translation using Weblate (Portuguese (Brazil))
Translate-URL: https://hosted.weblate.org/projects/memos/web/pl/
Translate-URL: https://hosted.weblate.org/projects/memos/web/pt_BR/
Translation: memos/web
Co-authored-by: Felipe Nogueira <contato.fnog@gmail.com>
Co-authored-by: Piotr Wik <p_00@o2.pl>
Translated using Weblate (Polish)
Currently translated at 99.0% (208 of 210 strings)
Translate-URL: https://hosted.weblate.org/projects/memos/web/pl/
Translation: memos/web
Co-authored-by: Piotr Wik <p_00@o2.pl>
Translated using Weblate (Polish)
Currently translated at 97.1% (204 of 210 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (210 of 210 strings)
Translate-URL: https://hosted.weblate.org/projects/memos/web/pl/
Translate-URL: https://hosted.weblate.org/projects/memos/web/zh_Hant/
Translation: memos/web
Co-authored-by: Piotr Wik <p_00@o2.pl>
Co-authored-by: SiriYang <www.yangxinruei@qq.com>
Translated using Weblate (Chinese (Traditional))
Currently translated at 94.2% (198 of 210 strings)
Translate-URL: https://hosted.weblate.org/projects/memos/web/zh_Hant/
Translation: memos/web
Co-authored-by: SiriYang <www.yangxinruei@qq.com>
Translated using Weblate (Polish)
Currently translated at 79.5% (167 of 210 strings)
Translated using Weblate (Polish)
Currently translated at 0.0% (0 of 0 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (210 of 210 strings)
Added translation using Weblate (Polish)
Translated using Weblate (Korean)
Currently translated at 98.5% (210 of 213 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 97.1% (207 of 213 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 92.0% (196 of 213 strings)
Translated using Weblate (Vietnamese)
Currently translated at 89.2% (190 of 213 strings)
Translated using Weblate (Ukrainian)
Currently translated at 91.5% (195 of 213 strings)
Translated using Weblate (Russian)
Currently translated at 91.5% (195 of 213 strings)
Translated using Weblate (Italian)
Currently translated at 91.5% (195 of 213 strings)
Translated using Weblate (French)
Currently translated at 90.1% (192 of 213 strings)
Translated using Weblate (Spanish)
Currently translated at 91.5% (195 of 213 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (210 of 210 strings)
Deleted translation using Weblate (English (United States))
Translated using Weblate (English (United States))
Currently translated at 0.0% (0 of 0 strings)
Added translation using Weblate (English (United States))
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (210 of 210 strings)
Translated using Weblate (Korean)
Currently translated at 98.5% (207 of 210 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 97.6% (205 of 210 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 93.3% (196 of 210 strings)
Translated using Weblate (Vietnamese)
Currently translated at 90.4% (190 of 210 strings)
Translated using Weblate (Ukrainian)
Currently translated at 92.8% (195 of 210 strings)
Translated using Weblate (Swedish)
Currently translated at 92.8% (195 of 210 strings)
Translated using Weblate (Russian)
Currently translated at 92.8% (195 of 210 strings)
Translated using Weblate (Dutch)
Currently translated at 85.7% (180 of 210 strings)
Translated using Weblate (Italian)
Currently translated at 92.8% (195 of 210 strings)
Translated using Weblate (French)
Currently translated at 91.4% (192 of 210 strings)
Translated using Weblate (Spanish)
Currently translated at 92.8% (195 of 210 strings)
Translated using Weblate (German)
Currently translated at 91.4% (192 of 210 strings)
Translate-URL: https://hosted.weblate.org/projects/memos/web/de/
Translate-URL: https://hosted.weblate.org/projects/memos/web/en_US/
Translate-URL: https://hosted.weblate.org/projects/memos/web/es/
Translate-URL: https://hosted.weblate.org/projects/memos/web/fr/
Translate-URL: https://hosted.weblate.org/projects/memos/web/it/
Translate-URL: https://hosted.weblate.org/projects/memos/web/ko/
Translate-URL: https://hosted.weblate.org/projects/memos/web/nl/
Translate-URL: https://hosted.weblate.org/projects/memos/web/pl/
Translate-URL: https://hosted.weblate.org/projects/memos/web/ru/
Translate-URL: https://hosted.weblate.org/projects/memos/web/sv/
Translate-URL: https://hosted.weblate.org/projects/memos/web/uk/
Translate-URL: https://hosted.weblate.org/projects/memos/web/vi/
Translate-URL: https://hosted.weblate.org/projects/memos/web/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/memos/web/zh_Hant/
Translation: memos/web
Co-authored-by: Luna Jernberg <droidbittin@gmail.com>
Co-authored-by: Piotr Wik <p_00@o2.pl>
Co-authored-by: Yoshino-s <cy-cui@outlook.com>
Co-authored-by: boojack <stevenlgtm@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
* feat(system): support for disabling public memos
* fix(web/editor): set visibility to private on disabled public memos
* feat(server/memo): find/check if public memos are disabled
* fix(server/memo): handle error for finding system error
* fix(server/memo): unmarshal visiblity when getting system settings
* chore(web): move side effect imports to end
* Update memo.go
---------
Co-authored-by: boojack <stevenlgtm@gmail.com>
* feat: style for not found page (#1078)
* chore: translation for not found page (#1078)
* feat: add not found page (#1078)
* chore: router for not found page (#1078)
* fix: typo
* feat: add qrcode in share dialog
* update: change the color
* feat: add customized logo in share dialog
* update: import order
Co-authored-by: boojack <stevenlgtm@gmail.com>