From 056ee68d700a47c68195ab0c9105acc1c9713938 Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Fri, 1 Dec 2017 12:39:51 -0500
Subject: [PATCH 01/12] remove dependency on testrpc, and get server from
ganache-core instead.
---
package.json | 2 +-
src/chain.js | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index e09857e16..8070676b5 100644
--- a/package.json
+++ b/package.json
@@ -145,9 +145,9 @@
"electron-forge-maker-appimage": "^19.30.3",
"electron-settings": "^3.1.2",
"electron-squirrel-startup": "^1.0.0",
- "ethereumjs-testrpc": "^6.0.3",
"ethereumjs-units": "^0.2.0",
"find-process": "^1.1.0",
+ "ganache-core": "^2.0.2",
"lodash": "^3.10.1",
"moment": "^2.17.1",
"moment-timezone": "^0.5.11",
diff --git a/src/chain.js b/src/chain.js
index 4eae6df41..68a16d824 100644
--- a/src/chain.js
+++ b/src/chain.js
@@ -1,5 +1,5 @@
#!/usr/bin/env node
-var TestRPC = require("ethereumjs-testrpc")
+var GanacheServer = require("ganache-core/lib/server")
var path = require("path")
var Web3 = require("web3")
@@ -41,7 +41,7 @@ function startServer(options) {
}
}
- server = TestRPC.server(options);
+ server = GanacheServer.create(options);
// We'll also log all methods that aren't marked internal by Ganache
var oldSendAsync = server.provider.sendAsync.bind(server.provider)
From 014e05f3fb698f254f30ded7cbe0df3ee5287ac2 Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Fri, 1 Dec 2017 13:27:58 -0500
Subject: [PATCH 02/12] rolling back last change, but using ganache-cli instead
of testrpc
---
package.json | 2 +-
src/chain.js | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index 8070676b5..8db85e0ee 100644
--- a/package.json
+++ b/package.json
@@ -147,7 +147,7 @@
"electron-squirrel-startup": "^1.0.0",
"ethereumjs-units": "^0.2.0",
"find-process": "^1.1.0",
- "ganache-core": "^2.0.2",
+ "ganache-cli": "^6.0.3",
"lodash": "^3.10.1",
"moment": "^2.17.1",
"moment-timezone": "^0.5.11",
diff --git a/src/chain.js b/src/chain.js
index 68a16d824..b0709a764 100644
--- a/src/chain.js
+++ b/src/chain.js
@@ -1,5 +1,5 @@
#!/usr/bin/env node
-var GanacheServer = require("ganache-core/lib/server")
+var ganacheLib = require("ganache-cli")
var path = require("path")
var Web3 = require("web3")
@@ -41,7 +41,7 @@ function startServer(options) {
}
}
- server = GanacheServer.create(options);
+ server = ganacheLib.server(options);
// We'll also log all methods that aren't marked internal by Ganache
var oldSendAsync = server.provider.sendAsync.bind(server.provider)
From ceef86cac2c70c83ec4cc0a62480d087d928c839 Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Fri, 1 Dec 2017 18:02:13 -0500
Subject: [PATCH 03/12] ignore vscode files
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index bae723592..13766594c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,5 @@ out
package-lock.json
node_modules
.DS_Store
+.vscode
From d8a5f3cb6626e48b396b5f99ed4333d4ef86b17c Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Fri, 1 Dec 2017 18:03:53 -0500
Subject: [PATCH 04/12] Include last 500 log lines in bug report
---
src/Components/AppShell/AppShell.js | 55 +++++++++++++++++++++--------
1 file changed, 41 insertions(+), 14 deletions(-)
diff --git a/src/Components/AppShell/AppShell.js b/src/Components/AppShell/AppShell.js
index 20c00918d..381043937 100644
--- a/src/Components/AppShell/AppShell.js
+++ b/src/Components/AppShell/AppShell.js
@@ -108,25 +108,45 @@ class AppShell extends Component {
onCloseFatalErrorModal = () => {}
+ // grabs the last 500 log lines as a string formatted for inclusion as a github issue
+ prepareLogLines () {
+ if (this.props.logs.lines) {
+ let firstLogTime = this.props.logs.lines[0].time.getTime()
+ return this.props.logs.lines
+ .slice(-500)
+ .map(v => `T+${v.time.getTime() - firstLogTime}ms: ${v.line}`)
+ .join('\n')
+ }
+
+ return ''
+ }
+
+ // Remove any user-specific paths in exception messages
+ sanitizePaths(message) {
+ // Prepare our paths so we *always* will get a match no matter
+ // path separator (oddly, on Windows, different errors will give
+ // us different path separators)
+ var appPath = app.getAppPath().replace(/\\/g, "/")
+
+ // I couldn't figure out the regex, so a loop will do.
+ while (message.indexOf(appPath) >= 0) {
+ message = systemError.replace(appPath, "")
+ }
+
+ return message;
+ }
+
render () {
const path = this.props.location.pathname
const segment = path.replace(/^\//g, '').replace(/\//g, '-') || 'root'
let systemError = this.props.core.systemError
-
+ let logLines = ''
if (systemError) {
systemError = systemError.stack || systemError
- // Remove any user-specific paths in exception messages
- // Prepare our paths so we *always* will get a match no matter
- // path separator (oddly, on Windows, different errors will give
- // us different path separators)
- var appPath = app.getAppPath().replace(/\\/g, "/")
- systemError = systemError.replace(/\\/g, "/")
-
- // I couldn't figure out the regex, so a loop will do.
- while (systemError.indexOf(appPath) >= 0) {
- systemError = systemError.replace(appPath, "")
- }
+ // avoid leaking details about the user's environment
+ systemError = this.sanitizePaths(systemError)
+ logLines = this.sanitizePaths(this.prepareLogLines())
}
return (
@@ -160,7 +180,14 @@ PLATFORM: ${process.platform}
GANACHE VERSION: ${app.getVersion()}
EXCEPTION:
-${systemError}`
+\`\`\`
+${systemError}
+\`\`\`
+
+APPLICATION LOG:
+\`\`\`
+${logLines}
+\`\`\``
).replace(/%09/g, '')
shell.openExternal(
@@ -187,4 +214,4 @@ ${systemError}`
}
}
-export default connect(AppShell, "core", "settings")
+export default connect(AppShell, "core", "settings", "logs")
From 076e382db31aa132cab811eecb6eeb4564143215 Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Fri, 1 Dec 2017 19:42:36 -0500
Subject: [PATCH 05/12] Break bug modal out & enforce GH issue max url length
---
src/Components/AppShell/AppShell.js | 101 +--------------------
src/Components/AppShell/AppShell.scss | 15 ---
src/Components/AppShell/BugModal.js | 126 ++++++++++++++++++++++++++
src/Components/AppShell/BugModal.scss | 16 ++++
src/index.js | 1 +
5 files changed, 146 insertions(+), 113 deletions(-)
create mode 100644 src/Components/AppShell/BugModal.js
create mode 100644 src/Components/AppShell/BugModal.scss
diff --git a/src/Components/AppShell/AppShell.js b/src/Components/AppShell/AppShell.js
index 381043937..c672c4c3a 100644
--- a/src/Components/AppShell/AppShell.js
+++ b/src/Components/AppShell/AppShell.js
@@ -7,11 +7,7 @@ import connect from '../Helpers/connect'
import * as AppShellActions from '../../Actions/AppShell'
import TopNavbar from './TopNavbar'
-import OnlyIf from '../../Elements/OnlyIf'
-import Modal from '../../Elements/Modal'
-
-import BugIcon from '../../Elements/icons/errorant.svg'
-
+import BugModal from './BugModal'
import ua from 'universal-analytics'
import ElectronCookies from '@exponent/electron-cookies'
@@ -108,47 +104,8 @@ class AppShell extends Component {
onCloseFatalErrorModal = () => {}
- // grabs the last 500 log lines as a string formatted for inclusion as a github issue
- prepareLogLines () {
- if (this.props.logs.lines) {
- let firstLogTime = this.props.logs.lines[0].time.getTime()
- return this.props.logs.lines
- .slice(-500)
- .map(v => `T+${v.time.getTime() - firstLogTime}ms: ${v.line}`)
- .join('\n')
- }
-
- return ''
- }
-
- // Remove any user-specific paths in exception messages
- sanitizePaths(message) {
- // Prepare our paths so we *always* will get a match no matter
- // path separator (oddly, on Windows, different errors will give
- // us different path separators)
- var appPath = app.getAppPath().replace(/\\/g, "/")
-
- // I couldn't figure out the regex, so a loop will do.
- while (message.indexOf(appPath) >= 0) {
- message = systemError.replace(appPath, "")
- }
-
- return message;
- }
-
render () {
const path = this.props.location.pathname
- const segment = path.replace(/^\//g, '').replace(/\//g, '-') || 'root'
- let systemError = this.props.core.systemError
- let logLines = ''
- if (systemError) {
- systemError = systemError.stack || systemError
-
- // avoid leaking details about the user's environment
- systemError = this.sanitizePaths(systemError)
- logLines = this.sanitizePaths(this.prepareLogLines())
- }
-
return (
@@ -156,62 +113,10 @@ class AppShell extends Component {
{this.props.children}
-
-
-
-
-
-
Uh Oh... That's a bug.
-
- Ganache encountered an error. Help us fix it by raising a GitHub issue!
Mention the following error information when writing your ticket, and please include as much information as possible. Sorry about that!
-
-
-
-
-
-
+
)
}
}
-export default connect(AppShell, "core", "settings", "logs")
+export default connect(AppShell, "core", "settings", "logs");
\ No newline at end of file
diff --git a/src/Components/AppShell/AppShell.scss b/src/Components/AppShell/AppShell.scss
index 730b3fd2f..5d55eb1fa 100644
--- a/src/Components/AppShell/AppShell.scss
+++ b/src/Components/AppShell/AppShell.scss
@@ -3,21 +3,6 @@
flex-direction: column;
height: 100%;
- .Bug {
- textarea {
- min-height: 5rem; /* Overwrite Modal textarea styles */
- max-height: 5rem;
- background-color: var(--app-button-primary-disabled-border-color);
- width: 100%;
- margin-bottom: 1rem;
- }
-
- svg {
- width: 192px;
- height: 192px;
- }
- }
-
.ShellContainer {
display: flex;
flex-grow: 1;
diff --git a/src/Components/AppShell/BugModal.js b/src/Components/AppShell/BugModal.js
new file mode 100644
index 000000000..2e8b194f2
--- /dev/null
+++ b/src/Components/AppShell/BugModal.js
@@ -0,0 +1,126 @@
+import React, { Component } from 'react'
+
+import connect from '../Helpers/connect'
+
+import OnlyIf from '../../Elements/OnlyIf'
+import Modal from '../../Elements/Modal'
+
+import BugIcon from '../../Elements/icons/errorant.svg'
+
+import { shell } from 'electron'
+
+const { app } = require('electron').remote
+
+class BugModal extends Component {
+ constructor () {
+ super()
+ this.scrollDedupeTimeout = null
+ }
+
+ _getLastNLines(maxLines) {
+ let firstLogTime = this.props.logs.lines[0].time.getTime()
+ return this.props.logs.lines
+ .slice(maxLines)
+ .map(v => `T+${v.time.getTime() - firstLogTime}ms: ${v.line}`)
+ .join('\n')
+ }
+ // grabs the last 500 log lines as a string formatted for inclusion as a github issue
+ prepareLogLines () {
+ let result = ''
+ if (this.props.logs.lines) {
+ let maxLines = -175
+
+ // GitHub has a max URL length of ~8KiB, so we truncate logs to fit within that
+ while (encodeURIComponent(result = this._getLastNLines(maxLines)).length > 7500) {
+ maxLines++
+ }
+
+ }
+
+ return result
+ }
+
+ // Remove any user-specific paths in exception messages
+ sanitizePaths(message) {
+ // Prepare our paths so we *always* will get a match no matter
+ // path separator (oddly, on Windows, different errors will give
+ // us different path separators)
+ var appPath = app.getAppPath().replace(/\\/g, "/")
+
+ // I couldn't figure out the regex, so a loop will do.
+ while (message.indexOf(appPath) >= 0) {
+ message = systemError.replace(appPath, "")
+ }
+
+ return message
+ }
+
+ render () {
+ let systemError = this.props.core.systemError
+ let logLines = ''
+ if (systemError) {
+ systemError = systemError.stack || systemError
+
+ // avoid leaking details about the user's environment
+ systemError = this.sanitizePaths(systemError)
+ logLines = this.sanitizePaths(this.prepareLogLines())
+ }
+
+ return (
+
+
+
+
+
Uh Oh... That's a bug.
+
+ Ganache encountered an error. Help us fix it by raising a GitHub issue!
Mention the following error information when writing your ticket, and please include as much information as possible. Sorry about that!
+
+
+
+
+
+
+ )
+ }
+}
+
+export default connect(BugModal)
\ No newline at end of file
diff --git a/src/Components/AppShell/BugModal.scss b/src/Components/AppShell/BugModal.scss
new file mode 100644
index 000000000..5043b5c1a
--- /dev/null
+++ b/src/Components/AppShell/BugModal.scss
@@ -0,0 +1,16 @@
+.BugModal {
+ .Bug {
+ textarea {
+ min-height: 5rem; /* Overwrite Modal textarea styles */
+ max-height: 5rem;
+ background-color: var(--app-button-primary-disabled-border-color);
+ width: 100%;
+ margin-bottom: 1rem;
+ }
+
+ svg {
+ width: 192px;
+ height: 192px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 644b464e5..6edda2cb2 100644
--- a/src/index.js
+++ b/src/index.js
@@ -54,6 +54,7 @@ const stylesheets = [
"./Components/FirstRun/FirstRunScreen.scss",
"./Components/AppShell/AppShell.scss",
"./Components/AppShell/TopNavbar.scss",
+ "./Components/AppShell/BugModal.scss",
"./Components/Accounts/AccountsScreen.scss",
"./Components/Accounts/AccountList.scss",
"./Components/Accounts/KeyModal.scss",
From f06002120d7511a4adf1e8b724a63d630e6d2236 Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Tue, 19 Dec 2017 17:23:55 +1300
Subject: [PATCH 06/12] Review fix: AppShell should control when BugModal
displays, not BugModal
---
src/Components/AppShell/AppShell.js | 7 ++-
src/Components/AppShell/BugModal.js | 79 ++++++++++++++---------------
2 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/src/Components/AppShell/AppShell.js b/src/Components/AppShell/AppShell.js
index c672c4c3a..58fe3e72c 100644
--- a/src/Components/AppShell/AppShell.js
+++ b/src/Components/AppShell/AppShell.js
@@ -7,6 +7,7 @@ import connect from '../Helpers/connect'
import * as AppShellActions from '../../Actions/AppShell'
import TopNavbar from './TopNavbar'
+import OnlyIf from '../../Elements/OnlyIf'
import BugModal from './BugModal'
import ua from 'universal-analytics'
import ElectronCookies from '@exponent/electron-cookies'
@@ -113,10 +114,12 @@ class AppShell extends Component {
{this.props.children}
-
+
+
+
)
}
}
-export default connect(AppShell, "core", "settings", "logs");
\ No newline at end of file
+export default connect(AppShell, "core", "settings", "logs");
diff --git a/src/Components/AppShell/BugModal.js b/src/Components/AppShell/BugModal.js
index 2e8b194f2..2400a5c4c 100644
--- a/src/Components/AppShell/BugModal.js
+++ b/src/Components/AppShell/BugModal.js
@@ -2,7 +2,6 @@ import React, { Component } from 'react'
import connect from '../Helpers/connect'
-import OnlyIf from '../../Elements/OnlyIf'
import Modal from '../../Elements/Modal'
import BugIcon from '../../Elements/icons/errorant.svg'
@@ -67,24 +66,23 @@ class BugModal extends Component {
}
return (
-
-
-
-
-
Uh Oh... That's a bug.
-
- Ganache encountered an error. Help us fix it by raising a GitHub issue!
Mention the following error information when writing your ticket, and please include as much information as possible. Sorry about that!
-
-
-
+ ).replace(/%09/g, '')
+
+ shell.openExternal(
+ `https://github.com/trufflesuite/ganache/issues/new?title=${title}&body=${body}`
+ )
+ }}
+ >
+ Raise Github Issue
+
+
+
+
+
)
}
}
-export default connect(BugModal)
\ No newline at end of file
+export default connect(BugModal)
From 1f6fc22e63fd4d5a72b026de92e75d8926cfa4ee Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Tue, 19 Dec 2017 17:28:04 +1300
Subject: [PATCH 07/12] Review fix: Be more explicit about Modal style override
by reopening the class
---
src/Components/AppShell/BugModal.scss | 28 ++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/Components/AppShell/BugModal.scss b/src/Components/AppShell/BugModal.scss
index 5043b5c1a..92c5155e6 100644
--- a/src/Components/AppShell/BugModal.scss
+++ b/src/Components/AppShell/BugModal.scss
@@ -1,16 +1,18 @@
-.BugModal {
- .Bug {
- textarea {
- min-height: 5rem; /* Overwrite Modal textarea styles */
- max-height: 5rem;
- background-color: var(--app-button-primary-disabled-border-color);
- width: 100%;
- margin-bottom: 1rem;
- }
+.Modal {
+ &.BugModal {
+ .Bug {
+ textarea {
+ min-height: 5rem; /* Overwrite Modal textarea styles */
+ max-height: 5rem;
+ background-color: var(--app-button-primary-disabled-border-color);
+ width: 100%;
+ margin-bottom: 1rem;
+ }
- svg {
- width: 192px;
- height: 192px;
+ svg {
+ width: 192px;
+ height: 192px;
+ }
}
}
-}
\ No newline at end of file
+}
From c11217e408b35cf8c79e0a5f88fed7ac8df5e3bd Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Tue, 19 Dec 2017 20:06:19 +1300
Subject: [PATCH 08/12] Refactoring: Make BugModal more usable, split
path/error sanitization out into a helper module
---
src/Components/AppShell/AppShell.js | 2 +-
src/Components/AppShell/BugModal.js | 101 +++++++++++++---------------
src/Components/Helpers/sanitize.js | 23 +++++++
3 files changed, 72 insertions(+), 54 deletions(-)
create mode 100644 src/Components/Helpers/sanitize.js
diff --git a/src/Components/AppShell/AppShell.js b/src/Components/AppShell/AppShell.js
index 58fe3e72c..538e0ac7a 100644
--- a/src/Components/AppShell/AppShell.js
+++ b/src/Components/AppShell/AppShell.js
@@ -115,7 +115,7 @@ class AppShell extends Component {
{this.props.children}
-
+
)
diff --git a/src/Components/AppShell/BugModal.js b/src/Components/AppShell/BugModal.js
index 2400a5c4c..2f33a1968 100644
--- a/src/Components/AppShell/BugModal.js
+++ b/src/Components/AppShell/BugModal.js
@@ -6,6 +6,8 @@ import Modal from '../../Elements/Modal'
import BugIcon from '../../Elements/icons/errorant.svg'
+import { sanitizeError, sanitizePaths } from '../Helpers/sanitize.js'
+
import { shell } from 'electron'
const { app } = require('electron').remote
@@ -16,53 +18,52 @@ class BugModal extends Component {
this.scrollDedupeTimeout = null
}
- _getLastNLines(maxLines) {
- let firstLogTime = this.props.logs.lines[0].time.getTime()
- return this.props.logs.lines
- .slice(maxLines)
- .map(v => `T+${v.time.getTime() - firstLogTime}ms: ${v.line}`)
- .join('\n')
- }
// grabs the last 500 log lines as a string formatted for inclusion as a github issue
- prepareLogLines () {
+ renderAndSanitizeLogLines () {
let result = ''
- if (this.props.logs.lines) {
- let maxLines = -175
+ if (this.props.logs && this.props.logs.lines && this.props.logs.lines.length > 0) {
+ let maxLines = -175 // negative because Array.slice -- we want the last 175 lines, not the first 175
// GitHub has a max URL length of ~8KiB, so we truncate logs to fit within that
- while (encodeURIComponent(result = this._getLastNLines(maxLines)).length > 7500) {
- maxLines++
+ while (encodeURIComponent(result = _getLastNLogLines(maxLines, this.props.logs)).length > 7500) {
+ maxLines++ // reduces number of lines we get next time
}
-
}
-
- return result
+ return sanitizePaths(result)
}
- // Remove any user-specific paths in exception messages
- sanitizePaths(message) {
- // Prepare our paths so we *always* will get a match no matter
- // path separator (oddly, on Windows, different errors will give
- // us different path separators)
- var appPath = app.getAppPath().replace(/\\/g, "/")
-
- // I couldn't figure out the regex, so a loop will do.
- while (message.indexOf(appPath) >= 0) {
- message = systemError.replace(appPath, "")
+ renderIssueBody(sanitizedSystemError, sanitizedLogLines) {
+ let issueBody =
+ "\n" +
+ "\n" +
+ "\n" +
+ `PLATFORM: ${process.platform}\n` +
+ `GANACHE VERSION: ${app.getVersion()}\n` +
+ "\n" +
+ "EXCEPTION:\n" +
+ "```\n" +
+ `${sanitizedSystemError}\n` +
+ "```"
+
+ if (sanitizedLogLines) {
+ issueBody += "\n" +
+ "\n" +
+ "APPLICATION LOG:\n" +
+ "```\n" +
+ `${sanitizedLogLines}\n` +
+ "```"
}
-
- return message
+ return encodeURIComponent(issueBody).replace(/%09/g, '')
}
render () {
- let systemError = this.props.core.systemError
- let logLines = ''
- if (systemError) {
- systemError = systemError.stack || systemError
-
- // avoid leaking details about the user's environment
- systemError = this.sanitizePaths(systemError)
- logLines = this.sanitizePaths(this.prepareLogLines())
+ let unsanitizedSystemError = this.props.systemError
+ let sanitizedSystemError = ''
+ let sanitizedLogLines = ''
+
+ if (unsanitizedSystemError) {
+ sanitizedSystemError = sanitizeError(unsanitizedSystemError)
+ sanitizedLogLines = this.renderAndSanitizeLogLines()
}
return (
@@ -73,7 +74,7 @@ class BugModal extends Component {
Ganache encountered an error. Help us fix it by raising a GitHub issue!
Mention the following error information when writing your ticket, and please include as much information as possible. Sorry about that!
-
+
+### Getting started
+
+You can download a prebuilt Ganache binary for your platform of choice using the Download button the [Ganache](http://truffleframework.com/ganache/) website, or from this repository's [releases](https://github.com/trufflesuite/ganache/releases) page.
+
### Contributing
Please open issues and pull requests for new features, questions, and bug fixes.
From 50fb36808de47b7e82aed68d62b125eadb8c553c Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Wed, 20 Dec 2017 14:34:32 +1300
Subject: [PATCH 10/12] I a word.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b17da0a08..48c1bb2d2 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ Ganache is your personal blockchain for Ethereum development.
### Getting started
-You can download a prebuilt Ganache binary for your platform of choice using the Download button the [Ganache](http://truffleframework.com/ganache/) website, or from this repository's [releases](https://github.com/trufflesuite/ganache/releases) page.
+You can download a prebuilt Ganache binary for your platform of choice using the "Download" button on the [Ganache](http://truffleframework.com/ganache/) website, or from this repository's [releases](https://github.com/trufflesuite/ganache/releases) page.
### Contributing
From 400dceea5d09df8af8696f7f969ac16f262f786a Mon Sep 17 00:00:00 2001
From: Ben Burns
Date: Wed, 20 Dec 2017 14:35:48 +1300
Subject: [PATCH 11/12] Indicate that binary dist has no dependencies
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 48c1bb2d2..d8c990602 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ Ganache is your personal blockchain for Ethereum development.
### Getting started
-You can download a prebuilt Ganache binary for your platform of choice using the "Download" button on the [Ganache](http://truffleframework.com/ganache/) website, or from this repository's [releases](https://github.com/trufflesuite/ganache/releases) page.
+You can download a self-contained prebuilt Ganache binary for your platform of choice using the "Download" button on the [Ganache](http://truffleframework.com/ganache/) website, or from this repository's [releases](https://github.com/trufflesuite/ganache/releases) page.
### Contributing
From 3a1de9b9bd922e80dcab3844a96b03e144182727 Mon Sep 17 00:00:00 2001
From: Mike Pumphrey
Date: Thu, 21 Dec 2017 12:13:28 -0800
Subject: [PATCH 12/12] Editing issue template to match ganache-core
See https://github.com/trufflesuite/ganache-core/edit/develop/ISSUE_TEMPLATE.md
---
.github/ISSUE_TEMPLATE.md | 68 +++++++++++++++++++++++----------------
1 file changed, 40 insertions(+), 28 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 558b5e3e7..4d096d202 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,28 +1,40 @@
-# Zircon
-
-Before opening a new issue, please take a moment to review our [**community guidelines**](https://github.com/trufflesuite/zircon/blob/master/.github/CONTRIBUTING.md) to make the contribution process easy and effective for everyone involved.
-
-**Before opening a new issue, you may find an answer in already closed issues**:
-https://github.com/trufflesuite/zircon/issues?q=is%3Aissue+is%3Aclosed
-
-## Issue Type
-
-- [ ] Bug (https://github.com/trufflesuite/zircon/blob/master/.github/CONTRIBUTING.md#bug-reports)
-- [ ] Feature (https://github.com/trufflesuite/zircon/blob/master/.github/CONTRIBUTING.md#feature-requests)
-
-If your issue is related to building Ganache on your platform, please make sure you have a correctly setup build environment
-on your platform, and that you have carefully read any error output for instructions that may fix your situation.
-
-## Description
-
-(Add images if possible - but absolutely no images of terminal output please.)
-
-## Steps to reproduce
-
-(Please be thorough)
-
-# Versions
-
-- Platform: (macOS / Windows / Linux)
-- Node:
-- Npm:
+
+
+
+
+
+
+## Expected Behavior
+
+
+
+## Current Behavior
+
+
+
+## Possible Solution
+
+
+
+## Steps to Reproduce (for bugs)
+
+
+1.
+2.
+3.
+4.
+
+## Context
+
+
+
+## Your Environment
+
+* Version used:
+* Environment name and version (e.g. PHP 5.4 on nginx 1.9.1):
+* Server type and version:
+* Operating System and version:
+* Link to your project: