theskeletoncrew / treat-toolbox Goto Github PK
View Code? Open in Web Editor NEWTreat Toolbox: Generative NFT Utility for Candy Machine / Solana
Home Page: https://treattoolbox.com
License: GNU Affero General Public License v3.0
Treat Toolbox: Generative NFT Utility for Candy Machine / Solana
Home Page: https://treattoolbox.com
License: GNU Affero General Public License v3.0
When generating composites, the progress bar immediately fills to 100%, and I see this error in the emulators console
Dec 08, 2021 6:45:54 PM io.gapi.emulators.netty.NotFoundHandler handleRequest
INFO: Unknown request URI: /generate-artwork?projectId=REDACTED&collectionId=REDACTED&compositeGroupId=REDACTED&traitSetId=REDACTED&startIndex=0&batchSize=100&isFirstBatchInTraitSet=1
And no images are created.
I think software like this one benefits a ton from having editing of stuff happening inline. Especially on the values of traits page for rarities and stuff.
Running this on Macbook M1 will always break because the sharp library can't be run from another architecture but the firebase emulator (which uses Java) always runs in emulated architecture -- so, a stalemate. There seems to have basically no solution in a case like that except using another OS or an emulation layer, like Docker.
So, a few suggestions (all of them, some of them, or any, just some ideas):
I've run into some edge cases where conflict resolution code fails. I discovered these when using the conflicting trait value "Any".
eg. If the first conflicting trait value is "Any", this is represented by setting the value of conflict.trait1ValueId
to null.
const trait1ValueIndex = traitValuePairs.findIndex(
(pair) => pair.traitValue?.id == conflict.trait1ValueId
);
if (trait1ValueIndex == -1) {
continue;
}
The existing code behaves as follows:
findIndex
returns -1 and it will incorrectly skip conflict resolution. The correct behaviour is that it should resolve the conflict since the trait value is "Any".traitValuePairs
have a null value, findIndex
will return a match and the conflict will be resolved. However, it may have matched the trait value for a different trait.I believe I've resolved both the above issues with the following code (note the logic needs to be repeated for trait 2).
let trait1ValueIndex = -1;
// if conflicting value is not "Any"
if (conflict.trait1ValueId !== null) {
trait1ValueIndex = traitValuePairs.findIndex(
(pair) =>
pair.trait.id == conflict.trait1Id && // ensure the trait matches the configured conflicting trait
pair.traitValue?.id == conflict.trait1ValueId
);
if (trait1ValueIndex == -1) {
continue;
}
}
if (conflict.trait1ValueId !== null)
skips checking if the trait values match if the conflicting trait value is "Any"pair.trait.id == conflict.trait1Id
check ensures it is checking the value against the correct trait, so that duplicate values across different traits (eg. Background: Green, Hair: Green) won't inadvertently cause a match.I'm happy to create a PR with the suggested changes, or I can leave this with the team.
Thanks for a great tool!
Hi folks I have got problem with installation..
npm run build --prefix=functions
0 info it worked if it ends with ok 1 verbose cli [ 1 verbose cli '/root/.nvm/versions/node/v14.18.1/bin/node', 1 verbose cli '/root/.nvm/versions/node/v14.18.1/bin/npm', 1 verbose cli 'run', 1 verbose cli 'build', 1 verbose cli '--prefix=functions' 1 verbose cli ] 2 info using [email protected] 3 info using [email protected] 4 verbose run-script [ 'prebuild', 'build', 'postbuild' ] 5 info lifecycle functions@~prebuild: functions@ 6 info lifecycle functions@~build: functions@ 7 verbose lifecycle functions@~build: unsafe-perm in lifecycle true 8 verbose lifecycle functions@~build: PATH: /root/.nvm/versions/node/v14.18.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/opt/treetbox/treat-toolbox-main/funct 9 verbose lifecycle functions@~build: CWD: /opt/treetbox/treat-toolbox-main/functions 10 silly lifecycle functions@~build: Args: [ '-c', 'tsc' ] 11 silly lifecycle functions@~build: Returned: code: 2 signal: null 12 info lifecycle functions@~build: Failed to exec build script 13 verbose stack Error: functions@ build:
tsc13 verbose stack Exit status 2 13 verbose stack at EventEmitter.<anonymous> (/root/.nvm/versions/node/v14.18.1/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16) 13 verbose stack at EventEmitter.emit (events.js:400:28) 13 verbose stack at ChildProcess.<anonymous> (/root/.nvm/versions/node/v14.18.1/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:400:28) 13 verbose stack at maybeClose (internal/child_process.js:1058:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5) 14 verbose pkgid functions@ 15 verbose cwd /opt/treetbox/treat-toolbox-main 16 verbose Linux 5.10.0-8-amd64 17 verbose argv "/root/.nvm/versions/node/v14.18.1/bin/node" "/root/.nvm/versions/node/v14.18.1/bin/npm" "run" "build" "--prefix=functions" 18 verbose node v14.18.1 19 verbose npm v6.14.15 20 error code ELIFECYCLE 21 error errno 2 22 error functions@ build:
tsc`
22 error Exit status 2
23 error Failed at the functions@ build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]
`
A way to ensure some traits can NOT be empty (None) while making composite.
Unable to find unused trait pair after 20 retries. generated trait value pairs: [object Object] no composite data
Hi, we're receiving an error when trying to export a large sum of items. Smaller amounts worked fine.
Any ideas on how to fix it?
constructing item 0
constructing item 1
events.js:292
throw er; // Unhandled 'error' event
^GaxiosError: Request failed with status code 400
at Gaxios._request (/Users/jonathan/Development/treat-toolbox/functions/node_modules/gaxios/build/src/gaxios.js:129:23)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Upload.makeRequest (/Users/jonathan/Development/treat-toolbox/functions/node_modules/gcs-resumable-upload/build/src/index.js:348:21)
at async Upload.getAndSetOffset (/Users/jonathan/Development/treat-toolbox/functions/node_modules/gcs-resumable-upload/build/src/index.js:298:26)
at async Upload.continueUploading (/Users/jonathan/Development/treat-toolbox/functions/node_modules/gcs-resumable-upload/build/src/index.js:182:9)
Emitted 'error' event on Pumpify instance at:
at errorOrDestroy (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/internal/streams/destroy.js:98:101)
at Pumpify.onerror (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/_stream_readable.js:704:47)
at Pumpify.emit (events.js:315:20)
at errorOrDestroy (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/internal/streams/destroy.js:98:101)
at onwriteError (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/_stream_writable.js:430:5)
at onwrite (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/_stream_writable.js:450:11)
at WritableState.onwrite (/Users/jonathan/Development/treat-toolbox/functions/node_modules/readable-stream/lib/_stream_writable.js:160:5)
at Pumpify.Duplexify._destroy (/Users/jonathan/Development/treat-toolbox/functions/node_modules/duplexify/index.js:194:18)
at /Users/jonathan/Development/treat-toolbox/functions/node_modules/duplexify/index.js:185:10
at processTicksAndRejections (internal/process/task_queues.js:79:11) {
response: {
config: {
method: 'PUT',
url: 'http://localhost:9199/upload/storage/v1/b/unicornbillionairesclub.appspot.com/o?name=c15d15d0-fe91-4723-a2ed-9761cadc4064_b_unicornbillionairesclub.appspot.com_o_candy-machine-d1jlAH5FnLMcmyyZ4Ub2-1&uploadType=resumable&upload_id=c15d15d0-fe91-4723-a2ed-9761cadc4064',
headers: [Object],
validateStatus: [Function],
paramsSerializer: [Function: paramsSerializer],
responseType: 'json'
},
data: 'Bad Request',
headers: {
'access-control-expose-headers': 'content-type,x-firebase-storage-version,x-goog-upload-url,x-goog-upload-status,x-goog-upload-command,x-gupload-uploadid,x-goog-upload-header-content-length,x-goog-upload-header-content-type,x-goog-upload-protocol,x-goog-upload-status,x-goog-upload-chunk-granularity,x-goog-upload-control-url',
connection: 'close',
'content-length': '11',
'content-type': 'text/plain; charset=utf-8',
date: 'Sat, 04 Dec 2021 01:47:43 GMT',
etag: 'W/"b-EFiDB1U+dmqzx9Mo2UjcZ1SJPO8"',
vary: 'Origin',
'x-powered-by': 'Express'
},
status: 400,
statusText: 'Bad Request',
request: {
responseURL: 'http://localhost:9199/upload/storage/v1/b/unicornbillionairesclub.appspot.com/o?name=c15d15d0-fe91-4723-a2ed-9761cadc4064_b_unicornbillionairesclub.appspot.com_o_candy-machine-d1jlAH5FnLMcmyyZ4Ub2-1&uploadType=resumable&upload_id=c15d15d0-fe91-4723-a2ed-9761cadc4064'
}
},
config: {
method: 'PUT',
url: 'http://localhost:9199/upload/storage/v1/b/unicornbillionairesclub.appspot.com/o?name=c15d15d0-fe91-4723-a2ed-9761cadc4064_b_unicornbillionairesclub.appspot.com_o_candy-machine-d1jlAH5FnLMcmyyZ4Ub2-1&uploadType=resumable&upload_id=c15d15d0-fe91-4723-a2ed-9761cadc4064',
headers: {
'Content-Length': 0,
'Content-Range': 'bytes /',
Accept: 'application/json'
},
validateStatus: [Function],
paramsSerializer: [Function: paramsSerializer],
responseType: 'json'
},
code: '400'
}
hey, have this issue while running npm run build --prefix=functions, anyone knows whats up ?
Hi all !
First thanks for the tool and the set up guide, very easy to understand and clear.
I had no issue until the last step of composite generations.
Once I click on Generate Composites, my progress bar is stuck to 0%
I checked the logs in my firebase terminal and apparently I have an issue with the image format, which are in png.
Do you guys have encounter this issue?
Thanks!
FirebaseError: Function addDoc() called with invalid data. Unsupported field value: undefined (found in field userGroupId in document projects/GssXAEKS31qFUcbk0Ocx/collections/KwwgYiwVOBEZxFImOp7f)
Running into this error and also cant input a creator in the dropdown field. Any suggestion?
I think a format could be
VALUE,RARITY
VALUE,RARITY
VALUE,RARITY
TypeError: Cannot read properties of undefined (reading 'includes')
OR
Create a new trait
Then create a new trait set
Navigate back to traits or Artwork
The error is thrown
Delete the trait Set
Error is no longer thrown
If you make the traitSetIds
variable or collection
nullable then the error goes but more issues arise further on when the collection is requested.
Hey guys, I am trying to generate NFT images with your tool, but I ran into an issue that stops me from finalizing the collection.
The issue is with conflict resolving when it comes to multiple conditions.
For example:
If I have a headwear trait bandana, I don't want to have eyewear traits sunglasses and VR glasses. So I make resolutions for each:
If trait 1 bandana - and trait 2 sunglasses - set new random trait 2
If trait 1 bandana - and trait 2 VR glasses - set new random trait 2
I would expect it to never combine bandana with sunglasses and VR glasses, but it still does.
I guess what happens is that it listens to the first condition, and instead of sunglasses it sets a random trait to be VR glasses.
Like it doesn't check conditions again, resolving conflict and setting a new trait instead of VR glasses.
Hopefully, you can understand what I mean.
Is this a known issue and is it just for the free version? If in paid version this issue is fixed and all working smoothly, I will more than gladly pay!
I just pulled down latest changes from the origin
Steps to reproduce:
Add new trait to collection
Click on trait to attempt to add possible values
Error
Unhandled Runtime Error
TypeError: Reduce of empty array with no initial value
Source
.next\static\chunks\main.js (17811:0) @ mountIndeterminateComponent
17809 | setIsRendering(true);
17810 | ReactCurrentOwner$1.current = workInProgress;
> 17811 | value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);
17812 | setIsRendering(false);
17813 | } // React DevTools reads this flag.
17814 |
When importing a set of trait values by CSV, the total rarity must add up to 1, but dividing many trait values will give you some rounding issues
For example, uploading 17 traits with assorted 0.05 and 0.1 rarity as an example, gives the error "Total rarity did not add up to 1, got 1.00"
Probably need to round the if condition for this to allow for some max number of Decimal places
if (totalRarity !== 1) { ....
would become
const expectedTotal = 1;
if (totalRarity.toFixed(10) !== expectedTotal.toFixed(10)) { ...
Hi again,
I have an issue when I'm generating my composites.
I set 500 as the number to be generated.
When a create composing it generating by batch of 100 if I'm not wrong.
The issue is that, every batch is similar, meaning that 1st NFT generated from batch 1 = 1st NFT generated batch 2 = 1st NFT generated batch 3 .... until batch 5
So at the end, I only have 5x100 unique NFT.
Did I miss something in the set up?
Is is normal?
FYI I havnt checked any checkbox in the Trait settings, neither in conflicts.
I also have pulled the latest code, and I have this Trait Set menu that is empty.
Let me know if yo have any idea, I actually dont know if it's a bug, or just a setting missing.
The default behavior for Candy Machine is to take PNG assets. Treat Toolbox was built to match this.
However, it has quickly become a common request to be able to use Treat Toolbox to manage collections of other types (animated GIFs, videos, etc).
First task is to ensure that exported content can be handled by Candy Machine in these formats.
We'll also need to see what assumptions in Treat Toolbox need to be adjusted. These file types don't typically come with expectations of generative art. Usually, an artist has provided 500 finished GIFs, or 500 finished videos.
So filenames like "Background Color_Dark Red.png" would sync as expected -- meaning, "Background Color" as the trait, and "Dark Red" as value
So when I save a Trait checkbox for TraitSet1, it seems to save fine.
Then I added TraitSet2, and then I tried to set the TraitSet2 checkbox for that new Trait, but it seemed to check both TraitSet1 and TraitSet2 when i revisit the Edit page:
The issue occurs here at 1m2seconds...
https://www.screencast.com/t/I64VVhjYY
You can see I hover over the TraitSet column and it shows TraitSet2, yet the Edit page shows TraitSet1 and TraitSet2. So saving seems to work , but pulling info from db and showing it doesn't seem to work.
In a somewhat related issue, why do some TraitSets show up in the UI as '20'? I can create another ticket for that if needed.
This issue is in reference to #58 (comment)
Basically, when a user updates a Trait Value's rarity inline, the Total Rarity and None Rarity only update on the front end when the page is refreshed. Having them update dynamically as the rarities are modified inline would provide a much better user experience.
The upload function does not work for. In the console log i got this issuse.
Failed to load resource: net::ERR_CONNECTION_REFUSED
_app.tsx:56 FirebaseError: Firebase: Error (auth/network-request-failed).
at createErrorInternal (index-9ff0fa9c.js:564)
at _fail (index-9ff0fa9c.js:552)
at _performFetchWithErrorHandling (index-9ff0fa9c.js:1065)
at async _performSignInRequest (index-9ff0fa9c.js:1069)
at async signInAnonymously (index-9ff0fa9c.js:4470)
create.tsx:118 starting file: 0.png to: gp56JOd2QOr9Rn1ToLgm/oTWdoYkuj0wx2AtWJ4gU/de618152-ffe1-41a1-9ab0-e5494fcbc410.png
Ability to make a generate image and then check if it already exists if not ability to swap it out with a already made one.
Is the 'GENERATED COMPOSITE SETS' hash the thing I need or is there a different way to export?
Hello everyone,
Becarefull with new release there is a small bug in the export .JSON.
The creator properties are not report in .JSON so the fees from royalties missing.
For the moment the workaround :
updating candy-machine.js and settle your info in code
"creators": {
"address": "XXXXXXXXX",
"share": 100
}
When I have a project with supply of 100 ... 75 of TraitSet#1 and 25 of TraitSet#2... when I click Composite, only 25 are generated ...
The UI progress-bar seems to go very quick through the initial 75, and then the 25 remaining take some time.
Here is a screenshare of that issue:
https://www.screencast.com/t/7bGCVMjJmILl
I'm having issues running the composite, but I've already opened an issue about that. However, as I watched the tutorial video on the Github page...I noticed it appears as if the Name field in the JSON that's generated and downloaded at the end is based off of the SYMBOL field. I'm wondering if there could be a field added at the very end once the NFTs are composited and generated, if we can click on one or a group of them and give them dynamic names just so that the name isn't the same as the Symbol which may not be ideal for many projects.
Hi everyone,
Another issue after #38
As said in this ticket, I'm only able to generate 100 unique NFT (see #38)
I tried to export these 100 for the candy machine, but I got this issue:
` download failed
ApiError: Not Found
at new ApiError (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/@google-cloud/common/build/src/util.js:73:15)
at Util.parseHttpRespMessage (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/@google-cloud/common/build/src/util.js:175:41)
at Util.handleResp (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/@google-cloud/common/build/src/util.js:149:76)
at Duplexify. (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/@google-cloud/storage/build/src/file.js:888:31)
at Duplexify.emit (events.js:315:20)
at PassThrough.emit (events.js:315:20)
at onResponse (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/retry-request/index.js:222:19)
at PassThrough. (/Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/retry-request/index.js:163:11)
at PassThrough.emit (events.js:327:22)
at /Users/bib-it/Documents/Perso/TreatBox_code/treat-toolbox/functions/node_modules/teeny-request/build/src/index.js:191:27
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
code: 404,
errors: [],
response: PassThrough {
_readableState: ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: null,
pipesCount: 0,
flowing: false,
ended: true,
endEmitted: true,
reading: false,
sync: false,
needReadable: false,
emittedReadable: false,
readableListening: false,
resumeScheduled: false,
emitClose: true,
autoDestroy: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrainWriters: Set {},
multiAwaitDrain: true,
readingMore: false,
decoder: null,
encoding: null,
[Symbol(kPaused)]: false
},
readable: false,
_events: [Object: null prototype] {
prefinish: [Function: prefinish],
error: [Array],
close: [Array],
end: [Function: onend],
finish: [Function: onfinish]
},
_eventsCount: 5,
_maxListeners: undefined,
_writableState: WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: true,
ended: true,
finished: true,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: false,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
afterWriteTickInfo: null,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: true,
errorEmitted: false,
emitClose: true,
autoDestroy: false,
bufferedRequestCount: 0,
corkedRequestsFree: [Object]
},
writable: false,
allowHalfOpen: true,
_transformState: {
afterTransform: [Function: bound afterTransform],
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: 'buffer'
},
statusCode: 404,
statusMessage: 'Not Found',
request: {
agent: false,
headers: [Object],
href: 'http://localhost:9199/b/the-elephant-house.appspot.com/o/bPnsEkYKnQGIscQBd7fb%2FFQ9L8rFa1ERVs1W3ENpf%2Fgenerated%2FraT2OhBxmw5hlLOCvqol%2F0.json?alt=media'
},
body: [Circular],
headers: {
'access-control-expose-headers': 'content-type,x-firebase-storage-version,x-goog-upload-url,x-goog-upload-status,x-goog-upload-command,x-gupload-uploadid,x-goog-upload-header-content-length,x-goog-upload-header-content-type,x-goog-upload-protocol,x-goog-upload-status,x-goog-upload-chunk-granularity,x-goog-upload-control-url',
connection: 'close',
'content-length': '9',
'content-type': 'text/plain; charset=utf-8',
date: 'Sat, 13 Nov 2021 09:17:30 GMT',
etag: 'W/"9-0gXL1ngzMqISxa6S1zx3F4wtLyg"',
vary: 'Origin',
'x-powered-by': 'Express'
},
toJSON: [Function: toJSON],
[Symbol(kCapture)]: false
},
bufferedData:
}`
Seems to be an issue with API
Do you have any idea?
Throws different errors when exporting composite on Windows. There is definitely some issues with so many and fast requests about gcs-resumable-upload.json. So I can't export the collection because the process stucks on 2100-2200 items every time. npm cache clear
doesn't work too.
I tried to add some interval in exportItem
method but still no luck. In this case it throw another errrors:
<...path...>\toolbox\functions\node_modules\@google-cloud\storage\build\src\storage.js:92
> const reason = (_a = e.reason) === null || _a === void 0 ? void 0 : _a.toLowerCase();
> ^
>
> TypeError: Cannot read property 'reason' of null
> at Object.RETRYABLE_ERR_FN_DEFAULT [as retryableErrorFn] (<...path...>\toolbox\functions\node_modules\@google-cloud\storage\build\src\storage.js:92:40)
> at Pumpify.<anonymous> (<...path...>\toolbox\functions\node_modules\@google-cloud\storage\build\src\file.js:2927:51)
> at Pumpify.emit (events.js:315:20)
> at Pumpify.Duplexify._destroy (<...path...>\toolbox\functions\node_modules\duplexify\index.js:195:15)
> at <...path...>\toolbox\functions\node_modules\duplexify\index.js:185:10
> at processTicksAndRejections (internal/process/task_queues.js:79:11)
BadRequestError: request aborted
at IncomingMessage.onAborted (C:\Users\User\.cache\firebase\tools\lib\node_modules\raw-body\index.js:231:10)
at IncomingMessage.emit (events.js:315:20)
at IncomingMessage.EventEmitter.emit (domain.js:482:12)
at abortIncoming (_http_server.js:532:9)
at socketOnClose (_http_server.js:525:3)
at Socket.emit (events.js:327:22)
at Socket.EventEmitter.emit (domain.js:482:12)
at TCP.<anonymous> (net.js:674:12)
BadRequestError: request aborted
at IncomingMessage.onAborted (C:\Users\User\.cache\firebase\tools\lib\node_modules\raw-body\index.js:231:10)
at IncomingMessage.emit (events.js:315:20)
at IncomingMessage.EventEmitter.emit (domain.js:482:12)
at abortIncoming (_http_server.js:532:9)
at socketOnClose (_http_server.js:525:3)
at Socket.emit (events.js:327:22)
at Socket.EventEmitter.emit (domain.js:482:12)
at TCP.<anonymous> (net.js:674:12)
BadRequestError: request aborted
at IncomingMessage.onAborted (C:\Users\User\.cache\firebase\tools\lib\node_modules\raw-body\index.js:231:10)
at IncomingMessage.emit (events.js:315:20)
at IncomingMessage.EventEmitter.emit (domain.js:482:12)
at abortIncoming (_http_server.js:532:9)
at socketOnClose (_http_server.js:525:3)
at Socket.emit (events.js:327:22)
at Socket.EventEmitter.emit (domain.js:482:12)
at TCP.<anonymous> (net.js:674:12)
BadRequestError: request aborted
at IncomingMessage.onAborted (C:\Users\User\.cache\firebase\tools\lib\node_modules\raw-body\index.js:231:10)
at IncomingMessage.emit (events.js:315:20)
at IncomingMessage.EventEmitter.emit (domain.js:482:12)
at abortIncoming (_http_server.js:532:9)
at socketOnClose (_http_server.js:525:3)
at Socket.emit (events.js:327:22)
at Socket.EventEmitter.emit (domain.js:482:12)
at TCP.<anonymous> (net.js:674:12)
>
> events.js:292
> throw er; // Unhandled 'error' event
> ^
> FetchError: request to http://localhost:9199/upload/storage/v1/b/test-nft-888d1.appspot.com/o?uploadType=multipart&name=%2Fcandy-machine-8b8b9087-43b0-482d-8b1a-b3c1dba47da6 failed, reason: socket hang up
> at ClientRequest.<anonymous> (<...path...>\toolbox\functions\node_modules\node-fetch\lib\index.js:1461:11)
> at ClientRequest.emit (events.js:327:22)
> at Socket.socketOnEnd (_http_client.js:453:9)
> at Socket.emit (events.js:327:22)
> at endReadableNT (_stream_readable.js:1221:12)
> at processTicksAndRejections (internal/process/task_queues.js:84:21)
> Emitted 'error' event on Pumpify instance at:
> at errorOrDestroy (<...path...>\toolbox\functions\node_modules\readable-stream\lib\internal\streams\destroy.js:98:101)
> at Pumpify.onerror (<...path...>\toolbox\functions\node_modules\readable-stream\lib\_stream_readable.js:704:47)
> at Pumpify.emit (events.js:315:20)
> at Pumpify.Duplexify._destroy (<...path...>\toolbox\functions\node_modules\duplexify\index.js:195:15)
> at <...path...>\toolbox\functions\node_modules\duplexify\index.js:185:10
> at processTicksAndRejections (internal/process/task_queues.js:79:11) {
> type: 'system',
> errno: 'ECONNRESET',
> code: 'ECONNRESET'
> }
I set the supply on 2000 NFTs but it just generate 120 NFTs. For each trait the "Total Rarity" is on 1.0 (so 100%). Do you know any reason why treat-toolbox generate less NFTs.
Tanks!:)
Hello, I've had an issue where the past few times I've tried to export a composite, the loading bar slowly rises, but when it reaches 100%, it simply gets stuck and the download modal doesn't appear, even after several hours of leaving the browser running.
I'm running Windows 10, if that influences anything, and am generating a collection of 5555 assets.
Hey,
First of all your product is awesome, and very useful !
I was just wondering if it was possible to add something where we can create multiple configuration of art.
Eg : A woman base body with certain items, And another one with a boy base body and certain items ?
I'm not sure if this was very clear but it would be awesome if it can do this. I saw it was doable in the hashlip generative art.
Best.
First off: Thanks for the toolkit! It's really nice to work with and there have already been some great suggestions for improvement made by other users that I thought about as well when testing a collection.
Something else I'd like to suggest is adding customisation options for metadata as follows:
name
property and do not force the "symbol #N" format hereexternal_url
property: custom url format / default to homepage for all / leave blankfamily
property and do not force the project name hereI was asked to create another ticket for this issue...
You can see in this screencast right when from the beginning that the TraitSet says '20' for some reason which doesn't seem to make sense to me. Its been a few weeks since I played around with this but it shouldn't say '20'. Think I only had 1 TraitSet associated with those Attributes.
https://www.screencast.com/t/I64VVhjYY
If cannot replicate, then I can try re-building my treat-toolbox again and seeing if occurs (Firebase deleted my database after 30days so might take few a couple hours when I'm free).
Recieved the following error -- all items were exported from the same photoshop canvas so should be same size
According to the Readme, a backup folder is supposed to be generated in the Functions folder which keeps track of all your changes. I used to see this on previous test runs, but I'm no longer seeing it get generated after running the npm command, so I'm losing my data. One way around this would be to just keep TT open and not close it until I'm done...but I'm also noticing performance issues where TT seems to be freezing a lot and not reloading. So I'm kind of being forced to restart without a backup.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.