" +
"" +
"");
out.write(toThemeImg("debug"));
@@ -1703,10 +1703,10 @@ public class I2PSnarkServlet extends BasicServlet {
out.write("" +
"");
- out.write(statusString + " \n\t");
+ out.write(statusString);
// (i) icon column
- out.write("");
+ out.write(" \n");
if (isValid) {
String announce = meta.getAnnounce();
if (announce == null)
@@ -1747,6 +1747,21 @@ public class I2PSnarkServlet extends BasicServlet {
out.write(toImg(icon));
}
+ // Comment icon column
+ out.write(" \n");
// No need for javascript here.. css now handles this
@@ -1912,7 +1927,7 @@ public class I2PSnarkServlet extends BasicServlet {
continue;
out.write(" ");
+ out.write("\"> ");
PeerID pid = peer.getPeerID();
String ch = pid != null ? pid.toString().substring(0, 4) : "????";
String client;
@@ -2010,7 +2025,7 @@ public class I2PSnarkServlet extends BasicServlet {
" " +
" \n\t");
if (showDebug)
- out.write("" + peer.getSocket() + " ");
+ out.write("" + peer.getSocket() + " ");
}
}
}
diff --git a/history.txt b/history.txt
index ebc4ff7ae..60ad2252c 100644
--- a/history.txt
+++ b/history.txt
@@ -1,5 +1,7 @@
2018-07-08 zzz
+ * i2psnark: Add comment icon (ticket #2278)
* NTCP2: Avoid possible NPEs (ticket #2286)
+ * Transport: More efficient caching (ticket #2263)
2018-07-06 zzz
* NTCP: Read all available data when able (ticket #2243)
diff --git a/installer/resources/themes/snark/classic/snark.css b/installer/resources/themes/snark/classic/snark.css
index ec0eac39e..a5cfa0141 100644
--- a/installer/resources/themes/snark/classic/snark.css
+++ b/installer/resources/themes/snark/classic/snark.css
@@ -335,7 +335,7 @@ body.iframed {
margin-top: -1px !important;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -343,13 +343,14 @@ body.iframed {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
padding: 3px !important;
border: 1px solid transparent !important;
}
.snarkTrackerDetails a:hover img, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails a:focus img,
.snarkDirInfo td:first-child a:hover img, .snarkDirInfo td:first-child a:focus img {
border: 1px solid #f60 !important;
border-radius: 2px;
@@ -358,7 +359,7 @@ body.iframed {
filter: none !important;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:first-child a:active img {
box-shadow: inset 2px 2px 2px #337;
transform: scale(0.9);
}
@@ -2842,7 +2843,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img,
color: transparent !important;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
padding-left: 10px !important;
padding-right: 5px !important;
}
diff --git a/installer/resources/themes/snark/dark/snark.css b/installer/resources/themes/snark/dark/snark.css
index c013be573..d4abc4d4e 100644
--- a/installer/resources/themes/snark/dark/snark.css
+++ b/installer/resources/themes/snark/dark/snark.css
@@ -459,7 +459,7 @@ tfoot th {
font-size: 8pt !important;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -467,7 +467,7 @@ tfoot th {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
padding: 3px !important;
border: 1px solid transparent !important;
margin: 0 !important;
@@ -484,6 +484,7 @@ tfoot th {
.snarkTrackerDetails a:hover img, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails a:focus img,
.snarkDirInfo td:first-child a:hover img, .snarkDirInfo td:first-child a:focus img {
border: 1px solid #f60 !important;
border-radius: 2px;
@@ -493,7 +494,7 @@ tfoot th {
filter: none !important;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:first-child a:active img {
border: 1px solid #f90 !important;
box-shadow: inset 2px 2px 3px 3px #000;
transform: scale(0.9);
@@ -2882,7 +2883,7 @@ textarea[name="i2cpOpts"] {
margin: 1px 2px !important;
}
-.snarkTrackerDetails, .SnarkTorrentDetails {
+.snarkTrackerDetails, .SnarkTorrentDetails, .snarkCommentDetails {
width: 1% !important;
}
@@ -3009,7 +3010,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img,
padding: 1px 0;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
padding-left: 8px;
}
@@ -3023,7 +3024,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img,
color: transparent !important;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
padding-left: 3px !important;
}
diff --git a/installer/resources/themes/snark/light/snark.css b/installer/resources/themes/snark/light/snark.css
index 0fa17b469..7906cdd19 100644
--- a/installer/resources/themes/snark/light/snark.css
+++ b/installer/resources/themes/snark/light/snark.css
@@ -487,7 +487,11 @@ tfoot th {
text-align: left;
}
-.snarkTorrents thead th:nth-child(3), .snarkTorrents thead th:nth-child(7) {
+.snarkTorrents thead th:nth-child(3) {
+ text-align: center !important;
+}
+
+.snarkTorrents thead th:nth-child(7) {
text-align: right !important;
}
@@ -553,7 +557,7 @@ th.snarkGraphicStatus, th.snarkTorrentStatus {
color: #f60;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -561,7 +565,7 @@ th.snarkGraphicStatus, th.snarkTorrentStatus {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
margin: 0;
padding: 3px !important;
max-width: 16px;
@@ -571,6 +575,7 @@ th.snarkGraphicStatus, th.snarkTorrentStatus {
.snarkTrackerDetails a:hover img, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails a:focus img,
.snarkDirInfo td:first-child a:hover img, .snarkDirInfo td:first-child a:focus img {
border: 1px solid #f60 !important;
border-radius: 2px;
@@ -580,7 +585,7 @@ th.snarkGraphicStatus, th.snarkTorrentStatus {
mix-blend-mode: normal;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:first-child a:active img {
box-shadow: inset 2px 2px 2px #99f;
transform: scale(0.9);
}
@@ -2382,7 +2387,7 @@ _:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a:
display: none;
}
-.snarkGraphicStatus img, .snarkTrackerDetails img, .snarkTorrentDetails img {
+.snarkGraphicStatus img, .snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img {
max-height: 14px !important;
width: auto;
}
diff --git a/installer/resources/themes/snark/midnight/snark.css b/installer/resources/themes/snark/midnight/snark.css
index c28f056e7..64c7a6464 100644
--- a/installer/resources/themes/snark/midnight/snark.css
+++ b/installer/resources/themes/snark/midnight/snark.css
@@ -410,7 +410,7 @@ tfoot tr:nth-child(n+1) {
}
.snarkTorrents thead th:nth-child(3) {
- text-align: right;
+ text-align: center;
}
.snarkTorrents th:empty + th:empty, .snarkTorrents td:empty + td:empty, .snarkTorrents th:last-child:empty, .snarkTorrents td:last-child:empty {
@@ -494,7 +494,7 @@ th.snarkTorrentStatus {
text-align: center !important;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -502,7 +502,7 @@ th.snarkTorrentStatus {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
padding: 3px !important;
border: 1px solid transparent !important;
margin: 0 !important;
@@ -514,6 +514,7 @@ th.snarkTorrentStatus {
.snarkTrackerDetails a:hover img, .snarkTrackerDetails img:hover, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails img:hover, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails img:hover, .snarkCommentDetails a:focus img,
.snarkDirInfo td:first-child a:hover img, .snarkDirInfo td:first-child a:focus img {
border: 1px solid #652787 !important;
border-radius: 2px;
@@ -523,7 +524,7 @@ th.snarkTorrentStatus {
filter: none !important;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:first-child a:active img {
border: 1px solid #f90 !important;
box-shadow: inset 2px 2px 3px 3px #000;
transform: scale(0.9);
diff --git a/installer/resources/themes/snark/ubergine/snark.css b/installer/resources/themes/snark/ubergine/snark.css
index 22a8ded50..031928cd7 100644
--- a/installer/resources/themes/snark/ubergine/snark.css
+++ b/installer/resources/themes/snark/ubergine/snark.css
@@ -478,7 +478,7 @@ th.snarkTorrentStatus {
margin-right: 3px !important;
}
-.snarkTrackerDetails, .SnarkTorrentDetails {
+.snarkTrackerDetails, .SnarkTorrentDetails, .snarkCommentDetails {
width: 1%;
padding: 2px 0;
}
@@ -656,7 +656,7 @@ td:first-child {
opacity: 1;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -664,7 +664,7 @@ td:first-child {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
padding: 3px !important;
margin: 0 1px !important;
width: 16px;
@@ -674,6 +674,7 @@ td:first-child {
.snarkTrackerDetails a:hover img, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails a:focus img,
.snarkDirInfo td:not(.parentdir):first-child a:hover img, .snarkDirInfo td:not(.parentdir):first-child a:focus img {
border: 1px solid #f60 !important;
border-radius: 2px;
@@ -683,7 +684,7 @@ td:first-child {
filter: none !important;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:not(.parentdir):first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:not(.parentdir):first-child a:active img {
border: 1px solid #212 !important;
box-shadow: inset 3px 3px 2px 1px #202;
background: #414;
@@ -3231,7 +3232,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img,
max-width: 18px;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
width: 34px !important;
text-align: right !important;
padding-right: 0 !important;
@@ -3249,7 +3250,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img,
display: none !important;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
padding-left: 8px;
}
diff --git a/installer/resources/themes/snark/vanilla/snark.css b/installer/resources/themes/snark/vanilla/snark.css
index 033858ab4..8021707f3 100644
--- a/installer/resources/themes/snark/vanilla/snark.css
+++ b/installer/resources/themes/snark/vanilla/snark.css
@@ -545,7 +545,7 @@ tfoot tr:first-child th {
}
.snarkTorrents thead th:nth-child(3) {
- text-align: right;
+ text-align: center;
padding-right: 0;
}
@@ -591,7 +591,7 @@ th.snarkTorrentStatus {
line-height: 110%;
}
-.snarkTrackerDetails, .snarkTorrentDetails {
+.snarkTrackerDetails, .snarkTorrentDetails, .snarkCommentDetails {
width: 16px !important;
text-align: center !important;
font-weight: bold;
@@ -599,7 +599,7 @@ th.snarkTorrentStatus {
padding-right: 0 !important;
}
-.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkDirInfo td:first-child img {
+.snarkTrackerDetails img, .snarkTorrentDetails img, .snarkCommentDetails img, .snarkDirInfo td:first-child img {
padding: 3px !important;
border: 1px solid transparent !important;
margin: 0 !important;
@@ -611,6 +611,7 @@ th.snarkTorrentStatus {
.snarkTrackerDetails a:hover img, .snarkTrackerDetails a:focus img,
.snarkTorrentDetails a:hover img, .snarkTorrentDetails a:focus img,
+.snarkCommentDetails a:hover img, .snarkCommentDetails a:focus img,
.snarkDirInfo td:first-child a:hover img, .snarkDirInfo td:first-child a:focus img {
border: 1px solid #f60 !important;
border-radius: 2px;
@@ -620,7 +621,7 @@ th.snarkTorrentStatus {
filter: none !important;
}
-.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkDirInfo td:first-child a:active img {
+.snarkTrackerDetails a:active img, .snarkTorrentDetails a:active img, .snarkCommentDetails a:active img, .snarkDirInfo td:first-child a:active img {
box-shadow: inset 2px 2px 3px 1px #59513b;
transform: scale(0.9);
transition: none !important;
@@ -3120,7 +3121,7 @@ th.snarkTorrentStatus a img, .snarkTorrentETA a img, .snarkTrackerDetails a img
padding: 0;
}
-.snarkTorrentDetails {
+.snarkCommentDetails {
padding-left: 5px !important;
padding-right: 0 !important;
}
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index c10128fe6..fecba78d6 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 6;
+ public final static long BUILD = 7;
/** for example "-test" */
public final static String EXTRA = "";