mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-04-26 15:18:01 +00:00
deploy: da5012d6ac
This commit is contained in:
@@ -209,8 +209,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -249,6 +248,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -217,8 +217,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -257,6 +256,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -221,8 +221,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -261,6 +260,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -216,8 +216,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -256,6 +255,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -230,8 +230,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -270,6 +269,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -228,8 +228,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -268,6 +267,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -246,8 +246,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -286,6 +285,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -287,8 +287,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -327,6 +326,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -222,8 +222,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -262,6 +261,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -209,8 +209,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -249,6 +248,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -227,8 +227,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -267,6 +266,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
<li><a href="#protocol-privacy-and-performance-improvements">protocol privacy and performance improvements</a></li>
|
||||
</ul>
|
||||
<h3>Instant notifications for iOS</h3>
|
||||
<p>I wrote previously about <a href="./20220404-simplex-chat-instant-notifications.md#problem---users-expect-to-be-instantly-notified-when-messages-arrive!">our design for iOS notifications</a> - this is now released. The app will offer to migrate the database when updated, and then you need to choose notifications mode – instant or periodic push notifications, or previously available periodic background refresh that does not use push notifications.</p>
|
||||
<p>I wrote previously about <a href="./20220404-simplex-chat-instant-notifications.md#problem---users-expect-to-be-instantly-notified-when-messages-arrive">our design for iOS notifications</a> - this is now released. The app will offer to migrate the database when updated, and then you need to choose notifications mode – instant or periodic push notifications, or previously available periodic background refresh that does not use push notifications.</p>
|
||||
<p>To deliver the notifications to iOS devices we use our notification server, as there is a single private key that Apple issues for the app. This server has minimal amount of information about your chat activity:</p>
|
||||
<ul>
|
||||
<li>it does not have the addresses of messaging queues used to send and receive messages - there is an additional address used for notification server to receive notifications from the messaging servers.</li>
|
||||
@@ -260,8 +260,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -300,6 +299,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -158,8 +158,8 @@
|
||||
<p><strong>Published:</strong> Jul 23, 2022</p>
|
||||
<h2>What's new</h2>
|
||||
<ul>
|
||||
<li>terminal app: <a href="#terminall-app:-access-to-messaging-servers-via-socks5-proxy-/-tor">access to messaging servers via SOCKS5 proxy</a> (e.g., Tor).</li>
|
||||
<li>mobile apps: <a href="#mobile-apps:-join-and-leave-chat-groups">join and leave chat groups</a>.</li>
|
||||
<li>terminal app: <a href="#terminall-app-access-to-messaging-servers-via-socks5-proxy--tor">access to messaging servers via SOCKS5 proxy</a> (e.g., Tor).</li>
|
||||
<li>mobile apps: <a href="#mobile-apps-join-and-leave-chat-groups">join and leave chat groups</a>.</li>
|
||||
<li><a href="#optimized-battery-and-traffic-usage---up-to-90x-reduction">optimized battery and traffic usage - up to 90x reduction!</a>.</li>
|
||||
<li><a href="#docker-configuration-for-self-hosted-smp-servers">two docker configurations for self-hosted SMP servers</a>.</li>
|
||||
</ul>
|
||||
@@ -196,7 +196,7 @@
|
||||
<h2>SimpleX platform</h2>
|
||||
<p>We are building a new platform for distributed Internet applications where privacy of the messages <em>and</em> the network matter. <a href="https://github.com/simplex-chat/simplex-chat">SimpleX Chat</a> is our first application, a messaging application built on the SimpleX platform.</p>
|
||||
<h3>The first (and the only?) messaging platform without user identifiers of any kind - 100% private by design!</h3>
|
||||
<p>To protect identities of users and their connections, instead of user identifiers visible to the servers and/or the network (that are used by all other messaging platforms), SimpleX Chat uses <a href="https://csrc.nist.gov/glossary/term/Pairwise_Pseudonymous_Identifier">pairwise identifiers</a> of connections between the users – there are two queues in each connection, each queue having 2 different identifiers to send and to receive the messages. It increases the number of used identifiers to the square of the number of users, making it more difficult (or impossible) to determine who is talking to whom. I <a href="./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users'-identifiers-is-bad-for-the-users?">wrote previously</a> why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.</p>
|
||||
<p>To protect identities of users and their connections, instead of user identifiers visible to the servers and/or the network (that are used by all other messaging platforms), SimpleX Chat uses <a href="https://csrc.nist.gov/glossary/term/Pairwise_Pseudonymous_Identifier">pairwise identifiers</a> of connections between the users – there are two queues in each connection, each queue having 2 different identifiers to send and to receive the messages. It increases the number of used identifiers to the square of the number of users, making it more difficult (or impossible) to determine who is talking to whom. I <a href="./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users-identifiers-is-bad-for-the-users">wrote previously</a> why it is bad for the users' privacy to have any identifiers, even random numbers, associated with their profiles.</p>
|
||||
<h3>If SimpleX has no user identifiers, how can it deliver messages?</h3>
|
||||
<p>I wrote about it in <a href="./20220511-simplex-chat-v2-images-files.md">v2 release announcement</a> and you can get more information about SimpleX platform objectives and technical design in <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md">the whitepaper</a>.</p>
|
||||
<h3>Privacy: technical details and limitations</h3>
|
||||
@@ -277,8 +277,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -317,6 +316,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -207,8 +207,8 @@
|
||||
<h2>SimpleX platform</h2>
|
||||
<p>Some links to answer the most common questions:</p>
|
||||
<p><a href="./20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers">How can SimpleX deliver messages without user identifiers</a>.</p>
|
||||
<p><a href="./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users'-identifiers-is-bad-for-the-users?">What are the risks to have identifiers assigned to the users</a>.</p>
|
||||
<p><a href="./20220723-simplex-chat-v3.1-tor-groups-efficiency.md#privacy:-technical-details-and-limitations">Technical details and limitations</a>.</p>
|
||||
<p><a href="./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users-identifiers-is-bad-for-the-users">What are the risks to have identifiers assigned to the users</a>.</p>
|
||||
<p><a href="./20220723-simplex-chat-v3.1-tor-groups-efficiency.md#privacy-technical-details-and-limitations">Technical details and limitations</a>.</p>
|
||||
<p><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/README.md#frequently-asked-questions">How SimpleX is different from Session, Matrix, Signal, etc.</a>.</p>
|
||||
<h2>We ask you to help us pay for 3rd party security audit</h2>
|
||||
<p>I will get straight to the point: I ask you to support SimpleX Chat with donations.</p>
|
||||
@@ -271,8 +271,7 @@
|
||||
top: y,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
window.open(e.target.href, "_self");
|
||||
}
|
||||
}
|
||||
@@ -311,6 +310,18 @@
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
document.querySelectorAll("[id]").forEach((element) => {
|
||||
let str = element.getAttribute("id");
|
||||
str = str.split(":").join("");
|
||||
str = str.split("?").join("");
|
||||
str = str.split("/").join("");
|
||||
str = str.split("!").join("");
|
||||
str = str.split("'").join("");
|
||||
|
||||
element.setAttribute("id", str);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user