Compare commits

..

226 Commits

Author SHA1 Message Date
f0ddcb8d6d Images now actually send filenames to the server. Server may still disregard them, but pleromer will actually detect mime type properly and generate a sane URL. 2024-04-14 20:25:39 +10:00
9e43a19084 Baked in twemoji to energised.botegirl.parts. This will later become a config option. 2024-04-03 17:38:17 +11:00
85017bbfd7 Start of a way to override cert issues, for self-signed instances 2023-12-08 00:14:08 +11:00
3fd79df1c2 Not sure where that came from 2022-12-26 20:11:02 +11:00
7ece60d925 merge 2022-12-26 18:30:30 +11:00
cutls
0c59d3140e misskey cannot show TL 2022-12-24 22:40:11 +09:00
cutls
89e0109cba google to mastodon providing api 2022-12-11 17:56:05 +09:00
cutls
9af6c5536a Fix emoji in HTML attribute value 2022-12-10 12:29:49 +09:00
cutls
bf4f3c2e5e revert 2022-12-10 12:29:06 +09:00
cutls
6f247c9f09 Merge branch 'master' of github.com:cutls/TheDesk 2022-12-10 12:27:50 +09:00
cutls
e4a9eca514 Fix emoji in HTML attribute value 2022-12-10 12:27:46 +09:00
Cutls
f735858339
Update manager.js 2022-12-08 09:57:21 +09:00
cutls
29d6146e02 add universal package for macOS 2022-12-08 02:52:28 +09:00
cutls
704d235feb 23.0.3 2022-12-08 01:30:37 +09:00
cutls
3b58f2a2ad release note 2022-12-08 01:30:17 +09:00
cutls
06e1b08398 nano mode 2022-12-08 01:20:03 +09:00
cutls
d09efb0b05 sort hidden 2022-12-08 01:19:55 +09:00
cutls
f432b13cc0 i18n of continueCw 2022-12-08 01:07:45 +09:00
cutls
5504c4039a trend link design 2022-12-08 01:07:31 +09:00
cutls
af3442b414 font size change 2022-12-08 01:07:17 +09:00
cutls
fdaa7dfb62 easy tweetdeck add 2022-12-08 01:07:04 +09:00
cutls
c71e2e52be to 2m.cutls.com 2022-12-08 01:06:30 +09:00
cutls
f225e216e0 image loading count 2022-12-08 00:29:30 +09:00
cutls
fa4d42a1f0 fix notification filter 2022-12-08 00:27:32 +09:00
cutls
d5ca0bad24 pre: code-skip setup, fix: compatible info 2022-12-08 00:25:09 +09:00
cutls
f573ecc9eb preffer using code-skip setup and show compatible data 2022-12-08 00:24:28 +09:00
cutls
a298228143 cannot launch notarized app 2022-12-07 23:23:50 +09:00
cutls
0fb7670d2d remove debug alert 2022-12-07 23:22:51 +09:00
cutls
4ef964f539 vue dependency update #788 2022-12-07 23:22:36 +09:00
cutls
12163aaa3d revert electron to 21.1.0 2022-12-06 00:26:45 +09:00
Cutls
622a5419bc
New Crowdin updates (#738)
* New translations index.json (Romanian)

* New translations main.json (Portuguese)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations index.json (Dutch)

* New translations main.json (Dutch)

* New translations index.json (Norwegian)

* New translations main.json (Norwegian)

* New translations index.json (Polish)

* New translations main.json (Polish)

* New translations index.json (Portuguese)

* New translations index.json (Russian)

* New translations index.json (Hungarian)

* New translations main.json (Russian)

* New translations index.json (Serbian (Cyrillic))

* New translations main.json (Serbian (Cyrillic))

* New translations index.json (Swedish)

* New translations main.json (Swedish)

* New translations index.json (Turkish)

* New translations main.json (Turkish)

* New translations index.json (Ukrainian)

* New translations main.json (Ukrainian)

* New translations index.json (Chinese Simplified)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Romanian)

* New translations index.json (Catalan)

* New translations index.json (French)

* New translations main.json (French)

* New translations index.json (Spanish)

* New translations main.json (Spanish)

* New translations index.json (Afrikaans)

* New translations main.json (Afrikaans)

* New translations index.json (Arabic)

* New translations main.json (Arabic)

* New translations index.json (Bulgarian)

* New translations main.json (Bulgarian)

* New translations main.json (Catalan)

* New translations index.json (Hebrew)

* New translations index.json (Czech)

* New translations main.json (Czech)

* New translations index.json (Danish)

* New translations main.json (Danish)

* New translations index.json (German)

* New translations main.json (German)

* New translations index.json (Greek)

* New translations main.json (Greek)

* New translations index.json (Finnish)

* New translations main.json (Finnish)

* New translations main.json (Chinese Simplified)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations index.json (Vietnamese)

* New translations main.json (Vietnamese)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations index.json (Cornish)

* New translations main.json (Cornish)

* New translations index.json (English)

* New translations main.json (English)

* New translations index.json (German)

* New translations main.json (German)

* New translations acct.json (Spanish)

* New translations index.json (Spanish)

* New translations update.json (Spanish)

* New translations acct.json (Spanish)

* New translations index.json (Spanish)

* New translations main.json (Spanish)

* New translations setting.json (Spanish)

* New translations acct.json (Korean)

* New translations index.json (Korean)

* New translations main.json (Korean)

* New translations setting.json (Korean)

* New translations update.json (Korean)

* New translations main.json (Korean)

* New translations main.json (Romanian)

* New translations main.json (French)

* New translations main.json (Spanish)

* New translations main.json (Afrikaans)

* New translations main.json (Arabic)

* New translations main.json (Bulgarian)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (German)

* New translations main.json (Greek)

* New translations main.json (Finnish)

* New translations main.json (Hebrew)

* New translations main.json (Hungarian)

* New translations main.json (Italian)

* New translations main.json (Dutch)

* New translations main.json (Norwegian)

* New translations main.json (Polish)

* New translations main.json (Portuguese)

* New translations main.json (Russian)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Swedish)

* New translations main.json (Turkish)

* New translations main.json (Ukrainian)

* New translations main.json (Chinese Simplified)

* New translations main.json (Chinese Traditional)

* New translations main.json (Vietnamese)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Sinhala)

* New translations main.json (Cornish)

* New translations main.json (English)
2022-12-06 00:23:41 +09:00
Cutls
77fee7add6
Merge pull request #740 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.3
Bump chokidar from 3.5.2 to 3.5.3 in /app
2022-12-06 00:23:25 +09:00
Cutls
c9968ed5e6
Merge branch 'master' into dependabot/npm_and_yarn/app/chokidar-3.5.3 2022-12-06 00:22:41 +09:00
Cutls
e06672b220
Merge pull request #742 from cutls/dependabot/npm_and_yarn/app/json5-2.2.1
Bump json5 from 2.2.0 to 2.2.1 in /app
2022-12-06 00:22:09 +09:00
dependabot[bot]
2a83cc745a
Bump chokidar from 3.5.2 to 3.5.3 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.5.2...3.5.3)

---
updated-dependencies:
- dependency-name: chokidar
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:59 +00:00
Cutls
cbafc36d14
Merge pull request #744 from cutls/dependabot/npm_and_yarn/app/dotenv-16.0.3
Bump dotenv from 10.0.0 to 16.0.3 in /app
2022-12-06 00:21:57 +09:00
Cutls
ed94e5e38b
Merge pull request #745 from cutls/dependabot/npm_and_yarn/app/jquery-3.6.1
Bump jquery from 3.6.0 to 3.6.1 in /app
2022-12-06 00:21:49 +09:00
Cutls
d1886fe903
Merge pull request #746 from cutls/dependabot/npm_and_yarn/app/uuid-9.0.0
Bump uuid from 8.3.2 to 9.0.0 in /app
2022-12-06 00:21:33 +09:00
dependabot[bot]
fd0c8dbad5
Bump uuid from 8.3.2 to 9.0.0 in /app
Bumps [uuid](https://github.com/uuidjs/uuid) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v8.3.2...v9.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:24 +00:00
dependabot[bot]
7a2ef9cecf
Bump dotenv from 10.0.0 to 16.0.3 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 10.0.0 to 16.0.3.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v10.0.0...v16.0.3)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:16 +00:00
Cutls
009fa9efbf
Merge pull request #754 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.2.2
Bump electron-notarize from 1.2.1 to 1.2.2 in /app
2022-12-06 00:20:53 +09:00
dependabot[bot]
c959366686
Bump electron-notarize from 1.2.1 to 1.2.2 in /app
Bumps [electron-notarize](https://github.com/electron/notarize) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/electron/notarize/releases)
- [Changelog](https://github.com/electron/notarize/blob/main/.releaserc.json)
- [Commits](https://github.com/electron/notarize/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:20:30 +00:00
Cutls
68ee6ed0c4
Merge pull request #765 from cutls/dependabot/npm_and_yarn/app/vue-3.2.45
Bump vue from 2.6.14 to 3.2.45 in /app
2022-12-06 00:20:19 +09:00
dependabot[bot]
6cee1228fb
Bump jquery from 3.6.0 to 3.6.1 in /app
Bumps [jquery](https://github.com/jquery/jquery) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.6.0...3.6.1)

---
updated-dependencies:
- dependency-name: jquery
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:20:15 +00:00
Cutls
5e1f5f02ed
Merge pull request #766 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-6.2.1
Bump @fortawesome/fontawesome-free from 5.15.4 to 6.2.1 in /app
2022-12-06 00:20:09 +09:00
dependabot[bot]
8d7f46ac54
Bump vue from 2.6.14 to 3.2.45 in /app
Bumps [vue](https://github.com/vuejs/core) from 2.6.14 to 3.2.45.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.2.45)

---
updated-dependencies:
- dependency-name: vue
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:59 +00:00
dependabot[bot]
1ad3d7bdaa
Bump @fortawesome/fontawesome-free from 5.15.4 to 6.2.1 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.4 to 6.2.1.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.4...6.2.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:42 +00:00
dependabot[bot]
68bcd6a51d
Bump json5 from 2.2.0 to 2.2.1 in /app
Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:04 +00:00
Cutls
918f214a6c
Merge pull request #781 from cutls/dependabot/npm_and_yarn/app/electron-22.0.0
Bump electron from 21.1.0 to 22.0.0 in /app
2022-12-06 00:18:55 +09:00
Cutls
8d4784da82
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-22.0.0 2022-12-06 00:18:45 +09:00
Cutls
768b041616
Merge pull request #782 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.6.15
Bump sweetalert2 from 11.4.38 to 11.6.15 in /app
2022-12-06 00:18:04 +09:00
cutls
b825298bc6 23.0.2 2022-12-06 00:15:14 +09:00
cutls
30d4dae0c4 use translate api 2022-12-05 23:43:15 +09:00
Cutls
c67b4b7037
Merge pull request #780 from b-xb/patch-1
Update tl.css
2022-12-05 23:36:31 +09:00
Cutls
a21f555507
Merge pull request #769 from osapon/base_master
fix error thread view
2022-12-05 23:31:15 +09:00
osapon
c83079bb80 fix error thread view 2022-12-05 23:26:08 +09:00
cutls
ed4431e15a Merge branch 'master' of github.com:cutls/TheDesk 2022-12-05 23:22:18 +09:00
osapon
796d422222 delete amazonwidhlist 2022-12-05 23:22:14 +09:00
Cutls
7671c8c4cf
Merge pull request #207 from osapon/shortcode_replace
Use DOM for shortcode replacement.
2022-12-05 23:21:34 +09:00
Cutls
ec6d93ad80
Merge branch 'master' into shortcode_replace 2022-12-05 23:21:22 +09:00
cutls
ccc6d96172 newcomer notifiation 2022-12-05 23:12:33 +09:00
dependabot[bot]
b32f3b2730
Bump sweetalert2 from 11.4.38 to 11.6.15 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.4.38 to 11.6.15.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.4.38...v11.6.15)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 20:02:46 +00:00
dependabot[bot]
f4fd6d30d2
Bump electron from 21.1.0 to 22.0.0 in /app
Bumps [electron](https://github.com/electron/electron) from 21.1.0 to 22.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v21.1.0...v22.0.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 20:01:43 +00:00
b-xb
b4f064e98c
Update tl.css
FIx Display Name area so that the Display Name is set to the correct size
2022-11-30 16:41:34 +00:00
Cutls
77f567f821
[WIP] #770 2022-11-21 13:20:38 +09:00
osapon
2abca19e69 fix error thread view 2022-11-19 11:29:02 +09:00
cutls
f5d42fa806 pwa 2022-10-24 18:28:33 +09:00
765fcafce9 Merge remote-tracking branch 'refs/remotes/upstream/master' 2022-10-14 21:15:24 +11:00
cutls
7ba34c1074 on about window open link with external browser 2022-10-11 01:03:14 +09:00
cutls
03b2fed9ef add keyboard shortcut with textarea focus 2022-10-11 01:02:48 +09:00
cutls
4629e74c30 for m1 mac updator 2022-10-11 00:17:05 +09:00
cutls
6372c77509 debug complete 2022-10-10 23:58:11 +09:00
cutls
8fcead947d electron-userland/electron-builder issue 7050 2022-10-10 23:44:27 +09:00
cutls
a4f7f8dfd8 syntax error 2022-10-10 23:26:07 +09:00
cutls
f7ce12ca9e debug start 2022-10-10 23:25:06 +09:00
cutls
48f0c37985 security and dependency update with 23.0.1 2022-10-10 22:11:59 +09:00
cutls
a0171cfc50 debug for arm notarize 2022-10-10 21:04:49 +09:00
cutls
742b93bbef add toot-edit 2022-10-10 17:19:30 +09:00
cutls
cb9a3c4af1 add trending links, statuses for v3.5.0 2022-10-10 16:09:32 +09:00
cutls
48c872909d add limited flags of moderated account 2022-10-10 16:09:17 +09:00
cutls
c2ccc9a493 work on debian 2022-10-10 15:17:22 +09:00
cutls
49c78d2263 copy image to clipboard #715 2022-10-10 15:08:57 +09:00
cutls
dff544c3d2 Merge branch 'master' of github.com:cutls/TheDesk 2022-10-10 15:08:37 +09:00
cutls
97ebd1ddc4 update deps 2022-10-10 15:06:10 +09:00
Cutls
d742cc768a
Merge pull request #700 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-3.2.9
Bump electron-rebuild from 3.2.0 to 3.2.9 in /app
2022-10-10 14:28:59 +09:00
dependabot[bot]
00649ccf72
Bump electron-rebuild from 3.2.0 to 3.2.9 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 3.2.0 to 3.2.9.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v3.2.0...v3.2.9)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:09:40 +00:00
Cutls
7667afcdc1
New Crowdin updates (#559)
* New translations index.json (Spanish, Argentina)

* New translations index.json (Dutch)

* New translations index.json (Cornish)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Chinese Simplified)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations index.json (Polish)

* New translations index.json (Norwegian)

* New translations index.json (Italian)

* New translations index.json (Sinhala)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

* New translations index.json (French)

* New translations index.json (Romanian)

* New translations index.json (English)

* New translations setting.json (Romanian)

* New translations setting.json (Polish)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Norwegian)

* New translations setting.json (French)

* New translations setting.json (Dutch)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations acct.json (Russian)

* New translations update.json (Russian)

* New translations main.json (German)

* New translations index.json (French)

* New translations main.json (French)

* New translations setting.json (French)

* New translations setting.json (French)

* New translations acct.json (Polish)

* New translations acct.json (Polish)

* New translations acct.json (Polish)

* New translations update.json (Polish)

* New translations update.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations main.json (Polish)

* New translations index.json (Polish)

* New translations acct.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations setting.json (German)
2022-10-10 14:06:58 +09:00
Cutls
14d07b60dc
Merge pull request #626 from cutls/dependabot/npm_and_yarn/app/cached-path-relative-1.1.0
Bump cached-path-relative from 1.0.2 to 1.1.0 in /app
2022-10-10 14:06:30 +09:00
Cutls
4676d062e7
Merge pull request #646 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.2.1
Bump electron-notarize from 1.1.0 to 1.2.1 in /app
2022-10-10 14:06:09 +09:00
Cutls
0fbc3786f5
Merge pull request #669 from cutls/dependabot/npm_and_yarn/app/ejs-3.1.8
Bump ejs from 3.1.6 to 3.1.8 in /app
2022-10-10 14:05:57 +09:00
Cutls
73d7160525
Merge pull request #686 from cutls/dependabot/npm_and_yarn/app/shell-quote-1.7.3
Bump shell-quote from 1.7.2 to 1.7.3 in /app
2022-10-10 14:05:49 +09:00
Cutls
736021f6e9
Merge pull request #709 from cutls/dependabot/npm_and_yarn/app/jquery-ui-dist-1.13.2
Bump jquery-ui-dist from 1.12.1 to 1.13.2 in /app
2022-10-10 14:05:13 +09:00
Cutls
35cb2f3278
Merge pull request #725 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.7.2
Bump sanitize-html from 2.4.0 to 2.7.2 in /app
2022-10-10 14:05:04 +09:00
Cutls
5cbb791d94
Merge pull request #733 from cutls/dependabot/npm_and_yarn/app/electron-21.1.0
Bump electron from 13.2.2 to 21.1.0 in /app
2022-10-10 14:04:56 +09:00
dependabot[bot]
b5999e9657
Bump electron-notarize from 1.1.0 to 1.2.1 in /app
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.1.0...v1.2.1)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:04:08 +00:00
dependabot[bot]
26073403f3
Bump electron from 13.2.2 to 21.1.0 in /app
Bumps [electron](https://github.com/electron/electron) from 13.2.2 to 21.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.2.2...v21.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:03:47 +00:00
dependabot[bot]
f40c9d7648
Bump sanitize-html from 2.4.0 to 2.7.2 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.4.0 to 2.7.2.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.4.0...2.7.2)

---
updated-dependencies:
- dependency-name: sanitize-html
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:02:47 +00:00
dependabot[bot]
cf5cc87219
Bump ejs from 3.1.6 to 3.1.8 in /app
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.8.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.8)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:02:38 +00:00
Cutls
7f2944fbb3
Merge pull request #737 from cutls/dependabot/npm_and_yarn/app/eslint-8.25.0
Bump eslint from 7.32.0 to 8.25.0 in /app
2022-10-10 14:01:42 +09:00
Cutls
b6afd53e7a
Merge pull request #736 from cutls/dependabot/npm_and_yarn/app/electron-dl-3.4.0
Bump electron-dl from 3.2.1 to 3.4.0 in /app
2022-10-10 14:01:12 +09:00
Cutls
fd47e28f5c
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-dl-3.4.0 2022-10-10 14:01:05 +09:00
dependabot[bot]
4e60164ff4
Bump eslint from 7.32.0 to 8.25.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.32.0 to 8.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.32.0...v8.25.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:00:43 +00:00
dependabot[bot]
f20e7c3d40
Bump electron-dl from 3.2.1 to 3.4.0 in /app
Bumps [electron-dl](https://github.com/sindresorhus/electron-dl) from 3.2.1 to 3.4.0.
- [Release notes](https://github.com/sindresorhus/electron-dl/releases)
- [Commits](https://github.com/sindresorhus/electron-dl/compare/v3.2.1...v3.4.0)

---
updated-dependencies:
- dependency-name: electron-dl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:00:06 +00:00
Cutls
aa9e0489f0
Merge pull request #735 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.4.38
Bump sweetalert2 from 11.1.4 to 11.4.38 in /app
2022-10-10 13:59:41 +09:00
Cutls
7e37194b02
Merge branch 'master' into dependabot/npm_and_yarn/app/sweetalert2-11.4.38 2022-10-10 13:59:36 +09:00
Cutls
fa3fc120b4
Merge pull request #582 from cutls/dependabot/npm_and_yarn/app/system-font-families-0.6.0
Bump system-font-families from 0.4.1 to 0.6.0 in /app
2022-10-10 13:58:43 +09:00
dependabot[bot]
b172838643
Bump sweetalert2 from 11.1.4 to 11.4.38 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.1.4 to 11.4.38.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.1.4...v11.4.38)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 20:03:55 +00:00
5d5f0c20f5 ?? 2022-09-28 18:27:41 +10:00
dependabot[bot]
882be07dcd
Bump jquery-ui-dist from 1.12.1 to 1.13.2 in /app
Bumps [jquery-ui-dist](https://github.com/jquery/jquery-ui) from 1.12.1 to 1.13.2.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](https://github.com/jquery/jquery-ui/compare/1.12.1...1.13.2)

---
updated-dependencies:
- dependency-name: jquery-ui-dist
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 20:09:02 +00:00
d94e829090 Polls now work again 2022-06-26 19:05:20 +10:00
dependabot[bot]
190badbfd8
Bump shell-quote from 1.7.2 to 1.7.3 in /app
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 08:26:02 +00:00
d231297a5d fixing videos not being unloaded when closed 2022-04-03 19:19:44 +10:00
dependabot[bot]
931630820b
Bump cached-path-relative from 1.0.2 to 1.1.0 in /app
Bumps [cached-path-relative](https://github.com/ashaffer/cached-path-relative) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/ashaffer/cached-path-relative/releases)
- [Commits](https://github.com/ashaffer/cached-path-relative/commits)

---
updated-dependencies:
- dependency-name: cached-path-relative
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 15:31:02 +00:00
16fef709f6 Merge remote-tracking branch 'refs/remotes/upstream/master' 2022-01-22 03:19:37 +11:00
Cutls
cefcadfaa5
Merge pull request #622 from epixinvites/master
I updated a little bit of typos and grammatical errors in the en/setting.json
2022-01-18 15:47:00 +09:00
epixinvites
334cf50138
Update setting.json 2022-01-18 14:42:45 +08:00
49016e57e4 Fixed videos not playing on pleroma, and fixed saving images after changing image on a local post with caching disabled 2021-12-03 02:14:15 +11:00
9856c34adc Merge remote-tracking branch 'refs/remotes/upstream/master' 2021-12-03 00:59:53 +11:00
yu-chicken
1e589edc23 Style correction when account notation is long at Toot. 2021-11-05 21:00:13 +11:00
Cutls
d63e60e096
Merge pull request #584 from yu-chicken/modify-dropdownContent-style
Style correction when account notation is long at Toot.
2021-10-30 18:42:40 +09:00
yu-chicken
ac56c71181 Style correction when account notation is long at Toot. 2021-10-30 17:08:24 +09:00
dependabot[bot]
6050c733cc
Bump system-font-families from 0.4.1 to 0.6.0 in /app
Bumps [system-font-families](https://github.com/rBurgett/system-font-families) from 0.4.1 to 0.6.0.
- [Release notes](https://github.com/rBurgett/system-font-families/releases)
- [Commits](https://github.com/rBurgett/system-font-families/commits)

---
updated-dependencies:
- dependency-name: system-font-families
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 20:03:12 +00:00
db39fea577 fix merge 2021-08-29 19:33:42 +10:00
cutls
c4ebdb93fb unnotarize on M1 2021-08-28 20:05:00 +09:00
cutls
ab80d6e868 M1 build 2021-08-28 19:59:16 +09:00
cutls
fbaf6e0a80 pl-PL delete 2021-08-28 19:53:35 +09:00
cutls
a36116be0a git ignore 2021-08-28 19:53:06 +09:00
cutls
c7fa139cef ignore 2021-08-28 19:52:20 +09:00
cutls
276751f206 TheDesk 22.3.1(Koume) 2021-08-28 19:32:42 +09:00
cutls
a550841eeb Add mute duration 2021-08-28 19:21:36 +09:00
Cutls
4dfad6aa02
New Crowdin updates (#535)
* New translations index.json (German)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations acct.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)
2021-08-26 00:00:24 +09:00
Cutls
131c68dd66
Merge pull request #542 from cutls/dependabot/npm_and_yarn/app/eslint-7.32.0
Bump eslint from 7.28.0 to 7.32.0 in /app
2021-08-26 00:00:11 +09:00
dependabot[bot]
2bb8032ea9
Bump eslint from 7.28.0 to 7.32.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.28.0 to 7.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.28.0...v7.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-25 15:00:02 +00:00
Cutls
64d93d92d7
Merge pull request #545 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.4
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
2021-08-25 23:59:35 +09:00
Cutls
492b9efcf0
Merge pull request #547 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.1.0
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
2021-08-25 23:59:26 +09:00
Cutls
cb8a2cac14
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-notarize-1.1.0 2021-08-25 23:59:20 +09:00
Cutls
8e7608921a
Merge pull request #551 from cutls/dependabot/npm_and_yarn/app/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /app
2021-08-25 23:58:37 +09:00
Cutls
52b7eec8d7
Merge pull request #555 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.1.4
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
2021-08-25 23:58:16 +09:00
Cutls
72ce1b80c4
Merge pull request #556 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-3.2.0
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
2021-08-25 23:58:06 +09:00
Cutls
bfacf0fb51
Merge pull request #557 from cutls/dependabot/npm_and_yarn/app/electron-13.2.2
Bump electron from 13.1.2 to 13.2.2 in /app
2021-08-25 23:57:53 +09:00
dependabot[bot]
aa41adebc0
Bump electron from 13.1.2 to 13.2.2 in /app
Bumps [electron](https://github.com/electron/electron) from 13.1.2 to 13.2.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.2...v13.2.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-24 20:03:36 +00:00
dependabot[bot]
2eef97be6f
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 2.3.5 to 3.2.0.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v2.3.5...v3.2.0)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 20:03:37 +00:00
dependabot[bot]
a68d0d8516
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.17 to 11.1.4.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.17...v11.1.4)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 20:03:22 +00:00
dependabot[bot]
b60852c67c
Bump path-parse from 1.0.6 to 1.0.7 in /app
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 11:47:30 +00:00
dependabot[bot]
744705ca2a
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 20:03:20 +00:00
dependabot[bot]
019c4d8e96
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.3 to 5.15.4.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.3...5.15.4)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 20:04:23 +00:00
f45ab949b2 Mouseover/click for action buttons now works properly in notification trays, and unique ID for elements is now actually unique. 2021-07-11 13:27:41 +10:00
cutls
ab460d1401 introduce uuid yeah 2021-06-19 19:16:08 +09:00
cutls
679151e8ea TheDesk 22.3.0 2021-06-18 17:06:45 +09:00
cutls
da76c6732d Merge branch 'master' of https://github.com/cutls/TheDesk 2021-06-18 16:29:07 +09:00
Cutls
b108f0e09d
Update README.md 2021-06-18 16:29:01 +09:00
cutls
8d30d5d6dc dependabot 2021-06-18 16:22:32 +09:00
cutls
8b5a9520b2 git 2021-06-18 16:21:51 +09:00
Cutls
0f99a1098e
Merge pull request #509 from cutls/dependabot/npm_and_yarn/app/dotenv-10.0.0
Bump dotenv from 9.0.2 to 10.0.0 in /app
2021-06-18 16:21:25 +09:00
Cutls
a773315bf6
Merge branch 'master' into dependabot/npm_and_yarn/app/dotenv-10.0.0 2021-06-18 16:21:19 +09:00
Cutls
6e247502da
Merge pull request #519 from cutls/dependabot/npm_and_yarn/app/eslint-7.28.0
Bump eslint from 7.27.0 to 7.28.0 in /app
2021-06-18 16:20:49 +09:00
Cutls
3151ed383e
Merge branch 'master' into dependabot/npm_and_yarn/app/eslint-7.28.0 2021-06-18 16:20:42 +09:00
Cutls
607a6a204b
Merge pull request #520 from cutls/dependabot/npm_and_yarn/app/vue-2.6.14
Bump vue from 2.6.12 to 2.6.14 in /app
2021-06-18 16:20:18 +09:00
Cutls
0dae100c84
Merge pull request #521 from cutls/dependabot/npm_and_yarn/app/electron-13.1.2
Bump electron from 13.0.1 to 13.1.2 in /app
2021-06-18 16:20:09 +09:00
Cutls
d011c94ea2
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-13.1.2 2021-06-18 16:20:04 +09:00
Cutls
cd59a644a5
Merge pull request #522 from cutls/dependabot/npm_and_yarn/app/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1 in /app
2021-06-18 16:19:39 +09:00
Cutls
31ebb2df3f
Merge pull request #524 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.7
Bump electron-builder from 22.11.5 to 22.11.7 in /app
2021-06-18 16:19:30 +09:00
Cutls
9c49a78318
New Crowdin updates (#527)
* New translations index.json (Romanian)

* New translations index.json (Polish)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Chinese Simplified)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations index.json (Norwegian)

* New translations index.json (French)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

* New translations index.json (English)
2021-06-18 16:19:19 +09:00
Cutls
e3c10550d5
Merge pull request #525 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.17
Bump sweetalert2 from 11.0.12 to 11.0.17 in /app
2021-06-18 16:19:08 +09:00
Cutls
75dd9174a8
Merge pull request #526 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.2
Bump chokidar from 3.5.1 to 3.5.2 in /app
2021-06-18 16:18:58 +09:00
cutls
d62bc57368 add new fi 2021-06-18 16:16:37 +09:00
dependabot[bot]
184a2bf3aa
Bump chokidar from 3.5.1 to 3.5.2 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.5.1...3.5.2)

---
updated-dependencies:
- dependency-name: chokidar
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-15 20:04:49 +00:00
dependabot[bot]
49c4c3f23f
Bump sweetalert2 from 11.0.12 to 11.0.17 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.12 to 11.0.17.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.12...v11.0.17)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-14 20:03:35 +00:00
dependabot[bot]
aa377b78e0
Bump electron-builder from 22.11.5 to 22.11.7 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.5 to 22.11.7.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.11.5...v22.11.7)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-11 20:03:24 +00:00
dependabot[bot]
a64813d2d9
Bump normalize-url from 4.5.0 to 4.5.1 in /app
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-10 10:31:59 +00:00
dependabot[bot]
ffcbe71ecb
Bump electron from 13.0.1 to 13.1.2 in /app
Bumps [electron](https://github.com/electron/electron) from 13.0.1 to 13.1.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.0.1...v13.1.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 20:02:54 +00:00
dependabot[bot]
f9462ad5ae
Bump vue from 2.6.12 to 2.6.14 in /app
Bumps [vue](https://github.com/vuejs/vue) from 2.6.12 to 2.6.14.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.12...v2.6.14)

---
updated-dependencies:
- dependency-name: vue
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-07 20:05:18 +00:00
dependabot[bot]
bb73a7eda7
Bump eslint from 7.27.0 to 7.28.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.27.0 to 7.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.27.0...v7.28.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-07 20:04:47 +00:00
cutls
36ad187296 with acct lookup 2021-06-02 15:59:36 +09:00
cutls
5621ffbe42 fix and merge 2021-06-02 15:20:31 +09:00
cutls
9758a2a7d8 Merge branch 'master' of https://github.com/cutls/TheDesk 2021-06-02 15:20:09 +09:00
cutls
d6fd519086 fix keyboard layout 2021-06-02 15:19:58 +09:00
dependabot[bot]
b9ff0ec817
Bump dotenv from 9.0.2 to 10.0.0 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 9.0.2 to 10.0.0.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-30 19:29:30 +00:00
Cutls
3601bfc664
Merge pull request #508 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.4.0
Bump sanitize-html from 2.3.3 to 2.4.0 in /app
2021-05-31 04:27:48 +09:00
Cutls
73a8a117b0
Merge pull request #512 from cutls/dependabot/npm_and_yarn/app/eslint-7.27.0
Bump eslint from 7.26.0 to 7.27.0 in /app
2021-05-31 04:27:30 +09:00
Cutls
4af29e0caa
Merge pull request #513 from cutls/dependabot/npm_and_yarn/app/electron-13.0.1
Bump electron from 12.0.8 to 13.0.1 in /app
2021-05-31 04:27:19 +09:00
Cutls
8519980638
Merge pull request #514 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.12
Bump sweetalert2 from 11.0.8 to 11.0.12 in /app
2021-05-31 04:27:09 +09:00
Cutls
c7df190d79
New Crowdin updates (#506)
* New translations main.json (Russian)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (Hebrew)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Catalan)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (Cornish)

* New translations main.json (Sinhala)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations index.json (Italian)

* New translations main.json (Italian)
2021-05-31 04:26:46 +09:00
dependabot[bot]
9290c146e3
Bump sweetalert2 from 11.0.8 to 11.0.12 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.8 to 11.0.12.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.8...v11.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 20:04:32 +00:00
dependabot[bot]
7769113b3c
Bump electron from 12.0.8 to 13.0.1 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.8 to 13.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.8...v13.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-25 20:03:03 +00:00
dependabot[bot]
dafc36b01d
Bump eslint from 7.26.0 to 7.27.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.26.0...v7.27.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 20:06:14 +00:00
dependabot[bot]
55a3571edd
Bump sanitize-html from 2.3.3 to 2.4.0 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.3 to 2.4.0.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.3...2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-20 20:03:30 +00:00
cutls
bdae21bd12 plist resolutions to take xmldom's security fix 2021-05-20 15:26:42 +09:00
cutls
ac26f2ca6b Merge branch 'master' of https://github.com/cutls/TheDesk 2021-05-20 15:17:02 +09:00
cutls
723ff59a21 improve some styles with rounded-button 2021-05-20 15:16:58 +09:00
Cutls
c3feca504c
Merge pull request #503 from cutls/dependabot/npm_and_yarn/app/electron-12.0.8
Bump electron from 12.0.7 to 12.0.8 in /app
2021-05-20 15:14:56 +09:00
Cutls
a294b1143b
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-12.0.8 2021-05-20 15:14:52 +09:00
Cutls
541826f2fd
Merge pull request #504 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.8
Bump sweetalert2 from 10.16.7 to 11.0.8 in /app
2021-05-20 15:14:08 +09:00
Cutls
aa6c2ad186
Merge pull request #505 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.5
Bump electron-builder from 22.11.2 to 22.11.5 in /app
2021-05-20 15:13:59 +09:00
dependabot[bot]
c51dae6d60
Bump electron-builder from 22.11.2 to 22.11.5 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.2 to 22.11.5.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.11.2...v22.11.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 20:04:58 +00:00
dependabot[bot]
b2a87ae99d
Bump sweetalert2 from 10.16.7 to 11.0.8 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.16.7 to 11.0.8.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v10.16.7...v11.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 20:04:17 +00:00
dependabot[bot]
5230c6d672
Bump electron from 12.0.7 to 12.0.8 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.7 to 12.0.8.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.7...v12.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-18 20:04:44 +00:00
Cutls
29d0e80f24
Merge pull request #497 from cutls/dependabot/npm_and_yarn/app/dotenv-9.0.2
Bump dotenv from 9.0.1 to 9.0.2 in /app
2021-05-12 01:26:44 +09:00
Cutls
4b147593ca
Merge pull request #498 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.2
Bump electron-builder from 22.11.1 to 22.11.2 in /app
2021-05-12 01:26:34 +09:00
dependabot[bot]
b1137d175a
Bump electron-builder from 22.11.1 to 22.11.2 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.1 to 22.11.2.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.11.1...v22.11.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 20:06:15 +00:00
dependabot[bot]
bbc90b6d6f
Bump dotenv from 9.0.1 to 9.0.2 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 9.0.1 to 9.0.2.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 20:05:34 +00:00
Cutls
9fe9bcd04e
Merge pull request #495 from cutls/dependabot/npm_and_yarn/app/eslint-7.26.0
Bump eslint from 7.23.0 to 7.26.0 in /app
2021-05-11 03:13:57 +09:00
dependabot[bot]
79ae11aea8
Bump eslint from 7.23.0 to 7.26.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.23.0 to 7.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.23.0...v7.26.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:12:40 +00:00
Cutls
50582d49f0
New Crowdin updates (#478)
* New translations index.json (German)

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Romanian)

* New translations index.json (French)

* New translations index.json (Spanish)

* New translations index.json (Chinese Simplified)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Chinese Traditional)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Russian)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Hebrew)

* New translations index.json (Portuguese)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Polish)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (English)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations main.json (Russian)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations index.json (Spanish, Argentina)

* New translations setting.json (Spanish, Argentina)
2021-05-11 03:11:28 +09:00
Cutls
897fb3082d
Merge pull request #494 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.1
Bump electron-builder from 22.10.5 to 22.11.1 in /app
2021-05-11 03:10:55 +09:00
Cutls
947d0b77bd
Merge pull request #496 from cutls/dependabot/npm_and_yarn/app/dotenv-9.0.1
Bump dotenv from 8.2.0 to 9.0.1 in /app
2021-05-11 03:10:45 +09:00
dependabot[bot]
e07e79a918
Bump dotenv from 8.2.0 to 9.0.1 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 8.2.0 to 9.0.1.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v8.2.0...v9.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:05:46 +00:00
dependabot[bot]
cdc3b22752
Bump electron-builder from 22.10.5 to 22.11.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.10.5 to 22.11.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.10.5...v22.11.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:04:57 +00:00
Cutls
0988728bb2
Merge pull request #491 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.1
Bump electron-builder from 22.10.5 to 22.11.1 in /app
2021-05-11 03:04:12 +09:00
dependabot-preview[bot]
0ad628b259
Bump electron-builder from 22.10.5 to 22.11.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.10.5 to 22.11.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.10.5...v22.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-10 18:03:22 +00:00
Cutls
44af72f9e6
Merge pull request #486 from cutls/dependabot/npm_and_yarn/app/eslint-7.25.0
Bump eslint from 7.23.0 to 7.25.0 in /app
2021-05-11 03:02:51 +09:00
Cutls
2d0316035f
Merge pull request #489 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.16.7
Bump sweetalert2 from 10.15.7 to 10.16.7 in /app
2021-05-11 03:02:36 +09:00
Cutls
735c2e153e
Merge pull request #487 from cutls/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-05-11 03:02:27 +09:00
Cutls
6f9d6cb35f
Merge pull request #473 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.3.3
Bump sanitize-html from 2.3.2 to 2.3.3 in /app
2021-05-11 03:02:09 +09:00
Cutls
de796db39a
Merge pull request #474 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.3
Bump @fortawesome/fontawesome-free from 5.15.2 to 5.15.3 in /app
2021-05-11 03:02:01 +09:00
Cutls
88cb706ff5
Merge pull request #492 from cutls/dependabot/npm_and_yarn/app/electron-12.0.7
Bump electron from 12.0.2 to 12.0.7 in /app
2021-05-11 03:01:34 +09:00
Cutls
6bc19354c9
Merge pull request #493 from cutls/dependabot/npm_and_yarn/app/postcss-8.2.14
[Security] Bump postcss from 8.2.3 to 8.2.14 in /app
2021-05-11 03:01:22 +09:00
dependabot-preview[bot]
c70b69d043
[Security] Bump postcss from 8.2.3 to 8.2.14 in /app
Bumps [postcss](https://github.com/postcss/postcss) from 8.2.3 to 8.2.14. **This update includes a security fix.**
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.2.3...8.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-10 15:35:46 +00:00
dependabot-preview[bot]
f53e0f4550
Bump electron from 12.0.2 to 12.0.7 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.2 to 12.0.7.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.2...v12.0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-07 20:14:15 +00:00
dependabot-preview[bot]
672de930ce
Bump sweetalert2 from 10.15.7 to 10.16.7 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.15.7 to 10.16.7.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v10.15.7...v10.16.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-03 20:15:58 +00:00
dependabot-preview[bot]
2ba4d2303a
Bump eslint from 7.23.0 to 7.25.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.23.0 to 7.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.23.0...v7.25.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-27 23:37:00 +00:00
cutls
8acf86d9cb fetch the data with dialog 2021-04-18 19:11:39 +09:00
cutls
5de0ede4e1 font select 2021-04-18 18:47:30 +09:00
dependabot-preview[bot]
7feea86cf7
Bump @fortawesome/fontawesome-free from 5.15.2 to 5.15.3 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.2 to 5.15.3.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.2...5.15.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-01 20:14:49 +00:00
dependabot-preview[bot]
269405a40f
Bump sanitize-html from 2.3.2 to 2.3.3 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.2...2.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-01 20:14:23 +00:00
osapon
7b2254948b Use DOM for shortcode replacement. 2020-01-01 19:21:35 +09:00
204 changed files with 17501 additions and 17676 deletions

37
.github/workflows/build-debug-macos.bup vendored Normal file
View File

@ -0,0 +1,37 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: macOS debug build
on: push
jobs:
build:
runs-on: macos-latest
environment:
name: build
env:
APPLEID: ${{ secrets.APPLEID }}
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK}}
strategy:
matrix:
node-version: [14.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: cd app && yarn
- run: cd app && yarn build --skipX64 --withArm64
- name: Deploy to S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run:
aws s3 sync --delete --region ap-northeast-1 ./build/ s3://cutls-s3-backup/debug

4
.gitignore vendored
View File

@ -26,7 +26,7 @@ app/git
*.code-workspace *.code-workspace
releasenote.md releasenote.md
app/yarn-error.log app/yarn-error.log
app/js/platform/aiscript.js app/js/platform/native.js
app/view/es-ES app/view/es-ES
app/view/fr-FR app/view/fr-FR
app/view/no-NO app/view/no-NO
@ -34,7 +34,9 @@ app/view/zh-CN
app/view/ru-RU app/view/ru-RU
app/view/zh-TW app/view/zh-TW
app/view/pt-BR app/view/pt-BR
app/view/si-LK
app/build.js app/build.js
app/view/make/make.js app/view/make/make.js
app/view/make/makeCli.ts app/view/make/makeCli.ts
app/.env app/.env
app/view/make/index.generated.html

8
.prettierrc Normal file
View File

@ -0,0 +1,8 @@
{
"tabWidth": 4,
"useTabs": true,
"semi": false,
"singleQuote": true,
"printWidth": 200,
"jsxBracketSameLine": true
}

46
PKGBUILD Normal file
View File

@ -0,0 +1,46 @@
# Maintainer: Zergling_man, from fedora.email
pkgname=thedesk
_pkgname=TheDesk
pkgver=24.2.1
_electronversion=22
pkgrel=2
pkgdesc="Mastodon Client for PC, Zergling_man's pleroma-focused fork."
arch=("x86_64")
url="https://thedesk.top/"
license=('GPL3')
conflicts=("${pkgname%-bin}")
depends=("npm")
makedepends=("npm")
optdeps=('hicolor-icon-theme')
source=("git+http://precious.harpy.faith/Zergling_man/TheDesk.git")
sha256sums=('SKIP')
build()
{
cd ${srcdir}/${_pkgname}/app
npm run build
npm run construct
}
package()
{
cd ${pkgdir}
install -d opt/${_pkgname}/ usr/share/icons/hicolor usr/share/applications/ usr/share/licenses/thedesk/ usr/bin/
cd ${srcdir}/${_pkgname}
mv thedesk ${pkgdir}/usr/bin/
chmod 555 ${pkgdir}/usr/bin/thedesk
mv thedesk.desktop ${pkgdir}/usr/share/applications/
mv LICENSE ${pkgdir}/usr/share/licenses/thedesk/
cd app/img/icons/
sizes=($(ls | grep -Eo '[0-9x]+'))
for size in ${sizes[@]}; do
install -d ${pkgdir}/usr/share/icons/hicolor/$size/apps/
mv icon-$size.png ${pkgdir}/usr/share/icons/hicolor/$size/apps/desk.png
done
cd ..
rm -d icons
cd ${srcdir}
cp -r ${_pkgname} ${pkgdir}/opt/
}

View File

@ -44,9 +44,7 @@ Please write issues to improve TheDesk affinity with Pleroma.
## Contributors ## Contributors
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[toneji](https://minohdon.jp/@toneji) Build for macOS(Now: Travis CI) [![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[popn_ja](https://popon.pptdn.jp/@popn_ja) Build for Linux(Now: Travis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox) Fellow coder
## Support ## Support

View File

@ -35,9 +35,10 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。 Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## 詳しく ## よみもの
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk) * [TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
* [TheDeskを作って思う今クライアントを作る意味 | Cutls Code Archives ](https://code.cutls.com/thedesk-log/)
## ライセンス ## ライセンス
@ -47,9 +48,7 @@ Issuesに書いてある問題についてはなるべく対処しますので
## 主なコントリビューター ## 主なコントリビューター
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[とねぢ](https://minohdon.jp/@toneji) macOSビルダー(現在はTravis CI) [![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) Linuxビルダー(現在はTravis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox)
## 支援 ## 支援

View File

@ -1,139 +1,135 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ja"> <html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
<link href="./css/master.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
<meta charset="utf-8" />
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
a, <head>
button { <title>TheDesk</title>
-webkit-app-region: no-drag; <meta content="width=device-width,initial-scale=1.0" name="viewport" />
} <link href="./node_modules/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
<link href="./css/master.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
<meta charset="utf-8" />
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
a,
button {
-webkit-app-region: no-drag;
}
.container {
width: 100%;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6';
text-align: left;
margin: 5px;
}
.area-name1 {
grid-area: name1;
}
.area-data1 {
grid-area: data1;
}
.area-name2 {
grid-area: name2;
}
.area-data2 {
grid-area: data2;
}
.area-name3 {
grid-area: name3;
}
.area-data3 {
grid-area: data3;
}
.area-name4 {
grid-area: name4;
}
.area-data4 {
grid-area: data4;
}
.area-name5 {
grid-area: name5;
}
.area-data5 {
grid-area: data5;
}
.area-name6 {
grid-area: name6;
}
.area-data6 {
grid-area: data6;
}
</style>
</head>
.container { <body class="center" style="overflow: hidden;">
width: 100%; <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
display: grid; <script type="text/javascript" src="./js/platform/first-not-view.js"></script>
grid-template-columns: 1fr 1fr; <script type="text/javascript" src="./node_modules/@cutls/materialize-css/dist/js/materialize.js"></script>
grid-template-rows: 1fr 1fr 1fr 1fr 1fr; <img src="./img/desk.svg" style="max-width: 58%;" />
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6'; <h5>TheDesk</h5>
text-align: left; <div class="container">
margin: 5px; <div class="area-name1">Display version</div>
} <div class="area-data1" id="now"></div>
<div class="area-name2">Internal version</div>
<div class="area-data2" id="ver"></div>
<div class="area-name3">Commit(7chars)</div>
<div class="area-data3" id="hash"></div>
<div class="area-name4">Chromium</div>
<div class="area-data4" id="chrome"></div>
<div class="area-name5">Electron</div>
<div class="area-data5" id="electron"></div>
<div class="area-name6">Node.js</div>
<div class="area-data6" id="node"></div>
</div>
<div class="cp">
Copyright &copy; TheDesk 2018<br /> Main developer(author): <a href="https://2m.cutls.com/@Cutls" target="_blank">Cutls P</a><br />
<a href="https://github.com/cutls/TheDesk/graphs/contributors" style="text-align: center; user-select: none;"><img src="https://opencollective.com/TheDesk/contributors.svg?width=700&button=false" style="width: 100%"></a>
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script>
var about = JSON.parse(localStorage.getItem('about'))
$('#now').text(localStorage.getItem('ver'))
$('#node').text(about[0])
$('#chrome').text(about[1])
$('#electron').text(about[2])
if (location.search) {
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/)
var ver = m[1]
$('#ver').text(ver)
}
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>')
$(document).on('click', 'a', (e) => {
e.preventDefault()
var url = $(e.target).attr('href')
postMessage(['openUrlMainProcess', url], '*')
return false
})
</script>
</body>
.area-name1 { </html>
grid-area: name1;
}
.area-data1 {
grid-area: data1;
}
.area-name2 {
grid-area: name2;
}
.area-data2 {
grid-area: data2;
}
.area-name3 {
grid-area: name3;
}
.area-data3 {
grid-area: data3;
}
.area-name4 {
grid-area: name4;
}
.area-data4 {
grid-area: data4;
}
.area-name5 {
grid-area: name5;
}
.area-data5 {
grid-area: data5;
}
.area-name6 {
grid-area: name6;
}
.area-data6 {
grid-area: data6;
}
</style>
</head>
<body class="center" style="overflow: hidden;">
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width: 62%;" />
<h5>TheDesk</h5>
<div class="container">
<div class="area-name1">Display version</div>
<div class="area-data1" id="now"></div>
<div class="area-name2">Internal version</div>
<div class="area-data2" id="ver"></div>
<div class="area-name3">Commit(7chars)</div>
<div class="area-data3" id="hash"></div>
<div class="area-name4">Chromium</div>
<div class="area-data4" id="chrome"></div>
<div class="area-name5">Electron</div>
<div class="area-data5" id="electron"></div>
<div class="area-name6">Node.js</div>
<div class="area-data6" id="node"></div>
</div>
<div class="cp">
Copyright &copy; TheDesk 2018<br />
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br />
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a
href="https://pl.kpherox.dev/kPherox"
target="_blank"
>kPherox</a
>
and all users
<img draggable="false" style="width: 0.8rem; top: 1px; margin-left: 1px; position: relative;" alt="❤️" title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png" />
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script>
var about = JSON.parse(localStorage.getItem('about'))
$('#now').text(localStorage.getItem('ver'))
$('#node').text(about[0])
$('#chrome').text(about[1])
$('#electron').text(about[2])
if (location.search) {
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/)
var ver = m[1]
$('#ver').text(ver)
}
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>')
$(document).on('click', 'a', (e) => {
var url = $(e.target).attr('href')
postMessage(['openUrl', url], '*')
return false
})
</script>
</body>
</html>

1
app/build.d.ts vendored
View File

@ -10,5 +10,6 @@ declare function _exports(options?: {
skipLinux?: boolean; skipLinux?: boolean;
skipMacOS?: boolean; skipMacOS?: boolean;
unnotarize?: boolean; unnotarize?: boolean;
skipUniversal?: boolean;
}): void; }): void;
export = _exports; export = _exports;

View File

@ -11,6 +11,7 @@ const construct = require('./view/make/make.js')
const { platform, arch } = process const { platform, arch } = process
const Platform = builder.Platform const Platform = builder.Platform
const Arch = builder.Arch const Arch = builder.Arch
require('dotenv').config()
const artifactName = 'TheDesk-setup-${arch}.${ext}' const artifactName = 'TheDesk-setup-${arch}.${ext}'
const config = { const config = {
productName: 'TheDesk', productName: 'TheDesk',
@ -41,6 +42,9 @@ const config = {
target: ['zip', 'appImage', 'snap', 'deb'], target: ['zip', 'appImage', 'snap', 'deb'],
category: 'Network', category: 'Network',
}, },
deb: {
depends: ['gconf2', 'gconf-service', 'libnotify4', 'libappindicator1', 'libxtst6', 'libnss3']
},
mac: { mac: {
hardenedRuntime: true, hardenedRuntime: true,
gatekeeperAssess: false, gatekeeperAssess: false,
@ -70,8 +74,8 @@ async function cmd(options) {
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) { if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
console.log('start building for application stores') console.log('start building for application stores')
construct(ver, basefile, false, true) construct(ver, basefile, false, true)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -83,7 +87,7 @@ async function cmd(options) {
'../build/TheDesk-setup-ia32-store.exe' '../build/TheDesk-setup-ia32-store.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -96,14 +100,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) await build(Platform.LINUX, Arch.ia32, config)
} }
if ((isTrue(options, 'withIa32') && arch == 'x64')) { if ((isTrue(options, 'withIa32') && arch === 'x64')) {
console.log('snapcraft does not curretly support builing i386 on amd64') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
fs.renameSync( fs.renameSync(
@ -117,8 +121,8 @@ async function cmd(options) {
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
console.log('start building for normal usage') console.log('start building for normal usage')
construct(ver, basefile, false, false) construct(ver, basefile, false, false)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -126,7 +130,7 @@ async function cmd(options) {
'../build/TheDesk-ia32.exe' '../build/TheDesk-ia32.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -138,7 +142,7 @@ async function cmd(options) {
'../build/TheDesk-setup.exe' '../build/TheDesk-setup.exe'
) )
} }
if ((isTrue(options, 'withArm64') && arch == 'x64') || arch == 'arm64') { if ((isTrue(options, 'withArm64') && arch === 'x64') || arch === 'arm64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'arm64') config.nsis.artifactName = artifactName.replace('${arch}', 'arm64')
await build(Platform.WINDOWS, Arch.arm64, config) await build(Platform.WINDOWS, Arch.arm64, config)
fs.renameSync( fs.renameSync(
@ -147,14 +151,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) await build(Platform.LINUX, Arch.ia32, config)
} }
if (isTrue(options, 'withIa32') && arch == 'x64') { if (isTrue(options, 'withIa32') && arch === 'x64') {
console.log('snapcraft does not curretly support builing i386 on amd64') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
fs.renameSync( fs.renameSync(
`../build/thedesk_${version}_amd64.snap`, `../build/thedesk_${version}_amd64.snap`,
@ -168,9 +172,27 @@ async function cmd(options) {
} }
} }
} }
if (platform == 'darwin' && !isTrue(options, 'skipMacOS')) { if (platform === 'darwin' && !isTrue(options, 'skipMacOS')) {
if(isTrue(options, 'unnotarize')) delete config.afterSign if (isTrue(options, 'unnotarize')) delete config.afterSign
await build(Platform.MAC, Arch.x64, config) if (isTrue(options, 'unnotarize')) delete config.mac.entitlements
if (isTrue(options, 'unnotarize')) delete config.mac.entitlementsInherit
if (isTrue(options, 'unnotarize')) process.env.CSC_IDENTITY_AUTO_DISCOVERY = false
if (isTrue(options, 'unnotarize')) delete config.afterSign
if (!isTrue(options, 'skipUniversal')) await build(Platform.MAC, Arch.universal, config)
if (isTrue(options, 'withArm64')) {
await build(Platform.MAC, Arch.arm64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-arm64.dmg`
)
}
if (isTrue(options, 'withX64')) {
await build(Platform.MAC, Arch.x64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-x64.dmg`
)
}
} }
} }
} }
@ -210,6 +232,10 @@ TheDesk Builder command tool
[only macOS] [only macOS]
--unnotarize: Without notarize --unnotarize: Without notarize
Build as a "universal" package.
--skipUniversal: skip build for universal enviroment
--withX64: build x64-only build
--withArm64: build arm64-only build
` `
} }
@ -223,4 +249,4 @@ TheDesk Builder command tool
* @param {boolean} [options.withArm64] - [Windows only(beta)] arm64 build on x64 system(if your machine is arm64, it will be built if this arg is not passed, and not build store build for arm64) * @param {boolean} [options.withArm64] - [Windows only(beta)] arm64 build on x64 system(if your machine is arm64, it will be built if this arg is not passed, and not build store build for arm64)
* @return {void} * @return {void}
*/ */
module.exports = cmd module.exports = cmd

