Compare commits

...

32 Commits

Author SHA1 Message Date
Cutls
1387482db0 TheDesk Usamin (18.7.1) 2019-08-02 00:02:52 +09:00
Cutls
b7a86324dd Merge pull request #105 from cutls/dependabot/npm_and_yarn/app/readline-sync-1.4.10
Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
2019-08-01 22:56:12 +09:00
Cutls
babc5a6424 Merge pull request #107 from cutls/dependabot/npm_and_yarn/app/electron-tw-6.0.0
Update electron requirement from ^5.0.4 to ^6.0.0 in /app
2019-08-01 22:55:31 +09:00
dependabot-preview[bot]
74a468383c Update electron requirement from ^5.0.4 to ^6.0.0 in /app
Updates the requirements on [electron](https://github.com/electron/electron) to permit the latest version.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.4...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-31 20:26:05 +00:00
dependabot-preview[bot]
3a48f0ff0d Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
Updates the requirements on [readline-sync](https://github.com/anseki/readline-sync) to permit the latest version.
- [Release notes](https://github.com/anseki/readline-sync/releases)
- [Commits](https://github.com/anseki/readline-sync/compare/1.4.9...1.4.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-29 20:25:25 +00:00
Cutls
e26363adf6 Fix: when open an image modal, disabled toot selector 2019-07-29 01:13:53 +09:00
Cutls
35d97d42c5 Fix: context func is pollted 2019-07-29 01:09:12 +09:00
Cutls
4fa7d07500 Improve: sorting 2019-07-29 00:52:12 +09:00
Cutls
15f428528b Add: video loop(on modal and Pleroma) and autoplay on modal 2019-07-29 00:42:52 +09:00
Cutls
7fa805fe3a Change: sort suggest 2019-07-29 00:42:17 +09:00
Cutls
fd9c97a126 Add: tag suggest with v2 2019-07-29 00:16:49 +09:00
Cutls
f081154804 init 2019-07-28 23:48:44 +09:00
Cutls
866affdf45 Add: mute by emoji(custom/default) 2019-07-28 23:47:50 +09:00
Cutls
30aee556f1 Fix: if account is null #102 2019-07-25 23:55:25 +09:00
Cutls
b12c18aa08 Add: NSFW warning when not blurhashed sensitive toots 2019-07-25 23:52:44 +09:00
Cutls
f17a47d088 Change: NSFW images on not blurhash supported instance 2019-07-25 23:20:38 +09:00
Cutls
d79f096749 Merge pull request #104 from cutls/dependabot/npm_and_yarn/app/electron-builder-tw-21.1.5
Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
2019-07-25 23:16:23 +09:00
dependabot-preview[bot]
5b82b91c6a Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
Updates the requirements on [electron-builder](https://github.com/electron-userland/electron-builder) to permit the latest version.
- [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/v20.44.4...v21.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-24 20:25:27 +00:00
Cutls
4a6b87ac1c Fix: emoji-including URL 2019-07-15 00:56:19 +09:00
Cutls
1bea06354e TheDesk Usamin (18.7.0) 2019-07-13 00:01:16 +09:00
Cutls
5fbd5aaf10 Fix: layout 2019-07-13 00:01:09 +09:00
Cutls
0290a6d918 shortcut key desc 2019-07-13 00:00:26 +09:00
Cutls
2576c48441 Pleroma URL 2019-07-12 23:16:27 +09:00
Cutls
eb02dd2986 Fix: when failed to upload 2019-07-12 01:01:24 +09:00
Cutls
d92570fa3b Add: keyboard-control 2019-07-12 00:53:55 +09:00
Cutls
38c988d2a2 Fix: desc hidden 2019-07-10 22:48:36 +09:00
Cutls
0927282d41 Change: overflow of column name 2019-07-09 22:48:57 +09:00
Cutls
5ffd59619c TheDesk Usamin (18.6.7) 2019-07-09 00:35:33 +09:00
Cutls
a739926ad4 sub-button color 2019-07-09 00:35:20 +09:00
Cutls
e41c38f41d Change: remove get card API 2019-07-09 00:27:31 +09:00
Cutls
2de05b84aa Misskey streaming leak 2019-07-09 00:27:18 +09:00
Cutls
0e9bdef9ca Add: set main account on showOnTL 2019-07-06 23:16:41 +09:00
38 changed files with 1499 additions and 719 deletions

View File

@@ -10,9 +10,6 @@ body {
background-color: var(--bg);
color: var(--color);
}
body {
border: thin solid gray;
}
.btn {
margin: 5px;
text-transform: none;
@@ -307,6 +304,9 @@ blockquote:before,
.tabs {
background-color: var(--subcolor);
}
.collapsible-header:focus {
background-color: var(--subcolor);
}
.modal-footer {
background-color: var(--modalfooter) !important;
}

View File

@@ -15,6 +15,8 @@
--postbox: white;
--modalfooter: #fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
}
#imagemodal {
background: url("../img/pixel.white.svg");
@@ -36,6 +38,8 @@
--postbox: #424242;
--modalfooter: #212121;
--accentbtn: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
}
.blacktheme #imagemodal {
background: url("../img/pixel.svg");
@@ -57,6 +61,8 @@
--postbox: #1a237e;
--modalfooter: #031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
@@ -78,6 +84,8 @@
--postbox: #4e342e;
--modalfooter: #261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
}
.browntheme #imagemodal {
background: url("../img/pixel.svg");
@@ -99,6 +107,8 @@
--postbox: #a5d6a7;
--modalfooter: #81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
}
.greentheme #imagemodal {
background: url("../img/pixel.white.svg");
@@ -120,6 +130,8 @@
--postbox: #dff1ff;
--modalfooter: #2196f3;
--accentbtn: #2f7bb7;
--selected: #9dcade;
--selectedWithShare: #c1dac4;
}
.bluetheme #imagemodal {
background: url("../img/pixel.white.svg");

View File

@@ -96,6 +96,7 @@
}
iframe {
max-width: 100%;
max-height: 300px;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -157,6 +158,7 @@ iframe {
height: 100%;
border: thin solid gray;
overflow: hidden;
border-top: none;
}
.box .pin,
#his-data .pin {
@@ -425,6 +427,9 @@ p:not(:last-child) {
.area-notice_name {
grid-area: notice_name;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.area-notice_acct {
@@ -581,6 +586,7 @@ p:not(:last-child) {
display: block;
margin-right: 1px;
float: left;
overflow: hidden;
}
.nsfw-media {
position: absolute;
@@ -594,6 +600,12 @@ p:not(:last-child) {
width: 100%;
height: 100%;
}
.shared.selectedToot{
background-color: var(--selectedWithShare);
}
.selectedToot{
background-color: var(--selected);
}
audio{
height: 2rem;
}

View File

@@ -1,3 +1,5 @@
selectedColumn = 0
selectedToot = 0
$(function ($) {
//キーボードショートカット
$(window).keydown(function (e) {
@@ -118,7 +120,7 @@ $(function ($) {
}
}
//Ctrl+Sift+P:プロフ
if ((event.ctrlKey) && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) {
profShow()
return false;
@@ -132,30 +134,82 @@ $(function ($) {
return false;
}
}
//矢印:選択
if (e.code == "ArrowLeft") {
//left
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
if (selectedColumn > 0) {
selectedColumn--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowUp") {
//up
if ($("#imagemodal").hasClass("open")) {
return false;
}
if (selectedToot > 0) {
selectedToot--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowRight") {
//right
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
if (selectedColumn < $(".tl-box").length - 1) {
selectedColumn++
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowDown") {
//down
if ($("#imagemodal").hasClass("open")) {
return false;
}
selectedToot++
tootSelector(selectedColumn, selectedToot)
return false;
}
//Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) {
if (e.keyCode === 85) {
selectedToot = 0
selectedColumn = 0
tootSelector(0, 0)
return false;
}
}
//選択時
if (e.keyCode == 70) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
fav(id, acct_id, false)
return false;
}
if (e.keyCode == 66) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
rt(id, acct_id, false)
return false;
}
if (e.keyCode == 82) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr("data-visen")
re(id, ats_cm, acct_id, mode)
return false;
}
}
//textareaフォーカス時
if (hasFocus2 && wv) {
if (event.metaKey || event.ctrlKey) {
//Ctrl+B:太字
if (e.keyCode === 66) {
tagsel('b');
return false;
}
//Ctrl+I:斜字
if (e.keyCode === 73) {
tagsel('i');
return false;
}
//Ctrl+U:下線
if (e.keyCode === 85) {
tagsel('u');
return false;
}
//Ctrl+S:取り消し線
if (e.keyCode === 83) {
tagsel('s');
return false;
}
//C+S+(No):ワンクリ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
@@ -166,22 +220,28 @@ $(function ($) {
}
}
}
//イメージビューワー切り替え
if (e.keyCode === 37 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
}
if (e.keyCode === 39 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
}
});
//クリアボタン
$("#clear").click(function () {
clear();
});
});
});
//選択する
function tootSelector(column, toot) {
$('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr
if (top > 0) {
top = top + $('.selectedToot').height()
if (top > scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: top })
}
} else if (elem < 0) {
var to = scr + elem - $('.selectedToot').height()
if (to < scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
}
}
}

View File

@@ -47,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed",
"lang_postimg_delete": "Delete this image.",
//post/post.js
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",

View File

@@ -47,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "プレビューできません。",
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
"lang_postimg_failupload": "アップロードに失敗しました。",
"lang_postimg_delete": "この画像を削除します",
//post/post.js
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
@@ -131,8 +132,8 @@ var lang = {
"lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)",
"lang_layout_leftFold": "左へ重ねる",
"lang_layout_leftUnfold": "右へ出す",
"lang_layout_deleteColumn":"カラム削除",
"lang_layout_deleteColumnDesc":"カラムを削除しますか?",
"lang_layout_deleteColumn": "カラム削除",
"lang_layout_deleteColumnDesc": "カラムを削除しますか?",
//ui/sort.js
"lang_sort_gothis": "このカラムへ",
"lang_sort_remthis": "このカラムを削除",
@@ -201,7 +202,7 @@ var lang = {
"lang_parse_thread": "会話を表示",
"lang_parse_unknown": "添付ファイル",
"lang_parse_nsfw": "閲覧注意",
"lang_parse_notffilter":"このユーザーの通知のみを表示",
"lang_parse_notffilter": "このユーザーの通知のみを表示",
//misskey
"lang_misskeyparse_renote": "再投稿",
"lang_misskeyparse_renoteqt": "引用",

View File

@@ -40,7 +40,7 @@ function ck() {
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
multiSelector(false);
verck(ver);
$("#something-wrong img").attr("src", "../../img/thinkingdesk.png")
}
@@ -403,7 +403,7 @@ function ckdb(acct_id) {
}
//アカウントを選択…を実装
function multiSelector() {
function multiSelector(parseC) {
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
@@ -490,7 +490,9 @@ function multiSelector() {
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>');
}
$('select').formSelect();
parseColumn(true);
if(!parseC){
parseColumn(true);
}
}
//バージョンエンコ

View File

@@ -10,16 +10,20 @@ $(document).on('click', 'a', e => {
if (url) {
urls = url.match(/https?:\/\/(.+)/);
//トゥートのURLぽかったら
toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(!toot){
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/);
}
//タグのURLぽかったら
var tags = [];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
/https:\/\/([^+_]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
//メンションっぽかったら
var ats = [];
ats = url.match(
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
/https:\/\/([^+_]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
);
if (toot) {
if (toot[1]) {

View File

@@ -170,4 +170,29 @@ $.mb_substr = function (str, begin, end) {
}
return ret;
};
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1;
var num_b = 1;
if (order === 'asc') {
num_a = 1;
num_b = -1;
}
data = data.sort(function (a, b) {
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data);
}
localStorage.removeItem("errors");

View File

@@ -160,7 +160,6 @@ ipc.on('memory', function (event, arg) {
})
//update.html
ipc.on('prog', function (event, arg) {
console.log(arg)
postMessage(["updateProg", arg], "*")
})
ipc.on('mess', function (event, arg) {

533
app/js/platform/punycode.js Normal file
View File

@@ -0,0 +1,533 @@
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = typeof exports == 'object' && exports &&
!exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define.amd == 'object' &&
define.amd
) {
define('punycode', function() {
return punycode;
});
} else if (freeExports && freeModule) {
if (module.exports == freeExports) {
// in Node.js, io.js, or RingoJS v0.8.0+
freeModule.exports = punycode;
} else {
// in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
}
}
} else {
// in Rhino or a web browser
root.punycode = punycode;
}
}(this));

View File

@@ -120,6 +120,16 @@ function media(b64, type, no) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if (!json.id) {
todc();
$("#imgup").text("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$('select').formSelect();
$("#imgsel").show();
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
var img = localStorage.getItem("img");
if (json.type.indexOf("image") != -1) {
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';

View File

@@ -29,7 +29,6 @@ function post(mode, postvis) {
}
if (domain != "kirishima.cloud") {
if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) {
console.log("out")
var plus = str.replace(/\n/g, "").slice(0, 10) + "...";
Swal.fire({
title: lang.lang_post_cwtitle,
@@ -43,7 +42,6 @@ function post(mode, postvis) {
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
console.log(result)
if (result.dismiss == "cancel") {
//btn3:sonomama
post("pass")

View File

@@ -66,7 +66,7 @@ input.addEventListener("focus", function () {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
suggest = "https://" + domain + "/api/v1/search?q=" + q
suggest = "https://" + domain + "/api/v2/search?q=" + q
if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest)
fetch(suggest, {
@@ -81,18 +81,43 @@ input.addEventListener("focus", function () {
todo(error);
console.error(error);
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0] && tag) {
if (tag[1]) {
var tags = "";
var tags = [];
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if (tag != q) {
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
'\')" class="pointer">#' + tag + '</a><br>';
var his = tag.history;
var uses = his[0].uses * 1 + his[1].uses * 1 + his[2].uses * 1 + his[3].uses * 1 + his[4].uses * 1 + his[5].uses * 1 + his[6].uses * 1;
tagHTML = '<br><a onclick="tagInsert(\'#' + escapeHTML(tag.name) + '\',\'#' + q + '\')" class="pointer">#' +
escapeHTML(tag.name) + '</a>&nbsp;' + uses + 'toot(s)'
var item = {
"uses": uses,
"html": tagHTML
}
tags.push(item)
});
var num_a = -1;
var num_b = 1;
tags = tags.sort(function (a, b) {
var x = a["uses"];
var y = b["uses"];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var ins = ""
var nev = false
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
nev = true
}
});
$("#suggest").html(ins);
$("#right-side").show()
$("#suggest").html("Tags:<br>" + tags);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}

View File

@@ -155,7 +155,7 @@ function additionalIndv(tlid, acct_id, id) {
});
} else {
var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
var start = "https://" + domain + "/api/v1/statuses/" + id;
fetch(start, {
method: 'GET',
headers: {
@@ -169,6 +169,7 @@ function additionalIndv(tlid, acct_id, id) {
todo(error);
console.error(error);
}).then(function (json) {
json = json.card;
//このリンク鳥やんけ、ってとき
if (json.provider_name == "Twitter") {
if (json.image) {

View File

@@ -82,7 +82,7 @@ function details(id, acct_id, tlid, mode) {
} else {
$("#tootmodal").attr("data-user", scn);
}
context(id, acct_id);
getContext(id, acct_id);
var dom = null;
if (!local) {
dom = scn.replace(/.+@/g, '');
@@ -99,7 +99,9 @@ function details(id, acct_id, tlid, mode) {
if ($("#toot-this div").hasClass("cvo")) {
$("#toot-this").removeClass("cvo");
} else {
$("#toot-this").addClass("cvo");
if(!$("#toot-this .cvo").hasClass("cvo")){
$("#toot-this").addClass("cvo");
}
}
if (!$("#activator").hasClass("active")) {
$('#det-col').collapsible('open', 4);
@@ -125,14 +127,7 @@ function replyTL(id, acct_id) {
})
}
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
return false
}
fetch(start, i).then(function (response) {
return response.json();
@@ -155,27 +150,13 @@ function replyTL(id, acct_id) {
if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
} else {
var templete = parse([json], '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
var rep = "in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(id, acct_id) {
function getContext(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
@@ -228,6 +209,14 @@ function context(id, acct_id) {
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var templete = parse(json.ancestors, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}

View File

@@ -832,10 +832,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="misskeyreply(\'' + toot.id +
'\',\'' + acct_id + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'\')" class="waves-effect waves-dark btn-flat rep-btn" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="renote(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
'\')" class="waves-effect waves-dark btn-flat bt-btn" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct"></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + '"><a onclick="renoteqt(\'' + toot.id + '\',' + acct_id +
',\'misskey.xyz\',\'misskey.xyz\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renoteqt + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
@@ -979,7 +979,7 @@ function goGoogle(id) {
}
var misskeyws = []
var misskeywsstate = []
function connectMisskey(acct_id) {
function connectMisskey(acct_id, re) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "wss://" + domain +
@@ -1001,7 +1001,6 @@ function connectMisskey(acct_id) {
var mute = [];
if (data.body.id.indexOf("notf:") !== -1) {
var obj = JSON.parse(mess.data).body;
console.log(obj);
var popup = localStorage.getItem("popup");
if (!popup) {
popup = 0;
@@ -1063,13 +1062,17 @@ function connectMisskey(acct_id) {
console.error("Error closing " + tlid);
console.error(error);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};
misskeyws[wsid].onclose = function () {
console.warn("Closing " + tlid);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};

View File

@@ -481,8 +481,25 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
}
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct]
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&")
var encoded = encodeURI(urlCont[4])
var punycoded = "xn--" + punycode.encode(urlCont[2])
var eUrl = urlCont[1] + "://" + punycoded + "." + urlCont[3] + "/" + encoded
var regExp = new RegExp('href="' + urlindv + '"', "g")
content = content.replace(regExp, 'href="' + eUrl + '"')
}
}
}
if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
@@ -525,60 +542,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'"><i class="far fa-calendar-times"></i>' +
ended + '</span></div>';
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
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) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
@@ -594,8 +558,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (toot.sensitive && nsfw) {
var sense = "sensitive"
var blur = media.blurhash
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
if (blur) {
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
purl = parseBlur(blur)
var sense = ""
}
@@ -608,7 +572,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;"></a></span>';
' toot-img pointer" style="max-width:100%;" loop="true"></a></span>';
} else {
if (media.type == "unknown") {
viewer = viewer + '<a href="' + media.remote_url + '" title="' + media.remote_url + '">[' + lang.lang_parse_unknown + ']</a> '
@@ -736,7 +700,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
console.log(worde)
if (worde) {
if (worde.tag) {
var wordList = worde.tag;
@@ -761,9 +724,63 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
});
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
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) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
//日本語じゃない
if (toot.language != lang.language && toot.language) {
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
} else {
var trans = "";
}
@@ -847,11 +864,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="re(\'' + toot.id +
'\',\'' + to_mention + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'\')" 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 + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'</a></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
'\')" class="waves-effect waves-dark btn-flat actct bt-btn" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct">' + toot.reblogs_count +
'</span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + ' ' + qtClass + '"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
@@ -859,18 +876,18 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_quote + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
'<div class="action ' + disp["fav"] + ' ' + noauth + '"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
'\')" class="waves-effect waves-dark btn-flat actct fav-btn" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
if_fav + ' fav_' + toot.id + '"></i><span class="fav_ct">' + toot.favourites_count +
'</a></span></div>' +
'<div class="' + if_mine + ' action ' + disp["del"] + ' ' + noauth + '"><a onclick="del(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
'<div class="' + if_mine + ' action pin ' + disp["pin"] + ' ' + noauth + '"><a onclick="pin(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
+ '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'</div><div class="area-side ' + mouseover + '"><span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" style="max-width:60px;" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">' +
via +
'</span>' + '<div class="action ' + if_mine + ' ' + noauth + '"><a onclick="toggleAction(\'' + toot.id + '\',\'' + tlid + '\',\'' + acct_id + '\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
@@ -897,119 +914,122 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var datetype = localStorage.getItem("datetype");
Object.keys(obj).forEach(function (key) {
var toot = obj[key];
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
M.toast({ html: escapeHTML(toot.display_name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
if (toot) {
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
M.toast({ html: escapeHTML(toot.display_name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
}
}
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name + '</span>' +
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name + '</span>' +
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
});
return templete;
@@ -1030,7 +1050,6 @@ function client(name) {
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
console.log(result)
if (result.dismiss == "cancel") {
//Emp
var cli = localStorage.getItem("client_emp");

View File

@@ -177,12 +177,12 @@ function graphDraw(tag, acct_id) {
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}

View File

@@ -55,7 +55,7 @@ function parseColumn(dontclose) {
var domain = localStorage.getItem("domain_" + key);
if (localStorage.getItem("mode_" + domain) == "misskey") {
localStorage.removeItem("misskey_wss_" + key)
connectMisskey(key)
connectMisskey(key, false)
}
});
}

View File

@@ -70,7 +70,6 @@ if (location.search) {
var mode = m[1];
var codex = m[2];
if (mode == "share") {
console.log(codex);
$('textarea').focus();
$("#textarea").val(decodeURI(codex));
show();
@@ -84,15 +83,20 @@ $('#posttgl').click(function (e) {
} else {
hide();
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});
$("#timeline-container,#group").click(function (e) {
if (localStorage.getItem("box") != "absolute") {
if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) {
hide();
}
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
localStorage.removeItem("nohide")
});
$('#textarea,#cw-text').focusout(function (e) {
@@ -101,4 +105,7 @@ $('#textarea,#cw-text').focusout(function (e) {
localStorage.removeItem("nohide")
}
//setTimeout(remove, 100);
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});

View File

@@ -193,6 +193,9 @@ function udg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
relations(user, acct_id);
$(".only-my-data").hide();
@@ -293,6 +296,9 @@ function misskeyUdg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
if (json.isFollowing) {
//自分がフォローしている
@@ -351,7 +357,6 @@ function relations(user, acct_id) {
console.error(error);
}).then(function (json) {
var json = json[0];
console.log(json);
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
@@ -409,6 +414,12 @@ function profbrws() {
var url = $("#his-openin").attr("data-href")
postMessage(["openUrl", url], "*")
}
function setMain() {
var acct_id = $("#his-data").attr("use-acct")
localStorage.setItem("main", acct_id);
multiSelector(true)
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
//オールリセット
function hisclose() {
$('#his-data').modal('close');
@@ -464,6 +475,7 @@ function reset() {
$("#his-openin").attr("data-href", "");
$("#his-float-timeline").show();
$("#his-float-blocked").hide();
$("#his-main-acct").show();
$("#his-proof-prof").html("")
}
$('#my-data-nav .tab').on('click', function () {

View File

@@ -18,6 +18,27 @@ const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow;
if (process.argv.indexOf("--dev") === -1) {
var packaged = true;
} else {
var packaged = false;
console.log(
"||\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| Am I a \\\\\\\\ \n"+
"|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n"+
"|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n"+
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n"+
"|||| < _ _) ////// | | | | | | __/ |_| | __/\__ \\ < \n"+
"|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n"+
"|||| ///// \n"+
"|||| /////\n"+
"|||| /////\n"+
"||||//////"
)
console.log("Welcome!")
}
var info_path = join(app.getPath("userData"), "window-size.json");
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
var lang_path = join(app.getPath("userData"), "language");
@@ -25,9 +46,9 @@ var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
try {
fs.readFileSync(ha_path, 'utf8');
app.disableHardwareAcceleration()
console.log("disabled: HA");
if(!packaged) console.log("disabled: Hardware Acceleration");
} catch{
console.log("enabled: HA");
if(!packaged) console.log("enabled: Hardware Acceleration");
}
var window_size;
try {
@@ -74,7 +95,6 @@ app.on('activate', function () {
function createWindow() {
if (isFile(lang_path)) {
console.log("exist");
var lang = fs.readFileSync(lang_path, 'utf8');
} else {
var langs = app.getLocale();
@@ -88,8 +108,8 @@ function createWindow() {
fs.writeFileSync(lang_path, lang);
});
}
console.log(app.getLocale());
console.log("launch:" + lang);
if(!packaged) console.log("your lang:" + app.getLocale());
if(!packaged) console.log("launch:" + lang);
// メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform = process.platform;
var bit = process.arch;
@@ -173,11 +193,6 @@ function createWindow() {
var platform = process.platform;
var bit = process.arch;
if (process.argv.indexOf("--dev") === -1) {
packaged = true;
} else {
packaged = false;
}
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir)));
//CSS
css.css(mainWindow);

View File

@@ -53,9 +53,13 @@ function css(mainWindow) {
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
}
if (json.props) {
if (json.props.TheDeskAccent) {
@@ -75,7 +79,7 @@ function css(mainWindow) {
secondary +
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
primary +
";--accentbtn:" + primary + "}.customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
";--accentbtn:" + primary + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}.customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
e.sender.webContents.send('theme-css-response', css);
} catch (e) {
var css = "";

View File

@@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "18.6.6",
"version": "18.7.1",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
@@ -65,9 +65,9 @@
"font-manager": "^0.3.0"
},
"devDependencies": {
"electron": "^5.0.4",
"electron-builder": "^20.44.4",
"readline-sync": "1.4.9"
"electron": "^6.0.0",
"electron-builder": "^21.1.5",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
@@ -116,8 +116,8 @@
]
},
"electronDownload": {
"version": "5.0.1"
"version": "5.0.4"
},
"electronVersion": "5.0.1"
"electronVersion": "5.0.4"
}
}

View File

@@ -36,8 +36,9 @@
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.6.6)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -465,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">Feature on profile</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">Open in browser</a><br>
onclick="profbrws()">Open in browser</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">Set it an main account</a><br>
</div><br>
<div id="his-matching-list">
Get people resembling this user.<br>
@@ -664,7 +667,7 @@
<!-- 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>
<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>
@@ -677,19 +680,21 @@
<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-Usamin_18-6-6" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.6.6)</h5>
設定に関するバグを修正<br>
ブーストのボタンの色を青に変更<br>
テーマごとに「トゥート」ボタンの色が変わる<br>
新テーマ(Blue:渚の花嫁)を追加<br>
トゥート下のアクションボタンのスペースなどを変更<br>
翻訳したときに結果を全て表示するよう変更<br>
knzk.meとbesr-friends.chatをサポートインスタンスから削除
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0。<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正。<br>
タグサジェストがパワーアップ。<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように。<br>
絵文字が入ったURLに関する不具合を修正。<br>
・blurhash非対応インスタンスでのNSFW画像のblurを改修。<br>
・Pleroma等でアカウント情報が無い時があるため、それに関して修正。<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>

View File

@@ -58,7 +58,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Notification test</a><br></template>
@@ -212,7 +212,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -259,7 +259,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -303,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
</div>
</li>
<li>
@@ -439,6 +438,7 @@
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:Select the top & left(No.1 column) toot</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
@@ -457,6 +457,10 @@
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
When a toot is selected:
<li>F:Favourite this toot</li>
<li>B:Boost this toot</li>
<li>R:Reply to this toot</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i

View File

@@ -36,8 +36,9 @@
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.6.6)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -465,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">紹介する</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">ブラウザで開く</a><br>
onclick="profbrws()">ブラウザで開く</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">メインアカウントに設定</a><br>
</div><br>
<div id="his-matching-list">
似ているユーザーを取得できます。<br>
@@ -664,7 +667,7 @@
<!-- 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>
<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>
@@ -677,19 +680,21 @@
<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-Usamin_18-6-6" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.6.6)</h5>
設定に関するバグを修正<br>
ブーストのボタンの色を青に変更<br>
テーマごとに「トゥート」ボタンの色が変わる<br>
新テーマ(Blue:渚の花嫁)を追加<br>
トゥート下のアクションボタンのスペースなどを変更<br>
翻訳したときに結果を全て表示するよう変更<br>
knzk.meとbesr-friends.chatをサポートインスタンスから削除
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0。<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正。<br>
タグサジェストがパワーアップ。<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように。<br>
絵文字が入ったURLに関する不具合を修正。<br>
・blurhash非対応インスタンスでのNSFW画像のblurを改修。<br>
・Pleroma等でアカウント情報が無い時があるため、それに関して修正。<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>

View File

@@ -58,7 +58,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">通知テスト</a><br></template>
@@ -212,7 +212,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -259,7 +259,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -303,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
</div>
</li>
<li>
@@ -439,6 +438,7 @@
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
<li>Alt+Enter:セカンダリートゥートボタン</li>
<li>Ctrl+E:全ての通知を既読にする</li>
<li>Ctrl+U:一番上の一番左のトゥートを選択</li>
<li>Esc:投稿パネルを消す</li>
<li>F5:スーパーリロード</li>
<li>Ctrl+Shift+C:入力内容を消す</li>
@@ -457,6 +457,10 @@
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
選択時
<li>F:お気に入り登録</li>
<li>B:ブースト</li>
<li>R:返信</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i

View File

@@ -36,6 +36,7 @@
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "@@versionLetter@@";
//betaを入れるとバージョンチェックしない
@@ -465,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">@@endorse@@</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">@@openinbrowser@@</a><br>
onclick="profbrws()">@@openinbrowser@@</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">@@mainacct@@</a><br>
</div><br>
<div id="his-matching-list">
@@likeUserDes@@<br>
@@ -664,7 +667,7 @@
<!-- 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>
<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>
@@ -677,19 +680,21 @@
<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-Usamin_18-6-6" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.6.6)</h5>
設定に関するバグを修正<br>
ブーストのボタンの色を青に変更<br>
テーマごとに「トゥート」ボタンの色が変わる<br>
新テーマ(Blue:渚の花嫁)を追加<br>
トゥート下のアクションボタンのスペースなどを変更<br>
翻訳したときに結果を全て表示するよう変更<br>
knzk.meとbesr-friends.chatをサポートインスタンスから削除
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0。<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正。<br>
タグサジェストがパワーアップ。<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように。<br>
絵文字が入ったURLに関する不具合を修正。<br>
・blurhash非対応インスタンスでのNSFW画像のblurを改修。<br>
・Pleroma等でアカウント情報が無い時があるため、それに関して修正。<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>

View File

@@ -88,6 +88,7 @@
"likeHimOrHer":"Resembling",
"endorse":"Feature on profile",
"openinbrowser":"Open in browser",
"mainacct":"Set it an main account",
"frc":"Suggest",
"more":"More",
"revoverJP":" to ",

View File

@@ -89,6 +89,7 @@
"more":"もっと",
"endorse":"紹介する",
"openinbrowser":"ブラウザで開く",
"mainacct":"メインアカウントに設定",
"revoverJP":"する",
"warnUseOtherAcct":"(解除はできません。)",
"revoverJPde":"で",

View File

@@ -1,187 +1,192 @@
{
"setting":"Preferences",
"set":"Save",
"yes":"Yes",
"no":"No",
"none":"None",
"default":"Default",
"change":"Change",
"select":"Select",
"env":"System Preferences",
"setlang":"Languages",
"backup":"Import and export of preferences",
"import":"Import",
"export":"Export",
"hardwareAcceleration":"Disable hardware acceleration",
"hardwareAccelerationWarn":"Auto restarted",
"theme":"Themes",
"popup":"Popup notification(on Windows)",
"popupwarn":"Hide to set \"0\"",
"s":"sec",
"nativenotf":"Native notification",
"nnwarn":"This does not work on Windows Portable ver.",
"nntest":"Notification test",
"minwidth":"Minimum width of columns",
"minwidthwarn":"Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth":"Minimum width of TweetDeck browser",
"fixwidthwarn":"",
"above":"above",
"font":"Font",
"fontwarn":"Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize":"Font size",
"savefolder":"Folder to save",
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute":"absolute value",
"themeSel":"Select theme",
"customtheme":"Edit and add custom themes",
"customthemeDirection":"Color scheme",
"primary":"Background color",
"secondarycolor":"Background of components",
"text":"Text color",
"accent":"Background of boosts",
"add_new":"Add new",
"name":"Name",
"desc":"About this theme",
"customShare":"Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport":"Import of custom themes",
"delete":"Delete",
"cImpWarn":"Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline":"Timeline Preferences",
"timemode":"Time format",
"relativetime":"Relative format:\"1 minutes ago\",\"3 days ago\"",
"absolutetime":"Absolute format:\"23:25:21\",\"2017/12/30 23:59:00\"",
"mixtime":"Mixed format:toots posted today are relative-format, others are absolute-format.",
"relativesel":"Relative",
"absolutesel":"Absolute",
"doublesel":"Both relative and absolute",
"mixsel":"Mixed",
"locale":"Server's unique locale",
"localewarn":"This value is available on some Japanese servers",
"nswf":"Hide NSFW pictures",
"nsfwwarn":"Strong blur effect",
"cw":"Hide CW contents",
"replyct":"Reply counter style",
"replyct_hidden":"Show 1+ if the replies are more than 1.",
"replyct_full":"Show full count(1,2...)",
"gif":"Animated GIF images animation",
"box":"Action of posting-box",
"boxyes":"Folding",
"boxabs":"Absolutely open",
"boxno":"Open after posting",
"tag":"Tag TL Search",
"tagfed":"Use federated network",
"taglocal":"Use local network",
"via":"Show via",
"mouseover":"Hide action buttons without mouseover",
"mouseoverwarn":"You may feel 'mouseover' is unconfortable:(",
"mv":"Mouseover to show",
"mvclick":"Click to show",
"notfmarker":"Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold":"Auto folding",
"autofoldwarn":"TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines":"lines",
"letters":"letters",
"or":"or",
"imgheight":"Height of images",
"imgheightwarn":"Option:Set \"full\" to uncrop.",
"ticker":"Enable #InstanceTicker",
"tickerwarn":"Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation":"Animation of timelines",
"replySound":"Sound(Reply)",
"favSound":"Sound(Fav)",
"btSound":"Sound(Boost)",
"followSound":"Sound(Follow)",
"customSound":"Custom sound",
"post":"Posting Preferences",
"autocw":"Alert before posting a long toot.",
"autocwwarn":"Show dialog whether you make too-long text hidden.",
"defaultcw":"Default warining text",
"cws":"Always CW set",
"defaultvis":"Default visibility",
"public":"Public",
"unlisted":"Unlisted",
"private":"Private",
"direct":"Direct",
"memory":"Memory(memorized as each server)",
"useapi":"Default of your visibility(Set on preferences of Mastodon server)",
"postimg":"Posting images preferences",
"showurl":"Insert media URL",
"nourl":"Insert nothig",
"disabled":"Disabled",
"quote":"Quote format",
"simple":"Only URL",
"mention":"URL and acct(mention to the user)",
"full":"URL, text and acct(mention to the user)",
"notqt":"Disabled(Hide buttons on TLs)",
"main":"Default accounts of actions",
"mainwarn":"Main account can be set on Account Manager.",
"lastacct":"Account you used recently",
"usemainacct":"Main account",
"secondary":"Secondary Toot Button",
"secwarn":"Toot with other visibility setting",
"nothing":"Hidden",
"localonly":"Local Only",
"zeroWidthEmoji":"Zero-width space when inserting emojis",
"keysc":"Keyboard shortcut Preferences",
"iks":"Easy inserter",
"okswarn":"You can insert any letters and emojis with only 3 keys",
"muteemp":"Mute & Emphasis Preferences",
"climute":"Client Mute",
"cliemp":"Client Emphasis",
"cliwarn":"Click client name on toots to toggle mute and emphasis.",
"enter":"Enter to set",
"wordmute":"Words Mute",
"wordemp":"Words Emphasis",
"useremp":"Users Emphasis",
"useerempwarn":"Set on users data modals.",
"empcolorwarn":"Use this color to emphasis",
"spotify":"Spotify and NowPlaying Preferences",
"npProvider":"NowPlaying Provider(Windows)",
"npPeoviderWarn":"macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a> is required. And MusicBee requires CAD.",
"spotifynote1":"Click ",
"spotifynote2":"icon to NowPlaying",
"link":"Account Connection",
"linkwarn":"TheDesk save your data on thedesk.top server.",
"connect":"Connect",
"disconnect":"Disconnect",
"templeteedit":"Edit a template",
"templeteeditwarn":"",
"templete1":"Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
"templete2":"macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}",
"templete3":"Windows:{song}:Song name/{album}:Album name/{artist}:Artist name",
"postartwork":"Attach an Artwork of Spotify",
"tts":"TTS(text to speech) Preferences",
"speed":"Speed",
"speedwarn":"1-100(default:10)",
"pitch":"Pitch",
"pitchwarn":"0-100(default:50)",
"vol":"Volume",
"volwarn":"0-100(default:100)",
"test":"Test",
"sample":"TheDesk is an open-source Mastodon client for PC.",
"playstop":"Play/Stop",
"back":"Back",
"keyscs":"Keyboard shortcuts",
"keyscr":"Jump to n(1-9)th column",
"keynew":"Open toot box",
"keytoggle":"Toggle toot box",
"keypost":"Post",
"keysecpost":"Post(secondary toot)",
"keyunread":"Make all notifications read",
"keyesc":"Hide toot box",
"keyf5":"Super Reload",
"keyclear":"Clear toot box",
"keyacctman":"Account Manager",
"keyshowprof":"Show profile of selecting",
"keyrow":"Show next or previous image",
"keyzoom":"Mousewheel:Zoom a image",
"reset":"Reset(Danger)",
"resetconfirm":"Delete all data. You cannot undo. Continue?",
"about":"About TheDesk",
"hp":"Website",
"support":"Support",
"help":"Help",
"sushi":"Give me a sushi!",
"checkup":"Check update",
"ossJP":""
"setting": "Preferences",
"set": "Save",
"yes": "Yes",
"no": "No",
"none": "None",
"default": "Default",
"change": "Change",
"select": "Select",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"theme": "Themes",
"popup": "Popup notification(on Windows)",
"popupwarn": "Hide to set \"0\"",
"s": "sec",
"nativenotf": "Native notification",
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"minwidth": "Minimum width of columns",
"minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"above": "above",
"font": "Font",
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute": "absolute value",
"themeSel": "Select theme",
"customtheme": "Edit and add custom themes",
"customthemeDirection": "Color scheme",
"primary": "Background color",
"secondarycolor": "Background of components",
"text": "Text color",
"accent": "Background of boosts",
"add_new": "Add new",
"name": "Name",
"desc": "About this theme",
"customShare": "Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport": "Import of custom themes",
"delete": "Delete",
"cImpWarn": "Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
"absolutetime": "Absolute format:\"23:25:21\",\"2017/12/30 23:59:00\"",
"mixtime": "Mixed format:toots posted today are relative-format, others are absolute-format.",
"relativesel": "Relative",
"absolutesel": "Absolute",
"doublesel": "Both relative and absolute",
"mixsel": "Mixed",
"locale": "Server's unique locale",
"localewarn": "This value is available on some Japanese servers",
"nswf": "Hide NSFW pictures",
"nsfwwarn": "Strong blur effect",
"cw": "Hide CW contents",
"replyct": "Reply counter style",
"replyct_hidden": "Show 1+ if the replies are more than 1.",
"replyct_full": "Show full count(1,2...)",
"gif": "Animated GIF images animation",
"box": "Action of posting-box",
"boxyes": "Folding",
"boxabs": "Absolutely open",
"boxno": "Open after posting",
"tag": "Tag TL Search",
"tagfed": "Use federated network",
"taglocal": "Use local network",
"via": "Show via",
"mouseover": "Hide action buttons without mouseover",
"mouseoverwarn": "You may feel 'mouseover' is unconfortable:(",
"mv": "Mouseover to show",
"mvclick": "Click to show",
"notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold": "Auto folding",
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines",
"letters": "letters",
"or": "or",
"imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Animation of timelines",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
"followSound": "Sound(Follow)",
"customSound": "Custom sound",
"post": "Posting Preferences",
"autocw": "Alert before posting a long toot.",
"autocwwarn": "Show dialog whether you make too-long text hidden.",
"defaultcw": "Default warining text",
"cws": "Always CW set",
"defaultvis": "Default visibility",
"public": "Public",
"unlisted": "Unlisted",
"private": "Private",
"direct": "Direct",
"memory": "Memory(memorized as each server)",
"useapi": "Default of your visibility(Set on preferences of Mastodon server)",
"postimg": "Posting images preferences",
"showurl": "Insert media URL",
"nourl": "Insert nothig",
"disabled": "Disabled",
"quote": "Quote format",
"simple": "Only URL",
"mention": "URL and acct(mention to the user)",
"full": "URL, text and acct(mention to the user)",
"notqt": "Disabled(Hide buttons on TLs)",
"main": "Default accounts of actions",
"mainwarn": "Main account can be set on Account Manager.",
"lastacct": "Account you used recently",
"usemainacct": "Main account",
"secondary": "Secondary Toot Button",
"secwarn": "Toot with other visibility setting",
"nothing": "Hidden",
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
"muteemp": "Mute & Emphasis Preferences",
"climute": "Client Mute",
"cliemp": "Client Emphasis",
"cliwarn": "Click client name on toots to toggle mute and emphasis.",
"enter": "Enter to set",
"wordmute": "Words Mute",
"wordemp": "Words Emphasis",
"useremp": "Users Emphasis",
"useerempwarn": "Set on users data modals.",
"empcolorwarn": "Use this color to emphasis",
"spotify": "Spotify and NowPlaying Preferences",
"npProvider": "NowPlaying Provider(Windows)",
"npPeoviderWarn": "macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a> is required. And MusicBee requires CAD.",
"spotifynote1": "Click ",
"spotifynote2": "icon to NowPlaying",
"link": "Account Connection",
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"templeteedit": "Edit a template",
"templeteeditwarn": "",
"templete1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
"templete2": "macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}",
"templete3": "Windows:{song}:Song name/{album}:Album name/{artist}:Artist name",
"postartwork": "Attach an Artwork of Spotify",
"tts": "TTS(text to speech) Preferences",
"speed": "Speed",
"speedwarn": "1-100(default:10)",
"pitch": "Pitch",
"pitchwarn": "0-100(default:50)",
"vol": "Volume",
"volwarn": "0-100(default:100)",
"test": "Test",
"sample": "TheDesk is an open-source Mastodon client for PC.",
"playstop": "Play/Stop",
"back": "Back",
"keyscs": "Keyboard shortcuts",
"keyscr": "Jump to n(1-9)th column",
"keynew": "Open toot box",
"keytoggle": "Toggle toot box",
"keypost": "Post",
"keysecpost": "Post(secondary toot)",
"keyunread": "Make all notifications read",
"keyesc": "Hide toot box",
"keyf5": "Super Reload",
"keyclear": "Clear toot box",
"keyacctman": "Account Manager",
"keyshowprof": "Show profile of selecting",
"keyrow": "Show next or previous image",
"keyzoom": "Mousewheel:Zoom a image",
"whenSelected": "When a toot is selected: ",
"fav": "Favourite this toot",
"bt": "Boost this toot",
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",
"help": "Help",
"sushi": "Give me a sushi!",
"checkup": "Check update",
"ossJP": ""
}

View File

@@ -1,187 +1,192 @@
{
"setting":"設定",
"set":"設定",
"yes":"はい",
"no":"いいえ",
"none":"なし",
"default":"既定",
"change":"変更",
"select":"選択",
"env":"環境設定",
"setlang":"言語",
"backup":"設定のインポートとエクスポート",
"import":"インポート",
"export":"エクスポート",
"hardwareAcceleration":"ハードウェアアクセラレーションの無効化",
"hardwareAccelerationWarn":"表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。",
"theme":"テーマの設定",
"popup":"新規通知のポップアップお知らせの表示秒数",
"popupwarn":"0に設定すると表示されません",
"s":"秒",
"nativenotf":"ネイティブ通知設定",
"nnwarn":"Portableバージョンでは表示できません。",
"nntest":"通知テスト",
"minwidth":"マルチカラムの最低横幅",
"minwidthwarn":"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
"fixwidth":"TweetDeckの限定の最低横幅",
"fixwidthwarn":"",
"above":"以上",
"font":"フォント",
"fontwarn":"「選択」を押してフォントを選んでください。(Linuxでは動きません)",
"fontsize":"フォントサイズ",
"savefolder":"デフォルトの保存先",
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
"absolute":"絶対指定",
"themeSel":"テーマの選択",
"customtheme":"カスタムテーマの作成・編集",
"customthemeDirection":"色の系統",
"primary":"全体の背景色など",
"secondarycolor":"補助要素に使われる背景色",
"text":"テキストの色",
"accent":"ブーストの背景色など",
"add_new":"新規作成",
"name":"名前",
"desc":"説明",
"customShare":"このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href=\"https://thedesk.top/mias.html\" target=\"_blank\">テーマ互換性</a>",
"customImport":"カスタムテーマのインポート",
"delete":"削除",
"cImpWarn":"<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
"timeline":"タイムラインの設定",
"timemode":"時間表記設定",
"relativetime":"相対時間の例:\"1分前\",\"3日前\"",
"absolutetime":"絶対時間の例\"23:25:21\",\"2017年12月30日 23:59:00\"",
"mixtime":"混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ",
"relativesel":"相対時間",
"absolutesel":"絶対時間",
"doublesel":"両方表示",
"mixsel":"混合表示",
"locale":"独自ロケールを使用",
"localewarn":"対応サーバーではそのサーバーにあわせた言語表示ができます。",
"nswf":"非表示設定の画像(NSFW)を隠す",
"nsfwwarn":"きつめのぼかしがかかります。",
"cw":"非表示設定のテキスト(CW)を隠す",
"replyct":"リプライ数表示",
"replyct_hidden":"2以上のとき1+と表示",
"replyct_full":"完全に表示",
"gif":"アイコンのアニメーションを再生する",
"box":"投稿ボックスの挙動",
"boxyes":"たたむ",
"boxabs":"枠外クリックで閉じない(起動時に展開)",
"boxno":"投稿後も隠さない",
"tag":"タグタイムラインの表示範囲",
"tagfed":"接続しているサーバー",
"taglocal":"検索対象のサーバーのみ",
"via":"viaを表示する",
"mouseover":"アクションメニューを非表示",
"mouseoverwarn":"「マウスオーバー」はすこし鬱陶しいと思うかもしれません。",
"mv":"マウスオーバーで表示",
"mvclick":"クリックで表示",
"notfmarker":"通知を開いているとき、通知新着お知らせを表示する",
"autofold":"指定行数以上を折りたたむ",
"autofoldwarn":"5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。",
"lines":"行",
"letters":"文字",
"or":"または",
"imgheight":"画像の高さ",
"imgheightwarn":"オプション:「full」と指定すると全ての画像をクロップしません。",
"ticker":"#InstanceTickerを使う",
"tickerwarn":"トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"animation":"タイムラインのアニメーション",
"replySound":"リプライの通知音",
"favSound":"お気に入り登録の通知音",
"btSound":"ブーストの通知音",
"followSound":"フォローの通知音",
"customSound":"カスタム通知音",
"post":"投稿設定",
"autocw":"長文投稿時に警告",
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
"defaultcw":"デフォルトの警告文",
"cws":"標準でCWを設定",
"defaultvis":"デフォルトの公開設定",
"public":"公開(Public)",
"unlisted":"未収載(Unlisted)",
"private":"非公開(Private)",
"direct":"ダイレクト(Direct)",
"memory":"前回の投稿設定を記憶する(サーバーごとに記憶されます)",
"useapi":"マストドンアカウント設定の既定値",
"postimg":"画像投稿設定",
"showurl":"画像を投稿し、画像のURLを最後に表示",
"nourl":"画像を投稿するがURLは表示しない",
"disabled":"現在利用できません。",
"quote":"引用形式",
"simple":"URLのみ",
"mention":"URLとアカウント名(相手に通知)",
"full":"本文・URL・アカウント名",
"notqt":"使わない(TL上にボタンも表示されません)",
"main":"投稿後や起動時のアカウント",
"mainwarn":"メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。",
"lastacct":"最後に使用したアカウント",
"usemainacct":"メインアカウント",
"secondary":"セカンダリートゥートボタン",
"secwarn":"公開範囲の変更とトゥートを一発でできます。",
"nothing":"表示しない",
"localonly":"ローカル限定",
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
"keysc":"キーボードショートカットの設定",
"iks":"簡単文字入力",
"okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",
"muteemp":"ミュート・強調の設定",
"climute":"クライアントミュート",
"cliemp":"クライアント強調",
"cliwarn":"各トゥートのクライアントをクリックすると設定できます。",
"enter":"Enterで確定",
"wordmute":"ワードミュート",
"wordemp":"ワード強調",
"useremp":"ユーザー強調",
"useerempwarn":"各ユーザーのデータ表示画面で設定できます。",
"empcolorwarn":"強調色(テーマによって異なります。)",
"spotify":"SpotifyとNowPlayingの設定",
"npProvider":"NowPlayingのソース(Windows)",
"npPeoviderWarn":"macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。",
"spotifynote1":"",
"spotifynote2":"ボタンから簡単にNowPlayingができます。",
"link":"アカウントの連携",
"linkwarn":"APIの性質上thedesk.topへアクセスします。",
"connect":"接続",
"disconnect":"切断",
"templeteedit":"テンプレートの編集",
"templeteeditwarn":"以下を編集してテンプレートを変更できます。",
"templete1":"Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL",
"templete2":"macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}",
"templete3":"Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名",
"postartwork":"アルバムアートワークを添付する(Spotify/Windows)",
"tts":"読み上げの設定",
"speed":"読み上げの速さ",
"speedwarn":"1-100まで、デフォルトは10。",
"pitch":"読み上げの高さ",
"pitchwarn":"0-100まで、デフォルトは50。(大きくなるほど高い)",
"vol":"読み上げの音量",
"volwarn":"0-100まで、デフォルトは100。",
"test":"テスト",
"sample":"これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。",
"playstop":"再生/停止",
"back":"戻る",
"keyscs":"キーボードショートカット一覧",
"keyscr":"1番目9番目のTLにスクロール",
"keynew":"投稿パネルを開く",
"keytoggle":"投稿パネルを開閉",
"keypost":"投稿",
"keysecpost":"投稿(セカンダリートゥート)",
"keyunread":"全ての通知を既読にする",
"keyesc":"投稿パネルを消す",
"keyf5":"スーパーリロード",
"keyclear":"入力内容を消す",
"keyacctman":"アカウントマネージャ",
"keyshowprof":"現在選択中のプロフィール",
"keyrow":"イメージビューワー起動時に画像切り替え",
"keyzoom":"マウスホイール:イメージビューワー時に拡大縮小",
"reset":"初期化",
"resetconfirm":"全てのデータを削除します。この操作は取り消せません。",
"about":"このソフトについて",
"hp":"公式HP",
"support":"支援",
"help":"ヘルプ",
"sushi":"寿司を投げる",
"checkup":"アップデートを確認",
"ossJP":"(オープンソースライセンス)"
}
"setting": "設定",
"set": "設定",
"yes": "はい",
"no": "いいえ",
"none": "なし",
"default": "既定",
"change": "変更",
"select": "選択",
"env": "環境設定",
"setlang": "言語",
"backup": "設定のインポートとエクスポート",
"import": "インポート",
"export": "エクスポート",
"hardwareAcceleration": "ハードウェアアクセラレーションの無効化",
"hardwareAccelerationWarn": "表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。",
"theme": "テーマの設定",
"popup": "新規通知のポップアップお知らせの表示秒数",
"popupwarn": "0に設定すると表示されません",
"s": "秒",
"nativenotf": "ネイティブ通知設定",
"nnwarn": "Portableバージョンでは表示できません。",
"nntest": "通知テスト",
"minwidth": "マルチカラムの最低横幅",
"minwidthwarn": "画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
"fixwidth": "TweetDeckの限定の最低横幅",
"fixwidthwarn": "",
"above": "以上",
"font": "フォント",
"fontwarn": "「選択」を押してフォントを選んでください。(Linuxでは動きません)",
"fontsize": "フォントサイズ",
"savefolder": "デフォルトの保存先",
"savefolderwarn": "画像ダウンロードやスクリーンショットに影響します。",
"absolute": "絶対指定",
"themeSel": "テーマの選択",
"customtheme": "カスタムテーマの作成・編集",
"customthemeDirection": "色の系統",
"primary": "全体の背景色など",
"secondarycolor": "補助要素に使われる背景色",
"text": "テキストの色",
"accent": "ブーストの背景色など",
"add_new": "新規作成",
"name": "名前",
"desc": "説明",
"customShare": "このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href=\"https://thedesk.top/mias.html\" target=\"_blank\">テーマ互換性</a>",
"customImport": "カスタムテーマのインポート",
"delete": "削除",
"cImpWarn": "<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
"timeline": "タイムラインの設定",
"timemode": "時間表記設定",
"relativetime": "相対時間の例:\"1分前\",\"3日前\"",
"absolutetime": "絶対時間の例\"23:25:21\",\"2017年12月30日 23:59:00\"",
"mixtime": "混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ",
"relativesel": "相対時間",
"absolutesel": "絶対時間",
"doublesel": "両方表示",
"mixsel": "混合表示",
"locale": "独自ロケールを使用",
"localewarn": "対応サーバーではそのサーバーにあわせた言語表示ができます。",
"nswf": "非表示設定の画像(NSFW)を隠す",
"nsfwwarn": "きつめのぼかしがかかります。",
"cw": "非表示設定のテキスト(CW)を隠す",
"replyct": "リプライ数表示",
"replyct_hidden": "2以上のとき1+と表示",
"replyct_full": "完全に表示",
"gif": "アイコンのアニメーションを再生する",
"box": "投稿ボックスの挙動",
"boxyes": "たたむ",
"boxabs": "枠外クリックで閉じない(起動時に展開)",
"boxno": "投稿後も隠さない",
"tag": "タグタイムラインの表示範囲",
"tagfed": "接続しているサーバー",
"taglocal": "検索対象のサーバーのみ",
"via": "viaを表示する",
"mouseover": "アクションメニューを非表示",
"mouseoverwarn": "「マウスオーバー」はすこし鬱陶しいと思うかもしれません。",
"mv": "マウスオーバーで表示",
"mvclick": "クリックで表示",
"notfmarker": "通知を開いているとき、通知新着お知らせを表示する",
"autofold": "指定行数以上を折りたたむ",
"autofoldwarn": "5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。",
"lines": "行",
"letters": "文字",
"or": "または",
"imgheight": "画像の高さ",
"imgheightwarn": "オプション:「full」と指定すると全ての画像をクロップしません。",
"ticker": "#InstanceTickerを使う",
"tickerwarn": "トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"animation": "タイムラインのアニメーション",
"replySound": "リプライの通知音",
"favSound": "お気に入り登録の通知音",
"btSound": "ブーストの通知音",
"followSound": "フォローの通知音",
"customSound": "カスタム通知音",
"post": "投稿設定",
"autocw": "長文投稿時に警告",
"autocwwarn": "下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
"defaultcw": "デフォルトの警告文",
"cws": "標準でCWを設定",
"defaultvis": "デフォルトの公開設定",
"public": "公開(Public)",
"unlisted": "未収載(Unlisted)",
"private": "非公開(Private)",
"direct": "ダイレクト(Direct)",
"memory": "前回の投稿設定を記憶する(サーバーごとに記憶されます)",
"useapi": "マストドンアカウント設定の既定値",
"postimg": "画像投稿設定",
"showurl": "画像を投稿し、画像のURLを最後に表示",
"nourl": "画像を投稿するがURLは表示しない",
"disabled": "現在利用できません。",
"quote": "引用形式",
"simple": "URLのみ",
"mention": "URLとアカウント名(相手に通知)",
"full": "本文・URL・アカウント名",
"notqt": "使わない(TL上にボタンも表示されません)",
"main": "投稿後や起動時のアカウント",
"mainwarn": "メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。",
"lastacct": "最後に使用したアカウント",
"usemainacct": "メインアカウント",
"secondary": "セカンダリートゥートボタン",
"secwarn": "公開範囲の変更とトゥートを一発でできます。",
"nothing": "表示しない",
"localonly": "ローカル限定",
"zeroWidthEmoji": "絵文字にゼロ幅スペースを使う",
"keysc": "キーボードショートカットの設定",
"iks": "簡単文字入力",
"okswarn": "絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",
"muteemp": "ミュート・強調の設定",
"climute": "クライアントミュート",
"cliemp": "クライアント強調",
"cliwarn": "各トゥートのクライアントをクリックすると設定できます。",
"enter": "Enterで確定",
"wordmute": "ワードミュート",
"wordemp": "ワード強調",
"useremp": "ユーザー強調",
"useerempwarn": "各ユーザーのデータ表示画面で設定できます。",
"empcolorwarn": "強調色(テーマによって異なります。)",
"spotify": "SpotifyとNowPlayingの設定",
"npProvider": "NowPlayingのソース(Windows)",
"npPeoviderWarn": "macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。",
"spotifynote1": "",
"spotifynote2": "ボタンから簡単にNowPlayingができます。",
"link": "アカウントの連携",
"linkwarn": "APIの性質上thedesk.topへアクセスします。",
"connect": "接続",
"disconnect": "切断",
"templeteedit": "テンプレートの編集",
"templeteeditwarn": "以下を編集してテンプレートを変更できます。",
"templete1": "Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL",
"templete2": "macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}",
"templete3": "Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名",
"postartwork": "アルバムアートワークを添付する(Spotify/Windows)",
"tts": "読み上げの設定",
"speed": "読み上げの速さ",
"speedwarn": "1-100まで、デフォルトは10。",
"pitch": "読み上げの高さ",
"pitchwarn": "0-100まで、デフォルトは50。(大きくなるほど高い)",
"vol": "読み上げの音量",
"volwarn": "0-100まで、デフォルトは100。",
"test": "テスト",
"sample": "これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。",
"playstop": "再生/停止",
"back": "戻る",
"keyscs": "キーボードショートカット一覧",
"keyscr": "1番目9番目のTLにスクロール",
"keynew": "投稿パネルを開く",
"keytoggle": "投稿パネルを開閉",
"keypost": "投稿",
"keysecpost": "投稿(セカンダリートゥート)",
"keyunread": "全ての通知を既読にする",
"keyesc": "投稿パネルを消す",
"keyf5": "スーパーリロード",
"keyclear": "入力内容を消す",
"keyacctman": "アカウントマネージャ",
"keyshowprof": "現在選択中のプロフィール",
"keyrow": "イメージビューワー起動時に画像切り替え",
"keyzoom": "マウスホイール:イメージビューワー時に拡大縮小",
"whenSelected": "選択時",
"fav": "お気に入り登録",
"bt": "ブースト",
"reply": "返信",
"keyselecttop":"一番上の一番左のトゥートを選択",
"reset": "初期化",
"resetconfirm": "全てのデータを削除します。この操作は取り消せません。",
"about": "このソフトについて",
"hp": "公式HP",
"support": "支援",
"help": "ヘルプ",
"sushi": "寿司を投げる",
"checkup": "アップデートを確認",
"ossJP": "(オープンソースライセンス)"
}

View File

@@ -2,7 +2,7 @@ const fs = require("fs")
const readlineSync = require('readline-sync');
let ver = readlineSync.question('version string (empty: default string)? ');
if (!ver) {
ver = "Usamin (18.6.6)"
ver = "Usamin (18.7.1)"
}
console.log("Constructing view files " + ver + ": make sure to update package.json")
const langs = ["ja", "en", "ps"]

View File

@@ -58,7 +58,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">@@nntest@@</a><br></template>
@@ -212,7 +212,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -259,7 +259,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -303,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
</div>
</li>
<li>
@@ -439,6 +438,7 @@
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
<li>Alt+Enter:@@secondary@@</li>
<li>Ctrl+E:@@keyunread@@</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:@@keyesc@@</li>
<li>F5:@@keyf5@@</li>
<li>Ctrl+Shift+C:@@keyclear@@</li>
@@ -457,6 +457,10 @@
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i

View File

@@ -36,8 +36,9 @@
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.6.6)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -465,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">crwdns454:0crwdne454:0</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">crwdns455:0crwdne455:0</a><br>
onclick="profbrws()">crwdns455:0crwdne455:0</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">@@mainacct@@</a><br>
</div><br>
<div id="his-matching-list">
crwdns469:0crwdne469:0<br>
@@ -664,7 +667,7 @@
<!-- 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>
<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">crwdns385:0crwdne385:0</a>
@@ -677,19 +680,21 @@
<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-Usamin_18-6-6" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.6.6)</h5>
設定に関するバグを修正<br>
ブーストのボタンの色を青に変更<br>
テーマごとに「トゥート」ボタンの色が変わる<br>
新テーマ(Blue:渚の花嫁)を追加<br>
トゥート下のアクションボタンのスペースなどを変更<br>
翻訳したときに結果を全て表示するよう変更<br>
knzk.meとbesr-friends.chatをサポートインスタンスから削除
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0。<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正。<br>
タグサジェストがパワーアップ。<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように。<br>
絵文字が入ったURLに関する不具合を修正。<br>
・blurhash非対応インスタンスでのNSFW画像のblurを改修。<br>
・Pleroma等でアカウント情報が無い時があるため、それに関して修正。<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>

View File

@@ -58,7 +58,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">crwdns540:0crwdne540:0</a><br></template>
@@ -212,7 +212,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -259,7 +259,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<template v-html="item.text.desc"></template><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -303,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
</div>
</li>
<li>
@@ -439,6 +438,7 @@
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:crwdns653:0crwdne653:0</li>
<li>F5:crwdns654:0crwdne654:0</li>
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
@@ -457,6 +457,10 @@
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i