From 9e228ede327d4859bade450465ff7e0ae4d7f655 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Thu, 2 Nov 2023 01:20:27 +0900 Subject: [PATCH] Initialize Next.js --- .babelrc | 55 - .electron-vue/build.js | 95 - .electron-vue/dev-client.js | 40 - .electron-vue/dev-runner.js | 177 - .electron-vue/webpack.main.config.js | 105 - .electron-vue/webpack.renderer.config.js | 262 - .eslintignore | 2 - .eslintrc.js | 42 - .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 22 - .github/ISSUE_TEMPLATE/feature_request.md | 14 - .github/ISSUE_TEMPLATE/other-request.md | 10 - .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/workflows/build.yml | 33 - .github/workflows/release.yml | 110 - .github/workflows/reviewdog.yml | 44 - .github/workflows/thirdparty.yml | 34 - .gitignore | 20 +- .npmrc | 1 - .prettierrc | 2 +- .stylelintignore | 5 - .stylelintrc.json | 25 - .tool-versions | 1 - CHANGELOG.md | 1884 --- CODEOWNERS | 1 - LICENSE | 674 - Makefile | 46 - README.md | 147 +- app-store.svg | 51 - build/notarize.js | 20 - build/sounds/operation_sound01.wav | Bin 6702 -> 0 bytes build/sounds/operation_sound02.wav | Bin 64246 -> 0 bytes crowdin.yml | 27 - dist/electron/.gitkeep | 0 dist/web/.gitkeep | 0 electron-builder.json | 98 - electron-builder.mas.json | 49 - electron-builder.yml | 15 + .../social.whalebird.WhalebirdDesktop.desktop | 10 - ...al.whalebird.WhalebirdDesktop.metainfo.xml | 45 - main/background.ts | 47 + main/helpers/create-window.ts | 86 + main/helpers/index.ts | 1 + main/preload.ts | 22 + package.json | 225 +- packages/.gitkeep | 0 plist/child.plist | 10 - plist/entitlements.mac.plist | 10 - plist/loginhelper.plist | 8 - plist/parent.plist | 12 - renderer/app.css | 3 + {build/icons => renderer/assets}/256x256.png | Bin renderer/components/accounts/New.tsx | 83 + renderer/components/layouts/account.tsx | 48 + renderer/components/layouts/timelines.tsx | 82 + renderer/db.ts | 30 + renderer/interfaces/index.ts | 16 + renderer/next-env.d.ts | 5 + renderer/next.config.js | 10 + renderer/pages/_app.tsx | 14 + renderer/pages/accounts/[id]/[timeline].tsx | 6 + renderer/pages/accounts/[id]/index.tsx | 15 + renderer/pages/index.tsx | 25 + renderer/postcss.config.js | 8 + renderer/preload.d.ts | 7 + renderer/tailwind.config.js | 25 + renderer/tsconfig.json | 13 + renovate.json | 18 - .../icon.png => resources/icons/256x256.png | Bin .../icons/SampleAppx.150x150.png | Bin .../icons/SampleAppx.310x150.png | Bin .../icons/SampleAppx.44x44.png | Bin .../icons/SampleAppx.50x50.png | Bin {build => resources}/icons/icon.icns | Bin {build => resources}/icons/icon.ico | Bin .../icons/icon.iconset/icon_128x128.png | Bin .../icons/icon.iconset/icon_128x128@2x.png | Bin .../icons/icon.iconset/icon_16x16.png | Bin .../icons/icon.iconset/icon_16x16@2x.png | Bin .../icons/icon.iconset/icon_256x256.png | Bin .../icons/icon.iconset/icon_256x256@2x.png | Bin .../icons/icon.iconset/icon_32x32.png | Bin .../icons/icon.iconset/icon_32x32@2x.png | Bin .../icons/icon.iconset/icon_512x512.png | Bin .../icons/icon.iconset/icon_512x512@2x.png | Bin {build => resources}/icons/tray_icon.png | Bin screenshot.png | Bin 433383 -> 0 bytes scripts/thirdparty.js | 27 - spec/.eslintrc | 5 - spec/config/i18n.spec.ts | 43 - spec/main/unit/proxy.spec.ts | 69 - spec/mock/electron.ts | 8 - spec/mock/router.ts | 3 - spec/preferences.json | 1 - spec/renderer/integration/store/App.spec.ts | 107 - .../integration/store/GlobalHeader.spec.ts | 97 - .../store/Preferences/Appearance.spec.ts | 146 - .../store/Preferences/General.spec.ts | 131 - .../store/Preferences/Language.spec.ts | 85 - .../store/Preferences/Notification.spec.ts | 132 - .../store/TimelineSpace/HeaderMenu.spec.ts | 91 - .../Modals/AddListMember.spec.ts | 143 - .../TimelineSpace/Modals/ImageViewer.spec.ts | 219 - .../store/TimelineSpace/Modals/Jump.spec.ts | 109 - .../Modals/ListMembership.spec.ts | 204 - .../renderer/unit/store/TimelineSpace.spec.ts | 34 - .../store/TimelineSpace/HeaderMenu.spec.ts | 20 - spec/renderer/unit/utils/emojify.spec.ts | 61 - spec/renderer/unit/utils/filter.spec.ts | 106 - spec/renderer/unit/utils/suggestText.spec.ts | 44 - spec/renderer/unit/utils/tootParser.spec.ts | 125 - spec/renderer/unit/utils/validator.spec.ts | 69 - spec/setupJest.ts | 10 - src/config/i18n.ts | 106 - src/config/locales/cs/translation.json | 540 - src/config/locales/de/translation.json | 540 - src/config/locales/en/translation.json | 540 - src/config/locales/es_es/translation.json | 540 - src/config/locales/eu/translation.json | 540 - src/config/locales/fa/translation.json | 540 - src/config/locales/fr/translation.json | 540 - src/config/locales/gd/translation.json | 540 - src/config/locales/hu/translation.json | 540 - src/config/locales/id/translation.json | 540 - src/config/locales/is/translation.json | 540 - src/config/locales/it/translation.json | 540 - src/config/locales/ja/translation.json | 540 - src/config/locales/ko/translation.json | 540 - src/config/locales/no/translation.json | 540 - src/config/locales/pl/translation.json | 540 - src/config/locales/pt_pt/translation.json | 540 - src/config/locales/ru/translation.json | 540 - src/config/locales/si/translation.json | 540 - src/config/locales/sv_se/translation.json | 540 - src/config/locales/tzm/translation.json | 540 - src/config/locales/zh_cn/translation.json | 540 - src/config/locales/zh_tw/translation.json | 540 - src/config/thirdparty.json | 1 - src/constants/displayStyle/index.ts | 27 - src/constants/initializer/preferences.ts | 99 - src/constants/initializer/setting.ts | 7 - src/constants/language/index.ts | 151 - src/constants/servers/quote.ts | 3 - src/constants/theme/index.ts | 47 - src/constants/themeColor/index.ts | 83 - src/constants/timeFormat/index.ts | 22 - src/constants/visibility/index.ts | 37 - src/index.ejs | 12 - src/main/database.ts | 51 - src/main/db/account.ts | 227 - src/main/db/hashtags.ts | 59 - src/main/db/server.ts | 44 - src/main/db/setting.ts | 48 - src/main/fonts.ts | 11 - src/main/index.dev.ts | 23 - src/main/index.ts | 1477 --- src/main/preferences.ts | 52 - src/main/preload.js | 5 - src/main/proxy.ts | 104 - src/main/websocket.ts | 151 - src/renderer/App.vue | 151 - src/renderer/assets/.gitkeep | 0 src/renderer/assets/fonts/NotoSans-Bold.ttf | Bin 455164 -> 0 bytes .../assets/fonts/NotoSans-BoldItalic.ttf | Bin 471004 -> 0 bytes src/renderer/assets/fonts/NotoSans-Italic.ttf | Bin 470472 -> 0 bytes .../assets/fonts/NotoSans-Regular.ttf | Bin 455188 -> 0 bytes src/renderer/assets/fonts/fonts.css | 11 - .../assets/images/loading-spinner-wide.svg | 57 - .../assets/images/loading-spinner.svg | 49 - src/renderer/assets/logo.png | Bin 61878 -> 0 bytes src/renderer/assets/timeline-transition.scss | 9 - src/renderer/components/GlobalHeader.vue | 148 - src/renderer/components/Login.vue | 62 - src/renderer/components/Login/Authorize.vue | 157 - src/renderer/components/Login/LoginForm.vue | 218 - src/renderer/components/Preferences.vue | 134 - .../components/Preferences/Account.vue | 214 - .../components/Preferences/Appearance.vue | 151 - .../Preferences/Appearance/ColorPallet.vue | 167 - .../Preferences/Appearance/Toot.vue | 254 - .../components/Preferences/General.vue | 182 - .../components/Preferences/Language.vue | 145 - .../components/Preferences/Network.vue | 128 - .../components/Preferences/Notification.vue | 156 - src/renderer/components/Settings.vue | 131 - src/renderer/components/Settings/Filters.vue | 135 - .../components/Settings/Filters/Edit.vue | 80 - .../components/Settings/Filters/New.vue | 76 - .../components/Settings/Filters/form.vue | 169 - src/renderer/components/Settings/General.vue | 84 - src/renderer/components/Settings/Timeline.vue | 71 - src/renderer/components/TimelineSpace.vue | 136 - .../components/TimelineSpace/Compose.vue | 916 -- .../TimelineSpace/Compose/Quote.vue | 125 - .../components/TimelineSpace/Contents.vue | 46 - .../TimelineSpace/Contents/Bookmarks.vue | 248 - .../TimelineSpace/Contents/DirectMessages.vue | 194 - .../TimelineSpace/Contents/Favourites.vue | 249 - .../TimelineSpace/Contents/FollowRequests.vue | 106 - .../TimelineSpace/Contents/Hashtag.vue | 110 - .../TimelineSpace/Contents/Hashtag/List.vue | 89 - .../TimelineSpace/Contents/Hashtag/Tag.vue | 267 - .../TimelineSpace/Contents/Home.vue | 257 - .../TimelineSpace/Contents/Lists/Edit.vue | 117 - .../TimelineSpace/Contents/Lists/Index.vue | 173 - .../TimelineSpace/Contents/Lists/Show.vue | 264 - .../TimelineSpace/Contents/Local.vue | 201 - .../TimelineSpace/Contents/Notifications.vue | 241 - .../TimelineSpace/Contents/Public.vue | 231 - .../TimelineSpace/Contents/Search.vue | 189 - .../TimelineSpace/Contents/Search/Account.vue | 28 - .../TimelineSpace/Contents/Search/Tag.vue | 28 - .../TimelineSpace/Contents/Search/Toots.vue | 38 - .../components/TimelineSpace/Detail.vue | 91 - .../TimelineSpace/Detail/Profile.vue | 561 - .../Detail/Profile/Followers.vue | 102 - .../Detail/Profile/Following.vue | 102 - .../TimelineSpace/Detail/Profile/Posts.vue | 96 - .../TimelineSpace/Detail/Status.vue | 126 - .../components/TimelineSpace/HeaderMenu.vue | 198 - .../components/TimelineSpace/Modals.vue | 55 - .../TimelineSpace/Modals/AddListMember.vue | 192 - .../TimelineSpace/Modals/ImageViewer.vue | 132 - .../Modals/ImageViewer/Media.vue | 71 - .../components/TimelineSpace/Modals/Jump.vue | 157 - .../TimelineSpace/Modals/ListMembership.vue | 106 - .../TimelineSpace/Modals/MuteConfirm.vue | 58 - .../TimelineSpace/Modals/Report.vue | 57 - .../TimelineSpace/Modals/Shortcut.vue | 147 - .../TimelineSpace/Modals/Thirdparty.vue | 106 - .../components/TimelineSpace/ReceiveDrop.vue | 55 - .../components/TimelineSpace/SideMenu.vue | 594 - src/renderer/components/atoms/FailoverImg.vue | 76 - src/renderer/components/molecules/Tag.vue | 59 - .../components/molecules/Toot/LinkPreview.vue | 106 - .../components/molecules/Toot/Poll.vue | 148 - .../components/molecules/Toot/Quote.vue | 85 - src/renderer/components/molecules/User.vue | 201 - .../components/organisms/Notification.vue | 163 - .../organisms/Notification/Follow.vue | 155 - .../organisms/Notification/FollowRequest.vue | 155 - .../organisms/Notification/Mention.vue | 64 - .../organisms/Notification/Status.vue | 152 - .../organisms/Notification/StatusReaction.vue | 489 - .../components/organisms/StatusLoading.vue | 67 - src/renderer/components/organisms/Toot.vue | 1079 -- src/renderer/components/utils/scroll.ts | 37 - src/renderer/errors/fetch.ts | 1 - src/renderer/errors/load.ts | 1 - src/renderer/errors/validations.ts | 13 - src/renderer/main.ts | 159 - src/renderer/router/index.ts | 223 - src/renderer/store/App.ts | 183 - src/renderer/store/GlobalHeader.ts | 171 - src/renderer/store/Preferences.ts | 38 - src/renderer/store/Preferences/Account.ts | 68 - src/renderer/store/Preferences/Appearance.ts | 155 - src/renderer/store/Preferences/General.ts | 136 - src/renderer/store/Preferences/Language.ts | 81 - src/renderer/store/Preferences/Network.ts | 155 - .../store/Preferences/Notification.ts | 69 - src/renderer/store/Settings.ts | 44 - src/renderer/store/Settings/Filters.ts | 88 - src/renderer/store/Settings/Filters/Edit.ts | 99 - src/renderer/store/Settings/Filters/New.ts | 89 - src/renderer/store/Settings/General.ts | 86 - src/renderer/store/Settings/Timeline.ts | 56 - src/renderer/store/TimelineSpace.ts | 218 - src/renderer/store/TimelineSpace/Compose.ts | 43 - src/renderer/store/TimelineSpace/Contents.ts | 58 - .../TimelineSpace/Contents/DirectMessages.ts | 112 - .../store/TimelineSpace/Contents/Home.ts | 245 - .../store/TimelineSpace/Contents/Local.ts | 110 - .../TimelineSpace/Contents/Notifications.ts | 241 - .../store/TimelineSpace/HeaderMenu.ts | 71 - src/renderer/store/TimelineSpace/Modals.ts | 55 - .../TimelineSpace/Modals/AddListMember.ts | 75 - .../store/TimelineSpace/Modals/ImageViewer.ts | 116 - .../store/TimelineSpace/Modals/Jump.ts | 102 - .../TimelineSpace/Modals/ListMembership.ts | 107 - .../store/TimelineSpace/Modals/MuteConfirm.ts | 61 - .../store/TimelineSpace/Modals/Report.ts | 55 - .../store/TimelineSpace/Modals/Shortcut.ts | 26 - src/renderer/store/TimelineSpace/SideMenu.ts | 87 - src/renderer/store/index.ts | 39 - src/renderer/types/element-ui.d.ts | 1 - .../types/i18next-sync-fs-backend.d.ts | 1 - src/renderer/types/loadPosition.ts | 17 - src/renderer/types/loading-card.ts | 7 - src/renderer/types/removeAccountFromList.ts | 6 - src/renderer/types/vue-popperjs.d.ts | 1 - src/renderer/types/vue-shortkey.d.ts | 1 - src/renderer/types/vue.d.ts | 5 - src/renderer/utils/axiosLoading.ts | 39 - src/renderer/utils/datetime.ts | 12 - src/renderer/utils/emojify.ts | 16 - src/renderer/utils/filter.ts | 38 - src/renderer/utils/fonts/index.ts | 16 - src/renderer/utils/quoteSupported.ts | 13 - src/renderer/utils/suggestText.ts | 31 - src/renderer/utils/tootParser.ts | 122 - src/renderer/utils/username.ts | 31 - src/renderer/utils/validator.ts | 2 - src/types/accountNotification.ts | 6 - src/types/appearance.ts | 11 - src/types/cachedAccount.ts | 5 - src/types/enabledTimelines.ts | 12 - src/types/global.ts | 10 - src/types/insertAccountCache.ts | 4 - src/types/language.ts | 7 - src/types/localAccount.ts | 11 - src/types/localServer.ts | 7 - src/types/localTag.ts | 5 - src/types/notify.ts | 11 - src/types/preference.ts | 40 - src/types/proxy.ts | 27 - src/types/setting.ts | 5 - src/types/sound.ts | 4 - src/types/timeline.ts | 5 - static/.gitkeep | 0 static/images/loading.svg | 49 - static/splash-screen.html | 15 - tsconfig.json | 44 +- windows-store.svg | 82 - yarn.lock | 10232 ++-------------- 325 files changed, 1703 insertions(+), 48778 deletions(-) delete mode 100644 .babelrc delete mode 100644 .electron-vue/build.js delete mode 100644 .electron-vue/dev-client.js delete mode 100644 .electron-vue/dev-runner.js delete mode 100644 .electron-vue/webpack.main.config.js delete mode 100644 .electron-vue/webpack.renderer.config.js delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/other-request.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/reviewdog.yml delete mode 100644 .github/workflows/thirdparty.yml delete mode 100644 .npmrc delete mode 100644 .stylelintignore delete mode 100644 .stylelintrc.json delete mode 100644 .tool-versions delete mode 100644 CHANGELOG.md delete mode 100644 CODEOWNERS delete mode 100644 LICENSE delete mode 100644 Makefile delete mode 100755 app-store.svg delete mode 100644 build/notarize.js delete mode 100644 build/sounds/operation_sound01.wav delete mode 100644 build/sounds/operation_sound02.wav delete mode 100644 crowdin.yml delete mode 100644 dist/electron/.gitkeep delete mode 100644 dist/web/.gitkeep delete mode 100644 electron-builder.json delete mode 100644 electron-builder.mas.json create mode 100644 electron-builder.yml delete mode 100644 flatpak-data/social.whalebird.WhalebirdDesktop.desktop delete mode 100644 flatpak-data/social.whalebird.WhalebirdDesktop.metainfo.xml create mode 100644 main/background.ts create mode 100644 main/helpers/create-window.ts create mode 100644 main/helpers/index.ts create mode 100644 main/preload.ts delete mode 100644 packages/.gitkeep delete mode 100644 plist/child.plist delete mode 100644 plist/entitlements.mac.plist delete mode 100644 plist/loginhelper.plist delete mode 100644 plist/parent.plist create mode 100644 renderer/app.css rename {build/icons => renderer/assets}/256x256.png (100%) create mode 100644 renderer/components/accounts/New.tsx create mode 100644 renderer/components/layouts/account.tsx create mode 100644 renderer/components/layouts/timelines.tsx create mode 100644 renderer/db.ts create mode 100644 renderer/interfaces/index.ts create mode 100644 renderer/next-env.d.ts create mode 100644 renderer/next.config.js create mode 100644 renderer/pages/_app.tsx create mode 100644 renderer/pages/accounts/[id]/[timeline].tsx create mode 100644 renderer/pages/accounts/[id]/index.tsx create mode 100644 renderer/pages/index.tsx create mode 100644 renderer/postcss.config.js create mode 100644 renderer/preload.d.ts create mode 100644 renderer/tailwind.config.js create mode 100644 renderer/tsconfig.json delete mode 100644 renovate.json rename static/images/icon.png => resources/icons/256x256.png (100%) rename {build => resources}/icons/SampleAppx.150x150.png (100%) rename {build => resources}/icons/SampleAppx.310x150.png (100%) rename {build => resources}/icons/SampleAppx.44x44.png (100%) rename {build => resources}/icons/SampleAppx.50x50.png (100%) rename {build => resources}/icons/icon.icns (100%) rename {build => resources}/icons/icon.ico (100%) rename {build => resources}/icons/icon.iconset/icon_128x128.png (100%) rename {build => resources}/icons/icon.iconset/icon_128x128@2x.png (100%) rename {build => resources}/icons/icon.iconset/icon_16x16.png (100%) rename {build => resources}/icons/icon.iconset/icon_16x16@2x.png (100%) rename {build => resources}/icons/icon.iconset/icon_256x256.png (100%) rename {build => resources}/icons/icon.iconset/icon_256x256@2x.png (100%) rename {build => resources}/icons/icon.iconset/icon_32x32.png (100%) rename {build => resources}/icons/icon.iconset/icon_32x32@2x.png (100%) rename {build => resources}/icons/icon.iconset/icon_512x512.png (100%) rename {build => resources}/icons/icon.iconset/icon_512x512@2x.png (100%) rename {build => resources}/icons/tray_icon.png (100%) delete mode 100644 screenshot.png delete mode 100644 scripts/thirdparty.js delete mode 100644 spec/.eslintrc delete mode 100644 spec/config/i18n.spec.ts delete mode 100644 spec/main/unit/proxy.spec.ts delete mode 100644 spec/mock/electron.ts delete mode 100644 spec/mock/router.ts delete mode 100644 spec/preferences.json delete mode 100644 spec/renderer/integration/store/App.spec.ts delete mode 100644 spec/renderer/integration/store/GlobalHeader.spec.ts delete mode 100644 spec/renderer/integration/store/Preferences/Appearance.spec.ts delete mode 100644 spec/renderer/integration/store/Preferences/General.spec.ts delete mode 100644 spec/renderer/integration/store/Preferences/Language.spec.ts delete mode 100644 spec/renderer/integration/store/Preferences/Notification.spec.ts delete mode 100644 spec/renderer/integration/store/TimelineSpace/HeaderMenu.spec.ts delete mode 100644 spec/renderer/integration/store/TimelineSpace/Modals/AddListMember.spec.ts delete mode 100644 spec/renderer/integration/store/TimelineSpace/Modals/ImageViewer.spec.ts delete mode 100644 spec/renderer/integration/store/TimelineSpace/Modals/Jump.spec.ts delete mode 100644 spec/renderer/integration/store/TimelineSpace/Modals/ListMembership.spec.ts delete mode 100644 spec/renderer/unit/store/TimelineSpace.spec.ts delete mode 100644 spec/renderer/unit/store/TimelineSpace/HeaderMenu.spec.ts delete mode 100644 spec/renderer/unit/utils/emojify.spec.ts delete mode 100644 spec/renderer/unit/utils/filter.spec.ts delete mode 100644 spec/renderer/unit/utils/suggestText.spec.ts delete mode 100644 spec/renderer/unit/utils/tootParser.spec.ts delete mode 100644 spec/renderer/unit/utils/validator.spec.ts delete mode 100644 spec/setupJest.ts delete mode 100644 src/config/i18n.ts delete mode 100644 src/config/locales/cs/translation.json delete mode 100644 src/config/locales/de/translation.json delete mode 100644 src/config/locales/en/translation.json delete mode 100644 src/config/locales/es_es/translation.json delete mode 100644 src/config/locales/eu/translation.json delete mode 100644 src/config/locales/fa/translation.json delete mode 100644 src/config/locales/fr/translation.json delete mode 100644 src/config/locales/gd/translation.json delete mode 100644 src/config/locales/hu/translation.json delete mode 100644 src/config/locales/id/translation.json delete mode 100644 src/config/locales/is/translation.json delete mode 100644 src/config/locales/it/translation.json delete mode 100644 src/config/locales/ja/translation.json delete mode 100644 src/config/locales/ko/translation.json delete mode 100644 src/config/locales/no/translation.json delete mode 100644 src/config/locales/pl/translation.json delete mode 100644 src/config/locales/pt_pt/translation.json delete mode 100644 src/config/locales/ru/translation.json delete mode 100644 src/config/locales/si/translation.json delete mode 100644 src/config/locales/sv_se/translation.json delete mode 100644 src/config/locales/tzm/translation.json delete mode 100644 src/config/locales/zh_cn/translation.json delete mode 100644 src/config/locales/zh_tw/translation.json delete mode 100644 src/config/thirdparty.json delete mode 100644 src/constants/displayStyle/index.ts delete mode 100644 src/constants/initializer/preferences.ts delete mode 100644 src/constants/initializer/setting.ts delete mode 100644 src/constants/language/index.ts delete mode 100644 src/constants/servers/quote.ts delete mode 100644 src/constants/theme/index.ts delete mode 100644 src/constants/themeColor/index.ts delete mode 100644 src/constants/timeFormat/index.ts delete mode 100644 src/constants/visibility/index.ts delete mode 100644 src/index.ejs delete mode 100644 src/main/database.ts delete mode 100644 src/main/db/account.ts delete mode 100644 src/main/db/hashtags.ts delete mode 100644 src/main/db/server.ts delete mode 100644 src/main/db/setting.ts delete mode 100644 src/main/fonts.ts delete mode 100644 src/main/index.dev.ts delete mode 100644 src/main/index.ts delete mode 100644 src/main/preferences.ts delete mode 100644 src/main/preload.js delete mode 100644 src/main/proxy.ts delete mode 100644 src/main/websocket.ts delete mode 100644 src/renderer/App.vue delete mode 100644 src/renderer/assets/.gitkeep delete mode 100644 src/renderer/assets/fonts/NotoSans-Bold.ttf delete mode 100644 src/renderer/assets/fonts/NotoSans-BoldItalic.ttf delete mode 100644 src/renderer/assets/fonts/NotoSans-Italic.ttf delete mode 100644 src/renderer/assets/fonts/NotoSans-Regular.ttf delete mode 100644 src/renderer/assets/fonts/fonts.css delete mode 100644 src/renderer/assets/images/loading-spinner-wide.svg delete mode 100644 src/renderer/assets/images/loading-spinner.svg delete mode 100644 src/renderer/assets/logo.png delete mode 100644 src/renderer/assets/timeline-transition.scss delete mode 100644 src/renderer/components/GlobalHeader.vue delete mode 100644 src/renderer/components/Login.vue delete mode 100644 src/renderer/components/Login/Authorize.vue delete mode 100644 src/renderer/components/Login/LoginForm.vue delete mode 100644 src/renderer/components/Preferences.vue delete mode 100644 src/renderer/components/Preferences/Account.vue delete mode 100644 src/renderer/components/Preferences/Appearance.vue delete mode 100644 src/renderer/components/Preferences/Appearance/ColorPallet.vue delete mode 100644 src/renderer/components/Preferences/Appearance/Toot.vue delete mode 100644 src/renderer/components/Preferences/General.vue delete mode 100644 src/renderer/components/Preferences/Language.vue delete mode 100644 src/renderer/components/Preferences/Network.vue delete mode 100644 src/renderer/components/Preferences/Notification.vue delete mode 100644 src/renderer/components/Settings.vue delete mode 100644 src/renderer/components/Settings/Filters.vue delete mode 100644 src/renderer/components/Settings/Filters/Edit.vue delete mode 100644 src/renderer/components/Settings/Filters/New.vue delete mode 100644 src/renderer/components/Settings/Filters/form.vue delete mode 100644 src/renderer/components/Settings/General.vue delete mode 100644 src/renderer/components/Settings/Timeline.vue delete mode 100644 src/renderer/components/TimelineSpace.vue delete mode 100644 src/renderer/components/TimelineSpace/Compose.vue delete mode 100644 src/renderer/components/TimelineSpace/Compose/Quote.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Bookmarks.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/DirectMessages.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Favourites.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/FollowRequests.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Hashtag.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Hashtag/List.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Hashtag/Tag.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Home.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Lists/Edit.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Lists/Index.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Lists/Show.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Local.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Notifications.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Public.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Search.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Search/Account.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Search/Tag.vue delete mode 100644 src/renderer/components/TimelineSpace/Contents/Search/Toots.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail/Profile.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail/Profile/Followers.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail/Profile/Following.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail/Profile/Posts.vue delete mode 100644 src/renderer/components/TimelineSpace/Detail/Status.vue delete mode 100644 src/renderer/components/TimelineSpace/HeaderMenu.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/AddListMember.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/ImageViewer.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/ImageViewer/Media.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/Jump.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/ListMembership.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/MuteConfirm.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/Report.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/Shortcut.vue delete mode 100644 src/renderer/components/TimelineSpace/Modals/Thirdparty.vue delete mode 100644 src/renderer/components/TimelineSpace/ReceiveDrop.vue delete mode 100644 src/renderer/components/TimelineSpace/SideMenu.vue delete mode 100644 src/renderer/components/atoms/FailoverImg.vue delete mode 100644 src/renderer/components/molecules/Tag.vue delete mode 100644 src/renderer/components/molecules/Toot/LinkPreview.vue delete mode 100644 src/renderer/components/molecules/Toot/Poll.vue delete mode 100644 src/renderer/components/molecules/Toot/Quote.vue delete mode 100644 src/renderer/components/molecules/User.vue delete mode 100644 src/renderer/components/organisms/Notification.vue delete mode 100644 src/renderer/components/organisms/Notification/Follow.vue delete mode 100644 src/renderer/components/organisms/Notification/FollowRequest.vue delete mode 100644 src/renderer/components/organisms/Notification/Mention.vue delete mode 100644 src/renderer/components/organisms/Notification/Status.vue delete mode 100644 src/renderer/components/organisms/Notification/StatusReaction.vue delete mode 100644 src/renderer/components/organisms/StatusLoading.vue delete mode 100644 src/renderer/components/organisms/Toot.vue delete mode 100644 src/renderer/components/utils/scroll.ts delete mode 100644 src/renderer/errors/fetch.ts delete mode 100644 src/renderer/errors/load.ts delete mode 100644 src/renderer/errors/validations.ts delete mode 100644 src/renderer/main.ts delete mode 100644 src/renderer/router/index.ts delete mode 100644 src/renderer/store/App.ts delete mode 100644 src/renderer/store/GlobalHeader.ts delete mode 100644 src/renderer/store/Preferences.ts delete mode 100644 src/renderer/store/Preferences/Account.ts delete mode 100644 src/renderer/store/Preferences/Appearance.ts delete mode 100644 src/renderer/store/Preferences/General.ts delete mode 100644 src/renderer/store/Preferences/Language.ts delete mode 100644 src/renderer/store/Preferences/Network.ts delete mode 100644 src/renderer/store/Preferences/Notification.ts delete mode 100644 src/renderer/store/Settings.ts delete mode 100644 src/renderer/store/Settings/Filters.ts delete mode 100644 src/renderer/store/Settings/Filters/Edit.ts delete mode 100644 src/renderer/store/Settings/Filters/New.ts delete mode 100644 src/renderer/store/Settings/General.ts delete mode 100644 src/renderer/store/Settings/Timeline.ts delete mode 100644 src/renderer/store/TimelineSpace.ts delete mode 100644 src/renderer/store/TimelineSpace/Compose.ts delete mode 100644 src/renderer/store/TimelineSpace/Contents.ts delete mode 100644 src/renderer/store/TimelineSpace/Contents/DirectMessages.ts delete mode 100644 src/renderer/store/TimelineSpace/Contents/Home.ts delete mode 100644 src/renderer/store/TimelineSpace/Contents/Local.ts delete mode 100644 src/renderer/store/TimelineSpace/Contents/Notifications.ts delete mode 100644 src/renderer/store/TimelineSpace/HeaderMenu.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/AddListMember.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/ImageViewer.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/Jump.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/ListMembership.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/MuteConfirm.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/Report.ts delete mode 100644 src/renderer/store/TimelineSpace/Modals/Shortcut.ts delete mode 100644 src/renderer/store/TimelineSpace/SideMenu.ts delete mode 100644 src/renderer/store/index.ts delete mode 100644 src/renderer/types/element-ui.d.ts delete mode 100644 src/renderer/types/i18next-sync-fs-backend.d.ts delete mode 100644 src/renderer/types/loadPosition.ts delete mode 100644 src/renderer/types/loading-card.ts delete mode 100644 src/renderer/types/removeAccountFromList.ts delete mode 100644 src/renderer/types/vue-popperjs.d.ts delete mode 100644 src/renderer/types/vue-shortkey.d.ts delete mode 100644 src/renderer/types/vue.d.ts delete mode 100644 src/renderer/utils/axiosLoading.ts delete mode 100644 src/renderer/utils/datetime.ts delete mode 100644 src/renderer/utils/emojify.ts delete mode 100644 src/renderer/utils/filter.ts delete mode 100644 src/renderer/utils/fonts/index.ts delete mode 100644 src/renderer/utils/quoteSupported.ts delete mode 100644 src/renderer/utils/suggestText.ts delete mode 100644 src/renderer/utils/tootParser.ts delete mode 100644 src/renderer/utils/username.ts delete mode 100644 src/renderer/utils/validator.ts delete mode 100644 src/types/accountNotification.ts delete mode 100644 src/types/appearance.ts delete mode 100644 src/types/cachedAccount.ts delete mode 100644 src/types/enabledTimelines.ts delete mode 100644 src/types/global.ts delete mode 100644 src/types/insertAccountCache.ts delete mode 100644 src/types/language.ts delete mode 100644 src/types/localAccount.ts delete mode 100644 src/types/localServer.ts delete mode 100644 src/types/localTag.ts delete mode 100644 src/types/notify.ts delete mode 100644 src/types/preference.ts delete mode 100644 src/types/proxy.ts delete mode 100644 src/types/setting.ts delete mode 100644 src/types/sound.ts delete mode 100644 src/types/timeline.ts delete mode 100644 static/.gitkeep delete mode 100644 static/images/loading.svg delete mode 100644 static/splash-screen.html delete mode 100644 windows-store.svg diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 6fe96f01..00000000 --- a/.babelrc +++ /dev/null @@ -1,55 +0,0 @@ -{ - "comments": false, - "env": { - "test": { - "presets": [ - ["@babel/preset-env", { - "targets": { "node": 10 } - }] - ], - "plugins": [ - "istanbul", - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-object-rest-spread", - "@babel/plugin-transform-runtime" - ] - }, - "main": { - "presets": [ - ["@babel/preset-env", { - "targets": { "node": 10 } - }] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-object-rest-spread", - "@babel/plugin-transform-runtime" - ] - }, - "renderer": { - "presets": [ - ["@babel/preset-env", { - "modules": false, - "targets": { "electron": "6" } - }] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-object-rest-spread", - "@babel/plugin-transform-runtime" - ] - }, - "web": { - "presets": [ - ["@babel/preset-env", { - "modules": false - }] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-object-rest-spread", - "@babel/plugin-transform-runtime" - ] - } - } -} diff --git a/.electron-vue/build.js b/.electron-vue/build.js deleted file mode 100644 index 23df1ac3..00000000 --- a/.electron-vue/build.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict' - -process.env.NODE_ENV = 'production' - -const { say } = require('cfonts') -const chalk = require('chalk') -const del = require('del') -const { spawn } = require('child_process') -const webpack = require('webpack') -const Listr = require('listr') - -const mainConfig = require('./webpack.main.config') -const rendererConfig = require('./webpack.renderer.config') - -const doneLog = chalk.bgGreen.white(' DONE ') + ' ' -const errorLog = chalk.bgRed.white(' ERROR ') + ' ' -const okayLog = chalk.bgBlue.white(' OKAY ') + ' ' -const isCI = process.env.CI || false - -if (process.env.BUILD_TARGET === 'clean') clean() -else build() - -function clean() { - del.sync(['build/*', '!build/icons', '!build/icons/icon.*', '!build/sounds', '!build/sounds/*', '!build/notarize.js']) - del.sync(['packages/*', '!packages/universal.js', '!packages/packager.js', "!packages/socialwhalebirdapp_MAS.provisionprofile"]) - console.log(`\n${doneLog}\n`) - process.exit() -} - -async function build() { - del.sync(['dist/electron/*', '!.gitkeep']) - - let results = '' - - const tasks = new Listr( - [ - { - title: 'building master process', - task: async () => { - await pack(mainConfig).catch(err => { - console.log(`\n ${errorLog}failed to build main process`) - console.error(`\n${err}\n`) - }) - } - }, - { - title: 'building renderer process', - task: async () => { - await pack(rendererConfig).catch(err => { - console.log(`\n ${errorLog}failed to build renderer process`) - console.error(`\n${err}\n`) - }) - } - } - ], - { concurrent: 2 } - ) - - await tasks - .run() - .then(() => { - process.stdout.write('\x1B[2J\x1B[0f') - console.log(`\n\n${results}`) - process.exit() - }) - .catch(err => { - process.exit(1) - }) -} - -function pack(config) { - return new Promise((resolve, reject) => { - config.mode = 'production' - webpack(config, (err, stats) => { - if (err) reject(err.stack || err) - else if (stats.hasErrors()) { - let err = '' - - stats - .toString({ - chunks: false, - colors: true - }) - .split(/\r?\n/) - .forEach(line => { - err += ` ${line}\n` - }) - - reject(err) - } else { - resolve(null) - } - }) - }) -} diff --git a/.electron-vue/dev-client.js b/.electron-vue/dev-client.js deleted file mode 100644 index 2913ea4b..00000000 --- a/.electron-vue/dev-client.js +++ /dev/null @@ -1,40 +0,0 @@ -const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') - -hotClient.subscribe(event => { - /** - * Reload browser when HTMLWebpackPlugin emits a new index.html - * - * Currently disabled until jantimon/html-webpack-plugin#680 is resolved. - * https://github.com/SimulatedGREG/electron-vue/issues/437 - * https://github.com/jantimon/html-webpack-plugin/issues/680 - */ - // if (event.action === 'reload') { - // window.location.reload() - // } - - /** - * Notify `mainWindow` when `main` process is compiling, - * giving notice for an expected reload of the `electron` process - */ - if (event.action === 'compiling') { - document.body.innerHTML += ` - - -
- Compiling Main Process... -
- ` - } -}) diff --git a/.electron-vue/dev-runner.js b/.electron-vue/dev-runner.js deleted file mode 100644 index a4030975..00000000 --- a/.electron-vue/dev-runner.js +++ /dev/null @@ -1,177 +0,0 @@ -'use strict' - -const clc = require('cli-color') -const electron = require('electron') -const path = require('path') -const { say } = require('cfonts') -const { spawn } = require('child_process') -const webpack = require('webpack') -const WebpackDevServer = require('webpack-dev-server') -const webpackHotMiddleware = require('webpack-hot-middleware') - -const mainConfig = require('./webpack.main.config') -const rendererConfig = require('./webpack.renderer.config') - -let electronProcess = null -let manualRestart = false -let hotMiddleware - -function logStats(proc, data) { - let log = '' - - log += clc.yellow.bold(`┏ ${proc} Process ${new Array(19 - proc.length + 1).join('-')}`) - log += '\n\n' - - if (typeof data === 'object') { - data - .toString({ - colors: true, - chunks: false - }) - .split(/\r?\n/) - .forEach(line => { - log += ' ' + line + '\n' - }) - } else { - log += ` ${data}\n` - } - - log += '\n' + clc.yellow.bold(`┗ ${new Array(28 + 1).join('-')}`) + '\n' - - console.log(log) -} - -function startRenderer() { - return new Promise((resolve, reject) => { - rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer) - rendererConfig.mode = 'development' - const compiler = webpack(rendererConfig) - hotMiddleware = webpackHotMiddleware(compiler, { - log: false, - heartbeat: 2500 - }) - - compiler.hooks.compilation.tap('compilation', compilation => { - const HtmlWebpackPlugin = require('html-webpack-plugin') - HtmlWebpackPlugin.getHooks(compilation).afterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => { - hotMiddleware.publish({ action: 'reload' }) - cb() - }) - }) - - compiler.hooks.done.tap('done', stats => { - logStats('Renderer', stats) - }) - - const server = new WebpackDevServer( - { - static: { - directory: path.resolve(__dirname, '../') - }, - setupMiddlewares: function (middlewares, devServer) { - middlewares.unshift(hotMiddleware) - devServer.middleware.waitUntilValid(() => { - resolve() - }) - return middlewares - }, - port: 9080 - }, - compiler - ) - - server.start() - }) -} - -function startMain() { - return new Promise((resolve, reject) => { - mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.ts')].concat(mainConfig.entry.main) - mainConfig.mode = 'development' - const compiler = webpack(mainConfig) - - compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => { - logStats('Main', clc.white.bold('compiling...')) - hotMiddleware.publish({ action: 'compiling' }) - done() - }) - - compiler.watch({}, (err, stats) => { - if (err) { - console.log(err) - return - } - - logStats('Main', stats) - - resolve() - }) - }) -} - -function startElectron() { - var args = ['--inspect=5858', path.join(__dirname, '../dist/electron/main.js')] - - // detect yarn or npm and process commandline args accordingly - if (process.env.npm_execpath.endsWith('yarn.js')) { - args = args.concat(process.argv.slice(3)) - } else if (process.env.npm_execpath.endsWith('npm-cli.js')) { - args = args.concat(process.argv.slice(2)) - } - - electronProcess = spawn(electron, args) - - electronProcess.stdout.on('data', data => { - electronLog(data, 'blue') - }) - electronProcess.stderr.on('data', data => { - electronLog(data, 'red') - }) - - electronProcess.on('close', () => { - if (!manualRestart) process.exit() - }) -} - -function electronLog(data, color) { - let log = '' - data = data.toString().split(/\r?\n/) - data.forEach(line => { - log += ` ${line}\n` - }) - if (/[0-9A-z]+/.test(log)) { - console.log(clc[color].bold('┏ Electron -------------------') + '\n\n' + log + clc[color].bold('┗ ----------------------------') + '\n') - } -} - -function greeting() { - const cols = process.stdout.columns - let text = '' - - if (cols > 104) text = 'electron-vue' - else if (cols > 76) text = 'electron-|vue' - else text = false - - if (text) { - say(text, { - colors: ['yellow'], - font: 'simple3d', - space: false - }) - } else console.log(clc.yellow.bold('\n electron-vue')) - console.log(clc.blue(' getting ready...') + '\n') -} - -function init() { - greeting() - - Promise.all([startRenderer(), startMain()]) - .then(() => { - startElectron() - }) - .catch(err => { - console.error(err) - }) -} - -init() diff --git a/.electron-vue/webpack.main.config.js b/.electron-vue/webpack.main.config.js deleted file mode 100644 index 3ca31471..00000000 --- a/.electron-vue/webpack.main.config.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict' - -process.env.BABEL_ENV = 'main' - -const path = require('path') -const { dependencies } = require('../package.json') -const webpack = require('webpack') - -const CopyWebpackPlugin = require('copy-webpack-plugin') - -let mainConfig = { - entry: { - main: path.join(__dirname, '../src/main/index.ts'), - preload: path.join(__dirname, '../src/main/preload.js') - }, - externals: [...Object.keys(dependencies || {})], - module: { - rules: [ - { - test: /\.ts$/, - exclude: /node_modules/, - use: [ - { - loader: 'ts-loader', - options: { - transpileOnly: true - } - } - ] - }, - { - test: /\.js$/, - use: 'babel-loader', - exclude: /node_modules/ - }, - { - test: /\.node$/, - use: 'node-loader' - }, - { - test: /\.json$/, - exclude: /node_modules/, - use: 'json-loader', - type: 'javascript/auto' - } - ] - }, - node: { - __dirname: process.env.NODE_ENV !== 'production', - __filename: process.env.NODE_ENV !== 'production' - }, - output: { - filename: '[name].js', - libraryTarget: 'commonjs2', - path: path.join(__dirname, '../dist/electron') - }, - plugins: [ - new webpack.NoEmitOnErrorsPlugin(), - new CopyWebpackPlugin({ - patterns: [ - { - from: path.join(__dirname, '../src/config/locales'), - to: path.join(__dirname, '../dist/electron/locales'), - globOptions: { - ignore: ['.*', '*~'] - } - } - ] - }) - ], - resolve: { - alias: { - // Same as tsconfig.json - '@': path.join(__dirname, '../src/renderer'), - '~': path.join(__dirname, '../') - }, - extensions: ['.js', '.json', '.node', '.ts'] - }, - target: 'electron-main' -} - -/** - * Adjust mainConfig for development settings - */ -if (process.env.NODE_ENV !== 'production') { - mainConfig.plugins.push( - new webpack.DefinePlugin({ - __static: `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"` - }) - ) -} - -/** - * Adjust mainConfig for production settings - */ -if (process.env.NODE_ENV === 'production') { - mainConfig.mode = 'production' - mainConfig.plugins.push( - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }) - ) -} - -module.exports = mainConfig diff --git a/.electron-vue/webpack.renderer.config.js b/.electron-vue/webpack.renderer.config.js deleted file mode 100644 index 96d66111..00000000 --- a/.electron-vue/webpack.renderer.config.js +++ /dev/null @@ -1,262 +0,0 @@ -'use strict' - -process.env.BABEL_ENV = 'renderer' - -const path = require('path') -const { dependencies } = require('../package.json') -const webpack = require('webpack') - -const CopyWebpackPlugin = require('copy-webpack-plugin') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const HtmlWebpackPlugin = require('html-webpack-plugin') -const { VueLoaderPlugin } = require('vue-loader') - -let rendererConfig = { - entry: { - renderer: path.join(__dirname, '../src/renderer/main.ts') - }, - module: { - rules: [ - { - test: /\.m?js$/, - resolve: { - fullySpecified: false - } - }, - { - test: /\.vue$/, - use: { - loader: 'vue-loader', - options: { - extractCSS: process.env.NODE_ENV === 'production', - esModule: true, - optimizeSSR: false - } - } - }, - { - test: /\.scss$/, - use: [ - 'vue-style-loader', - { - loader: 'css-loader', - options: { - modules: false, - esModule: false - } - }, - 'sass-loader' - ] - }, - { - test: /\.sass$/, - use: [ - 'vue-style-loader', - - { - loader: 'css-loader', - options: { - modules: false, - esModule: false - } - }, - 'sass-loader?indentedSyntax' - ] - }, - { - test: /\.less$/, - use: [ - 'vue-style-loader', - { - loader: 'css-loader', - options: { - modules: false, - esModule: false - } - }, - 'less-loader' - ] - }, - { - test: /\.css$/, - use: [ - 'vue-style-loader', - { - loader: 'css-loader', - options: { - modules: false, - esModule: false - } - } - ] - }, - { - test: /\.html$/, - use: 'vue-html-loader' - }, - { - test: /\.ts$/, - exclude: /node_modules/, - use: [ - { - loader: 'babel-loader?cacheDirectory' - }, - { - loader: 'ts-loader', - options: { - appendTsSuffixTo: [/\.vue$/], - transpileOnly: true - } - } - ] - }, - { - test: /\.js$/, - use: 'babel-loader?cacheDirectory', - exclude: /node_modules/ - }, - { - test: /\.node$/, - use: 'node-loader' - }, - { - test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, - use: { - loader: 'url-loader', - options: { - limit: 10000, - name: 'imgs/[name]--[folder].[ext]', - esModule: false - } - } - }, - { - test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, - loader: 'url-loader', - options: { - limit: 10000, - name: 'media/[name]--[folder].[ext]' - } - }, - { - test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - use: { - loader: 'url-loader', - options: { - limit: 10000, - name: 'fonts/[name]--[folder].[ext]' - } - } - }, - { - test: /\.json$/, - exclude: /node_modules/, - use: 'json-loader', - type: 'javascript/auto' - } - ] - }, - node: { - __dirname: process.env.NODE_ENV !== 'production', - __filename: process.env.NODE_ENV !== 'production' - }, - devServer: { - hot: true, - hotOnly: true - }, - plugins: [ - new VueLoaderPlugin(), - new MiniCssExtractPlugin({ filename: 'styles.css' }), - new HtmlWebpackPlugin({ - filename: 'index.html', - template: path.resolve(__dirname, '../src/index.ejs'), - minify: { - collapseWhitespace: true, - removeAttributeQuotes: true, - removeComments: true - }, - nodeModules: process.env.NODE_ENV !== 'production' ? path.resolve(__dirname, '../node_modules') : false - }), - new webpack.NoEmitOnErrorsPlugin(), - new webpack.DefinePlugin({ - 'process.browser': true, - 'process.env.NODE_DEBUG': false - }), - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'] - }), - new webpack.ProvidePlugin({ - process: 'process/browser' - }) - ], - output: { - filename: '[name].js', - path: path.join(__dirname, '../dist/electron') - }, - resolve: { - alias: { - // Same as tsconfig.json - '@': path.join(__dirname, '../src/renderer'), - '~': path.join(__dirname, '../') - }, - extensions: ['.ts', '.js', '.vue', '.json', '.css', '.node'], - fallback: { - timers: require.resolve('timers-browserify'), - url: require.resolve('url/'), - assert: require.resolve('assert/'), - buffer: require.resolve('buffer/'), - os: require.resolve('os-browserify/browser'), - path: require.resolve('path-browserify'), - crypto: require.resolve('crypto-browserify'), - http: require.resolve('stream-http'), - https: require.resolve('https-browserify'), - stream: require.resolve('stream-browserify'), - zlib: require.resolve('browserify-zlib'), - net: false, - tls: false, - fs: false, - dns: false - } - }, - target: 'web' -} - -/** - * Adjust rendererConfig for development settings - */ -if (process.env.NODE_ENV !== 'production') { - rendererConfig.plugins.push( - new webpack.DefinePlugin({ - __static: `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"` - }) - ) - rendererConfig.devtool = 'eval-cheap-module-source-map' -} - -/** - * Adjust rendererConfig for production settings - */ -if (process.env.NODE_ENV === 'production') { - rendererConfig.mode = 'production' - rendererConfig.plugins.push( - new CopyWebpackPlugin({ - patterns: [ - { - from: path.join(__dirname, '../static'), - to: path.join(__dirname, '../dist/electron/static'), - globOptions: { - ignore: ['.*', '*~'] - } - } - ] - }), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }), - new webpack.LoaderOptionsPlugin({ - minimize: true - }) - ) -} - -module.exports = rendererConfig diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 3659f1ad..00000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/* -dist/* diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 7f910044..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - root: true, - parser: 'vue-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser', - sourceType: 'module', - ecmaVersion: 12 - }, - env: { - browser: true, - node: true, - es2021: true - }, - extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', '@vue/typescript/recommended', 'prettier'], - globals: { - __static: true - }, - plugins: ['@typescript-eslint', 'vue'], - rules: { - // allow paren-less arrow functions - 'arrow-parens': 0, - // allow async-await - 'generator-star-spacing': 0, - // allow debugger during development - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_' - } - ], - '@typescript-eslint/no-explicit-any': 'off', - camelcase: 'off', - '@typescript-eslint/camelcase': 'off', - 'space-before-function-paren': 'off', - 'vue/multi-word-component-names': 'off', - 'vue/attributes-order': 'off', - 'vue/attribute-hyphenation': 'off', - 'vue/no-v-html': 'off' - } -} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 65453a6f..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: h3poteto diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 02831e10..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' - ---- - -## Description - - - -## How To Reproduce -1. -2. -3. - -## Your Environment - - OS: [e.g. MacOS] - - Whalebird Version: [e.g. 1.0.0] - - Instance: [e.g. mastodon.social] diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index a758b5e6..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: 'feature' -assignees: '' - ---- - -## Describe - - -## Why - diff --git a/.github/ISSUE_TEMPLATE/other-request.md b/.github/ISSUE_TEMPLATE/other-request.md deleted file mode 100644 index fa9546b8..00000000 --- a/.github/ISSUE_TEMPLATE/other-request.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Other request -about: Free format issue template -title: '' -labels: '' -assignees: '' - ---- - - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index afcc71f8..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -## Description - - -## Related Issues - - -## Appearance - diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 19939002..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Build - -on: - push: - branches: - - master - - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@master - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install - run: | - yarn install - - name: typecheck - run: | - yarn run typecheck - - name: Test - run: | - yarn run spec - - name: Compile main - run: | - yarn run pack:main - - name: Compile renderer - run: | - yarn run pack:renderer diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 02e9df87..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,110 +0,0 @@ -name: Release - -on: - push: - tags: - - 'v*' - -jobs: - release-linux: - runs-on: ubuntu-latest - timeout-minutes: 40 - - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }} - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: yarn - - name: Build - run: | - make install - make clean - make build - - - name: Install Snapcraft - uses: samuelmeuli/action-snapcraft@v2 - - - name: Release - uses: samuelmeuli/action-electron-builder@v1 - with: - skip_build: true - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.github_token }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} - - release-windows: - runs-on: windows-latest - timeout-minutes: 40 - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: yarn - - name: Build - run: | - make install - make clean - make build - - - name: Release - uses: samuelmeuli/action-electron-builder@v1 - with: - skip_build: true - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.github_token }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} - - - release-macos: - runs-on: macos-latest - timeout-minutes: 40 - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: yarn - - - name: Apple Codesigning - uses: apple-actions/import-codesign-certs@v2 - with: - p12-file-base64: ${{ secrets.CERTIFICATES_P12 }} - p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} - - - name: Build - run: | - make install - make clean - make build - - - name: Release - uses: samuelmeuli/action-electron-builder@v1 - env: - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - ASC_PROVIDER: ${{ secrets.ASC_PROVIDER }} - TEAM_ID: ${{ secrets.ASC_PROVIDER }} - with: - skip_build: true - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.github_token }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml deleted file mode 100644 index 691aa062..00000000 --- a/.github/workflows/reviewdog.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: reviewdog - -on: - pull_request: - -permissions: - pull-requests: write - -jobs: - eslint: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@master - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install - run: | - yarn install - - uses: reviewdog/action-setup@v1 - - name: Run eslint - env: - REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} - run: | - yarn run lint:eslint | reviewdog -f=eslint -reporter=github-pr-review -fail-on-error=true - - stylelint: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@master - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install - run: | - yarn install - - uses: reviewdog/action-setup@v1 - - name: Run stylelint - env: - REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} - run: | - yarn run lint:stylelint --no-color | reviewdog -f=stylelint -reporter=github-pr-review -level=error -filter-mode=nofilter -fail-on-error=false diff --git a/.github/workflows/thirdparty.yml b/.github/workflows/thirdparty.yml deleted file mode 100644 index dfa9de84..00000000 --- a/.github/workflows/thirdparty.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Thirdparty - -on: - schedule: - - cron: '54 10 * * *' - -permissions: - contents: write - pull-requests: write - -jobs: - update: - runs-on: ubuntu-latest - timeout-minutes: 10 - - steps: - - uses: actions/setup-node@v3 - with: - node-version: 18 - - uses: actions/checkout@v4 - - name: Install packages - run: | - yarn install - npm install -g license-checker - - name: Check - run: | - yarn run thirdparty - - uses: peter-evans/create-pull-request@v5 - with: - commit-message: "[Auto update] Thirdparty libraries list" - branch: auto-update/thirdparty - base: master - delete-branch: true - title: "[Auto update] Thirdparty libraries list" diff --git a/.gitignore b/.gitignore index e14ad718..956f56fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,5 @@ -.DS_Store -dist/electron/* -dist/web/* -build/* -!build/icons -coverage -node_modules/ -npm-debug.log -npm-debug.log.* -thumbs.db -packages/* -!.gitkeep -*.db -*.provisionprofile -/thirdparty.json \ No newline at end of file +node_modules +*.log +.next +app +dist \ No newline at end of file diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 076d681c..00000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -@h3poteto:registry=https://npm.pkg.github.com diff --git a/.prettierrc b/.prettierrc index 93a4b3df..bb0bc5c3 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,4 +5,4 @@ "printWidth": 140, "trailingComma": "none", "arrowParens": "avoid" -} +} \ No newline at end of file diff --git a/.stylelintignore b/.stylelintignore deleted file mode 100644 index ee8ec9ea..00000000 --- a/.stylelintignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -dist -build -packages -.electron-vue diff --git a/.stylelintrc.json b/.stylelintrc.json deleted file mode 100644 index cd47c3ad..00000000 --- a/.stylelintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": ["stylelint-config-html/vue", "stylelint-config-standard", "stylelint-config-prettier"], - "overrides": [ - { - "customSyntax": "postcss-scss", - "files": ["**/*.scss"] - } - ], - "rules": { - "alpha-value-notation": "number", - "color-function-notation": "legacy", - "color-hex-length": null, - "no-descending-specificity": null, - "no-empty-source": null, - "selector-class-pattern": "^(([a-z][a-zA-Z0-9_]+)|([a-z][a-z0-9]*)(-[a-zA-Z0-9_]+)*)$", - "selector-id-pattern": "^(([a-z][a-zA-Z0-9_]+)|([a-z][a-z0-9]*)(-[a-zA-Z0-9_]+)*)$", - "selector-pseudo-class-no-unknown": [ - true, - { - "ignorePseudoClasses": ["deep"] - } - ], - "shorthand-property-no-redundant-values": null - } -} diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 8f2e342a..00000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -nodejs 18.18.0 diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 4e7fc057..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,1884 +0,0 @@ -# Change Log - -## [4.3.4] - 2021-02-18 -### Changed -- [#2157](https://github.com/h3poteto/whalebird-desktop/pull/2157) build(deps): Bump i18next from 19.8.7 to 19.8.8 -- [#2154](https://github.com/h3poteto/whalebird-desktop/pull/2154) build(deps-dev): Bump @typescript-eslint/parser from 4.14.2 to 4.15.1 -- [#2147](https://github.com/h3poteto/whalebird-desktop/pull/2147) build(deps-dev): Bump eslint from 7.19.0 to 7.20.0 -- [#2152](https://github.com/h3poteto/whalebird-desktop/pull/2152) build(deps-dev): Bump @typescript-eslint/typescript-estree from 4.14.2 to 4.15.1 -- [#2150](https://github.com/h3poteto/whalebird-desktop/pull/2150) build(deps-dev): Bump @typescript-eslint/eslint-plugin from 4.14.2 to 4.15.1 -- [#2153](https://github.com/h3poteto/whalebird-desktop/pull/2153) build(deps-dev): Bump mini-css-extract-plugin from 1.3.5 to 1.3.7 -- [#2148](https://github.com/h3poteto/whalebird-desktop/pull/2148) build(deps-dev): Bump @types/node from 14.14.25 to 14.14.28 -- [#2142](https://github.com/h3poteto/whalebird-desktop/pull/2142) build(deps-dev): Bump stylelint from 13.9.0 to 13.10.0 -- [#2146](https://github.com/h3poteto/whalebird-desktop/pull/2146) build(deps-dev): Bump eslint-plugin-vue from 7.5.0 to 7.6.0 -- [#2144](https://github.com/h3poteto/whalebird-desktop/pull/2144) build(deps-dev): Bump @babel/preset-env from 7.12.13 to 7.12.16 -- [#2141](https://github.com/h3poteto/whalebird-desktop/pull/2141) build(deps-dev): Bump ajv from 7.0.4 to 7.1.0 -- [#2139](https://github.com/h3poteto/whalebird-desktop/pull/2139) build(deps-dev): Bump ts-loader from 8.0.15 to 8.0.17 -- [#2140](https://github.com/h3poteto/whalebird-desktop/pull/2140) build(deps-dev): Bump @babel/core from 7.12.13 to 7.12.16 -- [#2131](https://github.com/h3poteto/whalebird-desktop/pull/2131) build(deps-dev): Bump css-loader from 5.0.1 to 5.0.2 -- [#2138](https://github.com/h3poteto/whalebird-desktop/pull/2138) build(deps-dev): Bump eslint-plugin-promise from 4.2.1 to 4.3.1 -- [#2136](https://github.com/h3poteto/whalebird-desktop/pull/2136) build(deps-dev): Bump ts-jest from 26.5.0 to 26.5.1 -- [#2126](https://github.com/h3poteto/whalebird-desktop/pull/2126) build(deps-dev): Bump electron from 11.2.2 to 11.2.3 -- [#2156](https://github.com/h3poteto/whalebird-desktop/pull/2156) Use NotificationType of megalodon to handle notifications -- [#2155](https://github.com/h3poteto/whalebird-desktop/pull/2155) build(deps): Bump megalodon from 3.3.3 to 3.4.0 - -### Fixed -- [#2149](https://github.com/h3poteto/whalebird-desktop/pull/2149) refs #2145 Divide quit application menu item to quit app in macOS - -## [4.3.3] - 2021-02-08 -### Added -- [#2078](https://github.com/h3poteto/whalebird-desktop/pull/2078) refs #2024 Add help command for cli interface -- [#2075](https://github.com/h3poteto/whalebird-desktop/pull/2075) closes #2068 Add delete button for list -- [#2074](https://github.com/h3poteto/whalebird-desktop/pull/2074) closes #2028 Add a configuration item to disable spellchecker -- [#2071](https://github.com/h3poteto/whalebird-desktop/pull/2071) closes #2035 Add a notice for toot visibility settings - -### Changed -- [#2124](https://github.com/h3poteto/whalebird-desktop/pull/2124) build(deps-dev): Bump @types/node from 14.14.22 to 14.14.25 -- [#2123](https://github.com/h3poteto/whalebird-desktop/pull/2123) build(deps-dev): Bump @babel/plugin-transform-runtime from 7.12.13 to 7.12.15 -- [#2122](https://github.com/h3poteto/whalebird-desktop/pull/2122) build(deps-dev): Bump chai from 4.2.0 to 4.3.0 -- [#2120](https://github.com/h3poteto/whalebird-desktop/pull/2120) build(deps-dev): Bump @vue/test-utils from 1.1.2 to 1.1.3 -- [#2119](https://github.com/h3poteto/whalebird-desktop/pull/2119) build(deps-dev): Bump ts-loader from 8.0.14 to 8.0.15 -- [#2117](https://github.com/h3poteto/whalebird-desktop/pull/2117) build(deps): Bump vue-router from 3.4.9 to 3.5.1 -- [#2116](https://github.com/h3poteto/whalebird-desktop/pull/2116) Use unicode-emoji-json instead of emojilib -- [#2107](https://github.com/h3poteto/whalebird-desktop/pull/2107) build(deps-dev): Bump all-object-keys from 2.1.1 to 2.2.0 -- [#2105](https://github.com/h3poteto/whalebird-desktop/pull/2105) build(deps-dev): Bump eslint from 7.17.0 to 7.19.0 -- [#2115](https://github.com/h3poteto/whalebird-desktop/pull/2115) Use --node-env in webpack-cli instead of cross-env in pack command -- [#2101](https://github.com/h3poteto/whalebird-desktop/pull/2101) build(deps-dev): Bump electron from 11.2.0 to 11.2.2 -- [#2113](https://github.com/h3poteto/whalebird-desktop/pull/2113) build(deps-dev): Bump @babel/runtime from 7.12.5 to 7.12.13 -- [#2110](https://github.com/h3poteto/whalebird-desktop/pull/2110) build(deps-dev): Bump stylelint from 13.8.0 to 13.9.0 -- [#2108](https://github.com/h3poteto/whalebird-desktop/pull/2108) build(deps): Bump megalodon from 3.3.2 to 3.3.3 -- [#2106](https://github.com/h3poteto/whalebird-desktop/pull/2106) build(deps): Bump element-ui from 2.14.1 to 2.15.0 -- [#2114](https://github.com/h3poteto/whalebird-desktop/pull/2114) Bump @typescript-eslint from 3.10.1 to 4.14.2 -- [#2112](https://github.com/h3poteto/whalebird-desktop/pull/2112) build(deps-dev): Bump eslint-plugin-vue from 7.4.1 to 7.5.0 -- [#2111](https://github.com/h3poteto/whalebird-desktop/pull/2111) build(deps-dev): Bump core-js from 3.8.2 to 3.8.3 -- [#2104](https://github.com/h3poteto/whalebird-desktop/pull/2104) build(deps): Bump sanitize-html from 2.3.0 to 2.3.2 -- [#2103](https://github.com/h3poteto/whalebird-desktop/pull/2103) build(deps): Bump vuex from 3.6.0 to 3.6.2 -- [#2102](https://github.com/h3poteto/whalebird-desktop/pull/2102) build(deps-dev): Bump eslint-config-prettier from 7.1.0 to 7.2.0 -- [#2100](https://github.com/h3poteto/whalebird-desktop/pull/2100) build(deps-dev): Bump ts-jest from 26.4.4 to 26.5.0 -- [#2099](https://github.com/h3poteto/whalebird-desktop/pull/2099) build(deps-dev): Bump cfonts from 2.8.6 to 2.9.1 -- [#2098](https://github.com/h3poteto/whalebird-desktop/pull/2098) build(deps): Bump i18next from 19.8.4 to 19.8.7 -- [#2097](https://github.com/h3poteto/whalebird-desktop/pull/2097) build(deps): Bump electron-log from 4.3.0 to 4.3.1 -- [#2095](https://github.com/h3poteto/whalebird-desktop/pull/2095) build(deps-dev): Bump webpack-cli from 4.2.0 to 4.5.0 -- [#2094](https://github.com/h3poteto/whalebird-desktop/pull/2094) build(deps-dev): Bump @babel/plugin-transform-runtime from 7.12.1 to 7.12.13 -- [#2093](https://github.com/h3poteto/whalebird-desktop/pull/2093) build(deps-dev): Bump @babel/core from 7.12.9 to 7.12.13 -- [#2090](https://github.com/h3poteto/whalebird-desktop/pull/2090) build(deps-dev): Bump ajv from 6.12.6 to 7.0.4 -- [#2048](https://github.com/h3poteto/whalebird-desktop/pull/2048) build(deps-dev): Bump webpack-dev-server from 3.11.0 to 3.11.2 -- [#2092](https://github.com/h3poteto/whalebird-desktop/pull/2092) build(deps-dev): Bump @babel/preset-env from 7.12.7 to 7.12.13 -- [#2086](https://github.com/h3poteto/whalebird-desktop/pull/2086) build(deps-dev): Bump mini-css-extract-plugin from 1.3.3 to 1.3.5 -- [#2066](https://github.com/h3poteto/whalebird-desktop/pull/2066) build(deps-dev): Bump @types/node from 14.14.10 to 14.14.22 -- [#2064](https://github.com/h3poteto/whalebird-desktop/pull/2064) build(deps-dev): Bump @types/lodash from 4.14.165 to 4.14.168 -- [#2056](https://github.com/h3poteto/whalebird-desktop/pull/2056) build(deps-dev): Bump electron-debug from 3.1.0 to 3.2.0 -- [#2051](https://github.com/h3poteto/whalebird-desktop/pull/2051) build(deps): Bump electron-context-menu from 2.3.0 to 2.4.0 -- [#2085](https://github.com/h3poteto/whalebird-desktop/pull/2085) New Crowdin updates -- [#2055](https://github.com/h3poteto/whalebird-desktop/pull/2055) build(deps-dev): Bump sass-loader from 10.1.0 to 10.1.1 -- [#2053](https://github.com/h3poteto/whalebird-desktop/pull/2053) build(deps-dev): Bump @vue/test-utils from 1.1.1 to 1.1.2 -- [#2050](https://github.com/h3poteto/whalebird-desktop/pull/2050) build(deps-dev): Bump ts-loader from 8.0.11 to 8.0.14 -- [#2049](https://github.com/h3poteto/whalebird-desktop/pull/2049) build(deps-dev): Bump html-webpack-plugin from 4.5.0 to 4.5.1 -- [#2047](https://github.com/h3poteto/whalebird-desktop/pull/2047) build(deps-dev): Bump vue-loader from 15.9.5 to 15.9.6 -- [#2045](https://github.com/h3poteto/whalebird-desktop/pull/2045) build(deps): Bump vue-resize from 0.5.0 to 1.0.0 -- [#2044](https://github.com/h3poteto/whalebird-desktop/pull/2044) build(deps-dev): Bump webpack-merge from 5.4.0 to 5.7.3 -- [#2082](https://github.com/h3poteto/whalebird-desktop/pull/2082) New Crowdin updates -- [#2081](https://github.com/h3poteto/whalebird-desktop/pull/2081) closes #2079 Quit main application when press quit menu or Ctrl+Q -- [#2077](https://github.com/h3poteto/whalebird-desktop/pull/2077) New Crowdin updates -- [#2073](https://github.com/h3poteto/whalebird-desktop/pull/2073) New Crowdin updates -- [#2072](https://github.com/h3poteto/whalebird-desktop/pull/2072) New Crowdin updates - - -### Fixed -- [#2076](https://github.com/h3poteto/whalebird-desktop/pull/2076) Fix confirm message -- [#2070](https://github.com/h3poteto/whalebird-desktop/pull/2070) Don't wrap attachment previews in new toot -- [#2069](https://github.com/h3poteto/whalebird-desktop/pull/2069) closes #2033 Reject adding 5+ images before upload images in new toot - -## [4.3.2] - 2021-01-20 -### Changed -- [#2062](https://github.com/h3poteto/whalebird-desktop/pull/2062) New Crowdin updates -- [#2041](https://github.com/h3poteto/whalebird-desktop/pull/2041) build(deps-dev): Bump electron from 11.0.3 to 11.2.0 -- [#1996](https://github.com/h3poteto/whalebird-desktop/pull/1996) build(deps-dev): Bump typescript from 4.0.5 to 4.1.3 -- [#2031](https://github.com/h3poteto/whalebird-desktop/pull/2031) build(deps-dev): Bump eslint-plugin-prettier from 3.1.4 to 3.3.1 -- [#2027](https://github.com/h3poteto/whalebird-desktop/pull/2027) build(deps-dev): Bump eslint from 7.14.0 to 7.17.0 -- [#2026](https://github.com/h3poteto/whalebird-desktop/pull/2026) build(deps-dev): Bump core-js from 3.8.0 to 3.8.2 -- [#2040](https://github.com/h3poteto/whalebird-desktop/pull/2040) build(deps-dev): Bump @typescript-eslint/typescript-estree from 4.6.0 to 4.13.0 -- [#2034](https://github.com/h3poteto/whalebird-desktop/pull/2034) build(deps-dev): Bump @types/jest from 26.0.15 to 26.0.20 -- [#2004](https://github.com/h3poteto/whalebird-desktop/pull/2004) build(deps-dev): Bump eslint-config-prettier from 6.15.0 to 7.1.0 -- [#1969](https://github.com/h3poteto/whalebird-desktop/pull/1969) build(deps-dev): Bump cross-env from 7.0.2 to 7.0.3 -- [#2030](https://github.com/h3poteto/whalebird-desktop/pull/2030) build(deps-dev): Bump eslint-plugin-vue from 7.1.0 to 7.4.1 -- [#2029](https://github.com/h3poteto/whalebird-desktop/pull/2029) build(deps): [Security] Bump axios from 0.21.0 to 0.21.1 -- [#2001](https://github.com/h3poteto/whalebird-desktop/pull/2001) build(deps-dev): Bump copy-webpack-plugin from 6.3.2 to 6.4.1 -- [#2002](https://github.com/h3poteto/whalebird-desktop/pull/2002) build(deps): Bump sanitize-html from 2.1.2 to 2.3.0 -- [#1966](https://github.com/h3poteto/whalebird-desktop/pull/1966) build(deps-dev): Bump babel-jest from 26.6.1 to 26.6.3 -- [#2038](https://github.com/h3poteto/whalebird-desktop/pull/2038) New Crowdin updates -- [#1990](https://github.com/h3poteto/whalebird-desktop/pull/1990) build(deps-dev): Bump mini-css-extract-plugin from 1.2.1 to 1.3.3 -- [#1980](https://github.com/h3poteto/whalebird-desktop/pull/1980) build(deps-dev): Bump electron-packager from 15.1.0 to 15.2.0 -- [#1964](https://github.com/h3poteto/whalebird-desktop/pull/1964) build(deps-dev): Bump css-loader from 5.0.0 to 5.0.1 -- [#1961](https://github.com/h3poteto/whalebird-desktop/pull/1961) build(deps-dev): Bump jest from 26.6.1 to 26.6.3 -- [#1960](https://github.com/h3poteto/whalebird-desktop/pull/1960) build(deps-dev): Bump eslint-plugin-html from 6.1.0 to 6.1.1 -- [#2006](https://github.com/h3poteto/whalebird-desktop/pull/2006) build(deps): [Security] Bump node-notifier from 8.0.0 to 8.0.1 -- [#1992](https://github.com/h3poteto/whalebird-desktop/pull/1992) build(deps): [Security] Bump ini from 1.3.5 to 1.3.8 -- [#2019](https://github.com/h3poteto/whalebird-desktop/pull/2019) closes #1997 Add Sinhala in i18n -- [#2015](https://github.com/h3poteto/whalebird-desktop/pull/2015) New Crowdin updates -- [#2012](https://github.com/h3poteto/whalebird-desktop/pull/2012) New Crowdin updates -- [#2009](https://github.com/h3poteto/whalebird-desktop/pull/2009) Add Traditional Chinese in i18n -- [#2010](https://github.com/h3poteto/whalebird-desktop/pull/2010) New Crowdin updates -- [#2011](https://github.com/h3poteto/whalebird-desktop/pull/2011) Update crowdin config for zh-TW - -### Fixed -- [#2037](https://github.com/h3poteto/whalebird-desktop/pull/2037) Fix icon for mac app -- [#2020](https://github.com/h3poteto/whalebird-desktop/pull/2020) Fix cancel action for confirm in element-ui -- [#2016](https://github.com/h3poteto/whalebird-desktop/pull/2016) closes #2014 Display only predefined notification type in notifications -- [#2018](https://github.com/h3poteto/whalebird-desktop/pull/2018) refs #1997 Fix Sinhala language code for crowdin -- [#2013](https://github.com/h3poteto/whalebird-desktop/pull/2013) Fix typos - -## [4.3.1] - 2020-12-03 -### Changed -- [#1967](https://github.com/h3poteto/whalebird-desktop/pull/1967) Update node version to 14.15.1 -- [#1958](https://github.com/h3poteto/whalebird-desktop/pull/1958) Update definition type files -- [#1950](https://github.com/h3poteto/whalebird-desktop/pull/1950) Bump node-sass from 4.14.1 to 5.0.0 -- [#1954](https://github.com/h3poteto/whalebird-desktop/pull/1954) Bump electron from 10.1.5 to 11.0.3 -- [#1951](https://github.com/h3poteto/whalebird-desktop/pull/1951) Bump copy-webpack-plugin from 6.2.1 to 6.3.2 -- [#1946](https://github.com/h3poteto/whalebird-desktop/pull/1946) Bump vuex from 3.5.1 to 3.6.0 -- [#1941](https://github.com/h3poteto/whalebird-desktop/pull/1941) Bump eslint from 7.12.1 to 7.14.0 -- [#1945](https://github.com/h3poteto/whalebird-desktop/pull/1945) Bump electron-log from 4.2.4 to 4.3.0 -- [#1922](https://github.com/h3poteto/whalebird-desktop/pull/1922) Bump eslint-config-standard from 14.1.1 to 16.0.2 -- [#1956](https://github.com/h3poteto/whalebird-desktop/pull/1956) Bump @vue/test-utils from 1.1.0 to 1.1.1 -- [#1949](https://github.com/h3poteto/whalebird-desktop/pull/1949) Bump ts-jest from 26.4.3 to 26.4.4 -- [#1955](https://github.com/h3poteto/whalebird-desktop/pull/1955) Bump webpack-merge from 5.2.0 to 5.4.0 -- [#1953](https://github.com/h3poteto/whalebird-desktop/pull/1953) Bump prettier from 2.1.2 to 2.2.1 -- [#1952](https://github.com/h3poteto/whalebird-desktop/pull/1952) Bump core-js from 3.6.5 to 3.8.0 -- [#1948](https://github.com/h3poteto/whalebird-desktop/pull/1948) Bump sanitize-html from 2.1.1 to 2.1.2 -- [#1947](https://github.com/h3poteto/whalebird-desktop/pull/1947) Bump i18next from 19.8.3 to 19.8.4 -- [#1943](https://github.com/h3poteto/whalebird-desktop/pull/1943) Bump electron-json-storage from 4.2.0 to 4.3.0 -- [#1942](https://github.com/h3poteto/whalebird-desktop/pull/1942) Bump vue-router from 3.4.8 to 3.4.9 -- [#1940](https://github.com/h3poteto/whalebird-desktop/pull/1940) Bump babel-loader from 8.1.0 to 8.2.2 -- [#1939](https://github.com/h3poteto/whalebird-desktop/pull/1939) Bump stylelint from 13.7.2 to 13.8.0 -- [#1938](https://github.com/h3poteto/whalebird-desktop/pull/1938) refactor: Use invoke instead of send for ipc -- [#1930](https://github.com/h3poteto/whalebird-desktop/pull/1930) Bump @babel/core from 7.11.6 to 7.12.9 -- [#1931](https://github.com/h3poteto/whalebird-desktop/pull/1931) Bump @types/node from 14.14.5 to 14.14.10 -- [#1928](https://github.com/h3poteto/whalebird-desktop/pull/1928) Bump @babel/preset-env from 7.11.5 to 7.12.7 -- [#1927](https://github.com/h3poteto/whalebird-desktop/pull/1927) Bump eslint-plugin-standard from 4.0.1 to 5.0.0 -- [#1916](https://github.com/h3poteto/whalebird-desktop/pull/1916) Bump ts-loader from 8.0.4 to 8.0.11 -- [#1914](https://github.com/h3poteto/whalebird-desktop/pull/1914) Bump @types/lodash from 4.14.162 to 4.14.165 -- [#1911](https://github.com/h3poteto/whalebird-desktop/pull/1911) Bump webpack-cli from 3.3.12 to 4.2.0 -- [#1908](https://github.com/h3poteto/whalebird-desktop/pull/1908) Bump @babel/runtime from 7.11.2 to 7.12.5 -- [#1906](https://github.com/h3poteto/whalebird-desktop/pull/1906) Bump vue-loader from 15.9.3 to 15.9.5 -- [#1892](https://github.com/h3poteto/whalebird-desktop/pull/1892) Bump @babel/plugin-proposal-class-properties from 7.10.4 to 7.12.1 -- [#1919](https://github.com/h3poteto/whalebird-desktop/pull/1919) Bump sass-loader from 10.0.2 to 10.1.0 -- [#1895](https://github.com/h3poteto/whalebird-desktop/pull/1895) Bump node-loader from 1.0.1 to 1.0.2 -- [#1881](https://github.com/h3poteto/whalebird-desktop/pull/1881) Bump url-loader from 4.1.0 to 4.1.1 -- [#1890](https://github.com/h3poteto/whalebird-desktop/pull/1890) Bump @babel/plugin-transform-runtime from 7.11.5 to 7.12.1 -- [#1887](https://github.com/h3poteto/whalebird-desktop/pull/1887) Bump file-loader from 6.1.0 to 6.2.0 -- [#1885](https://github.com/h3poteto/whalebird-desktop/pull/1885) Bump @types/jest from 26.0.14 to 26.0.15 -- [#1877](https://github.com/h3poteto/whalebird-desktop/pull/1877) Bump electron-builder from 22.8.1 to 22.9.1 -- [#1913](https://github.com/h3poteto/whalebird-desktop/pull/1913) New Crowdin updates - -### Fixed -- [#1972](https://github.com/h3poteto/whalebird-desktop/pull/1972) clean: Remove unnecessary comments -- [#1971](https://github.com/h3poteto/whalebird-desktop/pull/1971) Fix build command for mas -- [#1970](https://github.com/h3poteto/whalebird-desktop/pull/1970) fix: Don't always render emoji picker and tool menu -- [#1959](https://github.com/h3poteto/whalebird-desktop/pull/1959) closes #1936 Fix compose window height when add poll options -- [#1937](https://github.com/h3poteto/whalebird-desktop/pull/1937) closes #1932 Use el-popper instead of vue-popper for emoji picker in statuses -- [#1935](https://github.com/h3poteto/whalebird-desktop/pull/1935) closes #1934 Use el-popper instead of vue-popper in Toot menu -- [#1933](https://github.com/h3poteto/whalebird-desktop/pull/1933) closes #1921 Re-render when update toot in timelines -- [#1924](https://github.com/h3poteto/whalebird-desktop/pull/1924) closes #1782 Avoid shortcut key on media description in new toot - -## [4.3.0] - 2020-10-31 -### Added -- [#1858](https://github.com/h3poteto/whalebird-desktop/pull/1858) closes #1804 Add columns under Toots in side menu -- [#1852](https://github.com/h3poteto/whalebird-desktop/pull/1852) closes #1845 Add Central Atlas Tamazight in i18n -- [#1842](https://github.com/h3poteto/whalebird-desktop/pull/1842) closes #1766 Introduce vue-virtual-scroll for all timelines - -### Changed -- [#1893](https://github.com/h3poteto/whalebird-desktop/pull/1893) Bump eslint-config-prettier from 6.14.0 to 6.15.0 -- [#1888](https://github.com/h3poteto/whalebird-desktop/pull/1888) Bump axios from 0.20.0 to 0.21.0 -- [#1886](https://github.com/h3poteto/whalebird-desktop/pull/1886) Bump webpack-merge from 5.1.4 to 5.2.0 -- [#1884](https://github.com/h3poteto/whalebird-desktop/pull/1884) Bump @babel/plugin-proposal-object-rest-spread from 7.11.0 to 7.12.1 -- [#1882](https://github.com/h3poteto/whalebird-desktop/pull/1882) Bump ajv from 6.12.5 to 6.12.6 -- [#1880](https://github.com/h3poteto/whalebird-desktop/pull/1880) Bump css-loader from 4.3.0 to 5.0.0 -- [#1879](https://github.com/h3poteto/whalebird-desktop/pull/1879) Bump mini-css-extract-plugin from 1.2.0 to 1.2.1 -- [#1878](https://github.com/h3poteto/whalebird-desktop/pull/1878) Bump typescript from 4.0.3 to 4.0.5 -- [#1876](https://github.com/h3poteto/whalebird-desktop/pull/1876) Bump @types/lodash from 4.14.161 to 4.14.162 -- [#1865](https://github.com/h3poteto/whalebird-desktop/pull/1865) Bump jest from 26.4.2 to 26.6.1 -- [#1875](https://github.com/h3poteto/whalebird-desktop/pull/1875) Bump @types/node from 14.11.1 to 14.14.5 -- [#1874](https://github.com/h3poteto/whalebird-desktop/pull/1874) Bump eslint from 7.9.0 to 7.12.1 -- [#1873](https://github.com/h3poteto/whalebird-desktop/pull/1873) Bump ts-jest from 26.4.0 to 26.4.3 -- [#1868](https://github.com/h3poteto/whalebird-desktop/pull/1868) Bump i18next from 19.7.0 to 19.8.3 -- [#1867](https://github.com/h3poteto/whalebird-desktop/pull/1867) Bump electron from 10.1.2 to 10.1.5 -- [#1872](https://github.com/h3poteto/whalebird-desktop/pull/1872) Bump vue-router from 3.4.3 to 3.4.8 -- [#1871](https://github.com/h3poteto/whalebird-desktop/pull/1871) Bump @typescript-eslint/typescript-estree from 4.1.1 to 4.6.0 -- [#1866](https://github.com/h3poteto/whalebird-desktop/pull/1866) Bump babel-jest from 26.3.0 to 26.6.1 -- [#1864](https://github.com/h3poteto/whalebird-desktop/pull/1864) Bump mini-css-extract-plugin from 0.11.2 to 1.2.0 -- [#1862](https://github.com/h3poteto/whalebird-desktop/pull/1862) Bump sanitize-html from 1.27.4 to 2.1.1 -- [#1859](https://github.com/h3poteto/whalebird-desktop/pull/1859) Bump eslint-config-prettier from 6.11.0 to 6.14.0 -- [#1848](https://github.com/h3poteto/whalebird-desktop/pull/1848) Bump eslint-plugin-vue from 6.2.2 to 7.1.0 -- [#1836](https://github.com/h3poteto/whalebird-desktop/pull/1836) Bump style-loader from 1.2.1 to 2.0.0 -- [#1827](https://github.com/h3poteto/whalebird-desktop/pull/1827) Bump moment from 2.28.0 to 2.29.1 -- [#1839](https://github.com/h3poteto/whalebird-desktop/pull/1839) Bump copy-webpack-plugin from 6.1.1 to 6.2.1 -- [#1806](https://github.com/h3poteto/whalebird-desktop/pull/1806) Bump del from 5.1.0 to 6.0.0 -- [#1805](https://github.com/h3poteto/whalebird-desktop/pull/1805) Bump eslint-plugin-import from 2.22.0 to 2.22.1 -- [#1803](https://github.com/h3poteto/whalebird-desktop/pull/1803) Bump stylelint from 13.7.1 to 13.7.2 -- [#1853](https://github.com/h3poteto/whalebird-desktop/pull/1853) New Crowdin updates -- [#1851](https://github.com/h3poteto/whalebird-desktop/pull/1851) New Crowdin updates -- [#1820](https://github.com/h3poteto/whalebird-desktop/pull/1820) Clean up unused method calling -- [#1813](https://github.com/h3poteto/whalebird-desktop/pull/1813) Fix changelog -- [#1812](https://github.com/h3poteto/whalebird-desktop/pull/1812) Update changelog - -### Fixed -- [#1819](https://github.com/h3poteto/whalebird-desktop/pull/1819) closes #1818 Change nodeIntegration to fix aboutWindow - -## [4.2.3] - 2020-09-25 -### Added -- [#1780](https://github.com/h3poteto/whalebird-desktop/pull/1780) closes #1351 Add theme color in new toot window - -### Changed - -- [#1795](https://github.com/h3poteto/whalebird-desktop/pull/1795) Update electron version to 10.1.2 for mas -- [#1786](https://github.com/h3poteto/whalebird-desktop/pull/1786) Bump typescript from 3.9.7 to 4.0.3 -- [#1793](https://github.com/h3poteto/whalebird-desktop/pull/1793) Bump ts-loader from 8.0.3 to 8.0.4 -- [#1774](https://github.com/h3poteto/whalebird-desktop/pull/1774) Bump @typescript-eslint/typescript-estree from 3.10.1 to 4.1.1 -- [#1773](https://github.com/h3poteto/whalebird-desktop/pull/1773) Bump electron from 10.1.0 to 10.1.2 -- [#1787](https://github.com/h3poteto/whalebird-desktop/pull/1787) Bump @types/node from 14.10.1 to 14.11.1 -- [#1794](https://github.com/h3poteto/whalebird-desktop/pull/1794) Bump ts-jest from 26.3.0 to 26.4.0 -- [#1792](https://github.com/h3poteto/whalebird-desktop/pull/1792) Bump html-webpack-plugin from 4.4.1 to 4.5.0 -- [#1788](https://github.com/h3poteto/whalebird-desktop/pull/1788) Bump copy-webpack-plugin from 6.1.0 to 6.1.1 -- [#1785](https://github.com/h3poteto/whalebird-desktop/pull/1785) Bump webpack from 4.44.1 to 4.44.2 -- [#1784](https://github.com/h3poteto/whalebird-desktop/pull/1784) Bump electron-builder from 22.8.0 to 22.8.1 -- [#1776](https://github.com/h3poteto/whalebird-desktop/pull/1776) Bump prettier from 2.1.1 to 2.1.2 -- [#1783](https://github.com/h3poteto/whalebird-desktop/pull/1783) Bump @types/jest from 26.0.13 to 26.0.14 -- [#1769](https://github.com/h3poteto/whalebird-desktop/pull/1769) Bump moment from 2.27.0 to 2.28.0 -- [#1770](https://github.com/h3poteto/whalebird-desktop/pull/1770) Bump ajv from 6.12.4 to 6.12.5 -- [#1740](https://github.com/h3poteto/whalebird-desktop/pull/1740) Bump axios from 0.19.2 to 0.20.0 -- [#1684](https://github.com/h3poteto/whalebird-desktop/pull/1784) Bump @babel/runtime from 7.11.0 to 7.11.2 -- [#1779](https://github.com/h3poteto/whalebird-desktop/pull/1779) Update issue templates -- [#1778](https://github.com/h3poteto/whalebird-desktop/pull/1778) closes #1349 Set line-height in body to change according to font-size -- [#1777](https://github.com/h3poteto/whalebird-desktop/pull/1777) closes #1755 Set backgroundColor to BrowserWindow to improve sub-pixel anti-aliasing -- [#1764](https://github.com/h3poteto/whalebird-desktop/pull/1764) Fix npm command to yarn -- [#1763](https://github.com/h3poteto/whalebird-desktop/pull/1763) Use yarn.lock to generate cache key in circleci -- [#1762](https://github.com/h3poteto/whalebird-desktop/pull/1762) Clean up unused packages -- [#1761](https://github.com/h3poteto/whalebird-desktop/pull/1761) Use yarn instead of npm -- [#1756](https://github.com/h3poteto/whalebird-desktop/pull/1756) New Crowdin updates - -### Fixed - -- [#1791](https://github.com/h3poteto/whalebird-desktop/pull/1791) closes #1285 Fix highlighted account icon -- [#1790](https://github.com/h3poteto/whalebird-desktop/pull/1790) Re-render compose window using v-if for resize handler event -- [#1781](https://github.com/h3poteto/whalebird-desktop/pull/1781) Fix window height of new toot when close window with some contents -- [#1765](https://github.com/h3poteto/whalebird-desktop/pull/1765) Fix types in integration spec - - - -## [4.2.2] - 2020-09-03 -### Added -- [#1732](https://github.com/h3poteto/whalebird-desktop/pull/1732) closes #1713 Support to add bookmarks -- [#1720](https://github.com/h3poteto/whalebird-desktop/pull/1320) closes #1714 Add bookmark list as timeline -- [#1715](https://github.com/h3poteto/whalebird-desktop/pull/1715) closes #1453 Support quotation reblog - -### Changed - -- [#1729](https://github.com/h3poteto/whalebird-desktop/pull/1729) Bump @typescript-eslint/typescript-estree from 3.7.1 to 3.10.1 -- [#1734](https://github.com/h3poteto/whalebird-desktop/pull/1734) Bump electron from 9.1.2 to 10.1.0 -- [#1728](https://github.com/h3poteto/whalebird-desktop/pull/1728) Bump @typescript-eslint/eslint-plugin from 3.7.1 to 3.10.1 -- [#1736](https://github.com/h3poteto/whalebird-desktop/pull/1736) New Crowdin updates -- [#1733](https://github.com/h3poteto/whalebird-desktop/pull/1733) Bump mini-css-extract-plugin from 0.9.0 to 0.11.0 -- [#1727](https://github.com/h3poteto/whalebird-desktop/pull/1727) Bump sass-loader from 9.0.2 to 10.0.1 -- [#1725](https://github.com/h3poteto/whalebird-desktop/pull/1725) Bump @types/lodash from 4.14.158 to 4.14.160 -- [#1724](https://github.com/h3poteto/whalebird-desktop/pull/1724) Bump @typescript-eslint/parser from 3.7.1 to 3.10.1 -- [#1723](https://github.com/h3poteto/whalebird-desktop/pull/1723) Bump jest from 26.2.2 to 26.4.2 -- [#1717](https://github.com/h3poteto/whalebird-desktop/pull/1717) Bump @babel/core from 7.11.0 to 7.11.4 -- [#1716](https://github.com/h3poteto/whalebird-desktop/pull/1716) Bump lodash from 4.17.19 to 4.17.20 -- [#1704](https://github.com/h3poteto/whalebird-desktop/pull/1704) Bump eslint from 7.5.0 to 7.7.0 -- [#1735](https://github.com/h3poteto/whalebird-desktop/pull/1735) New Crowdin updates -- [#1722](https://github.com/h3poteto/whalebird-desktop/pull/1722) Bump ts-loader from 8.0.1 to 8.0.3 -- [#1709](https://github.com/h3poteto/whalebird-desktop/pull/1709) Bump webpack-merge from 5.0.9 to 5.1.2 -- [#1701](https://github.com/h3poteto/whalebird-desktop/pull/1701) Bump vue-router from 3.3.4 to 3.4.3 -- [#1699](https://github.com/h3poteto/whalebird-desktop/pull/1599) Bump babel-jest from 26.2.2 to 26.3.0 -- [#1692](https://github.com/h3poteto/whalebird-desktop/pull/1682) Bump electron-context-menu from 2.2.0 to 2.3.0 -- [#1690](https://github.com/h3poteto/whalebird-desktop/pull/1690) Bump jsdom from 16.3.0 to 16.4.0 -- [#1689](https://github.com/h3poteto/whalebird-desktop/pull/1689) Bump eslint-plugin-html from 6.0.2 to 6.0.3 -- [#1731](https://github.com/h3poteto/whalebird-desktop/pull/1731) New Crowdin updates -- [#1721](https://github.com/h3poteto/whalebird-desktop/pull/1721) Remove unused nvmrc -- [#1688](https://github.com/h3poteto/whalebird-desktop/pull/1688) Bump css-loader from 3.6.0 to 4.2.1 -- [#1705](https://github.com/h3poteto/whalebird-desktop/pull/1705) [Security] Bump dot-prop from 4.2.0 to 4.2.1 - -### Fixed - -- [#1719](https://github.com/h3poteto/whalebird-desktop/pull/1719) refs #1694 Set limit height when new toot window height is resized -- [#1711](https://github.com/h3poteto/whalebird-desktop/pull/1711) Fix options for css-loader 4.0.0 - - -## [4.2.1] - 2020-08-07 -### Changed - -- [#1668](https://github.com/h3poteto/whalebird-desktop/pull/1668) Revert "Bump css-loader from 3.6.0 to 4.1.1" -- [#1669](https://github.com/h3poteto/whalebird-desktop/pull/1669) Update @typescript-eslint/parser and jest -- [#1664](https://github.com/h3poteto/whalebird-desktop/pull/1664) Bump @babel/plugin-proposal-object-rest-spread from 7.10.4 to 7.11.0 -- [#1654](https://github.com/h3poteto/whalebird-desktop/pull/1654) Bump megalodon from 3.2.3 to 3.2.4 -- [#1667](https://github.com/h3poteto/whalebird-desktop/pull/1667) Bump ts-jest from 24.3.0 to 26.1.4 -- [#1666](https://github.com/h3poteto/whalebird-desktop/pull/1666) Bump @typescript-eslint/eslint-plugin from 2.34.0 to 3.7.1 -- [#1665](https://github.com/h3poteto/whalebird-desktop/pull/1665) Bump eslint from 6.8.0 to 7.5.0 -- [#1663](https://github.com/h3poteto/whalebird-desktop/pull/1663) Bump @babel/preset-env from 7.10.4 to 7.11.0 -- [#1661](https://github.com/h3poteto/whalebird-desktop/pull/1661) Bump electron-builder from 22.7.0 to 22.8.0 -- [#1660](https://github.com/h3poteto/whalebird-desktop/pull/1660) Bump node-loader from 1.0.0 to 1.0.1 -- [#1659](https://github.com/h3poteto/whalebird-desktop/pull/1659) Bump @babel/runtime from 7.10.5 to 7.11.0 -- [#1658](https://github.com/h3poteto/whalebird-desktop/pull/1658) Bump babel-jest from 26.1.0 to 26.2.2 -- [#1657](https://github.com/h3poteto/whalebird-desktop/pull/1657) Bump blueimp-load-image from 5.13.0 to 5.14.0 -- [#1656](https://github.com/h3poteto/whalebird-desktop/pull/1656) Bump webpack from 4.43.0 to 4.44.1 -- [#1655](https://github.com/h3poteto/whalebird-desktop/pull/1655) Bump @babel/core from 7.10.5 to 7.11.0 -- [#1645](https://github.com/h3poteto/whalebird-desktop/pull/1645) Bump electron from 9.1.0 to 9.1.2 -- [#1653](https://github.com/h3poteto/whalebird-desktop/pull/1653) Bump @babel/plugin-transform-runtime from 7.10.4 to 7.11.0 -- [#1649](https://github.com/h3poteto/whalebird-desktop/pull/1649) Bump sanitize-html from 1.27.0 to 1.27.2 -- [#1648](https://github.com/h3poteto/whalebird-desktop/pull/1648) Bump css-loader from 3.6.0 to 4.1.1 -- [#1646](https://github.com/h3poteto/whalebird-desktop/pull/1646) [Security] Bump elliptic from 6.5.2 to 6.5.3 -- [#1644](https://github.com/h3poteto/whalebird-desktop/pull/1644) Bump @types/node from 14.0.20 to 14.0.27 -- [#1643](https://github.com/h3poteto/whalebird-desktop/pull/1643) Bump @typescript-eslint/typescript-estree from 3.6.0 to 3.7.1 -- [#1640](https://github.com/h3poteto/whalebird-desktop/pull/1640) Bump i18next from 19.5.6 to 19.6.3 -- [#1636](https://github.com/h3poteto/whalebird-desktop/pull/1636) Bump electron-mock-ipc from 0.3.6 to 0.3.7 -- [#1635](https://github.com/h3poteto/whalebird-desktop/pull/1635) Bump regenerator-runtime from 0.13.5 to 0.13.7 -- [#1634](https://github.com/h3poteto/whalebird-desktop/pull/1634) Bump @types/lodash from 4.14.157 to 4.14.158 -- [#1628](https://github.com/h3poteto/whalebird-desktop/pull/1628) Bump vue-awesome from 4.0.2 to 4.1.0 -- [#1626](https://github.com/h3poteto/whalebird-desktop/pull/1626) Bump electron-devtools-installer from 3.1.0 to 3.1.1 -- [#1624](https://github.com/h3poteto/whalebird-desktop/pull/1624) Bump typescript from 3.9.6 to 3.9.7 -- [#1625](https://github.com/h3poteto/whalebird-desktop/pull/1625) Bump cfonts from 2.8.5 to 2.8.6 -- [#1617](https://github.com/h3poteto/whalebird-desktop/pull/1617) Bump @babel/core from 7.10.4 to 7.10.5 -- [#1616](https://github.com/h3poteto/whalebird-desktop/pull/1616) Bump ts-loader from 8.0.0 to 8.0.1 -- [#1615](https://github.com/h3poteto/whalebird-desktop/pull/1615) Bump @babel/runtime from 7.10.4 to 7.10.5 -- [#1611](https://github.com/h3poteto/whalebird-desktop/pull/1611) Bump electron-context-menu from 2.1.0 to 2.2.0 -- [#1609](https://github.com/h3poteto/whalebird-desktop/pull/1609) Bump @types/nedb from 1.8.9 to 1.8.10 -- [#1623](https://github.com/h3poteto/whalebird-desktop/pull/1623) Add AUR badge in README -- [#1621](https://github.com/h3poteto/whalebird-desktop/pull/1621) Change AUR package in README - -### Fixed - -- [#1651](https://github.com/h3poteto/whalebird-desktop/pull/1651) closes #1647 Adjust status height when attachments are dropped -- [#1650](https://github.com/h3poteto/whalebird-desktop/pull/1650) closes #1642 Fix calculate diff in change list memberships -- [#1622](https://github.com/h3poteto/whalebird-desktop/pull/1622) Use target instead of linter.eslint.dir in sideci.yml - - - -## [4.2.0] - 2020-07-14 -### Added -- [#1555](https://github.com/h3poteto/whalebird-desktop/pull/1555) refs #1316 Allow resize new toot window - -### Changed -- [#1608](https://github.com/h3poteto/whalebird-desktop/pull/1608) Bump i18next from 19.5.5 to 19.5.6 -- [#1607](https://github.com/h3poteto/whalebird-desktop/pull/1607) Bump jsdom from 16.2.2 to 16.3.0 -- [#1583](https://github.com/h3poteto/whalebird-desktop/pull/1583) Bump electron from 9.0.3 to 9.1.0 -- [#1604](https://github.com/h3poteto/whalebird-desktop/pull/1604) Bump electron-json-storage from 4.1.8 to 4.2.0 -- [#1606](https://github.com/h3poteto/whalebird-desktop/pull/1606) Bump webpack-merge from 5.0.8 to 5.0.9 -- [#1605](https://github.com/h3poteto/whalebird-desktop/pull/1605) Bump electron-mock-ipc from 0.3.5 to 0.3.6 -- [#1601](https://github.com/h3poteto/whalebird-desktop/pull/1601) Bump ajv from 6.12.2 to 6.12.3 -- [#1598](https://github.com/h3poteto/whalebird-desktop/pull/1598) Bump @types/node from 14.0.13 to 14.0.20 -- [#1597](https://github.com/h3poteto/whalebird-desktop/pull/1597) Bump typescript from 3.9.5 to 3.9.6 -- [#1595](https://github.com/h3poteto/whalebird-desktop/pull/1595) Bump electron-devtools-installer from 3.0.0 to 3.1.0 -- [#1587](https://github.com/h3poteto/whalebird-desktop/pull/1587) Bump i18next from 19.5.4 to 19.5.5 -- [#1603](https://github.com/h3poteto/whalebird-desktop/pull/1603) Bump eslint-plugin-import from 2.21.2 to 2.22.0 -- [#1602](https://github.com/h3poteto/whalebird-desktop/pull/1602) Bump webpack-merge from 4.2.2 to 5.0.8 -- [#1600](https://github.com/h3poteto/whalebird-desktop/pull/1600) Bump ts-loader from 7.0.5 to 8.0.0 -- [#1599](https://github.com/h3poteto/whalebird-desktop/pull/1599) Bump electron-context-menu from 2.0.1 to 2.1.0 -- [#1596](https://github.com/h3poteto/whalebird-desktop/pull/1596) Bump sass-loader from 8.0.2 to 9.0.2 -- [#1592](https://github.com/h3poteto/whalebird-desktop/pull/1592) Bump @babel/plugin-proposal-class-properties from 7.10.1 to 7.10.4 -- [#1591](https://github.com/h3poteto/whalebird-desktop/pull/1591) Bump vuex from 3.4.0 to 3.5.1 -- [#1593](https://github.com/h3poteto/whalebird-desktop/pull/1593) Bump copy-webpack-plugin from 6.0.2 to 6.0.3 -- [#1594](https://github.com/h3poteto/whalebird-desktop/pull/1594) Bump vue-loader from 15.9.2 to 15.9.3 -- [#1590](https://github.com/h3poteto/whalebird-desktop/pull/1590) Bump babel-jest from 26.0.1 to 26.1.0 -- [#1589](https://github.com/h3poteto/whalebird-desktop/pull/1589) Bump node-loader from 0.6.0 to 1.0.0 -- [#1588](https://github.com/h3poteto/whalebird-desktop/pull/1588) Bump electron-packager from 14.2.1 to 15.0.0 -- [#1586](https://github.com/h3poteto/whalebird-desktop/pull/1586) Bump lodash from 4.17.15 to 4.17.19 -- [#1578](https://github.com/h3poteto/whalebird-desktop/pull/1578) Bump @babel/runtime from 7.10.2 to 7.10.4 -- [#1580](https://github.com/h3poteto/whalebird-desktop/pull/1580) Bump @babel/core from 7.10.2 to 7.10.4 -- [#1579](https://github.com/h3poteto/whalebird-desktop/pull/1579) Bump @babel/plugin-transform-runtime from 7.10.1 to 7.10.4 -- [#1582](https://github.com/h3poteto/whalebird-desktop/pull/1582) Bump i18next from 19.4.5 to 19.5.4 -- [#1585](https://github.com/h3poteto/whalebird-desktop/pull/1585) Bump @typescript-eslint/typescript-estree from 3.2.0 to 3.6.0 -- [#1577](https://github.com/h3poteto/whalebird-desktop/pull/1577) Bump @babel/preset-env from 7.10.2 to 7.10.4 -- [#1576](https://github.com/h3poteto/whalebird-desktop/pull/1576) Bump @babel/plugin-proposal-object-rest-spread from 7.10.1 to 7.10.4 -- [#1570](https://github.com/h3poteto/whalebird-desktop/pull/1570) Bump @types/lodash from 4.14.155 to 4.14.157 -- [#1563](https://github.com/h3poteto/whalebird-desktop/pull/1563) Bump blueimp-load-image from 5.12.0 to 5.13.0 -- [#1557](https://github.com/h3poteto/whalebird-desktop/pull/1557) Bump moment from 2.26.0 to 2.27.0 -- [#1556](https://github.com/h3poteto/whalebird-desktop/pull/1556) Bump webpack-cli from 3.3.11 to 3.3.12 -- [#1554](https://github.com/h3poteto/whalebird-desktop/pull/1554) Bump sanitize-html from 1.26.0 to 1.27.0 -- [#1553](https://github.com/h3poteto/whalebird-desktop/pull/1553) Bump stylelint from 13.6.0 to 13.6.1 -- [#1551](https://github.com/h3poteto/whalebird-desktop/pull/1551) Bump electron-log from 4.2.1 to 4.2.2 -- [#1549](https://github.com/h3poteto/whalebird-desktop/pull/1549) Bump eslint-plugin-prettier from 3.1.3 to 3.1.4 -- [#1548](https://github.com/h3poteto/whalebird-desktop/pull/1548) Bump vue-router from 3.3.3 to 3.3.4 -- [#1547](https://github.com/h3poteto/whalebird-desktop/pull/1547) Bump cfonts from 2.8.3 to 2.8.5 -- [#1545](https://github.com/h3poteto/whalebird-desktop/pull/1545) Bump css-loader from 3.5.3 to 3.6.0 -- [#1568](https://github.com/h3poteto/whalebird-desktop/pull/1568) New Crowdin updates - -### Fixed -- [#1573](https://github.com/h3poteto/whalebird-desktop/pull/1573) closes #1542 Set proxy config for BrowserWindow - -## [4.1.3] - 2020-06-16 -### Added -- [#1514](https://github.com/h3poteto/whalebird-desktop/pull/1514) closes #1348 Add a menu to hide menu bar -- [#1524](https://github.com/h3poteto/whalebird-desktop/pull/1524) closes #1427 Get and show identity proof of accounts - -### Changed -- [#1538](https://github.com/h3poteto/whalebird-desktop/pull/1538) Bump copy-webpack-plugin from 6.0.1 to 6.0.2 -- [#1543](https://github.com/h3poteto/whalebird-desktop/pull/1543) Bump cfonts from 2.8.2 to 2.8.3 -- [#1534](https://github.com/h3poteto/whalebird-desktop/pull/1534) Bump @babel/plugin-proposal-object-rest-spread from 7.9.6 to 7.10.1 -- [#1544](https://github.com/h3poteto/whalebird-desktop/pull/1544) Bump vue-router from 3.2.0 to 3.3.3 -- [#1541](https://github.com/h3poteto/whalebird-desktop/pull/1541) Bump moment from 2.24.0 to 2.26.0 -- [#1540](https://github.com/h3poteto/whalebird-desktop/pull/1540) Bump about-window from 1.13.2 to 1.13.4 -- [#1532](https://github.com/h3poteto/whalebird-desktop/pull/1532) Bump electron-packager from 14.0.6 to 14.2.1 -- [#1537](https://github.com/h3poteto/whalebird-desktop/pull/1537) Bump eslint-plugin-import from 2.20.2 to 2.21.2 -- [#1536](https://github.com/h3poteto/whalebird-desktop/pull/1536) Bump @types/lodash from 4.14.152 to 4.14.155 -- [#1533](https://github.com/h3poteto/whalebird-desktop/pull/1533) Bump typescript from 3.9.3 to 3.9.5 -- [#1531](https://github.com/h3poteto/whalebird-desktop/pull/1531) Bump stylelint from 13.5.0 to 13.6.0 -- [#1530](https://github.com/h3poteto/whalebird-desktop/pull/1530) Bump @babel/plugin-transform-runtime from 7.10.0 to 7.10.1 -- [#1529](https://github.com/h3poteto/whalebird-desktop/pull/1529) Bump electron-devtools-installer from 2.2.4 to 3.0.0 -- [#1528](https://github.com/h3poteto/whalebird-desktop/pull/1528) Bump chalk from 4.0.0 to 4.1.0 -- [#1501](https://github.com/h3poteto/whalebird-desktop/pull/1501) Bump i18next from 19.4.1 to 19.4.5 -- [#1526](https://github.com/h3poteto/whalebird-desktop/pull/1526) Bump webpack from 4.42.1 to 4.43.0 -- [#1525](https://github.com/h3poteto/whalebird-desktop/pull/1525) Bump @babel/core from 7.9.6 to 7.10.2 -- [#1519](https://github.com/h3poteto/whalebird-desktop/pull/1519) Bump @babel/preset-env from 7.9.6 to 7.10.2 -- [#1491](https://github.com/h3poteto/whalebird-desktop/pull/1491) Bump electron-builder from 22.4.1 to 22.7.0 -- [#1527](https://github.com/h3poteto/whalebird-desktop/pull/1527) Bump @types/node from 14.0.5 to 14.0.13 -- [#1489](https://github.com/h3poteto/whalebird-desktop/pull/1489) Bump animate.css from 3.7.2 to 4.1.0 -- [#1520](https://github.com/h3poteto/whalebird-desktop/pull/1520) Bump @typescript-eslint/typescript-estree from 2.33.0 to 3.2.0 -- [#1510](https://github.com/h3poteto/whalebird-desktop/pull/1510) Bump sanitize-html from 1.23.0 to 1.26.0 -- [#1509](https://github.com/h3poteto/whalebird-desktop/pull/1509) Bump electron-log from 4.1.1 to 4.2.1 -- [#1505](https://github.com/h3poteto/whalebird-desktop/pull/1505) Bump @babel/runtime from 7.9.6 to 7.10.2 -- [#1486](https://github.com/h3poteto/whalebird-desktop/pull/1486) Bump @typescript-eslint/parser from 2.33.0 to 2.34.0 -- [#1500](https://github.com/h3poteto/whalebird-desktop/pull/1500) Bump electron-debug from 3.0.1 to 3.1.0 -- [#1498](https://github.com/h3poteto/whalebird-desktop/pull/1498) Bump core-js from 3.6.4 to 3.6.5 -- [#1496](https://github.com/h3poteto/whalebird-desktop/pull/1496) Bump @panter/vue-i18next from 0.15.1 to 0.15.2 -- [#1493](https://github.com/h3poteto/whalebird-desktop/pull/1493) Bump vue-loader from 15.9.1 to 15.9.2 -- [#1492](https://github.com/h3poteto/whalebird-desktop/pull/1492) Bump @babel/plugin-proposal-class-properties from 7.8.3 to 7.10.1 -- [#1490](https://github.com/h3poteto/whalebird-desktop/pull/1490) Bump vuex from 3.1.3 to 3.4.0 -- [#1488](https://github.com/h3poteto/whalebird-desktop/pull/1488) Bump blueimp-load-image from 5.10.0 to 5.12.0 -- [#1484](https://github.com/h3poteto/whalebird-desktop/pull/1484) Bump @vue/test-utils from 1.0.0-beta.33 to 1.0.3 -- [#1523](https://github.com/h3poteto/whalebird-desktop/pull/1523) closes #1280 Enable spellchecker -- [#1443](https://github.com/h3poteto/whalebird-desktop/pull/1443) Bump electron-context-menu from 0.16.0 to 2.0.1 -- [#1522](https://github.com/h3poteto/whalebird-desktop/pull/1522) Bump electron from 7.2.1 to 9.0.3 -- [#1518](https://github.com/h3poteto/whalebird-desktop/pull/1518) New Crowdin translations -- [#1517](https://github.com/h3poteto/whalebird-desktop/pull/1517) New Crowdin translations -- [#1497](https://github.com/h3poteto/whalebird-desktop/pull/1497) Bump webpack-dev-server from 3.10.3 to 3.11.0 -- [#1515](https://github.com/h3poteto/whalebird-desktop/pull/1515) New Crowdin translations -- [#1512](https://github.com/h3poteto/whalebird-desktop/pull/1512) [Security] Bump websocket-extensions from 0.1.3 to 0.1.4 - -### Fixed -- [#1550](https://github.com/h3poteto/whalebird-desktop/pull/1550) Remove menu bar menu when platform is darwin -- [#1513](https://github.com/h3poteto/whalebird-desktop/pull/1513) closes #1507 Change blockquote style - -## [4.1.2] - 2020-06-01 -### Added -- [#1474](https://github.com/h3poteto/whalebird-desktop/pull/1474) closes #1471 Handle follow requests in notifications - -### Changed -- [#1475](https://github.com/h3poteto/whalebird-desktop/pull/1475) closes #1452 Emojify quoted contents -- [#1473](https://github.com/h3poteto/whalebird-desktop/pull/1473) Bump typescript from 3.8.3 to 3.9.3 -- [#1447](https://github.com/h3poteto/whalebird-desktop/pull/1447) Bump style-loader from 1.1.3 to 1.2.1 -- [#1480](https://github.com/h3poteto/whalebird-desktop/pull/1480) Bump @types/node from 13.13.4 to 14.0.5 -- [#1463](https://github.com/h3poteto/whalebird-desktop/pull/1463) Bump copy-webpack-plugin from 5.1.1 to 6.0.1 -- [#1478](https://github.com/h3poteto/whalebird-desktop/pull/1478) Bump ts-loader from 7.0.3 to 7.0.5 -- [#1479](https://github.com/h3poteto/whalebird-desktop/pull/1479) Bump @babel/plugin-transform-runtime from 7.8.3 to 7.10.0 -- [#1461](https://github.com/h3poteto/whalebird-desktop/pull/1461) Bump stylelint from 13.3.2 to 13.5.0 -- [#1477](https://github.com/h3poteto/whalebird-desktop/pull/1477) Bump element-ui from 2.13.0 to 2.13.2 -- [#1466](https://github.com/h3poteto/whalebird-desktop/pull/1466) Bump eslint-loader from 3.0.4 to 4.0.2 -- [#1465](https://github.com/h3poteto/whalebird-desktop/pull/1465) Bump @types/lodash from 4.14.149 to 4.14.152 -- [#1462](https://github.com/h3poteto/whalebird-desktop/pull/1462) Bump node-sass from 4.13.1 to 4.14.1 -- [#1460](https://github.com/h3poteto/whalebird-desktop/pull/1460) Bump vue-router from 3.1.6 to 3.2.0 -- [#1459](https://github.com/h3poteto/whalebird-desktop/pull/1459) Bump @typescript-eslint/eslint-plugin from 2.30.0 to 2.34.0 -- [#1457](https://github.com/h3poteto/whalebird-desktop/pull/1457) Bump css-loader from 3.5.2 to 3.5.3 -- [#1455](https://github.com/h3poteto/whalebird-desktop/pull/1455) Bump babel-loader from 8.0.6 to 8.1.0 -- [#1450](https://github.com/h3poteto/whalebird-desktop/pull/1450) Bump eslint-plugin-prettier from 3.1.2 to 3.1.3 -- [#1448](https://github.com/h3poteto/whalebird-desktop/pull/1448) Bump @babel/plugin-proposal-object-rest-spread from 7.9.5 to 7.9.6 -- [#1446](https://github.com/h3poteto/whalebird-desktop/pull/1446) Bump stylelint-config-standard from 19.0.0 to 20.0.0 -- [#1476](https://github.com/h3poteto/whalebird-desktop/pull/1476) Bump electron-mock-ipc from 0.3.3 to 0.3.5 -- [#1472](https://github.com/h3poteto/whalebird-desktop/pull/1472) New Crowdin translations - - -### Fixed -- [#1494](https://github.com/h3poteto/whalebird-desktop/pull/1494) closes #1438 Fix reblog target id when reblog using shortcut key -- [#1482](https://github.com/h3poteto/whalebird-desktop/pull/1482) Fix ignore option of copy-webpack-plugin -- [#1481](https://github.com/h3poteto/whalebird-desktop/pull/1481) Fix options for copy-webpack-plugin -- [#1470](https://github.com/h3poteto/whalebird-desktop/pull/1470) closes #1451 Fix quoted status notification in notifications - -## [4.1.1] - 2020-05-18 -### Added -- [#1435](https://github.com/h3poteto/whalebird-desktop/pull/1435) refs #1321 Show quoted status for fedibird -- [#1433](https://github.com/h3poteto/whalebird-desktop/pull/1433) refs #1321 Show quoted status in timelines for Misskey -- [#1431](https://github.com/h3poteto/whalebird-desktop/pull/1431) closes #1317 Show link preview in toot - -### Changed -- [#1445](https://github.com/h3poteto/whalebird-desktop/pull/1445) Fix lexical scope -- [#1437](https://github.com/h3poteto/whalebird-desktop/pull/1437) Bump html-webpack-plugin from 3.2.0 to 4.3.0 -- [#1444](https://github.com/h3poteto/whalebird-desktop/pull/1444) Add AUR link to install whalebird in README -- [#1441](https://github.com/h3poteto/whalebird-desktop/pull/1441) Bump @typescript-eslint/parser from 2.26.0 to 2.33.0 -- [#1438](https://github.com/h3poteto/whalebird-desktop/pull/1438) Bump @typescript-eslint/typescript-estree from 2.28.0 to 2.33.0 -- [#1428](https://github.com/h3poteto/whalebird-desktop/pull/1428) Bump babel-jest from 25.4.0 to 26.0.1 -- [#1418](https://github.com/h3poteto/whalebird-desktop/pull/1418) Bump @babel/preset-env from 7.7.1 to 7.9.6 -- [#1416](https://github.com/h3poteto/whalebird-desktop/pull/1416) Bump eslint-config-standard from 12.0.0 to 14.1.1 -- [#1436](https://github.com/h3poteto/whalebird-desktop/pull/1436) [Security] Bump handlebars from 4.5.3 to 4.7.6 -- [#1434](https://github.com/h3poteto/whalebird-desktop/pull/1434) Bump blueimp-load-image from 2.26.0 to 5.10.0 -- [#1429](https://github.com/h3poteto/whalebird-desktop/pull/1429) Bump ts-loader from 6.2.2 to 7.0.3 -- [#1413](https://github.com/h3poteto/whalebird-desktop/pull/1413) Bump prettier from 2.0.4 to 2.0.5 -- [#1423](https://github.com/h3poteto/whalebird-desktop/pull/1423) Bump @babel/core from 7.9.0 to 7.9.6 -- [#1422](https://github.com/h3poteto/whalebird-desktop/pull/1422) Bump request from 2.88.0 to 2.88.2 -- [#1420](https://github.com/h3poteto/whalebird-desktop/pull/1420) Bump cfonts from 2.8.1 to 2.8.2 -- [#1419](https://github.com/h3poteto/whalebird-desktop/pull/1419) Bump file-loader from 2.0.0 to 6.0.0 -- [#1417](https://github.com/h3poteto/whalebird-desktop/pull/1417) Bump @babel/runtime from 7.9.2 to 7.9.6 -- [#1412](https://github.com/h3poteto/whalebird-desktop/pull/1412) Bump eslint-config-prettier from 6.10.1 to 6.11.0 -- [#1411](https://github.com/h3poteto/whalebird-desktop/pull/1411) Bump @types/node from 13.13.2 to 13.13.4 -- [#1409](https://github.com/h3poteto/whalebird-desktop/pull/1409) Bump ajv from 6.6.1 to 6.12.2 -- [#1405](https://github.com/h3poteto/whalebird-desktop/pull/1405) Bump vue-popperjs from 2.2.0 to 2.3.0 -- [#1430](https://github.com/h3poteto/whalebird-desktop/pull/1430) Update megalodon version to 3.1.2 -- [#1424](https://github.com/h3poteto/whalebird-desktop/pull/1424) New Crowdin translations - -### Fixed -- [#1440](https://github.com/h3poteto/whalebird-desktop/pull/1440) Fix word-wrap in pre tag in status -- [#1426](https://github.com/h3poteto/whalebird-desktop/pull/1426) closes #1425 Fix update after react emoji to the statuses - -## [4.1.0] - 2020-05-05 -### Added -- [#1395](https://github.com/h3poteto/whalebird-desktop/pull/1395) New Crowdin translations -- [#1394](https://github.com/h3poteto/whalebird-desktop/pull/1394) refs #1281 Handle emoji reactions in web socket -- [#1393](https://github.com/h3poteto/whalebird-desktop/pull/1393) refs #1281 Add emoji reaction notification -- [#1392](https://github.com/h3poteto/whalebird-desktop/pull/1392) New translations translation.json (Polish) -- [#1391](https://github.com/h3poteto/whalebird-desktop/pull/1391) refs #1281 Add reaction button and refresh after reaction -- [#1389](https://github.com/h3poteto/whalebird-desktop/pull/1389) refs #1281 Send emoji reactions to statuses - -### Changed -- [#1375](https://github.com/h3poteto/whalebird-desktop/pull/1375) Bump eslint from 5.16.0 to 6.8.0 -- [#1401](https://github.com/h3poteto/whalebird-desktop/pull/1401) Bump @typescript-eslint/eslint-plugin from 2.24.0 to 2.30.0 -- [#1383](https://github.com/h3poteto/whalebird-desktop/pull/1383) Bump vue-router from 3.1.3 to 3.1.6 -- [#1380](https://github.com/h3poteto/whalebird-desktop/pull/1380) Bump eslint-plugin-node from 11.0.0 to 11.1.0 -- [#1379](https://github.com/h3poteto/whalebird-desktop/pull/1379) Bump cfonts from 2.4.6 to 2.8.1 -- [#1400](https://github.com/h3poteto/whalebird-desktop/pull/1400) Bump babel-jest from 25.3.0 to 25.4.0 -- [#1388](https://github.com/h3poteto/whalebird-desktop/pull/1388) Bump @types/node from 13.11.1 to 13.13.2 -- [#1386](https://github.com/h3poteto/whalebird-desktop/pull/1386) Bump @babel/plugin-proposal-object-rest-spread from 7.9.0 to 7.9.5 -- [#1385](https://github.com/h3poteto/whalebird-desktop/pull/1385) Bump axios from 0.19.1 to 0.19.2 -- [#1384](https://github.com/h3poteto/whalebird-desktop/pull/1384) Bump webpack-dev-server from 3.10.1 to 3.10.3 -- [#1382](https://github.com/h3poteto/whalebird-desktop/pull/1382) Bump css-loader from 3.2.0 to 3.5.2 -- [#1377](https://github.com/h3poteto/whalebird-desktop/pull/1377) Bump url-loader from 3.0.0 to 4.1.0 -- [#1376](https://github.com/h3poteto/whalebird-desktop/pull/1376) Bump vue-click-outside from 1.0.7 to 1.1.0 -- [#1374](https://github.com/h3poteto/whalebird-desktop/pull/1374) Bump sanitize-html from 1.22.0 to 1.23.0 -- [#1373](https://github.com/h3poteto/whalebird-desktop/pull/1373) Bump eslint-plugin-html from 6.0.0 to 6.0.2 -- [#1372](https://github.com/h3poteto/whalebird-desktop/pull/1372) Bump @vue/test-utils from 1.0.0-beta.32 to 1.0.0-beta.33 -- [#1370](https://github.com/h3poteto/whalebird-desktop/pull/1370) Bump eslint-plugin-standard from 4.0.0 to 4.0.1 -- [#1368](https://github.com/h3poteto/whalebird-desktop/pull/1368) Bump chalk from 3.0.0 to 4.0.0 -- [#1369](https://github.com/h3poteto/whalebird-desktop/pull/1369) Bump electron-mock-ipc from 0.3.2 to 0.3.3 -- [#1387](https://github.com/h3poteto/whalebird-desktop/pull/1387) Bump megalodon version to 3.1.1 - -### Fixed -- [#1398](https://github.com/h3poteto/whalebird-desktop/pull/1398) closes #1397 Fix opened user's timeline in sidebar -- [#1396](https://github.com/h3poteto/whalebird-desktop/pull/1396) refs #1390 Fix list memberships parser when add or remove list member - -## [4.0.2] - 2020-04-17 -### Added -- [#1347](https://github.com/h3poteto/whalebird-desktop/pull/1347) closes #1279 Generate sha256sum file after build - -### Changed -- [#1361](https://github.com/h3poteto/whalebird-desktop/pull/1361) Bump babel-jest from 24.9.0 to 25.3.0 -- [#1366](https://github.com/h3poteto/whalebird-desktop/pull/1366) Bump prettier from 1.19.1 to 2.0.4 -- [#1360](https://github.com/h3poteto/whalebird-desktop/pull/1360) Bump stylelint from 12.0.1 to 13.3.2 -- [#1363](https://github.com/h3poteto/whalebird-desktop/pull/1363) Bump eslint-plugin-import from 2.20.0 to 2.20.2 -- [#1334](https://github.com/h3poteto/whalebird-desktop/pull/1334) Bump webpack from 4.39.2 to 4.42.1 -- [#1364](https://github.com/h3poteto/whalebird-desktop/pull/1364) Bump @typescript-eslint/typescript-estree from 2.16.0 to 2.28.0 -- [#1342](https://github.com/h3poteto/whalebird-desktop/pull/1342) Bump @babel/core from 7.8.4 to 7.9.0 -- [#1353](https://github.com/h3poteto/whalebird-desktop/pull/1353) Bump @types/node from 13.1.6 to 13.11.1 -- [#1365](https://github.com/h3poteto/whalebird-desktop/pull/1365) Bump i18next from 19.0.3 to 19.4.1 -- [#1362](https://github.com/h3poteto/whalebird-desktop/pull/1362) Bump regenerator-runtime from 0.13.3 to 0.13.5 -- [#1352](https://github.com/h3poteto/whalebird-desktop/pull/1352) Bump eslint-loader from 2.1.1 to 3.0.4 -- [#1341](https://github.com/h3poteto/whalebird-desktop/pull/1341) Bump vuex from 3.1.2 to 3.1.3 -- [#1339](https://github.com/h3poteto/whalebird-desktop/pull/1339) Bump @typescript-eslint/parser from 2.18.0 to 2.26.0 -- [#1336](https://github.com/h3poteto/whalebird-desktop/pull/1336) Bump jsdom from 15.2.1 to 16.2.2 -- [#1333](https://github.com/h3poteto/whalebird-desktop/pull/1333) Bump ts-loader from 6.2.1 to 6.2.2 -- [#1331](https://github.com/h3poteto/whalebird-desktop/pull/1331) Bump webpack-cli from 3.3.10 to 3.3.11 -- [#1327](https://github.com/h3poteto/whalebird-desktop/pull/1327) Bump cross-env from 5.2.0 to 7.0.2 -- [#1330](https://github.com/h3poteto/whalebird-desktop/pull/1330) Bump babel-eslint from 10.0.3 to 10.1.0 -- [#1328](https://github.com/h3poteto/whalebird-desktop/pull/1328) Bump style-loader from 1.1.2 to 1.1.3 -- [#1322](https://github.com/h3poteto/whalebird-desktop/pull/1322) Bump @babel/plugin-proposal-object-rest-spread from 7.7.7 to 7.9.0 -- [#1359](https://github.com/h3poteto/whalebird-desktop/pull/1359) Update electron version to 7.2.1 -- [#1358](https://github.com/h3poteto/whalebird-desktop/pull/1358) Update typescript version to 3.8.3 -- [#1356](https://github.com/h3poteto/whalebird-desktop/pull/1356) Update electron-log to 4.1.1 and fix proxy spec - - -### Fixed -- [#1355](https://github.com/h3poteto/whalebird-desktop/pull/1355) closes #1263 Specify word-break to normal in New toot -- [#1354](https://github.com/h3poteto/whalebird-desktop/pull/1354) closes #1318 Apply font-size settings in New toot - - -## [4.0.1] - 2020-04-03 -### Added -- [#1337](https://github.com/h3poteto/whalebird-desktop/pull/1337) closes #1307 Confirm timelines after initialized -- [#1279](https://github.com/h3poteto/whalebird-desktop/pull/1279) closes #1279 Generate sha256sum file after build - -### Changed -- [#1319](https://github.com/h3poteto/whalebird-desktop/pull/1319) Bump @babel/runtime from 7.8.0 to 7.9.2 -- [#1305](https://github.com/h3poteto/whalebird-desktop/pull/1305) Bump vue-loader from 15.8.3 to 15.9.1 -- [#1315](https://github.com/h3poteto/whalebird-desktop/pull/1315) Bump eslint-config-prettier from 6.9.0 to 6.10.1 -- [#1311](https://github.com/h3poteto/whalebird-desktop/pull/1311) Bump @vue/test-utils from 1.0.0-beta.30 to 1.0.0-beta.32 -- [#1306](https://github.com/h3poteto/whalebird-desktop/pull/1306) Bump eslint-plugin-promise from 4.0.1 to 4.2.1 -- [#1274](https://github.com/h3poteto/whalebird-desktop/pull/1274) Bump mini-css-extract-plugin from 0.4.5 to 0.9.0 -- [#1304](https://github.com/h3poteto/whalebird-desktop/pull/1304) Bump mousetrap from 1.6.3 to 1.6.5 -- [#1303](https://github.com/h3poteto/whalebird-desktop/pull/1303) Bump @typescript-eslint/eslint-plugin from 2.19.0 to 2.24.0 -- [#1301](https://github.com/h3poteto/whalebird-desktop/pull/1301) Bump eslint-plugin-vue from 6.1.2 to 6.2.2 -- [#1299](https://github.com/h3poteto/whalebird-desktop/pull/1299) Bump webpack-merge from 4.1.4 to 4.2.2 -- [#1290](https://github.com/h3poteto/whalebird-desktop/pull/1290) Bump @types/jest from 24.9.1 to 25.1.4 -- [#1288](https://github.com/h3poteto/whalebird-desktop/pull/1288) Bump sanitize-html from 1.20.1 to 1.22.0 -- [#1272](https://github.com/h3poteto/whalebird-desktop/pull/1272) Bump babel-plugin-istanbul from 5.1.0 to 6.0.0 -- [#1271](https://github.com/h3poteto/whalebird-desktop/pull/1271) Bump node-sass from 4.13.0 to 4.13.1 -- [#1270](https://github.com/h3poteto/whalebird-desktop/pull/1270) Bump @trodi/electron-splashscreen from 0.3.4 to 1.0.0 - -### Fixed -- [#1345](https://github.com/h3poteto/whalebird-desktop/pull/1345) closes #1325 Update megalodon version to 3.0.1 - -## [4.0.0] - 2020-03-24 -### Added -- [#1298](https://github.com/h3poteto/whalebird-desktop/pull/1298) refs #816 Add support for Misskey login - -### Changed -- [#1314](https://github.com/h3poteto/whalebird-desktop/pull/1314) New Crowdin translations -- [#1312](https://github.com/h3poteto/whalebird-desktop/pull/1312) New Crowdin translations -- [#1309](https://github.com/h3poteto/whalebird-desktop/pull/1309) New Crowdin translations - -## [3.2.0] - 2020-03-17 -### Added -- [#1278](https://github.com/h3poteto/whalebird-desktop/pull/1278) Add bidi support -- [#1269](https://github.com/h3poteto/whalebird-desktop/pull/1269) Load system theme for dark mode - -### Changed -- [#1296](https://github.com/h3poteto/whalebird-desktop/pull/1296) Update electron-builder version to 22.4.0 -- [#1292](https://github.com/h3poteto/whalebird-desktop/pull/1292) Update megalodon version to 3.0.0-beta.4 -- [#1293](https://github.com/h3poteto/whalebird-desktop/pull/1293) Update sideci settings -- [#1291](https://github.com/h3poteto/whalebird-desktop/pull/1291) [Security] Bump acorn from 5.7.3 to 5.7.4 -- [#1268](https://github.com/h3poteto/whalebird-desktop/pull/1268) Upgrade Electron version to 7.1.11 -- [#1266](https://github.com/h3poteto/whalebird-desktop/pull/1266) Bump @typescript-eslint/eslint-plugin from 1.5.0 to 2.19.0 -- [#1264](https://github.com/h3poteto/whalebird-desktop/pull/1264) Bump electron-context-menu from 0.15.2 to 0.16.0 -- [#1262](https://github.com/h3poteto/whalebird-desktop/pull/1262) Bump vue-loader from 15.7.2 to 15.8.3 -- [#1261](https://github.com/h3poteto/whalebird-desktop/pull/1261) Bump electron-json-storage from 4.1.5 to 4.1.8 -- [#1260](https://github.com/h3poteto/whalebird-desktop/pull/1260) Bump eslint-plugin-import from 2.19.1 to 2.20.0 -- [#1259](https://github.com/h3poteto/whalebird-desktop/pull/1259) Bump prettier from 1.17.0 to 1.19.1 -- [#1254](https://github.com/h3poteto/whalebird-desktop/pull/1254) Bump @typescript-eslint/parser from 2.15.0 to 2.18.0 -- [#1256](https://github.com/h3poteto/whalebird-desktop/pull/1256) Bump @babel/core from 7.7.7 to 7.8.4 -- [#1252](https://github.com/h3poteto/whalebird-desktop/pull/1252) Bump @types/jest from 24.0.25 to 24.9.1 -- [#1248](https://github.com/h3poteto/whalebird-desktop/pull/1248) Bump sass-loader from 7.1.0 to 8.0.2 -- [#1246](https://github.com/h3poteto/whalebird-desktop/pull/1246) Bump core-js from 3.6.1 to 3.6.4 -- [#1244](https://github.com/h3poteto/whalebird-desktop/pull/1244) Bump @typescript-eslint/typescript-estree from 1.5.0 to 2.16.0 -- [#1241](https://github.com/h3poteto/whalebird-desktop/pull/1241) Bump @babel/plugin-proposal-class-properties from 7.7.0 to 7.8.3 - -## [3.1.0] - 2020-01-23 -### Added -- [#1223](https://github.com/h3poteto/whalebird-desktop/pull/1223) Read exif and rotate image for all attachment images - -### Changed - -- [#1239](https://github.com/h3poteto/whalebird-desktop/pull/1239) Bump all-object-keys from 1.1.1 to 2.1.1 -- [#1238](https://github.com/h3poteto/whalebird-desktop/pull/1238) Bump webpack-cli from 3.1.2 to 3.3.10 -- [#1237](https://github.com/h3poteto/whalebird-desktop/pull/1237) Bump @types/node from 11.11.4 to 13.1.6 -- [#1236](https://github.com/h3poteto/whalebird-desktop/pull/1236) Bump ts-jest from 24.2.0 to 24.3.0 -- [#1235](https://github.com/h3poteto/whalebird-desktop/pull/1235) Bump electron-context-menu from 0.15.1 to 0.15.2 -- [#1234](https://github.com/h3poteto/whalebird-desktop/pull/1234) Bump element-ui from 2.4.11 to 2.13.0 -- [#1233](https://github.com/h3poteto/whalebird-desktop/pull/1233) Bump @babel/plugin-transform-runtime from 7.6.2 to 7.8.3 -- [#1230](https://github.com/h3poteto/whalebird-desktop/pull/1230) Bump @babel/runtime from 7.7.7 to 7.8.0 -- [#1229](https://github.com/h3poteto/whalebird-desktop/pull/1229) Bump vuex from 3.0.1 to 3.1.2 -- [#1228](https://github.com/h3poteto/whalebird-desktop/pull/1238) Bump @mapbox/stylelint-processor-arbitrary-tags from 0.2.0 to 0.3.0 -- [#1227](https://github.com/h3poteto/whalebird-desktop/pull/1227) Bump @typescript-eslint/parser from 1.5.0 to 2.15.0 -- [#1224](https://github.com/h3poteto/whalebird-desktop/pull/1224) Hide detail menu in toot detail sidebar -- [#1217](https://github.com/h3poteto/whalebird-desktop/pull/1217) Update electron-builder version to >= 22.0.0 -- [#1215](https://github.com/h3poteto/whalebird-desktop/pull/1215) Bump moment from 2.22.2 to 2.24.0 -- [#1211](https://github.com/h3poteto/whalebird-desktop/pull/1211) Bump electron-mock-ipc from 0.3.1 to 0.3.2 -- [#1214](https://github.com/h3poteto/whalebird-desktop/pull/1214) Bump eslint-plugin-node from 10.0.0 to 11.0.0 -- [#1213](https://github.com/h3poteto/whalebird-desktop/pull/1213) Bump axios from 0.19.0 to 0.19.1 -- [#1212](https://github.com/h3poteto/whalebird-desktop/pull/1212) Bump i18next from 12.1.0 to 19.0.3 -- [#1210](https://github.com/h3poteto/whalebird-desktop/pull/1210) Bump url-loader from 2.2.0 to 3.0.0 -- [#1209](https://github.com/h3poteto/whalebird-desktop/pull/1209) Bump stylelint from 10.1.0 to 12.0.1 -- [#1208](https://github.com/h3poteto/whalebird-desktop/pull/1208) Bump vue-shortkey from 3.1.6 to 3.1.7 - -### Fixed - -- [#1232](https://github.com/h3poteto/whalebird-desktop/pull/1232) Fix url-loader for loading icon -- [#1231](https://github.com/h3poteto/whalebird-desktop/pull/1231) Catch error when can not load image in exifImageUrl -- [#1221](https://github.com/h3poteto/whalebird-desktop/pull/1221) Fix lazy loading for account timeline in sidebar -- [#1219](https://github.com/h3poteto/whalebird-desktop/pull/1219) Fix i18next namespace for new version - - - -## [3.0.3] - 2020-01-08 -### Changed -- [#1207](https://github.com/h3poteto/whalebird-desktop/pull/1207) Update electron version to 6.1.7 -- [#1201](https://github.com/h3poteto/whalebird-desktop/pull/1201) Bump @types/jest from 24.0.15 to 24.0.25 -- [#1204](https://github.com/h3poteto/whalebird-desktop/pull/1204) Bump animate.css from 3.7.0 to 3.7.2 -- [#1203](https://github.com/h3poteto/whalebird-desktop/pull/1203) Bump ts-jest from 24.0.2 to 24.2.0 -- [#1202](https://github.com/h3poteto/whalebird-desktop/pull/1202) Bump webpack-dev-server from 3.9.0 to 3.10.1 -- [#1200](https://github.com/h3poteto/whalebird-desktop/pull/1200) Bump @types/nedb from 1.8.7 to 1.8.9 -- [#1199](https://github.com/h3poteto/whalebird-desktop/pull/1199) Bump eslint-plugin-vue from 6.0.1 to 6.1.2 -- [#1198](https://github.com/h3poteto/whalebird-desktop/pull/1198) Bump cfonts from 2.4.5 to 2.4.6 -- [#1197](https://github.com/h3poteto/whalebird-desktop/pull/1197) Bump @babel/core from 7.4.3 to 7.7.7 -- [#1205](https://github.com/h3poteto/whalebird-desktop/pull/1205) New Crowdin translations -- [#1194](https://github.com/h3poteto/whalebird-desktop/pull/1194) Bump eslint-plugin-prettier from 3.0.1 to 3.1.2 -- [#1196](https://github.com/h3poteto/whalebird-desktop/pull/1196) Bump eslint-config-prettier from 6.7.0 to 6.9.0 -- [#1195](https://github.com/h3poteto/whalebird-desktop/pull/1195) Bump @babel/runtime from 7.7.4 to 7.7.7 -- [#1193](https://github.com/h3poteto/whalebird-desktop/pull/1193) Bump @vue/test-utils from 1.0.0-beta.29 to 1.0.0-beta.30 -- [#1192](https://github.com/h3poteto/whalebird-desktop/pull/1192) New Crowdin translations -- [#1191](https://github.com/h3poteto/whalebird-desktop/pull/1191) Bump core-js from 3.0.0 to 3.6.1 -- [#1186](https://github.com/h3poteto/whalebird-desktop/pull/1186) Bump vue and vue-template-compiler -- [#1190](https://github.com/h3poteto/whalebird-desktop/pull/1190) Bump style-loader from 1.0.0 to 1.1.2 -- [#1185](https://github.com/h3poteto/whalebird-desktop/pull/1185) Bump copy-webpack-plugin from 5.0.5 to 5.1.1 -- [#1183](https://github.com/h3poteto/whalebird-desktop/pull/1183) Bump eslint-plugin-vue from 5.2.2 to 6.0.1 -- [#1182](https://github.com/h3poteto/whalebird-desktop/pull/1182) Bump eslint-plugin-import from 2.18.2 to 2.19.1 -- [#1180](https://github.com/h3poteto/whalebird-desktop/pull/1180) Bump eslint-config-prettier from 4.1.0 to 6.7.0 -- [#1176](https://github.com/h3poteto/whalebird-desktop/pull/1176) Bump @babel/plugin-proposal-object-rest-spread from 7.7.4 to 7.7.7 - - - -## [3.0.2] - 2019-12-23 -### Changed -- [#1142](https://github.com/h3poteto/whalebird-desktop/pull/1142) Bump cfonts from 2.3.0 to 2.4.5 -- [#1160](https://github.com/h3poteto/whalebird-desktop/pull/1160) Bump @babel/plugin-proposal-object-rest-spread from 7.4.3 to 7.7.4 -- [#1153](https://github.com/h3poteto/whalebird-desktop/pull/1153) Bump @babel/runtime from 7.4.3 to 7.7.4 -- [#1151](https://github.com/h3poteto/whalebird-desktop/pull/1151) Bump regenerator-runtime from 0.13.1 to 0.13.3 -- [#1152](https://github.com/h3poteto/whalebird-desktop/pull/1152) Bump @types/i18next from 12.1.0 to 13.0.0 -- [#1150](https://github.com/h3poteto/whalebird-desktop/pull/1150) Bump stylelint-config-standard from 18.3.0 to 19.0.0 -- [#1141](https://github.com/h3poteto/whalebird-desktop/pull/1141) Bump sanitize-html from 1.19.3 to 1.20.1 -- [#1139](https://github.com/h3poteto/whalebird-desktop/pull/1139) Bump babel-loader from 8.0.5 to 8.0.6 -- [#1138](https://github.com/h3poteto/whalebird-desktop/pull/1138) Bump vue-popperjs from 1.6.1 to 2.2.0 - -### Fixed -- [#1177](https://github.com/h3poteto/whalebird-desktop/pull/1177) Fix loading css path for vue-popper.js -- [#1175](https://github.com/h3poteto/whalebird-desktop/pull/1175) Fix reading translation files japanese and italian - -## [3.0.1] - 2019-12-22 -### Added -- [#1169](https://github.com/h3poteto/whalebird-desktop/pull/1169) Search account in reply_to and context before account name search -- [#1129](https://github.com/h3poteto/whalebird-desktop/pull/1129) Add sponsor link in donate -- [#1128](https://github.com/h3poteto/whalebird-desktop/pull/1128) Add FUNDING.yml for sponsors -- [#1127](https://github.com/h3poteto/whalebird-desktop/pull/1127) Add dependabot badge in README -- [#1125](https://github.com/h3poteto/whalebird-desktop/pull/1125) Add some empty language translations -- [#1124](https://github.com/h3poteto/whalebird-desktop/pull/1124) Add explain for crowdin in readme -- [#1117](https://github.com/h3poteto/whalebird-desktop/pull/1117) Update crowdin to specify locale mapping -- [#1115](https://github.com/h3poteto/whalebird-desktop/pull/1115) Introduce Crowdin configuration - -### Changed -- [#1168](https://github.com/h3poteto/whalebird-desktop/pull/1168) Update node version to 12.13.1 in CircleCI -- [#1165](https://github.com/h3poteto/whalebird-desktop/pull/1165) New Crowdin translations -- [#1155](https://github.com/h3poteto/whalebird-desktop/pull/1155) Use ipcRenderer directly from electron -- [#1149](https://github.com/h3poteto/whalebird-desktop/pull/1149) Load translation json directly instead of i18next-sync-fs-backend -- [#1148](https://github.com/h3poteto/whalebird-desktop/pull/1148) Stop to specify libraryTarget for renderer in webpack -- [#1137](https://github.com/h3poteto/whalebird-desktop/pull/1137) Bump style-loader from 0.23.1 to 1.0.0 -- [#1143](https://github.com/h3poteto/whalebird-desktop/pull/1143) Bump @panter/vue-i18next from 0.13.0 to 0.15.1 -- [#1144](https://github.com/h3poteto/whalebird-desktop/pull/1144) Bump about-window from 1.13.1 to 1.13.2 -- [#1145](https://github.com/h3poteto/whalebird-desktop/pull/1145) Bump @types/lodash from 4.14.123 to 4.14.149 -- [#1146](https://github.com/h3poteto/whalebird-desktop/pull/1146) Bump eslint-plugin-import from 2.14.0 to 2.18.2 -- [#1147](https://github.com/h3poteto/whalebird-desktop/pull/1147) Use window object in index.ejs -- [#1135](https://github.com/h3poteto/whalebird-desktop/pull/1135) Use ipc, shell and clipboard from preload.js -- [#1133](https://github.com/h3poteto/whalebird-desktop/pull/1133) Bump axios from 0.18.1 to 0.19.0 -- [#1122](https://github.com/h3poteto/whalebird-desktop/pull/1122) Bump webpack-dev-server from 3.8.0 to 3.9.0 -- [#1130](https://github.com/h3poteto/whalebird-desktop/pull/1130) Bump jsdom from 13.0.0 to 15.2.1 -- [#1131](https://github.com/h3poteto/whalebird-desktop/pull/1131) Bump chalk from 2.4.2 to 3.0.0 -- [#1132](https://github.com/h3poteto/whalebird-desktop/pull/1132) Bump del from 3.0.0 to 5.1.0 -- [#1123](https://github.com/h3poteto/whalebird-desktop/pull/1123) Bump eslint-plugin-html from 4.0.6 to 6.0.0 -- [#1121](https://github.com/h3poteto/whalebird-desktop/pull/1121) Bump @babel/preset-env from 7.4.3 to 7.7.1 -- [#1134](https://github.com/h3poteto/whalebird-desktop/pull/1134) Bump vue-awesome from 3.2.0 to 4.0.2 -- [#1120](https://github.com/h3poteto/whalebird-desktop/pull/1120) Bump hoek from 6.1.2 to 6.1.3 -- [#1119](https://github.com/h3poteto/whalebird-desktop/pull/1119) Bump electron-context-menu from 0.12.0 to 0.15.1 -- [#1126](https://github.com/h3poteto/whalebird-desktop/pull/1126) New Crowdin translations -- [#1118](https://github.com/h3poteto/whalebird-desktop/pull/1118) New Crowdin translations -- [#1116](https://github.com/h3poteto/whalebird-desktop/pull/1116) New Crowdin translations -- [#1113](https://github.com/h3poteto/whalebird-desktop/pull/1113) Always fallback to English when the translation key is missing -- [#1108](https://github.com/h3poteto/whalebird-desktop/pull/1108) Bump mousetrap from 1.6.2 to 1.6.3 -- [#1109](https://github.com/h3poteto/whalebird-desktop/pull/1109) Bump url-loader from 1.1.2 to 2.2.0 -- [#1110](https://github.com/h3poteto/whalebird-desktop/pull/1110) Bump vue-router from 3.0.2 to 3.1.3 -- [#1111](https://github.com/h3poteto/whalebird-desktop/pull/1111) Bump electron-debug from 2.2.0 to 3.0.1 -- [#1112](https://github.com/h3poteto/whalebird-desktop/pull/1112) Bump eslint-plugin-node from 8.0.0 to 10.0.0 -- [#1104](https://github.com/h3poteto/whalebird-desktop/pull/1104) Bump @babel/plugin-proposal-class-properties from 7.4.0 to 7.7.0 -- [#1103](https://github.com/h3poteto/whalebird-desktop/pull/1103) Bump copy-webpack-plugin from 4.6.0 to 5.0.5 -- [#1105](https://github.com/h3poteto/whalebird-desktop/pull/1105) Update Italy translations -- [#1080](https://github.com/h3poteto/whalebird-desktop/pull/1080) Bump @babel/plugin-proposal-class-properties from 7.4.0 to 7.5.5 -- [#1082](https://github.com/h3poteto/whalebird-desktop/pull/1082) Bump css-loader from 3.0.0 to 3.2.0 -- [#1079](https://github.com/h3poteto/whalebird-desktop/pull/1079) Bump vue-loader from 15.4.2 to 15.7.2 -- [#1078](https://github.com/h3poteto/whalebird-desktop/pull/1079) Bump @babel/plugin-transform-runtime from 7.4.3 to 7.6.2 -- [#1073](https://github.com/h3poteto/whalebird-desktop/pull/1073) Bump ts-loader from 6.0.4 to 6.2.1 -- [#1074](https://github.com/h3poteto/whalebird-desktop/pull/1074) Bump node-sass from 4.12.0 to 4.13.0 -- [#1072](https://github.com/h3poteto/whalebird-desktop/pull/1072) Bump chalk from 2.4.1 to 2.4.2 -- [#1071](https://github.com/h3poteto/whalebird-desktop/pull/1071) Bump webpack-hot-middleware from 2.24.3 to 2.25.0 -- [#1070](https://github.com/h3poteto/whalebird-desktop/pull/1070) Bump babel-eslint from 10.0.1 to 10.0.3 - -### Fixed -- [#1174](https://github.com/h3poteto/whalebird-desktop/pull/1174) Remove babel-minify because webpack can minify using terser when production -- [#1172](https://github.com/h3poteto/whalebird-desktop/pull/1172) Build preload script for production -- [#1171](https://github.com/h3poteto/whalebird-desktop/pull/1171) Update megalodon version to 2.1.1 -- [#1167](https://github.com/h3poteto/whalebird-desktop/pull/1167) Add test for toot parser -- [#1166](https://github.com/h3poteto/whalebird-desktop/pull/1166) Remove word-break in toot -- [#1164](https://github.com/h3poteto/whalebird-desktop/pull/1164) Use default preference if the file does not exist when get proxy configuration -- [#1162](https://github.com/h3poteto/whalebird-desktop/pull/1162) Update megalodon version to 2.1.0 -- [#1159](https://github.com/h3poteto/whalebird-desktop/pull/1159) Update jest version to 24.9.0 and fix some tests -- [#1157](https://github.com/h3poteto/whalebird-desktop/pull/1157) Update electron-mock-ipc version to 0.3.1 - -## [3.0.0] - 2019-11-17 -### Added -- [#1090](https://github.com/h3poteto/whalebird-desktop/pull/1090) Add AppImage in release builds -- [#1081](https://github.com/h3poteto/whalebird-desktop/pull/1081) Add notice in login for users who use proxy server -- [#1069](https://github.com/h3poteto/whalebird-desktop/pull/1069) Reload proxy configuration after changed -- [#1066](https://github.com/h3poteto/whalebird-desktop/pull/1066) Load proxy information and apply for all network connection -- [#1060](https://github.com/h3poteto/whalebird-desktop/pull/1060) Add a tray menu to open window -- [#1064](https://github.com/h3poteto/whalebird-desktop/pull/1064) Add proxy configuration in preferences - -### Changed -- [#1094](https://github.com/h3poteto/whalebird-desktop/pull/1094) Use system proxy as default in preferences -- [#1093](https://github.com/h3poteto/whalebird-desktop/pull/1093) Update word instance to server -- [#1088](https://github.com/h3poteto/whalebird-desktop/pull/1088) Update translation when domain does not find -- [#1087](https://github.com/h3poteto/whalebird-desktop/pull/1087) Check instance API before request host-meta when confirm instance -- [#1067](https://github.com/h3poteto/whalebird-desktop/pull/1067) Update electron version to 6.1.0 -- [#1063](https://github.com/h3poteto/whalebird-desktop/pull/1063) Replace old Hiragino font for macOS -- [#1062](https://github.com/h3poteto/whalebird-desktop/pull/1062) Update megalodon version to 2.0.0 - -### Fixed -- [#1101](https://github.com/h3poteto/whalebird-desktop/pull/1101) fix: Codesign script for app store -- [#1100](https://github.com/h3poteto/whalebird-desktop/pull/1100) fix: Remove debugging code in websocket -- [#1099](https://github.com/h3poteto/whalebird-desktop/pull/1099) Update megalodon version to 2.0.1 -- [#1097](https://github.com/h3poteto/whalebird-desktop/pull/1097) Reject duplicated status when append statuses in mutations -- [#1089](https://github.com/h3poteto/whalebird-desktop/pull/1089) Trim authorization token and domain URL -- [#1068](https://github.com/h3poteto/whalebird-desktop/pull/1068) Fix comparison between login user and target account - - -## [2.9.0] - 2019-10-11 -### Added -- [#1056](https://github.com/h3poteto/whalebird-desktop/pull/1056) Upgrade electron version to 5.0.11 -- [#1045](https://github.com/h3poteto/whalebird-desktop/pull/1045) Add a preference to auto launch at login - -### Changed -- [#1057](https://github.com/h3poteto/whalebird-desktop/pull/1057) Update electron-builder version to 21.2.0 -- [#1053](https://github.com/h3poteto/whalebird-desktop/pull/1053) Allow resize sidebar using drag -- [#1049](https://github.com/h3poteto/whalebird-desktop/pull/1049) Through auto-launch in darwin -- [#1048](https://github.com/h3poteto/whalebird-desktop/pull/1048) Add shortcut description for reload -- [#1047](https://github.com/h3poteto/whalebird-desktop/pull/1047) Remove QR code for bitcoin - -### Fixed -- [#1052](https://github.com/h3poteto/whalebird-desktop/pull/1052) Fix scrollbar design for preferences and settings -- [#1050](https://github.com/h3poteto/whalebird-desktop/pull/1050) Fix loading color in preferences - - -## [2.8.6] - 2019-09-19 -### Added -- [#1043](https://github.com/h3poteto/whalebird-desktop/pull/1043) Start to pacman support in release package -- [#1038](https://github.com/h3poteto/whalebird-desktop/pull/1038) Add reload method in SideBar - -### Changed -- [#1044](https://github.com/h3poteto/whalebird-desktop/pull/1044) Update electron version to 5.0.10 -- [#1041](https://github.com/h3poteto/whalebird-desktop/pull/1041) Replace multispinner with another one -- [#1033](https://github.com/h3poteto/whalebird-desktop/pull/1033) Use authorized request to get instance information when start streamings -- [#1032](https://github.com/h3poteto/whalebird-desktop/pull/1032) Confirm ActivityPub instance to read host-meta before login - -### Fixed -- [#1042](https://github.com/h3poteto/whalebird-desktop/pull/1042) Do not enforce single instance in darwin -- [#1037](https://github.com/h3poteto/whalebird-desktop/pull/1037) Fix validation status when change the domain in Login - - -## [2.8.5] - 2019-09-09 -### Changed -- [#1029](https://github.com/h3poteto/whalebird-desktop/pull/1029) Block to root path when user use browser-back -- [#1024](https://github.com/h3poteto/whalebird-desktop/pull/1024) Update German translation -- [#1020](https://github.com/h3poteto/whalebird-desktop/pull/1020) audit: Update eslint-utils version to 1.4.2 -- [#1016](https://github.com/h3poteto/whalebird-desktop/pull/1016) Update megalodon version to 1.0.2 -- [#1015](https://github.com/h3poteto/whalebird-desktop/pull/1015) Update megalodon version to 1.0.1 -- [#1014](https://github.com/h3poteto/whalebird-desktop/pull/1014) Enforces single instance for linux and windows - -### Fixed -- [#1026](https://github.com/h3poteto/whalebird-desktop/pull/1026) Set word-break for toot content -- [#1023](https://github.com/h3poteto/whalebird-desktop/pull/1023) Update megalodon version to 1.0.3 -- [#1019](https://github.com/h3poteto/whalebird-desktop/pull/1019) fix: Close request when modal is closed -- [#1018](https://github.com/h3poteto/whalebird-desktop/pull/1018) fix: Remove cache file when load error -- [#1013](https://github.com/h3poteto/whalebird-desktop/pull/1013) Enable nodeIntegration in about window - - - -## [2.8.4] - 2019-08-23 -### Added -- [#1006](https://github.com/h3poteto/whalebird-desktop/pull/1006) Show tray icon only linux and windows, and append tray menu - -### Changed -- [#1008](https://github.com/h3poteto/whalebird-desktop/pull/1008) Set autoplay for movie attachments -- [#1007](https://github.com/h3poteto/whalebird-desktop/pull/1007) Update Electron version to 5.0.9 -- [#1004](https://github.com/h3poteto/whalebird-desktop/pull/1004) Cancel requests when suggestion is selected or closed -- [#1003](https://github.com/h3poteto/whalebird-desktop/pull/1003) Update changelog - -### Fixed -- [#1011](https://github.com/h3poteto/whalebird-desktop/pull/1011) Through close event when platform is darwin -- [#1005](https://github.com/h3poteto/whalebird-desktop/pull/1005) Update French translation - - - -## [2.8.3] - 2019-08-13 -### Added -- [#1000](https://github.com/h3poteto/whalebird-desktop/pull/1000) Add spec for zh_cn translation json -- [#998](https://github.com/h3poteto/whalebird-desktop/pull/998) Simplified Chinese translation -- [#995](https://github.com/h3poteto/whalebird-desktop/pull/995) Cache accounts and search cache when suggest -- [#990](https://github.com/h3poteto/whalebird-desktop/pull/990) Cache hashtags -- [#984](https://github.com/h3poteto/whalebird-desktop/pull/984) Add description for CSC_NAME in document - -### Changed -- [#997](https://github.com/h3poteto/whalebird-desktop/pull/997) Use v2 API for suggestion -- [#994](https://github.com/h3poteto/whalebird-desktop/pull/994) Move suggest logic to vuex -- [#986](https://github.com/h3poteto/whalebird-desktop/pull/986) Use websocket as default streaming method for all timelines - -### Fixed -- [#1001](https://github.com/h3poteto/whalebird-desktop/pull/1001) Fix API endpoint for direct messages, use conversations -- [#996](https://github.com/h3poteto/whalebird-desktop/pull/996) Fix uniqueness in suggestion -- [#987](https://github.com/h3poteto/whalebird-desktop/pull/987) Get streaming url for instance API before start streaming - - - -## [2.8.2] - 2019-07-25 -### Changed -- [#974](https://github.com/h3poteto/whalebird-desktop/pull/974) Notify notification in main process -- [#973](https://github.com/h3poteto/whalebird-desktop/pull/973) Update screenshot in README for recent updates - -### Fixed -- [#981](https://github.com/h3poteto/whalebird-desktop/pull/981) Set appId to notify in windows10 -- [#979](https://github.com/h3poteto/whalebird-desktop/pull/979) fix: Check webContents status when receive status in streaming -- [#978](https://github.com/h3poteto/whalebird-desktop/pull/978) Check webContent status before send event in all streamings -- [#977](https://github.com/h3poteto/whalebird-desktop/pull/977) Fix digits number of percentage in polls - - -## [2.8.1] - 2019-07-21 -### Added -- [#966](https://github.com/h3poteto/whalebird-desktop/pull/966) Add a spec for translation json files -- [#963](https://github.com/h3poteto/whalebird-desktop/pull/963) Add polls form in new toot modal -- [#962](https://github.com/h3poteto/whalebird-desktop/pull/962) Add poll form in Toot - -## Changed -- [#961](https://github.com/h3poteto/whalebird-desktop/pull/961) Update megalodon version to 0.8.2 -- [#960](https://github.com/h3poteto/whalebird-desktop/pull/960) Update outdated packages -- [#959](https://github.com/h3poteto/whalebird-desktop/pull/959) Update megalodon version to 0.8.1 - -## Fixed -- [#971](https://github.com/h3poteto/whalebird-desktop/pull/971) Clear polls after close new toot modal -- [#970](https://github.com/h3poteto/whalebird-desktop/pull/970) Attach only polls if it is specified -- [#968](https://github.com/h3poteto/whalebird-desktop/pull/968) Fix code link in README which explain who to add new language -- [#967](https://github.com/h3poteto/whalebird-desktop/pull/967) Add default fonts for emoji in Linux - - - -## [2.8.0] - 2019-07-13 -### Added -- [#946](https://github.com/h3poteto/whalebird-desktop/pull/946) Run all userstreaming in background and notify for all accounts - -### Changed -- [#955](https://github.com/h3poteto/whalebird-desktop/pull/955) Remove unused tests and packages -- [#954](https://github.com/h3poteto/whalebird-desktop/pull/954) Update outdated packages -- [#953](https://github.com/h3poteto/whalebird-desktop/pull/953) Use electron-mock-ipc instead of electron-ipc-mock -- [#951](https://github.com/h3poteto/whalebird-desktop/pull/951) Update node version to 10.16.0 -- [#950](https://github.com/h3poteto/whalebird-desktop/pull/950) Update megalodon version to 0.8.0 - -### Fixed -- [#957](https://github.com/h3poteto/whalebird-desktop/pull/957) Stop user streaming after remove account association - - - -## [2.7.5] - 2019-06-20 -### Changed -- [#945](https://github.com/h3poteto/whalebird-desktop/pull/945) Update Electron version to 4.2.4 -- [#944](https://github.com/h3poteto/whalebird-desktop/pull/944) Allow up to 72pt font in Appearance -- [#939](https://github.com/h3poteto/whalebird-desktop/pull/939) Add integration tests for Contents - -### Fixed -- [#942](https://github.com/h3poteto/whalebird-desktop/pull/942) Update megalodon version to 0.7.5 - - -## [2.7.4] - 2019-06-12 -### Added - -- [#935](https://github.com/h3poteto/whalebird-desktop/pull/935) Customize toot padding -- [#929](https://github.com/h3poteto/whalebird-desktop/pull/929) Add arm architecture in build target - -### Changed - -- [#938](https://github.com/h3poteto/whalebird-desktop/pull/938) Update megalodon version to 0.7.2 -- [#937](https://github.com/h3poteto/whalebird-desktop/pull/937) refactor: Use type instead of interface -- [#936](https://github.com/h3poteto/whalebird-desktop/pull/936) refactor: Replace any type and organize preference -- [#931](https://github.com/h3poteto/whalebird-desktop/pull/931) Update megalodon version to 0.7.1 -- [#930](https://github.com/h3poteto/whalebird-desktop/pull/930) Handle delete event of streamings - -### Fixed - -- [#941](https://github.com/h3poteto/whalebird-desktop/pull/941) Update megalodon for User Agent and add User Agent in streaming -- [#933](https://github.com/h3poteto/whalebird-desktop/pull/933) Fix hashtag when it is fixed -- [#928](https://github.com/h3poteto/whalebird-desktop/pull/928) Upgrade megalodon and fix id type - - - -## [2.7.3] - 2019-05-27 -### Added -- [#925](https://github.com/h3poteto/whalebird-desktop/pull/925) Update access token using refresh token when expire the token - -### Fixed - -- [#927](https://github.com/h3poteto/whalebird-desktop/pull/927) Downgrade electron version to 4.2.2 -- [#924](https://github.com/h3poteto/whalebird-desktop/pull/924) Stop loading after initialized in direct messages -- [#922](https://github.com/h3poteto/whalebird-desktop/pull/922) Unbind streaming for mentions when change accounts - - -## [2.7.2] - 2019-05-21 -### Added -- [#911](https://github.com/h3poteto/whalebird-desktop/pull/911) Add a menu to read follow requests, and accept/reject it -- [#903](https://github.com/h3poteto/whalebird-desktop/pull/903) Add Italian translation -- [#902](https://github.com/h3poteto/whalebird-desktop/pull/902) Add request loading circle -### Changed -- [#917](https://github.com/h3poteto/whalebird-desktop/pull/917) Change loading in order to change channel while loading -- [#916](https://github.com/h3poteto/whalebird-desktop/pull/916) Stop loading after fetch home timeline -- [#914](https://github.com/h3poteto/whalebird-desktop/pull/914) refactor: Move logics to vuex store in new toot -- [#910](https://github.com/h3poteto/whalebird-desktop/pull/910) Update electron version to 5.0.1 for mas -- [#900](https://github.com/h3poteto/whalebird-desktop/pull/900) Update electron version to 5.0.1 -- [#899](https://github.com/h3poteto/whalebird-desktop/pull/899) Use accounts/search API instead of v2/search -### Fixed -- [#919](https://github.com/h3poteto/whalebird-desktop/pull/919) Fix favourite and reblog event -- [#918](https://github.com/h3poteto/whalebird-desktop/pull/918) Update favourited, Reblogged toot in all timelines -- [#912](https://github.com/h3poteto/whalebird-desktop/pull/912) Update pinned hashtags if tags are exist -- [#908](https://github.com/h3poteto/whalebird-desktop/pull/908) Remove commas between pinned hashtags in new toot - - -## [2.7.1] - 2019-04-25 -### Added -- [#898](https://github.com/h3poteto/whalebird-desktop/pull/898) Build package for 32bit -- [#891](https://github.com/h3poteto/whalebird-desktop/pull/891) Introduce prettier combined eslint -- [#862](https://github.com/h3poteto/whalebird-desktop/pull/862) Add detail link on timestamp in toot - -### Changed - -- [#888](https://github.com/h3poteto/whalebird-desktop/pull/888) Change scrollbar design -- [#887](https://github.com/h3poteto/whalebird-desktop/pull/887) Remove unused setting files -- [#850](https://github.com/h3poteto/whalebird-desktop/issues/850) Use typescript in store - -### Fixed - -- [#897](https://github.com/h3poteto/whalebird-desktop/pull/897) Show a menu item for save image in context menu -- [#407](https://github.com/h3poteto/whalebird-desktop/issues/407) Can not remove the list members - - - -## [2.7.0] - 2019-03-25 -### Added - -- [#849](https://github.com/h3poteto/whalebird-desktop/pull/849) Add mentions timeline -- [#847](https://github.com/h3poteto/whalebird-desktop/pull/847) Add integration tests for ListMembership modal -- [#846](https://github.com/h3poteto/whalebird-desktop/pull/846) Add integration tests for AddListMember modal - -### Changed - -- [#855](https://github.com/h3poteto/whalebird-desktop/pull/855) Add mention timeline to jump list -- [#853](https://github.com/h3poteto/whalebird-desktop/pull/853) Update electron-builder version to 20.39.0 -- [#845](https://github.com/h3poteto/whalebird-desktop/pull/845) Update electron version to 4.0.8 - -### Fixed - -- [#856](https://github.com/h3poteto/whalebird-desktop/pull/856) Hide long username and instance name in side menu -- [#854](https://github.com/h3poteto/whalebird-desktop/pull/854) Fix validation which checks toot max length -- [#852](https://github.com/h3poteto/whalebird-desktop/pull/852) Add ttfinfo -- [#842](https://github.com/h3poteto/whalebird-desktop/pull/842) Merge french translation missing file to translation -- [#841](https://github.com/h3poteto/whalebird-desktop/pull/841) Fix package.json for Windows -- [#839](https://github.com/h3poteto/whalebird-desktop/pull/839) Completing French translation - - - -## [2.6.3] - 2019-02-25 -### Added -- [#836](https://github.com/h3poteto/whalebird-desktop/pull/836) Add option to hide all attachments -- [#833](https://github.com/h3poteto/whalebird-desktop/pull/833) Add tests for Jump modal -- [#827](https://github.com/h3poteto/whalebird-desktop/pull/827) Add option to ignore CW and NSFW -- [#824](https://github.com/h3poteto/whalebird-desktop/pull/824) Add unit/integration tests for TimelineSpace -- [#823](https://github.com/h3poteto/whalebird-desktop/pull/823) Add unit tests for Home -- [#820](https://github.com/h3poteto/whalebird-desktop/pull/820) Add integration tests for Contents/Home - -### Changed -- [#838](https://github.com/h3poteto/whalebird-desktop/pull/838) Update megalodon version to 0.5.0 -- [#828](https://github.com/h3poteto/whalebird-desktop/pull/828) refactor: Use computed instead of methods in Toot -- [#819](https://github.com/h3poteto/whalebird-desktop/pull/819) Update Korean translation - -### Fixed -- [#837](https://github.com/h3poteto/whalebird-desktop/pull/837) Reload app general config after change preferences -- [#835](https://github.com/h3poteto/whalebird-desktop/pull/835) Adjust z-index for emoji picker in NewTootModal -- [#834](https://github.com/h3poteto/whalebird-desktop/pull/834) Fix state definition in integration spec -- [#826](https://github.com/h3poteto/whalebird-desktop/pull/826) Merge and lint ko translation json - - - -## [2.6.2] - 2019-01-08 - -### Added -- [#818](https://github.com/h3poteto/whalebird-desktop/pull/818) Add Makefile to build release files -- [#786](https://github.com/h3poteto/whalebird-desktop/pull/786) Add a button to switch websocket for streaming - -### Changed -- [#817](https://github.com/h3poteto/whalebird-desktop/pull/817) Add integration/unit tests for TimelineSpace/HeaderMenu -- [#815](https://github.com/h3poteto/whalebird-desktop/pull/815) Add unit/integration tests for SideMenu -- [#814](https://github.com/h3poteto/whalebird-desktop/pull/814) Add unit/integration tests for GlobalHeader -- [#813](https://github.com/h3poteto/whalebird-desktop/pull/813) Add Preferences store tests -- [#812](https://github.com/h3poteto/whalebird-desktop/pull/812) Add Authorize store tests -- [#811](https://github.com/h3poteto/whalebird-desktop/pull/811) Fix Login spec to use ipc mock -- [#810](https://github.com/h3poteto/whalebird-desktop/pull/810) Add Login store unit tests -- [#809](https://github.com/h3poteto/whalebird-desktop/pull/809) Use jest for unit tests instead of mocha - -### Fixed -- [#808](https://github.com/h3poteto/whalebird-desktop/pull/808) Fix cursor position when user types arrow keys on image description -- [#807](https://github.com/h3poteto/whalebird-desktop/pull/807) Don't send event to webContents when window is already closed -- [#806](https://github.com/h3poteto/whalebird-desktop/pull/806) Fix typo when stop direct messages streaming -- [#805](https://github.com/h3poteto/whalebird-desktop/pull/805) Use same arrow icon for collapse buttons -- [#803](https://github.com/h3poteto/whalebird-desktop/pull/803) Use same arrow icon for collapse buttons -- [#799](https://github.com/h3poteto/whalebird-desktop/pull/799) Rescue parser error after streaming listener is closed -- [#790](https://github.com/h3poteto/whalebird-desktop/pull/790) Emojify display name in follow notification -- [#787](https://github.com/h3poteto/whalebird-desktop/pull/787) Updated English Text - - - -## [2.6.1] - 2018-12-14 - -### Added -- [#773](https://github.com/h3poteto/whalebird-desktop/pull/773) Add instance icon in account header - -### Changed - -- [#785](https://github.com/h3poteto/whalebird-desktop/pull/785) Make UI a bit more accessible -- [#779](https://github.com/h3poteto/whalebird-desktop/pull/779) Bump megalodon to version 0.4.6 -- [#771](https://github.com/h3poteto/whalebird-desktop/pull/771) Update more packages -- [#770](https://github.com/h3poteto/whalebird-desktop/pull/770) Upgrade Electron version to 3.0.10 - -### Fixed - -- [#783](https://github.com/h3poteto/whalebird-desktop/pull/783) Close sidebar before changing account -- [#782](https://github.com/h3poteto/whalebird-desktop/pull/782) Add Pinned toot update handler -- [#781](https://github.com/h3poteto/whalebird-desktop/pull/781) Fix RTL content leaking direction -- [#777](https://github.com/h3poteto/whalebird-desktop/pull/777) Fix media description again -- [#776](https://github.com/h3poteto/whalebird-desktop/pull/776) Keep an error listener after stopping socket -- [#774](https://github.com/h3poteto/whalebird-desktop/pull/774) Update README for node version -- [#766](https://github.com/h3poteto/whalebird-desktop/pull/766) Fix retrieving a retoot's toot tree - - - -## [2.6.0] - 2018-12-04 -### Added - -- [#759](https://github.com/h3poteto/whalebird-desktop/pull/759) Enable searching toots by link -- [#756](https://github.com/h3poteto/whalebird-desktop/pull/756) Switch focus between Timelines and Account Profile using shortcut keys -- [#755](https://github.com/h3poteto/whalebird-desktop/pull/755) Switch focus between Timeline and Toot Detail using shortcut keys - -### Changed - -- [#751](https://github.com/h3poteto/whalebird-desktop/pull/751) Change help command of shortcut -- [#748](https://github.com/h3poteto/whalebird-desktop/pull/748) Enable account dropdown in narrow sidebar menu -- [#747](https://github.com/h3poteto/whalebird-desktop/pull/747) Increase sidebar to 360px - -### Fixed - -- [#764](https://github.com/h3poteto/whalebird-desktop/pull/764) Update shortcut help for switching focus -- [#761](https://github.com/h3poteto/whalebird-desktop/pull/761) Stylelint fixes -- [#757](https://github.com/h3poteto/whalebird-desktop/pull/757) Fix moving cursor in CW input -- [#754](https://github.com/h3poteto/whalebird-desktop/pull/754) Fix undoing retoots/favourites -- [#753](https://github.com/h3poteto/whalebird-desktop/pull/753) Keep timestamp up-to-date and accessible -- [#752](https://github.com/h3poteto/whalebird-desktop/pull/752) Fix user layout in Follow(ers) tab -- [#746](https://github.com/h3poteto/whalebird-desktop/pull/746) Fix editing media description -- [#745](https://github.com/h3poteto/whalebird-desktop/pull/745) Clear sidebar timeline also when component changed -- [#744](https://github.com/h3poteto/whalebird-desktop/pull/744) Emojify account profile - - - -## [2.5.3] - 2018-11-26 -### Added - -- [#740](https://github.com/h3poteto/whalebird-desktop/pull/740) Add tag as search target and show results of search tags -- [#733](https://github.com/h3poteto/whalebird-desktop/pull/733) Enable adding a media description - -### Changed - -- [#739](https://github.com/h3poteto/whalebird-desktop/pull/739) Update more packages -- [#736](https://github.com/h3poteto/whalebird-desktop/pull/736) Update Noto Sans -- [#730](https://github.com/h3poteto/whalebird-desktop/pull/730) Update more node.js packages -- [#729](https://github.com/h3poteto/whalebird-desktop/pull/729) Upgrade megalodon version to 0.4.5 - -### Fixed - -- [#743](https://github.com/h3poteto/whalebird-desktop/pull/743) Change header width when open global header and side menu -- [#738](https://github.com/h3poteto/whalebird-desktop/pull/738) Remove spinner after image has been loaded -- [#737](https://github.com/h3poteto/whalebird-desktop/pull/737) Fix header length when not using narrow menu -- [#735](https://github.com/h3poteto/whalebird-desktop/pull/735) Fix json style in locales -- [#732](https://github.com/h3poteto/whalebird-desktop/pull/732) Fix Whalebird font stack -- [#731](https://github.com/h3poteto/whalebird-desktop/pull/731) Fix typo in Follow component - - -## [2.5.2] - 2018-11-19 -### Added -- [#728](https://github.com/h3poteto/whalebird-desktop/pull/728) Add donate buttons for Patreon and Liberapay -- [#722](https://github.com/h3poteto/whalebird-desktop/pull/722) Enable a vue-loading overlay for the media viewer -- [#721](https://github.com/h3poteto/whalebird-desktop/pull/721) Show loading spinner when loading images -- [#719](https://github.com/h3poteto/whalebird-desktop/pull/719) Add settings button on header menu - -### Changed -- [#723](https://github.com/h3poteto/whalebird-desktop/pull/723) Update toot modal to copy CWs -- [#716](https://github.com/h3poteto/whalebird-desktop/pull/716) Update Toot layout -- [#715](https://github.com/h3poteto/whalebird-desktop/pull/715) Update vue and most related dependencies -- [#712](https://github.com/h3poteto/whalebird-desktop/pull/712) Update most related dependencies -- [#711](https://github.com/h3poteto/whalebird-desktop/pull/711) Update i18next and @panter/vue-i18next - -### Fixed -- [#726](https://github.com/h3poteto/whalebird-desktop/pull/726) Always clear timeline between switches/refreshes -- [#725](https://github.com/h3poteto/whalebird-desktop/pull/725) Fix failover image refresh -- [#724](https://github.com/h3poteto/whalebird-desktop/pull/724) Fix username emojification in sidebar -- [#720](https://github.com/h3poteto/whalebird-desktop/pull/720) fix: Stop unbind events when reload, and call unbind when destroy -- [#718](https://github.com/h3poteto/whalebird-desktop/pull/718) Check acct when parse account -- [#717](https://github.com/h3poteto/whalebird-desktop/pull/717) fix: Await initialize when TimelineSpace is created -- [#709](https://github.com/h3poteto/whalebird-desktop/pull/709) Fix timeline header width when account sidebar is collapsed - - - -## [2.5.1] - 2018-11-16 -### Added -- [#705](https://github.com/h3poteto/whalebird-desktop/pull/705) Render emojis in username - -### Changed -- [#706](https://github.com/h3poteto/whalebird-desktop/pull/706) Show substitute image when can not load the image -- [#704](https://github.com/h3poteto/whalebird-desktop/pull/704) Don't load emoji picker as default for performance -- [#701](https://github.com/h3poteto/whalebird-desktop/pull/701) Upgrade Webpack version to 4.x -- [#700](https://github.com/h3poteto/whalebird-desktop/pull/700) Upgrade electron version to 3.0.8 - -### Fixed -- [#707](https://github.com/h3poteto/whalebird-desktop/pull/707) refactor: Cage Cards components in molecules according to atomic design -- [#703](https://github.com/h3poteto/whalebird-desktop/pull/703) Fix toot parser for account, tag and link -- [#699](https://github.com/h3poteto/whalebird-desktop/pull/699) Improve performance issue when users type new status - - - -## [2.5.0] - 2018-11-11 -### Added -- [#694](https://github.com/h3poteto/whalebird-desktop/pull/694) Allow customize unread notification of timelines -- [#689](https://github.com/h3poteto/whalebird-desktop/pull/689) Add emoji picker in new toot modal -- [#688](https://github.com/h3poteto/whalebird-desktop/pull/688) Enable Direct Messages timeline - -### Changed -- [#693](https://github.com/h3poteto/whalebird-desktop/pull/693) Add streaming update for direct message -- [#686](https://github.com/h3poteto/whalebird-desktop/pull/686) Enable playback of animated media - -### Fixed -- [#697](https://github.com/h3poteto/whalebird-desktop/pull/697) Fix unread mark on side menu when public timeline is updated -- [#692](https://github.com/h3poteto/whalebird-desktop/pull/692) Block changing account when the modal is active -- [#690](https://github.com/h3poteto/whalebird-desktop/pull/690) Fix tag parser in tootParser for Pleroma's tag -- [#687](https://github.com/h3poteto/whalebird-desktop/pull/687) Do not position the :arrow_up: button behind the sidebar - - -## [2.4.4] - 2018-11-01 -### Added -- [#682](https://github.com/h3poteto/whalebird-desktop/pull/682) Add sensitive settings and sync to each instance - -### Changed -- [#678](https://github.com/h3poteto/whalebird-desktop/pull/678) Move visibility settings to sync instance settings - -### Fixed -- [#684](https://github.com/h3poteto/whalebird-desktop/pull/684) Open the links in meta fields in the default browser -- [#683](https://github.com/h3poteto/whalebird-desktop/pull/683) Remove duplicated emojis when suggest -- [#679](https://github.com/h3poteto/whalebird-desktop/pull/679) Remove unnecessary state to fix preference's menu - - - -## [2.4.3] - 2018-10-26 -### Added -- [#675](https://github.com/h3poteto/whalebird-desktop/pull/675) Add option to hide/show global header -- [#661](https://github.com/h3poteto/whalebird-desktop/pull/661) Show follow/unfollow button in follow/followers tab in profile - -### Changed -- [#669](https://github.com/h3poteto/whalebird-desktop/pull/669) Save refresh token if it exists - -### Fixed -- [#676](https://github.com/h3poteto/whalebird-desktop/pull/676) Load hide/show status when reopen app -- [#674](https://github.com/h3poteto/whalebird-desktop/pull/674) Fix side menu design for narrow style -- [#672](https://github.com/h3poteto/whalebird-desktop/pull/672) Clear notification badge on app icon when reload or scroll -- [#671](https://github.com/h3poteto/whalebird-desktop/pull/671) Add role and alt tag for accessibility -- [#670](https://github.com/h3poteto/whalebird-desktop/pull/670) Block to open account profile when the account is not found - -## [2.4.2] -2018-10-14 -### Added -- [#656](https://github.com/h3poteto/whalebird-desktop/pull/656) Show profile's metadata in account profile - -### Changed -- [#653](https://github.com/h3poteto/whalebird-desktop/pull/653) Update Korean translation - -### Fixed -- [#659](https://github.com/h3poteto/whalebird-desktop/pull/659) Fix order of unique when initialize -- [#658](https://github.com/h3poteto/whalebird-desktop/pull/658) Fix searching account when open my profile -- [#655](https://github.com/h3poteto/whalebird-desktop/pull/655) Fix accounts order on global header -- [#654](https://github.com/h3poteto/whalebird-desktop/pull/654) Reorder accounts and fix order method -- [#652](https://github.com/h3poteto/whalebird-desktop/pull/652) Fix toot parser for Pleroma - - -## [2.4.1] - 2018-10-10 -### Fixed -- [#649](https://github.com/h3poteto/whalebird-desktop/pull/649) Add menu to reopen window after close window in macOS -- [#645](https://github.com/h3poteto/whalebird-desktop/pull/645) Fix calling unbind local streaming in timeline space - - - -## [2.4.0] - 2018-10-09 - -### Added -- [#638](https://github.com/h3poteto/whalebird-desktop/pull/638) Connect to Pleroma with Web Socket to streaming update -- [#631](https://github.com/h3poteto/whalebird-desktop/pull/631) Add reporting method and mute/block method on toot - -### Changed -- [#642](https://github.com/h3poteto/whalebird-desktop/pull/642) Update megalodon version to 0.4.3 for reconnect -- [#636](https://github.com/h3poteto/whalebird-desktop/pull/636) Update too max characters if the API responds toot_max_chars - -### Fixed -- [#643](https://github.com/h3poteto/whalebird-desktop/pull/643) Fix bind method when reloading -- [#641](https://github.com/h3poteto/whalebird-desktop/pull/641) Fix protocol of websocket in streaming -- [#640](https://github.com/h3poteto/whalebird-desktop/pull/640) Fix hashtag and list streaming of Pleroma -- [#639](https://github.com/h3poteto/whalebird-desktop/pull/639) Fix message id in timeline -- [#637](https://github.com/h3poteto/whalebird-desktop/pull/637) Open toot detail when user click favourited or rebloged notifications - - -## [2.3.1] - 2018-09-29 -### Fixed -- [#629](https://github.com/h3poteto/whalebird-desktop/pull/629) [hotfix] Use system-font-families instead of font-manager because it is native module - - - -## [2.3.0] - 2018-09-28 -### Added -- [#626](https://github.com/h3poteto/whalebird-desktop/pull/626) Change default fonts in preferences -- [#624](https://github.com/h3poteto/whalebird-desktop/pull/624) Add some color themes -- [#623](https://github.com/h3poteto/whalebird-desktop/pull/623) Allow to use customize color theme in preferences -- [#620](https://github.com/h3poteto/whalebird-desktop/pull/620) Show toot design sample in appearance setting page - -### Changed -- [#622](https://github.com/h3poteto/whalebird-desktop/pull/622) Update electron version to 2.0.10 -- [#621](https://github.com/h3poteto/whalebird-desktop/pull/621) Update deprecated packages for audit - -### Fixed -- [#627](https://github.com/h3poteto/whalebird-desktop/pull/627) Update Korean localization - -## [2.2.2] - 2018-09-22 -### Added -- [#617](https://github.com/h3poteto/whalebird-desktop/pull/617) Pin hashtag in new toot -- [#614](https://github.com/h3poteto/whalebird-desktop/pull/614) Suggest hashtags in new toot - -### Changed -- [#615](https://github.com/h3poteto/whalebird-desktop/pull/615) Reduce statuses when merge timeline - -### Fixed -- [#616](https://github.com/h3poteto/whalebird-desktop/pull/616) Fix line height for font icons -- [#613](https://github.com/h3poteto/whalebird-desktop/pull/613) Call close confirm when cancel new toot -- [#612](https://github.com/h3poteto/whalebird-desktop/pull/612) Stop shortcut when jump modal is hidden -- [#608](https://github.com/h3poteto/whalebird-desktop/pull/608) Set nowrap for domain name in side menu - - - -## [2.2.1] - 2018-09-17 -### Added -- [#602](https://github.com/h3poteto/whalebird-desktop/pull/602) Add mute/block menu -- [#599](https://github.com/h3poteto/whalebird-desktop/pull/599) Add shortcut events for notification -- [#596](https://github.com/h3poteto/whalebird-desktop/pull/596) Minimize to tray for win32 - -### Changed - -- [#606](https://github.com/h3poteto/whalebird-desktop/pull/606) Show tags in side menu -- [#593](https://github.com/h3poteto/whalebird-desktop/pull/593) Update Korean localization - -### Fixed - -- [#605](https://github.com/h3poteto/whalebird-desktop/pull/605) Fix losing focused toot in timeline -- [#604](https://github.com/h3poteto/whalebird-desktop/pull/604) Fix typo in doc -- [#603](https://github.com/h3poteto/whalebird-desktop/pull/603) Fix popper design -- [#600](https://github.com/h3poteto/whalebird-desktop/pull/600) Fix default fonts for japanese -- [#591](https://github.com/h3poteto/whalebird-desktop/pull/591) Fix circleci badge - - - -## [2.2.0] - 2018-09-01 -### Added -- [#590](https://github.com/h3poteto/whalebird-desktop/pull/590) Change time format and set in preferences -- [#586](https://github.com/h3poteto/whalebird-desktop/pull/586) Switch notification in preferences -- [#583](https://github.com/h3poteto/whalebird-desktop/pull/583) Suggest native emoji in New Toot modal -- [#576](https://github.com/h3poteto/whalebird-desktop/pull/576) Add shortcut keys to read image and contents warning - -### Changed -- [#585](https://github.com/h3poteto/whalebird-desktop/pull/585) Update packages for node 10.x -- [#584](https://github.com/h3poteto/whalebird-desktop/pull/584) Update electron version to 2.0.8 -- [#580](https://github.com/h3poteto/whalebird-desktop/pull/580) Update Korean localization -- [#573](https://github.com/h3poteto/whalebird-desktop/pull/573) Update shortcut description - -### Fixed -- [#589](https://github.com/h3poteto/whalebird-desktop/pull/589) Fix bug for save preference in general -- [#588](https://github.com/h3poteto/whalebird-desktop/pull/588) Fix closing image modal using esc -- [#587](https://github.com/h3poteto/whalebird-desktop/pull/587) Fix closing sidebar when overlaid -- [#575](https://github.com/h3poteto/whalebird-desktop/pull/575) New Korean localization - -## [2.1.2] - 2018-08-27 -### Added -- [#562](https://github.com/h3poteto/whalebird-desktop/pull/562) Add shortcut help modal -- [#557](https://github.com/h3poteto/whalebird-desktop/pull/557) Add shortcut keys to control toot -- [#552](https://github.com/h3poteto/whalebird-desktop/pull/552) Set shortcut keys to move toot on timeline -- [#547](https://github.com/h3poteto/whalebird-desktop/pull/547) Add title to display description when hover icon - -### Changed -- [#571](https://github.com/h3poteto/whalebird-desktop/pull/571) Add donate link and QR code in README -- [#565](https://github.com/h3poteto/whalebird-desktop/pull/565) Close preference page with esc -- [#559](https://github.com/h3poteto/whalebird-desktop/pull/559) Add description of shortcut in README - -### Fixed -- [#570](https://github.com/h3poteto/whalebird-desktop/pull/570) Fix reply visibility level -- [#566](https://github.com/h3poteto/whalebird-desktop/pull/566) Fix shortcut events -- [#560](https://github.com/h3poteto/whalebird-desktop/pull/560) Set active tab to first when close preferences -- [#556](https://github.com/h3poteto/whalebird-desktop/pull/556) Update Korean localization - - - -## [2.1.1] - 2018-08-21 -### Added -- [#534](https://github.com/h3poteto/whalebird-desktop/pull/534) Add Korean localization -- [#532](https://github.com/h3poteto/whalebird-desktop/pull/532) Support clipboard picture -- [#528](https://github.com/h3poteto/whalebird-desktop/pull/528) Add Polish translation - -### Fixed -- [#546](https://github.com/h3poteto/whalebird-desktop/pull/546) Fix username to include domain when the user is another instance -- [#545](https://github.com/h3poteto/whalebird-desktop/pull/545) Fix boost icon when the toot is direct -- [#544](https://github.com/h3poteto/whalebird-desktop/pull/544) Fix domain validation for short domain -- [#539](https://github.com/h3poteto/whalebird-desktop/pull/539) Focus on new toot modal after change account -- [#538](https://github.com/h3poteto/whalebird-desktop/pull/538) Jump only modal is opened -- [#535](https://github.com/h3poteto/whalebird-desktop/pull/535) Fix typo in README.md -- [#529](https://github.com/h3poteto/whalebird-desktop/pull/529) Fix some minor typos - - -## [2.1.0] - 2018-08-20 -### Added -- [#519](https://github.com/h3poteto/whalebird-desktop/pull/519) Suggest custom emojis in new toot -- [#516](https://github.com/h3poteto/whalebird-desktop/pull/516) Parse emoji and show emoji in toot -- [#514](https://github.com/h3poteto/whalebird-desktop/pull/514) Add description how to add language in README -- [#513](https://github.com/h3poteto/whalebird-desktop/pull/513) Add show profile menu - -### Fixed -- [#524](https://github.com/h3poteto/whalebird-desktop/pull/524) Fix space in notifications -- [#523](https://github.com/h3poteto/whalebird-desktop/pull/523) Control CW, NSFW, and emoji in notification - - -## [2.0.1] - 2018-08-18 -### Added -- [#503](https://github.com/h3poteto/whalebird-desktop/pull/503) Add confirm modal when close new toot -- [#502](https://github.com/h3poteto/whalebird-desktop/pull/502) Added German translation -- [#500](https://github.com/h3poteto/whalebird-desktop/pull/500) Show account name when hovering on global header - -### Changed -- [#510](https://github.com/h3poteto/whalebird-desktop/pull/510) Change location of follow/unfollow and more info button in account profile -- [#498](https://github.com/h3poteto/whalebird-desktop/pull/498) Add minimum requirements for contribution in README -- [#496](https://github.com/h3poteto/whalebird-desktop/pull/496) Update README - -### Fixed -- [#511](https://github.com/h3poteto/whalebird-desktop/pull/511) Fix Deutsch for close confirm modal -- [#509](https://github.com/h3poteto/whalebird-desktop/pull/509) Update default toot visibility of new toot -- [#499](https://github.com/h3poteto/whalebird-desktop/pull/499) Hide follower menu for own user account -- [#497](https://github.com/h3poteto/whalebird-desktop/pull/497) Translate loading message for each languages - - -## [2.0.0] - 2018-08-15 -### Added -- [#492](https://github.com/h3poteto/whalebird-desktop/pull/492) i18n + English spelling typos + French l10n -- [#488](https://github.com/h3poteto/whalebird-desktop/pull/488) Switch language in preferences -- [#483](https://github.com/h3poteto/whalebird-desktop/pull/483) Translate languages using i18next -- [#472](https://github.com/h3poteto/whalebird-desktop/pull/472) Support for arrow keys when display medias -- [#471](https://github.com/h3poteto/whalebird-desktop/pull/471) Suggest account name in new toot - -### Changed -- [#489](https://github.com/h3poteto/whalebird-desktop/pull/489) Update electron version to 2.0.7 -- [#476](https://github.com/h3poteto/whalebird-desktop/pull/476) Check and submit instance with enter key in login form - -### Fixed -- [#495](https://github.com/h3poteto/whalebird-desktop/pull/495) Fix loading message for japanese -- [#494](https://github.com/h3poteto/whalebird-desktop/pull/494) Handle arrowleft and arrowright key in textarea -- [#490](https://github.com/h3poteto/whalebird-desktop/pull/490) Fix build setting for locales -- [#487](https://github.com/h3poteto/whalebird-desktop/pull/487) spelling typos -- [#486](https://github.com/h3poteto/whalebird-desktop/pull/486) Fix API response of lists -- [#475](https://github.com/h3poteto/whalebird-desktop/pull/475) Use vue-shortkey in jump modal because sometimes jump modal is freeze -- [#474](https://github.com/h3poteto/whalebird-desktop/pull/474) Disable transparent because user can not change window size - - - -## [1.5.6] - 2018-08-07 -### Added -- [#461](https://github.com/h3poteto/whalebird-desktop/pull/461) Add toot visibility setting and use it in new toot modal - -### Changed -- [#468](https://github.com/h3poteto/whalebird-desktop/pull/468) Close new toot modal immediately after post toot - -### Fixed -- [#470](https://github.com/h3poteto/whalebird-desktop/pull/470)Rescue error in lazy loading in favourite -- [#467](https://github.com/h3poteto/whalebird-desktop/pull/467) Catch raise when the response does not have link header of favourites - - - -## [1.5.5] - 208-07-31 -### Fixed -- [#465](https://github.com/h3poteto/whalebird-desktop/pull/457) Fix account switching in global header menu -- [#464](https://github.com/h3poteto/whalebird-desktop/pull/457) Fix electron, and electron-json-storage version -- [#462](https://github.com/h3poteto/whalebird-desktop/pull/457) Fix scroll of splash screen - - - -## [1.5.4] - 2018-07-29 -### Added -- [#457](https://github.com/h3poteto/whalebird-desktop/pull/457) Add splash screen when starting the window - -### Changed -- [#460](https://github.com/h3poteto/whalebird-desktop/pull/460) Update eslint-config-standard -- [#459](https://github.com/h3poteto/whalebird-desktop/pull/459) Update eslint -- [#456](https://github.com/h3poteto/whalebird-desktop/pull/456) Update deprecated plugins - -### Fixed -- [#458](https://github.com/h3poteto/whalebird-desktop/pull/458) Corrected typo in webpack config -- [#454](https://github.com/h3poteto/whalebird-desktop/pull/454) Update megalodon and fix lazy loading in favourite - -## [1.5.3] - 2018-07-23 -### Added -- [#446](https://github.com/h3poteto/whalebird-desktop/pull/446) Hide and show application in mac - -### Changed -- [#448](https://github.com/h3poteto/whalebird-desktop/pull/448) Update electron version to 2.0.5 - -### Fixed -- [#450](https://github.com/h3poteto/whalebird-desktop/pull/450) Fix scroll-behavior because custom scroll function is already defined -- [#449](https://github.com/h3poteto/whalebird-desktop/pull/449) Disable some menu item when window is hidden in mac -- [#445](https://github.com/h3poteto/whalebird-desktop/pull/445) Fix scroll speed when range is too small - - - -## [1.5.2] - 2018-07-20 -### Added -- [#443](https://github.com/h3poteto/whalebird-desktop/pull/443) Add scroll top button in timeline - -### Changed -- [#440](https://github.com/h3poteto/whalebird-desktop/pull/440) Update megalodon version to 0.2.0 -- [#438](https://github.com/h3poteto/whalebird-desktop/pull/438) Change boost icon when the status is private - -### Fixed -- [#437](https://github.com/h3poteto/whalebird-desktop/pull/437) Use v-show instead of v-if where it is not necessary - - - -## [1.5.1] - 2018-07-13 -### Fixed -- [#436](https://github.com/h3poteto/whalebird-desktop/pull/436) Use flex box instead of float at side menu -- [#435](https://github.com/h3poteto/whalebird-desktop/pull/435) Allow subdomain when login - -## [1.5.0] - 2018-07-12 -### Added -- [#431](https://github.com/h3poteto/whalebird-desktop/pull/431) Show authorization url to rescue it is not opened -- [#429](https://github.com/h3poteto/whalebird-desktop/pull/429) Add filter for timelines based on regexp - -### Fixed -- [#432](https://github.com/h3poteto/whalebird-desktop/pull/432) Close popover after do some actions - -## [1.4.3] - 2018-07-06 -### Added -- [#428](https://github.com/h3poteto/whalebird-desktop/pull/428) Add stylelint and check in sider -- [#427](https://github.com/h3poteto/whalebird-desktop/pull/427) Allow drop file to upload the media to mastodon -- [#425](https://github.com/h3poteto/whalebird-desktop/pull/425) Validate domain name at login - -### Changed -- [#426](https://github.com/h3poteto/whalebird-desktop/pull/426) Change color of collapse button - - -## [1.4.2] - 2018-07-04 -### Added -- [#422](https://github.com/h3poteto/whalebird-desktop/pull/422) Add small window layout menu - -### Changed -- [#421](https://github.com/h3poteto/whalebird-desktop/pull/421) Use Lato font in textarea because backtick is broken in Noto -- [#420](https://github.com/h3poteto/whalebird-desktop/pull/420) Display loading on the timeline space instead of loading covering the whole - -### Fixed -- [#419](https://github.com/h3poteto/whalebird-desktop/pull/419) Fix target message when the message is reblogged in toot menu -- [#418](https://github.com/h3poteto/whalebird-desktop/pull/418) Skip stop streaming if the object is not initialized - - -## [1.4.1] - 2018-06-28 -### Added -- [#412](https://github.com/h3poteto/whalebird-desktop/pull/412) Add reload button and reload each timeline -- [#381](https://github.com/h3poteto/whalebird-desktop/pull/381) Allow reload pages with shortcut keys - -### Fixed -- [#411](https://github.com/h3poteto/whalebird-desktop/pull/411) Fix display state of loading in side bar -- [#410](https://github.com/h3poteto/whalebird-desktop/pull/410) Fix findLink method to detect link, tag, and account - -## [1.4.0] - 2018-06-20 -### Added -- [#403](https://github.com/h3poteto/whalebird-desktop/pull/403) Create list editing page which can manage list memberships -- [#401](https://github.com/h3poteto/whalebird-desktop/pull/401) Create lists in lists page -- [#398](https://github.com/h3poteto/whalebird-desktop/pull/398) Add lists page -- [#395](https://github.com/h3poteto/whalebird-desktop/pull/395) Open the manage lists window of an account on account profile - -### Changed -- [#404](https://github.com/h3poteto/whalebird-desktop/pull/404) Set visibility from source message when reply -- [#399](https://github.com/h3poteto/whalebird-desktop/pull/399) Update toot icon - -### Fixed -- [#408](https://github.com/h3poteto/whalebird-desktop/pull/408) Reload side menu after create a list -- [#400](https://github.com/h3poteto/whalebird-desktop/pull/400) Allow video to post toot - -## [1.3.4] - 2018-06-15 -### Added -- [#394](https://github.com/h3poteto/whalebird-desktop/pull/394) Show icon badge when receive notifications -- [#391](https://github.com/h3poteto/whalebird-desktop/pull/391) Remove all account associations - -### Changed -- [#392](https://github.com/h3poteto/whalebird-desktop/pull/392) Allow movies as media when post toot - -### Fixed -- [#389](https://github.com/h3poteto/whalebird-desktop/pull/389) Block to login the same account of the same domain -- [#384](https://github.com/h3poteto/whalebird-desktop/pull/384) Encode tags for non ascii tags - -## [1.3.3] - 2018-06-10 -### Changed -- [#379](https://github.com/h3poteto/whalebird-desktop/pull/379) Use megalodon instead of mastodon-api as mastodon api client - -### Fixed -- [#384](https://github.com/h3poteto/whalebird-desktop/pull/384) Encode tag for non ascii tags - - -## [1.3.2] - 2018-06-06 -### Fixed -- [#376](https://github.com/h3poteto/whalebird-desktop/pull/376) Remove global shortcut and use mousetrap - -## [1.3.1] - 2018-06-06 -### Added -- [#373](https://github.com/h3poteto/whalebird-desktop/pull/373) Open account profile when click account name in toot -- [#372](https://github.com/h3poteto/whalebird-desktop/pull/372) Add shortcut key to jump - -### Fixed -- [#371](https://github.com/h3poteto/whalebird-desktop/pull/371) Add hashtag and search page in jump list -- [#369](https://github.com/h3poteto/whalebird-desktop/pull/369) Enable scroll in side menu - -## [1.3.0] - 2018-06-04 -### Added -- [#362](https://github.com/h3poteto/whalebird-desktop/pull/362) Remove registered hashtag -- [#359](https://github.com/h3poteto/whalebird-desktop/pull/359) Add hashtag page and show tag timeline -- [#354](https://github.com/h3poteto/whalebird-desktop/pull/354) Set context menu -- [#349](https://github.com/h3poteto/whalebird-desktop/pull/349) Add toot button on header menu - -### Changed -- [#364](https://github.com/h3poteto/whalebird-desktop/pull/364) Open tag timeline page when click tag in toot - -### Fixed -- [#348](https://github.com/h3poteto/whalebird-desktop/pull/348) Add a space after username in reply - -## [1.2.0] - 2018-05-29 -### Added -- [#343](https://github.com/h3poteto/whalebird-desktop/pull/343) Allow drag & drop action to upload files -- [#338](https://github.com/h3poteto/whalebird-desktop/pull/338) Set spoiler text when new toot -- [#337](https://github.com/h3poteto/whalebird-desktop/pull/337) Set sensitive in new toot modal -- [#336](https://github.com/h3poteto/whalebird-desktop/pull/336) Hide sensitive medias by default -- [#331](https://github.com/h3poteto/whalebird-desktop/pull/331) Show content warning status and control visibility - -### Changed -- [#339](https://github.com/h3poteto/whalebird-desktop/pull/339) Hide application when can not detect application - -### Fixed -- [#346](https://github.com/h3poteto/whalebird-desktop/pull/346) Fix float setting in toot view -- [#345](https://github.com/h3poteto/whalebird-desktop/pull/345) Fix font and color of placeholder in new toot modal -- [#340](https://github.com/h3poteto/whalebird-desktop/pull/340) Fix typo in list streaming -- [#335](https://github.com/h3poteto/whalebird-desktop/pull/335) Guard duplicate username in reply - -## [1.1.1] - 2018-05-22 -### Changed -- [#321](https://github.com/h3poteto/whalebird-desktop/pull/321) Quit application when window is closed -- [#320](https://github.com/h3poteto/whalebird-desktop/pull/320) Use forked repository for mastodon-api - -### Fixed -- [#324](https://github.com/h3poteto/whalebird-desktop/pull/324) Show image as a picture if the extension is unknown in Media -- [#322](https://github.com/h3poteto/whalebird-desktop/pull/322) Fix image size in image viewer - - -## [1.1.0] - 2018-05-18 -### Added -- [#304](https://github.com/h3poteto/whalebird-desktop/pull/304) Add a background streaming for local timeline - -### Changed -- [#315](https://github.com/h3poteto/whalebird-desktop/pull/315) Show movie on Image Viewer -- [#307](https://github.com/h3poteto/whalebird-desktop/pull/307) Fill all account name when the status is multiple replied -- [#305](https://github.com/h3poteto/whalebird-desktop/pull/305) Show the application from which the status was posted - -### Fixed - -- [#313](https://github.com/h3poteto/whalebird-desktop/pull/313) Clear unread mark when change account -- [#310](https://github.com/h3poteto/whalebird-desktop/pull/310) Update icon when user add a new account -- [#308](https://github.com/h3poteto/whalebird-desktop/pull/308) Fix application name, and add comment for website - - -## [1.0.1] - 2018-05-13 -### Added -- [#296](https://github.com/h3poteto/whalebird-desktop/pull/296) Add lazyLoading in account profile timeline -- [#295](https://github.com/h3poteto/whalebird-desktop/pull/295) Add following status for requested - -### Changed -- [#294](https://github.com/h3poteto/whalebird-desktop/pull/294) Show original status timestamp in reblogged toot -- [#292](https://github.com/h3poteto/whalebird-desktop/pull/292) Update toot status in SideBar - -### Fixed -- [#298](https://github.com/h3poteto/whalebird-desktop/pull/298) Ran the new 'npm audit' and updated some of the packages that are mentioned -- [#297](https://github.com/h3poteto/whalebird-desktop/pull/297) Fix image list arrow -- [#289](https://github.com/h3poteto/whalebird-desktop/pull/289) Add asar unpacked resource for sounds in electron packager - - -## [1.0.0] - 2018-05-05 -### Changed -- [#280](https://github.com/h3poteto/whalebird-desktop/pull/280) Updated package lists to update vue-router & vuex versions to 3.0.1 - -### Fixed -- [#281](https://github.com/h3poteto/whalebird-desktop/pull/281) Fix loading circle in sidebar - - -## [0.6.2] - 2018-04-30 -### Added -- [#279](https://github.com/h3poteto/whalebird-desktop/pull/279) Add toot delete button -- [#277](https://github.com/h3poteto/whalebird-desktop/pull/277) Show favourites count in toot -- [#272](https://github.com/h3poteto/whalebird-desktop/pull/272) Show reblogs count in toot -- [#270](https://github.com/h3poteto/whalebird-desktop/pull/270) Move image list of a toot -- [#268](https://github.com/h3poteto/whalebird-desktop/pull/268) Add a button which copy link to toot - -### Changed -- [#269](https://github.com/h3poteto/whalebird-desktop/pull/269) Add favourite effect - -### Fixed -- [#278](https://github.com/h3poteto/whalebird-desktop/pull/278) Stop streaming when window is closed in macOS -- [#275](https://github.com/h3poteto/whalebird-desktop/pull/275) Wording changes - -## [0.6.1] - 2018-04-25 -### Changed -- [#248](https://github.com/h3poteto/whalebird-desktop/pull/248) Add transition effect to timeline - -### Fixed -- [#266](https://github.com/h3poteto/whalebird-desktop/pull/266) Insert error of timeline when lazy loading -- [#265](https://github.com/h3poteto/whalebird-desktop/pull/265) Fix change status in home and notifications -- [#263](https://github.com/h3poteto/whalebird-desktop/pull/263) Background color of focused in notifications - -## [0.6.0] - 2018-04-22 -### Added -- [#261](https://github.com/h3poteto/whalebird-desktop/pull/261) Add profile dropdown menu for user's profile -- [#250](https://github.com/h3poteto/whalebird-desktop/pull/250) Allow to change font-size -- [#239](https://github.com/h3poteto/whalebird-desktop/pull/239) Add about window for linux and windows - -### Changed -- [#260](https://github.com/h3poteto/whalebird-desktop/pull/260) Display avatar in global header -- [#249](https://github.com/h3poteto/whalebird-desktop/pull/249) Add image viewer transition -- [#247](https://github.com/h3poteto/whalebird-desktop/pull/247) Archive timeline and store unread timeline -- [#246](https://github.com/h3poteto/whalebird-desktop/pull/246) Disable renderer backgrounding of chromium -- [#243](https://github.com/h3poteto/whalebird-desktop/pull/243) Change format of username -- [#240](https://github.com/h3poteto/whalebird-desktop/pull/240) Hide overflowed username when width is narrow - -### Fixed -- [#245](https://github.com/h3poteto/whalebird-desktop/pull/245) Block changing account when loading timeline -- [#238](https://github.com/h3poteto/whalebird-desktop/pull/238) Close side bar when user change account -- [#236](https://github.com/h3poteto/whalebird-desktop/pull/236) Clear timeline after components are destroyed - -## [0.5.0] - 2018-04-18 -### Added -- [#232](https://github.com/h3poteto/whalebird-desktop/pull/232) Search page to find account -- [#231](https://github.com/h3poteto/whalebird-desktop/pull/231) Add menu in account profile to open account in browser -- [#226](https://github.com/h3poteto/whalebird-desktop/pull/226) Open toot detail in browser -- [#222](https://github.com/h3poteto/whalebird-desktop/pull/222) Add lists channels in jump modal -- [#214](https://github.com/h3poteto/whalebird-desktop/pull/214) Set theme color and setting theme in preferences - - -### Changed -- [#218](https://github.com/h3poteto/whalebird-desktop/pull/218) Open toot detail when double click -- [#216](https://github.com/h3poteto/whalebird-desktop/pull/216) Add side bar transition effect - -### Fixed -- [#230](https://github.com/h3poteto/whalebird-desktop/pull/230) Change popover library because vue-js-popover has some bugs -- [#221](https://github.com/h3poteto/whalebird-desktop/pull/221) Change link color for dark theme -- [#220](https://github.com/h3poteto/whalebird-desktop/pull/220) Handle error when lazy loading -- [#219](https://github.com/h3poteto/whalebird-desktop/pull/219) Selected background color when dark theme -- [#217](https://github.com/h3poteto/whalebird-desktop/pull/217) Fix label in side menu - -## [0.4.0] - 2018-04-12 -### Added -- [#207](https://github.com/h3poteto/whalebird-desktop/pull/207) Change visibility level of toot -- [#206](https://github.com/h3poteto/whalebird-desktop/pull/206) Allow user view toot detail at sidebar -- [#200](https://github.com/h3poteto/whalebird-desktop/pull/200) Show lists in side menu - -### Changed -- [#201](https://github.com/h3poteto/whalebird-desktop/pull/201) Show loading when user post new toot - -### Fixed -- [#208](https://github.com/h3poteto/whalebird-desktop/pull/208) Block toot when new toot modal is closed -- [#204](https://github.com/h3poteto/whalebird-desktop/pull/204) Set focus in watch directive on newToot -- [#198](https://github.com/h3poteto/whalebird-desktop/pull/198) Fix image position in ImageViewer - -## [0.3.1] - 2018-04-08 -### Added -- [#196](https://github.com/h3poteto/whalebird-desktop/pull/196) Add sound setting in preferences, and save setting data in json -- [#195](https://github.com/h3poteto/whalebird-desktop/pull/195) Show follows/followers in account profile -- [#194](https://github.com/h3poteto/whalebird-desktop/pull/194) Show user's timeline in account profile - -### Changed -- [#191](https://github.com/h3poteto/whalebird-desktop/pull/191) Sound a system sound when user favourite or reblog - -### Fixed -- [#192](https://github.com/h3poteto/whalebird-desktop/pull/192) Rescue order when account order is unexpected value -- [#189](https://github.com/h3poteto/whalebird-desktop/pull/189) Show loading when user actions -- [#187](https://github.com/h3poteto/whalebird-desktop/pull/187) fix: Open user profile on reblogger icon and reblogger name -- [#185](https://github.com/h3poteto/whalebird-desktop/pull/185) fix: Set font size of close button in login -- [#184](https://github.com/h3poteto/whalebird-desktop/pull/184) Set limit to attachment height - -## [0.3.0] - 2018-04-03 -### Added -- [#176](https://github.com/h3poteto/whalebird-desktop/pull/176) Set accounts order in preferences -- [#172](https://github.com/h3poteto/whalebird-desktop/pull/172) Create account preferences page - -### Changed -- [#182](https://github.com/h3poteto/whalebird-desktop/pull/180) Use vue-shortkey at shortcut when post new toot -- [#175](https://github.com/h3poteto/whalebird-desktop/pull/175) Save account username in local db - -### Fixed -- [#180](https://github.com/h3poteto/whalebird-desktop/pull/180) Show error message when failed to start streaming -- [#179](https://github.com/h3poteto/whalebird-desktop/pull/179) Set global background color to white -- [#177](https://github.com/h3poteto/whalebird-desktop/pull/177) Skip removeEvents when dom does not have a target element -- [#170](https://github.com/h3poteto/whalebird-desktop/pull/170) Fix click event on reblog in notifications -- [#169](https://github.com/h3poteto/whalebird-desktop/pull/169) Set build category for mac and linux - -## [0.2.3] - 2018-03-31 -### Added -- [#155](https://github.com/h3poteto/whalebird-desktop/pull/155) [#157](https://github.com/h3poteto/whalebird-desktop/pull/157) [#158](https://github.com/h3poteto/whalebird-desktop/pull/158) Add account profile page in side bar - -### Fixed -- [#166](https://github.com/h3poteto/whalebird-desktop/pull/166) Reset ctrl key event handler when close new toot modal -- [#162](https://github.com/h3poteto/whalebird-desktop/pull/162) Remove html tags in reply notifications -- [#159](https://github.com/h3poteto/whalebird-desktop/pull/159) Set max height in the image viewer - -## [0.2.2] - 2018-03-29 -### Added -- [#153](https://github.com/h3poteto/whalebird-desktop/pull/153) Attach images in toot -- [#152](https://github.com/h3poteto/whalebird-desktop/pull/152) Open images in modal window when click the preview -- [#150](https://github.com/h3poteto/whalebird-desktop/pull/150) Add lazy loading in timelines - -### Changed -- [#147](https://github.com/h3poteto/whalebird-desktop/pull/147) Archive old statuses when close timeline, because it is too heavy - -## [0.2.1] - 2018-03-27 -### Added -- [#142](https://github.com/h3poteto/whalebird-desktop/pull/142) Show unread marks in side menu - -### Changed -- [#137](https://github.com/h3poteto/whalebird-desktop/pull/137) Use electron-builder instead of electron-packager when build release packages - -### Fixed -- [#144](https://github.com/h3poteto/whalebird-desktop/pull/144) Open link on the default browser in notifications -- [#140](https://github.com/h3poteto/whalebird-desktop/pull/140) Refactor closing modal window when post new toot -- [#139](https://github.com/h3poteto/whalebird-desktop/pull/139) Show username if display_name is blank - -## [0.2.0] - 2018-03-26 -### Added - -- [#135](https://github.com/h3poteto/whalebird-desktop/pull/135) Release the Windows version -- [#125](https://github.com/h3poteto/whalebird-desktop/pull/125), #126 Show attached images of toot in timeline -- [#124](https://github.com/h3poteto/whalebird-desktop/pull/124) Save window state when close - -### Changed - -- [#113](https://github.com/h3poteto/whalebird-desktop/pull/113) Add electron-log for production logs -- [#109](https://github.com/h3poteto/whalebird-desktop/pull/109) Get recently timeline in local and public when it is opened - -### Fixed - -- [#134](https://github.com/h3poteto/whalebird-desktop/pull/134) Clear the domain name in login form after login -- [#130](https://github.com/h3poteto/whalebird-desktop/pull/130), [#128](https://github.com/h3poteto/whalebird-desktop/pull/128) Set NotoSans as the default font. And remove google-fonts-webpack-plugin because the API has been dead. -- [#114](https://github.com/h3poteto/whalebird-desktop/pull/114) Allow application to be draggable for Mac -- [#111](https://github.com/h3poteto/whalebird-desktop/pull/111) Fix text overflow in side menu -- [#110](https://github.com/h3poteto/whalebird-desktop/pull/110) Clear old status after close new toot modal - - -## [0.1.0] - 2018-03-23 -This is the first release diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index 5bd9a8ae..00000000 --- a/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @h3poteto diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f288702d..00000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/Makefile b/Makefile deleted file mode 100644 index d732f15c..00000000 --- a/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -.PHONY: all install clean - -VERSION = 1.0.0 - -all: build mac linux win32 win64 - -install: package.json - yarn install - -build: install - yarn run build - -mac: - yarn run package:mac - mv build/Whalebird-${VERSION}-mac-x64.dmg build/Whalebird-${VERSION}-darwin-x64.dmg - mv build/Whalebird-${VERSION}-mac-arm64.dmg build/Whalebird-${VERSION}-darwin-arm64.dmg - cd build; shasum -a 256 Whalebird-${VERSION}-darwin-x64.dmg | awk '{ print $1 }' > Whalebird-${VERSION}-darwin-x64.dmg.shasum - cd build; shasum -a 256 Whalebird-${VERSION}-darwin-arm64.dmg | awk '{ print $1 }' > Whalebird-${VERSION}-darwin-arm64.dmg.shasum - -mas: - yarn run build:clean - yarn run package:mas - -linux: - yarn run package:linux - mv build/Whalebird-${VERSION}-linux-amd64.deb build/Whalebird-${VERSION}-linux-x64.deb - mv build/Whalebird-${VERSION}-linux-x86_64.rpm build/Whalebird-${VERSION}-linux-x64.rpm - mv build/Whalebird-${VERSION}-linux-x86_64.AppImage build/Whalebird-${VERSION}-linux-x64.AppImage - cd build; sha256sum Whalebird-${VERSION}-linux-arm64.tar.bz2 | awk '{ print $1 }' > Whalebird-${VERSION}-linux-arm64.tar.bz2.shasum - cd build; sha256sum Whalebird-${VERSION}-linux-x64.AppImage | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.AppImage.shasum - cd build; sha256sum Whalebird-${VERSION}-linux-x64.deb | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.deb.shasum - cd build; sha256sum Whalebird-${VERSION}-linux-x64.rpm | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.rpm.shasum - cd build; sha256sum Whalebird-${VERSION}-linux-x64.tar.bz2 | awk '{ print $1 }' > Whalebird-${VERSION}-linux-x64.tar.bz2.shasum - -win32: - yarn run package:win32 - mv build/Whalebird-${VERSION}-win-ia32.exe build/Whalebird-${VERSION}-windows-ia32.exe - cd build; sha256sum Whalebird-${VERSION}-windows-ia32.exe | awk '{ print $1 }' > Whalebird-${VERSION}-windows-ia32.exe.shasum - -win64: - yarn run package:win64 - mv build/Whalebird-${VERSION}-win-x64.exe build/Whalebird-${VERSION}-windows-x64.exe - cd build; sha256sum Whalebird-${VERSION}-windows-x64.exe | awk '{ print $1 }' > Whalebird-${VERSION}-windows-x64.exe.shasum - -clean: - yarn run build:clean diff --git a/README.md b/README.md index 2955b4f1..3f8b5348 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,38 @@ -# Whalebird -[![Build](https://github.com/h3poteto/whalebird-desktop/actions/workflows/build.yml/badge.svg)](https://github.com/h3poteto/whalebird-desktop/actions/workflows/build.yml) -[![GitHub release](http://img.shields.io/github/release/h3poteto/whalebird-desktop.svg)](https://github.com/h3poteto/whalebird-desktop/releases) -[![Mac App Store](https://img.shields.io/itunes/v/6445864587)](https://apps.apple.com/us/app/whalebird/id6445864587) -[![AUR version](https://img.shields.io/aur/version/whalebird)](https://aur.archlinux.org/packages/whalebird/) -[![Dependabot](https://img.shields.io/badge/Dependabot-enabled-blue.svg)](https://dependabot.com) -[![Crowdin](https://badges.crowdin.net/whalebird/localized.svg)](https://crowdin.com/project/whalebird) +

+## Usage -Whalebird is a Fediverse client app for desktop. - -![demo](screenshot.png) - -## Feature - -- An interface like slack -- Notify to desktop -- Streaming -- Many keyboard shortcuts -- Manage multiple accounts -- Supporting - - Mastodon - - Pleroma - - Friendica - - Firefish - -### Shortcuts - - - - - - - - - - - - - - - - - - - - - - -
MacLinux, Windows
Toot, Reply Cmd + Enter Ctrl + Enter
Change accounts Cmd + 1, 2, 3... Ctrl + 1, 2, 3...
Jump to another timeline Cmd + k Ctrl + k
Reload current timeline Cmd + r Ctrl + r
Select next post j j
Select previous post k k
Reply to the post r r
Reblog the post b b
Favourite the post f f
Open details of the post o o
Open account profile of the post p p
Open the images i i
Show/hide CW and NSFW x x
Close current page esc esc
Show shortcut keys ? ?
- -## Install -### Mac -[![App Store](app-store.svg)](https://itunes.apple.com/us/app/whalebird/id1378283354) - -Or you can download `.dmg` from [release page](https://github.com/h3poteto/whalebird-desktop/releases). - -So on, you can install from Homebrew: +### Create an App ``` -$ brew update -$ brew install --cask whalebird +# with npx +$ npx create-nextron-app my-app --example with-tailwindcss + +# with yarn +$ yarn create nextron-app my-app --example with-tailwindcss + +# with pnpm +$ pnpm dlx create-nextron-app my-app --example with-tailwindcss ``` -:sparkles: Thanks to [@singingwolfboy](https://github.com/singingwolfboy) for adding it to [homebrew-cask](https://github.com/Homebrew/homebrew-cask/blob/cf568882b6e012956ca404a16be2db36ca873002/Casks/whalebird.rb). - - -### Linux -There are some packages in [release page](https://github.com/h3poteto/whalebird-desktop/releases), for example `.deb`, `.rpm` and `.AppImage`. -If you do not want to use the package manager, please download `.tar.bz2` file and decompress it. - -If you are using snap, please install from [snapcraft.io](https://snapcraft.io/whalebird). +### Install Dependencies ``` -$ sudo snap install whalebird +$ cd my-app + +# using yarn or npm +$ yarn (or `npm install`) + +# using pnpm +$ pnpm install --shamefully-hoist ``` -If you are using flatpak, please install from -[flathub.org](https://flathub.org/apps/details/social.whalebird.WhalebirdDesktop). +### Use it ``` -$ flatpak install social.whalebird.WhalebirdDesktop +# development mode +$ yarn dev (or `npm run dev` or `pnpm run dev`) + +# production build +$ yarn build (or `npm run build` or `pnpm run build`) ``` - -Or you can install from [Arch User Repository](https://aur.archlinux.org/packages/whalebird/). - -``` -$ yay -S whalebird -``` - - -### Windows -Windows Store - - -We prepared winget package and `.exe` [files](https://github.com/h3poteto/whalebird-desktop/releases), **but we don't recommend these ways**. -Because these binary is not code signed, so you will get warnings when you launch. Only Windows Store version is signed, so please use it. - -``` -$ winget show "Whalebird" --versions -``` - -## Translation -If you can speak multiple languages, could you please help with translation in [Crowdin](https://crowdin.com/project/whalebird)? - -Or if you want add new language, please create an issue. I will add it. - -## Development - -We'd love you to contribute to Whalebird. - -### Minimum requirements for development - -* Node.js greater than or equal version 15.0.0 (16.x is recommended) -* npm or yarn - -### Getting started - -``` bash -# clone this repository -$ git clone https://github.com/h3poteto/whalebird-desktop.git -$ cd whalebird-desktop - -# Install font config -$ sudo apt-get install libfontconfig-dev - -# install dependencies -$ yarn install - -# serve with hot reload at localhost:9080 -$ yarn run dev -``` - -# License -The software is available as open source under the terms of the [GPL-3.0 License](https://www.gnu.org/licenses/gpl-3.0.en.html). However, icons do not comply with this license, © Miho Fukuda. diff --git a/app-store.svg b/app-store.svg deleted file mode 100755 index c36a76a5..00000000 --- a/app-store.svg +++ /dev/null @@ -1,51 +0,0 @@ - - Download_on_the_Mac_App_Store_Badge_US-UK_RGB_blk_092917 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/notarize.js b/build/notarize.js deleted file mode 100644 index 0a3ca4f1..00000000 --- a/build/notarize.js +++ /dev/null @@ -1,20 +0,0 @@ -const { notarize } = require('@electron/notarize') - -exports.default = async function notarizing(context) { - const { electronPlatformName, appOutDir } = context - if (electronPlatformName !== 'darwin') { - return - } - - const appName = context.packager.appInfo.productFilename - - return await notarize({ - tool: 'notarytool', - appBundleId: 'social.whalebird.app', - ascProvider: process.env.ASC_PROVIDER, - appPath: `${appOutDir}/${appName}.app`, - appleId: process.env.APPLE_ID, - appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD, - teamId: process.env.TEAM_ID - }) -} diff --git a/build/sounds/operation_sound01.wav b/build/sounds/operation_sound01.wav deleted file mode 100644 index 3520ea3d051f2f4f6e24d2c3f7389523a2c546e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6702 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 JyZD~Q{TB6;%m4rY diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 70726419..00000000 --- a/crowdin.yml +++ /dev/null @@ -1,27 +0,0 @@ -files: - - source: /src/config/locales/en/translation.json - translation: /src/config/locales/%locale%/translation.json - languages_mapping: - locale: - cs: cs - de: de - es-ES: es_es - eu: eu - fa: fa - fr: fr - gd: gd - hu: hu - id: id - is: is - it: it - ja: ja - ko: ko - 'no': 'no' - pl: pl - pt-PT: pt_pt - ru: ru - si-LK: si - sv-SE: sv_se - tzm: tzm - zh-CN: zh_cn - zh-TW: zh_tw diff --git a/dist/electron/.gitkeep b/dist/electron/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dist/web/.gitkeep b/dist/web/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/electron-builder.json b/electron-builder.json deleted file mode 100644 index ee48a601..00000000 --- a/electron-builder.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "productName": "Whalebird", - "appId": "social.whalebird.app", - "artifactName": "${productName}-${version}-${os}-${arch}.${ext}", - "directories": { - "output": "build" - }, - "extraResources": [ - "build/sounds/*", - "build/icons/*" - ], - "files": [ - "dist/electron/**/*", - "build/icons/*" - ], - "afterSign": "build/notarize.js", - "dmg": { - "sign": false, - "contents": [ - { - "x": 410, - "y": 150, - "type": "link", - "path": "/Applications" - }, - { - "x": 130, - "y": 150, - "type": "file" - } - ] - }, - "mac": { - "icon": "build/icons/icon.icns", - "target": [ - { - "target": "dmg", - "arch": [ - "x64", - "arm64" - ] - } - ], - "category": "public.app-category.social-networking", - "entitlements": "plist/entitlements.mac.plist", - "entitlementsInherit": "plist/entitlements.mac.plist", - "entitlementsLoginHelper": "plist/loginhelper.plist", - "hardenedRuntime": true, - "gatekeeperAssess": false, - "darkModeSupport": true, - "mergeASARs": false, - "asarUnpack": "node_modules/**/*.node" - }, - "win": { - "icon": "build/icons/icon.ico", - "target": "nsis" - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true - }, - "linux": { - "icon": "build/icons", - "target": [ - { - "target": "AppImage", - "arch": [ - "x64" - ] - }, - { - "target": "deb", - "arch": [ - "x64" - ] - }, - { - "target": "rpm", - "arch": [ - "x64" - ] - }, - { - "target": "tar.bz2", - "arch": [ - "x64" - ] - }, - { - "target": "snap", - "arch": [ - "x64" - ] - } - ], - "category": "Network" - } -} diff --git a/electron-builder.mas.json b/electron-builder.mas.json deleted file mode 100644 index 4d19c067..00000000 --- a/electron-builder.mas.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "productName": "Whalebird", - "appId": "social.whalebird.app", - "artifactName": "${productName}-${version}-${os}-${arch}.${ext}", - "buildVersion": "168", - "directories": { - "output": "build" - }, - "extraResources": [ - "build/sounds/*", - "build/icons/*" - ], - "files": [ - "dist/electron/**/*", - "build/icons/*" - ], - "mas": { - "type": "distribution", - "entitlements": "plist/parent.plist", - "entitlementsInherit": "plist/child.plist", - "entitlementsLoginHelper": "plist/loginhelper.plist", - "hardenedRuntime": false, - "gatekeeperAssess": false, - "extendInfo": { - "ITSAppUsesNonExemptEncryption": "false" - }, - "provisioningProfile": "./packages/socialwhalebirdapp_MAS.provisionprofile" - }, - "mac": { - "icon": "build/icons/icon.icns", - "target": [ - { - "target": "mas", - "arch": [ - "universal" - ] - } - ], - "category": "public.app-category.social-networking", - "hardenedRuntime": true, - "gatekeeperAssess": false, - "darkModeSupport": true, - "extendInfo": { - "ITSAppUsesNonExemptEncryption": "false" - }, - "mergeASARs": false, - "asarUnpack": "node_modules/**/*.node" - } -} diff --git a/electron-builder.yml b/electron-builder.yml new file mode 100644 index 00000000..68ecf68d --- /dev/null +++ b/electron-builder.yml @@ -0,0 +1,15 @@ +appId: social.whalebird.app +productName: Whalebird +copyright: Copyright © 2023 Akira Fukushima +directories: + output: dist + buildResources: resources +files: + - from: . + filter: + - package.json + - app +linux: + target: AppImage + category: Network +publish: null diff --git a/flatpak-data/social.whalebird.WhalebirdDesktop.desktop b/flatpak-data/social.whalebird.WhalebirdDesktop.desktop deleted file mode 100644 index 8506c688..00000000 --- a/flatpak-data/social.whalebird.WhalebirdDesktop.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Whalebird -Comment=Electron-based Mastodon/Pleroma/Misskey client -Exec=start-whalebird.sh %U -Icon=social.whalebird.WhalebirdDesktop -Categories=Network; -Terminal=false - diff --git a/flatpak-data/social.whalebird.WhalebirdDesktop.metainfo.xml b/flatpak-data/social.whalebird.WhalebirdDesktop.metainfo.xml deleted file mode 100644 index 9d17cc7e..00000000 --- a/flatpak-data/social.whalebird.WhalebirdDesktop.metainfo.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - social.whalebird.WhalebirdDesktop - - Whalebird - Whalebird is a Mastodon, Pleroma, and Misskey client for the desktop - - CC0-1.0 - MIT - https://whalebird.social/en/desktop/contents - - intense - intense - - - - -

Whalebird is a Mastodon, Pleroma, and Misskey client for the desktop

-

Features

-
    -
  • An interface like slack
  • -
  • Notify to desktop
  • -
  • Streaming
  • -
  • Many keyboard shortcuts
  • -
  • Manage multiple accounts
  • -
-
- - social.whalebird.WhalebirdDesktop.desktop - - - https://github.com/h3poteto/whalebird-desktop/raw/master/screenshot.png - - - - - -

Updated

-
    -
  • Whalebird 5.x doesn't migrate your local databases from version 4. So please re-authenticate all servers when you upgrade Whalebird from 4.7.4.
  • -
-
-
-
-
diff --git a/main/background.ts b/main/background.ts new file mode 100644 index 00000000..6e82c2d2 --- /dev/null +++ b/main/background.ts @@ -0,0 +1,47 @@ +import path from 'path' +import { app, ipcMain, shell, IpcMainInvokeEvent } from 'electron' +import serve from 'electron-serve' +import { createWindow } from './helpers' + +const isProd = process.env.NODE_ENV === 'production' + +if (isProd) { + serve({ directory: 'app' }) +} else { + app.setPath('userData', `${app.getPath('userData')} (development)`) +} + +;(async () => { + await app.whenReady() + + const mainWindow = createWindow('main', { + width: 1000, + height: 600, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + webSecurity: false, + preload: path.join(__dirname, 'preload.js') + } + }) + + if (isProd) { + await mainWindow.loadURL('app://./') + } else { + const port = process.argv[2] + await mainWindow.loadURL(`http://localhost:${port}/`) + mainWindow.webContents.openDevTools() + } +})() + +app.on('window-all-closed', () => { + app.quit() +}) + +ipcMain.on('message', async (event, arg) => { + event.reply('message', `${arg} World!`) +}) + +ipcMain.handle('open-browser', (_event: IpcMainInvokeEvent, url: string) => { + shell.openExternal(url) +}) diff --git a/main/helpers/create-window.ts b/main/helpers/create-window.ts new file mode 100644 index 00000000..b4deda5f --- /dev/null +++ b/main/helpers/create-window.ts @@ -0,0 +1,86 @@ +import { + screen, + BrowserWindow, + BrowserWindowConstructorOptions, + Rectangle, +} from 'electron' +import Store from 'electron-store' + +export const createWindow = ( + windowName: string, + options: BrowserWindowConstructorOptions +): BrowserWindow => { + const key = 'window-state' + const name = `window-state-${windowName}` + const store = new Store({ name }) + const defaultSize = { + width: options.width, + height: options.height, + } + let state = {} + + const restore = () => store.get(key, defaultSize) + + const getCurrentPosition = () => { + const position = win.getPosition() + const size = win.getSize() + return { + x: position[0], + y: position[1], + width: size[0], + height: size[1], + } + } + + const windowWithinBounds = (windowState, bounds) => { + return ( + windowState.x >= bounds.x && + windowState.y >= bounds.y && + windowState.x + windowState.width <= bounds.x + bounds.width && + windowState.y + windowState.height <= bounds.y + bounds.height + ) + } + + const resetToDefaults = () => { + const bounds = screen.getPrimaryDisplay().bounds + return Object.assign({}, defaultSize, { + x: (bounds.width - defaultSize.width) / 2, + y: (bounds.height - defaultSize.height) / 2, + }) + } + + const ensureVisibleOnSomeDisplay = (windowState) => { + const visible = screen.getAllDisplays().some((display) => { + return windowWithinBounds(windowState, display.bounds) + }) + if (!visible) { + // Window is partially or fully not visible now. + // Reset it to safe defaults. + return resetToDefaults() + } + return windowState + } + + const saveState = () => { + if (!win.isMinimized() && !win.isMaximized()) { + Object.assign(state, getCurrentPosition()) + } + store.set(key, state) + } + + state = ensureVisibleOnSomeDisplay(restore()) + + const win = new BrowserWindow({ + ...state, + ...options, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + ...options.webPreferences, + }, + }) + + win.on('close', saveState) + + return win +} diff --git a/main/helpers/index.ts b/main/helpers/index.ts new file mode 100644 index 00000000..e1b9aad0 --- /dev/null +++ b/main/helpers/index.ts @@ -0,0 +1 @@ +export * from './create-window' diff --git a/main/preload.ts b/main/preload.ts new file mode 100644 index 00000000..4657da4f --- /dev/null +++ b/main/preload.ts @@ -0,0 +1,22 @@ +import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron' + +const handler = { + invoke(channel: string, value: any) { + ipcRenderer.invoke(channel, value) + }, + send(channel: string, value: unknown) { + ipcRenderer.send(channel, value) + }, + on(channel: string, callback: (...args: unknown[]) => void) { + const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => callback(...args) + ipcRenderer.on(channel, subscription) + + return () => { + ipcRenderer.removeListener(channel, subscription) + } + } +} + +contextBridge.exposeInMainWorld('ipc', handler) + +export type IpcHandler = typeof handler diff --git a/package.json b/package.json index d8e567db..5de2a660 100644 --- a/package.json +++ b/package.json @@ -1,205 +1,36 @@ { - "name": "Whalebird", - "version": "5.1.1", - "author": "AkiraFukushima ", - "description": "An Electron based Mastodon client for Windows, Mac and Linux", - "keywords": [ - "mastodon", - "client", - "electron", - "vue" - ], - "repository": { - "type": "git", - "url": "https://github.com/h3poteto/whalebird-desktop.git" - }, - "main": "./dist/electron/main.js", + "private": true, + "name": "whalebird", + "description": "Electron based Fediverse client application", + "version": "1.0.0", + "author": "Akira Fukushima ", + "main": "app/background.js", "scripts": { - "dev": "node .electron-vue/dev-runner.js", - "dev:main": "webpack --node-env=development --mode development --progress --config .electron-vue/webpack.main.config.js", - "dev:renderer": "webpack --node-env=development --mode development --progress --config .electron-vue/webpack.renderer.config.js", - "lint:eslint": "eslint -c .eslintrc.js --ext .js,.vue,.ts src spec", - "lint:stylelint": "stylelint '**/*.vue'", - "build": "node .electron-vue/build.js", - "build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js", - "build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js", - "package:mas": "electron-builder --mac --publish never --config electron-builder.mas.json", - "package:mac": "electron-builder --mac --publish never --config electron-builder.json", - "package:linux": "electron-builder --linux --publish never --config electron-builder.json", - "package:win32": "electron-builder --win --ia32 --publish never --config electron-builder.json", - "package:win64": "electron-builder --win --x64 --publish never --config electron-builder.json", - "package:pacman": "electron-builder --linux pacman --publish never --config electron-builder.json", - "package:appx2": "electron-builder --win --x64 --config electron-builder.json && electron-windows-store --assets .\\build\\icons --input-directory .\\build\\win-unpacked --output-directory .\\build\\appx --package-name Whalebird --package-display-name Whalebird --package-version 5.1.1.0 --publisher-display-name h3poteto --identity-name 45610h3poteto.Whalebird", - "pack": "yarn run pack:main && yarn run pack:renderer", - "pack:main": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.main.config.js", - "pack:renderer": "webpack --node-env=production --mode production --progress --config .electron-vue/webpack.renderer.config.js", - "typecheck": "tsc -p . --noEmit && vue-tsc --noEmit", - "spec": "NODE_ENV=test jest -u --maxWorkers=3", - "postinstall": "electron-builder install-app-deps", - "thirdparty": "license-checker --production --json > thirdparty.json && node scripts/thirdparty.js" - }, - "jest": { - "moduleFileExtensions": [ - "ts", - "js", - "json" - ], - "moduleNameMapper": { - "@/router": "/spec/mock/router.ts", - "^@/(.+)": "/src/renderer/$1", - "^~/(.+)": "/$1", - "axios": "axios/dist/node/axios.cjs" - }, - "testMatch": [ - "**/spec/**/*.spec.ts" - ], - "preset": "ts-jest/presets/js-with-ts", - "transform": { - "^.+\\.(js|jsx)$": "babel-jest", - "^.+\\.(ts|tsx)$": "ts-jest" - }, - "transformIgnorePatterns": [ - "/node_modules/(?!axios)" - ], - "setupFiles": [ - "core-js", - "/spec/setupJest.ts" - ], - "globals": { - "ts-jest": { - "tsconfig": "tsconfig.json" - } - } + "dev": "nextron", + "build": "nextron build", + "postinstall": "electron-builder install-app-deps" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.4.0", - "@fortawesome/free-regular-svg-icons": "^6.4.0", - "@fortawesome/free-solid-svg-icons": "^6.4.0", - "@fortawesome/vue-fontawesome": "^3.0.3", - "@trodi/electron-splashscreen": "^1.0.2", - "@vueuse/core": "10.4.1", - "@vueuse/math": "^10.1.2", - "about-window": "^1.15.2", - "animate.css": "^4.1.0", - "auto-launch": "^5.0.5", - "axios": "1.5.1", - "better-sqlite3": "8.2.0", - "electron-context-menu": "^3.6.1", - "electron-json-storage": "^4.6.0", - "electron-log": "^4.4.8", - "electron-window-state": "^5.0.3", - "element-plus": "^2.3.14", - "emoji-mart-vue-fast": "^15.0.0", - "i18next": "^23.0.0", - "i18next-vue": "^2.1.1", - "megalodon": "8.1.4", - "minimist": "^1.2.8", - "mitt": "^3.0.0", - "moment": "^2.29.4", - "mousetrap": "^1.6.5", - "object-assign-deep": "^0.4.0", - "parse-link-header": "^2.0.0", - "sanitize-html": "^2.10.0", - "simplayer": "0.0.8", - "system-font-families": "^0.6.0", - "unicode-emoji-json": "^0.4.0", - "vue": "^3.3.4", - "vue-popperjs": "^2.3.0", - "vue-resize": "^2.0.0-alpha.1", - "vue-router": "^4.2.2", - "vue-virtual-scroller": "2.0.0-beta.8", - "vuex": "^4.1.0", - "vuex-router-sync": "^6.0.0-rc.1" + "dexie": "^3.2.4", + "electron-serve": "^1.1.0", + "electron-store": "^8.1.0", + "flowbite": "^2.0.0", + "flowbite-react": "^0.6.4", + "megalodon": "^9.1.1" }, "devDependencies": { - "@babel/core": "^7.22.1", - "@babel/eslint-parser": "^7.21.8", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-transform-runtime": "^7.21.4", - "@babel/preset-env": "^7.21.5", - "@babel/register": "^7.21.0", - "@babel/runtime": "7.23.1", - "@electron/notarize": "^2.0.0", - "@types/auto-launch": "^5.0.2", - "@types/better-sqlite3": "^7.6.3", - "@types/electron-json-storage": "^4.5.0", - "@types/jest": "27.5.2", - "@types/jsdom": "^21.1.1", - "@types/node": "^20.2.5", - "@types/parse-link-header": "^2.0.1", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "@vue/compiler-sfc": "^3.3.4", - "@vue/eslint-config-prettier": "^8.0.0", - "@vue/eslint-config-typescript": "^12.0.0", - "all-object-keys": "^2.2.0", - "assert": "^2.0.0", - "babel-jest": "^29.5.0", - "babel-loader": "^9.1.2", - "babel-plugin-istanbul": "^6.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "bufferutil": "^4.0.7", - "cfonts": "^3.2.0", - "cli-color": "^2.0.3", - "copy-webpack-plugin": "^11.0.0", - "core-js": "^3.30.2", - "cross-env": "^7.0.3", - "crypto-browserify": "^3.12.0", - "css-loader": "^6.7.3", - "del": "^6.1.1", - "devtron": "^1.4.0", - "electron": "22.3.25", - "electron-builder": "23.6.0", - "electron-debug": "^3.2.0", - "electron-devtools-installer": "^3.2.0", - "electron-mock-ipc": "^0.3.12", - "electron-windows-store": "^2.1.0", - "eslint": "^8.49.0", - "eslint-plugin-vue": "^9.14.1", - "file-loader": "^6.2.0", - "html-webpack-plugin": "^5.5.1", - "https-browserify": "^1.0.0", - "jest": "^26.6.3", - "jsdom": "^22.1.0", - "json-loader": "^0.5.7", - "listr": "^0.14.3", - "mini-css-extract-plugin": "^2.7.5", - "node-loader": "^2.0.0", - "node-sass": "^9.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "postcss": "^8.4.23", - "postcss-html": "^1.5.0", - "postcss-scss": "^4.0.6", - "prettier": "^3.0.3", - "process": "^0.11.10", - "regenerator-runtime": "^0.14.0", - "sass-loader": "^13.2.2", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "style-loader": "^3.3.2", - "stylelint": "^14.16.1", - "stylelint-config-html": "^1.1.0", - "stylelint-config-prettier": "^9.0.4", - "stylelint-config-standard": "^34.0.0", - "stylelint-scss": "^5.2.0", - "timers-browserify": "^2.0.12", - "ts-jest": "^26.5.6", - "ts-loader": "^9.4.2", - "ttfinfo": "^0.2.0", - "typescript": "^4.9.5", - "url": "^0.11.0", - "url-loader": "^4.1.1", - "utf-8-validate": "^6.0.3", - "vue-html-loader": "^1.2.4", - "vue-loader": "^17.2.2", - "vue-style-loader": "^4.1.3", - "vue-tsc": "^1.6.5", - "webpack": "^5.82.1", - "webpack-cli": "^5.1.1", - "webpack-dev-server": "^4.15.0", - "webpack-hot-middleware": "^2.25.3" + "@babel/runtime-corejs3": "^7.23.2", + "@types/node": "^18.11.18", + "@types/react": "^18.0.26", + "autoprefixer": "^10.4.16", + "electron": "^26.2.2", + "electron-builder": "^24.6.4", + "next": "^12.3.4", + "nextron": "^8.12.0", + "postcss": "^8.4.31", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "^3.3.3", + "typescript": "^5.2.2" } } diff --git a/packages/.gitkeep b/packages/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/plist/child.plist b/plist/child.plist deleted file mode 100644 index d8dc69e8..00000000 --- a/plist/child.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - diff --git a/plist/entitlements.mac.plist b/plist/entitlements.mac.plist deleted file mode 100644 index 55f37a69..00000000 --- a/plist/entitlements.mac.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - - diff --git a/plist/loginhelper.plist b/plist/loginhelper.plist deleted file mode 100644 index 8e31f755..00000000 --- a/plist/loginhelper.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/plist/parent.plist b/plist/parent.plist deleted file mode 100644 index 6bc4d0cd..00000000 --- a/plist/parent.plist +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.files.user-selected.read-only - - com.apple.security.network.client - - - diff --git a/renderer/app.css b/renderer/app.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/renderer/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/build/icons/256x256.png b/renderer/assets/256x256.png similarity index 100% rename from build/icons/256x256.png rename to renderer/assets/256x256.png diff --git a/renderer/components/accounts/New.tsx b/renderer/components/accounts/New.tsx new file mode 100644 index 00000000..2840158a --- /dev/null +++ b/renderer/components/accounts/New.tsx @@ -0,0 +1,83 @@ +import { Label, Modal, TextInput, Button } from 'flowbite-react' +import generator, { MegalodonInterface, detector } from 'megalodon' +import { useState } from 'react' +import { db } from '@/db' + +type NewProps = { + opened: boolean + close: () => void +} + +export default function New(props: NewProps) { + const [sns, setSNS] = useState<'mastodon' | 'pleroma' | 'firefish' | 'friendica' | null>(null) + const [domain, setDomain] = useState('') + const [client, setClient] = useState() + const [clientId, setClientId] = useState() + const [clientSecret, setClientSecret] = useState() + + const checkDomain = async () => { + const input = document.getElementById('domain') as HTMLInputElement + setDomain(input.value) + const url = `https://${input.value}` + const sns = await detector(url) + setSNS(sns) + const client = generator(sns, url) + setClient(client) + const appData = await client.registerApp('Whalebird', {}) + setClientId(appData.client_id) + setClientSecret(appData.client_secret) + global.ipc.invoke('open-browser', appData.url) + } + + const authorize = async () => { + const input = document.getElementById('authorization') as HTMLInputElement + if (!client || !clientId || !clientSecret) return + const tokenData = await client.fetchAccessToken(clientId, clientSecret, input.value) + if (!sns) return + const cli = generator(sns, `https://${domain}`, tokenData.access_token, 'Whalebird') + const acct = await cli.verifyAccountCredentials() + await db.accounts.add({ + username: acct.data.username, + account_id: acct.data.id, + avatar: acct.data.avatar, + client_id: clientId, + client_secret: clientSecret, + access_token: tokenData.access_token, + refresh_token: tokenData.refresh_token, + url: `https://${domain}`, + domain: domain, + sns: sns + }) + props.close() + } + + return ( + <> + props.close()}> + Add account + +
+ {sns === null && ( + <> +
+
+ + {' '} + + )} + {sns && ( + <> +
+
+ + {' '} + + )} + +
+
+ + ) +} diff --git a/renderer/components/layouts/account.tsx b/renderer/components/layouts/account.tsx new file mode 100644 index 00000000..8a0bfad8 --- /dev/null +++ b/renderer/components/layouts/account.tsx @@ -0,0 +1,48 @@ +import { useEffect, useState } from 'react' +import { FaPlus } from 'react-icons/fa6' +import { Account, db } from '@/db' +import NewAccount from '@/components/accounts/New' +import { Avatar } from 'flowbite-react' + +type LayoutProps = { + children: React.ReactNode +} + +export default function Layout({ children }: LayoutProps) { + const [accounts, setAccounts] = useState>([]) + const [openNewModal, setOpenNewModal] = useState(false) + + useEffect(() => { + const fn = async () => { + const acct = await db.accounts.toArray() + setAccounts(acct) + if (acct.length === 0) { + setOpenNewModal(true) + } + } + fn() + }, []) + + const closeNewModal = async () => { + const acct = await db.accounts.toArray() + setAccounts(acct) + setOpenNewModal(false) + } + + return ( +
+
+ + {children} +
+
+ ) +} diff --git a/renderer/components/layouts/timelines.tsx b/renderer/components/layouts/timelines.tsx new file mode 100644 index 00000000..28ee4a1c --- /dev/null +++ b/renderer/components/layouts/timelines.tsx @@ -0,0 +1,82 @@ +import { Account, db } from '@/db' +import { CustomFlowbiteTheme, Flowbite, Sidebar } from 'flowbite-react' +import { useRouter } from 'next/router' +import { useEffect, useState } from 'react' + +type LayoutProps = { + children: React.ReactNode +} + +const customTheme: CustomFlowbiteTheme = { + sidebar: { + root: { + inner: 'h-full overflow-y-auto overflow-x-hidden bg-blue-950 py-4 px-3 dark:bg-blue-950' + }, + item: { + base: 'flex items-center justify-center rounded-lg p-2 text-base font-normal text-blue-200 hover:bg-blue-900 dark:text-blue-200 dark:hover:bg-blue-900 cursor-pointer', + active: 'bg-blue-400 text-gray-800 hover:bg-blue-300' + } + } +} + +export default function Layout({ children }: LayoutProps) { + const router = useRouter() + + const [account, setAccount] = useState(null) + useEffect(() => { + if (router.query.id) { + const f = async () => { + const acct = await db.accounts.get(parseInt(router.query.id as string)) + if (!acct) return + setAccount(acct) + } + f() + } + }, [router.query.id]) + + const pages = [ + { + id: 'home', + title: 'Home', + path: `/accounts/${router.query.id}/home` + }, + { + id: 'notifications', + title: 'Notifications', + path: `/accounts/${router.query.id}/notifications` + }, + { + id: 'local', + title: 'Local', + path: `/accounts/${router.query.id}/local` + }, + { + id: 'public', + title: 'Public', + path: `/accounts/${router.query.id}/public` + } + ] + + return ( +
+ + +
+

{account?.username}

+

@{account?.domain}

+
+ + + {pages.map(page => ( + router.push(page.path)}> + {page.title} + + ))} + + +
+
+ {children} +
+ ) +} diff --git a/renderer/db.ts b/renderer/db.ts new file mode 100644 index 00000000..e5ab2593 --- /dev/null +++ b/renderer/db.ts @@ -0,0 +1,30 @@ +import Dexie, { type Table } from 'dexie' + +export type Account = { + id?: number + username: string + account_id: string + avatar: string + client_id: string + client_secret: string + access_token: string + refresh_token: string | null + url: string + domain: string + sns: 'mastodon' | 'pleroma' | 'friendica' | 'firefish' +} + +export class SubClassedDexie extends Dexie { + // 'friends' is added by dexie when declaring the stores() + // We just tell the typing system this is the case + accounts!: Table + + constructor() { + super('whalebird') + this.version(1).stores({ + accounts: '++id, username, account_id, avatar, client_id, client_secret, access_token, refresh_token, url, domain, sns' + }) + } +} + +export const db = new SubClassedDexie() diff --git a/renderer/interfaces/index.ts b/renderer/interfaces/index.ts new file mode 100644 index 00000000..fc5d69b9 --- /dev/null +++ b/renderer/interfaces/index.ts @@ -0,0 +1,16 @@ +// You can include shared interfaces/types in a separate file +// and then use them in any component by importing them. For +// example, to import the interface below do: +// +// import User from 'path/to/interfaces'; +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import { IpcRenderer } from 'electron' + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace NodeJS { + interface Global { + ipc: IpcRenderer + } + } +} diff --git a/renderer/next-env.d.ts b/renderer/next-env.d.ts new file mode 100644 index 00000000..4f11a03d --- /dev/null +++ b/renderer/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/renderer/next.config.js b/renderer/next.config.js new file mode 100644 index 00000000..60e1d31c --- /dev/null +++ b/renderer/next.config.js @@ -0,0 +1,10 @@ +/** @type {import('next').NextConfig} */ +module.exports = { + trailingSlash: true, + images: { + unoptimized: true, + }, + webpack: (config) => { + return config + }, +} diff --git a/renderer/pages/_app.tsx b/renderer/pages/_app.tsx new file mode 100644 index 00000000..4225bc18 --- /dev/null +++ b/renderer/pages/_app.tsx @@ -0,0 +1,14 @@ +import type { AppProps } from 'next/app' +import '../app.css' +import AccountLayout from '@/components/layouts/account' +import TimelineLayout from '@/components/layouts/timelines' + +export default function MyApp({ Component, pageProps }: AppProps) { + return ( + + + + + + ) +} diff --git a/renderer/pages/accounts/[id]/[timeline].tsx b/renderer/pages/accounts/[id]/[timeline].tsx new file mode 100644 index 00000000..438920e4 --- /dev/null +++ b/renderer/pages/accounts/[id]/[timeline].tsx @@ -0,0 +1,6 @@ +import { useRouter } from 'next/router' + +export default function Timeline() { + const router = useRouter() + return
{router.query.timeline}
+} diff --git a/renderer/pages/accounts/[id]/index.tsx b/renderer/pages/accounts/[id]/index.tsx new file mode 100644 index 00000000..647fc63b --- /dev/null +++ b/renderer/pages/accounts/[id]/index.tsx @@ -0,0 +1,15 @@ +import { useRouter } from 'next/router' + +type AccountProps = {} + +export default function Account(props: AccountProps) { + const router = useRouter() + const lastTimeline = localStorage.getItem(`${router.query.id}_lastTimeline`) + if (lastTimeline) { + router.push(`/accounts/${router.query.id}/${lastTimeline}`) + } else { + router.push(`/accounts/${router.query.id}/home`) + } + + return <>{router.query.id} +} diff --git a/renderer/pages/index.tsx b/renderer/pages/index.tsx new file mode 100644 index 00000000..5db02c80 --- /dev/null +++ b/renderer/pages/index.tsx @@ -0,0 +1,25 @@ +import Image from 'next/image' +import { useRouter } from 'next/router' +import { useEffect } from 'react' +import Icon from '@/assets/256x256.png' +import { db } from '@/db' + +export default function Index() { + const router = useRouter() + + useEffect(() => { + const f = async () => { + const accounts = await db.accounts.toArray() + if (accounts.length > 0) { + router.push(`/accounts/${accounts[0].id}`) + } + } + f() + }, []) + + return ( +
+ icon +
+ ) +} diff --git a/renderer/postcss.config.js b/renderer/postcss.config.js new file mode 100644 index 00000000..af3ba26c --- /dev/null +++ b/renderer/postcss.config.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + tailwindcss: { + config: './renderer/tailwind.config.js', + }, + autoprefixer: {}, + }, +} diff --git a/renderer/preload.d.ts b/renderer/preload.d.ts new file mode 100644 index 00000000..74dce32f --- /dev/null +++ b/renderer/preload.d.ts @@ -0,0 +1,7 @@ +import { IpcHandler } from '../main/preload' + +declare global { + interface Window { + ipc: IpcHandler + } +} diff --git a/renderer/tailwind.config.js b/renderer/tailwind.config.js new file mode 100644 index 00000000..2ad94aac --- /dev/null +++ b/renderer/tailwind.config.js @@ -0,0 +1,25 @@ +module.exports = { + content: ['./node_modules/flowbite-react/**/*.js', './renderer/pages/**/*.{js,ts,jsx,tsx}', './renderer/components/**/*.{js,ts,jsx,tsx}'], + plugins: [require('flowbite/plugin')], + darkMode: 'class', + theme: { + extend: { + colors: { + // flowbite-svelte + // Refs: https://github.com/themesberg/flowbite-svelte/blob/main/tailwind.config.cjs + primary: { + 50: '#eff6ff', + 100: '#dbeafe', + 200: '#bfdbfe', + 300: '#93c5fd', + 400: '#60a5fa', + 500: '#3b82f6', + 600: '#2563eb', + 700: '#1d4ed8', + 800: '#1e40af', + 900: '#1e3a8a' + } + } + } + } +} diff --git a/renderer/tsconfig.json b/renderer/tsconfig.json new file mode 100644 index 00000000..ddc2c4f2 --- /dev/null +++ b/renderer/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"], + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": [ + "./*" + ] + } + } +} diff --git a/renovate.json b/renovate.json deleted file mode 100644 index a66c83d4..00000000 --- a/renovate.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:base" - ], - "prConcurrentLimit": 20, - "prHourlyLimit": 20, - "packageRules": [ - { - "matchPackageNames": ["better-sqlite3"], - "allowedVersions": "< 8.3.0" - },{ - "matchPackageNames": ["electron"], - "matchUpdateTypes": ["minor", "patch", "pin", "pinDigest"], - "enabled": false - } - ] -} diff --git a/static/images/icon.png b/resources/icons/256x256.png similarity index 100% rename from static/images/icon.png rename to resources/icons/256x256.png diff --git a/build/icons/SampleAppx.150x150.png b/resources/icons/SampleAppx.150x150.png similarity index 100% rename from build/icons/SampleAppx.150x150.png rename to resources/icons/SampleAppx.150x150.png diff --git a/build/icons/SampleAppx.310x150.png b/resources/icons/SampleAppx.310x150.png similarity index 100% rename from build/icons/SampleAppx.310x150.png rename to resources/icons/SampleAppx.310x150.png diff --git a/build/icons/SampleAppx.44x44.png b/resources/icons/SampleAppx.44x44.png similarity index 100% rename from build/icons/SampleAppx.44x44.png rename to resources/icons/SampleAppx.44x44.png diff --git a/build/icons/SampleAppx.50x50.png b/resources/icons/SampleAppx.50x50.png similarity index 100% rename from build/icons/SampleAppx.50x50.png rename to resources/icons/SampleAppx.50x50.png diff --git a/build/icons/icon.icns b/resources/icons/icon.icns similarity index 100% rename from build/icons/icon.icns rename to resources/icons/icon.icns diff --git a/build/icons/icon.ico b/resources/icons/icon.ico similarity index 100% rename from build/icons/icon.ico rename to resources/icons/icon.ico diff --git a/build/icons/icon.iconset/icon_128x128.png b/resources/icons/icon.iconset/icon_128x128.png similarity index 100% rename from build/icons/icon.iconset/icon_128x128.png rename to resources/icons/icon.iconset/icon_128x128.png diff --git a/build/icons/icon.iconset/icon_128x128@2x.png b/resources/icons/icon.iconset/icon_128x128@2x.png similarity index 100% rename from build/icons/icon.iconset/icon_128x128@2x.png rename to resources/icons/icon.iconset/icon_128x128@2x.png diff --git a/build/icons/icon.iconset/icon_16x16.png b/resources/icons/icon.iconset/icon_16x16.png similarity index 100% rename from build/icons/icon.iconset/icon_16x16.png rename to resources/icons/icon.iconset/icon_16x16.png diff --git a/build/icons/icon.iconset/icon_16x16@2x.png b/resources/icons/icon.iconset/icon_16x16@2x.png similarity index 100% rename from build/icons/icon.iconset/icon_16x16@2x.png rename to resources/icons/icon.iconset/icon_16x16@2x.png diff --git a/build/icons/icon.iconset/icon_256x256.png b/resources/icons/icon.iconset/icon_256x256.png similarity index 100% rename from build/icons/icon.iconset/icon_256x256.png rename to resources/icons/icon.iconset/icon_256x256.png diff --git a/build/icons/icon.iconset/icon_256x256@2x.png b/resources/icons/icon.iconset/icon_256x256@2x.png similarity index 100% rename from build/icons/icon.iconset/icon_256x256@2x.png rename to resources/icons/icon.iconset/icon_256x256@2x.png diff --git a/build/icons/icon.iconset/icon_32x32.png b/resources/icons/icon.iconset/icon_32x32.png similarity index 100% rename from build/icons/icon.iconset/icon_32x32.png rename to resources/icons/icon.iconset/icon_32x32.png diff --git a/build/icons/icon.iconset/icon_32x32@2x.png b/resources/icons/icon.iconset/icon_32x32@2x.png similarity index 100% rename from build/icons/icon.iconset/icon_32x32@2x.png rename to resources/icons/icon.iconset/icon_32x32@2x.png diff --git a/build/icons/icon.iconset/icon_512x512.png b/resources/icons/icon.iconset/icon_512x512.png similarity index 100% rename from build/icons/icon.iconset/icon_512x512.png rename to resources/icons/icon.iconset/icon_512x512.png diff --git a/build/icons/icon.iconset/icon_512x512@2x.png b/resources/icons/icon.iconset/icon_512x512@2x.png similarity index 100% rename from build/icons/icon.iconset/icon_512x512@2x.png rename to resources/icons/icon.iconset/icon_512x512@2x.png diff --git a/build/icons/tray_icon.png b/resources/icons/tray_icon.png similarity index 100% rename from build/icons/tray_icon.png rename to resources/icons/tray_icon.png diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index ea0a6bba56810a952cf01b9ce7691cc0964d669a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433383 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%0AQKvsYwMnca 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�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%0Ah?A8x`ge)_c*(SBL%)1)Si%`7 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�yJwr>Ws|&?|Z1fs|l*r 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 Dc0}%z$P>hnv$?)YTPaN2($4ht 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≫Hs&Wx;gR>z+NtJw*fz=`B$kep@gyP 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 diff --git a/scripts/thirdparty.js b/scripts/thirdparty.js deleted file mode 100644 index be42b78a..00000000 --- a/scripts/thirdparty.js +++ /dev/null @@ -1,27 +0,0 @@ -const path = require('path') -const fs = require('fs') - -const npmPath = path.join(__dirname, '../thirdparty.json') -const outPath = path.join(__dirname, '../', 'src', 'config', 'thirdparty.json') - -const npmData = JSON.parse(fs.readFileSync(npmPath)) - -let npm = Object.keys(npmData).map(k => { - let r = { - package_name: k, - license: npmData[k].licenses - } - if (npmData[k].publisher) { - r = Object.assign(r, { - publisher: npmData[k].publisher - }) - } - if (npmData[k].repository) { - r = Object.assign(r, { - repository: npmData[k].repository - }) - } - return r -}) - -fs.writeFileSync(outPath, JSON.stringify(npm)) diff --git a/spec/.eslintrc b/spec/.eslintrc deleted file mode 100644 index 7bc296da..00000000 --- a/spec/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "env": { - "jest": true - } -} \ No newline at end of file diff --git a/spec/config/i18n.spec.ts b/spec/config/i18n.spec.ts deleted file mode 100644 index d8340289..00000000 --- a/spec/config/i18n.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as path from 'path' -import fs from 'fs' -import keys from 'all-object-keys' - -const locales = [ - 'de', - 'fr', - 'gd', - 'it', - 'ja', - 'ko', - 'pl', - 'is', - 'it', - 'zh_cn', - 'zh_tw', - 'cs', - 'es_es', - 'no', - 'pt_pt', - 'ru', - 'si', - 'sv_se', - 'tzm', - 'fa' -] - -describe('i18n', () => { - describe('should not define duplicate keys', () => { - locales.forEach(locale => { - it(`${locale} translation`, () => { - const targetJson = JSON.parse( - fs.readFileSync(path.resolve(__dirname, `../../src/config/locales/${locale}/translation.json`), 'utf8') - ) - const allKeys = keys(targetJson) - const duplicates: Array = allKeys.filter( - (x: string, _: number, self: Array) => self.indexOf(x) !== self.lastIndexOf(x) - ) - expect(duplicates).toEqual([]) - }) - }) - }) -}) diff --git a/spec/main/unit/proxy.spec.ts b/spec/main/unit/proxy.spec.ts deleted file mode 100644 index db179717..00000000 --- a/spec/main/unit/proxy.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import path from 'path' -import ProxyConfiguration from '~/src/main/proxy' -import { ManualProxy, ProxyProtocol } from '~/src/types/proxy' - -const preferencesDBPath = path.resolve(__dirname, '../../preferences.json') -const proxyConfiguration = new ProxyConfiguration(preferencesDBPath) - -jest.mock('electron', () => ({ - app: { - // getVersion is used by electron-log - getVersion: jest.fn(), - // getName is used by electron-json-storage - getName: jest.fn() - } -})) - -describe('Parser', () => { - it('do not use proxy', () => { - proxyConfiguration.setSystemProxy('DIRECT') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).toEqual(false) - }) - - it('HTTP and HTTPS proxy', () => { - proxyConfiguration.setSystemProxy('PROXY hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.http) - expect(manualProxy.host).toEqual('hoge.example.com') - expect(manualProxy.port).toEqual('8080') - }) - - it('SOCKS4 proxy', () => { - proxyConfiguration.setSystemProxy('SOCKS4 hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.socks4) - }) - it('SOCKS4A proxy', () => { - proxyConfiguration.setSystemProxy('SOCKS4A hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.socks4a) - }) - it('SOCKS5 proxy', () => { - proxyConfiguration.setSystemProxy('SOCKS5 hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.socks5) - }) - it('SOCKS5H proxy', () => { - proxyConfiguration.setSystemProxy('SOCKS5H hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.socks5h) - }) - it('SOCKS proxy', () => { - proxyConfiguration.setSystemProxy('SOCKS hoge.example.com:8080') - const proxy = proxyConfiguration.parseSystemProxy() - expect(proxy).not.toBe(false) - const manualProxy = proxy as ManualProxy - expect(manualProxy.protocol).toEqual(ProxyProtocol.socks5) - }) -}) diff --git a/spec/mock/electron.ts b/spec/mock/electron.ts deleted file mode 100644 index 5e3846fb..00000000 --- a/spec/mock/electron.ts +++ /dev/null @@ -1,8 +0,0 @@ -import createIPCMock from 'electron-mock-ipc' -import { IpcRenderer, IpcMain } from 'electron' - -const mocked = createIPCMock() -const ipcMain = mocked.ipcMain as IpcMain -const ipcRenderer = mocked.ipcRenderer as IpcRenderer - -export { ipcMain, ipcRenderer } diff --git a/spec/mock/router.ts b/spec/mock/router.ts deleted file mode 100644 index 23cdcf5a..00000000 --- a/spec/mock/router.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - push: jest.fn() -} diff --git a/spec/preferences.json b/spec/preferences.json deleted file mode 100644 index 0967ef42..00000000 --- a/spec/preferences.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/spec/renderer/integration/store/App.spec.ts b/spec/renderer/integration/store/App.spec.ts deleted file mode 100644 index e63d27cc..00000000 --- a/spec/renderer/integration/store/App.spec.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { createStore, Store } from 'vuex' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import App from '@/store/App' -import DisplayStyle from '~/src/constants/displayStyle' -import { LightTheme, DarkTheme } from '~/src/constants/themeColor' -import Theme from '~/src/constants/theme' -import TimeFormat from '~/src/constants/timeFormat' -import Language from '~/src/constants/language' -import DefaultFonts from '@/utils/fonts' -import { MyWindow } from '~/src/types/global' -import { RootState } from '@/store' -;(window as any as MyWindow).ipcRenderer = ipcRenderer - -const state = () => { - return { - theme: LightTheme, - fontSize: 14, - displayNameStyle: DisplayStyle.DisplayNameAndUsername.value, - notify: { - reply: true, - reblog: true, - favourite: true, - follow: true - }, - timeFormat: TimeFormat.Absolute.value, - language: Language.en.key, - defaultFonts: DefaultFonts, - ignoreCW: false, - ignoreNSFW: false, - hideAllAttachments: false - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: App.actions, - mutations: App.mutations - } -} - -describe('App', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - App: initStore() - } - }) - }) - - describe('loadPreferences', () => { - describe('error', () => { - it('should not change', async () => { - ipcMain.handle('get-preferences', async () => { - throw new Error() - }) - await store.dispatch('App/loadPreferences').catch(err => { - expect(err instanceof Error).toEqual(true) - expect(store.state.App.theme).toEqual(LightTheme) - }) - ipcMain.removeHandler('get-preferences') - }) - }) - describe('success', () => { - it('should be changed', async () => { - ipcMain.handle('get-preferences', () => { - return { - general: { - timeline: { - cw: true, - nsfw: true - } - }, - language: { - language: Language.en.key - }, - notification: { - notify: { - reply: true, - reblog: true, - favourite: true, - follow: true - } - }, - appearance: { - theme: Theme.Dark.key, - fontSize: 13, - displayNameStyle: DisplayStyle.DisplayNameAndUsername.value, - timeFormat: TimeFormat.Absolute.value, - customThemeColor: LightTheme, - font: DefaultFonts[0] - } - } - }) - await store.dispatch('App/loadPreferences') - expect(store.state.App.fontSize).toEqual(13) - expect(store.state.App.theme).toEqual(DarkTheme) - expect(store.state.App.ignoreCW).toEqual(true) - expect(store.state.App.ignoreNSFW).toEqual(true) - ipcMain.removeHandler('get-preferences') - }) - }) - }) -}) diff --git a/spec/renderer/integration/store/GlobalHeader.spec.ts b/spec/renderer/integration/store/GlobalHeader.spec.ts deleted file mode 100644 index a7e64b5b..00000000 --- a/spec/renderer/integration/store/GlobalHeader.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { RootState } from '@/store' -import { createStore, Store } from 'vuex' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import GlobalHeader, { GlobalHeaderState } from '~/src/renderer/store/GlobalHeader' -import { MyWindow } from '~/src/types/global' -;((window as any) as MyWindow).ipcRenderer = ipcRenderer - -const state = (): GlobalHeaderState => { - return { - accounts: [], - changing: false, - hide: false - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: GlobalHeader.actions, - mutations: GlobalHeader.mutations - } -} - -const routerState = { - namespaced: true, - state: { - params: { - id: 'account_id' - } - } -} - -describe('GlobalHeader', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - GlobalHeader: initStore(), - route: routerState - } - }) - }) - - describe('listAccounts', () => { - beforeEach(() => { - ipcMain.handle('list-accounts', () => { - return ['account'] - }) - }) - afterEach(() => { - ipcMain.removeHandler('list-accounts') - }) - it('should be updated', async () => { - await store.dispatch('GlobalHeader/listAccounts') - expect(store.state.GlobalHeader.accounts).toEqual(['account']) - }) - }) - - describe('removeShortcutEvents', () => { - it('should be removed', async () => { - const removed = await store.dispatch('GlobalHeader/removeShortcutEvents') - expect(removed).toEqual(true) - }) - }) - - describe('loadHide', () => { - beforeEach(() => { - ipcMain.handle('get-global-header', () => { - return true - }) - }) - afterEach(() => { - ipcMain.removeHandler('get-global-header') - }) - it('should be changed', async () => { - await store.dispatch('GlobalHeader/loadHide') - expect(store.state.GlobalHeader.hide).toEqual(true) - }) - }) - - describe('switchHide', () => { - beforeEach(() => { - ipcMain.handle('change-global-header', (_, value) => { - return value - }) - }) - afterEach(() => { - ipcMain.removeHandler('change-global-header') - }) - it('should be switched', async () => { - const hide = await store.dispatch('GlobalHeader/switchHide', true) - expect(hide).toEqual(true) - }) - }) -}) diff --git a/spec/renderer/integration/store/Preferences/Appearance.spec.ts b/spec/renderer/integration/store/Preferences/Appearance.spec.ts deleted file mode 100644 index aa0efa15..00000000 --- a/spec/renderer/integration/store/Preferences/Appearance.spec.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { IpcMainInvokeEvent } from 'electron' -import { createStore, Store } from 'vuex' -import Theme from '~/src/constants/theme' -import DisplayStyle from '~/src/constants/displayStyle' -import TimeFormat from '~/src/constants/timeFormat' -import { LightTheme, DarkTheme } from '~/src/constants/themeColor' -import DefaultFonts from '@/utils/fonts' -import Appearance, { AppearanceState } from '@/store/Preferences/Appearance' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import { MyWindow } from '~/src/types/global' -import { RootState } from '@/store' -;(window as any as MyWindow).ipcRenderer = ipcRenderer - -const state = (): AppearanceState => { - return { - appearance: { - theme: Theme.Light.key, - fontSize: 14, - displayNameStyle: DisplayStyle.DisplayNameAndUsername.value, - timeFormat: TimeFormat.Absolute.value, - customThemeColor: LightTheme, - font: DefaultFonts[0], - tootPadding: 8 - }, - fonts: [] - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: Appearance.actions, - mutations: Appearance.mutations - } -} - -const preferencesStore = () => ({ - namespaced: true, - modules: { - Appearance: initStore() - } -}) - -const App = { - namespaced: true, - actions: { - loadPreferences: jest.fn() - } -} - -describe('Preferences/Appearance', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - Preferences: preferencesStore(), - App: App - } - }) - }) - - describe('load', () => { - describe('loadAppearance', () => { - beforeEach(() => { - ipcMain.handle('get-preferences', () => { - return { - appearance: { - theme: Theme.Dark.key, - fontSize: 15 - } - } - }) - }) - afterEach(() => { - ipcMain.removeHandler('get-preferences') - }) - it('should be loaded', async () => { - await store.dispatch('Preferences/Appearance/loadAppearance') - expect(store.state.Preferences.Appearance.appearance.theme).toEqual(Theme.Dark.key) - expect(store.state.Preferences.Appearance.appearance.fontSize).toEqual(15) - }) - }) - describe('loadFonts', () => { - beforeEach(() => { - ipcMain.handle('list-fonts', () => { - return ['my-font'] - }) - }) - afterEach(() => { - ipcMain.removeHandler('list-fonts') - }) - it('should be loaded', async () => { - await store.dispatch('Preferences/Appearance/loadFonts') - expect(store.state.Preferences.Appearance.fonts).toEqual([DefaultFonts[0], 'my-font']) - }) - }) - }) - - describe('update', () => { - beforeEach(() => { - ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => { - return config - }) - }) - afterEach(() => { - ipcMain.removeHandler('update-preferences') - }) - it('updateTheme', async () => { - await store.dispatch('Preferences/Appearance/updateTheme', Theme.Dark.key) - expect(store.state.Preferences.Appearance.appearance.theme).toEqual(Theme.Dark.key) - expect(App.actions.loadPreferences).toBeCalled() - }) - - it('updateFontSize', async () => { - await store.dispatch('Preferences/Appearance/updateFontSize', 15) - expect(store.state.Preferences.Appearance.appearance.fontSize).toEqual(15) - expect(App.actions.loadPreferences).toBeCalled() - }) - - it('updateDisplayNameStyle', async () => { - await store.dispatch('Preferences/Appearance/updateDisplayNameStyle', DisplayStyle.DisplayName.value) - expect(store.state.Preferences.Appearance.appearance.displayNameStyle).toEqual(DisplayStyle.DisplayName.value) - expect(App.actions.loadPreferences).toBeCalled() - }) - - it('updateTimeFormat', async () => { - await store.dispatch('Preferences/Appearance/updateTimeFormat', TimeFormat.Relative.value) - expect(store.state.Preferences.Appearance.appearance.timeFormat).toEqual(TimeFormat.Relative.value) - expect(App.actions.loadPreferences).toBeCalled() - }) - - it('updateCustomThemeColor', async () => { - await store.dispatch('Preferences/Appearance/updateCustomThemeColor', DarkTheme) - expect(store.state.Preferences.Appearance.appearance.customThemeColor).toEqual(DarkTheme) - expect(App.actions.loadPreferences).toBeCalled() - }) - - it('updateFont', async () => { - await store.dispatch('Preferences/Appearance/updateFont', DefaultFonts[1]) - expect(store.state.Preferences.Appearance.appearance.font).toEqual(DefaultFonts[1]) - expect(App.actions.loadPreferences).toBeCalled() - }) - }) -}) diff --git a/spec/renderer/integration/store/Preferences/General.spec.ts b/spec/renderer/integration/store/Preferences/General.spec.ts deleted file mode 100644 index aebee162..00000000 --- a/spec/renderer/integration/store/Preferences/General.spec.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { createStore, Store } from 'vuex' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import General, { GeneralState } from '@/store/Preferences/General' -import { MyWindow } from '~/src/types/global' -import { IpcMainInvokeEvent } from 'electron' -import { RootState } from '@/store' -;(window as any as MyWindow).ipcRenderer = ipcRenderer - -const state = (): GeneralState => { - return { - general: { - sound: { - fav_rb: true, - toot: true - }, - timeline: { - cw: false, - nsfw: false, - hideAllAttachments: false - }, - other: { - launch: false, - hideOnLaunch: false - } - }, - loading: false - } -} -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: General.actions, - mutations: General.mutations - } -} - -const preferencesStore = () => ({ - namespaced: true, - modules: { - General: initStore() - } -}) - -const app = { - namespaced: true, - actions: { - loadPreferences(_) { - return true - } - } -} - -describe('Preferences/General', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - Preferences: preferencesStore(), - App: app - } - }) - }) - - describe('loadGeneral', () => { - beforeEach(() => { - ipcMain.handle('get-preferences', () => { - return { - general: { - sound: { - fav_rb: false, - toot: false - } - } - } - }) - }) - afterEach(() => { - ipcMain.removeHandler('get-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/General/loadGeneral') - expect(store.state.Preferences.General.general.sound.fav_rb).toEqual(false) - expect(store.state.Preferences.General.general.sound.toot).toEqual(false) - expect(store.state.Preferences.General.loading).toEqual(false) - }) - }) - - describe('updateSound', () => { - beforeEach(() => { - ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => { - return config - }) - }) - afterEach(() => { - ipcMain.removeHandler('update-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/General/updateSound', { - fav_rb: false, - toot: false - }) - expect(store.state.Preferences.General.general.sound.fav_rb).toEqual(false) - expect(store.state.Preferences.General.general.sound.toot).toEqual(false) - expect(store.state.Preferences.General.loading).toEqual(false) - }) - }) - - describe('updateTimeline', () => { - beforeEach(() => { - ipcMain.handle('update-preferences', (_: IpcMainInvokeEvent, config: any) => { - return config - }) - }) - afterEach(() => { - ipcMain.removeHandler('update-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/General/updateTimeline', { - cw: true, - nsfw: true, - hideAllAttachments: true - }) - expect(store.state.Preferences.General.general.timeline.cw).toEqual(true) - expect(store.state.Preferences.General.general.timeline.nsfw).toEqual(true) - expect(store.state.Preferences.General.general.timeline.hideAllAttachments).toEqual(true) - expect(store.state.Preferences.General.loading).toEqual(false) - }) - }) -}) diff --git a/spec/renderer/integration/store/Preferences/Language.spec.ts b/spec/renderer/integration/store/Preferences/Language.spec.ts deleted file mode 100644 index 0fb432f9..00000000 --- a/spec/renderer/integration/store/Preferences/Language.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { createStore, Store } from 'vuex' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import Language, { LanguageState } from '@/store/Preferences/Language' -import DefaultLanguage from '~/src/constants/language' -import { MyWindow } from '~/src/types/global' -import { RootState } from '@/store' -;(window as any as MyWindow).ipcRenderer = ipcRenderer - -const state = (): LanguageState => { - return { - language: { - language: DefaultLanguage.en.key, - spellchecker: { - enabled: true, - languages: [] - } - } - } -} - -const initStore = () => { - return { - namespaced: true, - state: state, - actions: Language.actions, - mutations: Language.mutations - } -} - -const preferencesStore = () => ({ - namespaced: true, - modules: { - Language: initStore() - } -}) - -describe('Preferences/Language', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - Preferences: preferencesStore() - } - }) - }) - - describe('loadLanguage', () => { - beforeEach(() => { - ipcMain.handle('get-preferences', () => { - return { - language: { - language: DefaultLanguage.ja.key, - spellchecker: { - enabled: true, - languages: [] - } - } - } - }) - }) - afterEach(() => { - ipcMain.removeHandler('get-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/Language/loadLanguage') - expect(store.state.Preferences.Language.language.language).toEqual(DefaultLanguage.ja.key) - }) - }) - - describe('changeLanguage', () => { - beforeEach(() => { - ipcMain.handle('change-language', (_, key: string) => { - return key - }) - }) - afterEach(() => { - ipcMain.removeHandler('change-language') - }) - it('should be changed', async () => { - await store.dispatch('Preferences/Language/changeLanguage', DefaultLanguage.ja.key) - expect(store.state.Preferences.Language.language.language).toEqual(DefaultLanguage.ja.key) - }) - }) -}) diff --git a/spec/renderer/integration/store/Preferences/Notification.spec.ts b/spec/renderer/integration/store/Preferences/Notification.spec.ts deleted file mode 100644 index cdb52c4d..00000000 --- a/spec/renderer/integration/store/Preferences/Notification.spec.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { createStore, Store } from 'vuex' -import { ipcMain, ipcRenderer } from '~/spec/mock/electron' -import Notification, { NotificationState } from '@/store/Preferences/Notification' -import { MyWindow } from '~/src/types/global' -import { RootState } from '@/store' -;(window as any as MyWindow).ipcRenderer = ipcRenderer - -const state = (): NotificationState => { - return { - notification: { - notify: { - reply: true, - reblog: true, - favourite: true, - follow: true, - follow_request: true, - reaction: true, - status: true, - poll_vote: true, - poll_expired: true - } - } - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: Notification.actions, - mutations: Notification.mutations - } -} - -const preferencesStore = () => ({ - namespaced: true, - modules: { - Notification: initStore() - } -}) - -const App = { - namespaced: true, - actions: { - loadPreferences: jest.fn() - } -} - -describe('Preferences/Notification', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - Preferences: preferencesStore(), - App: App - } - }) - }) - - describe('loadNotification', () => { - beforeEach(() => { - ipcMain.handle('get-preferences', () => { - return { - notification: { - notify: { - reply: false, - reblog: false, - favourite: false, - follow: false, - follow_request: false, - reaction: false, - status: false, - poll_vote: false, - poll_expired: false - } - } - } - }) - afterEach(() => { - ipcMain.removeHandler('get-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/Notification/loadNotification') - expect(store.state.Preferences.Notification.notification).toEqual({ - notify: { - reply: false, - reblog: false, - favourite: false, - follow: false, - follow_request: false, - reaction: false, - status: false, - poll_vote: false, - poll_expired: false - } - }) - }) - }) - }) - - describe('updateNotify', () => { - beforeEach(() => { - ipcMain.handle('update-preferences', (_, conf: object) => { - return conf - }) - }) - afterEach(() => { - ipcMain.removeHandler('update-preferences') - }) - it('should be updated', async () => { - await store.dispatch('Preferences/Notification/updateNotify', { - reply: false, - reblog: false - }) - expect(store.state.Preferences.Notification.notification).toEqual({ - notify: { - reply: false, - reblog: false, - favourite: true, - follow: true, - follow_request: true, - reaction: true, - status: true, - poll_vote: true, - poll_expired: true - } - }) - expect(App.actions.loadPreferences).toBeCalled() - }) - }) -}) diff --git a/spec/renderer/integration/store/TimelineSpace/HeaderMenu.spec.ts b/spec/renderer/integration/store/TimelineSpace/HeaderMenu.spec.ts deleted file mode 100644 index d94bedb1..00000000 --- a/spec/renderer/integration/store/TimelineSpace/HeaderMenu.spec.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { RootState } from '@/store' -import { Response, Entity } from 'megalodon' -import { createStore, Store } from 'vuex' -import HeaderMenu, { HeaderMenuState } from '~/src/renderer/store/TimelineSpace/HeaderMenu' - -const list: Entity.List = { - id: '1', - title: 'example', - replies_policy: null -} - -const mockClient = { - getList: (_listID: string) => { - return new Promise>(resolve => { - const res: Response = { - data: list, - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - } -} - -jest.mock('megalodon', () => ({ - ...jest.requireActual('megalodon'), - default: jest.fn(() => mockClient), - __esModule: true -})) - -const state = (): HeaderMenuState => { - return { - title: 'Home', - reload: false, - loading: false - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: HeaderMenu.actions, - mutations: HeaderMenu.mutations - } -} - -const timelineStore = () => ({ - namespaced: true, - state: { - account: { - accessToken: 'token' - }, - server: { - sns: 'mastodon', - baseURL: 'http://localhost' - } - }, - modules: { - HeaderMenu: initStore() - } -}) - -const appState = { - namespaced: true, - state: { - proxyConfiguration: false - } -} - -describe('HeaderMenu', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - TimelineSpace: timelineStore(), - App: appState - } - }) - }) - - describe('fetchLists', () => { - it('should be updated', async () => { - const l = await store.dispatch('TimelineSpace/HeaderMenu/fetchList', list.id) - expect(l).toEqual(list) - expect(store.state.TimelineSpace.HeaderMenu.title).toEqual(`#${list.title}`) - }) - }) -}) diff --git a/spec/renderer/integration/store/TimelineSpace/Modals/AddListMember.spec.ts b/spec/renderer/integration/store/TimelineSpace/Modals/AddListMember.spec.ts deleted file mode 100644 index ebaf9a81..00000000 --- a/spec/renderer/integration/store/TimelineSpace/Modals/AddListMember.spec.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { Response, Entity } from 'megalodon' -import { createStore, Store } from 'vuex' -import AddListMember, { AddListMemberState } from '@/store/TimelineSpace/Modals/AddListMember' -import { RootState } from '@/store' - -const mockClient = { - searchAccount: () => { - return new Promise>(resolve => { - const res: Response = { - data: [account], - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - }, - addAccountsToList: () => { - return new Promise(resolve => { - const res: Response = { - data: {}, - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - } -} - -jest.mock('megalodon', () => ({ - ...jest.requireActual('megalodon'), - default: jest.fn(() => mockClient), - __esModule: true -})) - -const account: Entity.Account = { - id: '1', - username: 'h3poteto', - acct: 'h3poteto@pleroma.io', - display_name: 'h3poteto', - locked: false, - group: false, - created_at: '2019-03-26T21:30:32', - followers_count: 10, - following_count: 10, - statuses_count: 100, - note: 'engineer', - url: 'https://pleroma.io', - avatar: '', - avatar_static: '', - header: '', - header_static: '', - emojis: [], - moved: null, - fields: [], - bot: false, - noindex: null, - suspended: null, - limited: null -} - -const state = (): AddListMemberState => { - return { - modalOpen: false, - accounts: [], - targetListId: null - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: AddListMember.actions, - mutations: AddListMember.mutations - } -} - -const modalsStore = () => ({ - namespaced: true, - modules: { - AddListMember: initStore() - } -}) - -const timelineStore = () => ({ - namespaced: true, - state: { - account: { - id: 0, - accessToken: 'token' - }, - server: { - sns: 'mastodon' - } - }, - modules: { - Modals: modalsStore() - } -}) - -const appState = { - namespaced: true, - state: { - proxyConfiguration: false - } -} - -describe('AddListMember', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - AddListMember: initStore(), - TimelineSpace: timelineStore(), - App: appState - } - }) - }) - - describe('changeModal', () => { - it('should change modal', () => { - store.dispatch('TimelineSpace/Modals/AddListMember/changeModal', true) - expect(store.state.TimelineSpace.Modals.AddListMember.modalOpen).toEqual(true) - }) - }) - - describe('search', () => { - it('should be searched', async () => { - await store.dispatch('TimelineSpace/Modals/AddListMember/search', 'akira') - expect(store.state.TimelineSpace.Modals.AddListMember.accounts).toEqual([account]) - }) - }) - - describe('add', () => { - it('should be added a member to the list', async () => { - const result = await store.dispatch('TimelineSpace/Modals/AddListMember/add', 'akira') - expect(result).toEqual({}) - }) - }) -}) diff --git a/spec/renderer/integration/store/TimelineSpace/Modals/ImageViewer.spec.ts b/spec/renderer/integration/store/TimelineSpace/Modals/ImageViewer.spec.ts deleted file mode 100644 index c15dfe8b..00000000 --- a/spec/renderer/integration/store/TimelineSpace/Modals/ImageViewer.spec.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { RootState } from '@/store' -import { createStore, Store } from 'vuex' -import ImageViewer, { ImageViewerState } from '~/src/renderer/store/TimelineSpace/Modals/ImageViewer' - -const state = (): ImageViewerState => { - return { - modalOpen: false, - currentIndex: -1, - mediaList: [], - loading: false - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: ImageViewer.actions, - mutations: ImageViewer.mutations, - getters: ImageViewer.getters - } -} - -const modalsStore = () => ({ - namespaced: true, - modules: { - ImageViewer: initStore() - } -}) - -const timelineStore = () => ({ - namespaced: true, - modules: { - Modals: modalsStore() - } -}) - -describe('ImageViewer', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - TimelineSpace: timelineStore() - } - }) - }) - - // Actions - describe('openModal', () => { - it('should be changed', () => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 1, - mediaList: ['media1', 'media2'] - }) - expect(store.state.TimelineSpace.Modals.ImageViewer.modalOpen).toEqual(true) - expect(store.state.TimelineSpace.Modals.ImageViewer.currentIndex).toEqual(1) - expect(store.state.TimelineSpace.Modals.ImageViewer.mediaList).toEqual(['media1', 'media2']) - expect(store.state.TimelineSpace.Modals.ImageViewer.loading).toEqual(true) - }) - }) - - describe('closeModal', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 1, - mediaList: ['media1', 'media2'] - }) - }) - it('should be changed', () => { - store.dispatch('TimelineSpace/Modals/ImageViewer/closeModal') - expect(store.state.TimelineSpace.Modals.ImageViewer.modalOpen).toEqual(false) - expect(store.state.TimelineSpace.Modals.ImageViewer.currentIndex).toEqual(-1) - expect(store.state.TimelineSpace.Modals.ImageViewer.mediaList).toEqual([]) - expect(store.state.TimelineSpace.Modals.ImageViewer.loading).toEqual(false) - }) - }) - - describe('incrementIndex', () => { - it('should be changed', () => { - store.dispatch('TimelineSpace/Modals/ImageViewer/incrementIndex') - expect(store.state.TimelineSpace.Modals.ImageViewer.currentIndex).toEqual(0) - expect(store.state.TimelineSpace.Modals.ImageViewer.loading).toEqual(true) - }) - }) - - describe('decrementIndex', () => { - it('should be changed', () => { - store.dispatch('TimelineSpace/Modals/ImageViewer/decrementIndex') - expect(store.state.TimelineSpace.Modals.ImageViewer.currentIndex).toEqual(-2) - expect(store.state.TimelineSpace.Modals.ImageViewer.loading).toEqual(true) - }) - }) - - // Getters - describe('imageURL', () => { - describe('currentIndex exists', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 0, - mediaList: [ - { - url: 'http://joinmastodon.org' - }, - { - url: 'https://docs-develop.pleroma.social' - } - ] - }) - }) - it('should return url', () => { - const url = store.getters['TimelineSpace/Modals/ImageViewer/imageURL'] - expect(url).toEqual('http://joinmastodon.org') - }) - }) - }) - - describe('imageType', () => { - describe('currentIndex exists', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 0, - mediaList: [ - { - type: 'image/png' - }, - { - type: 'image/jpg' - } - ] - }) - }) - it('should return type', () => { - const type = store.getters['TimelineSpace/Modals/ImageViewer/imageType'] - expect(type).toEqual('image/png') - }) - }) - }) - - describe('showLeft', () => { - describe('currentIndex > 0', () => { - describe('mediaList > 1', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 1, - mediaList: [ - { - type: 'image/png' - }, - { - type: 'image/jpg' - } - ] - }) - }) - it('should return true', () => { - const left = store.getters['TimelineSpace/Modals/ImageViewer/showLeft'] - expect(left).toEqual(true) - }) - }) - describe('mediaList < 1', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 0, - mediaList: [ - { - type: 'image/png' - } - ] - }) - }) - it('should not return true', () => { - const left = store.getters['TimelineSpace/Modals/ImageViewer/showLeft'] - expect(left).toEqual(false) - }) - }) - }) - }) - - describe('showRight', () => { - describe('current index is lower than media list length', () => { - describe('media list length > 1', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 0, - mediaList: [ - { - type: 'image/png' - }, - { - type: 'image/jpeg' - } - ] - }) - }) - it('should return true', () => { - const right = store.getters['TimelineSpace/Modals/ImageViewer/showRight'] - expect(right).toEqual(true) - }) - }) - describe('media list length <= 1', () => { - beforeEach(() => { - store.dispatch('TimelineSpace/Modals/ImageViewer/openModal', { - currentIndex: 0, - mediaList: [ - { - type: 'image/png' - } - ] - }) - }) - it('should not return true', () => { - const right = store.getters['TimelineSpace/Modals/ImageViewer/showRight'] - expect(right).toEqual(false) - }) - }) - }) - }) -}) diff --git a/spec/renderer/integration/store/TimelineSpace/Modals/Jump.spec.ts b/spec/renderer/integration/store/TimelineSpace/Modals/Jump.spec.ts deleted file mode 100644 index 6f4aa9ae..00000000 --- a/spec/renderer/integration/store/TimelineSpace/Modals/Jump.spec.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { createStore, Store } from 'vuex' -import i18n from '~/src/config/i18n' -import router from '@/router' -import Jump, { JumpState, Channel } from '~/src/renderer/store/TimelineSpace/Modals/Jump' -import { RootState } from '@/store' - -const state = (): JumpState => { - return { - modalOpen: true, - channel: '', - defaultChannelList: [ - { - name: i18n.t('side_menu.home'), - path: 'home' - }, - { - name: i18n.t('side_menu.notification'), - path: 'notifications' - }, - { - name: i18n.t('side_menu.favourite'), - path: 'favourites' - }, - { - name: i18n.t('side_menu.local'), - path: 'local' - }, - { - name: i18n.t('side_menu.public'), - path: 'public' - }, - { - name: i18n.t('side_menu.hashtag'), - path: 'hashtag' - }, - { - name: i18n.t('side_menu.search'), - path: 'search' - }, - { - name: i18n.t('side_menu.direct'), - path: 'direct-messages' - } - ], - selectedChannel: { - name: i18n.t('side_menu.home'), - path: 'home' - } - } -} -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: Jump.actions, - mutations: Jump.mutations - } -} - -const modalsStore = () => ({ - namespaced: true, - modules: { - Jump: initStore() - } -}) - -const timelineStore = () => ({ - namespaced: true, - state: { - account: { - id: 0 - } - }, - modules: { - Modals: modalsStore() - } -}) - -describe('Jump', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - TimelineSpace: timelineStore() - } - }) - }) - - describe('jumpCurrentSelected', () => { - it('should be changed', () => { - store.dispatch('TimelineSpace/Modals/Jump/jumpCurrentSelected') - expect(store.state.TimelineSpace.Modals.Jump.modalOpen).toEqual(false) - expect(router.push).toHaveBeenCalledWith({ path: '/0/home' }) - }) - }) - - describe('jump', () => { - it('should be changed', () => { - const channel: Channel = { - name: 'public', - path: 'public' - } - store.dispatch('TimelineSpace/Modals/Jump/jump', channel) - expect(store.state.TimelineSpace.Modals.Jump.modalOpen).toEqual(false) - expect(router.push).toHaveBeenCalledWith({ path: '/0/public' }) - }) - }) -}) diff --git a/spec/renderer/integration/store/TimelineSpace/Modals/ListMembership.spec.ts b/spec/renderer/integration/store/TimelineSpace/Modals/ListMembership.spec.ts deleted file mode 100644 index 43477346..00000000 --- a/spec/renderer/integration/store/TimelineSpace/Modals/ListMembership.spec.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { Response, Entity } from 'megalodon' -import { createStore, Store } from 'vuex' -import ListMembership, { ListMembershipState } from '@/store/TimelineSpace/Modals/ListMembership' -import { RootState } from '@/store' - -const mockClient = { - getAccountLists: () => { - return new Promise>(resolve => { - const res: Response = { - data: [list1, list2], - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - }, - getLists: () => { - return new Promise>(resolve => { - const res: Response = { - data: [list1, list2], - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - }, - deleteAccountsFromList: (id: string, account_ids: Array) => { - if (id === list3.id && account_ids[0]) { - return new Promise(resolve => { - const res: Response = { - data: {}, - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - } else { - return Promise.reject(new Error('list id or account id is not match')) - } - }, - addAccountsToList: (id: string, account_ids: Array) => { - if (id === list1.id && account_ids[0] === account.id) { - return new Promise(resolve => { - const res: Response = { - data: {}, - status: 200, - statusText: 'OK', - headers: {} - } - resolve(res) - }) - } else { - return Promise.reject(new Error('list id or account id is not match')) - } - } -} - -jest.mock('megalodon', () => ({ - ...jest.requireActual('megalodon'), - default: jest.fn(() => mockClient), - __esModule: true -})) - -const account: Entity.Account = { - id: '1', - username: 'h3poteto', - acct: 'h3poteto@pleroma.io', - display_name: 'h3poteto', - locked: false, - group: false, - created_at: '2019-03-26T21:30:32', - followers_count: 10, - following_count: 10, - statuses_count: 100, - note: 'engineer', - url: 'https://pleroma.io', - avatar: '', - avatar_static: '', - header: '', - header_static: '', - emojis: [], - moved: null, - fields: [], - bot: false, - noindex: null, - suspended: null, - limited: null -} - -const list1: Entity.List = { - id: '1', - title: 'list1', - replies_policy: null -} - -const list2: Entity.List = { - id: '2', - title: 'list2', - replies_policy: null -} - -const list3: Entity.List = { - id: '3', - title: 'list3', - replies_policy: null -} - -let state = (): ListMembershipState => { - return { - modalOpen: false, - account: null, - lists: [], - belongToLists: [] - } -} - -const initStore = () => { - return { - namespaced: true, - state: state(), - actions: ListMembership.actions, - mutations: ListMembership.mutations - } -} - -const modalsStore = () => ({ - namespaced: true, - modules: { - ListMembership: initStore() - } -}) - -const timelineStore = () => ({ - namespaced: true, - state: { - account: { - id: 0, - accessToken: 'token' - }, - server: { - sns: 'mastodon', - baseURL: 'http://localhost' - } - }, - modules: { - Modals: modalsStore() - } -}) - -const appState = { - namespaced: true, - state: { - proxyConfiguration: false - } -} - -describe('ListMembership', () => { - let store: Store - - beforeEach(() => { - store = createStore({ - modules: { - TimelineSpace: timelineStore(), - App: appState - } - }) - }) - - describe('fetchListMembership', () => { - it('should get', async () => { - await store.dispatch('TimelineSpace/Modals/ListMembership/fetchListMembership', { - id: '5' - }) - expect(store.state.TimelineSpace.Modals.ListMembership.belongToLists).toEqual([list1, list2]) - }) - }) - - describe('fetchLists', () => { - it('should be changed', async () => { - await store.dispatch('TimelineSpace/Modals/ListMembership/fetchLists') - expect(store.state.TimelineSpace.Modals.ListMembership.lists).toEqual([list1, list2]) - }) - }) - - describe('changeBelongToLists', () => { - beforeAll(() => { - state = () => { - return { - modalOpen: false, - account: account, - lists: [], - belongToLists: [list2, list3] - } - } - }) - it('should be changed', async () => { - await store.dispatch('TimelineSpace/Modals/ListMembership/changeBelongToLists', [list1.id, list2.id]) - expect(store.state.TimelineSpace.Modals.ListMembership.belongToLists).toEqual([list1, list2]) - }) - }) -}) diff --git a/spec/renderer/unit/store/TimelineSpace.spec.ts b/spec/renderer/unit/store/TimelineSpace.spec.ts deleted file mode 100644 index f73ce71f..00000000 --- a/spec/renderer/unit/store/TimelineSpace.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import TimelineSpace, { TimelineSpaceState, MUTATION_TYPES } from '~/src/renderer/store/TimelineSpace' -import { DefaultSetting } from '~/src/constants/initializer/setting' - -describe('TimelineSpace', () => { - describe('mutations', () => { - let state: TimelineSpaceState - beforeEach(() => { - state = { - account: null, - server: null, - loading: false, - emojis: [], - tootMax: 500, - setting: DefaultSetting, - filters: [] - } - }) - - describe('updateTootMax', () => { - describe('value is null', () => { - it('should be updated with 500', () => { - TimelineSpace.mutations![MUTATION_TYPES.UPDATE_TOOT_MAX](state, null) - expect(state.tootMax).toEqual(500) - }) - }) - describe('value is not null', () => { - it('should be updated', () => { - TimelineSpace.mutations![MUTATION_TYPES.UPDATE_TOOT_MAX](state, 1200) - expect(state.tootMax).toEqual(1200) - }) - }) - }) - }) -}) diff --git a/spec/renderer/unit/store/TimelineSpace/HeaderMenu.spec.ts b/spec/renderer/unit/store/TimelineSpace/HeaderMenu.spec.ts deleted file mode 100644 index caed8457..00000000 --- a/spec/renderer/unit/store/TimelineSpace/HeaderMenu.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import HeaderMenu, { HeaderMenuState, MUTATION_TYPES } from '@/store/TimelineSpace/HeaderMenu' - -describe('TimelineSpace/HeaderMenu', () => { - describe('mutations', () => { - let state: HeaderMenuState - beforeEach(() => { - state = { - title: 'Home', - reload: false, - loading: false - } - }) - describe('changeReload', () => { - it('should be changed', () => { - HeaderMenu.mutations![MUTATION_TYPES.CHANGE_RELOAD](state, true) - expect(state.reload).toEqual(true) - }) - }) - }) -}) diff --git a/spec/renderer/unit/utils/emojify.spec.ts b/spec/renderer/unit/utils/emojify.spec.ts deleted file mode 100644 index 96da3591..00000000 --- a/spec/renderer/unit/utils/emojify.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -import emojify from '@/utils/emojify' - -describe('emojify', () => { - const emoji = [ - { - shortcode: 'python', - static_url: 'https://example.com/python', - url: 'https://example.com/python', - visible_in_picker: true, - category: '' - }, - { - shortcode: 'nodejs', - static_url: 'https://example.com/nodejs', - url: 'https://example.com/nodejs', - visible_in_picker: true, - category: '' - }, - { - shortcode: 'slack', - static_url: 'https://example.com/slack', - url: 'https://example.com/slack', - visible_in_picker: true, - category: '' - } - ] - describe('Does not contain shortcode', () => { - const str = 'I have a pen.' - it('should not change', () => { - const result = emojify(str, emoji) - expect(result).toEqual(str) - }) - }) - describe('Contain a shortcode', () => { - const str = 'I like :python:' - it('should replace', () => { - const result = emojify(str, emoji) - expect(result).toEqual( - 'I like python' - ) - }) - }) - describe('Contain some shortcodes', () => { - const str = 'I like :python: , :nodejs: and :slack:' - it('should replace', () => { - const result = emojify(str, emoji) - expect(result).toEqual( - 'I like python , nodejs and slack' - ) - }) - }) - describe('Contain same shortcodes', () => { - const str = 'I like :python: , I love :python:' - it('should replace', () => { - const result = emojify(str, emoji) - expect(result).toEqual( - 'I like python , I love python' - ) - }) - }) -}) diff --git a/spec/renderer/unit/utils/filter.spec.ts b/spec/renderer/unit/utils/filter.spec.ts deleted file mode 100644 index defdc326..00000000 --- a/spec/renderer/unit/utils/filter.spec.ts +++ /dev/null @@ -1,106 +0,0 @@ -import filtered from '@/utils/filter' -import { Entity } from 'megalodon' - -describe('filter', () => { - describe('whole word is enabled', () => { - describe('Only asci', () => { - const filters = [ - { - id: '1', - phrase: 'Fedi', - context: ['home'], - expires_at: null, - irreversible: false, - whole_word: true - } as Entity.Filter - ] - it('should not be matched', () => { - const status = - 'Pleroma is social networking software compatible with other Fediverse software such as Mastodon, Misskey, Pixelfed and many others.' - const res = filtered(status, filters) - expect(res).toBeFalsy() - }) - it('should be matched', () => { - const status = - 'Pleroma is social networking software compatible with other Fedi software such as Mastodon, Misskey, Pixelfed and many others.' - const res = filtered(status, filters) - expect(res).toBeTruthy() - }) - }) - describe('With Japanese', () => { - const filters = [ - { - id: '1', - phrase: 'ミニブログ', - context: ['home'], - expires_at: null, - irreversible: false, - whole_word: true - } as Entity.Filter - ] - it('should be matched', () => { - const status = - 'マストドン (Mastodon) はミニブログサービスを提供するためのフリーソフトウェア、またはこれが提供する連合型のソーシャルネットワークサービスである' - const res = filtered(status, filters) - expect(res).toBeTruthy() - }) - it('should not be matched', () => { - const status = - '「脱中央集権型」 (decentralized) のマストドンのサーバーはだれでも自由に運用する事が可能であり、利用者は通常このサーバーの一つを選んで所属するが、異なるサーバーに属する利用者間のコミュニケーションも容易である' - const res = filtered(status, filters) - expect(res).toBeFalsy() - }) - }) - }) - - describe('whole word is disabled', () => { - describe('Only asci', () => { - const filters = [ - { - id: '1', - phrase: 'Fedi', - context: ['home'], - expires_at: null, - irreversible: false, - whole_word: false - } as Entity.Filter - ] - it('should be matched', () => { - const status = - 'Pleroma is social networking software compatible with other Fediverse software such as Mastodon, Misskey, Pixelfed and many others.' - const res = filtered(status, filters) - expect(res).toBeTruthy() - }) - it('should be matched', () => { - const status = - 'Pleroma is social networking software compatible with other Fedi software such as Mastodon, Misskey, Pixelfed and many others.' - const res = filtered(status, filters) - expect(res).toBeTruthy() - }) - }) - describe('With Japanese', () => { - const filters = [ - { - id: '1', - phrase: 'ミニブログ', - context: ['home'], - expires_at: null, - irreversible: false, - whole_word: true - } as Entity.Filter - ] - it('should be matched', () => { - const status = - 'マストドン (Mastodon) はミニブログサービスを提供するためのフリーソフトウェア、またはこれが提供する連合型のソーシャルネットワークサービスである' - const res = filtered(status, filters) - expect(res).toBeTruthy() - }) - it('should not be matched', () => { - const status = - '「脱中央集権型」 (decentralized) のマストドンのサーバーはだれでも自由に運用する事が可能であり、利用者は通常このサーバーの一つを選んで所属するが、異なるサーバーに属する利用者間のコミュニケーションも容易である' - const res = filtered(status, filters) - expect(res).toBeFalsy() - }) - }) - }) -}) diff --git a/spec/renderer/unit/utils/suggestText.spec.ts b/spec/renderer/unit/utils/suggestText.spec.ts deleted file mode 100644 index 0918c174..00000000 --- a/spec/renderer/unit/utils/suggestText.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import suggestText from '@/utils/suggestText' - -describe('account', () => { - describe('Only account name', () => { - const str = '@h3pote' - it('should match', () => { - const [start, word] = suggestText(str, 7) - expect(str).toEqual(word) - expect(start).toEqual(1) - }) - }) - describe('Beginning of the sentence', () => { - const str = '@h3pote toot body' - it('should match', () => { - const [start, word] = suggestText(str, 7) - expect(word).toEqual('@h3pote') - expect(start).toEqual(1) - }) - }) - describe('Halfway of the sentence', () => { - const str = 'toot body @h3pote toot' - it('should match', () => { - const [start, word] = suggestText(str, 17) - expect(word).toEqual('@h3pote') - expect(start).toEqual(11) - }) - }) - describe('End of the sentence', () => { - const str = 'toot body @h3pote' - it('should match', () => { - const [start, word] = suggestText(str, 17) - expect(word).toEqual('@h3pote') - expect(start).toEqual(11) - }) - }) - describe('No space', () => { - const str = 'tootbody@h3pote' - it('should not match', () => { - const [start, word] = suggestText(str, 15) - expect(word).toEqual(null) - expect(start).toEqual(null) - }) - }) -}) diff --git a/spec/renderer/unit/utils/tootParser.spec.ts b/spec/renderer/unit/utils/tootParser.spec.ts deleted file mode 100644 index 5e6e49ee..00000000 --- a/spec/renderer/unit/utils/tootParser.spec.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { JSDOM } from 'jsdom' -import { findLink, findTag, findAccount } from '@/utils/tootParser' - -describe('findLink', () => { - describe('Pleroma', () => { - const doc = new JSDOM(` -
-

-I released Whalebird version 2.4.1. In version 2.4.0, Whalebird supports streaming update of Pleroma. But it contains a bug, so it is resolved in version 2.4.1.
https://github.com/h3poteto/whalebird-desktop/releases/tag/2.4.1
#Whalebird -

-
- -`).window.document - - const target = doc.getElementById('link') - it('should find', () => { - const res = findLink(target) - expect(res).toEqual('https://github.com/h3poteto/whalebird-desktop/releases/tag/2.4.1') - }) - }) -}) - -describe('findTag', () => { - describe('Pleroma', () => { - const doc = new JSDOM(` -
-

-I released Whalebird version 2.4.1. In version 2.4.0, Whalebird supports streaming update of Pleroma. But it contains a bug, so it is resolved in version 2.4.1.
https://github.com/h3poteto/whalebird-desktop/releases/tag/2.4.1
#Whalebird -

-
- -`).window.document - const target = doc.getElementById('tag') - it('should find', () => { - expect(target).not.toBeNull() - const res = findTag(target!) - expect(res).toEqual('whalebird') - }) - }) - - describe('Mastodon', () => { - const doc = new JSDOM(` -
-

-I released Whalebird version 2.4.1. In version 2.4.0, Whalebird supports streaming update of Pleroma. But it contains a bug, so it is resolved in version 2.4.1.
https://github.com/h3poteto/whalebird-desktop/releases/tag/2.4.1
#Whalebird -

-
- -`).window.document - const target = doc.getElementById('tag') - it('should find', () => { - expect(target).not.toBeNull() - const res = findTag(target!) - expect(res).toEqual('whalebird') - }) - }) -}) - -describe('findAccount', () => { - describe('in Pleroma', () => { - describe('from Mastodon', () => { - const doc = new JSDOM(` -
-

@h3_poteto hogehoge

-
- -`).window.document - const target = doc.getElementById('user') - it('should find', () => { - expect(target).not.toBeNull() - const res = findAccount(target!) - expect(res).not.toBeNull() - expect(res!.username).toEqual('@h3_poteto') - expect(res!.acct).toEqual('@h3_poteto@social.mikutter.hachune.net') - }) - }) - - describe('from Pleroma', () => { - const doc = new JSDOM(` -
-

@h3_poteto hogehoge

-
- -`).window.document - const target = doc.getElementById('user') - it('should find', () => { - expect(target).not.toBeNull() - const res = findAccount(target!) - expect(res).not.toBeNull() - expect(res!.username).toEqual('@h3poteto') - expect(res!.acct).toEqual('@h3poteto@pleroma.io') - }) - }) - - describe('toot link in Mastodon', () => { - const doc = new JSDOM(` - - -`).window.document - const target = doc.getElementById('status') - it('should not find', () => { - expect(target).not.toBeNull() - const res = findAccount(target!) - expect(res).toBeNull() - }) - }) - - describe('toot link in Pleroma', () => { - const doc = new JSDOM(` - - -`).window.document - const target = doc.getElementById('status') - it('should not find', () => { - expect(target).not.toBeNull() - const res = findAccount(target!) - expect(res).toBeNull() - }) - }) - }) -}) diff --git a/spec/renderer/unit/utils/validator.spec.ts b/spec/renderer/unit/utils/validator.spec.ts deleted file mode 100644 index b01214f0..00000000 --- a/spec/renderer/unit/utils/validator.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { domainFormat } from '@/utils/validator' - -describe('validator', () => { - describe('domainFormat', () => { - describe('single character domain name', () => { - const domain = 'c.im' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string contains protocol', () => { - const domain = 'https://mastodon.social' - it('should not match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(-1) - }) - }) - describe('string contains account name', () => { - const domain = 'h3_poteto@mastodon.social' - it('should not match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(-1) - }) - }) - describe('string is gTLD domain', () => { - const domain = 'mastodon.social' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string is subdomain', () => { - const domain = 'music.mastodon.social' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string is subdomain', () => { - const domain = 'social.tchncs.de' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string is jp domain', () => { - const domain = 'mstdn.co.jp' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string contains hyphen', () => { - const domain = 'music-mastodon.social' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - describe('string is short domain', () => { - const domain = 'id.cc' - it('should match', () => { - const res = domain.search(domainFormat) - expect(res).toEqual(0) - }) - }) - }) -}) diff --git a/spec/setupJest.ts b/spec/setupJest.ts deleted file mode 100644 index 53aeb4ed..00000000 --- a/spec/setupJest.ts +++ /dev/null @@ -1,10 +0,0 @@ -// This code is to resolve errors on tootParser.spec. -// TextEncoder and TextDecoder are used in jsdom, but these object is defined in Browser js. -import { TextEncoder, TextDecoder } from 'util' -if (typeof global.TextEncoder === 'undefined') { - global.TextEncoder = TextEncoder -} - -if (typeof global.TextDecoder === 'undefined') { - ;(global.TextDecoder as any) = TextDecoder -} diff --git a/src/config/i18n.ts b/src/config/i18n.ts deleted file mode 100644 index c2b33301..00000000 --- a/src/config/i18n.ts +++ /dev/null @@ -1,106 +0,0 @@ -import i18next, { InitOptions } from 'i18next' -import cs from '~/src/config/locales/cs/translation.json' -import de from '~/src/config/locales/de/translation.json' -import en from '~/src/config/locales/en/translation.json' -import eu from '~/src/config/locales/eu/translation.json' -import es_es from '~/src/config/locales/es_es/translation.json' -import fa from '~/src/config/locales/fa/translation.json' -import fr from '~/src/config/locales/fr/translation.json' -import gd from '~/src/config/locales/gd/translation.json' -import id from '~/src/config/locales/id/translation.json' -import hu from '~/src/config/locales/hu/translation.json' -import it from '~/src/config/locales/it/translation.json' -import is from '~/src/config/locales/is/translation.json' -import ja from '~/src/config/locales/ja/translation.json' -import ko from '~/src/config/locales/ko/translation.json' -import no from '~/src/config/locales/no/translation.json' -import pl from '~/src/config/locales/pl/translation.json' -import pt_pt from '~/src/config/locales/pt_pt/translation.json' -import ru from '~/src/config/locales/ru/translation.json' -import sv_se from '~/src/config/locales/sv_se/translation.json' -import si from '~/src/config/locales/si/translation.json' -import tzm from '~/src/config/locales/tzm/translation.json' -import zh_cn from '~/src/config/locales/zh_cn/translation.json' -import zh_tw from '~/src/config/locales/zh_tw/translation.json' - -const options: InitOptions = { - initImmediate: false, - lng: 'en', - fallbackLng: 'en', - saveMissing: true, - resources: { - cs: { - translation: cs - }, - de: { - translation: de - }, - en: { - translation: en - }, - eu: { - translation: eu - }, - es_es: { - translation: es_es - }, - fa: { - translation: fa - }, - fr: { - translation: fr - }, - gd: { - translation: gd - }, - hu: { - translation: hu - }, - id: { - translation: id - }, - it: { - translation: it - }, - is: { - translation: is - }, - ja: { - translation: ja - }, - ko: { - translation: ko - }, - no: { - translation: no - }, - pl: { - translation: pl - }, - pt_pt: { - translation: pt_pt - }, - ru: { - translation: ru - }, - si: { - translation: si - }, - sv_se: { - translation: sv_se - }, - tzm: { - translation: tzm - }, - zh_cn: { - translation: zh_cn - }, - zh_tw: { - translation: zh_tw - } - } -} - -i18next.init(options) - -export default i18next diff --git a/src/config/locales/cs/translation.json b/src/config/locales/cs/translation.json deleted file mode 100644 index 143cc8ba..00000000 --- a/src/config/locales/cs/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "About Whalebird", - "preferences": "Preferences", - "shortcuts": "Keyboard shortcuts", - "services": "Services", - "hide": "Hide Whalebird", - "hide_others": "Hide others", - "show_all": "Show all", - "open": "Open window", - "quit": "Ukončit" - }, - "edit": { - "name": "Upravit", - "undo": "Vrátit zpět", - "redo": "Vykonat znovu", - "cut": "Vyjmout", - "copy": "Kopírovat", - "paste": "Vložit", - "select_all": "Vybrat vše" - }, - "view": { - "name": "Zobrazit", - "toggle_full_screen": "Toggle full screen" - }, - "window": { - "always_show_menu_bar": "Always show menu bar", - "name": "Okno", - "close": "Zavřít okno", - "open": "Otevřít okno", - "minimize": "Minimalizovat", - "jump_to": "Jump to" - }, - "help": { - "name": "Help", - "thirdparty": "Thirdparty licenses" - } - }, - "global_header": { - "add_new_account": "Add new account" - }, - "side_menu": { - "profile": "Profil", - "show_profile": "Zobrazit profil", - "edit_profile": "Upravit profil", - "settings": "Account settings", - "collapse": "Sbalit", - "expand": "Rozbalit", - "home": "Domů", - "notification": "Notifications", - "direct": "Soukromé zprávy", - "follow_requests": "Follow requests", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "local": "Místní časová osa", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Vyhledat", - "lists": "Seznamy" - }, - "header_menu": { - "home": "Domů", - "notification": "Notifications", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "follow_requests": "Follow requests", - "direct_messages": "Direct messages", - "local": "Local timeline", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Search", - "lists": "Lists", - "members": "Members", - "reload": "Reload" - }, - "settings": { - "title": "Settings", - "general": { - "title": "General", - "toot": { - "title": "Posts", - "visibility": { - "description": "Default post visibility", - "notice": "This setting applies only to new posts; replies will follow the visibility settings of the parent post.", - "public": "Public", - "unlisted": "Unlisted", - "private": "Private", - "direct": "Direct" - }, - "sensitive": { - "description": "Mark media as sensitive by default" - } - } - }, - "timeline": { - "title": "Timeline", - "use_marker": { - "title": "Load the timeline from the last reading position", - "home": "Home", - "notifications": "Notifications" - } - }, - "filters": { - "title": "Filters", - "form": { - "phrase": "Keyword or phrase", - "expire": "Expire after", - "context": "Filter contexts", - "irreversible": "Drop instead of hide", - "whole_word": "Whole word", - "submit": "Submit", - "cancel": "Cancel" - }, - "expires": { - "never": "Nikdy", - "30_minutes": "30 minut", - "1_hour": "1 hodina", - "6_hours": "6 hodin", - "12_hours": "12 hodin", - "1_day": "1 den", - "1_week": "1 týden" - }, - "new": { - "title": "Nový" - }, - "edit": { - "title": "Upravit" - }, - "delete": { - "title": "Vymazat", - "confirm": "Are you sure you want to delete this filter?", - "confirm_ok": "Vymazat", - "confirm_cancel": "Zrušit" - } - } - }, - "preferences": { - "title": "Předvolby", - "general": { - "title": "Všeobecné", - "sounds": { - "title": "Zvuky", - "description": "Play sounds when", - "fav_rb": "You favourite or boost a post", - "toot": "You make a post" - }, - "timeline": { - "title": "Časová osa", - "description": "Customize how your timelines are displayed", - "cw": "Always expand posts tagged with content warnings.", - "nsfw": "Always show media.", - "hideAllAttachments": "Always hide media." - }, - "other": { - "title": "Ostatní možnosti", - "launch": "Launch Whalebird on startup", - "hideOnLaunch": "Hide the Whalebird window on launch" - }, - "reset": { - "button": "Obnovit výchozí nastavení" - } - }, - "appearance": { - "title": "Vzhled", - "theme_color": "Colour themes", - "theme": { - "system": "Systémový", - "light": "Světlý", - "dark": "Tmavý", - "solarized_light": "SolarizedLight", - "solarized_dark": "SolarizedDark", - "kimbie_dark": "KimbieDark", - "custom": "Custom" - }, - "custom_theme": { - "background_color": "Base background", - "selected_background_color": "Focused background", - "global_header_color": "Account menu", - "side_menu_color": "Side menu", - "primary_color": "Primary font", - "regular_color": "Regular font", - "secondary_color": "Secondary font", - "border_color": "Okraj", - "header_menu_color": "Záhlavní menu", - "wrapper_mask_color": "Dialog wrapper" - }, - "font_size": "Velikost písma", - "font_family": "Font family", - "toot_padding": "Padding around posts", - "display_style": { - "title": "Username display style", - "display_name_and_username": "Display name and username", - "display_name": "Display name", - "username": "Username" - }, - "time_format": { - "title": "Time format", - "absolute": "Absolute", - "relative": "Relative" - } - }, - "notification": { - "title": "Notifications", - "enable": { - "description": "Notify me when I receive...", - "reply": "Replies", - "reblog": "Boosts", - "favourite": "Favourites", - "follow": "New followers", - "reaction": "Emoji reactions", - "follow_request": "Follow requests", - "status": "Status notifications", - "poll_vote": "Poll votes", - "poll_expired": "When a poll expires" - } - }, - "account": { - "title": "Account", - "connected": "Connected accounts", - "username": "Username", - "domain": "Domain", - "association": "Association", - "order": "Order", - "remove_association": "Remove association", - "remove_all_associations": "Remove all associations", - "confirm": "Potvrdit", - "cancel": "Zrušit", - "confirm_message": "Are you sure you want to remove all associations?" - }, - "network": { - "title": "Síť", - "proxy": { - "title": "Proxy configuration", - "no": "No proxy", - "system": "Use system proxy", - "manual": "Manual proxy configuration", - "protocol": "Protokol", - "host": "Proxy host", - "port": "Proxy port", - "username": "Proxy username", - "password": "Proxy password", - "protocol_list": { - "http": "http", - "https": "https", - "socks4": "socks4", - "socks4a": "socks4a", - "socks5": "socks5", - "socks5h": "socks5h" - } - }, - "save": "Save" - }, - "language": { - "title": "Language", - "language": { - "title": "Language", - "description": "Choose the language you would like to use with Whalebird." - }, - "spellchecker": { - "title": "Kontrola pravopisu", - "enabled": "Enable spell checker" - } - } - }, - "modals": { - "jump": { - "jump_to": "Přejít na..." - }, - "add_list_member": { - "title": "Add member to List", - "account_name": "Název účtu" - }, - "list_membership": { - "title": "List memberships" - }, - "mute_confirm": { - "title": "Mute user", - "body": "Are you sure you want to mute notifications from this user?", - "cancel": "Zrušit", - "ok": "Mute" - }, - "shortcut": { - "title": "Keyboard shortcuts", - "ctrl_number": "Switch accounts", - "ctrl_k": "Jump to other timelines", - "ctrl_enter": "Send the post", - "ctrl_r": "Refresh current timeline", - "j": "Select the next post", - "k": "Select the previous post", - "r": "Reply to the selected post", - "b": "Boost the selected post", - "f": "Favourite the selected post", - "o": "View the selected post's details", - "p": "Display the profile of the selected post's author", - "i": "Open the selected post's images", - "x": "Show/hide a content warned post", - "?": "Show this dialog", - "esc": "Close current page" - }, - "report": { - "title": "Report this user", - "comment": "Additional comments", - "cancel": "Cancel", - "ok": "Report" - }, - "thirdparty": { - "title": "Thirdparty licenses" - } - }, - "cards": { - "toot": { - "show_more": "Ukázat více", - "hide": "Skrýt", - "sensitive": "Zobrazit citlivý obsah", - "view_toot_detail": "View post details", - "open_in_browser": "Open in browser", - "copy_link_to_toot": "Copy post link", - "mute": "Ignorovat", - "block": "Blokovat", - "report": "Nahlásit", - "delete": "Smazat", - "via": "přes {{application}}", - "reply": "Odpovědět", - "reblog": "Boost", - "fav": "Oblíbit", - "detail": "Post details", - "bookmark": "Záložka", - "pinned": "Pinned post", - "poll": { - "vote": "Hlasovat", - "votes_count": "hlasů", - "until": "until {{datetime}}", - "left": "{{datetime}} left", - "refresh": "Obnovit" - }, - "open_account": { - "title": "Account not found", - "text": "Could not find {{account}} on the server. Do you want to open the account in a browser instead?", - "ok": "Open", - "cancel": "Cancel" - } - }, - "status_loading": { - "message": "Load more status" - } - }, - "side_bar": { - "account_profile": { - "follows_you": "Následuje vás", - "doesnt_follow_you": "Nesleduje vás", - "detail": "Podrobnosti", - "follow": "Sledujte tohoto uživatele", - "unfollow": "Přestat sledovat tohoto uživatele", - "subscribe": "Subscribe to this user", - "unsubscribe": "Unsubscribe from this user", - "follow_requested": "Follow requested", - "open_in_browser": "Open in browser", - "manage_list_memberships": "Manage list memberships", - "mute": "Ignorovat", - "unmute": "Unmute", - "unblock": "Odblokovat", - "block": "Blokovat", - "toots": "Posts", - "follows": "Sledovaní", - "followers": "Sledující" - } - }, - "follow_requests": { - "accept": "Přijmout", - "reject": "Odmítnout" - }, - "hashtag": { - "tag_name": "Název štítku", - "delete_tag": "Smazat štítek", - "save_tag": "Uložit štítek" - }, - "search": { - "search": "Vyhledat", - "account": "Účet", - "tag": "Štítek", - "keyword": "Keyword", - "toot": "Post" - }, - "lists": { - "index": { - "new_list": "Nový seznam", - "edit": "Edit", - "delete": { - "confirm": { - "title": "Confirm", - "message": "This list will be permanently deleted. Are you sure you want to continue?", - "ok": "Delete", - "cancel": "Cancel" - } - } - } - }, - "login": { - "domain_name_label": "Welcome to Whalebird! Enter a server domain name to log into an account.", - "proxy_info": "If you need to use a proxy server, please set it up", - "proxy_here": " here", - "search": "Search", - "login": "Login" - }, - "authorize": { - "manually_1": "An authorization page has opened in your browser.", - "manually_2": "If it has not yet opened, please go to the following URL manually:", - "code_label": "Enter your authorization code:", - "misskey_label": "Please submit after you authorize in your browser.", - "submit": "Submit" - }, - "receive_drop": { - "drop_message": "Drop here to attach a file" - }, - "message": { - "account_load_error": "Failed to load accounts", - "account_remove_error": "Failed to remove the account", - "preferences_load_error": "Failed to load preferences", - "timeline_fetch_error": "Failed to fetch timeline", - "notification_fetch_error": "Failed to fetch notification", - "favourite_fetch_error": "Failed to fetch favourite", - "bookmark_fetch_error": "Failed to fetch bookmarks", - "follow_request_accept_error": "Failed to accept the request", - "follow_request_reject_error": "Failed to reject the request", - "attach_error": "Could not attach the file", - "authorize_duplicate_error": "Can not login the same account of the same domain", - "authorize_error": "Failed to authorize", - "followers_fetch_error": "Failed to fetch followers", - "follows_fetch_error": "Failed to fetch follows", - "toot_fetch_error": "Failed to fetch the post details", - "follow_error": "Failed to follow the user", - "unfollow_error": "Failed to unfollow the user", - "subscribe_error": "Failed to subscribe the user", - "unsubscribe_error": "Failed to unsubscribe the user", - "lists_fetch_error": "Failed to fetch lists", - "list_create_error": "Failed to create a list", - "members_fetch_error": "Failed to fetch members", - "remove_user_error": "Failed to remove the user", - "find_account_error": "Account not found", - "reblog_error": "Failed to boost", - "unreblog_error": "Failed to unboost", - "favourite_error": "Failed to favourite", - "unfavourite_error": "Failed to unfavourite", - "bookmark_error": "Failed to bookmark", - "unbookmark_error": "Failed to remove bookmark", - "delete_error": "Failed to delete the post", - "search_error": "Failed to search", - "toot_error": "Failed to create the post", - "update_list_memberships_error": "Failed to update the list memberships", - "add_user_error": "Failed to add user", - "authorize_url_error": "Failed to get authorize url", - "domain_confirmed": "{{domain}} is confirmed, please log in", - "domain_doesnt_exist": "Failed to connect to {{domain}}, make sure the server URL is valid or correct.", - "loading": "Loading...", - "language_not_support_spellchecker_error": "This language is not supported by the spell checker", - "update_filter_error": "Failed to update the filter", - "create_filter_error": "Failed to create the filter" - }, - "validation": { - "login": { - "require_domain_name": "A domain name is required", - "domain_format": "Please only enter the domain name" - }, - "compose": { - "toot_length": "Post length should be between {{min}} and {{max}}", - "attach_length": "You can only attach up to {{max}} image", - "attach_length_plural": "You can only attach up to {{max}} images", - "attach_image": "You can only attach images or videos", - "poll_invalid": "Invalid poll choices" - } - }, - "notification": { - "favourite": { - "title": "New favourite", - "body": "{{username}} favourited your post" - }, - "follow": { - "title": "New follower", - "body": "{{username}} is now following you" - }, - "follow_request": { - "title": "New follow request", - "body": "Received a follow request from {{username}}" - }, - "reblog": { - "title": "New boost", - "body": "{{username}} boosted your post" - }, - "quote": { - "title": "New quote", - "body": "{{username}} quoted your post" - }, - "reaction": { - "title": "New reaction", - "body": "{{username}} reacted to your post" - }, - "status": { - "title": "New post", - "body": "{{username}} made a new post" - }, - "poll_vote": { - "title": "New poll vote", - "body": "{{username}} voted in your poll" - }, - "poll_expired": { - "title": "Poll expired", - "body": "{{username}}'s poll has ended" - } - }, - "compose": { - "title": "New post", - "cw": "Write your warning here", - "status": "What's on your mind?", - "cancel": "Cancel", - "toot": "Post", - "description": "Add alternate text for this media", - "footer": { - "add_image": "Add images", - "poll": "Add a poll", - "change_visibility": "Change visibility", - "change_sensitive": "Mark media as sensitive", - "add_cw": "Add content warnings", - "pined_hashtag": "Pinned hashtag" - }, - "poll": { - "add_choice": "Add an option", - "expires": { - "5_minutes": "5 minutes", - "30_minutes": "30 minutes", - "1_hour": "1 hour", - "6_hours": "6 hours", - "1_day": "1 day", - "3_days": "3 days", - "7_days": "7 days" - } - } - } -} diff --git a/src/config/locales/de/translation.json b/src/config/locales/de/translation.json deleted file mode 100644 index f5d3ffef..00000000 --- a/src/config/locales/de/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "Über Whalebird", - "preferences": "Einstellungen", - "shortcuts": "Tastenkürzel", - "services": "Dienste", - "hide": "Whalebird ausblenden", - "hide_others": "Hide others", - "show_all": "Show all", - "open": "Open window", - "quit": "Beenden" - }, - "edit": { - "name": "Bearbeiten", - "undo": "Rückgängig", - "redo": "Wiederholen", - "cut": "Ausschneiden", - "copy": "Kopieren", - "paste": "Einfügen", - "select_all": "Alles Auswählen" - }, - "view": { - "name": "Ansicht", - "toggle_full_screen": "Vollbildmodus umschalten" - }, - "window": { - "always_show_menu_bar": "Menüleiste immer anzeigen", - "name": "Fenster", - "close": "Fenster schließen", - "open": "Fenster öffnen", - "minimize": "Minimieren", - "jump_to": "Gehe zu" - }, - "help": { - "name": "Hilfe", - "thirdparty": "Drittanbieter-Lizenzen" - } - }, - "global_header": { - "add_new_account": "Neues Konto hinzufügen" - }, - "side_menu": { - "profile": "Profil", - "show_profile": "Profil ansehen", - "edit_profile": "Profil bearbeiten", - "settings": "Kontoeinstellungen", - "collapse": "Einklappen", - "expand": "Ausklappen", - "home": "Start", - "notification": "Mitteilungen", - "direct": "Direktnachrichten", - "follow_requests": "Follower-Anfragen", - "favourite": "Favoriten", - "bookmark": "Lesezeichen", - "local": "Lokale Timeline", - "public": "Föderierte Timeline", - "hashtag": "Hashtags", - "search": "Suche", - "lists": "Listen" - }, - "header_menu": { - "home": "Start", - "notification": "Mitteilungen", - "favourite": "Favoriten", - "bookmark": "Lesezeichen", - "follow_requests": "Follow-Anfragen", - "direct_messages": "Direktnachrichten", - "local": "Lokale Timeline", - "public": "Föderierte Timeline", - "hashtag": "Hashtags", - "search": "Suche", - "lists": "Listen", - "members": "Mitglieder", - "reload": "Neu laden" - }, - "settings": { - "title": "Einstellungen", - "general": { - "title": "Allgemein", - "toot": { - "title": "Beiträge", - "visibility": { - "description": "Standard Post-Sichtbarkeit", - "notice": "Diese Einstellung gilt nur für neue Beiträge; für Antworten gelten die Sichtbarkeitseinstellungen des übergeordneten Beitrags.", - "public": "Öffenlich", - "unlisted": "Nicht gelistet", - "private": "Privat", - "direct": "Direkt" - }, - "sensitive": { - "description": "Medien standardmäßig als sensibel markieren" - } - } - }, - "timeline": { - "title": "Zeitleiste", - "use_marker": { - "title": "Lade die Zeitleiste von der letzten Lese-Position", - "home": "Start", - "notifications": "Benachrichtigungen" - } - }, - "filters": { - "title": "Filter", - "form": { - "phrase": "Schlagwort oder Phrase", - "expire": "Verfällt nach", - "context": "Kontext filtern", - "irreversible": "Entfernen anstatt zu verstecken", - "whole_word": "Ganzes Wort", - "submit": "Absenden", - "cancel": "Abbrechen" - }, - "expires": { - "never": "Niemals", - "30_minutes": "30 Minuten", - "1_hour": "1 Stunde", - "6_hours": "6 Stunde", - "12_hours": "12 Stunde", - "1_day": "1 Tag", - "1_week": "1 Woche" - }, - "new": { - "title": "Neu" - }, - "edit": { - "title": "Bearbeiten" - }, - "delete": { - "title": "Löschen", - "confirm": "Sind Sie sicher, dass Sie diesen Filter löschen möchten?", - "confirm_ok": "Löschen", - "confirm_cancel": "Abbrechen" - } - } - }, - "preferences": { - "title": "Einstellungen", - "general": { - "title": "Allgemein", - "sounds": { - "title": "Klänge", - "description": "Klänge abspielen, wenn", - "fav_rb": "Du einen Beitrag favorisierst oder boostest", - "toot": "Du einen Beitrag postest" - }, - "timeline": { - "title": "Zeitleiste", - "description": "Passe an, wie Deine Timelines angezeigt werden", - "cw": "Beiträge mit Inhaltswarnungen immer ausklappen.", - "nsfw": "Medien immer anzeigen.", - "hideAllAttachments": "Medien immer verstecken." - }, - "other": { - "title": "Andere Optionen", - "launch": "Whalebird beim Systemstart ausführen", - "hideOnLaunch": "Whalebird-Fenster beim Start verstecken" - }, - "reset": { - "button": "Einstellungen zurücksetzen" - } - }, - "appearance": { - "title": "Anzeige", - "theme_color": "Farbschemata", - "theme": { - "system": "System", - "light": "Hell", - "dark": "Dunkel", - "solarized_light": "SolarizedLight", - "solarized_dark": "SolarizedDunkel", - "kimbie_dark": "KimbieDark", - "custom": "Angepasst" - }, - "custom_theme": { - "background_color": "Basis-Hintergrund", - "selected_background_color": "Fokussierter Hintergrund", - "global_header_color": "Konto-Menü", - "side_menu_color": "Seitenmenü", - "primary_color": "Primäre Schriftart", - "regular_color": "Normale Schriftart", - "secondary_color": "Sekundäre Schriftart", - "border_color": "Rand", - "header_menu_color": "Kopfzeilen-Menü", - "wrapper_mask_color": "Dialog wrapper" - }, - "font_size": "Schriftgröße", - "font_family": "Schriftfamilie", - "toot_padding": "Abstand zwischen den Posts", - "display_style": { - "title": "Benutzernamen Darstellung", - "display_name_and_username": "Anzeige- und Benutzername", - "display_name": "Angezeigter Name", - "username": "Benutzername" - }, - "time_format": { - "title": "Zeitformat", - "absolute": "Absolut", - "relative": "Relativ" - } - }, - "notification": { - "title": "Mitteilungen", - "enable": { - "description": "Benachrichtigen bei…", - "reply": "Antworten", - "reblog": "Boosts", - "favourite": "Favoriten", - "follow": "neuen Followern", - "reaction": "Emoji-Reaktionen", - "follow_request": "Follower-Anfragen", - "status": "Statusmeldungen", - "poll_vote": "Umfrage-Stimmen", - "poll_expired": "wenn eine Umfrage abläuft" - } - }, - "account": { - "title": "Benutzerkonto", - "connected": "Verknüpfte Konten", - "username": "Benutzername", - "domain": "Domain", - "association": "Verbindung", - "order": "Reihenfolge", - "remove_association": "Verbindung trennen", - "remove_all_associations": "Alle Verbindungen trennen", - "confirm": "Bestätigen", - "cancel": "Abbrechen", - "confirm_message": "Möchtest du wirklich alle Verbindungen trennen?" - }, - "network": { - "title": "Netzwerk", - "proxy": { - "title": "Proxy-Konfiguration", - "no": "Kein Proxy", - "system": "Systemproxy verwenden", - "manual": "Manuelle Proxy-Konfiguration", - "protocol": "Protokoll", - "host": "Proxy-Server", - "port": "Proxy-Port", - "username": "Proxy-Benutzername", - "password": "Proxy-Passwort", - "protocol_list": { - "http": "http", - "https": "https", - "socks4": "socks4", - "socks4a": "Socks4a", - "socks5": "Socks5", - "socks5h": "Socks5h" - } - }, - "save": "Speichern" - }, - "language": { - "title": "Sprache", - "language": { - "title": "Sprache", - "description": "Wählen Sie die Sprache, die Sie mit Whalebird verwenden möchten." - }, - "spellchecker": { - "title": "Rechtschreibprüfung", - "enabled": "Rechtschreibprüfung aktivieren" - } - } - }, - "modals": { - "jump": { - "jump_to": "Springe zu..." - }, - "add_list_member": { - "title": "Mitglied zur Liste hinzufügen", - "account_name": "Kontoname" - }, - "list_membership": { - "title": "Mitgliedschaften auflisten" - }, - "mute_confirm": { - "title": "Nutzer stummschalten", - "body": "Bist du sicher, dass du die Benachrichtigungen dieses Benutzers stummschalten möchtest?", - "cancel": "Abbrechen", - "ok": "Stummschalten" - }, - "shortcut": { - "title": "Tastenkürzel", - "ctrl_number": "Wechsel zu einem anderen Konto", - "ctrl_k": "Zu anderen Zeitleisten springen", - "ctrl_enter": "Post absenden", - "ctrl_r": "aktuelle Timeline aktualisieren", - "j": "Nächsten Beitrag auswählen", - "k": "Vorherigen Beitrag auswählen", - "r": "Auf den ausgewählten Beitrag antworten", - "b": "Den ausgewählten Beitrag teilen", - "f": "Ausgewählten Beitrag favorisieren", - "o": "Details des ausgewählten Beitrags anzeigen", - "p": "Profil des Autors des ausgewählten Beitrages anzeigen", - "i": "Die Bilder des ausgewählten Beitrags öffnen", - "x": "Ein-/Ausblenden eines Beitrags mit Inhaltswarnung", - "?": "Diesen Dialog anzeigen", - "esc": "Aktuelle Seite schließen" - }, - "report": { - "title": "Benutzer melden", - "comment": "Warum soll geblockt werden?", - "cancel": "Abbrechen", - "ok": "Senden" - }, - "thirdparty": { - "title": "Drittanbieter-Lizenzen" - } - }, - "cards": { - "toot": { - "show_more": "Mehr anzeigen", - "hide": "Verbergen", - "sensitive": "Sensible inhalte anzeigen", - "view_toot_detail": "Post-Details anzeigen", - "open_in_browser": "Im Browser öffnen", - "copy_link_to_toot": "Link zum Post kopieren", - "mute": "Stummschalten", - "block": "Blockieren", - "report": "Melden", - "delete": "Löschen", - "via": "über {{application}}", - "reply": "Antworten", - "reblog": "Boost", - "fav": "Favorit", - "detail": "Mehr", - "bookmark": "Lesezeichen", - "pinned": "Angehefteter Beitrag", - "poll": { - "vote": "Abstimmen", - "votes_count": "Abstimmungen", - "until": "bis {{datetime}}", - "left": "{{datetime}} verstrichen", - "refresh": "Aktualisieren" - }, - "open_account": { - "title": "Account nicht gefunden", - "text": "{{account}} konnte nicht auf dem Server gefunden werden. Möchten Sie das Konto stattdessen in einem Browser öffnen?", - "ok": "Öffnen", - "cancel": "Abbrechen" - } - }, - "status_loading": { - "message": "Mehr Status laden" - } - }, - "side_bar": { - "account_profile": { - "follows_you": "Folgt dir", - "doesnt_follow_you": "Folgt dir nicht", - "detail": "Details", - "follow": "Diesem Benutzer folgen", - "unfollow": "Diesem Benutzer nicht mehr folgen", - "subscribe": "Diesen Benutzer abonnieren", - "unsubscribe": "Diesen Benutzer abbestellen", - "follow_requested": "Follower Anfrage gestellt", - "open_in_browser": "Im Browser öffnen", - "manage_list_memberships": "Listenmitgliedschaften verwalten", - "mute": "Stummschalten", - "unmute": "Stummschaltung aufheben", - "unblock": "Freigeben", - "block": "Blocken", - "toots": "Posts", - "follows": "Folgt", - "followers": "Folgende" - } - }, - "follow_requests": { - "accept": "Annehmen", - "reject": "Ablehnen" - }, - "hashtag": { - "tag_name": "Tag-Name", - "delete_tag": "Tag löschen", - "save_tag": "Tag speichern" - }, - "search": { - "search": "Suchen", - "account": "Benutzerkonto", - "tag": "Hashtag", - "keyword": "Schlüsselwort", - "toot": "Post" - }, - "lists": { - "index": { - "new_list": "Neue Liste", - "edit": "Bearbeiten", - "delete": { - "confirm": { - "title": "Bestätigen", - "message": "Diese Liste wird dauerhaft gelöscht. Sind Sie sicher, dass Sie fortfahren möchten?", - "ok": "Löschen", - "cancel": "Abbrechen" - } - } - } - }, - "login": { - "domain_name_label": "Willkommen bei Whalebird! Geben Sie einen Server-Domain-Namen ein, um sich bei einem Konto einzuloggen.", - "proxy_info": "Wenn Sie einen Proxy-Server verwenden möchten, richten Sie ihn bitte ein", - "proxy_here": " hier", - "search": "Suche", - "login": "Anmelden" - }, - "authorize": { - "manually_1": "Jetzt wird die Zugriffsseite in deinem Browser geöffnet.", - "manually_2": "Falls nicht, öffne bitte die folgende URL von Hand:", - "code_label": "Gib den Autorisierungscode ein:", - "misskey_label": "Bitte senden Sie das Formular ab, nachdem Sie sich in Ihrem Browser autorisiert haben.", - "submit": "Absenden" - }, - "receive_drop": { - "drop_message": "Hierher ziehen, um eine Datei anzuhängen" - }, - "message": { - "account_load_error": "Konten konnten nicht geladen werden", - "account_remove_error": "Das Konto konnte nicht entfernt werden.", - "preferences_load_error": "Einstellungen konnten nicht geladen werden", - "timeline_fetch_error": "Timeline konnte nicht abgerufen werden", - "notification_fetch_error": "Benachrichtigung konnte nicht abgerufen werden", - "favourite_fetch_error": "Favorit konnte nicht abgerufen werden", - "bookmark_fetch_error": "Lesezeichen konnten nicht abgerufen werden", - "follow_request_accept_error": "Anfrage konnte nicht angenommen werden", - "follow_request_reject_error": "Ablehnung der geteilten Anfrage fehlgeschlagen", - "attach_error": "Kontte Datei nicht anhängen", - "authorize_duplicate_error": "Kann nicht das gleiche Konto der gleichen Domain einloggen", - "authorize_error": "Autorisierung fehlgeschlagen", - "followers_fetch_error": "Follower konnten nicht abgerufen werden", - "follows_fetch_error": "Follows konnten nicht abgerufen werden", - "toot_fetch_error": "Laden der Beitragsdetails fehlgeschlagen", - "follow_error": "Konnte dem Benutzer nicht folgen", - "unfollow_error": "Konnte das Folgen des Benutzer nicht beenden", - "subscribe_error": "Abonnierung von %s fehlgeschlagen", - "unsubscribe_error": "Abmeldung von %s fehlgeschlagen", - "lists_fetch_error": "Konte Listen nicht abrufen", - "list_create_error": "Konnte keine Liste erstellen", - "members_fetch_error": "Konnte Mitglieder nicht abrufen", - "remove_user_error": "Entfernen des Benutzers fehlgeschlagen", - "find_account_error": "Konto nicht gefunden", - "reblog_error": "Boost fehlgeschlagen", - "unreblog_error": "Ent-Boosten fehlgeschlagen", - "favourite_error": "Favorisieren fehlgeschlagen", - "unfavourite_error": "Widerruf des Favorisierens fehlgeschlagen", - "bookmark_error": "Hinzufügen des Lesezeichens fehlgeschlagen", - "unbookmark_error": "Löschen des Lesezeichens fehlgeschlagen", - "delete_error": "Löschen des Beitrags fehlgeschlagen", - "search_error": "Suche fehlgeschlagen", - "toot_error": "Erstellen des Beitrags fehlgeschlagen", - "update_list_memberships_error": "Konnte Listen-Mitgliedschaften nicht aktualisieren", - "add_user_error": "Benutzer konnte nicht hinzugefügt werden", - "authorize_url_error": "Fehler beim Abrufen der Autorisierungs-URL", - "domain_confirmed": "{{domain}} wurde bestätigt, bitte melde dich an", - "domain_doesnt_exist": "Fehler beim Verbinden mit {{domain}}. Stelle sicher, dass die Server-URL gültig oder korrekt ist.", - "loading": "Laden...", - "language_not_support_spellchecker_error": "Diese Sprache wird von der Rechtschreibprüfung nicht unterstützt", - "update_filter_error": "Aktualisierung des Filters fehlgeschlagen", - "create_filter_error": "Fehler beim Erstellen des Filters" - }, - "validation": { - "login": { - "require_domain_name": "Domainname wird benötigt", - "domain_format": "Bitte gib nur den Domainnamen an" - }, - "compose": { - "toot_length": "Die Beitragslänge sollte zwischen {{min}} und {{max}} liegen", - "attach_length": "You can only attach up to {{max}} image", - "attach_length_plural": "Du kannst maximal {{max}} Bilder anhängen", - "attach_image": "Du kannst nur Bilder oder Videos anhängen", - "poll_invalid": "Invalid poll choices" - } - }, - "notification": { - "favourite": { - "title": "New favourite", - "body": "{{username}} hat deinen Beitrag favorisiert" - }, - "follow": { - "title": "Neue Follower", - "body": "{{username}} folgt dir jetzt" - }, - "follow_request": { - "title": "Neue Follower-Anfrage", - "body": "Follower-Anfrage von {{username}} erhalten" - }, - "reblog": { - "title": "Neuer Boost", - "body": "{{username}} hat deinen Beitrag geteilt" - }, - "quote": { - "title": "Neues Zitat", - "body": "{{username}} hat deinen Beitrag zitiert" - }, - "reaction": { - "title": "Neue Reaktion", - "body": "{{username}} hat auf deinen Beitrag reagiert" - }, - "status": { - "title": "Neuer Post", - "body": "{{username}} hat einen neuen Beitrag gepostet" - }, - "poll_vote": { - "title": "Neue Umfrage-Abstimmung", - "body": "{{username}} hat in deiner Umfrage abgestimmt" - }, - "poll_expired": { - "title": "Umfrage abgelaufen", - "body": "Die Umfrage von {{username}} ist abgelaufen" - } - }, - "compose": { - "title": "Neuer Post", - "cw": "Trage hier deine Warnung ein", - "status": "Was gibt's Neues?", - "cancel": "Abbrechen", - "toot": "Posten", - "description": "Alternativtext für diese Mediendatei hinzufügen", - "footer": { - "add_image": "Bilder hinzufügen", - "poll": "Umfrage erstellen", - "change_visibility": "Sichtbarkeit ändern", - "change_sensitive": "Medien als heikel markieren", - "add_cw": "Inhaltswarnung bzw. Triggerwarnung hinzufügen", - "pined_hashtag": "angepinntes Hashtag" - }, - "poll": { - "add_choice": "Neue Option hinzufügen", - "expires": { - "5_minutes": "5 Minuten", - "30_minutes": "30 Minuten", - "1_hour": "1 Stunde", - "6_hours": "6 Stunden", - "1_day": "1 Tag", - "3_days": "3 Tage", - "7_days": "7 Tage" - } - } - } -} diff --git a/src/config/locales/en/translation.json b/src/config/locales/en/translation.json deleted file mode 100644 index 28818446..00000000 --- a/src/config/locales/en/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "About Whalebird", - "preferences": "Preferences", - "shortcuts": "Keyboard shortcuts", - "services": "Services", - "hide": "Hide Whalebird", - "hide_others": "Hide others", - "show_all": "Show all", - "open": "Open window", - "quit": "Quit" - }, - "edit": { - "name": "Edit", - "undo": "Undo", - "redo": "Redo", - "cut": "Cut", - "copy": "Copy", - "paste": "Paste", - "select_all": "Select All" - }, - "view": { - "name": "View", - "toggle_full_screen": "Toggle full screen" - }, - "window": { - "always_show_menu_bar": "Always show menu bar", - "name": "Window", - "close": "Close Window", - "open": "Open Window", - "minimize": "Minimize", - "jump_to": "Jump to" - }, - "help": { - "name": "Help", - "thirdparty": "Thirdparty licenses" - } - }, - "global_header": { - "add_new_account": "Add new account" - }, - "side_menu": { - "profile": "Profile", - "show_profile": "Show profile", - "edit_profile": "Edit profile", - "settings": "Account settings", - "collapse": "Collapse", - "expand": "Expand", - "home": "Home", - "notification": "Notifications", - "direct": "Direct messages", - "follow_requests": "Follow requests", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "local": "Local timeline", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Search", - "lists": "Lists" - }, - "header_menu": { - "home": "Home", - "notification": "Notifications", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "follow_requests": "Follow requests", - "direct_messages": "Direct messages", - "local": "Local timeline", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Search", - "lists": "Lists", - "members": "Members", - "reload": "Reload" - }, - "settings": { - "title": "Settings", - "general": { - "title": "General", - "toot": { - "title": "Posts", - "visibility": { - "description": "Default post visibility", - "notice": "This setting applies only to new posts; replies will follow the visibility settings of the parent post.", - "public": "Public", - "unlisted": "Unlisted", - "private": "Private", - "direct": "Direct" - }, - "sensitive": { - "description": "Mark media as sensitive by default" - } - } - }, - "timeline": { - "title": "Timeline", - "use_marker": { - "title": "Load the timeline from the last reading position", - "home": "Home", - "notifications": "Notifications" - } - }, - "filters": { - "title": "Filters", - "form": { - "phrase": "Keyword or phrase", - "expire": "Expire after", - "context": "Filter contexts", - "irreversible": "Drop instead of hide", - "whole_word": "Whole word", - "submit": "Submit", - "cancel": "Cancel" - }, - "expires": { - "never": "Never", - "30_minutes": "30 minutes", - "1_hour": "1 hour", - "6_hours": "6 hours", - "12_hours": "12 hours", - "1_day": "1 day", - "1_week": "1 week" - }, - "new": { - "title": "New" - }, - "edit": { - "title": "Edit" - }, - "delete": { - "title": "Delete", - "confirm": "Are you sure you want to delete this filter?", - "confirm_ok": "Delete", - "confirm_cancel": "Cancel" - } - } - }, - "preferences": { - "title": "Preferences", - "general": { - "title": "General", - "sounds": { - "title": "Sounds", - "description": "Play sounds when", - "fav_rb": "You favourite or boost a post", - "toot": "You make a post" - }, - "timeline": { - "title": "Timeline", - "description": "Customize how your timelines are displayed", - "cw": "Always expand posts tagged with content warnings.", - "nsfw": "Always show media.", - "hideAllAttachments": "Always hide media." - }, - "other": { - "title": "Other options", - "launch": "Launch Whalebird on startup", - "hideOnLaunch": "Hide the Whalebird window on launch" - }, - "reset": { - "button": "Reset preferences" - } - }, - "appearance": { - "title": "Appearance", - "theme_color": "Colour themes", - "theme": { - "system": "System", - "light": "Light", - "dark": "Dark", - "solarized_light": "SolarizedLight", - "solarized_dark": "SolarizedDark", - "kimbie_dark": "KimbieDark", - "custom": "Custom" - }, - "custom_theme": { - "background_color": "Base background", - "selected_background_color": "Focused background", - "global_header_color": "Account menu", - "side_menu_color": "Side menu", - "primary_color": "Primary font", - "regular_color": "Regular font", - "secondary_color": "Secondary font", - "border_color": "Border", - "header_menu_color": "Header menu", - "wrapper_mask_color": "Dialog wrapper" - }, - "font_size": "Font size", - "font_family": "Font family", - "toot_padding": "Padding around posts", - "display_style": { - "title": "Username display style", - "display_name_and_username": "Display name and username", - "display_name": "Display name", - "username": "Username" - }, - "time_format": { - "title": "Time format", - "absolute": "Absolute", - "relative": "Relative" - } - }, - "notification": { - "title": "Notifications", - "enable": { - "description": "Notify me when I receive...", - "reply": "Replies", - "reblog": "Boosts", - "favourite": "Favourites", - "follow": "New followers", - "reaction": "Emoji reactions", - "follow_request": "Follow requests", - "status": "Status notifications", - "poll_vote": "Poll votes", - "poll_expired": "When a poll expires" - } - }, - "account": { - "title": "Account", - "connected": "Connected accounts", - "username": "Username", - "domain": "Domain", - "association": "Association", - "order": "Order", - "remove_association": "Remove association", - "remove_all_associations": "Remove all associations", - "confirm": "Confirm", - "cancel": "Cancel", - "confirm_message": "Are you sure you want to remove all associations?" - }, - "network": { - "title": "Network", - "proxy": { - "title": "Proxy configuration", - "no": "No proxy", - "system": "Use system proxy", - "manual": "Manual proxy configuration", - "protocol": "Protocol", - "host": "Proxy host", - "port": "Proxy port", - "username": "Proxy username", - "password": "Proxy password", - "protocol_list": { - "http": "http", - "https": "https", - "socks4": "socks4", - "socks4a": "socks4a", - "socks5": "socks5", - "socks5h": "socks5h" - } - }, - "save": "Save" - }, - "language": { - "title": "Language", - "language": { - "title": "Language", - "description": "Choose the language you would like to use with Whalebird." - }, - "spellchecker": { - "title": "Spellcheck", - "enabled": "Enable spell checker" - } - } - }, - "modals": { - "jump": { - "jump_to": "Jump to..." - }, - "add_list_member": { - "title": "Add member to List", - "account_name": "Account name" - }, - "list_membership": { - "title": "List memberships" - }, - "mute_confirm": { - "title": "Mute user", - "body": "Are you sure you want to mute notifications from this user?", - "cancel": "Cancel", - "ok": "Mute" - }, - "shortcut": { - "title": "Keyboard shortcuts", - "ctrl_number": "Switch accounts", - "ctrl_k": "Jump to other timelines", - "ctrl_enter": "Send the post", - "ctrl_r": "Refresh current timeline", - "j": "Select the next post", - "k": "Select the previous post", - "r": "Reply to the selected post", - "b": "Boost the selected post", - "f": "Favourite the selected post", - "o": "View the selected post's details", - "p": "Display the profile of the selected post's author", - "i": "Open the selected post's images", - "x": "Show/hide a content warned post", - "?": "Show this dialog", - "esc": "Close current page" - }, - "report": { - "title": "Report this user", - "comment": "Additional comments", - "cancel": "Cancel", - "ok": "Report" - }, - "thirdparty": { - "title": "Thirdparty licenses" - } - }, - "cards": { - "toot": { - "show_more": "Show more", - "hide": "Hide", - "sensitive": "Show sensitive content", - "view_toot_detail": "View post details", - "open_in_browser": "Open in browser", - "copy_link_to_toot": "Copy post link", - "mute": "Mute", - "block": "Block", - "report": "Report", - "delete": "Delete", - "via": "via {{application}}", - "reply": "Reply", - "reblog": "Boost", - "fav": "Favourite", - "detail": "Post details", - "bookmark": "Bookmark", - "pinned": "Pinned post", - "poll": { - "vote": "Vote", - "votes_count": "votes", - "until": "until {{datetime}}", - "left": "{{datetime}} left", - "refresh": "Refresh" - }, - "open_account": { - "title": "Account not found", - "text": "Could not find {{account}} on the server. Do you want to open the account in a browser instead?", - "ok": "Open", - "cancel": "Cancel" - } - }, - "status_loading": { - "message": "Load more status" - } - }, - "side_bar": { - "account_profile": { - "follows_you": "Follows you", - "doesnt_follow_you": "Doesn't follow you", - "detail": "Detail", - "follow": "Follow this user", - "unfollow": "Unfollow this user", - "subscribe": "Subscribe to this user", - "unsubscribe": "Unsubscribe from this user", - "follow_requested": "Follow requested", - "open_in_browser": "Open in browser", - "manage_list_memberships": "Manage list memberships", - "mute": "Mute", - "unmute": "Unmute", - "unblock": "Unblock", - "block": "Block", - "toots": "Posts", - "follows": "Follows", - "followers": "Followers" - } - }, - "follow_requests": { - "accept": "Accept", - "reject": "Reject" - }, - "hashtag": { - "tag_name": "Tag name", - "delete_tag": "Delete tag", - "save_tag": "Save tag" - }, - "search": { - "search": "Search", - "account": "Account", - "tag": "Hashtag", - "keyword": "Keyword", - "toot": "Post" - }, - "lists": { - "index": { - "new_list": "New List", - "edit": "Edit", - "delete": { - "confirm": { - "title": "Confirm", - "message": "This list will be permanently deleted. Are you sure you want to continue?", - "ok": "Delete", - "cancel": "Cancel" - } - } - } - }, - "login": { - "domain_name_label": "Welcome to Whalebird! Enter a server domain name to log into an account.", - "proxy_info": "If you need to use a proxy server, please set it up", - "proxy_here": " here", - "search": "Search", - "login": "Login" - }, - "authorize": { - "manually_1": "An authorization page has opened in your browser.", - "manually_2": "If it has not yet opened, please go to the following URL manually:", - "code_label": "Enter your authorization code:", - "misskey_label": "Please submit after you authorize in your browser.", - "submit": "Submit" - }, - "receive_drop": { - "drop_message": "Drop here to attach a file" - }, - "message": { - "account_load_error": "Failed to load accounts", - "account_remove_error": "Failed to remove the account", - "preferences_load_error": "Failed to load preferences", - "timeline_fetch_error": "Failed to fetch timeline", - "notification_fetch_error": "Failed to fetch notification", - "favourite_fetch_error": "Failed to fetch favourite", - "bookmark_fetch_error": "Failed to fetch bookmarks", - "follow_request_accept_error": "Failed to accept the request", - "follow_request_reject_error": "Failed to reject the request", - "attach_error": "Could not attach the file", - "authorize_duplicate_error": "Can not login the same account of the same domain", - "authorize_error": "Failed to authorize", - "followers_fetch_error": "Failed to fetch followers", - "follows_fetch_error": "Failed to fetch follows", - "toot_fetch_error": "Failed to fetch the post details", - "follow_error": "Failed to follow the user", - "unfollow_error": "Failed to unfollow the user", - "subscribe_error": "Failed to subscribe the user", - "unsubscribe_error": "Failed to unsubscribe the user", - "lists_fetch_error": "Failed to fetch lists", - "list_create_error": "Failed to create a list", - "members_fetch_error": "Failed to fetch members", - "remove_user_error": "Failed to remove the user", - "find_account_error": "Account not found", - "reblog_error": "Failed to boost", - "unreblog_error": "Failed to unboost", - "favourite_error": "Failed to favourite", - "unfavourite_error": "Failed to unfavourite", - "bookmark_error": "Failed to bookmark", - "unbookmark_error": "Failed to remove bookmark", - "delete_error": "Failed to delete the post", - "search_error": "Failed to search", - "toot_error": "Failed to create the post", - "update_list_memberships_error": "Failed to update the list memberships", - "add_user_error": "Failed to add user", - "authorize_url_error": "Failed to get authorize url", - "domain_confirmed": "{{domain}} is confirmed, please log in", - "domain_doesnt_exist": "Failed to connect to {{domain}}, make sure the server URL is valid or correct.", - "loading": "Loading...", - "language_not_support_spellchecker_error": "This language is not supported by the spell checker", - "update_filter_error": "Failed to update the filter", - "create_filter_error": "Failed to create the filter" - }, - "validation": { - "login": { - "require_domain_name": "A domain name is required", - "domain_format": "Please only enter the domain name" - }, - "compose": { - "toot_length": "Post length should be between {{min}} and {{max}}", - "attach_length": "You can only attach up to {{max}} image", - "attach_length_plural": "You can only attach up to {{max}} images", - "attach_image": "You can only attach images or videos", - "poll_invalid": "Invalid poll choices" - } - }, - "notification": { - "favourite": { - "title": "New favourite", - "body": "{{username}} favourited your post" - }, - "follow": { - "title": "New follower", - "body": "{{username}} is now following you" - }, - "follow_request": { - "title": "New follow request", - "body": "Received a follow request from {{username}}" - }, - "reblog": { - "title": "New boost", - "body": "{{username}} boosted your post" - }, - "quote": { - "title": "New quote", - "body": "{{username}} quoted your post" - }, - "reaction": { - "title": "New reaction", - "body": "{{username}} reacted to your post" - }, - "status": { - "title": "New post", - "body": "{{username}} made a new post" - }, - "poll_vote": { - "title": "New poll vote", - "body": "{{username}} voted in your poll" - }, - "poll_expired": { - "title": "Poll expired", - "body": "{{username}}'s poll has ended" - } - }, - "compose": { - "title": "New post", - "cw": "Write your warning here", - "status": "What's on your mind?", - "cancel": "Cancel", - "toot": "Post", - "description": "Add alternate text for this media", - "footer": { - "add_image": "Add images", - "poll": "Add a poll", - "change_visibility": "Change visibility", - "change_sensitive": "Mark media as sensitive", - "add_cw": "Add content warnings", - "pined_hashtag": "Pinned hashtag" - }, - "poll": { - "add_choice": "Add an option", - "expires": { - "5_minutes": "5 minutes", - "30_minutes": "30 minutes", - "1_hour": "1 hour", - "6_hours": "6 hours", - "1_day": "1 day", - "3_days": "3 days", - "7_days": "7 days" - } - } - } -} diff --git a/src/config/locales/es_es/translation.json b/src/config/locales/es_es/translation.json deleted file mode 100644 index e5327551..00000000 --- a/src/config/locales/es_es/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "Acerca de Whalebird", - "preferences": "Preferencias", - "shortcuts": "Atajos de teclado", - "services": "Servicios", - "hide": "Ocultar Whalebird", - "hide_others": "Ocultar otros", - "show_all": "Mostrar todos", - "open": "Abrir ventana", - "quit": "Salir" - }, - "edit": { - "name": "Editar", - "undo": "Deshacer", - "redo": "Rehacer", - "cut": "Cortar", - "copy": "Copiar", - "paste": "Pegar", - "select_all": "Seleccionar todo" - }, - "view": { - "name": "Ver", - "toggle_full_screen": "Conmutar pantalla completa" - }, - "window": { - "always_show_menu_bar": "Mostrar siempre la barra de menú", - "name": "Ventana", - "close": "Cerrar ventana", - "open": "Abrir ventana", - "minimize": "Minimizar", - "jump_to": "Ir a" - }, - "help": { - "name": "Ayuda", - "thirdparty": "Licencias de terceros" - } - }, - "global_header": { - "add_new_account": "Añadir nueva cuenta" - }, - "side_menu": { - "profile": "Perfil", - "show_profile": "Mostrar perfil", - "edit_profile": "Editar perfil", - "settings": "Opciones de cuenta", - "collapse": "Ocultar", - "expand": "Expandir", - "home": "Inicio", - "notification": "Notificaciones", - "direct": "Mensajes directos", - "follow_requests": "Siguiendo", - "favourite": "Favoritos", - "bookmark": "Marcadores", - "local": "Línea de tiempo local", - "public": "Línea de tiempo federal", - "hashtag": "Hashtags", - "search": "Buscar", - "lists": "Listas" - }, - "header_menu": { - "home": "Inicio", - "notification": "Notificaciones", - "favourite": "Favoritos", - "bookmark": "Marcadores", - "follow_requests": "Solicitudes de seguimiento", - "direct_messages": "Mensajes directos", - "local": "Línea de tiempo local", - "public": "Línea de tiempo federada", - "hashtag": "Hashtags", - "search": "Buscar", - "lists": "Listas", - "members": "Miembros", - "reload": "Recargar" - }, - "settings": { - "title": "Configuración", - "general": { - "title": "General", - "toot": { - "title": "Publicación", - "visibility": { - "description": "Visibilidad de publicación por defecto", - "notice": "Esta configuración sólo se aplica a las publicaciones nuevas; Las respuestas seguirán la configuración de visibilidad de la publicación principal.", - "public": "Público", - "unlisted": "Sin listar", - "private": "Privado", - "direct": "Directo" - }, - "sensitive": { - "description": "Marcar medio como sensible por defecto" - } - } - }, - "timeline": { - "title": "Línea de tiempo", - "use_marker": { - "title": "Cargar la línea de tiempo desde la última posición de lectura", - "home": "Principal", - "notifications": "Notificaciones" - } - }, - "filters": { - "title": "Filtros", - "form": { - "phrase": "Palabra clave o frase", - "expire": "Expirar después de", - "context": "Filtrar contextos", - "irreversible": "Soltar en lugar de ocultar", - "whole_word": "Palabra entera", - "submit": "Enviar", - "cancel": "Cancelar" - }, - "expires": { - "never": "Nunca", - "30_minutes": "30 minutos", - "1_hour": "1 hora", - "6_hours": "6 horas", - "12_hours": "12 horas", - "1_day": "1 día", - "1_week": "1 semana" - }, - "new": { - "title": "Nuevo" - }, - "edit": { - "title": "Editar" - }, - "delete": { - "title": "Suprimir", - "confirm": "¿Está seguro de que desea suprimir este filtro?", - "confirm_ok": "Suprimir", - "confirm_cancel": "Cancelar" - } - } - }, - "preferences": { - "title": "Preferencias", - "general": { - "title": "General", - "sounds": { - "title": "Sonidos", - "description": "Reproducir sonidos cuando", - "fav_rb": "Marca como favorito o impulsa una publicación", - "toot": "Haces una publicación" - }, - "timeline": { - "title": "Línea de tiempo", - "description": "Personaliza cómo se muestran tus líneas de tiempo", - "cw": "Expandir siempre los mensajes etiquetados con advertencias de contenido.", - "nsfw": "Mostrar siempre los medios.", - "hideAllAttachments": "Ocultar siempre los medios." - }, - "other": { - "title": "Otras opciones", - "launch": "Iniciar Whalebird al arrancar", - "hideOnLaunch": "Ocultar la ventana de Whalebird en el lanzamiento" - }, - "reset": { - "button": "Restaurar preferencias" - } - }, - "appearance": { - "title": "Apariencia", - "theme_color": "Temas de color", - "theme": { - "system": "Sistema", - "light": "Claro", - "dark": "Oscuro", - "solarized_light": "Soleado Claro", - "solarized_dark": "Soleado oscuro", - "kimbie_dark": "KimbieDark", - "custom": "Personalizado" - }, - "custom_theme": { - "background_color": "Color de fondo", - "selected_background_color": "Color de fondo de selección", - "global_header_color": "Menú de cuenta", - "side_menu_color": "Menú lateral", - "primary_color": "Fuente primaria", - "regular_color": "Fuente habitual", - "secondary_color": "Fuente secundaria", - "border_color": "Borde", - "header_menu_color": "Menú de encabezamiento", - "wrapper_mask_color": "Envoltorio de diálogo" - }, - "font_size": "Tamaño de letra", - "font_family": "Tipo de letra", - "toot_padding": "Relleno alrededor de las publicaciones", - "display_style": { - "title": "Estilo de visualización del nombre de usuario", - "display_name_and_username": "Nombre y nombre de usuario", - "display_name": "Mostrar nombre", - "username": "Nombre de usuario" - }, - "time_format": { - "title": "Formato de hora", - "absolute": "Absoluta", - "relative": "Relativa" - } - }, - "notification": { - "title": "Notificaciones", - "enable": { - "description": "Notificarme cuando reciba...", - "reply": "Respuestas", - "reblog": "Impulsos", - "favourite": "Favoritos", - "follow": "Nuevos seguidores", - "reaction": "Reacciones de emoji", - "follow_request": "Solicitudes de seguimiento", - "status": "Notificaciones de estado", - "poll_vote": "Votos de encuesta", - "poll_expired": "Cuando una encuesta expira" - } - }, - "account": { - "title": "Cuenta", - "connected": "Cuentas conectadas", - "username": "Nombre de usuario", - "domain": "Dominio", - "association": "Asociación", - "order": "Orden", - "remove_association": "Eliminar asociación", - "remove_all_associations": "Eliminar todas las asociaciones", - "confirm": "Confirmar", - "cancel": "Cancelar", - "confirm_message": "¿Estás seguro de que quieres eliminar todas las asociaciones?" - }, - "network": { - "title": "Red", - "proxy": { - "title": "Configuración del proxy", - "no": "Sin proxy", - "system": "Usar proxy del sistema", - "manual": "Configuración manual del proxy", - "protocol": "Protocolo", - "host": "Servidor proxy", - "port": "Puerto del proxy", - "username": "Nombre de usuario del Proxy", - "password": "Contraseña del proxy", - "protocol_list": { - "http": "http", - "https": "https", - "socks4": "socks4", - "socks4a": "socks4a", - "socks5": "socks5", - "socks5h": "socks5h" - } - }, - "save": "Guardar" - }, - "language": { - "title": "Idioma", - "language": { - "title": "Lengua", - "description": "Elija el idioma que desea utilizar con Whalebird." - }, - "spellchecker": { - "title": "Corrector ortográfico", - "enabled": "Activar el corrector ortográfico" - } - } - }, - "modals": { - "jump": { - "jump_to": "Ir a..." - }, - "add_list_member": { - "title": "Añadir miembro a la lista", - "account_name": "Nombre de cuenta" - }, - "list_membership": { - "title": "Listar membresías" - }, - "mute_confirm": { - "title": "Silenciar usuario", - "body": "¿Estás seguro de que quieres silenciar las notificaciones de este usuario?", - "cancel": "Cancelar", - "ok": "Silenciar" - }, - "shortcut": { - "title": "Atajos del teclado", - "ctrl_number": "Cambiar de cuenta", - "ctrl_k": "Ir a otras líneas de tiempo", - "ctrl_enter": "Enviar la publicación", - "ctrl_r": "Actualizar la línea de tiempo actual", - "j": "Seleccionar publicación siguiente", - "k": "Seleccionar publicación anterior", - "r": "Responder a la publicación seleccionada", - "b": "Impulsar la publicación seleccionada", - "f": "Calificar la publicación seleccionada como favorito", - "o": "Ver detalles de la publicación seleccionada", - "p": "Mostrar el perfil del autor de la publicación seleccionada", - "i": "Abrir las imágenes de la publicación seleccionada", - "x": "Mostrar/ocultar una publicación avisada de contenido", - "?": "Mostrar este diálogo", - "esc": "Cerrar página actual" - }, - "report": { - "title": "Denunciar a este usuario", - "comment": "Comentarios adicionales", - "cancel": "Cancelar", - "ok": "Denunciar" - }, - "thirdparty": { - "title": "Licencias de terceros" - } - }, - "cards": { - "toot": { - "show_more": "Mostrar más", - "hide": "Ocultar", - "sensitive": "Mostrar contenido sensible", - "view_toot_detail": "Ver detalles de publicación", - "open_in_browser": "Abrir en navegador", - "copy_link_to_toot": "Copiar enlace de publicación", - "mute": "Silenciar", - "block": "Bloquear", - "report": "Denunciar", - "delete": "Borrar", - "via": "vía {{application}}", - "reply": "Responder", - "reblog": "Impulsar", - "fav": "Favorito", - "detail": "Detalles de publicación", - "bookmark": "Favorito", - "pinned": "Publicación anclada", - "poll": { - "vote": "Voto", - "votes_count": "votos", - "until": "hasta {{datetime}}", - "left": "Quedan {{datetime}}", - "refresh": "Actualizar" - }, - "open_account": { - "title": "Cuenta no encontrada", - "text": "No se pudo encontrar {{account}} en el servidor. ¿Desea abrir la cuenta en un navegador?", - "ok": "Abrir", - "cancel": "Cancelar" - } - }, - "status_loading": { - "message": "Cargar más estado" - } - }, - "side_bar": { - "account_profile": { - "follows_you": "Te sigue", - "doesnt_follow_you": "No te sigue", - "detail": "Detalle", - "follow": "Seguir a este usuario", - "unfollow": "Dejar de seguir este usuario", - "subscribe": "Suscribirse a este usuario", - "unsubscribe": "Desuscribir de este usuario", - "follow_requested": "Seguimiento solicitado", - "open_in_browser": "Abrir en el navegador", - "manage_list_memberships": "Gestionar lista de membresías", - "mute": "Silenciar", - "unmute": "Desactivar Silencio", - "unblock": "Desbloquear", - "block": "Bloquear", - "toots": "Publicaciones", - "follows": "Seguimientos", - "followers": "Seguidores" - } - }, - "follow_requests": { - "accept": "Aceptar", - "reject": "Rechazar" - }, - "hashtag": { - "tag_name": "Nombre de etiqueta", - "delete_tag": "Borrar etiqueta", - "save_tag": "Guardar etiqueta" - }, - "search": { - "search": "Buscar", - "account": "Cuenta", - "tag": "Etiqueta", - "keyword": "Palabra clabe", - "toot": "Publicación" - }, - "lists": { - "index": { - "new_list": "Nueva lista", - "edit": "Editar", - "delete": { - "confirm": { - "title": "Confirmar", - "message": "Esta lista se borrará permanentemente. ¿Seguro que quieres continuar?", - "ok": "Eliminar", - "cancel": "Cancelar" - } - } - } - }, - "login": { - "domain_name_label": "¡Bienvenido a Whalebird! Introduzca un nombre de dominio de servidor para acceder a una cuenta.", - "proxy_info": "Si necesita utilizar un servidor proxy, configúrelo", - "proxy_here": " aquí", - "search": "Buscar", - "login": "Ingresar" - }, - "authorize": { - "manually_1": "Se ha abierto una página de autorización en su navegador.", - "manually_2": "Si aún no se ha abierto, diríjase manualmente a la siguiente URL:", - "code_label": "Introduzca su código de autorización:", - "misskey_label": "Por favor, enviar después de autorizarlo en su navegador.", - "submit": "Enviar" - }, - "receive_drop": { - "drop_message": "Suelte aquí para adjuntar un archivo" - }, - "message": { - "account_load_error": "Error al cargar las cuentas", - "account_remove_error": "Error al eliminar la cuenta", - "preferences_load_error": "Error al cargar las preferencias", - "timeline_fetch_error": "Error al obtener la línea de tiempo", - "notification_fetch_error": "Error al obtener la notificación", - "favourite_fetch_error": "Error al buscar favorito", - "bookmark_fetch_error": "Error al recuperar marcadores", - "follow_request_accept_error": "Error al aceptar la solicitud", - "follow_request_reject_error": "No se ha podido rechazar la solicitud", - "attach_error": "No se pudo adjuntar el archivo", - "authorize_duplicate_error": "No se puede iniciar sesión en la misma cuenta del mismo dominio", - "authorize_error": "Error al autorizar", - "followers_fetch_error": "No se pudo obtener seguidores", - "follows_fetch_error": "No se pudo obtener seguidos", - "toot_fetch_error": "Error al obtener los detalles del puesto", - "follow_error": "Error al seguir el usuario", - "unfollow_error": "Error al dejar de seguir al usuario", - "subscribe_error": "Error al suscribir el usuario", - "unsubscribe_error": "Error al darse de baja el usuario", - "lists_fetch_error": "No se pudo obtener listas", - "list_create_error": "Error al crear una lista", - "members_fetch_error": "No se pudo obtener miembros", - "remove_user_error": "Error al eliminar el usuario", - "find_account_error": "Cuenta no encontrada", - "reblog_error": "No se ha impulsado", - "unreblog_error": "No se ha dejado de impulsar", - "favourite_error": "Error al favorecer", - "unfavourite_error": "Error al no favorecer", - "bookmark_error": "Error al añadir el marcador", - "unbookmark_error": "Error al eliminar el marcador", - "delete_error": "Error al borrar la publicación", - "search_error": "Error al buscar", - "toot_error": "Error al crear publicación", - "update_list_memberships_error": "Error al actualizar la lista de miembros", - "add_user_error": "Error al agregar usuario", - "authorize_url_error": "Error al obtener la url autorizada", - "domain_confirmed": "{{dominio}} está confirmado, por favor conéctese", - "domain_doesnt_exist": "Error al conectar con {{domain}}, asegúrese de que la URL del servidor es válida o correcta.", - "loading": "Cargando...", - "language_not_support_spellchecker_error": "Este idioma no es compatible con el corrector ortográfico", - "update_filter_error": "Error al actualizar el filtro", - "create_filter_error": "Error al crear el filtro" - }, - "validation": { - "login": { - "require_domain_name": "Se requiere un nombre de dominio", - "domain_format": "Por favor, introduzca sólo el nombre de dominio" - }, - "compose": { - "toot_length": "Su publicación debe tener entre {{min}} y {{max}} caracteres", - "attach_length": "Solo puedes adjuntar {{max}} imagen", - "attach_length_plural": "Solo puedes adjuntar hasta {{max}} imágenes", - "attach_image": "Solo puedes adjuntar imágenes o videos", - "poll_invalid": "Elección de voto inválidas" - } - }, - "notification": { - "favourite": { - "title": "Nuevo favorito", - "body": "{{username}} calificó tu publicación como favorito" - }, - "follow": { - "title": "Nuevo seguidor", - "body": "{{username}} ahora te está siguiendo" - }, - "follow_request": { - "title": "Nueva solicitud de seguimiento", - "body": "Se recibió una solicitud de seguimiento desde {{username}}" - }, - "reblog": { - "title": "Nuevo impulso", - "body": "{{username}} impulsó tu publicación" - }, - "quote": { - "title": "Nueva cita", - "body": "{{username}} citó tu publicación" - }, - "reaction": { - "title": "Nueva reacción", - "body": "{{username}} reaccionó a tu publicación" - }, - "status": { - "title": "Nueva publicación", - "body": "{{username}} hizo una publicación" - }, - "poll_vote": { - "title": "Nuevo voto de encuesta", - "body": "{{username}} votó en tu encuesta" - }, - "poll_expired": { - "title": "Encuesta expirada", - "body": "La encuesta de {{username}} finalizó" - } - }, - "compose": { - "title": "Nueva publicación", - "cw": "Escriba su alerta aquí", - "status": "¿En qué piensas?", - "cancel": "Cancelar", - "toot": "Publicar", - "description": "Añadir texto alterno para este medio", - "footer": { - "add_image": "Añadir imagen", - "poll": "Añadir encuesta", - "change_visibility": "Cambiar visibilidad", - "change_sensitive": "Marcar medio como sensible", - "add_cw": "Agregar alerta de contenido", - "pined_hashtag": "Hashtag anclado" - }, - "poll": { - "add_choice": "Agregar una opción", - "expires": { - "5_minutes": "5 minutos", - "30_minutes": "30 minutos", - "1_hour": "1 hora", - "6_hours": "6 horas", - "1_day": "1 día", - "3_days": "3 días", - "7_days": "7 días" - } - } - } -} diff --git a/src/config/locales/eu/translation.json b/src/config/locales/eu/translation.json deleted file mode 100644 index d7541bb6..00000000 --- a/src/config/locales/eu/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "Whalebirdi buruz", - "preferences": "Hobespenak", - "shortcuts": "Teklatuaren lasterbideak", - "services": "Zerbitzuak", - "hide": "Ezkutatu Whalebird", - "hide_others": "Ezkutatu besteak", - "show_all": "Erakutsi guztia", - "open": "Ireki leihoa", - "quit": "Itxi" - }, - "edit": { - "name": "Editatu", - "undo": "Desegin", - "redo": "Berregin", - "cut": "Ebaki", - "copy": "Kopiatu", - "paste": "Itsatsi", - "select_all": "Hautatu guztia" - }, - "view": { - "name": "Ikusi", - "toggle_full_screen": "Pantaila osoa bai/ez" - }, - "window": { - "always_show_menu_bar": "Erakutsi beti menu barra", - "name": "Leihoa", - "close": "Itxi leihoa", - "open": "Ireki leihoa", - "minimize": "Minimizatu", - "jump_to": "Joan hona" - }, - "help": { - "name": "Laguntza", - "thirdparty": "Hirugarrenen lizentziak" - } - }, - "global_header": { - "add_new_account": "Gehitu kontu berria" - }, - "side_menu": { - "profile": "Profila", - "show_profile": "Erakutsi profila", - "edit_profile": "Editatu profila", - "settings": "Kontuaren ezarpenak", - "collapse": "Tolestu", - "expand": "Hedatu", - "home": "Hasiera", - "notification": "Jakinarazpenak", - "direct": "Mezu zuzenak", - "follow_requests": "Jarraipen-eskaerak", - "favourite": "Gogokoak", - "bookmark": "Laster-markak", - "local": "Lokala", - "public": "Federatutakoa", - "hashtag": "Traolak", - "search": "Bilaketa", - "lists": "Zerrendak" - }, - "header_menu": { - "home": "Hasiera", - "notification": "Jakinarazpenak", - "favourite": "Gogokoak", - "bookmark": "Laster-markak", - "follow_requests": "Jarraipen-eskaerak", - "direct_messages": "Mezu zuzenak", - "local": "Denbora-lerro lokala", - "public": "Federatutako denbora-lerroa", - "hashtag": "Traolak", - "search": "Bilaketa", - "lists": "Zerrendak", - "members": "Kideak", - "reload": "Birkargatu" - }, - "settings": { - "title": "Ezarpenak", - "general": { - "title": "Orokorra", - "toot": { - "title": "Bidalketak", - "visibility": { - "description": "Ikusgaitasuna, defektuz", - "notice": "Ezarpen honek bidalketa berriei bakarrik eragiten die; erantzunek bidalketa nagusiaren ikusgaitasun ezarpenak jarraituko ditu.", - "public": "Publikoa", - "unlisted": "Zerrendatu gabea", - "private": "Jarraitzaileak soilik", - "direct": "Aipatutako jendea soilik" - }, - "sensitive": { - "description": "Markatu edukia hunkigarri gisa, defektuz" - } - } - }, - "timeline": { - "title": "Denbora-lerroa", - "use_marker": { - "title": "Kargatu denbora-lerroa irakurritako azken kokapenetik", - "home": "Hasiera", - "notifications": "Jakinarazpenak" - } - }, - "filters": { - "title": "Iragazkiak", - "form": { - "phrase": "Hitz-gakoa edo esaldia", - "expire": "Iraungitze-data", - "context": "Iragazkien testuinguruak", - "irreversible": "Desagerrarazi ezkutatu beharrean", - "whole_word": "Hitz osoa", - "submit": "Bidali", - "cancel": "Utzi" - }, - "expires": { - "never": "Inoiz ez", - "30_minutes": "30 minutu", - "1_hour": "Ordubete", - "6_hours": "6 ordu", - "12_hours": "12 ordu", - "1_day": "Egun 1", - "1_week": "Astebete" - }, - "new": { - "title": "Berria" - }, - "edit": { - "title": "Editatu" - }, - "delete": { - "title": "Ezabatu", - "confirm": "Ziur zaude iragazki hau ezabatu nahi duzula?", - "confirm_ok": "Bai, ezabatu", - "confirm_cancel": "Ez, utzi" - } - } - }, - "preferences": { - "title": "Hobespenak", - "general": { - "title": "Orokorra", - "sounds": { - "title": "Soinuak", - "description": "Jo soinuak", - "fav_rb": "Bidalketa bat gogoko egin edo bultzatzerakoan", - "toot": "Bidalketa bat argitaratzerakoan" - }, - "timeline": { - "title": "Denbora-lerroa", - "description": "Erabaki nola erakutsiko diren denbora-lerroak", - "cw": "Hedatu beti edukiari buruzko oharra duten bidalketak.", - "nsfw": "Erakutsi beti multimedia.", - "hideAllAttachments": "Ezkutatu beti multimedia." - }, - "other": { - "title": "Beste aukera batzuk", - "launch": "Abiarazi Whalebird ordenagailua pizterakoan", - "hideOnLaunch": "Ezkutatu Whalebird-en leihoa abiarazterakoan" - }, - "reset": { - "button": "Berrezarri hobespenak" - } - }, - "appearance": { - "title": "Itxura", - "theme_color": "Kolorea", - "theme": { - "system": "Sistemak darabilena", - "light": "Argia", - "dark": "Iluna", - "solarized_light": "Horixka", - "solarized_dark": "Urdinxka", - "kimbie_dark": "Marroixka", - "custom": "Pertsonalizatua" - }, - "custom_theme": { - "background_color": "Hondoa", - "selected_background_color": "Fokatuta dagoen hondoa", - "global_header_color": "Kontuaren menua", - "side_menu_color": "Alboko menua", - "primary_color": "Letra-tipo nagusia", - "regular_color": "Letra-tipo arrunta", - "secondary_color": "Bigarren mailako letra-tipoa", - "border_color": "Ertza", - "header_menu_color": "Goiburuko menua", - "wrapper_mask_color": "Goiburuko hondoa" - }, - "font_size": "Letraren tamaina", - "font_family": "Letra-tipoaren familia", - "toot_padding": "Bidalketen arteko espazioa", - "display_style": { - "title": "Erabiltzaileen izenaren itxura", - "display_name_and_username": "Izena eta erabiltzaile-izena", - "display_name": "Izena soilik", - "username": "Erabiltzaile-izena soilik" - }, - "time_format": { - "title": "Orduaren formatua", - "absolute": "Absolutua", - "relative": "Erlatiboa" - } - }, - "notification": { - "title": "Jakinarazpenak", - "enable": { - "description": "Jakinarazi honakoak jasotzerakoan:", - "reply": "Erantzunak", - "reblog": "Bultzadak", - "favourite": "Gogokoak", - "follow": "Jarraitzaile berriak", - "reaction": "Emoji erreakzioak", - "follow_request": "Jarraipen-eskaerak", - "status": "Egoera jakinarazpenak", - "poll_vote": "Inkestaren botoak", - "poll_expired": "Bozketen amaiera" - } - }, - "account": { - "title": "Kontua", - "connected": "Konektatutako kontuak", - "username": "Erabiltzaile-izena", - "domain": "Domeinua", - "association": "Asoziazioa", - "order": "Ordena", - "remove_association": "Kendu asoziazioa", - "remove_all_associations": "Kendu asoziazio guztiak", - "confirm": "Baieztatu", - "cancel": "Utzi", - "confirm_message": "Ziur zaude asoziazio guztiak kendu nahi dituzula?" - }, - "network": { - "title": "Sarea", - "proxy": { - "title": "Proxy ezarpenak", - "no": "Proxyrik ez", - "system": "Erabili sistemaren proxya", - "manual": "Eskuzko proxy konfigurazioa", - "protocol": "Protokoloa", - "host": "Proxy ostalaria", - "port": "Proxy ataka", - "username": "Proxy erabiltzaile-izena", - "password": "Proxy pasahitza", - "protocol_list": { - "http": "http", - "https": "https", - "socks4": "socks4", - "socks4a": "socks4a", - "socks5": "socks5", - "socks5h": "socks5h" - } - }, - "save": "Gorde" - }, - "language": { - "title": "Hizkuntza", - "language": { - "title": "Hizkuntza", - "description": "Aukeratu Whalebirdek erabiltzea nahi duzun hizkuntza." - }, - "spellchecker": { - "title": "Ortografia-egiaztatzea", - "enabled": "Gaitu ortografia-egiaztatzailea" - } - } - }, - "modals": { - "jump": { - "jump_to": "Joan hona…" - }, - "add_list_member": { - "title": "Gehitu kidea zerrendara", - "account_name": "Kontuaren izena" - }, - "list_membership": { - "title": "Zerrendaren kideak" - }, - "mute_confirm": { - "title": "Mututu erabiltzailea", - "body": "Ziur zaude erabiltzaile honen jakinarazpenak mututu nahi dituzula?", - "cancel": "Ez, utzi", - "ok": "Bai, mututu" - }, - "shortcut": { - "title": "Teklatuaren lasterbideak", - "ctrl_number": "Aldatu kontuak", - "ctrl_k": "Egin jauzi beste denbora-lerro batzuetara", - "ctrl_enter": "Argitaratu", - "ctrl_r": "Freskatu oraingo denbora-lerroa", - "j": "Hautatu hurrengo bidalketa", - "k": "Hautatu aurreko bidalketa", - "r": "Erantzun hautatutako bidalketari", - "b": "Bultzatu hautatutako bidalketa", - "f": "Egin gogoko hautatutako bidalketa", - "o": "Ikusi hautatutako bidalketaren xehetasunak", - "p": "Erakutsi hautatutako bidalketaren autorearen profila", - "i": "Ikusi hautatutako bidalketaren irudiak", - "x": "Erakutsi/Ezkutatu edukiari buruzko abisua duen bidalketa", - "?": "Erakutsi leiho hau", - "esc": "Itxi oraingo orria" - }, - "report": { - "title": "Salatu erabiltzailea", - "comment": "Iruzkin gehigarriak", - "cancel": "Utzi", - "ok": "Salatu" - }, - "thirdparty": { - "title": "Hirugarrenen lizentziak" - } - }, - "cards": { - "toot": { - "show_more": "Erakutsi gehiago", - "hide": "Ezkutatu", - "sensitive": "Erakutsi eduki hunkigarria", - "view_toot_detail": "Ikusi bidalketaren xehetasunak", - "open_in_browser": "Ireki nabigatzailean", - "copy_link_to_toot": "Kopiatu bidalketaren esteka", - "mute": "Mututu", - "block": "Blokeatu", - "report": "Salatu", - "delete": "Ezabatu", - "via": "{{application}}(e)n bidez", - "reply": "Erantzun", - "reblog": "Bultzatu", - "fav": "Egin gogoko", - "detail": "Bidalketaren xehetasunak", - "bookmark": "Jarri laster-marka", - "pinned": "Finkatutako bidalketa", - "poll": { - "vote": "Bozkatu", - "votes_count": "boto", - "until": "{{datetime}} arte", - "left": "epemuga: {{datetime}}", - "refresh": "Freskatu" - }, - "open_account": { - "title": "Ez da kontua aurkitu", - "text": "Ezin izan da {{account}} kontua zerbitzarian aurkitu. Nabigatzailean ireki nahi al duzu kontu hori?", - "ok": "Bai, ireki", - "cancel": "Ez, utzi" - } - }, - "status_loading": { - "message": "Kargatu egoera gehiago" - } - }, - "side_bar": { - "account_profile": { - "follows_you": "Jarraitzen zaitu", - "doesnt_follow_you": "Ez zaitu jarraitzen", - "detail": "Xehetasunak", - "follow": "Jarraitu", - "unfollow": "Utzi jarraitzeari", - "subscribe": "Harpidetu", - "unsubscribe": "Utzi harpidetza", - "follow_requested": "Eskaera bidalita", - "open_in_browser": "Ireki nabigatzailean", - "manage_list_memberships": "Kudeatu zerrendaren kideak", - "mute": "Mututu", - "unmute": "Utzi mututzeari", - "unblock": "Utzi blokeatzeari", - "block": "Blokeatu", - "toots": "Bidalketak", - "follows": "Jarraitzen", - "followers": "Jarraitzaile" - } - }, - "follow_requests": { - "accept": "Onartu", - "reject": "Baztertu" - }, - "hashtag": { - "tag_name": "Bilatu traola", - "delete_tag": "Ezabatu traola", - "save_tag": "Gorde traola" - }, - "search": { - "search": "Bilatu", - "account": "Kontua", - "tag": "Traola", - "keyword": "Hitz-gakoa", - "toot": "Bidalketa" - }, - "lists": { - "index": { - "new_list": "Zerrenda berria", - "edit": "Editatu", - "delete": { - "confirm": { - "title": "Baieztatu", - "message": "Zerrenda betiko ezabatuko da. Ziur al zaude jarraitu nahi duzula?", - "ok": "Bai, ezabatu", - "cancel": "Ez, utzi" - } - } - } - }, - "login": { - "domain_name_label": "Ongi etorri Whalebird-era! Saioa hasteko idatzi zerbitzariaren domeinua.", - "proxy_info": "Proxy zerbitzaria behar baduzu, konfiguratu", - "proxy_here": " hemen", - "search": "Bilatu", - "login": "Hasi saioa" - }, - "authorize": { - "manually_1": "Baimena emateko leiho berri bat ireki da nabigatzailean.", - "manually_2": "Automatikoki ireki ez bada, joan ondorengo helbidera:", - "code_label": "Sartu baimen-kodea:", - "misskey_label": "Bidali nabigatzailean baimena eman ondoren.", - "submit": "Bidali" - }, - "receive_drop": { - "drop_message": "Ekarri hona fitxategia eransteko" - }, - "message": { - "account_load_error": "Kontuak kargatzeak huts egin du", - "account_remove_error": "Kontua ezabatzeak huts egin du", - "preferences_load_error": "Hobespenak kargatzeak huts egin du", - "timeline_fetch_error": "Denbora-lerroa eskuratzeak huts egin du", - "notification_fetch_error": "Jakinarazpenak eskuratzeak huts egin du", - "favourite_fetch_error": "Gogokoak eskuratzeak huts egin du", - "bookmark_fetch_error": "Laster-markak eskuratzeak huts egin du", - "follow_request_accept_error": "Eskaera onartzeak huts egin du", - "follow_request_reject_error": "Eskaera baztertzeak huts egin du", - "attach_error": "Ezin izan da fitxategia erantsi", - "authorize_duplicate_error": "Ezin da kontu bera birritan gehitu", - "authorize_error": "Baimentzeak huts egin du", - "followers_fetch_error": "Jarraitzaileak eskuratzeak huts egin du", - "follows_fetch_error": "Jarraitzen dituenak eskuratzeak huts egin du", - "toot_fetch_error": "Bidalketaren xehetasunak eskuratzeak huts egin du", - "follow_error": "Erabiltzailea jarraitzeak huts egin du", - "unfollow_error": "Erabiltzailea jarraitzeari uzteak huts egin du", - "subscribe_error": "Erabiltzailera harpidetzeak huts egin du", - "unsubscribe_error": "Erabiltzailearen harpidetza uzteak huts egin du", - "lists_fetch_error": "Zerrendak eskuratzeak huts egin du", - "list_create_error": "Zerrenda sortzeak huts egin du", - "members_fetch_error": "Kideak eskuratzeak huts egin du", - "remove_user_error": "Erabiltzailea kentzeak huts egin du", - "find_account_error": "Ez da kontua aurkitu", - "reblog_error": "Bidalketaren bultzadak huts egin du", - "unreblog_error": "Bultzada kentzeak huts egin du", - "favourite_error": "Gogoko egiteak huts egin du", - "unfavourite_error": "Gogokoetatik kentzeak huts egin du", - "bookmark_error": "Laster-marka jartzeak huts egin du", - "unbookmark_error": "Laster-marka kentzeak huts egin du", - "delete_error": "Bidalketa ezabatzeak huts egin du", - "search_error": "Bilaketak huts egin du", - "toot_error": "Bidalketa sortzeak huts egin du", - "update_list_memberships_error": "Zerrendaren kideen eguneratzeak huts egin du", - "add_user_error": "Erabiltzailea gehitzeak huts egin du", - "authorize_url_error": "Baimentzeko URLa eskuratzeak huts egin du", - "domain_confirmed": "{{domain}} domeinua baieztatu da; hasi saioa", - "domain_doesnt_exist": "{{domain}} domeinuarekin konextioak huts egin du; egiaztatu zerbitzariaren URLa zuzena dela.", - "loading": "Kargatzen…", - "language_not_support_spellchecker_error": "Ortografia-egiaztatzailea ezin da hizkuntza honekin erabili", - "update_filter_error": "Iragazkiaren eguneraketak huts egin du", - "create_filter_error": "Iragazkiaren sorrerak huts egin du" - }, - "validation": { - "login": { - "require_domain_name": "Domeinuaren izena ezinbestekoa da", - "domain_format": "Sartu domeinuaren izena soilik" - }, - "compose": { - "toot_length": "Bidalketaren luzera {{min}} eta {{max}} artekoa izan behar da", - "attach_length": "Irudi bakar {{max}} erantsi dezakezu", - "attach_length_plural": "{{max}} irudi soilik erantsi ditzakezu", - "attach_image": "Irudiak edo bideoak soilik erantsi ditzakezu", - "poll_invalid": "Inkestaren aukerek ez dute balio" - } - }, - "notification": { - "favourite": { - "title": "Gogoko berria", - "body": "{{username}}(e)k gogoko du zure bidalketa" - }, - "follow": { - "title": "Jarraitzaile berria", - "body": "{{username}} jarraitzen hasi zaizu" - }, - "follow_request": { - "title": "Jarraipen-eskaera berria", - "body": "{{username}}(e)k jarraitzeko eskaera egin dizu" - }, - "reblog": { - "title": "Bultzada berria", - "body": "{{username}}(e)k zure bidalketa bultzatu du" - }, - "quote": { - "title": "Aipamen berria", - "body": "{{username}}(e)k zure bidalketa aipatu du" - }, - "reaction": { - "title": "Erreakzio berria", - "body": "{{username}}(e)k erreakzionatu du" - }, - "status": { - "title": "Bidalketa berria", - "body": "{{username}}(e)k ibidalketa berria egin du" - }, - "poll_vote": { - "title": "Boto berria", - "body": "{{username}}(e)k botoa eman du zure inkestan" - }, - "poll_expired": { - "title": "Inkesta amaitu da", - "body": "{{username}}(r)en inkesta amaitu da" - } - }, - "compose": { - "title": "Bidalketa berria", - "cw": "Idatzi ohartarazpena hemen", - "status": "Zer duzu buruan?", - "cancel": "Utzi", - "toot": "Argitaratu", - "description": "Gehitu multimedia honen deskribapena", - "footer": { - "add_image": "Gehitu irudiak", - "poll": "Gehitu inkesta", - "change_visibility": "Aldatu ikusgaitasuna", - "change_sensitive": "Markatu multimedia hunkigarri gisa", - "add_cw": "Gehitu edukiari buruzko oharra", - "pined_hashtag": "Finkatutako traola" - }, - "poll": { - "add_choice": "Gehitu aukera bat", - "expires": { - "5_minutes": "5 minutu", - "30_minutes": "30 minutu", - "1_hour": "Ordubete", - "6_hours": "6 ordu", - "1_day": "Egun 1", - "3_days": "3 egun", - "7_days": "7 egun" - } - } - } -} diff --git a/src/config/locales/fa/translation.json b/src/config/locales/fa/translation.json deleted file mode 100644 index 28818446..00000000 --- a/src/config/locales/fa/translation.json +++ /dev/null @@ -1,540 +0,0 @@ -{ - "main_menu": { - "application": { - "name": "Whalebird", - "about": "About Whalebird", - "preferences": "Preferences", - "shortcuts": "Keyboard shortcuts", - "services": "Services", - "hide": "Hide Whalebird", - "hide_others": "Hide others", - "show_all": "Show all", - "open": "Open window", - "quit": "Quit" - }, - "edit": { - "name": "Edit", - "undo": "Undo", - "redo": "Redo", - "cut": "Cut", - "copy": "Copy", - "paste": "Paste", - "select_all": "Select All" - }, - "view": { - "name": "View", - "toggle_full_screen": "Toggle full screen" - }, - "window": { - "always_show_menu_bar": "Always show menu bar", - "name": "Window", - "close": "Close Window", - "open": "Open Window", - "minimize": "Minimize", - "jump_to": "Jump to" - }, - "help": { - "name": "Help", - "thirdparty": "Thirdparty licenses" - } - }, - "global_header": { - "add_new_account": "Add new account" - }, - "side_menu": { - "profile": "Profile", - "show_profile": "Show profile", - "edit_profile": "Edit profile", - "settings": "Account settings", - "collapse": "Collapse", - "expand": "Expand", - "home": "Home", - "notification": "Notifications", - "direct": "Direct messages", - "follow_requests": "Follow requests", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "local": "Local timeline", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Search", - "lists": "Lists" - }, - "header_menu": { - "home": "Home", - "notification": "Notifications", - "favourite": "Favourited", - "bookmark": "Bookmarks", - "follow_requests": "Follow requests", - "direct_messages": "Direct messages", - "local": "Local timeline", - "public": "Federated timeline", - "hashtag": "Hashtags", - "search": "Search", - "lists": "Lists", - "members": "Members", - "reload": "Reload" - }, - "settings": { - "title": "Settings", - "general": { - "title": "General", - "toot": { - "title": "Posts", - "visibility": { - "description": "Default post visibility", - "notice": "This setting applies only to new posts; replies will follow the visibility settings of the parent post.", - "public": "Public", - "unlisted": "Unlisted", - "private": "Private", - "direct": "Direct" - }, - "sensitive": { - "description": "Mark media as sensitive by default" - } - } - }, - "timeline": { - "title": "Timeline", - "use_marker": { - "title": "Load the timeline from the last reading position", - "home": "Home", - "notifications": "Notifications" - } - }, - "filters": { - "title": "Filters", - "form": { - "phrase": "Keyword or phrase", - "expire": "Expire after", - "context": "Filter contexts", - "irreversible": "Drop instead of hide", - "whole_word": "Whole word", - "submit": "Submit", - "cancel": "Cancel" - }, - "expires": { - "never": "Never", - "30_minutes": "30 minutes", - "1_hour": "1 hour", - "6_hours": "6 hours", - "12_hours": "12 hours", - "1_day": "1 day", - "1_week": "1 week" - }, - "new": { - "title": "New" - }, - "edit": { - "title": "Edit" - }, - "delete": { - "title": "Delete", - "confirm": "Are you sure you want to delete this filter?", - "confirm_ok": "Delete", - "confirm_cancel": "Cancel" - } - } - }, - "preferences": { - "title": "Preferences", - "general": { - "title": "General", - "sounds": { - "title": "Sounds", - "description": "Play sounds when", - "fav_rb": "You favourite or boost a post", - "toot": "You make a post" - }, - "timeline": { - "title": "Timeline", - "description": "Customize how your timelines are displayed", - "cw": "Always expand posts tagged with content warnings.", - "nsfw": "Always show media.", - "hideAllAttachments": "Always hide media." - }, - "other": { - "title": "Other options", - "launch": "Launch Whalebird on startup", - "hideOnLaunch": "Hide the Whalebird window on launch" - }, - "reset": { - "button": "Reset preferences" - } - }, - "appearance": { - "title": "Appearance", - "theme_color": "Colour themes", - "theme": { - "system": "System", - "light": "Light", - "dark": "Dark", - "solarized_light": "SolarizedLight", - "solarized_dark": "SolarizedDark", - "kimbie_dark": "KimbieDark", - "custom": "Custom" - }, -