View File

@ -2,7 +2,13 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key> <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/> <true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

@ -1,10 +1,6 @@
require('dotenv').config() require('dotenv').config()
const { notarize } = require('electron-notarize') const { notarize } = require('@electron/notarize')
// Notarizeをしない場合、下のuseNotarizeをtrueからfalseに変更してください。
const useNotarize = true const useNotarize = true
exports.default = async function notarizing(context) { exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context const { electronPlatformName, appOutDir } = context
if (electronPlatformName !== 'darwin' || !useNotarize) return if (electronPlatformName !== 'darwin' || !useNotarize) return
@ -20,4 +16,4 @@ exports.default = async function notarizing(context) {
} catch (e) { } catch (e) {
throw console.log(e) throw console.log(e)
} }
} }

23
app/build/notarize.old.js Normal file
View File

@ -0,0 +1,23 @@
require('dotenv').config()
const { notarize } = require('electron-notarize')
// Notarizeをしない場合、下のuseNotarizeをtrueからfalseに変更してください。
const useNotarize = true
exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName !== 'darwin' || !useNotarize) return
const appName = context.packager.appInfo.productFilename
console.log(`start notarize: ${appOutDir}/${appName}.app`)
try {
return await notarize({
appBundleId: 'top.thedesk',
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLEID,
appleIdPassword: process.env.APPLEIDPASS,
})
} catch (e) {
throw console.log(e)
}
}

View File

