Released a hotfix this morning to address a few things I missed after the update - some UI elements were layered incorrectly or nonfunctional.
Missooni
10
Posts
8
Followers
2
Following
A member registered Sep 05, 2025 · View creator page →
Creator of
Recent community posts
Another contraption! This one creates a pair of (configurable) canvases to magnify certain parts of your card. You can drag both of them around as you see fit.
Resize it to an area you'd like to use it on, then drag the small dashed square around to use the magnifying lens. This can help mobile users or people who are visually impaired see small components in your decks.

%%WGT0{"w":[{"name":"Magnifying Field","type":"contraption","size":[408,272],"pos":[39,43],"show":"transparent","def":"Magnifying Field","widgets":{"z":{"size":[116,116]},"l":{"size":[60,60],"pos":[122,3],"pattern":0},"zoom":{"size":[32,13],"pos":[368,-19]},"scale":{"size":[33,13],"pos":[322,-19],"value":"60"}}}],"d":{"Magnifying Field":{"name":"Magnifying Field","size":[162,106],"resizable":1,"margin":[0,0,0,0],"description":"Resizable contraption that displays large, zoomed in view within a square lens.","version":1,"script":"on set_scale x do scale.text:x end\non get_scale do scale.text end\non set_zoom x do zoom.text:x end\non get_zoom do zoom.text end\n\non view do\n card.show:\"transparent\"\n l.size:scale.text,scale.text\n l.clear[]\n l.pattern:23\n l.brush:0\n l.box[0,0 l.size]\n l.pattern:0\n z.scale:zoom.text\n z.size:(l.size-2)*zoom.text\n z.pos:3,3\n l.pos:(z.size[0]+6),3\nend\n\non secure x do\n mx:card.size-x.size\n if x.pos[0]<0 x.pos:0,x.pos[1] end\n if x.pos[1]<0 x.pos:x.pos[0],0 end\n if x.pos[0]>mx[0] x.pos:mx[0],x.pos[1] end\n if x.pos[1]>mx[1] x.pos:x.pos[0],mx[1] end\nend","attributes":{"name":["scale","zoom"],"label":["scale","zoom"],"type":["number","number"]},"widgets":{"z":{"type":"canvas","size":[96,96],"pos":[3,3],"volatile":1,"script":"on click pos do\n \nend\n\non drag pos do\n secure[me]\nend\n\non release pos do\n \nend","draggable":1,"scale":2},"l":{"type":"canvas","size":[50,50],"pos":[102,3],"locked":1,"volatile":1,"script":"on click pos do\n \nend\n\non drag pos do\n secure[me]\n z.clear[]\n z.paste[app.render[deck.card].copy[card.pos+me.pos+1 me.size-2]]\nend\n\non release pos do\n \nend","pattern":23,"show":"transparent","border":0,"draggable":1,"scale":1},"zoom":{"type":"field","size":[13,13],"pos":[146,-19],"locked":1,"show":"none","value":"2"},"scale":{"type":"field","size":[13,13],"pos":[128,-19],"locked":1,"show":"none","value":"50"}}}}}
RGB/Hex color adjusting contraption I made for a small project. :3

