diff --git a/.gitignore b/.gitignore index 3c3629e6..cb13ed44 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ node_modules +/Backup +*.suo +/UpgradeLog.htm +/.bin +/packages +/packages.config +/.nuget \ No newline at end of file diff --git a/CHANGELOG.txt b/CHANGELOG.txt index b5f0bc1a..432a8f03 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -28,6 +28,11 @@ END USER NOTES: Here is a signed list of file names and version history. +2015-07-05: status ACTIVE +bitaddress.org-v2.9.9-SHA256-90ddaf250f6302acb53945128e38225208af5a2fa7cfdf51519213e8b144a76d.html + - improve tab usability. You can now get to the Brain Wallet and Wallet Details tabs before + completing the entropy collection. + 2015-01-08: status ACTIVE bitaddress.org-v2.9.8-SHA256-2c5d16dbcde600147162172090d940fd9646981b7d751d9bddfc5ef383f89308.html - fix French translations. Escape quotes. diff --git a/CHANGELOG.txt.asc b/CHANGELOG.txt.asc index a3baf21e..ac007f9d 100644 --- a/CHANGELOG.txt.asc +++ b/CHANGELOG.txt.asc @@ -31,6 +31,11 @@ END USER NOTES: Here is a signed list of file names and version history. +2015-07-05: status ACTIVE +bitaddress.org-v2.9.9-SHA256-90ddaf250f6302acb53945128e38225208af5a2fa7cfdf51519213e8b144a76d.html + - improve tab usability. You can now get to the Brain Wallet and Wallet Details tabs before + completing the entropy collection. + 2015-01-08: status ACTIVE bitaddress.org-v2.9.8-SHA256-2c5d16dbcde600147162172090d940fd9646981b7d751d9bddfc5ef383f89308.html - fix French translations. Escape quotes. @@ -281,13 +286,13 @@ bitaddress.org-v0.2-SHA1-71216f5b84ef8831a805dbf66e9d8b83ad1dc5fb.html bitaddress.org-v0.1-SHA1-f40e706490f3eb2be56c31ddbf4c8646cd51ef40.html -Initial release -----BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iQEcBAEBAgAGBQJUrwa4AAoJEIdJe5Fjl09aTTYIAN1iXh9fuU2bqJlhTXtGPeOs -sh71P+huEKJyCYfGhnZ0/dlRjnhHBgMnP3vS+N0S9CThlTHtytUoQAA1xX6crzMq -OxRf22AHuo23NpARjGvpghD0z6V9s7wrWTNs/JULvdtqPVt4XPf1+koruZSA5aMo -3tnhKQ0/V9ieVxqd+vf2kD6HJO9kDKIJtqFyqA1k7O4oL9yEOPKYR6pqtVM8bv2I -rEnNjQV5JI1bZL0WNfajnRO+EGF4IA7ReD1PMFrsuUMwiOMH+A/M3P06xQgXaB+G -Q+gUWjklP131sfmoOLRrxACvQyUifpcIbJ87PE2LWhaGjuLpHxGQIPFFUJB/WX0= -=WE3G +Version: GnuPG v1.4.13 (MingW32) + +iQEcBAEBAgAGBQJVmZugAAoJEIdJe5Fjl09am+oIAL8vKSLNPrdj0QOG9k3swdcq +Ycgpx8wEfH1B2CL24WakG8k6SNdvHUH/nqP8zr1gQm6bp0gLCUDFV82uhDbJ5NLt +QXK1HK09gZylvLJcuGUPbyd+jFR+h6047mM27T1k98uf7AWd2vq6qLQjyEIhQg21 +FJCbKiZUokR7gjtSapd7VdyXDzD3lRRah6PrHkHooX8U3AKOQoJQUVe+pboxEaEP +bP/VtSggzOvQSSUzey48snfJM1RSUYn/zdNthNRnwzvSEM8bjO7nVyW3SRyr/BYo +GZ0s6PswndsX+Q+/qjTLgAu5CQdM/dIjjEikecpUT1qiUXfjgGVTg7Lm1LImx+8= +=Uixh -----END PGP SIGNATURE----- diff --git a/bitaddress.org.html b/bitaddress.org.html index cf220498..3a2e124a 100644 --- a/bitaddress.org.html +++ b/bitaddress.org.html @@ -6474,24 +6474,28 @@ .commands .row { padding: 0 0; text-align: left; } .commands .row.extra { padding-top: 6px; } .commands span { padding: 0 10px; } - .commands span.print { float: right; } + .commands span.print { float: right; position: relative; z-index: 20; } .commands span.right { float: right; } .expandable { padding: 10px 15px; text-align: left; cursor: pointer; } - #menu { visibility: hidden; font-size: 90%; } + #menu { visibility: visible; font-size: 90%; } #culturemenu { text-align: center; padding: 0 10px 5px 10px; margin-bottom: 3px; font-size: 90%; } #culturemenu span { padding: 3px; } #culturemenu .selected { text-decoration: none; color: #000000; } #braincommands .row .label { width: 200px; display: inline-block; } #braincommands .notes { font-size: 80%; display: block; padding: 5px 10px; } - #brainpassphrase { width: 280px; } - #brainpassphraseconfirm { width: 280px; } + #brainpassphrase { width: 280px; position: relative; z-index: 20; } + #brainpassphraseconfirm { width: 280px; position: relative; z-index: 20; } + #brainpassphraseshow { position: relative; z-index: 20; } + #brainview { position: relative; z-index: 20; } #brainwarning { } #detailcommands { padding: 10px 0; } #detailcommands span { padding: 0 10px; } - #detailprivkey { width: 250px; } - #detailprivkeypassphrase { width: 250px; } + #detailprivkey { width: 250px; position: relative; z-index: 20; } + #detailprivkeypassphrase { width: 250px; position: relative; z-index: 20; } + #detailview { position: relative; z-index: 20; } + #detaildecrypt { position: relative; z-index: 20; } .paper .commands { border: 2px solid #009900; } #bulkstartindex, #paperlimit, #paperlimitperpage { width: 35px; } #bulklimit { width: 45px; } @@ -6548,13 +6552,13 @@
@@ -6877,12 +6881,12 @@ Donations: 1NiNja1bUmhSoTXozBRBEtR8LeF9TGbZBN GitHub Repository - (zip) + (zip)
- Version History (2.9.8) + Version History (2.9.9) 527B 5C82 B1F6 B2DB 72A0
ECBF 8749 7B91 6397 4F5A
@@ -7265,6 +7269,8 @@ seedCount: 0, // counter lastInputTime: new Date().getTime(), seedPoints: [], + isStillSeeding: true, + seederDependentWallets: ["singlewallet", "paperwallet", "bulkwallet", "vanitywallet", "splitwallet"], // seed function exists to wait for mouse movement to add more entropy before generating an address seed: function (evt) { @@ -7272,11 +7278,8 @@ var timeStamp = new Date().getTime(); // seeding is over now we generate and display the address if (ninja.seeder.seedCount == ninja.seeder.seedLimit) { - ninja.seeder.seedCount++; - ninja.wallets.singlewallet.open(); - document.getElementById("generate").style.display = "none"; - document.getElementById("menu").style.visibility = "visible"; - ninja.seeder.removePoints(); + ninja.seeder.seedCount++; + ninja.seeder.seedingOver(); } // seed mouse position X and Y when mouse movements are greater than 40ms apart. else if ((ninja.seeder.seedCount < ninja.seeder.seedLimit) && evt && (timeStamp - ninja.seeder.lastInputTime) > 40) { @@ -7294,11 +7297,8 @@ if (!evt) var evt = window.event; // seeding is over now we generate and display the address if (ninja.seeder.seedCount == ninja.seeder.seedLimit) { - ninja.seeder.seedCount++; - ninja.wallets.singlewallet.open(); - document.getElementById("generate").style.display = "none"; - document.getElementById("menu").style.visibility = "visible"; - ninja.seeder.removePoints(); + ninja.seeder.seedCount++; + ninja.seeder.seedingOver(); } // seed key press character else if ((ninja.seeder.seedCount < ninja.seeder.seedLimit) && evt.which) { @@ -7317,16 +7317,20 @@ showPool: function () { var poolHex; if (SecureRandom.poolCopyOnInit != null) { - poolHex = Crypto.util.bytesToHex(SecureRandom.poolCopyOnInit); - document.getElementById("seedpool").innerHTML = poolHex; - document.getElementById("seedpooldisplay").innerHTML = poolHex; + poolHex = Crypto.util.bytesToHex(SecureRandom.poolCopyOnInit); + document.getElementById("seedpool").innerHTML = poolHex; + document.getElementById("seedpooldisplay").innerHTML = poolHex; } else { - poolHex = Crypto.util.bytesToHex(SecureRandom.pool); - document.getElementById("seedpool").innerHTML = poolHex; - document.getElementById("seedpooldisplay").innerHTML = poolHex; + poolHex = Crypto.util.bytesToHex(SecureRandom.pool); + document.getElementById("seedpool").innerHTML = poolHex; + document.getElementById("seedpooldisplay").innerHTML = poolHex; + } + var percentSeeded = Math.round((ninja.seeder.seedCount / ninja.seeder.seedLimit) * 100) + "%"; + document.getElementById("mousemovelimit").innerHTML = percentSeeded; + for (var wIndex in ninja.seeder.seederDependentWallets) { + document.getElementById(ninja.seeder.seederDependentWallets[wIndex]).innerHTML = percentSeeded; } - document.getElementById("mousemovelimit").innerHTML = (ninja.seeder.seedLimit - ninja.seeder.seedCount); }, showPoint: function (x, y) { @@ -7343,6 +7347,21 @@ document.body.removeChild(ninja.seeder.seedPoints[i]); } ninja.seeder.seedPoints = []; + }, + + seedingOver: function () { + ninja.seeder.isStillSeeding = false; + var walletType = ninja.tab.whichIsOpen(); + if (walletType == null) { + ninja.tab.select("singlewallet"); + } else { + ninja.tab.select(walletType) + } + document.getElementById("generate").style.display = "none"; + // update labels for dependent wallets + var culture = (ninja.getQueryString()["culture"] == null ? "en" : ninja.getQueryString()["culture"]); + ninja.translator.translate(culture); + ninja.seeder.removePoints(); } }; @@ -7439,16 +7458,45 @@ } }; -ninja.tabSwitch = function (walletTab) { - if (walletTab.className.indexOf("selected") == -1) { - // unselect all tabs - for (var wType in ninja.wallets) { - document.getElementById(wType).className = "tab"; - ninja.wallets[wType].close(); - } - walletTab.className += " selected"; - ninja.wallets[walletTab.getAttribute("id")].open(); - } +ninja.tab = { + select: function (walletTab) { + // detect type: normally an HtmlElement/object but when string then get the element + if (typeof walletTab === 'string') { + walletTab = document.getElementById(walletTab); + } + var walletType = walletTab.getAttribute("id"); + + if (walletTab.className.indexOf("selected") == -1) { + // unselect all tabs + for (var wType in ninja.wallets) { + document.getElementById(wType).className = "tab"; + ninja.wallets[wType].close(); + } + + // don't open tab if entropy still being collected + // exceptions: brainwallet detailwallet + if (ninja.seeder.isStillSeeding == false || walletType == "brainwallet" || walletType == "detailwallet") { + walletTab.className += " selected"; + document.getElementById("generate").style.display = "none"; + ninja.wallets[walletTab.getAttribute("id")].open(); + } + else if (ninja.seeder.isStillSeeding == true && !(walletType == "brainwallet" || walletType == "detailwallet")) { + document.getElementById("generate").style.display = "block"; + } + } + }, + + whichIsOpen: function () { + var isOpen; + for (var wType in ninja.wallets) { + isOpen = ninja.wallets[wType].isOpen(); + if (isOpen) { + return wType; + } + } + return null; + } + }; ninja.getQueryString = function () { @@ -7557,7 +7605,16 @@ "vanityalertinvalidinputpublickeysmatch": "Invalid input. The Public Key of both entries match. You must input two different keys.", "vanityalertinvalidinputcannotmultiple": "Invalid input. Cannot multiply two public keys. Select 'Add' to add two public keys to get a bitcoin address.", "vanityprivatekeyonlyavailable": "Only available when combining two private keys", - "vanityalertinvalidinputprivatekeysmatch": "Invalid input. The Private Key of both entries match. You must input two different keys." + "vanityalertinvalidinputprivatekeysmatch": "Invalid input. The Private Key of both entries match. You must input two different keys.", + + // header and menu html + "singlewallet": "Single Wallet", + "paperwallet": "Paper Wallet", + "bulkwallet": "Bulk Wallet", + "brainwallet": "Brain Wallet", + "vanitywallet": "Vanity Wallet", + "splitwallet": "Split Wallet", + "detailwallet": "Wallet Details" }, "es": { @@ -7590,6 +7647,7 @@ "bulkwallet": "Direcciones en masa", "brainwallet": "Cartera mental", "vanitywallet": "Cartera personalizada", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Detalles de la cartera", // footer html @@ -7728,6 +7786,7 @@ "bulkwallet": "Porte-Monnaie En Vrac", "brainwallet": "Porte-Monnaie Cerveau", "vanitywallet": "Porte-Monnaie Vanité", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Détails du Porte-Monnaie", // footer html @@ -7867,6 +7926,7 @@ "bulkwallet": "Πολλαπλά Πορτοφόλια", "brainwallet": "Μνημονικό Πορτοφόλι", "vanitywallet": "Πορτοφόλι Vanity", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Λεπτομέρειες Πορτοφολιού", // footer html @@ -8005,6 +8065,7 @@ "bulkwallet": "Portafogli multipli", "brainwallet": "Brain Wallet", "vanitywallet": "Vanity Wallet", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Dettagli portafoglio", // footer html @@ -8143,6 +8204,7 @@ "bulkwallet": "Massen-Wallet", "brainwallet": "Kopf-Wallet", "vanitywallet": "Personalisiertes Wallet", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Walletdetails", // footer html @@ -8281,6 +8343,7 @@ "bulkwallet": "Hromadná peněženka", "brainwallet": "Myšlenková peněženka", "vanitywallet": "Peněženka Vanity", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Detail peněženky", // footer html @@ -8564,6 +8627,7 @@ "bulkwallet": "大量ウォレット", "brainwallet": "暗記ウォレット", "vanitywallet": "カスタムウォレット", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "ウォレットの詳細", // footer html @@ -8854,6 +8918,7 @@ "bulkwallet": "Несколько кошельков", "brainwallet": "Умный кошелек", "vanitywallet": "Персональный кошелек", + "splitwallet": "Split Wallet", //TODO: please translate "detailwallet": "Детали кошелька", // footer html @@ -9006,6 +9071,10 @@