@ -28,7 +28,9 @@ html {
text-transform: none; text-transform: none;
height: 2.76rem; height: 2.76rem;
line-height: 2.76rem; line-height: 2.76rem;
border-radius: 0.5rem;
} }
.markdown { .markdown {
display: none; display: none;
} }
@ -84,11 +86,12 @@ option {
#imagemodal .modal-footer { #imagemodal .modal-footer {
overflow-x: hidden; overflow-x: hidden;
overflow-y: hidden; overflow-y: hidden;
height: 56px;
} }
#imagewrap { #imagewrap {
width: 100%; width: 100%;
height: 100%; height: calc(100% - 4px);
} }
#imagewrap img.rotate-90 { #imagewrap img.rotate-90 {
transform: rotate(-90deg); transform: rotate(-90deg);
@ -234,6 +237,12 @@ blockquote:before,
right: 0; right: 0;
top: 0; top: 0;
} }
.menu-icon {
font-size: 1.4rem !important;
top: 0.3rem;
line-height: 1rem !important;
position: relative;
}
#start { #start {
display: none; display: none;
position: fixed; position: fixed;
@ -329,8 +338,26 @@ blockquote:before,
.collapsible-header:focus { .collapsible-header:focus {
background-color: var(--thirdColor) !important; background-color: var(--thirdColor) !important;
} }
.modal-footer { .modal .modal-footer {
background-color: var(--modalfooter) !important; background-color: var(--modalfooter) !important;
border-radius: 0;
padding: 0;
}
.modal {
border-radius: 1.5rem;
}
.progress .determinate,
.progress .indeterminate {
background-color: var(--active);
}
.nomargin {
margin: 0;
}
#imginfo {
float: left;
padding-top: 0.23rem;
line-height: normal;
padding-left: 1rem;
} }
.font { .font {
font-size: 1.5rem; font-size: 1.5rem;
@ -342,7 +369,8 @@ blockquote:before,
.release-do { .release-do {
border: solid 2px; border: solid 2px;
border-color: var(--text); border-color: var(--text);
padding: 5px; padding: 1.5rem;
border-radius: 0.5rem;
} }
#pickers { #pickers {
display: flex; display: flex;
@ -392,7 +420,8 @@ input[type='color']::-webkit-color-swatch {
color: var(--text); color: var(--text);
} }
#left-menu a:hover { #left-menu a:hover {
background-color: var(--beforehover); background-color: var(--emphasized);
filter: brightness(80%);
} }
#left-menu span { #left-menu span {
margin-left: 0.4rem; margin-left: 0.4rem;
@ -401,7 +430,9 @@ input[type='color']::-webkit-color-swatch {
background-color: var(--emphasized); background-color: var(--emphasized);
} }
#left-menu a.active span { #left-menu a.active span {
text-decoration: underline; text-decoration: none;
border-bottom: 1px solid;
padding-bottom: 0.5px;
} }
#right-menu { #right-menu {
width: 100%; width: 100%;
@ -419,7 +450,7 @@ input[type='color']::-webkit-color-swatch {
align-items: center; align-items: center;
min-width: 150px; min-width: 150px;
width: 50%; width: 50%;
height: 2.5rem; height: 2.5rem;
cursor: pointer; cursor: pointer;
color: var(--text); color: var(--text);
} }
@ -430,13 +461,14 @@ input[type='color']::-webkit-color-swatch {
} }
#tltype .type span { #tltype .type span {
width: calc(100% - 4rem); width: calc(100% - 4rem);
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
word-break: break-word; word-break: break-word;
overflow: hidden; overflow: hidden;
} }
#tltype .type:hover { #tltype .type:hover {
background-color: var(--beforehover); background-color: var(--emphasized);
filter: brightness(80%);
} }
#tltype .active { #tltype .active {
background-color: var(--emphasized); background-color: var(--emphasized);
@ -720,3 +752,12 @@ button {
position: relative; position: relative;
top: -4px; top: -4px;
} }
#fonts {
overflow-y: scroll;
width: 22rem;
height: 40rem;
position: absolute;
background-color: var(--bg);
z-index: 2;
padding: 5px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -297,7 +297,7 @@ iframe,
.area-display_name { .area-display_name {
user-select: text; user-select: text;
height: 1.5em; height: 1.5rem;
margin: 0.15rem; margin: 0.15rem;
margin-left: 0.4rem; margin-left: 0.4rem;
overflow: hidden; overflow: hidden;
@ -360,7 +360,7 @@ iframe,
} }
.area-actions .btn-flat { .area-actions .btn-flat {
height: 1.3rem; height: 1.3rem;
line-height: 1.3rem; line-height: 1.3rem;
} }
.area-actions .btn-flat, .area-actions .btn-flat,
.area-vis i, .area-vis i,
@ -386,11 +386,13 @@ iframe,
} }
.notf-udg-text { .notf-udg-text {
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
word-break: break-word; word-break: break-word;
overflow: hidden; overflow: hidden;
max-width: calc(100% - 150px); max-width: calc(100% - 150px);
display: inline-block; display: inline-block;
position: relative;
top: 0.2rem;
} }
.cusr { .cusr {
user-select: text; user-select: text;
@ -416,6 +418,12 @@ iframe,
margin-top: 0.46rem; margin-top: 0.46rem;
margin-left: 0.46rem; margin-left: 0.46rem;
} }
.landing {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.quote-inline { .quote-inline {
display: none; display: none;
@ -449,6 +457,12 @@ iframe,
.btn-flat { .btn-flat {
color: var(--text); color: var(--text);
} }
.sublink {
font-size: 1.4rem !important;
position: relative;
top: 0.4rem;
cursor: pointer;
}
.area-side i { .area-side i {
margin-left: 0.75rem; margin-left: 0.75rem;
} }
@ -459,6 +473,9 @@ iframe,
font-size: 1.2rem; font-size: 1.2rem;
margin-right: 0.15rem; margin-right: 0.15rem;
} }
.action li i {
margin-right: 0.5rem;
}
.action .fa-quote-right { .action .fa-quote-right {
margin-top: 0.15rem; margin-top: 0.15rem;
} }
@ -710,15 +727,15 @@ p:not(:last-child) {
} }
.notf-indv-box .setting { .notf-indv-box .setting {
font-size: 1rem; font-size: 1rem;
width: calc(25% - 6px); width: calc(25% - 6px);
margin: 3px; margin: 3px;
height: 100px; height: 100px;
text-align: center; text-align: center;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding-top: 17px; padding-top: 17px;
border: 1px solid; border: 1px solid;
border-radius: 5px; border-radius: 5px;
} }
.notf-indv-box .setting:hover { .notf-indv-box .setting:hover {
color: var(--text); color: var(--text);
@ -761,7 +778,12 @@ p:not(:last-child) {
position: relative; position: relative;
} }
.dropdown-content li { .dropdown-content li {
padding-top: 0.4rem; padding-top: 0.4rem;
}
.dropdown-content li > a, .dropdown-content li > span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
} }
.fa-2x > .emoji-img { .fa-2x > .emoji-img {
width: 2.3rem !important; width: 2.3rem !important;

File diff suppressed because it is too large Load Diff

View File

@ -1,170 +1,219 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/ /*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data { #his-data {
background-repeat: no-repeat; background-repeat: no-repeat;
background-image: url('../img/loading.svg'); background-image: url('../img/loading.svg');
overflow-y: hidden; overflow-y: hidden;
} }
#his-data .btn .material-icons { #his-data .btn .material-icons {
float: left; float: left;
} }
#his-data-content { #his-data-content {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
#his-name { #his-name {
font-size: 1.5rem; font-size: 1.5rem;
} }
#his-prof { #his-prof {
width: 7.7rem; width: 7.7rem;
margin-right: 0.4rem; margin-right: 0.4rem;
} }
.his-float { .his-float {
overflow-y: scroll; overflow-y: scroll;
padding: 0.4rem; padding: 0.4rem;
} }
#his-float-data { #his-float-data {
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-leftside { #his-leftside {
width: 28.4rem; width: 28.4rem;
max-width: 30vw; max-width: 30vw;
} }
#his-float-timeline { #his-float-timeline {
max-width: 47.5rem; max-width: 47.5rem;
min-width: calc(100% - 29.4rem); width: calc(100% - 28.4rem);
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-basic-prof { #his-basic-prof {
display: flex; display: flex;
min-height: 10rem; min-height: 10rem;
} }
#his-field { #his-field {
vertical-align: baseline; vertical-align: baseline;
text-align: center; text-align: center;
padding: 0; padding: 0;
} }
#his-field tr { #his-field tr {
height: 1.5rem; height: 1.5rem;
} }
.his-field-title { .his-field-title {
height: 1.5rem; height: 1.5rem;
padding: 0; padding: 0;
background-color: #757575; background-color: #757575;
text-align: center; text-align: center;
padding: 0.4rem; padding: 0.4rem;
margin-bottom: 1px; margin-bottom: 1px;
width: 30%; width: 30%;
} }
.his-field-content { .his-field-content {
height: 1.5rem; height: 1.5rem;
padding: 0; padding: 0;
padding-left: 0.4rem; padding-left: 0.4rem;
} }
.his-var-content a span.ellipsis:after { .his-var-content a span.ellipsis:after {
content: '...'; content: '...';
} }
.his-var-content a:not(.mention) span:last-of-type { .his-var-content a:not(.mention) span:last-of-type {
display: none; display: none;
} }
#his-data a .rep_ct, #his-data a .rep_ct,
#his-data a .rt_ct, #his-data a .rt_ct,
#his-data a .fav_ct { #his-data a .fav_ct {
display: inline !important; display: inline !important;
} }
#his-data-show { #his-data-show {
margin: 1.5rem; margin: 1.5rem;
margin-left: 3.8rem; margin-left: 3.8rem;
margin-right: 3.8rem; margin-right: 3.8rem;
background-color: var(--his-data); background-color: var(--his-data);
height: calc(100% - 1.5rem); height: calc(100% - 1.5rem);
margin-bottom: 0; margin-bottom: 0;
padding: 0.4rem; padding: 0.4rem;
} }
#his-data-wrap { #his-data-wrap {
display: flex; display: flex;
} }
.his-var-content { .his-var-content {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 3.4rem); height: calc(100% - 3.4rem);
padding-bottom: 60px; padding-bottom: 60px;
} }
#my-data-nav .btn { #my-data-nav .btn {
width: 10.6rem; width: 10.6rem;
} }
#my-data-nav .active-back { #my-data-nav .active-back {
display: none; display: none;
} }
#his-name .emojione, #his-name .emojione,
#his-name .emoji-img { #his-name .emoji-img {
width: 1.538rem; width: 1.538rem;
} }
#his-plus-action .btn { #his-plus-action .btn {
padding-right: 0.4rem; padding-right: 0.4rem;
padding-left: 0.4rem; padding-left: 0.4rem;
} }
.tabs { .tabs {
display: flex; display: flex;
} }
.tabs .tab a { .tabs .tab a {
padding: 0.6rem 0.9rem; padding: 0.6rem 0.9rem;
} }
#his-des { #his-des {
max-height: 17.7rem; max-height: 17.7rem;
overflow-y: scroll; overflow-y: scroll;
user-select: text;
cursor: text;
} }
#his-sign-action { #his-sign-action {
border: 1px solid; border: 1px solid;
border-radius: 0.4rem; border-radius: 0.4rem;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 0.75rem; padding-left: 0.75rem;
padding-right: 0.75rem; padding-right: 0.75rem;
flex-wrap: wrap; flex-wrap: wrap;
} }
#his-sign-action .btn {
flex-basis: calc(50% - 10.6px); #his-sign-action .shrinker {
margin-right: 0.5rem;
flex-basis: calc(50% - 1rem);
} }
#his-sign-action .shrinker.btn {
width: 100%;
}
#his-sign-action .dropdown-trigger { #his-sign-action .dropdown-trigger {
flex-basis: 100%; flex-basis: 100%;
} }
#his-des .mention { #his-des .mention {
color: #039be5; color: #039be5;
cursor: pointer; cursor: pointer;
} }
#his-table { #his-table {
max-height: 11.538rem; max-height: 9.2rem;
overflow-y: scroll; overflow-y: scroll;
user-select: text;
} }
#his-float-blocked { #his-float-blocked {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
font-size: 2rem; font-size: 2rem;
height: 100%; height: 100%;
} }
#hisdropdown { #hisdropdown {
background-color: var(--bg); background-color: var(--bg);
} }
#hisdropdown li a { #hisdropdown li a {
color: white; color: var(--text);
} }
#hisdropdown li:hover { #hisdropdown li:hover {
background-color: var(--active); background-color: var(--active);
} }
#his-data-title-wrap { #his-data-title-wrap {
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: 1.5rem; font-size: 1.5rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#his-data-title .material-icons { #his-data-title .material-icons {
position: relative; position: relative;
top: 7px; top: 5px;
margin-right: 3px; margin-right: 3px;
}
#his-data-title a {
color: white;
} }

View File

@ -1,7 +1,12 @@
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<meta http-equiv=”refresh” content=”0;URL=./view/ja'” /> <script>
<script>location.href = './view/ja';</script> if (/^ja\b/.test(navigator.language)) {
location.href = './view/ja'
} else {
location.href = './view/en'
}
</script>
</head> </head>
</html> </html>

View File

@ -94,7 +94,7 @@ $(function($) {
if (e.keyCode === 88) { if (e.keyCode === 88) {
if (!$('#post-box').hasClass('appear')) { if (!$('#post-box').hasClass('appear')) {
show() show()
$('textarea').focus() document.getElementById('textarea').focus()
} else { } else {
hide() hide()
} }
@ -105,7 +105,8 @@ $(function($) {
if (!$('#post-box').hasClass('appear')) { if (!$('#post-box').hasClass('appear')) {
show() show()
} }
$('textarea').focus() document.getElementById('textarea').focus()
return false return false
} }
//Ctrl+E:全ての通知未読を既読にする //Ctrl+E:全ての通知未読を既読にする

View File

@ -1,32 +1,18 @@
//バージョンチェッカー //バージョンチェッカー
function verck(ver, jp) { async function verck(ver, jp) {
if (store) return false if (store) return false
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;') console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
$('body').addClass(localStorage.getItem('platform')) $('body').addClass(localStorage.getItem('platform'))
var date = new Date() const date = new Date()
var showVer = false let showVer = false
//Spotify
if (localStorage.getItem('spotify')) {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
if(lang.language == 'ja') {
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
}
Swal.fire({
type: 'info',
title: spDc,
})
}
//Spotify(e)
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) { if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true showVer = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;') console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() { $(document).ready(function () {
if (localStorage.getItem('winstore') && !pwa) { if (localStorage.getItem('winstore') && !pwa) {
$('#releasenote').modal('open') $('#releasenote').modal('open')
} }
verp = ver.replace('(', '') let verp = ver.replace('(', '')
verp = verp.replace('.', '-') verp = verp.replace('.', '-')
verp = verp.replace('.', '-') verp = verp.replace('.', '-')
verp = verp.replace('[', '-') verp = verp.replace('[', '-')
@ -44,106 +30,92 @@ function verck(ver, jp) {
localStorage.setItem('ver', ver) localStorage.setItem('ver', ver)
if (!showVer) { if (!showVer) {
console.log(showVer) console.log(showVer)
if ( let nextmonth
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') || if (!localStorage.getItem('showSupportMe')) {
!localStorage.getItem('showSupportMe')
) {
if (date.getMonth() == 11) { if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1 const yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1 nextmonth = yrs * 100 + 1
} else { } else {
var yrs = date.getFullYear() const yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2 nextmonth = yrs * 100 + date.getMonth() + 2
}
if (lang.language != 'ja') {
$('#support-btm-ja').addClass('hide')
$('#support-btm-en').removeClass('hide')
} }
localStorage.setItem('showSupportMe', nextmonth) localStorage.setItem('showSupportMe', nextmonth)
$('#support-btm').removeClass('hide') } else {
$('#support-btm').animate( if (
{ date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe')
bottom: '0' ) {
}, if (date.getMonth() == 11) {
{ const yrs = date.getFullYear() + 1
duration: 300 nextmonth = yrs * 100 + 1
} else {
const yrs = date.getFullYear()
nextmonth = yrs * 100 + date.getMonth() + 2
} }
) localStorage.setItem('showSupportMe', nextmonth)
if (lang.language != 'ja') {
$('#support-btm-ja').addClass('hide')
$('#support-btm-en').removeClass('hide')
}
$('#support-btm').removeClass('hide')
$('#support-btm').animate(
{
bottom: '0'
},
{
duration: 300
}
)
}
} }
} }
var platform = localStorage.getItem('platform') const platform = localStorage.getItem('platform')
console.log('Your platform:' + platform) console.log('Your platform:' + platform)
//if (!localStorage.getItem('winstore') && !pwa) { //if (!localStorage.getItem('winstore') && !pwa) {
// $('#start').css('display', 'flex') // $('#start').css('display', 'flex')
//} //}
if ( const winstore = localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' || localStorage.getItem('winstore') == 'snapcraft' ||
localStorage.getItem('winstore') == 'winstore' localStorage.getItem('winstore') == 'winstore'
) { const l = 5
var winstore = true
} else {
var winstore = false
}
var l = 5
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
var c = 'abcdefghijklmnopqrstuvwxyz0123456789' const c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length const cl = c.length
var r = '' let r = ''
for (var i = 0; i < l; i++) { for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)] r += c[Math.floor(Math.random() * cl)]
} }
var start = 'https://thedesk.top/ver.json' const start1 = 'https://thedesk.top/ver.json'
fetch(start, { const response = await fetch(start1, { method: 'GET' })
method: 'GET' if (!response.ok) {
}) response.text().then(function (text) {
.then(function(response) { setLog(response.url, response.status, text)
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
}) })
.catch(function(error) { }
todo(error) const mess = await response.json()
setLog(start, 'JSON', error)
setLog(start, 'JSON', error) console.table(mess)
console.error(error) if (mess) {
}) const platform = localStorage.getItem('platform')
.then(function(mess) { const newest = platform == 'darwin' ? mess.desk_mac : mess.desk
console.table(mess) if (newest == ver) {
if (mess) { todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限 //betaかWinstoreならアプデチェックしない
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) { } else if (ver.indexOf('beta') != -1 || winstore) {
localStorage.setItem('askjp_jp_ua', true) } else {
$('#askjp_jp_ua').removeClass('hide') localStorage.removeItem('instance')
} if (localStorage.getItem('new-ver-skip')) {
var platform = localStorage.getItem('platform') if (localStorage.getItem('next-ver') != newest) {
if (platform == 'darwin') { postMessage(['sendSinmpleIpc', 'update'], '*')
var newest = mess.desk_mac
} else { } else {
var newest = mess.desk console.warn(lang.lang_version_skipver)
} todo(lang.lang_version_skipver)
if (newest == ver) {
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
//betaかWinstoreならアプデチェックしない
} else if (ver.indexOf('beta') != -1 || winstore) {
} else {
localStorage.removeItem('instance')
if (localStorage.getItem('new-ver-skip')) {
if (localStorage.getItem('next-ver') != newest) {
postMessage(['sendSinmpleIpc', 'update'], '*')
} else {
console.warn(lang.lang_version_skipver)
todo(lang.lang_version_skipver)
}
} else {
postMessage(['sendSinmpleIpc', 'update'], '*')
}
} }
} else {
postMessage(['sendSinmpleIpc', 'update'], '*')
} }
}) }
}
if (!localStorage.getItem('last-notice-id')) { if (!localStorage.getItem('last-notice-id')) {
localStorage.setItem('last-notice-id', 0) localStorage.setItem('last-notice-id', 0)
} }
@ -152,20 +124,20 @@ function verck(ver, jp) {
method: 'GET', method: 'GET',
cors: true cors: true
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(mess) { .then(function (mess) {
if (mess.length < 1) { if (mess.length < 1) {
return false return false
} else { } else {
@ -199,7 +171,7 @@ function verck(ver, jp) {
if (multi) { if (multi) {
showVer = false showVer = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function (key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true showVer = true
@ -226,11 +198,11 @@ function verck(ver, jp) {
var infostreaming = false var infostreaming = false
function infowebsocket() { function infowebsocket() {
infows = new WebSocket('wss://thedesk.top/ws/') infows = new WebSocket('wss://thedesk.top/ws/')
infows.onopen = function(mess) { infows.onopen = function (mess) {
console.log([tlid, ':Connect Streaming Info:', mess]) console.log([tlid, ':Connect Streaming Info:', mess])
infostreaming = true infostreaming = true
} }
infows.onmessage = function(mess) { infows.onmessage = function (mess) {
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)]) console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
var obj = JSON.parse(mess.data) var obj = JSON.parse(mess.data)
if (obj.type != 'counter') { if (obj.type != 'counter') {
@ -258,7 +230,7 @@ function infowebsocket() {
if (multi) { if (multi) {
showVer = false showVer = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function (key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true showVer = true
@ -283,18 +255,18 @@ function infowebsocket() {
$('#persons').text(obj.text) $('#persons').text(obj.text)
} }
} }
infows.onerror = function(error) { infows.onerror = function (error) {
infostreaming = false infostreaming = false
console.error('Error closing:info') console.error('Error closing:info')
console.error(error) console.error(error)
return false return false
} }
infows.onclose = function() { infows.onclose = function () {
infostreaming = false infostreaming = false
console.error('Closing:info') console.error('Closing:info')
} }
} }
setInterval(function() { setInterval(function () {
if (!infostreaming) { if (!infostreaming) {
console.log('try to connect to base-streaming') console.log('try to connect to base-streaming')
infowebsocket() infowebsocket()
@ -322,7 +294,7 @@ function closeSupport() {
}, },
{ {
duration: 300, duration: 300,
complete: function() { complete: function () {
$('#support-btm').addClass('hide') $('#support-btm').addClass('hide')
} }
} }

View File

@ -611,8 +611,9 @@ function multiSelector(parseC) {
$('#add-acct-sel').append( $('#add-acct-sel').append(
'<option value="noauth">' + '<option value="noauth">' +
lang.lang_login_noauth + lang.lang_login_noauth +
`</option>${webview ? `<option value="webview">TweetDeck</option>` : ''}` `</option><option value="webview">TweetDeck</option>`
) )
if (!webview) $('#webview-add').append(`<br /><span style="font-size: 0.7rem">${lang.lang_setting_webview_warn}</span>`)
$('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>') $('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
} }
$('select').formSelect() $('select').formSelect()

View File

@ -367,9 +367,13 @@ function support() {
} }
}) })
} }
function backToInit() {
$('#auth').hide()
$('#add').show()
}
//URL指定してポップアップ //URL指定してポップアップ
function login(url) { async function login(url) {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
if ($('#misskey:checked').val() == 'on') { if ($('#misskey:checked').val() == 'on') {
@ -378,16 +382,18 @@ function login(url) {
return return
} }
$('#compt').hide() $('#compt').hide()
if ($('#linux:checked').val() == 'on') { const start = `https://${url}/api/v1/apps`
var red = 'urn:ietf:wg:oauth:2.0:oob' $('#loginBtn').attr('disabled', true)
const nextSetup = await versionChecker(url)
$('#loginBtn').attr('disabled', false)
let red = 'thedesk://manager'
if (!nextSetup) {
red = 'urn:ietf:wg:oauth:2.0:oob'
if (~url.indexOf('pixelfed')) { if (~url.indexOf('pixelfed')) {
red = 'https://thedesk.top/hello.html' red = 'https://thedesk.top/hello.html'
} }
} else {
var red = 'thedesk://manager'
} }
localStorage.setItem('redirect', red) localStorage.setItem('redirect', red)
var start = 'https://' + url + '/api/v1/apps'
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')
@ -420,103 +426,86 @@ function login(url) {
localStorage.setItem('client_id', json['client_id']) localStorage.setItem('client_id', json['client_id'])
localStorage.setItem('client_secret', json['client_secret']) localStorage.setItem('client_secret', json['client_secret'])
$('#auth').show() $('#auth').show()
versionChecker(url)
$('#add').hide() $('#add').hide()
postMessage(['openUrl', auth], '*') postMessage(['openUrl', auth], '*')
} }
} }
} }
function versionChecker(url) { async function versionChecker(url) {
var start = 'https://' + url + '/api/v1/instance' const start = `https://${url}/api/v1/instance`
fetch(start, { try {
method: 'GET', const response = await fetch(start, {
headers: { method: 'GET',
'content-type': 'application/json' headers: {
'content-type': 'application/json'
}
})
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
} }
}) const json = await response.json()
.then(function (response) { const version = json.version
if (!response.ok) { if (version) {
response.text().then(function (text) { const reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
setLog(response.url, response.status, text) if (reg) versionCompat(json.title, version)
if (version.match('compatible')) {
$('#compt-warn').show()
return false
} else {
$('#compt-warn').hide()
if (pwa) return false
const codeSetupCheck = await Swal.fire({
title: lang.lang_manager_codesetup_title,
text: lang.lang_manager_codesetup,
icon: 'info',
showCancelButton: true
}) })
if (!codeSetupCheck.isConfirmed) return false
return true
} }
return response.json() }
}) } catch {
.catch(function (error) { return false
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
var version = json.version
if (version) {
var reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
if (reg) {
versionCompat(reg[1], reg, json.title, reg[0])
}
}
})
}
function versionCompat(prefix, ver, title, real) {
$('#compt-instance').text(title)
$('#compt-ver').text(real)
if (~real.indexOf('compatible')) {
$('#compt-warn').show()
} else {
$('#compt-warn').hide()
} }
}
async function versionCompat(title, version) {
const [sem, a, b, c] = version.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
$('#compt-instance').text(title)
$('#compt-ver').text(version)
$('#compt-list').html('') $('#compt-list').html('')
var start = '../../source/version.json' var start = '../../source/version.json'
fetch(start, { const response = await fetch(start)
method: 'GET', const json = await response.json()
headers: { const keys = Object.keys(json)
'content-type': 'application/json' let i = 0
let onceAdd = false
for (const targetVersion of keys) {
const data = json[targetVersion]
const [tsem, ta, tb, tc] = targetVersion.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
let add = false
if (ta === a) {
if (tb === b) {
if (tc > c) {
add = true
}
} else if (tb > b) {
add = true
}
} else if (ta > a) {
add = true
} }
}) if (!add) break
.then(function (response) { if (add) onceAdd = true
if (!response.ok) { for (const note of data) {
response.text().then(function (text) { $('#compt-list').append(`<li>${note}(${targetVersion})</li>`)
setLog(response.url, response.status, text) }
}) i++
} }
return response.json() if (lang.language == 'ja' && onceAdd) {
}) $('#compt').show()
.catch(function (error) { }
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
var complete = false
var ct = 0
var jl = 0
var jl2 = 0
Object.keys(json).forEach(function (key) {
var data = json[key]
if (data) {
jl++
if (key != real && !complete) {
for (var i = 0; i < data.length; i++) {
var e = ''
if (i == 0) {
e = '(' + key + ')'
}
$('#compt-list').append('<li>' + data[i] + e + '</li>')
ct++
e = ''
}
jl2++
} else if (!complete) {
complete = true
}
}
})
if (lang.language == 'ja' && ct > 0) {
if (jl2 != jl && prefix != '1') {
$('#compt').show()
}
}
})
} }
//これが後のMisskeyである。 //これが後のMisskeyである。
function misskeyLogin(url) { function misskeyLogin(url) {
@ -1156,9 +1145,8 @@ function asReadEnd() {
// Or with jQuery // Or with jQuery
$(document).ready(function(){ $(document).ready(function () {
$('input.autocomplete').autocomplete({ $('input.autocomplete').autocomplete({
data: {}, data: {},
}); });
}); });

View File

@ -29,7 +29,7 @@ $(document).on('click', 'a', e => {
acct_id = 0 acct_id = 0
} }
$a.parent().addClass('loadp') $a.parent().addClass('loadp')
$a.parent().text('Loading...')
detEx(url, acct_id) detEx(url, acct_id)
} }
} else if (tags) { } else if (tags) {
@ -145,7 +145,7 @@ onmessage = function (e) {
} else if (e.data[0] == 'udg') { } else if (e.data[0] == 'udg') {
udg(e.data[1][0], e.data[1][1]) udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'media') { } else if (e.data[0] == 'media') {
media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3]) media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3], e.data[1][4])
} else if (e.data[0] == 'post') { } else if (e.data[0] == 'post') {
post('pass') post('pass')
} else if (e.data[0] == 'toastSaved') { } else if (e.data[0] == 'toastSaved') {

View File

@ -1,312 +1,309 @@
window.onload = function () { window.onload = function() {
console.log('loaded') console.log('loaded')
initPostbox() initPostbox()
connection() connection()
initPlugin(plugins) initPlugin(plugins)
if (localStorage.getItem('control-center-np')) $('#ccnp').removeClass('hide') if (localStorage.getItem('control-center-np')) $('#ccnp').removeClass('hide')
} }
$.strip_tags = function (str, allowed) {
if (!str) { const size = localStorage.getItem('size')
return '' if (size) $('html,body').css('font-size', `${size}px`)
} $.strip_tags = function(str, allowed) {
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('') if (!str) {
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, return ''
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi }
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) { allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '' var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
}) commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
})
} }
function escapeHTML(str) { function escapeHTML(str) {
if (!str) { if (!str) {
return '' return ''
} }
return str return str
.replace(/&/g, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#039;') .replace(/'/g, '&#039;')
} }
//PHPのnl2brと同様 //PHPのnl2brと同様
function nl2br(str) { function nl2br(str) {
if (!str) { if (!str) {
return '' return ''
} }
str = str.replace(/\r\n/g, '<br />') str = str.replace(/\r\n/g, '<br />')
str = str.replace(/(\n|\r)/g, '<br />') str = str.replace(/(\n|\r)/g, '<br />')
return str return str
} }
function br2nl(str) { function br2nl(str) {
if (!str) { if (!str) {
return '' return ''
} }
str = str.replace(/<br \/>/g, '\r\n') str = str.replace(/<br \/>/g, '\r\n')
return str return str
} }
function formattime(date) { function formattime(date) {
var str = date.getFullYear() + '-' var str = date.getFullYear() + '-'
if (date.getMonth() + 1 < 10) { if (date.getMonth() + 1 < 10) {
str = str + '0' + (date.getMonth() + 1) + '-' str = str + '0' + (date.getMonth() + 1) + '-'
} else { } else {
str = str + (date.getMonth() + 1) + '-' str = str + (date.getMonth() + 1) + '-'
} }
if (date.getDate() < 10) { if (date.getDate() < 10) {
str = str + '0' + date.getDate() str = str + '0' + date.getDate()
} else { } else {
str = str + date.getDate() str = str + date.getDate()
} }
str = str + 'T' str = str + 'T'
if (date.getHours() < 10) { if (date.getHours() < 10) {
str = str + '0' + date.getHours() + ':' str = str + '0' + date.getHours() + ':'
} else { } else {
str = str + date.getHours() + ':' str = str + date.getHours() + ':'
} }
if (date.getMinutes() < 10) { if (date.getMinutes() < 10) {
str = str + '0' + date.getMinutes() str = str + '0' + date.getMinutes()
} else { } else {
str = str + date.getMinutes() str = str + date.getMinutes()
} }
return escapeHTML(str) return escapeHTML(str)
} }
function formattimeutc(date) { function formattimeutc(date) {
var str = date.getUTCFullYear() + '-' var str = date.getUTCFullYear() + '-'
if (date.getUTCMonth() + 1 < 10) { if (date.getUTCMonth() + 1 < 10) {
str = str + '0' + (date.getUTCMonth() + 1) + '-' str = str + '0' + (date.getUTCMonth() + 1) + '-'
} else { } else {
str = str + (date.getUTCMonth() + 1) + '-' str = str + (date.getUTCMonth() + 1) + '-'
} }
if (date.getUTCDate() < 10) { if (date.getUTCDate() < 10) {
str = str + '0' + date.getUTCDate() str = str + '0' + date.getUTCDate()
} else { } else {
str = str + date.getUTCDate() str = str + date.getUTCDate()
} }
str = str + 'T' str = str + 'T'
if (date.getUTCHours() < 10) { if (date.getUTCHours() < 10) {
str = str + '0' + date.getUTCHours() + ':' str = str + '0' + date.getUTCHours() + ':'
} else { } else {
str = str + date.getUTCHours() + ':' str = str + date.getUTCHours() + ':'
} }
if (date.getUTCMinutes() < 10) { if (date.getUTCMinutes() < 10) {
str = str + '0' + date.getUTCMinutes() str = str + '0' + date.getUTCMinutes()
} else { } else {
str = str + date.getUTCMinutes() str = str + date.getUTCMinutes()
} }
return escapeHTML(str) return escapeHTML(str)
} }
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*') postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
function makeCID() {
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("") incrementid=0
for (let i = 0, len = chars.length; i < len; i++) { function makeCID()
switch (chars[i]) { {
case "x": return incrementid++
chars[i] = Math.floor(Math.random() * 16).toString(16)
break
case "y":
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16)
break
}
}
return chars.join("")
}
function randomStr(l) {
// 生成する文字列に含める文字セット
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length
var r = ''
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)]
}
return r
} }
function rgbToHex(color) { function rgbToHex(color) {
// HEXに変換したものを代入する変数 // HEXに変換したものを代入する変数
var hex = '' var hex = ''
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn // 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
// IE8の場合はjQueryのcss()関数でHEXを返すので除外 // IE8の場合はjQueryのcss()関数でHEXを返すので除外
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i)) { if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i)) {
return color return color
} }
// 正規表現 // 正規表現
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/) var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/)
// 正規表現でマッチしたとき // 正規表現でマッチしたとき
if (regex) { if (regex) {
var rgb = [ var rgb = [
// RGBからHEXへ変換 // RGBからHEXへ変換
parseInt(regex[1]).toString(16), parseInt(regex[1]).toString(16),
parseInt(regex[2]).toString(16), parseInt(regex[2]).toString(16),
parseInt(regex[3]).toString(16) parseInt(regex[3]).toString(16)
] ]
for (var i = 0; i < rgb.length; ++i) { for (var i = 0; i < rgb.length; ++i) {
// rgb(1,1,1)のようなときHEXに変換すると1桁になる // rgb(1,1,1)のようなときHEXに変換すると1桁になる
// 1桁のときは前に0を足す // 1桁のときは前に0を足す
if (rgb[i].length == 1) { if (rgb[i].length == 1) {
rgb[i] = '0' + rgb[i] rgb[i] = '0' + rgb[i]
} }
hex += rgb[i] hex += rgb[i]
} }
return hex return hex
} }
console.error(color + ':第1引数はRGB形式で入力') console.error(color + ':第1引数はRGB形式で入力')
} }
/*マルチバイト用切り出し*/ /*マルチバイト用切り出し*/
$.isSurrogatePear = function (upper, lower) { $.isSurrogatePear = function(upper, lower) {
return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff
} }
$.mb_strlen = function (str) { $.mb_strlen = function(str) {
var splitter = new GraphemeSplitter() var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str) var arr = splitter.splitGraphemes(str)
return arr.length return arr.length
} }
$.mb_substr = function (str, begin, end) { $.mb_substr = function(str, begin, end) {
//配列にする //配列にする
var splitter = new GraphemeSplitter() var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str) var arr = splitter.splitGraphemes(str)
var newarr = [] var newarr = []
for (var i = 0; i < arr.length; i++) { for (var i = 0; i < arr.length; i++) {
if (i >= begin && i <= end) { if (i >= begin && i <= end) {
newarr.push(arr[i]) newarr.push(arr[i])
} }
} }
return newarr.join('') return newarr.join('')
} }
//ソートするやつ //ソートするやつ
function object_array_sort(data, key, order, fn) { function object_array_sort(data, key, order, fn) {
var num_a = -1 var num_a = -1
var num_b = 1 var num_b = 1
if (order === 'asc') { if (order === 'asc') {
num_a = 1 num_a = 1
num_b = -1 num_b = -1
} }
data = data.sort(function (a, b) { data = data.sort(function(a, b) {
var x = a[key] var x = a[key]
var y = b[key] var y = b[key]
if (x > y) return num_a if (x > y) return num_a
if (x < y) return num_b if (x < y) return num_b
return 0 return 0
}) })
var arrObj = {} var arrObj = {}
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i] arrObj[data[i]['family']] = data[i]
} }
data = [] data = []
for (var key in arrObj) { for (var key in arrObj) {
data.push(arrObj[key]) data.push(arrObj[key])
} }
fn(data) fn(data)
} }
function setLog(txt1, txt2, txt3) { function setLog(txt1, txt2, txt3) {
//url,statuscode,responsetext //url,statuscode,responsetext
var text = new Date().toUTCString() var text = new Date().toUTCString()
text = text + ',' + txt1 + ',' + txt2 + ',' + escapeCsv(txt3) text = text + ',' + txt1 + ',' + txt2 + ',' + escapeCsv(txt3)
console.error(text) console.error(text)
postMessage(['log', text], '*') postMessage(['log', text], '*')
} }
function escapeCsv(str) { function escapeCsv(str) {
if (!str) { if (!str) {
return str return str
} }
var result var result
result = str.toString().replace(/\"/g, '""') result = str.toString().replace(/\"/g, '""')
if (result.indexOf(',') >= 0) { if (result.indexOf(',') >= 0) {
result = '"' + result + '"' result = '"' + result + '"'
} }
return result return result
} }
function evalAttr(json, attr, lenCk) { function evalAttr(json, attr, lenCk) {
if (json[attr]) { if (json[attr]) {
if (lenCk) { if (lenCk) {
if (json[attr][0]) { if (json[attr][0]) {
return true return true
} else { } else {
return false return false
} }
} else { } else {
return true return true
} }
} else { } else {
return false return false
} }
} }
function statusModel(now) { function statusModel(now) {
if (!now) { if (!now) {
var now = new Date().toString() var now = new Date().toString()
} }
return { return {
id: '', id: '',
created_at: now, created_at: now,
in_reply_to_id: null, in_reply_to_id: null,
in_reply_to_account_id: null, in_reply_to_account_id: null,
sensitive: false, sensitive: false,
spoiler_text: '', spoiler_text: '',
visibility: 'public', visibility: 'public',
language: 'en', language: 'en',
uri: '', uri: '',
url: '', url: '',
replies_count: 0, replies_count: 0,
reblogs_count: 0, reblogs_count: 0,
favourites_count: 0, favourites_count: 0,
favourited: false, favourited: false,
reblogged: false, reblogged: false,
muted: false, muted: false,
bookmarked: false, bookmarked: false,
pinned: false, pinned: false,
content: '<p><i>No status here</i></p>', content: '<p><i>No status here</i></p>',
reblog: null, reblog: null,
application: { application: {
name: null, name: null,
website: null website: null
}, },
account: { account: {
id: '', id: '',
username: '', username: '',
acct: '', acct: '',
display_name: '', display_name: '',
locked: false, locked: false,
bot: false, bot: false,
created_at: now, created_at: now,
note: '', note: '',
url: '', url: '',
avatar: '', avatar: '',
avatar_static: '', avatar_static: '',
header: '', header: '',
header_static: '', header_static: '',
followers_count: 0, followers_count: 0,
following_count: 0, following_count: 0,
statuses_count: 0, statuses_count: 0,
last_status_at: now, last_status_at: now,
emojis: [], emojis: [],
fields: [] fields: []
}, },
media_attachments: [], media_attachments: [],
mentions: [], mentions: [],
tags: [], tags: [],
card: null, card: null,
poll: null poll: null
} }
} }
function webviewFinder() { function webviewFinder() {
const webview = document.querySelector('webview') const webview = document.querySelector('webview')
webview.addEventListener('did-navigate', (e) => { webview.addEventListener('did-navigate', (e) => {
const url = webview.getURL() const url = webview.getURL()
if (url.match('https://mobile.twitter.com/login')) { if (url.match('https://mobile.twitter.com/login')) {
postMessage(['twitterLogin', null], '*') postMessage(['twitterLogin', null], '*')
} else if (url.match('https://mobile.twitter.com/logout')) { } else if (url.match('https://mobile.twitter.com/logout')) {
postMessage(['twitterLogin', true], '*') postMessage(['twitterLogin', true], '*')
} }
}) })
} }
function initWebviewEvent() { function initWebviewEvent() {
if (document.querySelector('webview')) { webviewFinder() } else { if (document.querySelector('webview')) { webviewFinder() } else {
const timerWV = setInterval(function () { const timerWV = setInterval(function() {
document.querySelector('webview') document.querySelector('webview') ?
? (webviewFinder(), clearInterval(timerWV)) (webviewFinder(), clearInterval(timerWV)) :
: console.log('まだロード中') console.log('まだロード中')
}, 500) }, 500)
} }
} }

View File

@ -48,13 +48,13 @@ function initPlugin() {
}) })
}) })
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => { asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
const alert = await Swal.fire({ const alertSwal = await Swal.fire({
title: z[0].value, title: z[0].value,
text: z[1].value, text: z[1].value,
icon: z[2] ? z[2].value : 'info', icon: z[2] ? z[2].value : 'info',
showCancelButton: true showCancelButton: true
}) })
return asUtil.jsToVal(!!(alert.value && alert.value === true)) return asUtil.jsToVal(!!(alertSwal.value && alertSwal.value === true))
}) })
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => { asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value)) $(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))
@ -227,13 +227,13 @@ async function testExec(exe) {
}) })
}) })
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => { asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
const alert = await Swal.fire({ const alertSwal = await Swal.fire({
title: z[0].value, title: z[0].value,
text: z[1].value, text: z[1].value,
icon: z[2] ? z[2].value : 'info', icon: z[2] ? z[2].value : 'info',
showCancelButton: true showCancelButton: true
}) })
return asUtil.jsToVal(!!(alert.value && alert.value === true)) return asUtil.jsToVal(!!(alertSwal.value && alertSwal.value === true))
}) })
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => { asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value)) $(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))

View File