%%WGT0{"w":[{"name":"Color Selector","type":"contraption","size":[162,79],"pos":[177,117],"def":"Color Selector","widgets":{"rs":{},"gs":{},"p":{},"bs":{},"rgb":{},"canvas1":{},"hex":{}}}],"d":{"Color Selector":{"name":"Color Selector","size":[162,79],"margin":[0,0,0,0],"description":"Adjust color patterns by using their rgb and hex values.","version":1,"script":"on get_s do p.pattern end\non set_s x do setz[x] end\non get_rgb do rgb.text end\non set_rgb x do \n patterns[p.pattern]:\"%h\" parse convertRgbz[x]\n setz[p.pattern]\nend\non get_hex do hex.text end\non set_hex x do \n patterns[p.pattern]:\"%h\" parse x\n setz[p.pattern]\nend\n\non setz x do\n previewz[x]\n h:hexz[x]\n hex.text:h\n v:rgbz[h]\n rgb.text:v\n v:\",\" split v\n rs.value:v[0]\n gs.value:v[1]\n bs.value:v[2]\nend\n\non sliderz x y do\n c:(\"r\",\"g\",\"b\") dict (rs.value,gs.value,bs.value)\n c[y]:x\n c:\",\" fuse c\n rgb.text:c\n hex.text:convertRgbz[c]\n patterns[p.pattern]:\"%h\" parse hex.text\nend\n\non previewz x do\n p.clear\n p.pattern:x\n p.fill[]\nend\n\non hexz x do\n r:patterns[x]\n r:\"%h\" format r\n r:\"\" split r\n if !r[2] r:\"00\",r end\n if !r[4] r:\"00\",r end\n r:\"\" fuse r\nend\n\non convertRgbz x do\n d:(10,11,12,13,14,15) dict (\"a\",\"b\",\"c\",\"d\",\"e\",\"f\")\n show[d]\n x:\",\" split x\n r:()\n each v i in x\n i1:floor v/16\n i2:((v/16)-i1)*16\n if i1>9 i1:d[i1] end\n if i2>9 i2:d[i2] end\n r:r,i1,i2\n end\n \"\" fuse r\nend\n\non rgbz x do\n d:\"abcdef\" dict 10,11,12,13,14,15\n r:()\n each v i in 2 window \"\" split x\n each v2 i2 in v\n if d[v2]\n v[i2]:d[v2]\n end\n v[i2]+0\n r[i]:(v[0]*16)+v[1]\n end\n end\n r:\",\" fuse r\nend","image":"%%IMG2AKIATwGjAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAaQAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEDAJwBAgABAQIAAQEBAJsBAgABAQIAAQEBAJsBAgABAQMAnAECAAEBAgABAQEAmwECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEEAJsBAgABAQIAnQECAAEBAgABAQEAmwECAAEBBACbAQIAAQEEAJsBAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEDAJwBAgABAQIAAQEBAJsBAgABAQMAnAECAAEBAgABAQEAmwECAAEBAwCcAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQgAAQGhADgBBQBeAQEAAgEBAD0BAQBgAQIAAwEBADoBAQABAQEAXwEBAAIBAQCeAQYAOQEFAF4BAQABAQEAAQEBADsBAQBhAQEAAQEBAAEBAQA7AQIAYAEBAKEBBgA5AQUAXgEBAD4BAQABAQEAYAEDAAEBAgA6AQEAAQECAF4BAQChAagAOAEHAFwBAQ==","attributes":{"name":["s","rgb","hex"],"label":["selected","rgb","hex"],"type":["number","string","string"]},"widgets":{"rs":{"type":"slider","size":[106,14],"pos":[7,18],"volatile":1,"script":"on change val do\n sliderz[val \"r\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"gs":{"type":"slider","size":[106,14],"pos":[7,33],"volatile":1,"script":"on change val do\n sliderz[val \"g\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"p":{"type":"canvas","size":[44,44],"pos":[115,18],"locked":1,"volatile":1,"pattern":47,"scale":1},"bs":{"type":"slider","size":[106,14],"pos":[7,48],"volatile":1,"script":"on change val do\n sliderz[val \"b\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"rgb":{"type":"field","size":[94,15],"pos":[68,64],"volatile":1,"script":"on change val do\n set_rgb[val]\nend","font":"mono","border":1,"style":"plain","align":"center"},"canvas1":{"type":"canvas","size":[160,14],"pos":[1,1],"locked":1,"script":"on sendz x do\n c:me[x]\n if c=0 c:32\n elseif c=1 c:47\n end\n setz[c]\nend\n\non click pos do\n sendz[pos]\nend\n\non drag pos do\n sendz[pos]\nend\n\non release pos do\n \nend","border":0,"image":"%%IMG2AKAADgEUIRQkFCUUKBQpFCwULRQBFCEUJBQlFCgUKRQsFC0UARQhFCQUJRQoFCkULBQtFAEUIRQkFCUUKBQpFCwULRQBFCEUJBQlFCgUKRQsFC0UARQhFCQUJRQoFCkULBQtFAEUIRQkFCUUKBQpFCwULRQAFCIUIxQmFCcUKhQrFC4UABQiFCMUJhQnFCoUKxQuFAAUIhQjFCYUJxQqFCsULhQAFCIUIxQmFCcUKhQrFC4UABQiFCMUJhQnFCoUKxQuFAAUIhQjFCYUJxQqFCsULhQAFCIUIxQmFCcUKhQrFC4U","scale":1},"hex":{"type":"field","size":[57,15],"pos":[6,64],"volatile":1,"script":"on change val do\n set_hex[val]\nend","font":"mono","border":1,"style":"plain","align":"center"}}}}}