@ -7,12 +7,17 @@ window.addEventListener('DOMContentLoaded', () => {
ipc.send('acsCheck', '') ipc.send('acsCheck', '')
}) })
onmessage = function(e) { onmessage = async function (e) {
if (e.data[0] == 'openUrl') { if (e.data[0] == 'openUrl') {
urls = e.data[1].match(/https?:\/\/(.+)/) urls = e.data[1].match(/https?:\/\/(.+)/)
if (urls) { if (urls) {
shell.openExternal(e.data[1]) shell.openExternal(e.data[1])
} }
} else if (e.data[0] == 'openUrlMainProcess') {
urls = e.data[1].match(/https?:\/\/(.+)/)
if (urls) {
ipc.send('openUrl', e.data[1])
}
} else if (e.data[0] == 'sendSinmpleIpc') { } else if (e.data[0] == 'sendSinmpleIpc') {
ipc.send(e.data[1], '') ipc.send(e.data[1], '')
} else if (e.data[0] == 'dialogStore') { } else if (e.data[0] == 'dialogStore') {
@ -79,6 +84,8 @@ onmessage = function(e) {
ipc.send('sendMarkersComplete', null) ipc.send('sendMarkersComplete', null)
} else if (e.data[0] == 'copy') { } else if (e.data[0] == 'copy') {
ipc.send('copy', e.data[1]) ipc.send('copy', e.data[1])
} else if (e.data[0] == 'copyBinary') {
ipc.send('copyBinary', e.data[1])
} else if (e.data[0] == 'log') { } else if (e.data[0] == 'log') {
ipc.send('log', e.data[1]) ipc.send('log', e.data[1])
} else if (e.data[0] == 'twitterLogin') { } else if (e.data[0] == 'twitterLogin') {
@ -89,17 +96,16 @@ onmessage = function(e) {
} }
//version.js //version.js
ipc.send('getPlatform', '') ipc.send('getPlatform', '')
ipc.on('platform', function(event, args) { ipc.on('platform', function (event, args) {
localStorage.setItem('platform', args[0]) localStorage.setItem('platform', args[0])
localStorage.setItem('bit', args[1]) localStorage.setItem('bit', args[1])
localStorage.setItem('about', JSON.stringify([args[2], args[3], args[4], args[5]])) localStorage.setItem('about', JSON.stringify([args[2], args[3], args[4], args[5]]))
}) })
ipc.on('reload', function (event, arg) {
ipc.on('reload', function(event, arg) {
location.reload() location.reload()
}) })
//Native Notf //Native Notf
ipc.on('shownotf', function(event, args) { ipc.on('shownotf', function (event, args) {
if (args['type'] == 'toot') { if (args['type'] == 'toot') {
postMessage(['details', [id, acct_id]], '*') postMessage(['details', [id, acct_id]], '*')
} else if (args['type'] == 'userdata') { } else if (args['type'] == 'userdata') {
@ -108,7 +114,7 @@ ipc.on('shownotf', function(event, args) {
}) })
//first.js //first.js
ipc.on('custom-css-response', function(event, arg) { ipc.on('custom-css-response', function (event, arg) {
if (arg == '') { if (arg == '') {
return false return false
} }
@ -119,7 +125,7 @@ ipc.on('custom-css-response', function(event, arg) {
styleNode.append(content) styleNode.append(content)
document.getElementsByTagName('head')[0].append(styleNode) document.getElementsByTagName('head')[0].append(styleNode)
}) })
ipc.on('theme-css-response', function(event, arg) { ipc.on('theme-css-response', function (event, arg) {
if (arg == '') { if (arg == '') {
return false return false
} }
@ -131,7 +137,7 @@ ipc.on('theme-css-response', function(event, arg) {
document.getElementsByTagName('head')[0].append(styleNode) document.getElementsByTagName('head')[0].append(styleNode)
}) })
//img.js //img.js
ipc.on('bmp-img-comp', function(event, b64) { ipc.on('bmp-img-comp', function (event, b64) {
if (b64[2]) { if (b64[2]) {
var stamped = true var stamped = true
} else { } else {
@ -139,108 +145,108 @@ ipc.on('bmp-img-comp', function(event, b64) {
} }
postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*') postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*')
}) })
ipc.on('resizeJudgement', function(event, b64) { ipc.on('resizeJudgement', function (event, b64) {
var resize = localStorage.getItem('uploadCrop') * 1 var resize = localStorage.getItem('uploadCrop') * 1
if (resize > 0) { if (resize > 0) {
var element = new Image() var element = new Image()
var width var width
element.onload = function() { element.onload = function () {
var width = element.naturalWidth var width = element.naturalWidth
var height = element.naturalHeight var height = element.naturalHeight
if (width > resize || height > resize) { if (width > resize || height > resize) {
ipc.send('resize-image', [b64[0], resize]) ipc.send('resize-image', [b64[0], resize])
} else { } else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*') postMessage(['media', [b64[0], 'image/png', b64[1], null, b64[2]]], '*')
} }
} }
element.src = 'data:image/png;base64,' + b64[0] element.src = 'data:image/png;base64,' + b64[0]
} else { } else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*') postMessage(['media', [b64[0], 'image/png', b64[1], null, b64[2]]], '*')
} }
}) })
//ui,img.js //ui,img.js
ipc.on('general-dl-prog', function(event, arg) { ipc.on('general-dl-prog', function (event, arg) {
console.log('Progress: ' + arg) console.log('Progress: ' + arg)
}) })
ipc.on('general-dl-message', function(event, arg) { ipc.on('general-dl-message', function (event, arg) {
var argC = arg.replace(/\\/g, '\\\\') var argC = arg.replace(/\\/g, '\\\\')
console.log('saved') console.log('saved')
postMessage(['toastSaved', [arg, argC]], '*') postMessage(['toastSaved', [arg, argC]], '*')
}) })
//setting.js //setting.js
ipc.on('langres', function(event, arg) { ipc.on('langres', function (event, arg) {
location.href = '../' + arg + '/setting.html' location.href = '../' + arg + '/setting.html'
}) })
ipc.on('exportSettingsFile', function(event, arg) { ipc.on('exportSettingsFile', function (event, arg) {
postMessage(['exportSettingsCore', arg], '*') postMessage(['exportSettingsCore', arg], '*')
}) })
ipc.on('exportAllComplete', function(event, arg) { ipc.on('exportAllComplete', function (event, arg) {
postMessage(['alert', 'Complete'], '*') postMessage(['alert', 'Complete'], '*')
}) })
ipc.on('config', function(event, arg) { ipc.on('config', function (event, arg) {
postMessage(['importSettingsCore', arg], '*') postMessage(['importSettingsCore', arg], '*')
}) })
ipc.on('savefolder', function(event, arg) { ipc.on('savefolder', function (event, arg) {
localStorage.setItem('savefolder', arg) localStorage.setItem('savefolder', arg)
}) })
ipc.on('font-list', function(event, arg) { ipc.on('font-list', function (event, arg) {
postMessage(['fontList', arg], '*') postMessage(['fontList', arg], '*')
}) })
ipc.on('customSoundRender', function(event, args) { ipc.on('customSoundRender', function (event, args) {
postMessage(['customSoundSave', [args[0], args[1]]], '*') postMessage(['customSoundSave', [args[0], args[1]]], '*')
}) })
ipc.on('theme-json-list-response', function(event, args) { ipc.on('theme-json-list-response', function (event, args) {
postMessage(['ctLoadCore', args], '*') postMessage(['ctLoadCore', args], '*')
}) })
ipc.on('theme-json-delete-complete', function(event, args) { ipc.on('theme-json-delete-complete', function (event, args) {
postMessage(['ctLoad', ''], '*') postMessage(['ctLoad', ''], '*')
}) })
ipc.on('theme-json-response', function(event, args) { ipc.on('theme-json-response', function (event, args) {
postMessage(['customConnect', args], '*') postMessage(['customConnect', args], '*')
}) })
ipc.on('theme-json-create-complete', function(event, args) { ipc.on('theme-json-create-complete', function (event, args) {
if(args != '') alert(args) if (args != '') alert(args)
postMessage(['clearCustomImport', ''], '*') postMessage(['clearCustomImport', ''], '*')
postMessage(['ctLoad', ''], '*') postMessage(['ctLoad', ''], '*')
}) })
//spotify.js //spotify.js
ipc.on('itunes-np', function(event, arg) { ipc.on('itunes-np', function (event, arg) {
postMessage(['npCore', arg], '*') postMessage(['npCore', arg], '*')
}) })
//tips.js //tips.js
ipc.on('memory', function(event, arg) { ipc.on('memory', function (event, arg) {
var use = arg[0] var use = arg[0]
var cpu = arg[1] var cpu = arg[1]
var total = arg[2] var total = arg[2]
postMessage(['renderMem', [use, cpu, total, arg[3], arg[4]]], '*') postMessage(['renderMem', [use, cpu, total, arg[3], arg[4]]], '*')
}) })
//log //log
ipc.on('logData', function(event, args) { ipc.on('logData', function (event, args) {
postMessage(['logData', args], '*') postMessage(['logData', args], '*')
}) })
//update.html //update.html
ipc.on('prog', function(event, arg) { ipc.on('prog', function (event, arg) {
postMessage(['updateProg', arg], '*') postMessage(['updateProg', arg], '*')
}) })
ipc.on('mess', function(event, arg) { ipc.on('mess', function (event, arg) {
postMessage(['updateMess', arg], '*') postMessage(['updateMess', arg], '*')
}) })
//misc //misc
ipc.on('asRead', function(event, arg) { ipc.on('asRead', function (event, arg) {
postMessage(['asRead', ''], '*') postMessage(['asRead', ''], '*')
}) })
ipc.on('asReadEnd', function(event, arg) { ipc.on('asReadEnd', function (event, arg) {
postMessage(['asReadEnd', ''], '*') postMessage(['asReadEnd', ''], '*')
}) })
ipc.on('accessibility', function(event, arg) { ipc.on('accessibility', function (event, arg) {
postMessage(['accessibility', 'true'], '*') postMessage(['accessibility', 'true'], '*')
}) })
ipc.on('twitterLoginComplete', function(event, arg) { ipc.on('twitterLoginComplete', function (event, arg) {
postMessage(['twitterLoginComplete', ''], '*') postMessage(['twitterLoginComplete', ''], '*')
}) })
ipc.on('alert', function(event, arg) { ipc.on('alert', function (event, arg) {
postMessage(['alert', arg], '*') postMessage(['alert', arg], '*')
}) })
ipc.on('customUrl', function(event, args) { ipc.on('customUrl', function (event, args) {
postMessage(['customUrl', args], '*') postMessage(['customUrl', args], '*')
}) })

View File

@ -19,7 +19,7 @@ function emojiToggle(reaction) {
if (width) { if (width) {
width = width.replace('px', '') * 1 + 300 width = width.replace('px', '') * 1 + 300
} else { } else {
width = 600 width = reaction ? 300 : 600
} }
$('#post-box').css('width', width + 'px') $('#post-box').css('width', width + 'px')
$('#suggest').html('') $('#suggest').html('')

View File

@ -57,6 +57,7 @@ function fileselect() {
//ファイル読み込み //ファイル読み込み
function handleFileUpload(files, obj, no) { function handleFileUpload(files, obj, no) {
console.log('nignog\n'+files+'\n'+obj+'\n'+no)
var fr = new FileReader() var fr = new FileReader()
fr.onload = function(evt) { fr.onload = function(evt) {
var b64 = evt.target.result var b64 = evt.target.result
@ -72,21 +73,24 @@ function handleFileUpload(files, obj, no) {
return false return false
} else { } else {
$('#b64-box').val(b64) $('#b64-box').val(b64)
var ret = media(b64, files['type'], no) var ret = media(b64, files['type'], no, null, files['name'])
} }
} }
element.src = b64 element.src = b64
return false return false
} }
$('#b64-box').val(b64) $('#b64-box').val(b64)
var ret = media(b64, files['type'], no) var ret = media(b64, files['type'], no, null, files['name'])
} }
fr.readAsDataURL(files) fr.readAsDataURL(files)
$('#mec').append(files['name'] + '/') $('#mec').append(files['name'] + '/')
} }
//ファイルアップロード //ファイルアップロード
async function media(b64, type, no, stamped) { async function media(b64, type, no, stamped, filename) {
if (filename) filename=filename.split('/').slice(-1)
else filename='image.png' // probably from clipboard
console.log('nognig\n'+type+'\n'+no+'\n'+stamped)
var acct_id = $('#post-acct-sel').val() var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var user = localStorage.getItem('user_' + acct_id) var user = localStorage.getItem('user_' + acct_id)
@ -112,7 +116,7 @@ async function media(b64, type, no, stamped) {
todo('Image Upload...') todo('Image Upload...')
var media = toBlob(b64, type) var media = toBlob(b64, type)
var fd = new FormData() var fd = new FormData()
fd.append('file', media) fd.append('file', media, filename)
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
@ -265,7 +269,7 @@ element.addEventListener('paste', function(e) {
var i = mediav.split(',').length var i = mediav.split(',').length
} }
// DataTransferItem の type に mime tipes があるのでそれを使う // DataTransferItem の type に mime tipes があるのでそれを使う
media(base64, imageType, i) media(base64, imageType, i, null, 'image.png')
} }
fr.readAsDataURL(imageFile) fr.readAsDataURL(imageFile)

View File

@ -82,7 +82,13 @@ function post(mode, postvis, dry) {
$('.toot-btn-group').prop('disabled', true) $('.toot-btn-group').prop('disabled', true)
todo('Posting') todo('Posting')
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/statuses' let start = 'https://' + domain + '/api/v1/statuses'
let method = 'POST'
const editTarget = $('#tootmodal').attr('data-edit')
if (editTarget) {
start = start + `/${editTarget}`
method = 'PUT'
}
var reply = $('#reply').val() var reply = $('#reply').val()
if (str.indexOf(localStorage.getItem('stable')) == -1) { if (str.indexOf(localStorage.getItem('stable')) == -1) {
str + ' #' + localStorage.getItem('stable') str + ' #' + localStorage.getItem('stable')
@ -174,7 +180,7 @@ function post(mode, postvis, dry) {
return toot return toot
} }
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open(method, start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.setRequestHeader('Idempotency-Key', ideKey) httpreq.setRequestHeader('Idempotency-Key', ideKey)
@ -375,5 +381,6 @@ function clear() {
width = 300 width = 300
} }
$('#post-box').css('width', width) $('#post-box').css('width', width)
$('#tootmodal').attr('data-edit', null)
mdCheck() mdCheck()
} }

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ function additional(acct_id, tlid) {
$('#timeline-container .mention').addClass('parsed') $('#timeline-container .mention').addClass('parsed')
$('#timeline-container .hashtag, #timeline-container [rel=tag]').each(function(i, elem) { $('#timeline-container .hashtatwemg, #timeline-container [rel=tag]').each(function(i, elem) {
var tags = $(this) var tags = $(this)
.attr('href') .attr('href')
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/) .match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/)
@ -233,10 +233,10 @@ function cardHtml(json, acct_id, id) {
if (json.html || json.provider_name == 'Twitter') { if (json.html || json.provider_name == 'Twitter') {
if(isHad) { if(isHad) {
var prved = `<img class="emoji" draggable="false" alt="✅" var prved = `<img class="emoji" draggable="false" alt="✅"
src="https://twemoji.maxcdn.com/v/12.1.3/72x72/2705.png">` src="https://energised.botegirl.parts/v/12.1.3/72x72/2705.png">`
var title = lang.lang_cards_trusted var title = lang.lang_cards_trusted
}else{ }else{
var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/26a0.png">' var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://energised.botegirl.parts/v/12.1.4/72x72/26a0.png">'
var title = lang.lang_cards_untrusted var title = lang.lang_cards_untrusted
} }
analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}"> analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}">
@ -335,7 +335,17 @@ function cardCheck(tlid) {
} }
} }
function mov(id, tlid, type, rand, target) { function mov(id, tlid, type, rand, target)
{
mouseover=localStorage.getItem('mouseover')
switch (mouseover)
{
case 'yes': if (type=='mv') $(target).removeClass('hide-actions'); break;
case 'click': if (type=='cl') $(target).toggleClass('hide-actions'); break;
case 'no': break;
}
}
/*function mov(id, tlid, type, rand, target) {
const dropdownTrigger = `dropdown_${rand}` const dropdownTrigger = `dropdown_${rand}`
let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`) let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`)
if(tlid == 'notf') { if(tlid == 'notf') {
@ -383,7 +393,7 @@ function mov(id, tlid, type, rand, target) {
//$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide") //$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide")
//$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide") //$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide")
} }
} }*/
function resetmv(type) { function resetmv(type) {
var mouseover = localStorage.getItem('mouseover') var mouseover = localStorage.getItem('mouseover')

View File

@ -1,12 +1,12 @@
//トゥートの詳細 //トゥートの詳細
function details(id, acct_id, tlid, mode) { async function details(id, acct_id, tlid, mode) {
if (mode == 'dm') { if (mode == 'dm') {
$('.dm-hide').hide() $('.dm-hide').hide()
} else { } else {
$('.dm-hide').show() $('.dm-hide').show()
} }
const context = localStorage.getItem('moreContext') const context = localStorage.getItem('moreContext')
if(context != 'yes') { if (context != 'yes') {
$('.contextTool').hide() $('.contextTool').hide()
} else { } else {
$('.contextTool').show() $('.contextTool').show()
@ -39,90 +39,99 @@ function details(id, acct_id, tlid, mode) {
} }
} }
} }
try {
fetch(start, i) const response = await fetch(start, i)
.then(function(response) { if (!response.ok) {
if (!response.ok) { response.text().then(function (text) {
response.text().then(function(text) { setLog(response.url, response.status, text)
setLog(response.url, response.status, text) })
}) }
} const json = await response.json()
return response.json() console.log(['Toot data:', json])
}) if (!$('#timeline_' + tlid + ' #pub_' + id).length) {
.catch(function(error) { var mute = getFilterTypeByAcct(acct_id, 'thread')
todo(error) var html = parse([json], '', acct_id, '', '', mute)
setLog(start, 'JSON', error) $('#toot-this').html(html)
console.error(error) jQuery('time.timeago').timeago()
}) }
.then(function(json) { if (localStorage.getItem('mode_' + domain) == 'misskey') {
console.log(['Toot data:', json]) var url = 'https://' + domain + '/notes/' + json.id
if (!$('#timeline_' + tlid + ' #pub_' + id).length) { var scn = json.user.username
var html = parse([json], '', acct_id) if (!json.user.host) {
$('#toot-this').html(html) var local = true
jQuery('time.timeago').timeago()
}
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var url = 'https://' + domain + '/notes/' + json.id
var scn = json.user.username
if (!json.user.host) {
var local = true
} else {
var local = false
scn = scn + '@' + host
}
var rep = ''
var uid = json.user.id
if (json._replyIds) {
replyTL(json._replyIds[0], acct_id)
}
} else { } else {
var url = json.url var local = false
if (json.account.acct == json.account.username) { scn = scn + '@' + host
var local = true
} else {
var local = false
}
var scn = json.account.acct
var uid = json.account.id
if (json['in_reply_to_id']) {
replyTL(json['in_reply_to_id'], acct_id)
}
} }
$('#toot-this .fav_ct').text(json.favourites_count) var rep = ''
$('#toot-this .rt_ct').text(json.reblogs_count) var uid = json.user.id
$('#tootmodal').attr('data-url', url) if (json._replyIds) {
$('#tootmodal').attr('data-id', json.id) replyTL(json._replyIds[0], acct_id)
$('#tootmodal').attr('data-acct', acct_id) }
if (local) { } else {
$('#tootmodal').attr('data-user', scn + '@' + domain) var url = json.url
if (json.account.acct == json.account.username) {
var local = true
} else { } else {
$('#tootmodal').attr('data-user', scn) var local = false
} }
getContext(id, acct_id) var scn = json.account.acct
var dom = null var uid = json.account.id
if (!local) { if (json['in_reply_to_id']) {
dom = scn.replace(/.+@/g, '') replyTL(json['in_reply_to_id'], acct_id)
} else {
dom = domain
} }
beforeToot(id, acct_id, dom) }
userToot(id, acct_id, uid) $('#toot-this .fav_ct').text(json.favourites_count)
afterToot(id, acct_id, dom) $('#toot-this .rt_ct').text(json.reblogs_count)
afterUserToot(id, acct_id, uid) $('#tootmodal').attr('data-url', url)
afterFTLToot(id, acct_id, dom) $('#tootmodal').attr('data-id', json.id)
faved(id, acct_id) $('#tootmodal').attr('data-acct', acct_id)
rted(id, acct_id) if (local) {
if ($('#toot-this div').hasClass('cvo')) { $('#tootmodal').attr('data-user', scn + '@' + domain)
$('#toot-this').removeClass('cvo') } else {
} else { $('#tootmodal').attr('data-user', scn)
if (!$('#toot-this .cvo').hasClass('cvo')) { }
$('#toot-this').addClass('cvo') getContext(id, acct_id)
} var dom = null
if (!local) {
dom = scn.replace(/.+@/g, '')
} else {
dom = domain
}
beforeToot(id, acct_id, dom)
userToot(id, acct_id, uid)
afterToot(id, acct_id, dom)
afterUserToot(id, acct_id, uid)
afterFTLToot(id, acct_id, dom)
faved(id, acct_id)
rted(id, acct_id)
if (json.edited_at) {
$('.edited-hide').show()
try {
const history = await (await fetch(`https://${domain}/api/v1/statuses/${id}/history`, i)).json()
const temp = parse(history, 'noauth', acct_id)
console.log(temp)
$('#toot-edit').html(temp)
} catch(e) { console.error(e) }
} else {
$('#toot-edit').html('')
$('.edited-hide').hide()
}
if ($('#toot-this div').hasClass('cvo')) {
$('#toot-this').removeClass('cvo')
} else {
if (!$('#toot-this .cvo').hasClass('cvo')) {
$('#toot-this').addClass('cvo')
} }
if (!$('#activator').hasClass('active')) { }
$('#det-col').collapsible('open', 4) if (!$('#activator').hasClass('active')) {
} $('#det-col').collapsible('open', 4)
}) }
} catch (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
}
} }
//返信タイムライン //返信タイムライン
@ -145,20 +154,20 @@ function replyTL(id, acct_id) {
return false return false
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var mute = getFilterTypeByAcct(acct_id, 'thread') var mute = getFilterTypeByAcct(acct_id, 'thread')
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var templete = misskeyParse([json], '', acct_id, '', '', mute) var templete = misskeyParse([json], '', acct_id, '', '', mute)
@ -201,20 +210,20 @@ function getContext(id, acct_id) {
} }
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
json.reverse() json.reverse()
var templete = misskeyParse(json, '', acct_id, '', '', []) var templete = misskeyParse(json, '', acct_id, '', '', [])
@ -269,20 +278,20 @@ function beforeToot(id, acct_id, domain) {
untilID: id untilID: id
}) })
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id) var templete = misskeyParse(json, 'noauth', acct_id)
$('#toot-before').html(templete) $('#toot-before').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -295,20 +304,20 @@ function beforeToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#toot-before .no-data').hide() $('#toot-before .no-data').hide()
@ -335,20 +344,20 @@ function userToot(id, acct_id, user) {
userId: user userId: user
}) })
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id) var templete = misskeyParse(json, 'noauth', acct_id)
$('#user-before').html(templete) $('#user-before').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -362,20 +371,20 @@ function userToot(id, acct_id, user) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, '', acct_id) var templete = parse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#user-before .no-data').hide() $('#user-before .no-data').hide()
@ -396,20 +405,20 @@ function afterToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#ltl-after .no-data').hide() $('#ltl-after .no-data').hide()
@ -430,20 +439,20 @@ function afterUserToot(id, acct_id, user) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, '', acct_id) var templete = parse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#user-after .no-data').hide() $('#user-after .no-data').hide()
@ -463,20 +472,20 @@ function afterFTLToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#ftl-after .no-data').hide() $('#ftl-after .no-data').hide()
@ -501,20 +510,20 @@ function faved(id, acct_id) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = userparse(json, '', acct_id) var templete = userparse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#toot-fav .no-data').hide() $('#toot-fav .no-data').hide()
@ -539,20 +548,20 @@ function rted(id, acct_id) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = userparse(json, '', acct_id) var templete = userparse(json, '', acct_id)
$('#toot-rt').html(templete) $('#toot-rt').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -591,44 +600,38 @@ function staCopy(id) {
} }
//翻訳 //翻訳
function trans(tar, to, elem) { function trans(tar, to, elem) {
var html = elem.parents('.cvo').find('.toot').html() var id = elem.parents('.cvo').attr('toot-id')
if (html.match(/^<p>(.+)<\/p>$/)) { //alert(id)
html = html.match(/^<p>(.+)<\/p>$/)[1] $('#toot-this .additional').text('Loading...(Powered by Mastodon API)')
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
} }
html = html.replace(/<br\s?\/?>/g, '\n') var at = localStorage.getItem('acct_' + acct_id + '_at')
html = html.replace(/<p>/g, '\n') var exec = `https://${domain}/api/v1/statuses/${id}/translate`
html = html.replace(/<\/p>/g, '\n')
html = $.strip_tags(html)
if (~tar.indexOf('zh')) {
tar = 'zh'
}
$('#toot-this .additional').text('Loading...(Powered by Google Translate)')
var exec =
'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' +
encodeURIComponent(html) +
'&source=' +
tar +
'&target=' +
to
console.log('Try to translate from ' + tar + ' to ' + to + ' at ' + exec)
fetch(exec, { fetch(exec, {
method: 'GET' method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(text) { .then(function (text) {
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.text + '</span>') console.log(text)
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.content + '</span>')
}) })
} }
//ブラウザで開く //ブラウザで開く
@ -637,42 +640,48 @@ function brws() {
postMessage(['openUrl', url], '*') postMessage(['openUrl', url], '*')
} }
//外部からトゥート開く //外部からトゥート開く
function detEx(url, acct_id) { async function detEx(url, acct_id) {
if (acct_id == 'main') { if (acct_id == 'main') {
acct_id = localStorage.getItem('main') acct_id = localStorage.getItem('main')
} }
var domain = localStorage.getItem('domain_' + acct_id) Swal.fire({
var at = localStorage.getItem('acct_' + acct_id + '_at') title: 'Loading...',
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url) html: lang.lang_details_fetch,
fetch(start, { showConfirmButton: false,
showCloseButton: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => { },
}).then((result) => { })
const json = await detExCore(url, acct_id)
Swal.close()
if (!json.statuses) {
postMessage(['openUrl', url], '*')
} else {
var id = json.statuses[0].id
$('.loadp').text($('.loadp').attr('href'))
$('.loadp').removeClass('loadp')
details(id, acct_id, 0)
}
return
}
async function detExCore(url, acct_id) {
const domain = localStorage.getItem('domain_' + acct_id)
const start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
const at = localStorage.getItem('acct_' + acct_id + '_at')
let promise = await fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) {
if (!response.ok) { const json = await promise.json()
response.text().then(function(text) { if (json) {
setLog(response.url, response.status, text) return json
}) } else {
} return false
return response.json() }
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
if (!json.statuses) {
postMessage(['openUrl', url], '*')
} else {
var id = json.statuses[0].id
$('.loadp').text($('.loadp').attr('href'))
$('.loadp').removeClass('loadp')
details(id, acct_id, 0)
}
})
return
} }

View File

@ -1,76 +1,96 @@
//ディレクトリ //ディレクトリ
//ディレクトリトグル //ディレクトリトグル
function dirMenu() { function dirMenu() {
$("#dir-contents").html("") $('#dir-contents').html('')
directory() directory('directory')
$("#left-menu a").removeClass("active") $('#left-menu a').removeClass('active')
$("#dirMenu").addClass("active") $('#dirMenu').addClass('active')
$(".menu-content").addClass("hide") $('.menu-content').addClass('hide')
$("#dir-box").removeClass("hide") $('#dir-box').removeClass('hide')
} }
function dirselCk() { function dirselCk() {
var acct = $("#dir-acct-sel").val() var acct = $('#dir-acct-sel').val()
if (acct == "noauth") { if (acct == 'noauth') {
$("#dirNoAuth").removeClass("hide") $('#dirNoAuth').removeClass('hide')
} else { } else {
$("#dirNoAuth").addClass("hide") $('#dirNoAuth').addClass('hide')
directory() directory('check')
} }
} }
function directory(isMore) {
var order = $("[name=sort]:checked").val() function dirChange(mode) {
if (!order) { if (mode === 'directory') $('#directoryConfig').removeClass('hide')
order = "active" if (mode === 'suggest') $('#directoryConfig').addClass('hide')
} directory(mode)
var local_only = $("#local_only:checked").val()
if (local_only) {
local_only = "true"
} else {
local_only = "false"
}
var acct_id = $("#dir-acct-sel").val()
if (acct_id == "noauth") {
var domain = $("#dirNoAuth-url").val()
var at = ""
} else {
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
}
if (isMore) {
var addOffset = $("#dir-contents .cvo").length
} else {
var addOffset = 0
$("#dir-contents").html("")
}
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset
console.log(start)
fetch(start, {
method: "GET",
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
if (json) {
$("#moreDir").removeClass("disabled")
var html = userparse(json, null, acct_id, "dir", null)
$("#dir-contents").append(html)
jQuery("time.timeago").timeago()
} else {
$("#moreDir").addClass("disabled")
}
})
} }
function directory(modeRaw, isMore) {
const mode = modeRaw === 'check' ? $('[name=dirsug]:checked').val() : modeRaw
var order = $('[name=sort]:checked').val()
if (!order) {
order = 'active'
}
var local_only = $('#local_only:checked').val()
if (local_only) {
local_only = 'true'
} else {
local_only = 'false'
}
var acct_id = $('#dir-acct-sel').val()
if (acct_id == 'noauth') {
var domain = $('#dirNoAuth-url').val()
var at = ''
} else {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
}
if (isMore) {
var addOffset = $('#dir-contents .cvo').length
$('#dir-contents').append(`<div class="progress transparent"><div class="indeterminate"></div></div>`)
} else {
var addOffset = 0
$('#dir-contents').html(`<div class="progress transparent"><div class="indeterminate"></div></div>`)
}
let start = `https://${domain}/api/v1/directory?order=${order}&local=${local_only}&offset=${addOffset}`
if (mode === 'suggest') start = `https://${domain}/api/v2/suggestions`
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
$('#dir-contents .progress').remove()
if (!response.ok) {
$('#dir-contents').html(`v2 follow suggestion is supported by Mastodon 3.4.0 or above.`)
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
if (json) {
$('#moreDir').removeClass('disabled')
let obj = []
if (mode === 'suggest') {
$('#moreDir').addClass('disabled')
for (const suggest of json) obj.push(suggest.account)
} else {
obj = json
}
var html = userparse(obj, null, acct_id, 'dir', null)
$('#dir-contents').append(html)
jQuery('time.timeago').timeago()
} else {
$('#moreDir').addClass('disabled')
}
})
}

File diff suppressed because it is too large Load Diff

View File

@ -89,7 +89,7 @@ function list() {
</a>/ </a>/
<a onclick="listUser('${list.id}','${acct_id}')" class="pointer"> <a onclick="listUser('${list.id}','${acct_id}')" class="pointer">
${lang.lang_list_users} ${lang.lang_list_users}
'</a><br>` </a><br>`
}) })
$('#lists').html(lists) $('#lists').html(lists)
} else { } else {

File diff suppressed because it is too large Load Diff

View File

@ -191,6 +191,7 @@ async function mixmore(tlid, type) {
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
var acct_id = obj[tlid].domain var acct_id = obj[tlid].domain
moreloading = true moreloading = true
console.log('moreloading mixmore '+tlid+' '+type)
todo('Integrated TL MoreLoading...(Local)') todo('Integrated TL MoreLoading...(Local)')
const domain = localStorage.getItem('domain_' + acct_id) const domain = localStorage.getItem('domain_' + acct_id)
const sid = $('#timeline_' + tlid + ' .cvo') const sid = $('#timeline_' + tlid + ' .cvo')

View File

@ -1,432 +1,439 @@
//通知 //通知
//取得+Streaming接続 //取得+Streaming接続
function notf(acct_id, tlid, sys) { function notf(acct_id, tlid, sys) {
if (sys == 'direct') { if (sys == 'direct') {
notfColumn(acct_id, tlid, sys) notfColumn(acct_id, tlid, sys)
} else { } else {
notfCommon(acct_id, tlid, sys) notfCommon(acct_id, tlid, sys)
} }
} }
function notfColumn(acct_id, tlid, sys) { function notfColumn(acct_id, tlid, sys) {
todo('Notifications Loading...') todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf') var native = localStorage.getItem('nativenotf')
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
if (!native) { if (!native) {
native = 'yes' native = 'yes'
} }
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var misskey = true var misskey = true
var start = 'https://' + domain + '/api/i/notifications' var start = 'https://' + domain + '/api/i/notifications'
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')
var body = JSON.stringify({ var body = JSON.stringify({
i: at i: at,
}) })
} else { } else {
var misskey = false var misskey = false
if (localStorage.getItem('exclude-' + tlid)) { if (localStorage.getItem('exclude-' + tlid)) {
var exc = localStorage.getItem('exclude-' + tlid) var exc = localStorage.getItem('exclude-' + tlid)
} else { } else {
var exc = '' var exc = ''
} }
var start = 'https://' + domain + '/api/v1/notifications' + exc if (exc === 'null') exc = ''
httpreq.open('GET', start, true) var start = 'https://' + domain + '/api/v1/notifications' + exc
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.open('GET', start, true)
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Content-Type', 'application/json')
var body = '' httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
} var body = ''
}
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(body) httpreq.send(body)
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) $('#landing_' + tlid).append(`<div>${this.status}</div><div>${escapeHTML(this.response)}`)
} setLog(start, this.status, this.response)
var max_id = httpreq.getResponseHeader('link') }
if (max_id) { var max_id = httpreq.getResponseHeader('link')
max_id = max_id.match(/[?&]{1}max_id=([0-9]+)/)[1] if (max_id) {
} max_id = max_id.match(/[?&]{1}max_id=([0-9]+)/)[1]
if (json[0]) { }
var templete = '' if (json[0]) {
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) var templete = ''
localStorage.setItem('lastnotf_' + acct_id, json[0].id) var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
Object.keys(json).forEach(function(key) { localStorage.setItem('lastnotf_' + acct_id, json[0].id)
var obj = json[key] Object.keys(json).forEach(function (key) {
if (lastnotf == obj.id && key > 0 && native == 'yes') { var obj = json[key]
var ct = key if (lastnotf == obj.id && key > 0 && native == 'yes') {
if (key > 14) { var ct = key
ct = '15+' if (key > 14) {
} ct = '15+'
var os = localStorage.getItem('platform') }
var options = { var os = localStorage.getItem('platform')
body: ct + lang.lang_notf_new, var options = {
icon: localStorage.getItem('prof_' + acct_id) body: ct + lang.lang_notf_new,
} icon: localStorage.getItem('prof_' + acct_id),
var n = new Notification('TheDesk:' + domain, options) }
} var n = new Notification('TheDesk:' + domain, options)
var mute = getFilterTypeByAcct(acct_id, 'notif') }
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ var mute = getFilterTypeByAcct(acct_id, 'notif')
if (obj.type != 'follow' && obj.type != 'move' && obj.type != 'follow_request') { //Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
if (misskey) { if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute) if (misskey) {
} else { templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute)
templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute) } else {
} templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute)
} else if (obj.type == 'follow_request') { }
templete = templete + userparse([obj.account], 'request', acct_id, tlid, -1) } else if (obj.type == 'follow_request') {
} else { templete = templete + userparse([obj.account], 'request', acct_id, tlid, -1)
if (misskey) { } else {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute) if (misskey) {
} else { templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute)
templete = templete + userparse([obj.account], obj.type, acct_id, tlid, -1) } else {
} templete = templete + userparse([obj.account], obj.type, acct_id, tlid, -1)
} }
}) }
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>' })
$('#timeline_' + tlid).html(templete) templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#landing_' + tlid).hide() $('#timeline_' + tlid).html(templete)
jQuery('time.timeago').timeago() // $('#landing_' + tlid).hide()
} jQuery('time.timeago').timeago()
$('#notf-box').addClass('fetched') }
todc() $('#notf-box').addClass('fetched')
//Markers todc()
var markers = localStorage.getItem('markers') //Markers
if (markers == 'yes') { var markers = localStorage.getItem('markers')
markers = true if (markers == 'yes') {
} else { markers = true
markers = false } else {
} markers = false
if (markers) { }
getMarker(tlid, 'notf', acct_id) if (markers) {
} getMarker(tlid, 'notf', acct_id)
} }
} }
if (!misskey) { }
if (localStorage.getItem('streaming_' + acct_id)) { if (!misskey) {
var wss = localStorage.getItem('streaming_' + acct_id) if (localStorage.getItem('streaming_' + acct_id)) {
} else { var wss = localStorage.getItem('streaming_' + acct_id)
var wss = 'wss://' + domain } else {
} var wss = 'wss://' + domain
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at }
} else { var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
var start = 'wss://' + domain + '/?i=' + at } else {
} var start = 'wss://' + domain + '/?i=' + at
}
} }
function notfCommon(acct_id, tlid, sys, stream) { function notfCommon(acct_id, tlid, sys, stream) {
todo('Notifications Loading...') todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf') var native = localStorage.getItem('nativenotf')
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
if (!native) { if (!native) {
native = 'yes' native = 'yes'
} }
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var misskey = true var misskey = true
var start = 'https://' + domain + '/api/i/notifications' var start = 'https://' + domain + '/api/i/notifications'
var i = { var i = {
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json',
}, },
body: JSON.stringify({ body: JSON.stringify({
i: at i: at,
}) }),
} }
} else { } else {
var misskey = false var misskey = false
var start = 'https://' + domain + '/api/v1/notifications' var start = 'https://' + domain + '/api/v1/notifications'
var i = { var i = {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at,
} },
} }
} }
if(stream == 'only') { if (stream == 'only') {
notfWS(misskey, acct_id, tlid, domain, at) notfWS(misskey, acct_id, tlid, domain, at)
return false return false
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
console.log('header to get param:' + response.headers.get('link')) console.log('header to get param:' + response.headers.get('link'))
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) console.log('notf error', 'div[data-notf=' + acct_id + '] .landing')
}) $('div[data-notf=' + acct_id + '] .landing').append(`<div>${response.status}</div><div>${escapeHTML(text)}`)
} setLog(response.url, response.status, text)
return response.json() })
}) }
.catch(function(error) { return response.json()
todo(error) })
setLog(start, 'JSON', error) .catch(function (error) {
console.error(error) todo(error)
}) setLog(start, 'JSON', error)
.then(function(json) { console.error(error)
if (json[0]) { })
var templete = '' .then(function (json) {
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) if (json[0]) {
localStorage.setItem('lastnotf_' + acct_id, json[0].id) var templete = ''
Object.keys(json).forEach(function(key) { var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
var obj = json[key] localStorage.setItem('lastnotf_' + acct_id, json[0].id)
if (lastnotf == obj.id && key > 0 && native == 'yes') { Object.keys(json).forEach(function (key) {
var ct = key var obj = json[key]
if (key > 14) { if (lastnotf == obj.id && key > 0 && native == 'yes') {
ct = '15+' var ct = key
} if (key > 14) {
var os = localStorage.getItem('platform') ct = '15+'
var options = { }
body: ct + lang.lang_notf_new, var os = localStorage.getItem('platform')
icon: localStorage.getItem('prof_' + acct_id) var options = {
} body: ct + lang.lang_notf_new,
var n = new Notification('TheDesk:' + domain, options) icon: localStorage.getItem('prof_' + acct_id),
} }
var mute = getFilterTypeByAcct(acct_id, 'notif') var n = new Notification('TheDesk:' + domain, options)
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ }
if (obj.type != 'follow' && obj.type != 'move') { var mute = getFilterTypeByAcct(acct_id, 'notif')
if (misskey) { //Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute) if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
} else { if (misskey) {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} } else {
} else { templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute)
if (misskey) { }
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute) } else {
} else { if (misskey) {
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1) templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
} } else {
} templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
}) }
$('div[data-notf=' + acct_id + ']').html(templete) }
$('#landing_' + tlid).hide() })
jQuery('time.timeago').timeago() $('div[data-notf=' + acct_id + ']').html(templete)
} // $('#landing_' + tlid).hide()
$('#notf-box').addClass('fetched') jQuery('time.timeago').timeago()
todc() }
if(stream != 'no') notfWS(misskey, acct_id, tlid, domain, at) $('#notf-box').addClass('fetched')
}) todc()
if (stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
})
} }
function notfWS(misskey, acct_id, tlid, domain, at) {
if(mastodonBaseWsStatus[domain] == 'available') return false
if (!misskey) {
if (localStorage.getItem('streaming_' + acct_id)) {
var wss = localStorage.getItem('streaming_' + acct_id)
} else {
var wss = 'wss://' + domain
}
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
var wsid = websocketNotf.length function notfWS(misskey, acct_id, tlid, domain, at) {
websocketNotf[acct_id] = new WebSocket(start) if (mastodonBaseWsStatus[domain] == 'available') return false
websocketNotf[acct_id].onopen = function(mess) { if (!misskey) {
console.table({ if (localStorage.getItem('streaming_' + acct_id)) {
acct_id: acct_id, var wss = localStorage.getItem('streaming_' + acct_id)
type: 'Connect Streaming API(Notf)', } else {
domain: domain, var wss = 'wss://' + domain
message: [mess] }
}) var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
$('i[data-notf=' + acct_id + ']').removeClass('red-text')
} var wsid = websocketNotf.length
websocketNotf[acct_id].onmessage = function(mess) { websocketNotf[acct_id] = new WebSocket(start)
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]); websocketNotf[acct_id].onopen = function (mess) {
var popup = localStorage.getItem('popup') console.table({
if (!popup) { acct_id: acct_id,
popup = 0 type: 'Connect Streaming API(Notf)',
} domain: domain,
var obj = JSON.parse(JSON.parse(mess.data).payload) message: [mess],
var type = JSON.parse(mess.data).event })
if (type == 'notification') { $('i[data-notf=' + acct_id + ']').removeClass('red-text')
var templete = '' }
localStorage.setItem('lastnotf_' + acct_id, obj.id) websocketNotf[acct_id].onmessage = function (mess) {
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { $('#landing_' + tlid).hide()
//markers show中はダメ //console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]);
if (obj.type != 'follow' && obj.type != 'follow_request') { var popup = localStorage.getItem('popup')
templete = parse([obj], 'notf', acct_id, 'notf', popup) if (!popup) {
} else if (obj.type == 'follow_request') { popup = 0
templete = userparse([obj.account], 'request', acct_id, 'notf', -1) }
} else { var obj = JSON.parse(JSON.parse(mess.data).payload)
templete = userparse([obj], obj.type, acct_id, 'notf', popup) var type = JSON.parse(mess.data).event
} if (type == 'notification') {
if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) { var templete = ''
$('div[data-notf=' + acct_id + ']').prepend(templete) localStorage.setItem('lastnotf_' + acct_id, obj.id)
$('div[data-const=notf_' + acct_id + ']').prepend(templete) if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
} //markers show中はダメ
jQuery('time.timeago').timeago() if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
} templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (type == 'delete') { } else if (obj.type == 'follow_request') {
$('[toot-id=' + obj + ']').hide() templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
$('[toot-id=' + obj + ']').remove() } else {
} templete = userparse([obj], obj.type, acct_id, 'notf', popup)
} }
websocketNotf[acct_id].onerror = function(error) { if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) {
console.error('WebSocket Error ', error) $('div[data-notf=' + acct_id + ']').prepend(templete)
errorct++ $('div[data-const=notf_' + acct_id + ']').prepend(templete)
console.log(errorct) }
if (errorct < 3) { jQuery('time.timeago').timeago()
notfWS(misskey, acct_id, tlid, domain, at) }
} } else if (type == 'delete') {
} $('[toot-id=' + obj + ']').hide()
websocketNotf[acct_id].onclose = function(error) { $('[toot-id=' + obj + ']').remove()
console.error('WebSocket Close ', error) }
errorct++ }
console.log(errorct) websocketNotf[acct_id].onerror = function (error) {
if (errorct < 3) { console.error('WebSocket Error ', error)
notfWS(misskey, acct_id, tlid, domain, at) errorct++
} console.log(errorct)
} if (errorct < 3) {
} notfWS(misskey, acct_id, tlid, domain, at)
}
}
websocketNotf[acct_id].onclose = function (error) {
console.error('WebSocket Close ', error)
errorct++
console.log(errorct)
if (errorct < 3) {
notfWS(misskey, acct_id, tlid, domain, at)
}
}
}
} }
//一定のスクロールで発火 //一定のスクロールで発火
function notfmore(tlid) { function notfmore(tlid) {
console.log({ status: 'kicked', status: moreloading }) console.log({ status: 'kicked', status: moreloading })
var multi = localStorage.getItem('column') var multi = localStorage.getItem('column')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
var acct_id = obj[tlid].domain var acct_id = obj[tlid].domain
if (!type) { if (!type) {
var type = obj[tlid].type var type = obj[tlid].type
} else { } else {
var data var data
} }
var sid = $('#timeline_' + tlid + ' .notif-marker') var sid = $('#timeline_' + tlid + ' .notif-marker')
.last() .last()
.attr('data-maxid') .attr('data-maxid')
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
if (sid && !moreloading) { if (sid && !moreloading) {
moreloading = true moreloading = true
var httpreq = new XMLHttpRequest() console.log('moreloading notfmore '+tlid)
if (localStorage.getItem('mode_' + domain) == 'misskey') { var httpreq = new XMLHttpRequest()
var misskey = true if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/i/notifications' var misskey = true
httpreq.open(POST, start, true) var start = 'https://' + domain + '/api/i/notifications'
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.open(POST, start, true)
var body = JSON.stringify({ httpreq.setRequestHeader('Content-Type', 'application/json')
i: at, var body = JSON.stringify({
untilID: sid i: at,
}) untilID: sid,
} else { })
var misskey = false } else {
if (localStorage.getItem('exclude-' + tlid)) { var misskey = false
var exc = localStorage.getItem('exclude-' + tlid) + '&max_id=' + sid if (localStorage.getItem('exclude-' + tlid)) {
} else { var exc = localStorage.getItem('exclude-' + tlid) + '&max_id=' + sid
var exc = '?max_id=' + sid } else {
} var exc = '?max_id=' + sid
var start = 'https://' + domain + '/api/v1/notifications' + exc }
httpreq.open('GET', start, true) var start = 'https://' + domain + '/api/v1/notifications' + exc
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.open('GET', start, true)
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Content-Type', 'application/json')
var body = '' httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
} var body = ''
}
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(body) httpreq.send(body)
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) setLog(start, this.status, this.response)
} }
console.log(['More notifications on ' + tlid, json]) console.log(['More notifications on ' + tlid, json])
var max_id = httpreq.getResponseHeader('link').match(/[?&]{1}max_id=([0-9]+)/)[1] var max_id = httpreq.getResponseHeader('link').match(/[?&]{1}max_id=([0-9]+)/)[1]
if (json[0]) { if (json[0]) {
var templete = '' var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].id) localStorage.setItem('lastnotf_' + acct_id, json[0].id)
Object.keys(json).forEach(function(key) { Object.keys(json).forEach(function (key) {
var obj = json[key] var obj = json[key]
var mute = getFilterTypeByAcct(acct_id, 'notif') var mute = getFilterTypeByAcct(acct_id, 'notif')
if (obj.type != 'follow') { if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
if (misskey) { if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else { } else {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute)
} }
} else { } else {
if (misskey) { if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
} else { } else {
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1) templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
} }
} }
}) })
moreloading = false moreloading = false
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>' templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#timeline_' + tlid).append(templete) $('#timeline_' + tlid).append(templete)
$('#landing_' + tlid).hide() // $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
} }
$('#notf-box').addClass('fetched') $('#notf-box').addClass('fetched')
todc() todc()
} }
} }
} }
} }
//通知トグルボタン //通知トグルボタン
function notfToggle(acct, tlid) { function notfToggle(acct, tlid) {
if ($('#notf-box_' + tlid).hasClass('column-hide')) { if ($('#notf-box_' + tlid).hasClass('column-hide')) {
$('#notf-box_' + tlid).css('display', 'block') $('#notf-box_' + tlid).css('display', 'block')
$('#notf-box_' + tlid).animate( $('#notf-box_' + tlid).animate({
{ height: '400px',
height: '400px' }, {
}, duration: 300,
{ complete: function () {
duration: 300, $('#notf-box_' + tlid).css('overflow-y', 'scroll')
complete: function() { $('#notf-box_' + tlid).removeClass('column-hide')
$('#notf-box_' + tlid).css('overflow-y', 'scroll') },
$('#notf-box_' + tlid).removeClass('column-hide') })
} } else {
} $('#notf-box_' + tlid).css('overflow-y', 'hidden')
) $('#notf-box_' + tlid).animate({
} else { height: '0',
$('#notf-box_' + tlid).css('overflow-y', 'hidden') }, {
$('#notf-box_' + tlid).animate( duration: 300,
{ complete: function () {
height: '0' $('#notf-box_' + tlid).addClass('column-hide')
}, $('#notf-box_' + tlid).css('display', 'none')
{ },
duration: 300, })
complete: function() { }
$('#notf-box_' + tlid).addClass('column-hide') notfCanceler(acct)
$('#notf-box_' + tlid).css('display', 'none')
}
}
)
}
notfCanceler(acct)
} }
function notfCanceler(acct) { function notfCanceler(acct) {
$('.notf-reply_' + acct).text(0) $('.notf-reply_' + acct).text(0)
localStorage.removeItem('notf-reply_' + acct) localStorage.removeItem('notf-reply_' + acct)
$('.notf-reply_' + acct).addClass('hide') $('.notf-reply_' + acct).addClass('hide')
$('.notf-fav_' + acct).text(0) $('.notf-fav_' + acct).text(0)
localStorage.removeItem('notf-fav_' + acct) localStorage.removeItem('notf-fav_' + acct)
$('.notf-fav_' + acct).addClass('hide') $('.notf-fav_' + acct).addClass('hide')
$('.notf-bt_' + acct).text(0) $('.notf-bt_' + acct).text(0)
localStorage.removeItem('notf-bt_' + acct) localStorage.removeItem('notf-bt_' + acct)
$('.notf-bt_' + acct).addClass('hide') $('.notf-bt_' + acct).addClass('hide')
$('.notf-follow_' + acct).text(0) $('.notf-follow_' + acct).text(0)
localStorage.removeItem('notf-follow_' + acct) localStorage.removeItem('notf-follow_' + acct)
$('.notf-follow_' + acct).addClass('hide') $('.notf-follow_' + acct).addClass('hide')
$('.notf-icon_' + acct).removeClass('red-text') $('.notf-icon_' + acct).removeClass('red-text')
var id = $('#announce_' + acct + ' .announcement').first().attr('data-id') var id = $('#announce_' + acct + ' .announcement')
$('.notf-announ_' + acct + '_ct').text("") .first()
$(`.boxIn[data-acct=${acct}] .notice-box`).removeClass('has-notf') .attr('data-id')
if(id) { $('.notf-announ_' + acct + '_ct').text('')
localStorage.setItem('announ_' + acct, id) $(`.boxIn[data-acct=${acct}] .notice-box`).removeClass('has-notf')
} if (id) {
localStorage.setItem('announ_' + acct, id)
}
} }
function allNotfRead() { function allNotfRead() {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
if (multi) { if (multi) {
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
Object.keys(obj).forEach(function(key) { Object.keys(obj).forEach(function (key) {
notfCanceler(key) notfCanceler(key)
}) })
} }
} }
allNotfRead() allNotfRead()

View File

@ -3,8 +3,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
var splitter = new GraphemeSplitter() var splitter = new GraphemeSplitter()
var templete = '' var templete = ''
if (obj[0]) { if (obj[0]) {
if (tlid === 1) { if (tlid === 1) { }
}
localStorage.setItem('lastunix_' + tlid, date(obj[0].created_at, 'unix')) localStorage.setItem('lastunix_' + tlid, date(obj[0].created_at, 'unix'))
} }
@ -343,8 +342,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (native == 'yes') { if (native == 'yes') {
var os = localStorage.getItem('platform') var os = localStorage.getItem('platform')
var options = { var options = {
body: body: toot.account.display_name +
toot.account.display_name +
'(' + '(' +
toot.account.acct + toot.account.acct +
')' + ')' +
@ -485,6 +483,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else { } else {
var locked = '' var locked = ''
} }
if (toot.edited_at) {
locked = locked + ` <i class="material-icons teal-text" style="font-size: 0.8rem" title="Edited at ${date(toot.edited_at, 'absolute')}">create</i>`
}
if (!toot.application) { if (!toot.application) {
var via = '' var via = ''
viashow = 'hide' viashow = 'hide'
@ -593,7 +594,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (toot.poll) { if (toot.poll) {
var poll = pollParse(toot.poll, acct_id, false) var poll = pollParse(toot.poll, acct_id, false)
} }
var mediack = toot.media_attachments[0] var mediack = toot.media_attachments[0]
//メディアがあれば //メディアがあれば
var media_ids = '' var media_ids = ''
@ -622,7 +622,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (media.pleroma && media.pleroma.mime_type.indexOf('video') !== -1) { if (media.pleroma && media.pleroma.mime_type.indexOf('video') !== -1) {
viewer = viewer =
viewer + viewer +
`<a onclick="imgv('${id}','${key2}','${acct_id}')" id="${id}'-image-${key2}" `<a onclick="imgv('${id}','${key2}','${acct_id}')" id="${id}-image-${key2}"
data-url="${url}" data-type="video" class="img-parsed"> data-url="${url}" data-type="video" class="img-parsed">
<video src="${purl}" class="${sense} toot-img pointer" style="max-width:100%;" loop="true" alt="attached media"> <video src="${purl}" class="${sense} toot-img pointer" style="max-width:100%;" loop="true" alt="attached media">
</a></span>` </a></span>`
@ -631,7 +631,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
var mty = media.remote_url.match(/.+(\..+)$/)[1] var mty = media.remote_url.match(/.+(\..+)$/)[1]
viewer = viewer =
viewer + viewer +
`<a href="${media.url ? media.url : media.remote_url}" title="${media.remote_url} from ${media.url}">[${lang.lang_parse_unknown}(${mty})]</a> ` `<a href="${media.url ? media.url : media.remote_url}" title="${media.url ? media.url : media.remote_url}">[${lang.lang_parse_unknown}(${mty})]</a>${media.url ? `<a href="${media.remote_url}"><i class="material-icons sublink" title="${media.remote_url}">open_in_new</i></a>` : ''} `
} else if (media.type == 'audio') { } else if (media.type == 'audio') {
viewer = viewer =
viewer + viewer +
@ -644,7 +644,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else { } else {
var desc = '' var desc = ''
} }
console.log('https://' + domain + '/storage/no-preview.png')
if (media.preview_url == 'https://' + domain + '/storage/no-preview.png') { if (media.preview_url == 'https://' + domain + '/storage/no-preview.png') {
purl = url purl = url
nsfwmes = '<div class="nsfw-media">Unavailable preview</div>' nsfwmes = '<div class="nsfw-media">Unavailable preview</div>'
@ -666,10 +665,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
viewer = '' viewer = ''
hasmedia = 'nomedia' hasmedia = 'nomedia'
} }
var menck = toot.mentions[0]
var mentions = '' var mentions = ''
//メンションであれば //メンションであれば
if (menck) { if (toot.mentions && toot.mentions[0]) {
mentions = '' mentions = ''
var to_mention = [] var to_mention = []
Object.keys(toot.mentions).forEach(function (key3) { Object.keys(toot.mentions).forEach(function (key3) {
@ -822,23 +820,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} }
//絵文字があれば //絵文字があれば
if (emojick) { if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) { content = this.customEmojiReplace(content, toot, gif);
var emoji = toot.emojis[key5] spoil = this.customEmojiReplace(spoil, toot, gif);
var shortcode = emoji.shortcode poll = this.customEmojiReplace(poll, toot, gif);
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');" loading="lazy">
`
var regExp = new RegExp(':' + shortcode + ':', 'g')
content = content.replace(regExp, emoji_url)
spoil = spoil.replace(regExp, emoji_url)
poll = poll.replace(regExp, emoji_url)
})
} }
//ニコフレ絵文字 //ニコフレ絵文字
if (toot.profile_emojis) { if (toot.profile_emojis) {
@ -860,7 +844,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
}) })
} }
//デフォ絵文字 //デフォ絵文字
content = twemoji.parse(content) const contentElement = document.createElement('div')
contentElement.innerHTML = content
const emojified = twemoji.parse(contentElement)
content = emojified.innerHTML
if (dis_name) { if (dis_name) {
dis_name = twemoji.parse(dis_name) dis_name = twemoji.parse(dis_name)
} }
@ -996,7 +984,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
menuct++ menuct++
} }
//このトゥート内のアクションを完了させるために、適当にIDを振る //このトゥート内のアクションを完了させるために、適当にIDを振る
var rand = randomStr(8) var rand = makeCID()
//プラグイン機構 //プラグイン機構
var pluginBOT = plugins.buttonOnToot var pluginBOT = plugins.buttonOnToot
var pluginHtml = '' var pluginHtml = ''
@ -1068,7 +1056,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</a> </a>
</div> </div>
<div class="action ${disp['re']} ${noauth}"> <div class="action ${disp['re']} ${noauth}">
<a onclick="re('${toot.id}','${to_mention}','${acct_id}','${visen}','${escapeHTML(toot.spoiler_text)}')" <a onclick="re('${toot.id}','${to_mention}','${acct_id}','${visen}','${escapeHTML(toot.spoiler_text).replaceAll('\n','')}')"
class="waves-effect waves-dark btn-flat actct rep-btn" class="waves-effect waves-dark btn-flat actct rep-btn"
data-men="${to_mention}" data-visen="${visen}" style="padding:0" title="${lang.lang_parse_replyto}"> data-men="${to_mention}" data-visen="${visen}" style="padding:0" title="${lang.lang_parse_replyto}">
<i class="fas fa-share"></i> <i class="fas fa-share"></i>
@ -1146,6 +1134,10 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
style="padding:0; padding-top: 5px;"> style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft} <i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft}
</li> </li>
<li class="${if_mine}" onclick="editToot('${uniqueid}','${acct_id}')"
style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">create</i>${lang.lang_edit}(v3.5.0~)
</li>
${trans} ${trans}
<li onclick="postMessage(['openUrl', '${toot.url}'], '*')" <li onclick="postMessage(['openUrl', '${toot.url}'], '*')"
style="padding:0; padding-top: 5px;"> style="padding:0; padding-top: 5px;">
@ -1214,6 +1206,8 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var ftxt = lang.lang_parse_moved var ftxt = lang.lang_parse_moved
} else if (auth == 'request') { } else if (auth == 'request') {
var ftxt = lang.lang_parse_request var ftxt = lang.lang_parse_request
} else if (auth == 'admin.sign_up') {
var ftxt = lang.lang_parse_signup
} }
if (popup > 0 || popup == -1 || notf) { if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>' var notftext = ftxt + '<br>'
@ -1317,7 +1311,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
class="sml gray" class="sml gray"
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"
> >
@ ${toot.acct}${locked}</span> @${toot.acct}${locked}</span>
</div> </div>
</div> </div>
<div class="area-status"> <div class="area-status">
@ -1400,7 +1394,7 @@ function client(name) {
} }
//Poll Parser //Poll Parser
function pollParse(poll, acct_id, emojis) { function pollParse(poll, acct_id, emojis) {
var rand = randomStr(8) var rand = makeCID()
var datetype = localStorage.getItem('datetype') var datetype = localStorage.getItem('datetype')
var anime = localStorage.getItem('animation') var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) { if (anime == 'yes' || !anime) {
@ -1458,7 +1452,7 @@ function pollParse(poll, acct_id, emojis) {
var me = minechoice[i] var me = minechoice[i]
if (me == keyc) { if (me == keyc) {
var voteit = var voteit =
'<span class="ownMark"><img class="emoji" draggable="false" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/2705.png"></span>' '<span class="ownMark"><img class="emoji" draggable="false" src="https://energised.botegirl.parts/v/12.1.4/72x72/2705.png"></span>'
break break
} }
} }
@ -1526,7 +1520,51 @@ function pollParse(poll, acct_id, emojis) {
</div>` </div>`
return pollHtml return pollHtml
} }
function customEmojiReplace(content, toot, gif) {
var contentDiv = document.createElement('div');
contentDiv.style.display = 'none';
contentDiv.innerHTML = content;
var replace = false;
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var nodes = document.evaluate('//text()', contentDiv, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if (nodes.snapshotLength == 0) return;
var shortcodeBracket = (':' + shortcode + ':');
var img = document.createElement('img');
img.setAttribute('draggable', 'false');
img.setAttribute('src', emoSource);
img.setAttribute('class', 'emoji-img');
img.setAttribute('data-emoji', shortcode);
img.setAttribute('alt', shortcodeBracket);
img.setAttribute('title', shortcodeBracket);
img.setAttribute('onclick', "this.classList.toggle('bigemoji');");
for (var i = 0; i < nodes.snapshotLength; i++) {
var node = nodes.snapshotItem(i);
var txt = node.textContent;
var spos = txt.indexOf(shortcodeBracket);
if (spos == -1) continue;
var txtBefore = document.createTextNode(txt.substr(0, spos));
var txtAfter = document.createTextNode(txt.substr(spos + shortcodeBracket.length));
node.parentNode.insertBefore(txtBefore, node);
node.parentNode.insertBefore(img, node);
node.parentNode.insertBefore(txtAfter, node);
node.textContent = '';
replace = true;
}
})
if (replace) contentDiv.innerHTML = this.customEmojiReplace(contentDiv.innerHTML, toot, gif);
return contentDiv.innerHTML;
}
//MastodonBaseStreaming //MastodonBaseStreaming
var mastodonBaseWs = {} var mastodonBaseWs = {}
var mastodonBaseWsStatus = {} var mastodonBaseWsStatus = {}
@ -1552,6 +1590,7 @@ function mastodonBaseStreaming(acct_id) {
$('.notice_icon_acct_' + acct_id).removeClass('red-text') $('.notice_icon_acct_' + acct_id).removeClass('red-text')
} }
mastodonBaseWs[domain].onmessage = function (mess) { mastodonBaseWs[domain].onmessage = function (mess) {
$(`div[data-acct=${acct_id}] .landing`).hide()
const typeA = JSON.parse(mess.data).event const typeA = JSON.parse(mess.data).event
if (typeA == 'delete') { if (typeA == 'delete') {
$(`[unique-id=${JSON.parse(mess.data).payload}]`).hide() $(`[unique-id=${JSON.parse(mess.data).payload}]`).hide()
@ -1566,6 +1605,13 @@ function mastodonBaseStreaming(acct_id) {
filterUpdate(acct_id) filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) { } else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid) announ(acct_id, tlid)
} else if (typeA === 'status.update') {
const tl = JSON.parse(mess.data).stream
const obj = JSON.parse(JSON.parse(mess.data).payload)
const tls = getTlMeta(tl[0], tl, acct_id, obj)
const template = insertTl(obj, tls, true)
$(`[unique-id=${obj.id}]`).html(template)
$(`[unique-id=${obj.id}] [unique-id=${obj.id}]`).unwrap()
} else if (typeA == 'notification') { } else if (typeA == 'notification') {
const obj = JSON.parse(JSON.parse(mess.data).payload) const obj = JSON.parse(JSON.parse(mess.data).payload)
let template = '' let template = ''
@ -1574,7 +1620,7 @@ function mastodonBaseStreaming(acct_id) {
if (!popup) { if (!popup) {
popup = 0 popup = 0
} }
if (obj.type != 'follow' && obj.type != 'follow_request') { if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
template = parse([obj], 'notf', acct_id, 'notf', popup) template = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') { } else if (obj.type == 'follow_request') {
template = userparse([obj.account], 'request', acct_id, 'notf', -1) template = userparse([obj.account], 'request', acct_id, 'notf', -1)
@ -1636,7 +1682,7 @@ function mastodonBaseStreaming(acct_id) {
return false return false
} }
} }
function insertTl(obj, tls) { function insertTl(obj, tls, dry) {
for (const timeline of tls) { for (const timeline of tls) {
const { id, voice, type, acct_id } = timeline const { id, voice, type, acct_id } = timeline
const mute = getFilterTypeByAcct(acct_id, type) const mute = getFilterTypeByAcct(acct_id, type)
@ -1646,6 +1692,7 @@ function insertTl(obj, tls) {
say(obj.content) say(obj.content)
} }
const template = parse([obj], type, acct_id, id, '', mute, type) const template = parse([obj], type, acct_id, id, '', mute, type)
if (dry) return template
console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`) console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`)
if ( if (
$(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0 $(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0

View File

@ -13,16 +13,31 @@ function searchMenu() {
//検索取得 //検索取得
function src(mode, offset) { function src(mode, offset) {
if (!offset) { if (!offset) {
$('#src-contents').html('') $('#src-contents').html(`
<div class="preloader-wrapper small active" style="margin-left: calc(50% - 36px);">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
`)
var add = '' var add = ''
} else { } else {
var add = '&type=accounts&offset=' + $('#src-accts .cvo').length var add = '&type=accounts&offset=' + $('#src-accts .cusr').length
} }
var q = $('#src').val() var q = $('#src').val()
var acct_id = $('#src-acct-sel').val() var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') { if (acct_id == 'tootsearch') {
tsAdd(q) tsAdd(q)
$('#src-contents').html('')
return false return false
} }
localStorage.setItem('last-use', acct_id) localStorage.setItem('last-use', acct_id)
@ -48,24 +63,27 @@ function src(mode, offset) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!offset) {
$('#src-contents').html(``)
}
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
src('v1') src('v1')
return false return false
}) })
.then(function(json) { .then(function (json) {
console.log(['Search', json]) console.log(['Search', json])
//ハッシュタグ //ハッシュタグ
if (json.hashtags[0]) { if (json.hashtags[0]) {
var tags = '' var tags = ''
Object.keys(json.hashtags).forEach(function(key4) { Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4] var tag = json.hashtags[key4]
if (mode) { if (mode) {
tags = tags =
@ -74,6 +92,11 @@ function src(mode, offset) {
#${escapeHTML(tag)} #${escapeHTML(tag)}
</a> </a>
<br> ` <br> `
} else if (!tag.history) {
tags+=`<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>
<br> `
} else { } else {
tags = tags + graphDraw(tag, acct_id) tags = tags + graphDraw(tag, acct_id)
} }
@ -116,7 +139,7 @@ function tsAdd(q) {
parseColumn('add') parseColumn('add')
} }
function tootsearch(tlid, q) { function tootsearch(tlid, q) {
if(!q || q=='undefined') { if (!q || q == 'undefined') {
return false return false
} }
var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
@ -129,20 +152,20 @@ function tootsearch(tlid, q) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(raw) { .then(function (raw) {
var templete = '' var templete = ''
var json = raw.hits.hits var json = raw.hits.hits
var max_id = raw['hits'].length var max_id = raw['hits'].length
@ -170,6 +193,7 @@ function moreTs(tlid, q) {
.last() .last()
.attr('data-maxid') .attr('data-maxid')
moreloading = true moreloading = true
console.log('moreloading src '+tlid)
var start = var start =
'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q 'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q
$('#notice_' + tlid).text('tootsearch(' + q + ')') $('#notice_' + tlid).text('tootsearch(' + q + ')')
@ -180,20 +204,20 @@ function moreTs(tlid, q) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(raw) { .then(function (raw) {
var templete = '' var templete = ''
var json = raw.hits.hits var json = raw.hits.hits
var max_id = raw['hits'].length var max_id = raw['hits'].length
@ -256,8 +280,8 @@ function graphDrawCore(his, tag, acct_id) {
</div> </div>
<div class="tagCompTag"> <div class="tagCompTag">
<a onclick="tl('tag','${escapeHTML( <a onclick="tl('tag','${escapeHTML(
tag.name tag.name
)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}"> )}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
#${escapeHTML(tag.name)} #${escapeHTML(tag.name)}
</a> </a>
</div> </div>
@ -267,51 +291,89 @@ function graphDrawCore(his, tag, acct_id) {
</div> </div>
</div>` </div>`
} }
/* async function trend() {
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend() {
console.log('get trend') console.log('get trend')
$('#src-contents').html('') $('#src-contents').html('')
var acct_id = $('#src-acct-sel').val() var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') { if (acct_id == 'tootsearch') {
return false return false
} }
var domain = localStorage.getItem('domain_' + acct_id) const domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') const at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/trends' try {
console.log(start) const tagTrendUrl = 'https://' + domain + '/api/v1/trends'
fetch(start, { const tagTrendResponse = await fetch(tagTrendUrl, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
} }
return response.json()
}) })
.catch(function(error) { if (!tagTrendResponse.ok) {
setLog(start, 'JSON', error) tagTrendResponse.text().then(function (text) {
console.error(error) setLog(tagTrendResponse.url, tagTrendResponse.status, text)
})
.then(function(json) {
var tags = ''
Object.keys(json).forEach(function(keye) {
var tag = json[keye]
var his = tag.history
tags = graphDrawCore(his, tag, acct_id)
$('#src-contents').append(tags)
}) })
}
const tagTrends = await tagTrendResponse.json()
let tags = ''
for (const tag of tagTrends) {
const his = tag.history
tags = tags + graphDrawCore(his, tag, acct_id)
}
$('#src-contents').append(`<div id="src-content-tag">Trend Tags<br />${tags || 'none'}</div>`)
} catch {
}
try {
const tootTrendUrl = 'https://' + domain + '/api/v1/trends/statuses'
const tootTrendResponse = await fetch(tootTrendUrl, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
}) })
if (!tootTrendResponse.ok) {
tootTrendResponse.text().then(function (text) {
setLog(tootTrendResponse.url, tootTrendResponse.status, text)
})
}
const tootTrends = await tootTrendResponse.json()
if (tootTrends.length) {
const templete = parse(tootTrends, '', acct_id)
$('#src-contents').append(`<div id="src-content-status">Trend Statuses<br />${templete}</div>`)
} else {
$('#src-contents').append(`<div id="src-content-status">Trend Statuses<br />none</div>`)
}
} catch {
}
try {
const linkTrendUrl = 'https://' + domain + '/api/v1/trends/links'
const linkTrendResponse = await fetch(linkTrendUrl, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
if (!linkTrendResponse.ok) {
linkTrendResponse.text().then(function (text) {
setLog(linkTrendResponse.url, linkTrendResponse.status, text)
})
}
const linkTrends = await linkTrendResponse.json()
console.log(linkTrends)
let links = ''
for (const link of linkTrends) {
links = links + `<a href="${link.url}" target="_blank">${link.url}</a><br />` + cardHtml(link, acct_id, '') + `<hr />`
}
$('#src-contents').append(`<div id="src-content-link">Trend Links<br />${links}</div>`)
} catch {
}
} }
function srcBox(mode) { function srcBox(mode) {
if (mode == 'open') { if (mode == 'open') {
@ -327,18 +389,18 @@ function doSrc(type) {
$('#pageSrc').addClass('hide') $('#pageSrc').addClass('hide')
$('#pageSrc').removeClass('keep') $('#pageSrc').removeClass('keep')
var q = $('.srcQ').text() var q = $('.srcQ').text()
if(type == 'web') { if (type == 'web') {
var start = localStorage.getItem('srcUrl') var start = localStorage.getItem('srcUrl')
if(!start) { if (!start) {
start = 'https://google.com/search?q={q}' start = 'https://google.com/search?q={q}'
} }
start = start.replace(/{q}/, q) start = start.replace(/{q}/, q)
postMessage(["openUrl", start], "*") postMessage(["openUrl", start], "*")
} else if(type == 'ts') { } else if (type == 'ts') {
tsAdd(q) tsAdd(q)
} else if(type == 'copy') { } else if (type == 'copy') {
execCopy(q) execCopy(q)
} else if(type == 'toot') { } else if (type == 'toot') {
brInsert(q) brInsert(q)
} }
} }

View File

@ -10,6 +10,7 @@ if (location.search) {
} }
//よく使うタグ //よく使うタグ
function tagShow(tag, elm) { function tagShow(tag, elm) {
tag = decodeURIComponent(tag)
const tagTL = lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag) const tagTL = lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)
const tagPin = lang.lang_parse_tagpin.replace('{{tag}}', '#' + tag) const tagPin = lang.lang_parse_tagpin.replace('{{tag}}', '#' + tag)
const tagToot = lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag) const tagToot = lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)

File diff suppressed because it is too large Load Diff

View File

@ -21,21 +21,41 @@ function imgv(id, key, acct_id) {
if (remote_img == 'yes') { if (remote_img == 'yes') {
murl = ourl murl = ourl
} }
$(document).ready(function() { $(document).ready(function () {
if (type == 'image') { if (type == 'image') {display_image(murl,id,key)}
$('#imagemodal').modal('open') else if (type == 'video') {display_video(murl)}
imageXhr(id, key, murl) else if (type == 'gifv')
$('#imagewrap').dragScroll() // ドラッグスクロール設定 {
$('#imgmodal').show() if (remote_img == 'no') {display_video(murl)}
$('#imagemodal').attr('data-key', key) else
$('#imagemodal').attr('data-id', id) {
} else if (type == 'video' || type == 'gifv') { // Need to detect if it's a video or a gif, depends if it came from pleroma or mastodon
$('#video').attr('src', murl) // Using extension is a bad idea but w/e
$('#videomodal').modal('open') // Actually if it's from mastodon the extension will be mp4.
$('#imgmodal').show() if (murl.endsWith('.mp4')) {display_video(murl)}
else {display_image(murl,id,key)}
}
} }
}) })
} }
function display_image(murl,id,key)
{
$('#imagemodal').modal('open')
imageXhr(id, key, murl)
$('#imagewrap').dragScroll() // ドラッグスクロール設定
$('#imgmodal').show()
$('#imagemodal').attr('data-key', key)
$('#imagemodal').attr('data-id', id)
}
function display_video(murl,id=null,key=null)
{
$('#video').attr('src', murl)
$('#videomodal').modal('open')
$('#imgmodal').show()
}
//イメージビューワーの送り //イメージビューワーの送り
function imgCont(type) { function imgCont(type) {
var key = $('#imagemodal').attr('data-key') var key = $('#imagemodal').attr('data-key')
@ -47,6 +67,9 @@ function imgCont(type) {
} }
var murl = $('#' + id + '-image-' + key).attr('data-url') var murl = $('#' + id + '-image-' + key).attr('data-url')
var ourl = $('#' + id + '-image-' + key).attr('data-original') var ourl = $('#' + id + '-image-' + key).attr('data-original')
if (!ourl || ourl == 'null') {
ourl = murl
}
var type = $('#' + id + '-image-' + key).attr('data-type') var type = $('#' + id + '-image-' + key).attr('data-type')
$('#imagemodal').attr('data-id', id) $('#imagemodal').attr('data-id', id)
$('#imagemodal').attr('data-acct', acct_id) $('#imagemodal').attr('data-acct', acct_id)
@ -54,7 +77,7 @@ function imgCont(type) {
$('#imagemodal').attr('data-image', murl) $('#imagemodal').attr('data-image', murl)
//表示はリモートを使うか(どちらにしろコピーはオリジナル) //表示はリモートを使うか(どちらにしろコピーはオリジナル)
var remote_img = localStorage.getItem('remote_img') var remote_img = localStorage.getItem('remote_img')
if (remote_img == 'yes' && ourl != 'null') { if (remote_img == 'yes') {
murl = ourl murl = ourl
} }
if (murl) { if (murl) {
@ -62,7 +85,7 @@ function imgCont(type) {
$('#imgsec').text(0) $('#imgsec').text(0)
$('#imgmodal').attr('src', '../../img/loading.svg') $('#imgmodal').attr('src', '../../img/loading.svg')
var type = $('#' + id + '-image-' + key).attr('data-type') var type = $('#' + id + '-image-' + key).attr('data-type')
$(document).ready(function() { $(document).ready(function () {
if (type == 'image') { if (type == 'image') {
imageXhr(id, key, murl) imageXhr(id, key, murl)
$('#imagewrap').dragScroll() // ドラッグスクロール設定 $('#imagewrap').dragScroll() // ドラッグスクロール設定
@ -76,17 +99,29 @@ function imgCont(type) {
} }
} }
function imageXhr(id, key, murl) { function imageXhr(id, key, murl) {
let time = 0
var startTime = new Date() var startTime = new Date()
const timer = setInterval(function () {
time = time + 1
$('#imgsec').text(time < 5000 ? time : '?')
}, 10)
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
$('#imgmodal-progress').removeClass('hide')
xhr = new XMLHttpRequest() xhr = new XMLHttpRequest()
xhr.open('GET', murl, true) xhr.open('GET', murl, true)
xhr.responseType = 'arraybuffer' xhr.responseType = 'arraybuffer'
xhr.addEventListener( xhr.addEventListener(
'progress', 'progress',
function(event) { function (event) {
if (event.lengthComputable) { if (event.lengthComputable) {
var total = event.total var total = event.total
var now = event.loaded var now = event.loaded
$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
var per = (now / total) * 100 var per = (now / total) * 100
$('#imgmodal-progress div').removeClass('indeterminate')
$('#imgmodal-progress div').addClass('determinate')
$('#imgmodal-progress div').css('width', `${per}%`)
$('#imgprog').text(Math.floor(per)) $('#imgprog').text(Math.floor(per))
} }
}, },
@ -94,31 +129,35 @@ function imageXhr(id, key, murl) {
) )
xhr.addEventListener( xhr.addEventListener(
'loadend', 'loadend',
function(event) { function (event) {
var total = event.total var total = event.total
$('#imgbyte').text(Math.floor(total / 1024)) $('#imgbyte').text(Math.floor(total / 1024))
var now = event.loaded var now = event.loaded
var per = (now / total) * 100 var per = (now / total) * 100
$('#imgprog').text(Math.floor(per)) $('#imgprog').text(Math.floor(per))
$('#imgmodal-progress').addClass('hide')
$('#imgmodal-progress div').css('width', '0%')
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
}, },
false false
) )
xhr.addEventListener( xhr.addEventListener(
'error', 'error',
function(event) { function (event) {
$('#imgmodal').attr('src', murl) $('#imgmodal').attr('src', murl)
}, },
false false
) )
xhr.onreadystatechange = function() { xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
r = new FileReader() r = new FileReader()
r.readAsDataURL(this.response) r.readAsDataURL(this.response)
r.onload = function() { r.onload = function () {
var b64 = r.result var b64 = r.result
var element = new Image() var element = new Image()
var width var width
element.onload = function() { element.onload = function () {
var width = element.naturalWidth var width = element.naturalWidth
var height = element.naturalHeight var height = element.naturalHeight
calcNiceAspect(width, height) calcNiceAspect(width, height)
@ -137,6 +176,7 @@ function imageXhr(id, key, murl) {
} }
element.src = b64 element.src = b64
var endTime = new Date() var endTime = new Date()
clearInterval(timer)
var proctime = endTime.getTime() - startTime.getTime() var proctime = endTime.getTime() - startTime.getTime()
$('#imgsec').text(proctime) $('#imgsec').text(proctime)
$('#imgmodal').attr('src', b64) $('#imgmodal').attr('src', b64)
@ -146,8 +186,8 @@ function imageXhr(id, key, murl) {
xhr.responseType = 'blob' xhr.responseType = 'blob'
xhr.send() xhr.send()
} }
function calcNiceAspect( width, height ) { function calcNiceAspect(width, height) {
if(width < 650) { if (width < 650) {
width = 650 width = 650
} }
var windowH = $(window).height() var windowH = $(window).height()
@ -156,7 +196,7 @@ function calcNiceAspect( width, height ) {
$('#imagemodal img').css('width', 'auto') $('#imagemodal img').css('width', 'auto')
if (height < windowH) { if (height < windowH) {
$('#imagemodal').css('height', height + 100 + 'px') $('#imagemodal').css('height', height + 100 + 'px')
$('#imagemodal img').css('height', height + 'px') $('#imagemodal img').css('height', height + 'px')
if (width > windowW * 0.8) { if (width > windowW * 0.8) {
$('#imagemodal').css('width', '80vw') $('#imagemodal').css('width', '80vw')
$('#imagemodal img').css('width', 'auto') $('#imagemodal img').css('width', 'auto')
@ -188,11 +228,11 @@ function zoom(z) {
$('#imagewrap img').css('height', hgt + 'px') $('#imagewrap img').css('height', hgt + 'px')
} }
//スマホ対応ドラッグ移動システム //スマホ対応ドラッグ移動システム
(function() { (function () {
$.fn.dragScroll = function() { $.fn.dragScroll = function () {
var target = this var target = this
$(this) $(this)
.mousedown(function(event) { .mousedown(function (event) {
$(this) $(this)
.data('down', true) .data('down', true)
.data('x', event.clientX) .data('x', event.clientX)
@ -207,7 +247,7 @@ function zoom(z) {
}) })
// ウィンドウから外れてもイベント実行 // ウィンドウから外れてもイベント実行
$(document) $(document)
.mousemove(function(event) { .mousemove(function (event) {
if ($(target).data('down') == true) { if ($(target).data('down') == true) {
// スクロール // スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - event.clientX) target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - event.clientX)
@ -215,11 +255,11 @@ function zoom(z) {
return false // 文字列選択を抑止 return false // 文字列選択を抑止
} }
}) })
.mouseup(function(event) { .mouseup(function (event) {
$(target).data('down', false) $(target).data('down', false)
}) })
$(this) $(this)
.on('touchstart', function(event) { .on('touchstart', function (event) {
$(this) $(this)
.data('down', true) .data('down', true)
.data('x', getX(event)) .data('x', getX(event))
@ -232,7 +272,7 @@ function zoom(z) {
overflow: 'hidden', // スクロールバー非表示 overflow: 'hidden', // スクロールバー非表示
cursor: 'move' cursor: 'move'
}) //指が触れたか検知 }) //指が触れたか検知
$(this).on('touchmove', function(event) { $(this).on('touchmove', function (event) {
if ($(target).data('down') === true) { if ($(target).data('down') === true) {
// スクロール // スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - getX(event)) target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - getX(event))
@ -241,7 +281,7 @@ function zoom(z) {
} else { } else {
} }
}) //指が動いたか検知 }) //指が動いたか検知
$(this).on('touchend', function(event) { $(this).on('touchend', function (event) {
$(target).data('down', false) $(target).data('down', false)
}) })
@ -258,7 +298,7 @@ function getY(event) {
} }
//マウスホイールで拡大 //マウスホイールで拡大
var element = document.getElementById('imagemodal') var element = document.getElementById('imagemodal')
element.onmousewheel = function(e) { element.onmousewheel = function (e) {
var delta = e.wheelDelta var delta = e.wheelDelta
if (delta > 0) { if (delta > 0) {
zoom(1.1) zoom(1.1)
@ -319,10 +359,23 @@ function openFinder(dir) {
postMessage(['openFinder', dir], '*') postMessage(['openFinder', dir], '*')
} }
function stopVideo() { function stopVideo() {
document.getElementById('video').pause() video=document.getElementById('video')
video.pause()
video.src=''
//document.getElementById('video').pause()
} }
function copyImgUrl() { function copyImgUrl() {
var murl = $('#imagemodal').attr('data-original') var murl = $('#imagemodal').attr('data-original')
execCopy(murl) execCopy(murl)
M.toast({ html: lang.lang_img_copyDone, displayLength: 1500 }) M.toast({ html: lang.lang_img_copyDone, displayLength: 1500 })
} }
async function copyImgBinary() {
var murl = $('#imagemodal').attr('data-original')
const blob = await (await fetch(murl)).blob()
const reader = new FileReader()
reader.onloadend = function () {
postMessage(['copyBinary', reader.result], '*')
M.toast({ html: lang.lang_imgBin_copyDone, displayLength: 1500 })
}
reader.readAsDataURL(blob)
}

View File

@ -26,12 +26,6 @@ function parseColumn(target, dontclose) {
target = 'zero' target = 'zero'
} }
console.log('%c Parse column', 'color:red;font-size:125%') console.log('%c Parse column', 'color:red;font-size:125%')
var size = localStorage.getItem('size')
if (size) {
$('#timeline-container').css('font-size', size + 'px')
$('.toot-reset').css('font-size', size + 'px')
$('.cont-series').css('font-size', size + 'px')
}
if (localStorage.getItem('menu-done')) { if (localStorage.getItem('menu-done')) {
$('#fukidashi').addClass('hide') $('#fukidashi').addClass('hide')
} }
@ -281,7 +275,7 @@ function parseColumn(target, dontclose) {
excludeNotf = excludeNotf + '</div>' excludeNotf = excludeNotf + '</div>'
notfDomain = 'dummy' notfDomain = 'dummy'
notfKey = 'dummy' notfKey = 'dummy'
var excludeHome ='' var excludeHome = ''
} else if (acct.type == 'home') { } else if (acct.type == 'home') {
var excludeNotf = '' var excludeNotf = ''
var excludeHome = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect"> var excludeHome = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
@ -452,8 +446,20 @@ function parseColumn(target, dontclose) {
<div class="tl-box" tlid="${key}"> <div class="tl-box" tlid="${key}">
<div id="timeline_${key}" class="tl ${acct.type}-timeline " tlid="${key}" <div id="timeline_${key}" class="tl ${acct.type}-timeline " tlid="${key}"
data-type="${acct.type}" data-acct="${acct.domain}" data-const="${acct.type}_${acct.domain}"> data-type="${acct.type}" data-acct="${acct.domain}" data-const="${acct.type}_${acct.domain}">
<div id="landing_${key}" style="text-align:center"> <div id="landing_${key}" class="landing">
${lang.lang_layout_nodata} <div class="preloader-wrapper small active " style="margin-top: calc(50vh - 15px)">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div>` </div>`
@ -636,8 +642,6 @@ function addselCk() {
} }
//カラム削除 //カラム削除
function removeColumn(tlid) { function removeColumn(tlid) {
$('#sort-box').addClass('hide')
$('#sort-box').removeClass('show')
Swal.fire({ Swal.fire({
title: lang.lang_layout_deleteColumn, title: lang.lang_layout_deleteColumn,
text: lang.lang_layout_deleteColumnDesc, text: lang.lang_layout_deleteColumnDesc,
@ -659,8 +663,6 @@ function removeColumn(tlid) {
$('#timeline_box_' + tlid + '_parentBox').remove() $('#timeline_box_' + tlid + '_parentBox').remove()
} }
} }
$('#sort-box').removeClass('hide')
$('#sort-box').addClass('show')
}) })
} }

View File

@ -60,11 +60,10 @@ function goTop(id) {
$('#timeline_box_' + id + '_box .tl-box').animate({ scrollTop: 0 }) $('#timeline_box_' + id + '_box .tl-box').animate({ scrollTop: 0 })
} }
function goColumn(key) { function goColumn(key) {
$('#sort-box').addClass('hide')
$('#sort-box').removeClass('show')
if ($('[tlid=' + key + ']').length) { if ($('[tlid=' + key + ']').length) {
$('#timeline-container').animate({ $('#timeline-container').animate({
scrollLeft: $('#timeline-container').scrollLeft() + $('[tlid=' + key + ']').offset().left scrollLeft: $('#timeline-container').scrollLeft() + $('[tlid=' + key + ']').offset().left
}) })
} }
sortLoad()
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -29,14 +29,10 @@ if (!gotTheLock) {
} else { } else {
app.on('second-instance', (event, commandLine, workingDirector) => { app.on('second-instance', (event, commandLine, workingDirector) => {
opening = false opening = false
const m = commandLine[2].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/) const m = commandLine[2].match(/([a-zA-Z0-9]+)\/?\?[a-zA-Z-0-9]+=(.+)/)
if (m) { if (m) {
mainWindow.send('customUrl', [m[1], m[2]]) mainWindow.send('customUrl', [m[1], m[2]])
} }
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
}) })
} }
@ -45,6 +41,13 @@ app.on('window-all-closed', function () {
electron.session.defaultSession.clearCache(() => { }) electron.session.defaultSession.clearCache(() => { })
app.quit() app.quit()
}) })
app.on('open-url', function (event, url) {
event.preventDefault()
const m = url.match(/([a-zA-Z0-9]+)\/?\?[a-zA-Z-0-9]+=(.+)/)
if (m) {
mainWindow.send('customUrl', [m[1], m[2]])
}
})
function isFile(file) { function isFile(file) {
try { try {
fs.statSync(file) fs.statSync(file)
@ -55,6 +58,7 @@ function isFile(file) {
} }
function createWindow() { function createWindow() {
var lang_path = join(app.getPath('userData'), 'language') var lang_path = join(app.getPath('userData'), 'language')
console.log(lang_path)
if (isFile(lang_path)) { if (isFile(lang_path)) {
var lang = fs.readFileSync(lang_path, 'utf8') var lang = fs.readFileSync(lang_path, 'utf8')
} else { } else {
@ -167,6 +171,7 @@ function createWindow() {
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
spellcheck: false, spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'), preload: join(__dirname, 'js', 'platform', 'preload.js'),
}, },
width: window_size.width, width: window_size.width,

View File

@ -26,7 +26,7 @@ function img(mainWindow, dir) {
for (var i = 0; i < fileNames.length; i++) { for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i] var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64') var bin = fs.readFileSync(path, 'base64')
e.sender.send('resizeJudgement', [bin, 'new']) e.sender.send('resizeJudgement', [bin, 'new', fileNames[i]])
} }
}) })
ipc.on('bmp-image', (e, args) => { ipc.on('bmp-image', (e, args) => {

View File

@ -1,3 +1,5 @@
const { shell } = require('electron')
function system(mainWindow, dir, lang, dirname) { function system(mainWindow, dir, lang, dirname) {
const electron = require('electron') const electron = require('electron')
const app = electron.app const app = electron.app
@ -7,6 +9,7 @@ function system(mainWindow, dir, lang, dirname) {
var JSON5 = require('json5') var JSON5 = require('json5')
var ipc = electron.ipcMain var ipc = electron.ipcMain
const clipboard = electron.clipboard const clipboard = electron.clipboard
const nativeImage = electron.nativeImage
var tmp_img = join(app.getPath('userData'), 'tmp.png') var tmp_img = join(app.getPath('userData'), 'tmp.png')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration') var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var wv_path = join(app.getPath('userData'), 'webview') var wv_path = join(app.getPath('userData'), 'webview')
@ -143,6 +146,9 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('about', (e, args) => { ipc.on('about', (e, args) => {
about() about()
}) })
ipc.on('openUrl', function (event, arg) {
shell.openExternal(arg)
})
function about() { function about() {
var ver = app.getVersion() var ver = app.getVersion()
var window = new BrowserWindow({ var window = new BrowserWindow({
@ -150,7 +156,9 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'), spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
}, },
width: 300, width: 300,
height: 500, height: 500,
@ -174,6 +182,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js'),
}, },
width: 350, width: 350,
@ -255,6 +264,10 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('copy', (e, arg) => { ipc.on('copy', (e, arg) => {
clipboard.writeText(arg) clipboard.writeText(arg)
}) })
ipc.on('copyBinary', (e, arg) => {
const ni = nativeImage.createFromDataURL(arg)
clipboard.writeImage(ni)
})
//ログ //ログ
ipc.on('log', (e, arg) => { ipc.on('log', (e, arg) => {
var today = new Date() var today = new Date()
@ -316,6 +329,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js'),
}, },
width: 414, width: 414,
@ -332,5 +346,12 @@ function system(mainWindow, dir, lang, dirname) {
} }
}) })
}) })
function trust_insecure(event, webContents, url, error, certificate, callback)
{
if (url.startsWith('^')) // TODO: Load this from a conf file/option for each account, whatever.
{ event.preventDefault(); callback(true)}
else { callback(false) }
}
//app.on('certificate-error',trust_insecure)
} }
exports.system = system exports.system = system

View File

@ -86,6 +86,9 @@
.voice { .voice {
display: none; display: none;
} }
.contextMenu {
display: none;
}
</style> </style>
</head> </head>
@ -145,14 +148,18 @@
var lang = "ja"; var lang = "ja";
} }
</script> </script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://energised.harpy.faith/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="./node_modules/lodash/lodash.min.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script> <script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/platform/plugin.js"></script>
<script type="text/javascript" src="./js/post/status.js"></script> <script type="text/javascript" src="./js/post/status.js"></script>
<script type="text/javascript" src="./js/post/post.js"></script> <script type="text/javascript" src="./js/post/post.js"></script>
<script type="text/javascript" src="./js/post/use-txtbox.js"></script> <script type="text/javascript" src="./js/post/use-txtbox.js"></script>
<script type="text/javascript" src="./js/platform/native.js"></script>
<script type="text/javascript" src="./js/tl/parse.js"></script> <script type="text/javascript" src="./js/tl/parse.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script> <script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/tl/date.js"></script> <script type="text/javascript" src="./js/tl/date.js"></script>
<script type="text/javascript" src="./js/tl/card.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script> <script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/platform/nano.js"></script> <script type="text/javascript" src="./js/platform/nano.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script> <script type="text/javascript" src="./js/platform/end.js"></script>

View File

@ -1,5 +1,7 @@
const { AiScript, parse, values, utils } = require('@syuilo/aiscript') const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
const gcc = require('textarea-caret') const gcc = require('textarea-caret')
const { v4: uuidv4 } = require('uuid')
global.uuid = uuidv4
global.getCaretCoordinates = gcc global.getCaretCoordinates = gcc
global.sanitizeHtml = require('sanitize-html') global.sanitizeHtml = require('sanitize-html')
global.asValue = values global.asValue = values

View File

@ -1,5 +0,0 @@
[[redirects]]
from = "/"
to = "/app"
status = 301
force = true

View File

@ -1,7 +1,7 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "22.2.0", "version": "23.0.3",
"codename": "Koume", "codename": "Chieri",
"description": "TheDesk is a Mastodon client for PC.", "description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk", "repository": "https://github.com/cutls/TheDesk",
"main": "main.js", "main": "main.js",
@ -9,7 +9,7 @@
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"postinstall": "run-s util:*", "postinstall": "run-s util:*",
"util:hash": "node gitHash.js", "util:hash": "node gitHash.js",
"util:browserify": "browserify aiscript.js -o js/platform/aiscript.js", "util:browserify": "browserify native.js -o js/platform/native.js",
"construct": "node view/make/makeCli.js", "construct": "node view/make/makeCli.js",
"construct:store": "node view/make/makeCli.js --store", "construct:store": "node view/make/makeCli.js --store",
"dev": "run-p dev:*", "dev": "run-p dev:*",
@ -18,7 +18,7 @@
"build": "node buildCli.js", "build": "node buildCli.js",
"build:pwa": "node view/make/makeCli.js --pwa", "build:pwa": "node view/make/makeCli.js --pwa",
"build:all:x64": "node buildCli.js --withStore", "build:all:x64": "node buildCli.js --withStore",
"build:all": "node buildCli.js --withStore --withIa32 --withArm64", "build:all": "node buildCli.js --withStore --withX64 --withIa32 --withArm64",
"lint:fix": "eslint js --fix", "lint:fix": "eslint js --fix",
"lint": "eslint js" "lint": "eslint js"
}, },
@ -57,36 +57,40 @@
], ],
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^5.15.2", "@cutls/materialize-css": "1.0.0",
"@fortawesome/fontawesome-free": "^6.2.1",
"@syuilo/aiscript": "^0.11.1", "@syuilo/aiscript": "^0.11.1",
"electron-dl": "^3.2.1", "electron-dl": "^3.4.0",
"itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz", "itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz",
"jimp": "^0.16.1", "jimp": "^0.16.2",
"jquery": "^3.6.0", "jquery": "^3.6.1",
"jquery-ui-dist": "^1.12.1", "jquery-ui-dist": "^1.13.2",
"json5": "^2.2.0", "json5": "^2.2.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"materialize-css": "git://github.com/cutls/materialize#v1-dev", "sanitize-html": "^2.7.2",
"sanitize-html": "^2.3.2",
"sumchecker": "^3.0.1", "sumchecker": "^3.0.1",
"sweetalert2": "^10.15.7", "sweetalert2": "^11.6.15",
"system-font-families": "^0.4.1", "system-font-families": "^0.6.0",
"textarea-caret": "^3.1.0", "textarea-caret": "^3.1.0",
"vue": "^2.6.12" "uuid": "^9.0.0",
"vue": "^3.2.45"
}, },
"devDependencies": { "devDependencies": {
"@electron/notarize": "^1.2.3",
"browserify": "^17.0.0", "browserify": "^17.0.0",
"chokidar": "^3.5.1", "chokidar": "^3.5.3",
"dotenv": "^8.2.0", "dotenv": "^16.0.3",
"electron": "^12.0.2", "electron": "^22.0.0",
"electron-builder": "^22.10.5", "electron-builder": "^23.2.0",
"electron-notarize": "^1.0.0", "electron-rebuild": "^3.2.9",
"electron-rebuild": "^2.3.5", "eslint": "^8.25.0",
"eslint": "^7.23.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"readline-sync": "1.4.10" "readline-sync": "1.4.10"
}, },
"resolutions": { "resolutions": {
"@types/fs-extra": "9.0.11" "@types/fs-extra": "^9.0.11",
"plist": "^3.0.5",
"minimist": "^1.2.6",
"got": "^11.8.5"
} }
} }

View File

@ -1,5 +1,14 @@
{ {
"latest":[], "4.0.0": [
"トゥートの翻訳"
],
"3.5.0": [
"投稿の編集",
"トレンドタグ・投稿"
],
"3.3.0": [
"ミュートの継続時間設定"
],
"3.2.0": [], "3.2.0": [],
"3.1.5": [], "3.1.5": [],
"3.1.4": [ "3.1.4": [

View File

@ -2,142 +2,144 @@
<html lang="@@lang@@"> <html lang="@@lang@@">
<head> <head>
<title>Account Manager - TheDesk</title> <title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" /> <meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../@@node_base@@/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" /> <link href="../../@@node_base@@/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" /> <link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" /> <link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" /> <link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" /> <link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="../../css/sweetalert2-material.min.css" type="text/css" rel="stylesheet"> <link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet">
<link href="../../css/acct.css" rel="stylesheet" type="text/css" /> <link href="../../css/acct.css" rel="stylesheet" type="text/css" />
<meta charset="utf-8" /> <meta charset="utf-8" /> @@comment-start@@
@@comment-start@@ <script type="text/javascript">
<script type="text/javascript"> var _jipt = []
var _jipt = [] _jipt.push(['project', 'thedesk'])
_jipt.push(['project', 'thedesk']) </script>
</script> <script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script> @@comment-end@@ @@pwa@@ @@store@@
@@comment-end@@
@@pwa@@ @@store@@
</head> </head>
<body id="mainView" class="@@pwaClass@@"> <body id="mainView" class="@@pwaClass@@">
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script> <script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script> <script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../@@node_base@@/materialize-css/dist/js/materialize.js"></script> <script type="text/javascript" src="../../@@node_base@@/@cutls/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="main.js"></script> <script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script> <script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script> <script>
var misskeytoken = false var misskeytoken = false
</script> </script>
<script type="text/javascript" src="../../js/common/time.js"></script> <script type="text/javascript" src="../../js/common/time.js"></script>
<div class="hide-first"> <div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">@@back@@</a><br /> <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">@@back@@</a><br />
<h5>@@list@@</h5> <h5>@@list@@</h5>
<div id="acct-list"></div> <div id="acct-list"></div>
<div class="divider"></div> <div class="divider"></div>
</div> </div>
<div> <div>
<h5>@@add@@</h5> <h5>@@add@@</h5>
<div class="hide-second"> <div class="hide-second">
<a href="setting.html">@@haveExported@@</a> <a href="setting.html">@@haveExported@@</a>
</div> </div>
<br /> <br />
<div id="add"> <div id="add">
<div class="row"> <div class="row">
<div class="col s8"> <div class="col s8">
@@addAcct@@ @@addAcct@@
<div class="row"> <div class="row">
<div class="input-field col s6"> <div class="input-field col s6">
<input type="text" id="autocomplete-input" class="autocomplete" placeholder="eg) mstdn.jp"> <input type="text" id="autocomplete-input" class="autocomplete" placeholder="eg) mstdn.jp">
<label for="autocomplete-input">URL</label> <label for="autocomplete-input">URL</label>
</div> </div>
<div class="col s4 loginBtnWrap"> <div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i <button class="btn waves-effect" id="loginBtn" onclick="instance()">
class="material-icons left">login</i>Login</button> <i class="material-icons left">login</i>Login
</div> </button>
</div> </div>
</div>
<div class="pwa"> <div class="pwa">
@@codesetupwarn@@<br /> @@codesetupwarn@@<br />
<label> <label>
<input type="checkbox" class="filled-in" id="linux" /> <input type="checkbox" class="filled-in" id="linux" />
<span>@@codesetup@@</span> <span>@@codesetup@@</span>
</label> </label>
<br /> <br />
</div> </div>
<label> <label>
<input type="checkbox" class="filled-in" id="misskey" /> <input type="checkbox" class="filled-in" id="misskey" />
<span>@@thisismisskey@@</span> </label><br /> <span>@@thisismisskey@@</span> </label><br />
</div> </div>
<div class="col s4 scr" aria-hidden="true"> <div class="col s4 scr" aria-hidden="true">
<span style="font-family:Open Sans;">Supports</span> <span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div> <div id="support" class="collection transparent"></div>
</div> </div>
</div> </div>
</div> </div>
<div id="auth" style="display:none"> <div id="auth" style="display:none">
@@codepastewarn@@<br /> @@codepastewarn@@<br />
<input type="text" id="code" placeholder="@@codepaste@@" required /> <a onclick="backToInit()" class="pointer">@@redo@@</a>
<button class="btn waves-effect" onclick="code()">Auth</button><br /> <input type="text" id="code" placeholder="@@codepaste@@" required />
<br /> <button class="btn waves-effect" onclick="code()">Auth</button><br />
<a onclick="atSetup()" class="pointer">@@accessTokenSetup@@</a> <br />
<div id="compt" style="display:none" class="scr"> <a onclick="atSetup()" class="pointer">@@accessTokenSetup@@</a>
<h5>ログイン前に必ずご確認ください</h5> <div id="compt" style="display:none" class="scr">
<span id="compt-instance"></span>はバージョンが<span id="compt-ver"></span>のため以下の機能がご利用いただけません。 <h5>ログイン前に必ずご確認ください</h5>
<span id="compt-warn" <span id="compt-instance"></span>はバージョンが<span id="compt-ver"></span>のため以下の機能がご利用いただけません。
style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span> <span id="compt-warn" style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<ul id="compt-list"></ul> <ul id="compt-list"></ul>
</div> </div>
</div> </div>
<div id="misskeylogin" style="display:none"> <div id="misskeylogin" style="display:none">
<h5>AppSecret</h5> <h5>AppSecret</h5>
@@misskeylogin@@<br /> @@misskeylogin@@<br />
<input type="hidden" id="misskey-url" /> <input type="hidden" id="misskey-url" />
<input type="text" id="misskey-key" placeholder="@@codepaste@@" required /> <input type="text" id="misskey-key" placeholder="@@codepaste@@" required />
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br /> <button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br />
<br /> <br />
<a onclick="atSetup('misskey')" class="pointer">@@accessTokenSetup@@</a> <a onclick="atSetup('misskey')" class="pointer">@@accessTokenSetup@@</a>
</div> </div>
</div> </div>
<div class="hide-first"> <div class="hide-first">
<h5>@@mainacct@@</h5> <h5>@@mainacct@@</h5>
<div class="input-field" style="width:300px"> <div class="input-field" style="width:300px">
<span data-trans="your_acct">@@selacct@@</span> <span data-trans="your_acct">@@selacct@@</span>
<br /> <br />
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select> <select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label> <label></label>
</div> </div>
<ul id="domain-list" class="collection transparent"></ul> <ul id="domain-list" class="collection transparent"></ul>
<div id="instance-data"> <div id="instance-data">
Some instance data by Some instance data by
<a href="https://instances.social" target="_blank">instances.social API</a><br /> <a href="https://instances.social" target="_blank">instances.social API</a><br />
<h5 id="ins-title"></h5> <h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br /> Administered by:
<span id="ins-desc"></span><br /> <a id="ins-admin"></a><br />
<img src="../../img/loading.svg" id="ins-prof" width="200" /><br /> <span id="ins-desc"></span><br />
<br /> <img src="../../img/loading.svg" id="ins-prof" width="200" /><br />
@@domain@@:<span id="ins-name"></span><br /> <br /> @@domain@@:
@@connect@@:<span id="ins-connect"></span>@@ko@@<br /> <span id="ins-name"></span><br /> @@connect@@:
@@toots@@:<span id="ins-toot"></span>@@ko@@<br /> <span id="ins-connect"></span>@@ko@@<br /> @@toots@@:
@@users@@:<span id="ins-user"></span>@@users@@<br /> <span id="ins-toot"></span>@@ko@@<br /> @@users@@:
@@safety@@:<span id="ins-per"></span>%<br /> <span id="ins-user"></span>@@users@@<br /> @@safety@@:
@@ver@@:<span id="ins-ver"></span>@<span id="ins-upd"></span><br /> <span id="ins-per"></span>%<br /> @@ver@@:
</div> <span id="ins-ver"></span>@<span id="ins-upd"></span><br />
</div> </div>
<script type="text/javascript" src="../../js/ui/theme.js"></script> </div>
<script type="text/javascript" src="../../js/ui/tips.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script> <script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script> <script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script> <script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script> <script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script> <script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/login/manager.js"></script>
<script>$('body').addClass(localStorage.getItem('platform'))</script> <script type="text/javascript" src="../../js/tl/date.js"></script>
<script>
$('body').addClass(localStorage.getItem('platform'))
</script>
</body> </body>

View File

@ -0,0 +1,56 @@
<!--bottom-->
<div id="bottom" class="reverse hide">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect" style="width: 100%; height: 2.5rem; line-height: 0; margin: 0">
<i class="material-icons" style="position: relative; top: 0.38rem; font-size: 1.5rem; text-align: center; margin-right: 0.76rem">edit</i>@@toot@@
</button>
</div>
<div class="leftside reverse" id="group">
<div class="btnsgroup">
<a href="acct.html" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="setting.html" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a onclick="nano()" class="nex waves-effect pwa">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
</a>
<a onclick="menu()" class="nex waves-effect">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
<span id="fukidashi">@@hereAddColumns@@</span>
</div>
<a href="https://thedesk.top/bugs/?lang=@@lang@@" target="_blank" class="waves-effect bgReport" draggable="false" title="Feeling unlucky"> @@foundBug@@ </a>
</div>
</div>
<div>
<div id="tips-menu">
<div class="btnsgroup" style="height: 2.61rem">
<span class="grouptitle">Tips:</span>
<a onclick="tips('ver')" class="nex waves-effect">
<i class="material-icons nex" title="@@verTips@@" data-trans-title="ver">info</i>
</a>
<a onclick="tips('clock')" class="nex waves-effect">
<i class="material-icons nex" title="@@clockTips@@" data-trans-title="clock">access_time</i>
</a>
<a onclick="tips('memory')" class="nex waves-effect pwa">
<i class="material-icons nex" title="@@ramTips@@" data-trans-title="memory">memory</i>
</a>
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display: none">
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a>
<a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a>
</div>
</div>
<div id="tips" class="hide">
<a onclick="tipsToggle()" class="nex waves-effect">
<i class="material-icons nex" title="@@changeTips@@" data-trans-title="tips">bubble_chart</i>
</a>
<div id="tips-text" style="width: 23rem; line-height: 1rem"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="@@lang@@">
<head>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<link href="../../css/themes.css" type="text/css" rel="stylesheet" />
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../@@node_base@@/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../css/post.css" rel="stylesheet" type="text/css" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/sort.css" rel="stylesheet" type="text/css" />
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<meta charset="utf-8" />
@@comment-start@@
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@ @@pwa@@ @@store@@
</head>
<body class="@@pwaClass@@">
<script>
var ver = '@@versionLetter@@'
var gitHash = '@@gitHash@@'
//betaを入れるとバージョンチェックしない
//var ver="beta";
var acct_id = 0
var tlid = 0
</script>
@@preTL@@ @@starterAndDragHandler@@ @@postBox@@ @@tootModal@@ @@userDataModal@@ @@mediaModal@@ @@releaseNote@@
<!--PiP-->
<div id="pip" class="hide pip-bottom pip-left">
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i>
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i>
<i class="material-icons pointer" onclick="endPip()">close</i>
<div id="pip-content"></div>
</div>
@@menuHtml@@
<div id="main">
<!--TLのTL-->
<div id="timeline-container">
<div id="something-wrong">
<img src="../../img/thinking.svg" style="width: 150px; margin: 5px; display: none" draggable="false" />
<div class="stw" style="display: none">@@helloTheDesk@@</div>
</div>
</div>
</div>
@@bottomBarHtml@@ @@supportMe@@
<!--左下メッセージ-->
<div id="message"></div>
<!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio>
<!--JS-->
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/platform/native.js"></script>
<script type="text/javascript" src="../../js/platform/plugin.js"></script>
<script type="text/javascript" src="../../@@node_base@@/@cutls/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../@@node_base@@/grapheme-splitter/index.js"></script>
<script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://energised.botegirl.parts/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/announParse.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/directory.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/ui/menu.js"></script>
</body>
</html>

View File

@ -0,0 +1,12 @@
[
"bottomBarHtml",
"mediaModal",
"menuHtml",
"postBox",
"preTL",
"releaseNote",
"starterAndDragHandler",
"supportMe",
"tootModal",
"userDataModal"
]

View File

@ -0,0 +1,62 @@
<!-- Modal Structure Image-->
<div id="imagemodal" class="modal modal-fixed-footer">
<div class="modal-content">
<div id="imagewrap">
<img src="" id="imgmodal" />
</div>
<div class="progress nomargin hide transparent" id="imgmodal-progress">
<div class="indeterminate"></div>
</div>
<br />
</div>
<div class="modal-footer">
<div id="imginfo">
<span id="imgprog"></span>% <br />
<span id="imgsec"></span>ms <br /><span id="imgbyte"></span>KB
</div>
<span style="padding: 0.6rem" class="btnsgroup">
<a class="waves-effect white-text" onclick="zoom(2)">
<i class="material-icons">zoom_in</i>
</a>
<a class="waves-effect white-text" onclick="zoom(0.5)">
<i class="material-icons">zoom_out</i>
</a>
<a class="waves-effect white-text" onclick="rotate(false)">
<i class="material-icons">rotate_90_degrees_ccw</i>
</a>
</span>
<span style="padding: 0.6rem" class="btnsgroup">
<span style="position: relative; top: -2px;">Copy:</span>
<a class="waves-effect white-text" onclick="copyImgBinary()" title="@@copyBinary@@">
<i class="material-icons">image</i>
</a>
<a class="waves-effect white-text" onclick="copyImgUrl()" title="@@copyURL@@">
<i class="material-icons">link</i>
</a>
</span>
<button class="btn waves-effect purple" onclick="dlImg()">
<i class="material-icons">file_download</i>
</button>
<button class="btn waves-effect brown" onclick="detFromImg()" title="@@thisToot@@">
<i class="material-icons">pageview</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
<i class="material-icons">keyboard_arrow_left</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
<i class="material-icons">keyboard_arrow_right</i>
</button>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
<i class="material-icons">close</i>
</a>
</div>
</div>
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width: 100%; max-height: 100%" controls loop="true" autoplay="true" />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,229 @@
<!--menu-->
<div id="menu" class="z-depth-5" style="display: none">
<div id="menu-bar" class="drag-bar"></div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="@@closeThisBox@@(X)">cancel</i>
</span>
<div id="menu-wrapper">
<div id="left-menu">
<a class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"> <i class="material-icons" aria-hidden="true">add</i><span>@@addColumn@@</span> </a>
<a class="waves-effect" onclick="sortMenu()" id="sortMenu"> <i class="material-icons" aria-hidden="true">sort</i><span>@@sortColumns@@</span> </a>
<a class="waves-effect" onclick="searchMenu()" id="searchMenu"> <i class="material-icons" aria-hidden="true">search</i><span>@@search@@</span> </a>
<a class="waves-effect" onclick="listMenu()" id="listMenu"> <i class="material-icons" aria-hidden="true">view_headline</i><span>@@list@@</span> </a>
<a class="waves-effect" onclick="dirMenu()" id="dirMenu"> <i class="material-icons" aria-hidden="true">recent_actors</i><span>@@discover@@</span> </a>
<a class="waves-effect" onclick="filterMenu()" id="filterMenu"> <i class="material-icons" aria-hidden="true">filter_list</i><span>@@filter@@</span> </a>
<a class="waves-effect" onclick="help()" id="helpMenu"> <i class="material-icons" aria-hidden="true">help_outline</i><span>@@helpAndLogs@@</span> </a>
<a class="waves-effect" onclick="location.href='index.html'"> <i class="material-icons" aria-hidden="true">refresh</i><span>@@f5@@</span> </a>
</div>
<div id="right-menu">
<!--カラム追加-->
<div id="add-box" class="hide menu-content">
<div class="input-field">
<span data-trans="your_acct">@@selectAcct@@</span>
<br />
<select id="add-acct-sel" class="acct-sel" style="color: black" onchange="addselCk()"></select>
<label></label>
</div>
<div class="input-field">
<div id="auth">
<input type="hidden" value="local" id="type-sel" /> @@showThisTL@@
<div id="tltype">
<a class="type waves-effect active" data-type="local" title="@@local@@">
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
<span>@@local@@</span>
</a>
<a class="type waves-effect" data-type="local-media" title="@@localMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@localMedia@@</span>
</a>
<a class="type waves-effect" data-type="home" title="@@home@@">
<div><i class="material-icons" aria-hidden="true">home</i></div>
<span>@@home@@</span>
</a>
<a class="type waves-effect" data-type="pub" title="@@fed@@">
<div><i class="material-icons" aria-hidden="true">language</i></div>
<span>@@fed@@</span>
</a>
<a class="type waves-effect" data-type="pub-media" title="@@fedMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@fedMedia@@</span>
</a>
<a class="type waves-effect" data-type="dm" title="@@dm@@">
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
<span>@@dm@@</span>
</a>
<a class="type waves-effect" data-type="mix" title="@@integratedTLDes@@">
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
<span>@@integratedTLDes@@</span>
</a>
<a class="type waves-effect" data-type="plus" title="@@localPlusDes@@">
<div><i class="material-icons" aria-hidden="true">reply</i></div>
<span>@@localPlusDes@@</span>
</a>
<a class="type waves-effect" data-type="notf" title="@@notf@@">
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
<span>@@notf@@</span>
</a>
<a class="type waves-effect" data-type="bookmark" title="@@bookmark@@">
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
<span>@@bookmark@@</span>
</a>
</div>
</div>
<div id="noauth" class="hide">
@@showThisTL@@
<input id="noauth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mstdn.jp" />
</div>
<div id="webview-add" class="hide">@@webviewWarn@@</div>
</div>
<button class="btn waves-effect blue" style="width: calc(100% - 0.7rem)" onclick="addColumn()" data-trans-i="add"><i class="material-icons left">add</i>@@add@@</button>
<br />
<br />
</div>
<!--検索-->
<div id="src-box" class="hide menu-content">
<div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div>
<div class="input-field">
<input id="src" type="text" class="validate" style="width: calc(100% - 150px)" />
<label for="src" data-trans="src">@@search@@</label>
<button class="btn waves-effect indigo" style="width: 36%; padding: 0; padding-left: 1.15rem" onclick="src()" data-trans-i="src">
<i class="material-icons left" style="margin: 0">search</i>@@search@@
</button>
<br />
<br />
</div>
<div id="search">
<div id="src-contents"></div>
</div>
</div>
<!--ディレクトリ-->
<div id="dir-box" class="hide menu-content">
<label>
<input class="with-gap" onchange="dirChange('directory')" name="dirsug" type="radio" value="directory" checked />
<span>@@directory@@</span>
</label>
<label>
<input class="with-gap" onchange="dirChange('suggest')" name="dirsug" type="radio" value="suggest" />
<span>@@frc@@</span>
</label>
<div class="input-field">
<select id="dir-acct-sel" class="acct-sel" onchange="dirselCk()"></select>
</div>
<div id="dirNoAuth" class="hide">
<input id="dirNoAuth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mastodon.social" />
<button class="btn waves-effect indigo" style="width: 9.23rem; padding: 0; padding-left: 1.15rem" onclick="directory('directory')">
<i class="material-icons left" style="margin: 0">search</i>@@show@@
</button>
</div>
<div id="directoryConfig">
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="active" checked />
<span>@@active@@</span>
</label>
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="new" />
<span>@@newcomer@@</span> </label
><br />
<label>
<input type="checkbox" class="filled-in" id="local_only" value="true" onchange="directory('directory')" />
<span>@@local_only@@</span>
</label>
</div>
<div id="dir-contents"></div>
<button class="btn waves-effect teal disabled" style="width: 100%" id="moreDir" onclick="directory('check', 'more')">@@more@@</button>
</div>
<!--並べ替え-->
<div id="sort-box" class="hide menu-content">
<ul id="sort"></ul>
<div>
<button onclick="sort()" class="btn waves-effect nex" style="width: 97.5%" data-trans-i="sort"><i class="material-icons left">sort</i>@@sortSet@@</button>
</div>
</div>
<!--リスト-->
<div id="list-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="list-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="list()" data-trans-i="lists">@@listLocale@@</button>
</div>
<br /><br />
<div id="lists"></div>
<div id="lists-user"></div>
<input type="text" style="width: calc(100% - 143px)" id="list-add" placeholder="@@name@@" />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewList()">@@makeNew@@</button>
</div>
<!--フィルター-->
<div id="filter-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="filter-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="filter()" data-trans-i="filters">@@listLocale@@</button>
</div>
<div id="filtered-words"></div>
<input type="hidden" id="filter-edit-id" />
<input type="text" style="width: 150px" id="filter-add-word" placeholder="@@filterWord@@" /><br /> @@degree@@
<br />
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>@@home@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>@@local@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>@@notf@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>@@conver@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="prof_filter" value="profiles" />
<span>@@prof@@</span> </label
><br />
@@option@@
<br />
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>@@matchWord@@</span>
</label>
<br />
<span class="sml">@@warnMatchWord@@</span><br />
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>@@except@@</span>
</label>
<br />
<span class="sml">@@exceptWorn@@</span><br /> @@avalableBefore@@ <span class="sml">@@warnAvBefore@@<b>@@warnAvBefore2@@</b></span
><br /><br />
<input type="number" style="width: 50px" id="days_filter" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_filter" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_filter" placeholder="m" value="0" />@@mins@@<br />
Quick: <a onclick="filterTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="filterTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="filterTime(0,12,0)" class="pointer">12@@hours@@</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1@@days@@</a>/ <a onclick="filterTime(7,0,0)" class="pointer">7@@days@@</a>/
<a onclick="filterTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewFilter()" id="add-filter-btn">@@add@@</button><br />
<span class="sml">@@warnOnIntegratedTL@@</span>
</div>
<!--ヘルプとログ-->
<div id="help-box" class="hide menu-content">
<a href="https://docs.thedesk.top" class="btn waves-effect" style="width: 97.5%">@@help@@</a><br /> @@contactwithlog@@
<br />
<textarea id="logs" style="height: 250px"></textarea><br />
</div>
</div>
</div>
<a onclick="about()" class="nex waves-effect pwa"> <i class="material-icons menu-icon">info</i>@@about@@ </a>&nbsp;|&nbsp;
<a onclick="bottomReverse()" class="nex waves-effect"> <i class="material-icons menu-icon">swap_horiz</i>@@reverse@@ </a>&nbsp;|&nbsp;
<a href="https://github.com/cutls/TheDesk/releases" class="nex waves-effect"> <i class="material-icons menu-icon">new_releases</i>Release Note </a>
</div>

View File

@ -0,0 +1,244 @@
<div id="post-box" class="z-depth-5">
<div id="post-bar" class="drag-bar"><span id="unreact">@@post-new@@</span><span id="addreact" class="hide">Reaction</span></div>
<!--トゥートボックス-->
<div id="left-side">
<div class="row" style="margin-bottom: 0">
<div class="" style="float: left">
<a onclick="profShow()" style="vertical-align: -1.7rem" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="@@showSelectProf@@(Ctrl+Shift+P)" data-trans-title="post_box_prof" style="width: 1.8rem" />
</a>
</div>
<div class="input-field mize" style="float: left; width: calc(100% - 1.8rem); margin-top: 0">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="@@closeThisBox@@(X)" data-trans-title="post_box_close">cancel</i>
</span>
<!--Markdown-->
<div class="row" style="margin-bottom: 0">
<div class="markdown mize hide">
<div class="col s12">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<i
class="pointer setting fa fa-subscript waves-effect"
onclick="markdown('__','yes','no','before')"
title="下付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i
class="pointer setting fa fa-superscript waves-effect"
onclick="markdown('_','yes','no','before')"
title="上付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br />
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" value="12" />px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 3.8rem); margin: 0; height: 1.8rem" type="color" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクテキスト" />&nbsp;
<input id="link2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクアドレス" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="代替テキスト" />&nbsp;
<input id="image2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="画像アドレス" />
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0">
<div id="md-preview"></div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 0; margin-bottom: 0">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom: 0" data-length="500"></textarea>
<div id="suggest"></div>
<label for="textarea" data-trans="toot">@@toot@@</label>
<br />
<span class="sml gray pointer markdown mize" id="preview-btn">
<a onclick="preview()">Preview</a>
</span>
<span class="sml gray pointer anti-markdown mize">
<a onclick="mdToggle()">Markdownエディタを表示</a>
</span>
</div>
<div class="col s12 mize" style="margin-top: 0; display: flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="@@nsfwDes@@" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1" id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="@@cwDes@@">CW</a>
<span
><span id="imgup"></span><span id="imgsel" class="pwa"><i class="waves-effect material-icons gray" onclick="fileselect()" title="@@selfile@@">photo_library</i></span></span
>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="@@insertEmoji@@">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-trigger" data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="@@clearToot@@(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
</div>
<div class="col s12 mize" style="margin-bottom: 0.4rem; padding: 0">
<div id="taglist"></div>
<div id="preview" class="mize"></div>
<span class="sml mize"
><span>@@replyMode@@</span>: <span id="rec">@@no@@</span>/<span>@@temp@@</span>:
<span id="mec">@@nothing@@</span>
<a onclick="stamp()" class="pointer pwa" title="@@stampWarn@@">@@stamp@@: <span id="stamp">Off</span></a> /@@poll@@:
<span id="pollsta">@@no@@</span>
<span id="vis" class="hide">public</span>
</span>
<br />
<input type="text" id="cw-text" placeholder="@@cwtext@@" class="mize" style="margin: 0" />
<div id="sch-box">
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
<input type="datetime-local" id="sch-date" placeholder="@@schedule@@" class="datepicker" style="margin: 0" />
</div>
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li>
<a onclick="vis('public')">@@publicJP@@(Public)</a>
</li>
<li>
<a onclick="vis('unlisted')">@@unlistedJP@@(Unlisted)</a>
</li>
<li>
<a onclick="vis('private')" id="private-button">@@privateJP@@(Private)</a>
</li>
<li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a>
</li>
<li id="local-button" class="hide">
<a onclick="vis('local')">@@localJP@@(Local)</a>
</li>
<li>
<a onclick="vis('direct')" class="disabled direct">@@directJP@@(Direct)</a>
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">NowPlaying (Spotify)</a>
</li>
<li class="mac">
<a onclick="nowplaying('itunes');">NowPlaying (iTunes macOS)</a>
</li>
<li>
<a onclick="nowplaying('lastFm');">NowPlaying (Last.fm)</a>
</li>
<li>
<a onclick="schedule();">@@schedule@@</a>
</li>
<li>
<a onclick="pollToggle();">@@poll@@</a>
</li>
<li>
<a onclick="draftToggle();">@@draft@@</a>
</li>
</ul>
<!--hidden area-->
<input type="hidden" id="reply" />
<input type="hidden" id="ideKey" />
<input type="hidden" id="quote" />
<input type="hidden" id="media" />
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect unmize toot-btn-group" onclick="post()" id="toot-post-btn">@@toot@@</button>
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn">
<i class="material-icons" id="toot-sec-icon" title="@@sectoot@@">lock_open</i>
</button>
</div>
</div>
<div id="right-side">
<div id="draft" class="hide right-side-content"></div>
<!--絵文字ピッカー-->
<div id="emoji" class="hide right-side-content">
<span class="gray sml"
>@@emojiWarn@@
<a onclick="emojiGet('true')" class="pointer">@@refreshEmoji@@</a>
<br />
</span>
<div id="emoji-list" class="" style=""></div>
<div class="emoji-control center">
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('before')" id="emoji-before">
<i class="material-icons">navigate_before</i>
</button>
<span id="emoji-count"></span>/
<span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('next')" id="emoji-next">
<i class="material-icons">navigate_next</i>
</button>
</div>
<div id="default-emoji">
<span id="now-emoji"></span>@@showThisEmoji@@<br /><span class="gray sml">@@emojiInsertWarn@@</span>
<br />
<a onclick="customEmoji()" class="pointer waves-effect" title="@@customEmoji@@">
<i class="material-icons">add</i>
</a>
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="@@peopleEmoji@@">
<i class="material-icons">people</i>
</a>
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="@@natureEmoji@@">
<i class="material-icons">local_florist</i>
</a>
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="@@foodEmoji@@">
<i class="material-icons">restaurant</i>
</a>
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="@@activityEmoji@@">
<i class="material-icons">directions_run</i>
</a>
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="@@placeEmoji@@">
<i class="material-icons">directions_car</i>
</a>
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="@@thingsEmoji@@">
<i class="material-icons">attach_file</i>
</a>
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="@@symbolEmoji@@">
<i class="material-icons">gesture</i>
</a>
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="@@flagsEmoji@@">
<i class="material-icons">flag</i>
</a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i>
</a>
</div>
</div>
<!--Poll UI-->
<div id="poll" class="hide right-side-content">
<div id="mastodon-poll" class="poll-provider">
<input type="text" class="mastodon-choice" placeholder="@@choice@@1" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@2" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@3" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@4" />
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>@@pollmulti@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>@@polluntil@@</span>
</label>
<input type="number" style="width: 50px" id="days_poll" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_poll" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_poll" placeholder="m" value="6" />@@mins@@
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,17 @@
<textarea id="copy" style="top: -100px; position: fixed"></textarea>
<canvas id="canvas" style="top: -100px; position: fixed; width: 32px; height: 32px" width="32" height="32"></canvas>
<div id="pageSrc" class="hide z-depth-2">
<div class="srcQ"></div>
<div class="pageSrcBtn pointer" onclick="doSrc('web')">@@webSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('ts')">@@tsSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
</div>
<div class="hide z-depth-2" id="tagContextMenu">
<a onclick="doTShowBox('tl')" class="pointer firstTCM" id="tagCMTL"></a>
<a onclick="doTShowBox('toot')" class="pointer" id="tagCMToot"></a>
<a onclick="doTShowBox('pin')" class="pointer" id="tagCMPin"></a>
<a onclick="doTShowBox('f')" class="pointer lastTCM" title="add it to Featured tags" id="tagCMFeature">Feature</a>
</div>
<div id="offline" class="hide">@@nowOffline@@</div>
<div id="re-online" class="hide">@@reOnline@@</div>

View File

@ -0,0 +1,34 @@
<!-- Modal Structure Release Note-->
<div id="releasenote" class="modal modal-fixed-footer scr">
<div class="modal-content">
<h3>TheDesk</h3>
<a href="https://thedesk.top" target="_blank">HP</a><br />
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br />
<br />
<div id="release-22-3-1_Koume" class="release-do" style="display: none">
Pixiv FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br /> 困ったときは、 <a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note 22.3.1 (Koume)</h5>
<!--上のdivのidや1行上のところも変えてね-->
・時限ミュートに対応した
<a onclick="udgEx('Cutls@2m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・軽微なバグの修正
<a onclick="udgEx('Cutls@2m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br />
</div>
<div id="release-en" style="display: none">
<h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a>
</div>
<br /><br />
<h3>@@supportme@@</h3>
@@TheDeskDes@@<br />
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,50 @@
<div id="tl">
<!--TL-->
<!--スターター-->
<div id="start" class="scr">
<div id="start-content">
<h3 class="center">@@demoBottomBtns@@</h3>
@@lookAtBottom@@
<div id="demobottom">
<button class="btn waves-effect" style="width: 23rem; height: 2.5rem; line-height: 0; margin: 0; background-color: var(--active)">
<i class="material-icons" style="position: relative; top: 0.4rem; font-size: 1.5rem; text-align: center; margin-right: 0.7rem">edit</i>@@toot@@
</button>
<div class="leftside reverse" id="demogroup">
<div class="btnsgroup" style="margin-left: 0.4rem">
<a href="#" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="#" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a class="nex waves-effect">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano">remove_from_queue</i>
</a>
<a class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
</div>
</div>
</div>
<br />
<i class="material-icons nex big-icon">account_circle</i>: @@acctMan@@<br /> @@acctManDesc@@
<hr />
<i class="material-icons nex">settings</i>: @@setting@@<br /> @@settingDesc@@
<hr />
<i class="material-icons nex">remove_from_queue</i>: TheDesk Nano @@nanoDes@@<br /> @@nanoDescPlus@@
<hr />
<i class="material-icons nex">apps</i>: @@menu@@<br /> @@menuDesc@@
<br />
<br />
<button class="btn waves-effect" onclick="closeStart()" style="width: 300px">@@close@@</button>
</div>
</div>
<!--ドラッグハンドラ-->
<div id="drag">
<div id="drag-content">
@@draghere@@
<br />
<button class="btn waves-effect" onclick="closedrop()">@@close@@</button>
</div>
</div>
</div>

View File

@ -0,0 +1,32 @@
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide scr">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)<br /> あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br /> 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
<br />
<br /> TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
<br />
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-middle">
<h5>@@monthly@@</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
</div>
<div id="support-btm-right">
<h5>@@once@@</h5>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width: 100%" onclick="closeSupport()" id="add-filter-btn">@@close@@</button>
</div>
</div>

View File

@ -0,0 +1,100 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" id="det-col">
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@afterLTL@@</div>
<div class="collapsible-body toot-reset" id="ltl-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@afterUTL@@</div>
<div class="collapsible-body toot-reset" id="user-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">language</i>@@afterFTL@@</div>
<div class="collapsible-body toot-reset" id="ftl-after"></div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_upward</i>@@contextBefore@@
<i class="material-icons red-text hide" id="toot-reply-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-reply"></div>
</li>
<li>
<div class="collapsible-header" id="activator"><i class="material-icons">more_horiz</i>@@thisToot@@</div>
<div class="collapsible-body">
<div class="toot-reset" id="toot-this"></div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_downward</i>@@contextAfter@@
<i class="material-icons red-text hide" id="toot-after-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@beforeLTL@@</div>
<div class="collapsible-body toot-reset" id="toot-before"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@beforeUTL@@</div>
<div class="collapsible-body toot-reset" id="user-before"></div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons">star</i>@@favedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-fav"></div>
</li>
<li class="dm-hide">
<div class="collapsible-header"><i class="text-darken-3 false fas fa-retweet"></i>@@btedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-rt"></div>
</li>
<li class="edited-hide">
<div class="collapsible-header"><i class="material-icons">create</i>@@editHistory@@</div>
<div class="collapsible-body toot-reset" id="toot-edit"></div>
</li>
</ul>
<div class="dm-hide" style="max-width: 450px">
@@useOtherAcct1@@(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>@@useOtherAcct2@@)<br />
<div class="row">
<div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect" style="width: 100%" onclick="staEx('reply')">
<i class="fas fa-share"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width: 100%" onclick="staEx('rt')">
<i class="fas fa-retweet"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width: 100%" onclick="staEx('fav')">
<i class="fas fa-star"></i>
</button>
</div>
</div>
@@btWithVis@@<br />
<button class="btn waves-effect darken-3 toot-btn-group purple" onclick="boostWith('public')">
<i class="material-icons">public</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group blue" onclick="boostWith('unlisted')">
<i class="material-icons">lock_open</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group orange" onclick="boostWith('private')">
<i class="material-icons">lock</i>
</button>
<div id="toot-tools"></div>
<div id="toot-after"></div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">@@openBrowser@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">@@copyURL@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">@@embed@@</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,210 @@
<!-- Modal Structure Userdata -->
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height: 750px; height: 90%">
<div id="his-data-content" class="modal-content" style="padding-bottom: 0; overflow-y: hidden">
<div id="his-data-show">
<div id="his-data-wrap">
<div class="his-float" id="his-float-data">
<div id="his-leftside">
<div id="his-basic-prof">
<div>
<img src="../../img/loading.svg" id="his-prof" draggable="false" />
</div>
<div>
<span id="his-name">Loading...</span>
<span class="gray">@</span><span id="his-acct" class="gray"></span><br />
<span class="gray" id="his-relation"></span>
<br />
<span class="cbadge"> <span id="his-sta"></span>@@toots@@ </span>
<span class="cbadge"
>@@follow@@:
<span id="his-follow"></span>
</span>
<span class="cbadge">@@follower@@: <span id="his-follower"></span> </span><br />
<span class="cbadge" style="max-width: 11.5rem; width: 11.5rem"
>Since:
<span id="his-since"></span>
</span>
<span class="cbadge" id="his-bot">[bot]</span>
</div>
</div>
<div id="his-proof-prof"></div>
<div id="his-des" data-acct=""></div>
<br />
<div id="his-table"></div>
<br />
<div id="his-sign-action">
<a href="#!" class="waves-effect waves-green btn" onclick="follow()" style="flex-basis: 100%" id="his-follow-btn"
><i class="material-icons">people</i><span id="his-follow-btn-text">@@follow@@</span></a
>
<a href="#!" class="waves-effect waves-green btn blue shrinker" onclick="muteMenu()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
<a href="#!" class="waves-effect waves-green btn red shrinker" onclick="block()" id="his-block-btn"
><i class="material-icons">block</i><span id="his-block-btn-text">@@block@@</span></a
>
<a class="dropdown-trigger btn waves-effect grey" href="#" data-target="actiondropdown"> <i class="material-icons">more_vert</i>@@more@@</a>
</div>
<div id="muteDuration" class="hide">
<label>
<input type="checkbox" class="filled-in" id="notf_mute" value="1" />
<span>@@notfMute@@</span>
</label>
<br />
@@zeroSetToInfinity@@<br />
Quick: <a onclick="muteTime(0,0,5)" class="pointer">5@@mins@@</a>/ <a onclick="muteTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="muteTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="muteTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="muteTime(1,0,0)" class="pointer">1@@days@@</a>/
<a onclick="muteTime(3,0,0)" class="pointer">3@@days@@</a>/ <a onclick="muteTime(7,0,0)" class="pointer">7@@days@@</a>
<a onclick="muteTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<input type="number" style="width: 62px" id="days_mute" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 62px" id="hours_mute" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 62px" id="mins_mute" placeholder="m" value="0" />@@mins@@
<a href="#!" class="waves-effect waves-green btn blue" onclick="muteDo()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
</div>
<!-- Dropdown Structure -->
<ul id="actiondropdown" class="dropdown-content">
<li onclick="empUser()">
<a title="@@empUser@@"><i class="material-icons">highlight</i>@@empUser@@</a>
</li>
<li onclick="pinUser()" class="only-his-data">
<a title="@@endorse@@"><i class="material-icons">thumb_up</i>@@endorse@@</a>
</li>
<li onclick="profbrws()" id="his-openin">
<a title="@@openinbrowser@@"><i class="material-icons">open_in_browser</i>@@openinbrowser@@</a>
</li>
<li onclick="setMain()" class="only-my-data" id="his-main-acct">
<a title="@@mainacct@@"><i class="material-icons">grade</i>@@mainacct@@</a>
</li>
</ul>
</div>
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<a go="#his-tl" title="@@timeline@@" class="btn active-back column-first anc-link waves-effect"><i class="material-icons">timeline</i>@@timeline@@</a>
<a go="#his-follow-list" title="@@follow@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>→@@follow@@</a>
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>←@@follower@@</a>
<a go="#his-fav-list" title="@@favRegist@@" class="btn only-my-data anc-link waves-effect"> <i class="material-icons">star</i>@@favRegist@@</a>
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i class="material-icons">more_vert</i>@@more@@</a>
<div id="his-data-title-wrap">
<span id="his-data-title"><i class="material-icons">timeline</i>@@timeline@@</span>
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add" onclick="utlAdd()">
<i class="material-icons">add</i>
@@utlColumn@@
</button>
</div>
<!-- Dropdown Structure -->
<ul id="hisdropdown" class="dropdown-content">
<li class="anc-link only-his-data" go="#his-list">
<a href="#" title="@@list@@"> <i class="material-icons">list</i>@@list@@ </a>
</li>
<li class="anc-link only-my-data" go="#his-blocking-list">
<a href="#" title="@@blocks@@"><i class="material-icons">block</i>@@blocks@@</a>
</li>
<li class="anc-link only-my-data" go="#his-muting-list">
<a href="#" title="@@mute@@"><i class="material-icons">voice_over_off</i>@@mute@@</a>
</li>
<li class="anc-link only-my-data" go="#his-domain-list">
<a href="#" title="@@domainBlock@@"><i class="material-icons">cancel_schedule_send</i>@@domainBlock@@</a>
</li>
<li class="anc-link only-my-data" go="#his-prof-list">
<a href="#" title="@@editProf@@"><i class="material-icons">create</i>@@editProf@@</a>
</li>
<li class="anc-link only-my-data" go="#his-request-list">
<a href="#" title="@@followReq@@"><i class="material-icons">how_to_reg</i>@@followReq@@</a>
</li>
<li class="anc-link only-my-data" go="#his-follow-recom-list">
<a href="#" title="@@frc@@"><i class="material-icons">recent_actors</i>@@frc@@</a>
</li>
<li class="anc-link only-his-data" go="#his-action">
<a href="#" title="@@operateOtherAcct@@"><i class="material-icons">account_box</i>@@operateOtherAcct@@</a>
</li>
</ul>
</div>
<div id="his-tl" class="his-var-content">
<div id="his-tl-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="utlShow('--now','more')">@@more@@</button>
</div>
<div id="his-follow-list" class="his-var-content">
<div id="his-follow-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="flw('--now','more')">@@more@@</button>
</div>
<div id="his-follower-list" class="his-var-content">
<div id="his-follower-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="fer('--now','more')">@@more@@</button>
</div>
<div id="his-action" class="his-var-content">
@@useOtherAcct1@@@@revoverJP@@@@follow@@(@@warnUseOtherAcct@@)<br />
<div style="max-width: 500px">
<select id="user-acct-sel" class="acct-sel"></select>
</div>
@@revoverJPde@@
<a href="#!" class="waves-effect btn" onclick="follow('selector','selector')">@@follow@@</a><br />
@@or@@
<br />
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">@@openProf@@</a><br />
</div>
<div id="his-list" class="his-var-content">
<div id="his-lists-a">@@warnListRegist@@</div>
<div id="his-lists-b"></div>
</div>
<div id="his-fav-list" class="his-var-content">
<div id="his-fav-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showFav('more')">@@more@@</button>
</div>
<div id="his-blocking-list" class="his-var-content">
<div id="his-blocking-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showBlo('more')">@@more@@</button>
</div>
<div id="his-muting-list" class="his-var-content">
<div id="his-muting-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showMut('more')">@@more@@</button>
</div>
<div id="his-domain-list" class="his-var-content">
<div id="his-domain-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showDom('more')">@@more@@</button>@@blockDomain@@
<br />
<input type="text" placeholder="example.com" id="domainblock" />
<button class="btn waves-effect" onclick="addDomainblock()">@@add@@</button>
<br />
</div>
<div id="his-prof-list" class="his-var-content">
@@name@@
<br />
<input type="text" placeholder="@@name@@" id="his-name-val" style="max-width: 250px" />
<br />@@note@@
<br />
<div class="input-field col s12">
<textarea placeholder="@@note@@" id="his-des-val" class="materialize-textarea"></textarea>
<label for="his-des-val">@@note@@</label>
</div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="profedit()">@@change@@</button>
<br />@@editProfImg@@:
<span id="prof-change">
<input type="file" onchange="imgChange(this,'avatar')" />
</span>
<br />@@editHeader@@:
<span id="header-change">
<input type="file" onchange="imgChange(this,'header')" />
</span>
</div>
<div id="his-request-list" class="his-var-content">
<div id="his-request-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showReq('more')">@@more@@</button>
</div>
<div id="his-follow-recom-list" class="his-var-content">
<div id="his-follow-recom-contents" class="cont-series"></div>
</div>
<div id="his-float-blocked">
<div>@@blocked@@</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">@@historyBack@@</button>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">@@close@@</a>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Time format", "timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"", "relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Time format", "timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"", "relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Федерализиран TL след този тоот", "afterFTL": "Федерализиран TL след този тоот",
"favedPeople": "Хора, които го харесват", "favedPeople": "Хора, които го харесват",
"btedPeople": "Хората, които го подсилиха", "btedPeople": "Хората, които го подсилиха",
"editHistory": "Edit history",
"useOtherAcct1": "Използване на друг профил", "useOtherAcct1": "Използване на друг профил",
"useOtherAcct2": ":unfav и unBT са деактивирани.", "useOtherAcct2": ":unfav и unBT са деактивирани.",
"btWithVis": "Подсилването е видимо", "btWithVis": "Подсилването е видимо",
@ -73,7 +74,9 @@
"favRegist": "Любими", "favRegist": "Любими",
"openBrowser": "Отваряне в браузъра", "openBrowser": "Отваряне в браузъра",
"screenshot": "Направете снимка на екрана", "screenshot": "Направете снимка на екрана",
"copyBinary": "Copy raw image",
"copyURL": "Копирай URL адреса на този тоот", "copyURL": "Копирай URL адреса на този тоот",
"copy": "Copy",
"embed": "Закрепи", "embed": "Закрепи",
"toots": "Тоот", "toots": "Тоот",
"follow": "Следвам", "follow": "Следвам",
@ -85,6 +88,8 @@
"makeNew": "Запази", "makeNew": "Запази",
"blocks": "Блокове", "blocks": "Блокове",
"mutes": "Заглушаване", "mutes": "Заглушаване",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Блокове", "block": "Блокове",
"mute": "Заглуши", "mute": "Заглуши",
"domainBlock": "Блок домейн", "domainBlock": "Блок домейн",
@ -178,6 +183,7 @@
"foundBug": "Намерена е грешка", "foundBug": "Намерена е грешка",
"show": "Покажи", "show": "Покажи",
"directory": "Директория", "directory": "Директория",
"discover": "Discover",
"active": "Наскоро активен", "active": "Наскоро активен",
"newcomer": "Новодошли", "newcomer": "Новодошли",
"local_only": "Само местно", "local_only": "Само местно",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Вграденият HTML е изрязан.", "lang_details_embed": "Вграденият HTML е изрязан.",
"lang_details_url": "URL адресът на този toot е изрязан.", "lang_details_url": "URL адресът на този toot е изрязан.",
"lang_details_txt": "Съдържанието на този toot е изрязано.", "lang_details_txt": "Съдържанието на този toot е изрязано.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Няма данни", "lang_filter_nodata": "Няма данни",
"lang_filter_errordegree": "Моля, проверете контекстта", "lang_filter_errordegree": "Моля, проверете контекстта",
"lang_list_nodata": "Няма данни", "lang_list_nodata": "Няма данни",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "В процес...", "lang_tl_postmarkers_title": "В процес...",
"lang_tl_postmarkers": "Данни за POST маркери. Моля изчакайте", "lang_tl_postmarkers": "Данни за POST маркери. Моля изчакайте",
"lang_img_DLDone": "Изтеглени:", "lang_img_DLDone": "Изтеглени:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Копирано: URL адреса на това изображение", "lang_img_copyDone": "Копирано: URL адреса на това изображение",
"lang_layout_gotop": "Върнете се в горната част на тази колона. Когато иконата е червена, означава че тази колона не може да свърже API за споделане. Моля, презаредете.", "lang_layout_gotop": "Върнете се в горната част на тази колона. Когато иконата е червена, означава че тази колона не може да свърже API за споделане. Моля, презаредете.",
"lang_layout_thisacct": "{{notf}} от този акаунт", "lang_layout_thisacct": "{{notf}} от този акаунт",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.", "lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.",

View File

@ -13,13 +13,13 @@
"env": "Системни предпочитания", "env": "Системни предпочитания",
"setlang": "Езици", "setlang": "Езици",
"backup": "Внос и износ на предпочитания", "backup": "Внос и износ на предпочитания",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Внос", "import": "Внос",
"export": "Износ", "export": "Износ",
"hardwareAcceleration": "Деактивиране на хардуерното ускорение", "hardwareAcceleration": "Деактивиране на хардуерното ускорение",
"hardwareAccelerationWarn": "Автоматичното рестартиране", "hardwareAccelerationWarn": "Автоматичното рестартиране",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Теми", "theme": "Теми",
"popup": "Известие с изскачащ прозорец (за Windows)", "popup": "Известие с изскачащ прозорец (за Windows)",
"popupwarn": "Скрито ако е зададено на „0“", "popupwarn": "Скрито ако е зададено на „0“",
@ -28,7 +28,7 @@
"nnwarn": "Това не работи в Windows Portable вер.", "nnwarn": "Това не работи в Windows Portable вер.",
"nntest": "Тест за уведомяване", "nntest": "Тест за уведомяване",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Минимална ширина на браузъра TweetDeck", "fixwidth": "Минимална ширина на браузъра TweetDeck",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "Относно тази тема", "desc": "Относно тази тема",
"customImport": "Импортиране на персонализирани теми", "customImport": "Импортиране на персонализирани теми",
"delete": "Изтрий", "delete": "Изтрий",
"preview": "Preview",
"timeline": "Предпочитания за времевата линия", "timeline": "Предпочитания за времевата линия",
"timemode": "Времеви формат", "timemode": "Времеви формат",
"relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“", "relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Звук (Отговор)", "replySound": "Звук (Отговор)",
"favSound": "Звук(Фаворит)", "favSound": "Звук(Фаворит)",
"btSound": "Звук(Подсилване)", "btSound": "Звук(Подсилване)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша", "okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Time format", "timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"", "relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Použít jiný účet", "useOtherAcct1": "Použít jiný účet",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Oblíbit", "favRegist": "Oblíbit",
"openBrowser": "Otevřít v prohlížeči", "openBrowser": "Otevřít v prohlížeči",
"screenshot": "Vytvořit snímek obrazovky", "screenshot": "Vytvořit snímek obrazovky",
"copyBinary": "Copy raw image",
"copyURL": "Kopírovat URL tohoto tootu", "copyURL": "Kopírovat URL tohoto tootu",
"copy": "Copy",
"embed": "Vložit", "embed": "Vložit",
"toots": "Tooty", "toots": "Tooty",
"follow": "Sledovat", "follow": "Sledovat",
@ -85,6 +88,8 @@
"makeNew": "Uložit", "makeNew": "Uložit",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "HTML pro vložení je zkopírován.", "lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.", "lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.", "lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Žádná data", "lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext", "lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data", "lang_list_nodata": "Žádná data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu", "lang_layout_thisacct": "{{notf}} tohoto účtu",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "Tento účet byl přesunut", "lang_showontl_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]", "lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás", "lang_showontl_followed": "Sledují vás",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Oznámení ", "lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ", "lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "Systémové předvolby", "env": "Systémové předvolby",
"setlang": "Jazyky", "setlang": "Jazyky",
"backup": "Import a export předvoleb", "backup": "Import a export předvoleb",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Motivy", "theme": "Motivy",
"popup": "Popupová oznámení (na Windows)", "popup": "Popupová oznámení (na Windows)",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Odskoušet oznámení", "nntest": "Odskoušet oznámení",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimální šířka TweetDeck prohlížeče", "fixwidth": "Minimální šířka TweetDeck prohlížeče",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Časový formát", "timemode": "Časový formát",
"relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“", "relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Time format", "timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"", "relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -1,7 +1,7 @@
{ {
"draghere": "Zum Hochladen hier her ziehen", "draghere": "Zum Hochladen hier her ziehen",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", "nowOffline": "OFFLINE: Ihr gesamter Beiträge befinden sich in Entwürfen und du solltest nach einer erneuten Internetverbindung neu laden",
"reOnline": "Now we are in the Internet, you should reload...", "reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...",
"close": "Schließen", "close": "Schließen",
"webSrc": "Suche im Internet", "webSrc": "Suche im Internet",
"tsSrc": "Bei Tootsearch suchen", "tsSrc": "Bei Tootsearch suchen",
@ -65,6 +65,7 @@
"afterFTL": "Globaler-Verlauf nach diesem Tröt", "afterFTL": "Globaler-Verlauf nach diesem Tröt",
"favedPeople": "Leute, die es bevorzugt haben", "favedPeople": "Leute, die es bevorzugt haben",
"btedPeople": "Leute, die es verstärkt haben", "btedPeople": "Leute, die es verstärkt haben",
"editHistory": "Verlauf bearbeiten",
"useOtherAcct1": "Anderes Konto verwenden", "useOtherAcct1": "Anderes Konto verwenden",
"useOtherAcct2": ":unfav und unBT sind deaktiviert.", "useOtherAcct2": ":unfav und unBT sind deaktiviert.",
"btWithVis": "Boost mit Sichtbarkeit", "btWithVis": "Boost mit Sichtbarkeit",
@ -73,7 +74,9 @@
"favRegist": "Favoriten", "favRegist": "Favoriten",
"openBrowser": "Im Browser öffnen", "openBrowser": "Im Browser öffnen",
"screenshot": "Bildschirmfoto aufnehmen", "screenshot": "Bildschirmfoto aufnehmen",
"copyBinary": "Kopiere Rohdaten",
"copyURL": "URL dieses Tröts kopieren", "copyURL": "URL dieses Tröts kopieren",
"copy": "Kopieren",
"embed": "Einbinden", "embed": "Einbinden",
"toots": "Tröts", "toots": "Tröts",
"follow": "Folgen", "follow": "Folgen",
@ -85,6 +88,8 @@
"makeNew": "Speichern", "makeNew": "Speichern",
"blocks": "Blockiert", "blocks": "Blockiert",
"mutes": "Stumm geschaltet", "mutes": "Stumm geschaltet",
"notfMute": "Auch deren Benachrichtigungen stumm schalten",
"zeroSetToInfinity": "Dauer der Stummschaltung: 0 Min für dauerhaft einstellen",
"block": "Blockieren", "block": "Blockieren",
"mute": "Stummschalten", "mute": "Stummschalten",
"domainBlock": "Domänenblockade", "domainBlock": "Domänenblockade",
@ -178,6 +183,7 @@
"foundBug": "Ich habe einen Fehler gefunden", "foundBug": "Ich habe einen Fehler gefunden",
"show": "Zeige", "show": "Zeige",
"directory": "Verzeichnis", "directory": "Verzeichnis",
"discover": "Entdecken",
"active": "Kürzlich aktiv", "active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen", "newcomer": "Neu eingetroffen",
"local_only": "Nur lokal", "local_only": "Nur lokal",

View File

@ -60,8 +60,8 @@
"lang_postimg_failupload": "Gescheitert", "lang_postimg_failupload": "Gescheitert",
"lang_postimg_delete": "Klicken, um Beschreibung hinzuzufügen, Rechtsklick zum Löschen", "lang_postimg_delete": "Klicken, um Beschreibung hinzuzufügen, Rechtsklick zum Löschen",
"lang_postimg_desc": "Beschreibung", "lang_postimg_desc": "Beschreibung",
"lang_postimg_leadContext": "right-click the thumbnail to delete this", "lang_postimg_leadContext": "Rechtsklick auf das Vorschaubild, um dies zu löschen",
"lang_post_syncDetail": "Upload media synchronously", "lang_post_syncDetail": "Medien synchron hochladen",
"lang_post_syncDetailText": "Click each picture icon to get the thumbnail. If you can get, the media you uploaded are completely processed.", "lang_post_syncDetailText": "Click each picture icon to get the thumbnail. If you can get, the media you uploaded are completely processed.",
"lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?", "lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.", "lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
@ -103,6 +103,7 @@
"lang_details_embed": "Eingefügtes HTML wurde entfernt.", "lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.", "lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.", "lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_details_fetch": "Daten des Tröts abrufen…",
"lang_filter_nodata": "Keine Daten", "lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext", "lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten", "lang_list_nodata": "Keine Daten",
@ -123,9 +124,10 @@
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist", "lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien", "lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden", "lang_tl_reconnect": "Mit Streaming API erneut verbinden",
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Verarbeite...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Heruntergeladen:", "lang_img_DLDone": "Heruntergeladen:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Kopiert: URL dieses Bildes", "lang_img_copyDone": "Kopiert: URL dieses Bildes",
"lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.", "lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos", "lang_layout_thisacct": "{{notf}} dieses Kontos",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten", "lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.", "lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft", "lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "Dieses Konto wurde verschoben", "lang_showontl_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren", "lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir", "lang_showontl_followed": "Folgt dir",
"lang_parse_request": "Anfrage folgen", "lang_parse_request": "Anfrage folgen",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Benachrichtigung ", "lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domäne ", "lang_showontl_domain": "Domäne ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.", "lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
@ -213,7 +218,7 @@
"lang_parse_detail": "Details", "lang_parse_detail": "Details",
"lang_parse_redraft": "Löschen & Neuentwerfen", "lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir", "lang_parse_followed": "Folgt dir",
"lang_parse_moved": "Moved to...", "lang_parse_moved": "Verschoben nach...",
"lang_parse_clientop": "Aktion dieses Clients", "lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird", "lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen", "lang_parse_clientno": "Nichts unternehmen",
@ -221,7 +226,7 @@
"lang_parse_clientmute": "Stumm", "lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.", "lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt", "lang_parse_voted": "Abgestimmt",
"lang_parse_myvote": "(My own poll)", "lang_parse_myvote": "(Meine eigene Umfrage)",
"lang_parse_vote": "Abstimmen", "lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen", "lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen", "lang_parse_endedvote": "Abgelaufen",
@ -287,5 +292,5 @@
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.", "lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht.", "lang_setting_importwarn": "Alle Daten werden gelöscht.",
"lang_setting_noupd": "Keine Updates verfügbar", "lang_setting_noupd": "Keine Updates verfügbar",
"lang_setting_thisisbeta": "This is beta version. You have to update manually." "lang_setting_thisisbeta": "Dies ist die Beta-Version. Du musst manuell aktualisieren."
} }

View File

@ -5,21 +5,21 @@
"no": "Nein", "no": "Nein",
"none": "Ohne", "none": "Ohne",
"show": "Zeige", "show": "Zeige",
"hide": "Hide", "hide": "Verbergen",
"default": "Standard", "default": "Standard",
"change": "Ändern", "change": "Ändern",
"select": "Auswahl", "select": "Auswahl",
"exec": "Exec", "exec": "Ausführen",
"env": "Systemeinstellungen", "env": "Systemeinstellungen",
"setlang": "Sprachen", "setlang": "Sprachen",
"backup": "Import und Export von Einstellungen", "backup": "Import und Export von Einstellungen",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Importieren", "import": "Importieren",
"export": "Exportieren", "export": "Exportieren",
"hardwareAcceleration": "Hardwarebeschleunigung deaktivieren", "hardwareAcceleration": "Hardwarebeschleunigung deaktivieren",
"hardwareAccelerationWarn": "Automatischer Neustart", "hardwareAccelerationWarn": "Automatischer Neustart",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Designs", "theme": "Designs",
"popup": "Popup-Benachrichtigung(unter Windows)", "popup": "Popup-Benachrichtigung(unter Windows)",
"popupwarn": "Bei \"0\" Ausgeschaltet.", "popupwarn": "Bei \"0\" Ausgeschaltet.",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "Über dieses Design", "desc": "Über dieses Design",
"customImport": "Import von eigenen Designs", "customImport": "Import von eigenen Designs",
"delete": "Löschen", "delete": "Löschen",
"preview": "Vorschau",
"timeline": "Verlaufseinstellungen", "timeline": "Verlaufseinstellungen",
"timemode": "Zeitformat", "timemode": "Zeitformat",
"relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"", "relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Ton bei Antwort", "replySound": "Ton bei Antwort",
"favSound": "Ton bei Favorit", "favSound": "Ton bei Favorit",
"btSound": "Ton bei Verstärkung", "btSound": "Ton bei Verstärkung",
@ -161,7 +163,7 @@
"localonly": "Nur lokal", "localonly": "Nur lokal",
"zeroWidthEmoji": "Emojis ohne Abstand Einfügen", "zeroWidthEmoji": "Emojis ohne Abstand Einfügen",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Tastaturkürzel Einstellungen", "keysc": "Tastaturkürzel Einstellungen",
"iks": "Schnell Einfügen", "iks": "Schnell Einfügen",
"okswarn": "Sie können Buchstaben und Emojis mit 3-Tasten-Kombination einfügen", "okswarn": "Sie können Buchstaben und Emojis mit 3-Tasten-Kombination einfügen",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed", "embed": "Embed",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import", "backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Time format", "timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"", "relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.", "remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool", "moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL", "moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.", "uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "crwdns3174:0crwdne3174:0", "afterFTL": "crwdns3174:0crwdne3174:0",
"favedPeople": "crwdns3176:0crwdne3176:0", "favedPeople": "crwdns3176:0crwdne3176:0",
"btedPeople": "crwdns3178:0crwdne3178:0", "btedPeople": "crwdns3178:0crwdne3178:0",
"editHistory": "crwdns4602:0crwdne4602:0",
"useOtherAcct1": "crwdns3180:0crwdne3180:0", "useOtherAcct1": "crwdns3180:0crwdne3180:0",
"useOtherAcct2": "crwdns3182:0crwdne3182:0", "useOtherAcct2": "crwdns3182:0crwdne3182:0",
"btWithVis": "crwdns4324:0crwdne4324:0", "btWithVis": "crwdns4324:0crwdne4324:0",
@ -73,7 +74,9 @@
"favRegist": "crwdns3188:0crwdne3188:0", "favRegist": "crwdns3188:0crwdne3188:0",
"openBrowser": "crwdns3190:0crwdne3190:0", "openBrowser": "crwdns3190:0crwdne3190:0",
"screenshot": "crwdns3192:0crwdne3192:0", "screenshot": "crwdns3192:0crwdne3192:0",
"copyBinary": "crwdns4594:0crwdne4594:0",
"copyURL": "crwdns3194:0crwdne3194:0", "copyURL": "crwdns3194:0crwdne3194:0",
"copy": "crwdns4586:0crwdne4586:0",
"embed": "crwdns3196:0crwdne3196:0", "embed": "crwdns3196:0crwdne3196:0",
"toots": "crwdns3198:0crwdne3198:0", "toots": "crwdns3198:0crwdne3198:0",
"follow": "crwdns3200:0crwdne3200:0", "follow": "crwdns3200:0crwdne3200:0",
@ -85,6 +88,8 @@
"makeNew": "crwdns3210:0crwdne3210:0", "makeNew": "crwdns3210:0crwdne3210:0",
"blocks": "crwdns3212:0crwdne3212:0", "blocks": "crwdns3212:0crwdne3212:0",
"mutes": "crwdns3214:0crwdne3214:0", "mutes": "crwdns3214:0crwdne3214:0",
"notfMute": "crwdns4591:0crwdne4591:0",
"zeroSetToInfinity": "crwdns4593:0crwdne4593:0",
"block": "crwdns3216:0crwdne3216:0", "block": "crwdns3216:0crwdne3216:0",
"mute": "crwdns3218:0crwdne3218:0", "mute": "crwdns3218:0crwdne3218:0",
"domainBlock": "crwdns3220:0crwdne3220:0", "domainBlock": "crwdns3220:0crwdne3220:0",
@ -178,6 +183,7 @@
"foundBug": "crwdns4431:0crwdne4431:0", "foundBug": "crwdns4431:0crwdne4431:0",
"show": "crwdns3388:0crwdne3388:0", "show": "crwdns3388:0crwdne3388:0",
"directory": "crwdns3390:0crwdne3390:0", "directory": "crwdns3390:0crwdne3390:0",
"discover": "crwdns4590:0crwdne4590:0",
"active": "crwdns3392:0crwdne3392:0", "active": "crwdns3392:0crwdne3392:0",
"newcomer": "crwdns3394:0crwdne3394:0", "newcomer": "crwdns3394:0crwdne3394:0",
"local_only": "crwdns3396:0crwdne3396:0", "local_only": "crwdns3396:0crwdne3396:0",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "crwdns3584:0crwdne3584:0", "lang_details_embed": "crwdns3584:0crwdne3584:0",
"lang_details_url": "crwdns3586:0crwdne3586:0", "lang_details_url": "crwdns3586:0crwdne3586:0",
"lang_details_txt": "crwdns3588:0crwdne3588:0", "lang_details_txt": "crwdns3588:0crwdne3588:0",
"lang_details_fetch": "crwdns4588:0crwdne4588:0",
"lang_filter_nodata": "crwdns3590:0crwdne3590:0", "lang_filter_nodata": "crwdns3590:0crwdne3590:0",
"lang_filter_errordegree": "crwdns3592:0crwdne3592:0", "lang_filter_errordegree": "crwdns3592:0crwdne3592:0",
"lang_list_nodata": "crwdns3594:0crwdne3594:0", "lang_list_nodata": "crwdns3594:0crwdne3594:0",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "crwdns3630:0crwdne3630:0", "lang_tl_postmarkers_title": "crwdns3630:0crwdne3630:0",
"lang_tl_postmarkers": "crwdns3632:0crwdne3632:0", "lang_tl_postmarkers": "crwdns3632:0crwdne3632:0",
"lang_img_DLDone": "crwdns3634:0crwdne3634:0", "lang_img_DLDone": "crwdns3634:0crwdne3634:0",
"lang_imgBin_copyDone": "crwdns4596:0crwdne4596:0",
"lang_img_copyDone": "crwdns4380:0crwdne4380:0", "lang_img_copyDone": "crwdns4380:0crwdne4380:0",
"lang_layout_gotop": "crwdns3636:0crwdne3636:0", "lang_layout_gotop": "crwdns3636:0crwdne3636:0",
"lang_layout_thisacct": "crwdns3638:0{{notf}}crwdne3638:0", "lang_layout_thisacct": "crwdns3638:0{{notf}}crwdne3638:0",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "crwdns3694:0crwdne3694:0", "lang_hisdata_taketime": "crwdns3694:0crwdne3694:0",
"lang_hisdata_notonmisskey": "crwdns3696:0crwdne3696:0", "lang_hisdata_notonmisskey": "crwdns3696:0crwdne3696:0",
"lang_hisdata_key": "crwdns3698:0{{set}}crwdne3698:0", "lang_hisdata_key": "crwdns3698:0{{set}}crwdne3698:0",
"lang_showontl_limited_title": "crwdns4598:0crwdne4598:0",
"lang_showontl_limited": "crwdns4600:0crwdne4600:0",
"lang_showontl_movetxt": "crwdns3700:0crwdne3700:0", "lang_showontl_movetxt": "crwdns3700:0crwdne3700:0",
"lang_showontl_movebtn": "crwdns3702:0crwdne3702:0", "lang_showontl_movebtn": "crwdns3702:0crwdne3702:0",
"lang_showontl_botacct": "crwdns3704:0[bot]crwdne3704:0", "lang_showontl_botacct": "crwdns3704:0[bot]crwdne3704:0",
"lang_showontl_followed": "crwdns3706:0crwdne3706:0", "lang_showontl_followed": "crwdns3706:0crwdne3706:0",
"lang_parse_request": "crwdns4445:0crwdne4445:0", "lang_parse_request": "crwdns4445:0crwdne4445:0",
"lang_parse_signup": "crwdns4603:0crwdne4603:0",
"lang_showontl_notf": "crwdns3708:0crwdne3708:0", "lang_showontl_notf": "crwdns3708:0crwdne3708:0",
"lang_showontl_domain": "crwdns3710:0crwdne3710:0", "lang_showontl_domain": "crwdns3710:0crwdne3710:0",
"lang_showontl_listwarn": "crwdns3712:0crwdne3712:0", "lang_showontl_listwarn": "crwdns3712:0crwdne3712:0",

View File

@ -72,6 +72,7 @@
"desc": "crwdns3992:0crwdne3992:0", "desc": "crwdns3992:0crwdne3992:0",
"customImport": "crwdns3996:0crwdne3996:0", "customImport": "crwdns3996:0crwdne3996:0",
"delete": "crwdns3998:0crwdne3998:0", "delete": "crwdns3998:0crwdne3998:0",
"preview": "crwdns4584:0crwdne4584:0",
"timeline": "crwdns4002:0crwdne4002:0", "timeline": "crwdns4002:0crwdne4002:0",
"timemode": "crwdns4004:0crwdne4004:0", "timemode": "crwdns4004:0crwdne4004:0",
"relativetime": "crwdns4006:0crwdne4006:0", "relativetime": "crwdns4006:0crwdne4006:0",
@ -119,6 +120,7 @@
"remote_imgWarn": "crwdns4384:0crwdne4384:0", "remote_imgWarn": "crwdns4384:0crwdne4384:0",
"moreContextMode": "crwdns4572:0crwdne4572:0", "moreContextMode": "crwdns4572:0crwdne4572:0",
"moreContextModeWarn": "crwdns4574:0crwdne4574:0", "moreContextModeWarn": "crwdns4574:0crwdne4574:0",
"smallHeader": "crwdns4582:0crwdne4582:0",
"replySound": "crwdns4088:0crwdne4088:0", "replySound": "crwdns4088:0crwdne4088:0",
"favSound": "crwdns4090:0crwdne4090:0", "favSound": "crwdns4090:0crwdne4090:0",
"btSound": "crwdns4092:0crwdne4092:0", "btSound": "crwdns4092:0crwdne4092:0",

View File

@ -21,5 +21,6 @@
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.", "misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata":"No data", "nodata":"No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)", "accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page" "haveExported": "Having the exported file of TheDesk, click here to jump setting page",
"redo": "Retry(re-input address)"
} }

View File

@ -1,184 +1,189 @@
{ {
"draghere":"Drag here to upload", "draghere": "Drag here to upload",
"nowOffline":"OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", "nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline":"Now we are in the Internet, you should reload...", "reOnline": "Now we are in the Internet, you should reload...",
"close":"Close", "close": "Close",
"webSrc": "Search on Web", "webSrc": "Search on Web",
"tsSrc": "Search on tootsearch", "tsSrc": "Search on tootsearch",
"showSelectProf":"Show profile of the selecting account", "showSelectProf": "Show profile of the selecting account",
"closethisbox":"Close this box", "closethisbox": "Close this box",
"toot":"Toot", "toot": "Toot",
"post-new":"Post new", "post-new": "Post new",
"nsfwDes":"Mark media as sensitive", "nsfwDes": "Mark media as sensitive",
"cwDes":"Hide text behind warning", "cwDes": "Hide text behind warning",
"selfile":"Attach..", "selfile": "Attach..",
"insertEmoji":"Emojis", "insertEmoji": "Emojis",
"schedule":"Scheduled toot", "schedule": "Scheduled toot",
"postat":"Post at", "postat": "Post at",
"scheduleWarn":"2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)", "scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
"clearToot":"Clear toot box", "clearToot": "Clear toot box",
"replyMode":"Reply", "replyMode": "Reply",
"no":"No", "no": "No",
"yes":"Yes", "yes": "Yes",
"temp":"Attaching files", "temp": "Attaching files",
"nothing":"None", "nothing": "None",
"stamp": "Stamp", "stamp": "Stamp",
"stampWarn": "Your acct(aa@bb.cc) is printed on the right-bottom of the uploaded image", "stampWarn": "Your acct(aa@bb.cc) is printed on the right-bottom of the uploaded image",
"vis":"Adjust status privacy", "vis": "Adjust status privacy",
"cwtext":"Warning text", "cwtext": "Warning text",
"selectVis":"Adjust status privacy", "selectVis": "Adjust status privacy",
"publicJP":"", "publicJP": "",
"unlistedJP":"", "unlistedJP": "",
"privateJP":"", "privateJP": "",
"localJP":"Local only", "localJP": "Local only",
"sectoot":"Secondary Toot", "sectoot": "Secondary Toot",
"directJP":"", "directJP": "",
"emojiWarn":"", "emojiWarn": "",
"emojiInsertWarn":"Some emojis are not able to be inserted.", "emojiInsertWarn": "Some emojis are not able to be inserted.",
"refreshEmoji":"Refresh emojis list", "refreshEmoji": "Refresh emojis list",
"closeThisBox":"Close this box", "closeThisBox": "Close this box",
"showThisEmoji":" are shown.", "showThisEmoji": " are shown.",
"customEmoji":"Custom emojis", "customEmoji": "Custom emojis",
"peopleEmoji":"Emojis of people", "peopleEmoji": "Emojis of people",
"natureEmoji":"Emojis of nature", "natureEmoji": "Emojis of nature",
"foodEmoji":"Emojis of foods", "foodEmoji": "Emojis of foods",
"activityEmoji":"Emojis of activities", "activityEmoji": "Emojis of activities",
"placeEmoji":"Emojis of places", "placeEmoji": "Emojis of places",
"thingsEmoji":"Emojis of tools", "thingsEmoji": "Emojis of tools",
"symbolEmoji":"Emojis of symbols", "symbolEmoji": "Emojis of symbols",
"flagsEmoji":"Emojis of flags", "flagsEmoji": "Emojis of flags",
"draft": "Draft", "draft": "Draft",
"poll":"Poll", "poll": "Poll",
"pollDdisabled":"Polls: Disabled", "pollDdisabled": "Polls: Disabled",
"pollProvider":"Provider of Poll", "pollProvider": "Provider of Poll",
"polluntil":"Hide 'votes' count until people vote it.", "polluntil": "Hide 'votes' count until people vote it.",
"choice":"Choice", "choice": "Choice",
"pollmulti":"Multiple select", "pollmulti": "Multiple select",
"expires_in":"Expires in...(sec)", "expires_in": "Expires in...(sec)",
"contextBefore":"Context before this toot", "contextBefore": "Context before this toot",
"thisToot":"This toot", "thisToot": "This toot",
"contextAfter":"Context after this toot", "contextAfter": "Context after this toot",
"beforeLTL":"Local TL before this toot", "beforeLTL": "Local TL before this toot",
"beforeUTL":"User TL before this toot", "beforeUTL": "User TL before this toot",
"afterLTL":"Local TL after this toot)", "afterLTL": "Local TL after this toot)",
"afterUTL":"User TL before this toot", "afterUTL": "User TL before this toot",
"afterFTL":"Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople":"People who favourited it", "favedPeople": "People who favourited it",
"btedPeople":"People who boosted it", "btedPeople": "People who boosted it",
"useOtherAcct1":"Use other account", "editHistory": "Edit history",
"useOtherAcct2":":unfav and unBT are disabled.", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
"reply":"Reply", "reply": "Reply",
"bt":"Boost", "bt": "Boost",
"favRegist":"Favourite", "favRegist": "Favourite",
"openBrowser":"Open in browser", "openBrowser": "Open in browser",
"screenshot":"Take a screenshot", "screenshot": "Take a screenshot",
"copyURL":"Copy the URL", "copyBinary": "Copy raw image",
"copy":"Copy", "copyURL": "Copy the URL",
"embed":"Embed", "copy": "Copy",
"toots":"Toots", "embed": "Embed",
"follow":"Follow", "toots": "Toots",
"follower":"Follower", "follow": "Follow",
"utlColumn":"Show as a column", "follower": "Follower",
"timeline":"Timeline", "utlColumn": "Show as a column",
"operateOtherAcct":"Cross-account", "timeline": "Timeline",
"list":"List", "operateOtherAcct": "Cross-account",
"makeNew":"Save", "list": "List",
"blocks":"Blocks", "makeNew": "Save",
"mutes":"Mutes", "blocks": "Blocks",
"block":"Block", "mutes": "Mutes",
"mute":"Mute", "notfMute": "Mute their notifications too",
"domainBlock":"Domain block", "zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"editProf":"Edit profile", "block": "Block",
"change":"Save", "mute": "Mute",
"followReq":"Follow requests", "domainBlock": "Domain block",
"likeHimOrHer":"Resembling", "editProf": "Edit profile",
"endorse":"Feature on profile", "change": "Save",
"openinbrowser":"Open in browser", "followReq": "Follow requests",
"mainacct":"Set it an main account", "likeHimOrHer": "Resembling",
"frc":"Suggest", "endorse": "Feature on profile",
"more":"More", "openinbrowser": "Open in browser",
"revoverJP":" to ", "mainacct": "Set it an main account",
"warnUseOtherAcct":"(Unable to unfollow)", "frc": "Suggest",
"revoverJPde":"", "more": "More",
"or":"or", "revoverJP": " to ",
"openProf":"Show profile", "warnUseOtherAcct": "(Unable to unfollow)",
"warnListRegist":"Follow to add this user to lists.", "revoverJPde": "",
"blockDomain":"Add blocking domain", "or": "or",
"name":"Display name", "openProf": "Show profile",
"note":"Note", "warnListRegist": "Follow to add this user to lists.",
"editProfImg":"Change avataor", "blockDomain": "Add blocking domain",
"editHeader":"Change header image", "name": "Display name",
"blocked":"You are blocked. Why?", "note": "Note",
"likeUserDes":"Get people resembling this user.", "editProfImg": "Change avataor",
"get":"Get", "editHeader": "Change header image",
"historyBack":"Back", "blocked": "You are blocked. Why?",
"empUser":"Emphasize this user", "likeUserDes": "Get people resembling this user.",
"supportme":"Support TheDesk!", "get": "Get",
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!", "historyBack": "Back",
"PatreonSupport":"Support on Patreon", "empUser": "Emphasize this user",
"PixivSupport":"Support on Pixiv FANBOX", "supportme": "Support TheDesk!",
"AWLSupport":"Amazon Wish List", "TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
"SendAmazonGift1":"Give me Amazon Gift Card:", "PatreonSupport": "Support on Patreon",
"SendAmazonGift2":"", "PixivSupport": "Support on Pixiv FANBOX",
"monthly":"Monthly", "AWLSupport": "Amazon Wish List",
"once":"Once", "SendAmazonGift1": "Give me Amazon Gift Card:",
"local":"Local", "SendAmazonGift2": "",
"localMedia":"Local(Media)", "monthly": "Monthly",
"home":"Home", "once": "Once",
"fed":"Federated", "local": "Local",
"fedMedia":"Federated(Media)", "localMedia": "Local(Media)",
"dm":"Direct Message", "home": "Home",
"integratedTLDes":"Integrated(Local/Home)", "fed": "Federated",
"localPlusDes":"LTL+Reply+BT", "fedMedia": "Federated(Media)",
"notf":"Notifications", "dm": "Direct Message",
"integratedTLDes": "Integrated(Local/Home)",
"localPlusDes": "LTL+Reply+BT",
"notf": "Notifications",
"bookmark": "Bookmarks", "bookmark": "Bookmarks",
"showThisTL":"Show this TL:", "showThisTL": "Show this TL:",
"webviewWarn":"TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).", "webviewWarn": "TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).",
"add":"Add", "add": "Add",
"search":"Search", "search": "Search",
"sortSet":"Sort", "sortSet": "Sort",
"selectAcct":"Account(Scroll to show all)", "selectAcct": "Account(Scroll to show all)",
"listLocale":"List", "listLocale": "List",
"filterWord":"Filtering words", "filterWord": "Filtering words",
"degree":"Filter contexts", "degree": "Filter contexts",
"conver":"Conversations", "conver": "Conversations",
"prof":"Profiles", "prof": "Profiles",
"option":"Options", "option": "Options",
"matchWord":"Whole word", "matchWord": "Whole word",
"warnMatchWord":"Nice for Latin language", "warnMatchWord": "Nice for Latin language",
"except":"Drop instead of hide", "except": "Drop instead of hide",
"exceptWorn":"Filtered toots will disappear irreversibly, even if filter is later removed", "exceptWorn": "Filtered toots will disappear irreversibly, even if filter is later removed",
"avalableBefore":"Expire after", "avalableBefore": "Expire after",
"warnAvBefore":"Unset or \"0\" means \"Never\"", "warnAvBefore": "Unset or \"0\" means \"Never\"",
"warnAvBefore2":"This value may contain some error", "warnAvBefore2": "This value may contain some error",
"unlimited":"Never", "unlimited": "Never",
"days":"day(s)", "days": "day(s)",
"hours":"hour(s)", "hours": "hour(s)",
"mins":"minute(s)", "mins": "minute(s)",
"secs":"second(s)", "secs": "second(s)",
"warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.", "warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
"helloTheDesk":"Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>", "helloTheDesk": "Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
"addColumn":"Add a column", "addColumn": "Add a column",
"sortColumns":"Sort", "sortColumns": "Sort",
"acctMan":"Account Manager", "acctMan": "Account Manager",
"filter":"Filter", "filter": "Filter",
"setting":"Preferences", "setting": "Preferences",
"reverse":"Toot button layout reverse", "reverse": "Toot button layout reverse",
"f5":"Reload TL", "f5": "Reload TL",
"nanoDes":"The smallest Mastodon,", "nanoDes": "The smallest Mastodon,",
"verTips":"Version", "verTips": "Version",
"clockTips":"Clock", "clockTips": "Clock",
"ramTips":"RAM status", "ramTips": "RAM status",
"changeTips":"Change Tips", "changeTips": "Change Tips",
"helpAndLogs":"Help & Log", "helpAndLogs": "Help & Log",
"help":"Help", "help": "Help",
"contactwithlog":"If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.", "contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.",
"about":"About TheDesk", "about": "About TheDesk",
"hereAddColumns":"<- Add TL", "hereAddColumns": "<- Add TL",
"foundBug": "I found a bug", "foundBug": "I found a bug",
"show": "Show", "show": "Show",
"directory": "Directory", "directory": "Directory",
"discover": "Discover",
"active": "Recently active", "active": "Recently active",
"newcomer": "New arrivals", "newcomer": "New arrivals",
"local_only": "Local only", "local_only": "Local only",

View File

@ -50,6 +50,8 @@
"lang_manager_logout": "Logout", "lang_manager_logout": "Logout",
"lang_manager_maxChars": "Max chars of toots", "lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain", "lang_manager_refreshAt": "Login with this domain",
"lang_manager_codesetup_title": "Skip code-setup",
"lang_manager_codesetup": "If you failed log-in, please click Cancel.",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", "lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get": "Get emojis", "lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis", "lang_emoji_custom": "Custom emojis",
@ -103,6 +105,7 @@
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data", "lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data", "lang_list_nodata": "No data",
@ -126,6 +129,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image", "lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -162,16 +166,20 @@
"lang_spotify_acct": "Connect TheDesk to Spotify", "lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Done:templete of NowPlaying", "lang_spotify_np": "Done:templete of NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}", "lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_setting_webview_warn": "Please turn WebView on at System Preferences of TheDesk to add TweetDeck as a column",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above", "lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.", "lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

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