From 527e2f6d413dab563296514b7d1aa6ae4e913ec1 Mon Sep 17 00:00:00 2001 From: engmung <122682380+engmung@users.noreply.github.com> Date: Sun, 13 Sep 2026 17:24:36 +0900 Subject: [PATCH 1/7] journal: new post "good-but" New post (ko+en): the campaign jumping from 75% to 132% on Crowd Supply's wholesale order and the bruised pride that came with it, the first artist edition going to a San Francisco pop-up at $500, why advertising the campaign no longer makes sense, and Instagram going quiet despite the GPT Astra patterns. Two images: the funded campaign page (also the cover), and the three Astra patterns joined into one strip at an exact half scale so the pixel grid stays crisp. Co-Authored-By: Claude Opus 5 --- web/content/journal/good-but.en.mdx | 33 ++++++++++++++++++ web/content/journal/good-but.mdx | 33 ++++++++++++++++++ .../journal/good-but/astra-patterns.png | Bin 0 -> 42124 bytes .../journal/good-but/funding-success.png | Bin 0 -> 345757 bytes 4 files changed, 66 insertions(+) create mode 100644 web/content/journal/good-but.en.mdx create mode 100644 web/content/journal/good-but.mdx create mode 100644 web/public/journal/good-but/astra-patterns.png create mode 100644 web/public/journal/good-but/funding-success.png diff --git a/web/content/journal/good-but.en.mdx b/web/content/journal/good-but.en.mdx new file mode 100644 index 00000000..b3bbe143 --- /dev/null +++ b/web/content/journal/good-but.en.mdx @@ -0,0 +1,33 @@ +--- +title: "Good, But" +date: "2026-09-13T17:10:00+09:00" +excerpt: "Complicated" +cover: "/journal/good-but/funding-success.png" +coverCaption: "Funding goal met" +hideCover: true +draft: false +--- + +The funding goal is met. It had stalled at 75% for a few days, which was eating at me, and when I checked this morning it had jumped to 130%. Wondering who had bought that many, I checked, and it was the wholesale volume Crowd Supply purchased. I knew they buy in proportion to individual orders, but I'd assumed it would be added after the funding ended. It isn't a bad thing. No, it's a good thing. Either way the funding goal is met, so one thing weighing on me is gone. + +
+ The Crowd Supply page at 132% funded +
132% funded, thanks to Crowd Supply's wholesale order.
+
+ +My pride is a little bruised, though. I'd wanted to hit the goal naturally, by advertising properly or something, and it feels like I used a loophole. The feelings and fatigue that piled up each time a backer appeared and then it stalled again must have turned into some petty stubbornness. Without that I could have been purely happy about it, no lingering unease, but I'm greedy that way. It was like this before, too, when I placed in a small media art competition. My friends were delighted, while I felt disappointed and, for some reason, aggrieved. + +Anyway, the funding is off my shoulders, and something good happened too. Patternflow is going to be sold as an artwork rather than a product. An offer came in to open a short-term pop-up gallery called USER EXPERIENCE in San Francisco in October and exhibit Patternflow there. Exhibiting means shipping it over, and round trip alone runs about $150, so I said I'd also sell it as a limited edition while I was at it. I proposed $500 cautiously, so as not to be too burdensome, and they accepted right away, so I'll be sending it soon. It's effectively the first in the artist edition series. I'm going to sign the model I liked most, the one I'd been using for Instagram shoots, and send it with a certificate. Hyunji, who's done this before, helped me out. + +I think the museum newly opening in Istanbul would have signed immediately if I'd proposed at around this price. Which is to say $500 reflects a heavily discounted version of the value I've held for Patternflow as an artwork. I feel the loss of that, but I need funds right now to build spare units for advertising and loaning, so it's perfectly suited to that. + +I've also been thinking harder about advertising. The funding goal is already met, and the net profit from selling more isn't all that meaningful. There's no longer a reason to advertise the funding. Selling one unit brings in roughly 80,000 won. Assuming I run about two weeks of meaningful advertising on September's 3.5 million won grant, I'd have to convince around 50 people to receive that money by late October or November… and a shift of that size wouldn't make a meaningful difference to developing Patternflow going forward. I'm going to go toward open source and the artist side anyway, in line with the original intent, so it also feels better to put the grant straight there without the delay. Whatever~ + +Instagram has been pretty meh lately. I posted some slick patterns made with the recently released GPT Astra and the response was below expectations. I'm tired of making new patterns, and linking them with sound is too hard. Discord has basically died and I should revive it but I can't be bothered. The Astra model really is remarkable, though. Later I want to have it do pixel art, placing pixels one by one. + +
+ Three pixel patterns made with GPT Astra +
Patterns made with GPT Astra. The response was below expectations.
+
+ +There was something, something… it felt like there was a whole lot to write, and once I started writing I forgot it. I have to write the Crowd Supply update post too and I can't be bothered. Suddenly everything just feels like too much. diff --git a/web/content/journal/good-but.mdx b/web/content/journal/good-but.mdx new file mode 100644 index 00000000..08620c09 --- /dev/null +++ b/web/content/journal/good-but.mdx @@ -0,0 +1,33 @@ +--- +title: "좋긴 한데" +date: "2026-09-13T17:10:00+09:00" +excerpt: "복잡하네" +cover: "/journal/good-but/funding-success.png" +coverCaption: "펀딩 목표액 달성" +hideCover: true +draft: false +--- + +펀딩 목표액은 채웠다. 며칠간 75%에서 멈춰버려 신경이 많이 쓰였는데, 오늘 아침 확인하니 130%로 뛰었더라. 누가 이렇게 많이 산 건가 하고 확인해보니 크라우드 서플라이에서 도매용으로 구매해준 물량이었다. 개인 주문량에 비례해서 사준다는 건 알고 있었지만, 펀딩이 끝나고 나서 추가될 줄 알았다. 나쁜 건 아니다. 아니 좋은 거다. 어쨌든 펀딩 목표액을 채웠으니 마음에 걸리던 일이 하나 사라진 셈이다. + +
+ 132% 달성한 크라우드 서플라이 펀딩 페이지 +
132% 달성. 크라우드 서플라이 도매 물량 덕분이다.
+
+ +자존심은 조금 상한다. 광고를 제대로 하든지 해서 자연스럽게 목표액을 채우고 싶었는데, 뭔가 편법을 쓴 기분이 든다. 백커가 한 명 늘고 멈출 때마다 반복해서 쌓인 감정과 피로가, 같잖은 아집으로 변했었나 보다. 그런 게 없었다면 찝찝함 없이 순수하게 좋아할 수 있었을 텐데, 그러기에 욕심이 많다. 예전에 미디어아트 공모전에 작게 입상했을 때도 이러긴 했다. 다른 친구들은 좋아라 하는 반면, 아쉽고 왜인지 억울했다. + +뭐 어떻든 간에 펀딩은 한시름 놓았고, 좋은 일도 생겼다. 패턴플로우를 상품이 아닌 작품으로써 팔게 되었다. 샌프란시스코에서 USER EXPERIENCE라는 단기 팝업 갤러리를 10월에 열고, 거기에 패턴플로우를 전시하고 싶다는 제안이 왔다. 전시를 하려면 배송을 해줘야 하는데 왕복으로만 150달러 정도가 깨지기에, 이참에 한정판 에디션으로도 팔겠다고 했다. 가격은 너무 부담스럽지 않도록 500달러로 조심스럽게 제안했는데 바로 승낙해서 곧 보내주려고 한다. 작가 에디션의 첫 번째 시리즈인 셈이다. 가장 좋아서 인스타 촬영용으로 쓰던 모델에 사인해서, 보증서와 함께 보내려 한다. 먼저 해보신 현지님이 도와주었다. + +이전에 이스탄불에서 새롭게 여는 미술관에도 이 정도 가격으로 제안했으면 바로 계약했을 것 같다. 그만큼 500달러라는 가격은, 내가 생각해 온 패턴플로우의 작품으로써의 가치를 많이 낮춰 반영한 셈이다. 아쉬운 마음이 크지만, 당장 광고나 대여용으로 사용할 여유분을 만들 자금이 필요하기에 거기 쓰기에는 안성맞춤이다. + +광고에 대해서도 고민이 커졌다. 펀딩 목표액을 이미 달성했고, 더 팔았을 때 순수익이 그리 유의미하지는 않다. 펀딩을 광고할 이유가 이젠 없다. 1대를 팔았을 때 대략 8만 원 정도의 수익이 난다. 9월달 지원금 350만 원을 바탕으로 약 2주 정도의 유의미한 광고를 한다고 가정했을 때, 50명 정도를 설득시켜야 10월 말이나 11월 즈음에 그 돈을 받을 수 있는… 그 정도 수치 변화로 패턴플로우를 앞으로 발전시킬 때 유의미한 차이는 없을 것 같다. 어차피 상품 쪽보단 본래 취지에 맞춰서 오픈소스, 그리고 작가 쪽으로 갈 거니까, 딜레이 없이 바로 거기에 지원금 쓰는 게 좋을 거란 생각도 든다. 아몰라~ + +인스타는 요새 영~ 별로다. 최근에 나온 GPT 아스트라로 만든 까리한 패턴들도 올렸는데 반응이 기대 이하다. 새로운 패턴 만들기도 질렸고, 사운드와 연계하는 것도 너무 어렵다. 디스코드도 거의 죽어버려서 활성화 좀 해야 하는데 귀찮다. 아스트라 모델이 기가 막히긴 하더라. 나중에는 픽셀을 찍어서 하는 픽셀아트도 시켜보고 싶다. + +
+ GPT 아스트라로 만든 픽셀 패턴 세 개 +
GPT 아스트라로 만든 패턴들. 반응은 기대 이하.
+
+ +뭔가 뭔가… 적을 것들이 굉장히 많았던 것 같은데 막상 적다 보니 까먹었다. 크라우드 서플라이 업데이트 글도 적어야 하는데 귀찮다. 그냥 갑자기 다 귀찮다. diff --git a/web/public/journal/good-but/astra-patterns.png b/web/public/journal/good-but/astra-patterns.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d685d42b6b4088bef09bab052cf79a66bc0252 GIT binary patch literal 42124 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

LU63LMx)$gC5PN3(9Q7KIk zZprAiy7CJ!A6Y^{%$Z19!W)?e9wEUHaW|bBfm}=N?gY}_KbHjl&$j1VbjddfC70yX z-xsfQII4IEYBgY6;*-$9G748oFfwcBS-j*JUKi@3r7MX6J=Lq>*9j02O#c|&_sEso zRx`DhmAc{!D1G&_^_^j6-jDWSCKm=Npzl?6!2|V4r!PQ)rC0=AoA_LIl4GS3RCiCU z3?v*l6FxeSASaDJkkR30<lCRjK}FHG4?B58%+mgBuk92YoXb=qPkPjC}%`nL%}1 zB)|P?3t2Beio>s{s;Um`{6@?XfIOYPV5HJ~FWFjP-^o>i{70Ql_pLqshxDZM_h}YW z+qqyUDttyhWZ2HJxYtKzn$?3;-k6q42UVv=auxJp zn*lf>mkB0e=2eHhNOhOQf#QAWzV+d(fgQ9F_L{h1uk}+v#tlC67%u-@~t*tD_Gi$ACj6YAXENa~E zfUi^X{k2d|pWL9HHpT@t^Y!RT-|J^4Q+ktax!_RuVlIc&7D#GR4`S*Rv@NR3)5e7D zmE$6m6%yFio9fKYQJj``<jHQpB!b0NrXY(M@qCj;emBmC-o z8gqUvG#MSxffIAWk02w1uO&g!YkeDh7>v%*mE~wF?V7YtoYDe$XcRN42{Z z`|TkDWs2JE6Gj23s-a+iov&Eo%AE!QZf=NJU2v_mIxi{#79MpOHOJw5hPOJ;7Y^$h zg4<~&_dzesZKM}qNdvH=vU#Px;%Ok@P@jze(!7Jr)p;1^pmvj^AgK69W!dDCkndDtAQSmFR}U( z@cZ(aKaKt?=;WEtWcrw5L%5Z9vNJrY_S^Q2g%%;u$-mepr1oBt64(wd6xPxj3g*n- zH<1c-R&XHWd>yWZfq9=AT%dzmT{ugPEi%3hiJzv$RQ7%r4P`MB8N+oDG~(t{HHW9& z#SC(#CKOP=t+pS1t0PN~kJ=&6GD}D1S0+O<74cx-!$(!llDM6=_-wwSpuo&WL$3b} z);Q2?R3kmEE)n6EKsKhm?$#6w$Q5u!w64#vhbHNDXI;WJL`=@&6GU9~S+lv`-XELW z6kR9Mo=uBT^~6Di>jiw-bvIZqgu@ZKfV@62Nk5yH&+lXSQQ^;wUq1ik%oCI*Eh(uk zU@^~*+GMBqhlpJF@OXXu+uzqV$h@5reSb8Hwt}2J#VOZK((O_U#2%-bKES<_hD<$o z!Hcz(jfZf`!%e1!A1WDXj^-x$l}HdT7ux47=O~+q5b+bxiDM@gZ2|KF5`50vV@OhN-uvlBI(J0frL=2O9%DmE*jPhOyZ1^;) z40d*wnTc(q=pU0;1TS3A)zbSdBEhnL&0UzmPMlM;Q>vz77q4pS3g?7K{uIX ztDQ&r9&KOXX#arJ`S15jZjk@!@JnUQ>ZkIk+LL#b>%y8P)N3648>*ECA%P!my=nRm zkkzVqK=q&f^_#xee|*&^zT@mkYq-03Z3+i|w_v!*V)4|}lz2cVNkUs3v$jysjxtk% zZq9G&W=32pt1X`1qz#VkS652E`K$;~8va8=`>P`dGiM0$hi@+6d243f=C|2(`>^M{ z&D1mFP5V~lqYm}^nobr^o2r{C&pYhLSpb%?vm&FD^SPkqhcP+ga-I$evutsGK-3s1C8iL-{nlUJ6o#8LR4C17we(b=L~vY`%td{)P<^sNjj(zbCdjf)~zAGw?8i(NJu3OC|;R9$BcH|-NF z(!N~Ut!MYd72F=gMgz@9MMeB}<+qVmwkf1G5mv>biH~g&j6WJ#UcjFF`R4xvF^{51 literal 0 HcmV?d00001 diff --git a/web/public/journal/good-but/funding-success.png b/web/public/journal/good-but/funding-success.png new file mode 100644 index 0000000000000000000000000000000000000000..d66e29f6f14501ebc7be0326f89c0c7a8d6337d6 GIT binary patch literal 345757 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%0DP<4=l8-_6$!4&YLtCSC3*Ri!OSbx6bG! zuZ0V^%mYUm%7`IaLxdiPXW4p*VC8nQD3{+vkXfxaMz3jCXjw;9?8zVvG_qj^yLUcU zHjcu>0vr&07P&Xt%4`W0WL6zm2DPaQe0;O3h@o0a%2Ye6YhC8qPJ+>sOJ(KvCJS5SK5%;3*ySw^Zi$#)# z6zV+xTk)mPXKK7}NaR}r8Siz?%&rNpUeI7aIb6T7s{6qw@&FIt`rBR8whwP+w;76m zgiX0H=67FLa2=(>V#hbD{vS-D+h3Rl{a)_QTQge%<>z_vnbl)6e4RzYHimDlIpX8C z$jL8i{yx`5wnByMC+9m8+F0YmR}^#fSzXU{q9m^B*kNFA{jn6$PC8Zc~ksf}1e?bj9cQrF?0!dBFr&gpPZygP&Bledi7?%Yu@}mAVae z=bG$vIV#(O_IGa(VF^Y?sTVbMgo^Pcd5Y5UG-D3IB2sdh5=z$_CL3@&1{7j|LIfjXsYp(@eeSU_g4 zT_uUqpbDsT4UG2RmrI-+HSs|yeV!DdRx0f-jXt3@GSOLqa&NRM7a2*znVG4+MwQ6r zmdwjDl^FB(R3}J8tP&_WYmu3)h*gJbd_;Qfm{mcjHa350RSEurXp>y>Vc!f1p&~>j2V3a;Rto}PUB!X{RIAV#;I?h`~<%JOc z!nTTmq2Z1~;FIOgC#aEW2x-C8IA4;~9fP&@;s0AuUxAWMd`Aw@X$rxmwJubSjzlbt zgox7~#SP5Pit0J~=Qi0H^Wu$ol5^eDf(4OzbK06JU-jYm(jt2%@LgwM7x3SN$ibrM zqcY;>1v97KwyDP$}es1-Id9E=tR?Kg)kK7LSPW|NDow7`kn3;>Fi6EF1lI`^x)Sh`W;L$E zi^^H08ij|%wQn~L@0W2^5W+z1cX78>$)dI`tW|>)(LyU;hNLx`Bc(nD21>Brl)tv= z>dn4MRYgr<)vyP~OTj4}?GZl797#H}2_?S-n?c3ltwZ1L=Pz}~#Yl8sI;g6_?uDxp zd0t*zv$5M8D}l?%9JKVS5ZVd1tgyJ#Z`>S5Pl?hdvS8&!=sd?p$tuK3#v`#`{%qEe ziS>(BUpnTt1kAE-d=YMu6jbexQdhztR?EY%_64mPj_KNft^F z(XTVEAkbwitjRtQQUd`c>WQ9S!YtWL0mHJi5-4Np)EErr&mG>S?{{D1G)C2(>c$TrVj!XkSo{=1yzw3L9am{;a*#6 z7;g4mV4a0c#b?FxyCGkvDKJtaz*^i6Sek<%cM>7ryzE0q- z&YzJo6zR-TnG8;BWar79(pVAzl!}#Khy27dimT{r6@rrmerESs{;^eYu^K~ytJ-Sh zgvjx4p?P@cN9adP#O*Zg-|WyoQ20+2lU6Pc(0S+7RRzL#cr}$j(D(*#wRmjbtpy3I z@ZP6wkx^j_?oka6e>fE_r>$NR%6LVg1f>EDrge3JF)TXJ3P1@tM!5;;-lOzeohyiz zMOAjh&_jSCrDy2+l6nU)nvs!>>^T zPvdSOSV|WO)NwEcDwu<~IVfKDTPkqWMtUXqIY+TizA5%;Dh@p6 z78FsIVkf@xtDwk`2?Qas&0kaTTa+^gNtp_dASefpr~old!f?RS+lir80D=N0)wCSQ z4|pW=`AXc6YO4HO_)-u(rW2ivAIwZ3jrRSDL>(_uhlSJSBK0F(IX$&xeQW>)EG3n5 z!$QU7!BBdCN0|LNHThn?=+D=wmb2@|xm#>bz$p3(Q03Ia8WRDN59YjE#Fu^b-wfS* zYdr{iH?fpPL`d#;4>`8N@4 zP&AQt#+MO)rqkwBrn@?i>vxItJ4K$NE3#QApWlmu+`F=)k;UH=X`#5B3|7htWi%@d z(*vKIfx>;s-RQM*;n;42fJ-sExzo~7Sfb8i1ttH}xqsoc68*l!FUNvp$2ZRbuk#yf z6=O@R)0zp?xFS!YcB=rt)CwCuLhCT#cf+Onh?U!&?Zd9UA2rHUfnH%kfgm)!IO~~ zs&3cYGOFcs`y%51gX*{Z2HwBdCGuxlm91X=&{C!O{#98MsjjYWJq#9p@bT5Z1p+Ww zY;5Ct*>8DrC#{|v+1YCjgdk=5tm(w%;^sW3@@HU)TfrhS-p@8+4mAf+^+1}A6%(61 zD-PV(z7#oT_052LTu#K4Xh+GPp8qC-zkdFUKidYYf50!eg_duRst5DFm3*@L50+XV z@;6xA?eFjQv&+t#>Ax>(fp@uo6J3MvasdFl(|s!_;O4p?XJ`8s_#J#x8Mp|b0Oa?% z#Y5L?J3vGu(2dYpsBk1sEW9g847vO5e91Rm-!f}ZHQFk!oYtY^|06ZcJ}X-4m$Zjt z&h!tWD8rVqhIfZU@M$6#SeowpL`g5QaxK_c&DD@@r@d&G7ACxzw~_m!pn6>=c`_z? z|4zVLs`9XeB3)grElF71CCpxYWa#ab=^iNRj<9?^ur{BGAeKULRDp?aZQruVyA!T( zJa_O$q~mC7~eAUf<+5{lrR_8Izs7v6u#WAdv8)4nx7yYN{j2B`n{PM zZ#Mfn<_~yXQHZxEBA{TKiRPDq|L1}?EI@U0vB{%eseeLm@0a_Tv(-)$3&XGZEJI`4Epl6Q-wP$?u&e+y8OB=1fpz ze6_$xVF7#g%>PO=S((IAk6dT=cC&v0+uJzK*Iia;vb}leGrKaOHC$-D%Le{`KxJkE zlFdQ7NITYhP9TcyHrcX5)AIoQSrxg)PazuSO@!4%cy7v+?t(Jx)+v;8k4K*rbF3B; zzwUD-xj#F(H{$vr_}X*fRpY~Jp`SR0&Bei!8*~y|eK}fF`azvSN^MYuwJv(}YmL?b zazYxR@HFm?OJ|t*fs8(3TAij}#H{-#ndS}hsc&TNE|wkVQF|O4u#H?mAh1uL3*EIF z4sA0dXA)WgQgPO8#4?giy_j(}Z0bjdJ4 ziXDJqhNaR~AcQF8a7m2=L_Luk{YHKX4^Kp!()fW%DGBa&^wR+{#!zI{Liwbz?iVjG z6IOHb!Y}k{TQ)iciN^6W>qZG1TB_}*mkwV<&URFvtut_f8r8l^%&v8HF6{(oKTJ)U z*Ss7}nR;~!k%enD)ftktsLGkq$=uQ2bZOVYu(^?o&Dd(iqW7g4JdvdjG08S3&m1iE z2It&vpoZV(WtgZ42ex220eC+2@VK-Fl2lFdw3m~72pwMQ9PKi+% znGCU(=Y>C*1PPe@&EJX}^-CO`#UCpguzLq@VcV!N=||u^^Y(k&hS>W*$nN=YC^%H9 z#7_c1#sUIh%g8q^8BzCthH-vgY0&shc55bN++7H>pEGo zZ+JObqhtm8`Q*{DA~VQPhk;Wzt?K8>_)!(dZ^<&Tz`Q9-bqJ6qL5uN#nRtCO|4!TN zBCjjnN6m|{U-c436z$SVW5*XlVH(Sv{u5;OfjHi`tK;28?J1lSCn z(ol6rmAuP^nw*0TI{MGOVl@0x!XrN;4x}aH7DsF7Mf8y|k$%JWYwwP-LJXjL9{@!r zbkaJ#_skk%VjT5X)oP_YJTAAD%yy01X_|M(elK+c*8*mZ1&=<80f9g4jzOaC1$&7y zNkdGf>325us#?kv07eG$d%B0TCMb=$8P}^R104icR=b^mlQ*k!taKnHSl;mG$P!HV z2sMS;9uf-Xzr2nD`$IHSrcC0rtWVhxQrB2-_X9`m(8K?)xhwsLa_!^x3>{lyBD+`wqm)Ct=zu))wU1IcH%3Tj~&-KP@991|txnc%UoBI+{`;_PMJzl*# zGk5jIM$NGw*9~)1C~<#i3m%A7izd&(6?0)I`k=S_nH5mkKG|29Q1}gYt2(anxC)x3(ULmg#yMY}Cj5{+9Rh5--ihDVVr{=MF_Yh{&*C ztTdpQP~ErA+9t!*)-tZh*d8u@-SMeU+V-IQ-m$s0!J)5r|LMX-^3arK=?@{MWaC({ zOG{N>qj@GAfcXUJMb%JEk{@@O{&f~2iOIgW$F%dhcRgBYT!AQSH0Jw?K0_&auztB- z8Ecvg)ofwfDRapL=FdcDD|$<4C2nr=$Rym#p;g z&xU0^j3JhI2K;5I#IcpB4yk?lXv|T=4pXa$qEZ5d#<0{G5P#Na8o;722#ikh7ItOr zt>Q}iM3>y{u`MHc_pY=d*A-$`CNP28sm^B8`8v2(CDF~4M;00|kWF0iYm#H6{y{IS zT=g$jL$M>h!YKMvX6bY~YS3;3-lN|pXX0^2Iy&`M_tI{6L_v+<2DsKw3SH$Y2$A2@jvX<7}q^kxWjADg^nj+W@ zx&Ya#OSsn2+Z+F7=0)zHVYmFDGQ1|Bdc43j8q>h0n_b5CrIO(Wds3T}v`DLn7*x5Y z1w6&;q*+MIY5ZrN71;^!-vtI+Ut)I${o^LFqdzBZ>-Zil0N5#ZJ7Urux(R&(j-#%A-e2y#R+5!@a zb-~z=NKuVW9@*yw!k&pzowL+1(z7_UZA}c2%-P89Cb}0uPu-8Q2J-*ZpwyZbzIDbs zOQ(iAGoi$`KndQ&_~wdoG+N$h9eRGR-okq+I&wnp%VU6?v|xUf*lPrKv=Vgz`dQhly%BK2cD2>xpweYny`PEvKBL&8%x-v=-9_SWabd_0&3tz0wbI>X*0f?r*}AfI@!C!>grhZ2p4Nep}16{ZtskXYg{6rIQH|+&|tyi zqScG(N(J%sV5*aCe_3z(7Up>9*cF-K_*IvzPt2(_RFwX&dKf;s>Urp;l15-h^7 zBT#zYM;r--S*i&CMp}j_K@AdFM}l%Xi8zcH#bk3`CBjn|1ju~aqR}6cXP-BW&(~%d9dSc6K`>u(k!VNgyKBMUzd(h_#il< zU||d3I8xeD1x2JW_qAyFu_=QNJ5v}oT`umOl+TG!L%_KumpgEE=IiC*rXTo6l~;kk ze_Ab1U-gD|)qd70xieuX(8n8~W$oFh0djY;Y_~KJp9g*j0kodr(+?CxITeI9MACZa z;R|)KBmpM2y6dthyY%ags``jaQ$xH{{o)YE>V+C%=;mJ^LhlFtf6Ts%eQF=m2Di1MsYGpE{TvGfhcRa22( zTfhH^zr3FBLtkmsfx9nY#~ftXs_5hxrHo*E0NnumY-pm_D&#}=TuwE*h!-b>_nR9s zqKktyLu-425CBpMnh7WX&Y$)u>;BiWq$Y4r?_-h1wrYw=X3Ts_zGi*a`q}I{`P7e{ z;b%km$p+v?YjbP&QT3)7BG+uO@2Li?=ee0oHfJvi6?dcBh7<@TB+PV%tF4~+mk5m5 z^M*&Iaf^*TZ{Im2{ET2TqFwb7Vkg$Gc)qgv<^BiBfT66~zbZZ^e-m^(lS$Y$7>V^_tC=2gx8qwN2W56s zvWHbAG2{h3{!I7s32fBDC;;&p-h0B!@?%+)y?o<&SUOh&0Eb5A#N*$@=!F^{1vU9n;Bsi|ZQ=k~H> zK5C6KO*4sRSo|IQ>1=9QkwDmuxnCr6y2L-Y`%L627kWR{?2glhbmqA38}&!)-%d&d zThPg|fzx4`2$_NHwF>XqHjAa(H~MhqeF;Z18dO{uL2u;xU&Gx_r)d^&WC3fW{>s>; zE4r^xB3=goLuKn|8@kV0MT7szx|5GjK z_aFk;xc@;4`^|Mwa@w~eGd=J_C{$ODJYc4MN_aP$N~@PK@dBZ@*M4afz6lifKsmCW z+wPt+7ao~t(KI%~T)5-3tuxMQx43&d1EIUu!=rW93IZdltgole$A2n*j#Q>#aLzSi z!44RTOilPL6EY1wBB=hFz$CS&B%#nNvEAAbNHK4kgQZaRdh91mZ=Rnx(C1JU8G+H& zIIZSLp?nE!IrTo_j+PzfSz`M+CDXYkEY}^gd7@HbuS1EBO4>pI0Z6*ER-4}lGmC?d zGr8WS=i3q%d+jibiwFO@a5^r=B95tw#xuaq=$GK@wB5}NGo8>t*2mHE?+Jb_*gb!| zt1@~-JX9wB9s~$?hpfO?gaA)ak0-k3aQV^-qBU;|BeJeaHmAjSS*^i6EtT?tI>jW^ z44j8tFFWTYB=#pX=>K&@QDuA5^e1wK@NbksS^ixAms%qB_X4TZ7s2|uZ~o^4LnV}ln*SdG6601wL1&7s~tApJkbju?^v literal 0 HcmV?d00001 From 3b82597686ab93608abefec117cb8acff4166fb7 Mon Sep 17 00:00:00 2001 From: engmung <122682380+engmung@users.noreply.github.com> Date: Mon, 14 Sep 2026 03:39:12 +0900 Subject: [PATCH 2/7] docs: standard community files, dead Discussions links and pattern-PR invitations removed Adds LICENSE (pointer to both licences so GitHub stops reporting the whole tree as CC-BY-SA), SUPPORT.md, CODE_OF_CONDUCT.md (the manifesto's sixth section), SECURITY.md, CITATION.cff, a root CLAUDE.md shim, .editorconfig and a 'Share your build' issue form that replaces the Discussion template nobody could open. Discussions stays off, so README no longer points there. Patterns are published from the Pattern Lab to the Community, not sent as pull requests; CUSTOM_PATTERNS, CONTRIBUTING and the PR template now say so. Historical banners on docs/releases/, four stale one-liners fixed, unused release.yml removed. Co-Authored-By: Claude Fable 5.1 --- .editorconfig | 19 ++++++ .github/DISCUSSION_TEMPLATE/show-and-tell.yml | 29 --------- .github/ISSUE_TEMPLATE/config.yml | 5 +- .github/ISSUE_TEMPLATE/share_build.yml | 63 +++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 1 - .github/release.yml | 22 ------- AGENTS.md | 2 +- CITATION.cff | 26 ++++++++ CLAUDE.md | 1 + CODE_OF_CONDUCT.md | 28 +++++++++ CONTRIBUTING.md | 8 +-- LICENSE | 13 ++++ README.md | 8 +-- SECURITY.md | 20 ++++++ SUPPORT.md | 17 +++++ docs/LICENSE-SUMMARY.md | 5 +- .../2026-09-firmware-runtime.md | 2 +- docs/releases/v3.0.0-launch.md | 2 + docs/releases/v3.0.0.md | 2 + docs/releases/v3.1.0.md | 2 + firmware/CUSTOM_PATTERNS.md | 10 +-- web/ARCHITECTURE.md | 2 +- web/content/inside.md | 2 +- web/src/lib/presets/_TEMPLATE.ts | 2 +- 24 files changed, 218 insertions(+), 73 deletions(-) create mode 100644 .editorconfig delete mode 100644 .github/DISCUSSION_TEMPLATE/show-and-tell.yml create mode 100644 .github/ISSUE_TEMPLATE/share_build.yml delete mode 100644 .github/release.yml create mode 100644 CITATION.cff create mode 100644 CLAUDE.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 LICENSE create mode 100644 SECURITY.md create mode 100644 SUPPORT.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..c86d5ffd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +# Keeps line endings and indentation consistent across editors. Not enforced by CI. +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{ino,h,cpp,c,ts,tsx,js,mjs,json,yml,yaml,css}] +indent_style = space +indent_size = 2 + +[*.py] +indent_style = space +indent_size = 4 diff --git a/.github/DISCUSSION_TEMPLATE/show-and-tell.yml b/.github/DISCUSSION_TEMPLATE/show-and-tell.yml deleted file mode 100644 index 4f686b0e..00000000 --- a/.github/DISCUSSION_TEMPLATE/show-and-tell.yml +++ /dev/null @@ -1,29 +0,0 @@ -title: "Share your build" -labels: ["area:community"] -body: - - type: input - attributes: - label: Project / Maker name - description: How you want to be credited on the globe - validations: - required: true - - type: textarea - attributes: - label: Short intro - description: About 3 sentences is enough - validations: - required: true - - type: textarea - attributes: - label: Links - description: Your app, project page, video — anything - - type: textarea - attributes: - label: Images - description: Drag & drop ~3 screenshots or photos here - - type: input - attributes: - label: Location - description: City or country, so we can place you on the globe - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index aca53363..e67ad620 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -8,10 +8,13 @@ contact_links: about: Stuck building or flashing? Ask in the hardware-help channel — photos and quick back-and-forth. - name: Share a pattern url: https://discord.com/channels/1497757947827327067/1499908302962819236 - about: Show a custom pattern you made. Develop and test it first in the Pattern Lab. + about: Publish it from the Pattern Lab to the Community, then show it off in the patterns channel. - name: Discord community url: https://discord.gg/Vr9QtsxeTk about: New here? Join the server, then jump into the channels above. + - name: Getting help — every venue in one table + url: https://github.com/engmung/Patternflow/blob/main/SUPPORT.md + about: Where to ask what, including the venue that works where Discord is blocked. - name: Contributing guide url: https://github.com/engmung/Patternflow/blob/main/CONTRIBUTING.md about: How to contribute docs, firmware, hardware, or web changes. diff --git a/.github/ISSUE_TEMPLATE/share_build.yml b/.github/ISSUE_TEMPLATE/share_build.yml new file mode 100644 index 00000000..39e6ba83 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/share_build.yml @@ -0,0 +1,63 @@ +name: Share your build +description: Put your finished Patternflow on the build map. +title: "Build: " +labels: ["area:community"] +body: + - type: markdown + attributes: + value: | + Every pin on the [build map](https://patternflow.work/inside) is someone who built one from these files. Fill this in and yours goes up. + Comfortable with git? The map is a data file plus a photo folder — see [CONTRIBUTING.md](https://github.com/engmung/Patternflow/blob/main/CONTRIBUTING.md#your-build) and send it as a pull request instead. + - type: input + id: maker + attributes: + label: Maker name + description: How you want to be credited on the map. + validations: + required: true + - type: input + id: location + attributes: + label: Location + description: City or country — the pin goes where you say, at that precision. + validations: + required: true + - type: dropdown + id: board + attributes: + label: Board + options: + - v3.9 PCB + - v3.0 PCB + - v2.x PCB + - breadboard + - something else (say what below) + validations: + required: true + - type: dropdown + id: enclosure + attributes: + label: Enclosure + options: + - official 3D-printed case + - my own remix of the case + - something else entirely + - type: textarea + id: intro + attributes: + label: Short intro + description: About three sentences — what you changed, what it is for, where it lives. + validations: + required: true + - type: textarea + id: images + attributes: + label: Photos + description: Drag and drop two or three photos here. By posting them you license them CC BY-SA 4.0 so they can go on the map; say so here if you need a different license. + validations: + required: true + - type: textarea + id: links + attributes: + label: Links + description: A video, a project page, your Instagram — anything you want the pin to carry. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f8d7c51e..77679420 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,4 +11,3 @@ --- - [ ] Touches `web/` → it builds (`npm run build`) -- [ ] Sharing a pattern? It's CC-BY-SA 4.0 with an `// Author:` header (see CONTRIBUTING) diff --git a/.github/release.yml b/.github/release.yml deleted file mode 100644 index 008952b9..00000000 --- a/.github/release.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Groups merged PRs into sections when you click "Generate release notes" -# on a new GitHub release. Categories match by PR label, top to bottom. -changelog: - exclude: - labels: - - skip-changelog - categories: - - title: 🚀 New features - labels: - - "type:feature" - - title: ✨ Improvements - labels: - - "type:improvement" - - title: 🐛 Fixes - labels: - - "type:bug" - - title: 📖 Docs - labels: - - "area:docs" - - title: 🧩 Other changes - labels: - - "*" diff --git a/AGENTS.md b/AGENTS.md index e520c3e5..aaa805e8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -19,7 +19,7 @@ It is standalone (not Eurorack), powered from a 5 V power bank through a screw t ## Hard rules (do not violate) 1. Founders boards (#001–#005) are private. The KiCad project in `hardware/pcb/kicad/` is the public v3.9 board (silkscreen "PATTERNFLOW … v3.9"). Never commit founders artifacts to this repo. 2. `hardware/bom/bom_v3.9.csv` is the BOM source of truth. The parts table in `BUILD_GUIDE.md` and the schematic in `hardware/pcb/schematic.pdf` must match it. If you change one, check the other two. (`bom_v3.0.csv` stays for people holding a v3.0 board; it is not the source of truth.) -3. License split is strict: firmware and web code = MIT; hardware designs (PCB, case STLs, Blender source) = CC-BY-SA 4.0. Two separate license files at root: `LICENSE-MIT` and `LICENSE-CC-BY-SA`. Do not merge them. +3. License split is strict: firmware and web code = MIT; hardware designs (PCB, case STLs, Blender source) = CC-BY-SA 4.0. Two separate license files at root: `LICENSE-MIT` and `LICENSE-CC-BY-SA`. Do not merge them; the root `LICENSE` is a pointer to both so GitHub's detector sees both, not a third license. 4. Brand naming: body text = "Patternflow", physical engravings (PCB silkscreen, future case engravings) = "PATTERNFLOW", filenames and URLs = lowercase "patternflow". Never mix these in a single context. 5. Known issues of the current board are documented in `BUILD_GUIDE.md` section 10; the v2.0 fixes and leftovers are in `BUILD_GUIDE_v2.md` section 10. Reference those sections instead of restating the issues. 6. **The board has exactly one power input: `J4`, the screw terminal. Never describe USB-C as a power option.** v3.9 removed the `USB1` footprint and its `R1`/`R2` CC pull-downs outright, after a USB-C-powered v3.0 board ran for 20–30 minutes and then smoked at a connector pin ([#221](https://github.com/engmung/Patternflow/issues/221)) — the failure is delayed, so "it seems to work" is not evidence. On v3.9 the footprint does not exist; on a v3.0 board already in someone's hands, `USB1`/`R1`/`R2` stay unpopulated. Release notes and changelog entries that record the hold as it stood are history — update current-state docs, leave the record alone. diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..d28cd12f --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,26 @@ +cff-version: 1.2.0 +message: "If you use or write about Patternflow, please cite it as below." +type: software +title: "Patternflow: an open-source LED synthesizer" +authors: + - family-names: Lee + given-names: Seunghun + alias: engmung +repository-code: "https://github.com/engmung/Patternflow" +url: "https://patternflow.work" +abstract: >- + An open-source hardware instrument: four rotary encoders play generative + light patterns on a 128x64 LED matrix driven by an ESP32-S3. Firmware, + PCB, enclosure, web editor and pattern community are all published. + Conceived as an open-source reinterpretation of Nam June Paik's + Participation TV (1963). +keywords: + - led-matrix + - esp32 + - open-source-hardware + - creative-coding + - generative-art + - media-art +license: + - MIT + - CC-BY-SA-4.0 diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..43c994c2 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..b9531587 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,28 @@ +# Code of conduct + +This applies everywhere Patternflow people meet: this repository (issues, pull requests), the [Discord](https://discord.gg/Vr9QtsxeTk), and the [community site](https://community.patternflow.work/community). + +## How we treat each other + +The rule was written before there was anything to build, as a short poem, and it is the sixth section of the [manifesto](docs/manifesto.md#6-how-we-treat-each-other). In full: + +> 아무것도 몰라도, 하고자 한다면 만들 수 있습니다. +> 도와주는 게 당연합니다. 고마운 게 당연합니다. +> 말하면 더 좋고 안 해도 압니다. +> 받았으면 주고, 주는 걸 자랑스러워 합니다. +> 그렇게 우리는 연결됩니다. + +- **You don't have to be special.** Nobody arrives knowing how to do this. Wanting to make it is the qualification; a beginner's question is the normal kind, not the wrong kind. +- **Helping is ordinary, not generous.** Answering a build question is what the room is for. Condescension is not. +- **What you receive, you pass on.** Everything here was published by someone. The natural response is to publish something back. +- **Credit stays attached.** A pattern, a photo, a fix keeps its author's name. A fork carries `Based on:`. + +## What is not welcome + +Harassment, insults, slurs, unwanted sexual attention, doxxing, and sustained disruption of a conversation after being asked to stop. Also: passing off someone else's pattern, build or design as your own. + +## Reporting + +Report to the maintainer privately: a direct message on Discord, or the [private report form](https://github.com/engmung/Patternflow/security/advisories/new) on GitHub (the same private channel [SECURITY.md](SECURITY.md) uses; nobody else can read it). On the community site, every pattern and post has a report control. + +The maintainer decides what happens next, in proportion: a word, a removal, a ban. Reports are kept confidential. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b1dda16..65ea5b9c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,9 +15,9 @@ This file is intentionally a starting point. The contribution process will becom ## Pattern Contributions -Custom patterns are welcome as community work, but official bundled firmware patterns will be curated for now. If you make something interesting, share it in the Discord **patterns** channel (follow the post guidelines there) or open an issue with the source. +Patterns are not repository contributions. Make one in the [Pattern Lab](https://patternflow.work/pattern-lab), click **Publish**, and it is on the [Community](https://community.patternflow.work/community) for every Patternflow to play, under the license you choose. That is the whole path; there is no pattern pull request. The presets bundled in the firmware and the Basics pack are curated by the maintainer from the repository's own sources. -**Licensing — inbound = outbound.** By sending a pattern *to this repository* (Discord, issue, or PR) you agree to license it under **CC-BY-SA 4.0** — the same commons as the rest of Patternflow — with attribution kept in the code header (`// Author:` and `// SPDX-License-Identifier: CC-BY-SA-4.0`). There is no copyright assignment (no CLA): you keep authorship, and the project just gets the right to bundle and redistribute it. You may set a different license in the header as long as it still lets the project bundle and redistribute the pattern. +**Licensing — inbound = outbound.** In the rare case a pattern is handed *to this repository* (a Discord post or issue the maintainer asks to bundle) you agree to license it under **CC-BY-SA 4.0** — the same commons as the rest of Patternflow — with attribution kept in the code header (`// Author:` and `// SPDX-License-Identifier: CC-BY-SA-4.0`). There is no copyright assignment (no CLA): you keep authorship, and the project just gets the right to bundle and redistribute it. You may set a different license in the header as long as it still lets the project bundle and redistribute the pattern. **Publishing to the Community is a different thing.** Patterns posted to the [Community site](https://community.patternflow.work/community) are not repository @@ -63,8 +63,8 @@ work on dev → commit early and often → open a PR into main → merge git checkout dev && git merge origin/main && git push origin dev ``` -Releases are published from `main` (GitHub → Releases → *Generate release -notes*), which posts an announcement to Discord. +Releases are cut from `dev` and published from `main` by `firmware/toolchain/release.py`; +the procedure is [docs/RELEASING.md](docs/RELEASING.md). ## Project Rules diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..e1ad4a48 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Patternflow is dual-licensed by content type. This file is a pointer so the +repository page shows both; the two license texts are next to it. + + Code - firmware/, web/, tools/, integrations/ MIT -> LICENSE-MIT + Works - hardware/, docs/, the build guides, and the bundled patterns + (web/src/lib/presets/, firmware/patternflow/presets/) + CC BY-SA 4.0 -> LICENSE-CC-BY-SA + +An SPDX-License-Identifier header inside a file is the authority for that file; +folders are not license boundaries. Files that cannot carry a header (STL, DXF, +Gerber, images) take the license the nearest README states. Patterns published +to the Community site are licensed by their authors. The full table, and what +each license lets you do, is docs/LICENSE-SUMMARY.md. diff --git a/README.md b/README.md index 25ddb9d8..df2d84cf 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ The clearest case started on the other side of the world. A media art collective The **[Full Build Guide](BUILD_GUIDE.md)** covers the official route: the custom PCB and a 3D-printed enclosure. Don't want to order a board? The **[Breadboard Build Guide](https://patternflow.work/build/breadboard)** wires the same electronics with jumper wires instead, and that's a real Patternflow, not a temporary prototype. Every other combination is on the **[Assembly Map](docs/assembly/README.md)**. Parts run about US$100–200 ([BOM](BUILD_GUIDE.md#1-bill-of-materials-bom)), it's all big through-hole joints, and every first-timer who has built one finished it. Most came back saying the soldering was the fun part. -**When yours lights up, tell us.** Post it in [Discord](https://discord.gg/Vr9QtsxeTk) or [Discussions](../../discussions) and it goes on the build map, a globe of Patternflows where each pin carries its build's story. The map is for the ones people made themselves: every pin is someone who built one from these files, in their own material, wherever they are. The goal is simple: cover it with pins. +**When yours lights up, tell us.** Post it in [Discord](https://discord.gg/Vr9QtsxeTk) or fill in the [Share your build](../../issues/new?template=share_build.yml) form and it goes on the build map, a globe of Patternflows where each pin carries its build's story. The map is for the ones people made themselves: every pin is someone who built one from these files, in their own material, wherever they are. The goal is simple: cover it with pins.

Build map: a globe of Patternflows built around the world, with the story of every build @@ -85,14 +85,14 @@ Patterns don't stay on the wall, either. New pattern studies go up on **[Instagr Patterns are the surface. Underneath is an instrument still being designed, in the open, by whoever shows up. This is the whole system on one napkin:

- Hand-drawn map of the Patternflow ecosystem: the device, the GitHub files and Crowd Supply routes to it; patternflow.work with the Live Editor, Pattern Lab and Community wall; Discord, Instagram and GitHub Discussions; and the Workshop, where project talk is gathering + Hand-drawn map of the Patternflow ecosystem: the device, the GitHub files and Crowd Supply routes to it; patternflow.work with the Live Editor, Pattern Lab and Community wall; Discord, Instagram and GitHub; and the Workshop, where project talk is gathering

The **[Workshop](https://community.patternflow.work/community/workshop)** is where the project's future is worked out. It's a map of directions Patternflow could take: a wired OSC version, laser-cut enclosures, bigger panels. Anyone can pin themselves to a direction, say what they're working on, and start a thread. It's already moving in directions I didn't choose. One contributor is building out MQTT further than I've had time to follow: units reaching each other across a network, one person's playing coming out of somebody else's device. Another is working on sound on the board itself. Another is taking the TouchDesigner link further than I did. None of it was assigned. -**[CONTRIBUTING.md](CONTRIBUTING.md)** covers how contributions flow. Questions and ideas go to **[Discussions](../../discussions)** or the **[Discord](https://discord.gg/Vr9QtsxeTk)**, whichever you can reach. +**[CONTRIBUTING.md](CONTRIBUTING.md)** covers how contributions flow. Questions and ideas go to the **[Discord](https://discord.gg/Vr9QtsxeTk)**, or to the **[Workshop](https://community.patternflow.work/community/workshop)** if Discord isn't reachable where you are. ## Quick facts @@ -223,7 +223,7 @@ Patternflow's PCB fabrication and 3D-printed enclosure are sponsored by **[PCBWa ## License -The SPDX header inside a file is the authority; folders are not license boundaries. Full breakdown in the **[License Summary](docs/LICENSE-SUMMARY.md)**. +A file's SPDX header is the authority where one exists; folders are not license boundaries, and files that cannot carry a header (STL, Gerber, images) take the license the nearest README states. Full breakdown in the **[License Summary](docs/LICENSE-SUMMARY.md)**. - Firmware & web code: **MIT** ([LICENSE-MIT](./LICENSE-MIT)) - Hardware, designs & docs: **CC-BY-SA 4.0** ([LICENSE-CC-BY-SA](./LICENSE-CC-BY-SA)) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..98915fe8 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,20 @@ +# Security + +## Reporting + +Please report privately through [GitHub's report form](https://github.com/engmung/Patternflow/security/advisories/new) (Security → Report a vulnerability), or by direct message to the maintainer on [Discord](https://discord.gg/Vr9QtsxeTk). Do not open a public issue for something exploitable. You will get a reply within a few days; there is no bounty. + +## What is in scope + +- **The community site** ([community.patternflow.work](https://community.patternflow.work)): accounts and sessions, uploads, the sandboxed iframe that runs published patterns, moderation. +- **The browser flasher and update handoff** ([patternflow.work/flash](https://patternflow.work/flash), `/update`): the firmware images it serves and where they come from. +- **The build worker** that turns a pattern into a `.pfm` module on the community host. +- **Published firmware images.** They must not carry credentials. Three early releases did carry the maintainer's Wi-Fi credentials, which is why the release workflow now refuses an image built with `patternflow_secrets.h`. If you find one that slipped through, that is a report. + +## What is a documented trust model, not a vulnerability + +The device's HTTP server on the LAN has **no authentication**: anyone on the same network can call any `/api/*` route, including `POST /update`. This is deliberate and documented in [docs/rest-api.md](docs/rest-api.md#transport) — the panel is an instrument on a home or venue network, with the same posture as ArduinoOTA's default. `PF_WEBUPDATE_ALWAYS_ARMED 0` is the one lever that narrows it. Reports that amount to "the LAN API is open" will be closed with a pointer here; reports of a way to reach that API from *outside* the LAN, or from a web page on another origin, are in scope. + +## Supported versions + +Only the images currently on [the shelf](https://patternflow.work/editions) and in the flasher manifest are supported. Older images are on their release tags and are not patched. Each release lists the `sha256` of every image it attaches; verify a download against it before flashing. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 00000000..895ed633 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,17 @@ +# Getting help + +One table for "where do I ask". Issues are for things that change this repository; everything else has a faster place. + +| I want to… | Go to | +| :--- | :--- | +| Get unstuck building, soldering or flashing | [Discord → hardware-help](https://discord.com/channels/1497757947827327067/1499907910707187833) — photos and quick back-and-forth | +| Show a pattern I made, or get feedback on one | Publish it from the [Pattern Lab](https://patternflow.work/pattern-lab) to the [Community](https://community.patternflow.work/community), then [Discord → patterns](https://discord.com/channels/1497757947827327067/1499908302962819236) | +| Put my finished build on the [build map](https://patternflow.work/inside) | [Share your build](https://github.com/engmung/Patternflow/issues/new?template=share_build.yml) — or post it in Discord | +| Talk about where the project should go, or find people working on the same direction | The [Workshop](https://community.patternflow.work/community/workshop) on the community site | +| Report a bug, a wrong or missing doc, or propose a feature | [New issue](https://github.com/engmung/Patternflow/issues/new/choose) — pick the template | +| Report a security problem | [SECURITY.md](SECURITY.md) — privately, not as an issue | +| Contribute code, hardware files or docs | [CONTRIBUTING.md](CONTRIBUTING.md) | + +**If Discord is blocked where you live**, the community site is the venue: its Workshop and pattern pages need no Discord account, and browsing needs no account at all. + +There is no support email. Replies come from the maintainer and from other builders, usually within a day or two. diff --git a/docs/LICENSE-SUMMARY.md b/docs/LICENSE-SUMMARY.md index 22df6dff..54b4fd9e 100644 --- a/docs/LICENSE-SUMMARY.md +++ b/docs/LICENSE-SUMMARY.md @@ -1,7 +1,8 @@ # License Summary -**The SPDX header inside a file is the authority.** Folders are not license -boundaries — the pattern presets live under `web/` and `firmware/`, which are +**Where a file carries an SPDX header, that header is the authority.** Files that +cannot carry one (STL, DXF, Gerber, images) take the license the nearest README +states. Folders are not license boundaries — the pattern presets live under `web/` and `firmware/`, which are otherwise MIT, and each preset file carries its own `SPDX-License-Identifier: CC-BY-SA-4.0`. That header wins. This page describes the layout; it does not override it. diff --git a/docs/investigations/2026-09-firmware-runtime.md b/docs/investigations/2026-09-firmware-runtime.md index 56f9f326..75dfe85c 100644 --- a/docs/investigations/2026-09-firmware-runtime.md +++ b/docs/investigations/2026-09-firmware-runtime.md @@ -5,7 +5,7 @@ research that followed them, the runtime rework that research prompted, the network-MIDI follow-up, and the regression the rework caused and how it was fixed. It supersedes four separate reports written along the way. -**Baseline** `68e23cb`, project 3.9.5, Audio 0.5.4. All of it is unreleased. +**Baseline** `68e23cb`, project 3.9.5, Audio 0.5.4. All of it shipped in 3.10.0 (see `CHANGELOG.md`). **Bench** one ESP32-S3 panel, 128×64, 8 colour bits / 260 Hz, brightness 97, Arduino 2.0.17 / ESP-IDF 4.4. No SDK, pin, partition or ABI change anywhere in this work. Individual patterns and their setup iterations are unchanged. diff --git a/docs/releases/v3.0.0-launch.md b/docs/releases/v3.0.0-launch.md index 8fe31e78..a09f7084 100644 --- a/docs/releases/v3.0.0-launch.md +++ b/docs/releases/v3.0.0-launch.md @@ -1,5 +1,7 @@ # v3.0.0 Launch Checklist +> **Historical (2026-07).** The one-off checklist used for the v3.0.0 release. The current procedure is [`docs/RELEASING.md`](../RELEASING.md); release notes since 3.2 live on [GitHub Releases](https://github.com/engmung/Patternflow/releases). + Everything for the v3.0.0 release is **pre-loaded**. When the final gate below passes, run the steps top to bottom — each is copy-paste. (Windows: run the PowerShell blocks in PowerShell, everything else in any terminal with `git` + `gh`.) ## Gate 0 — the one thing left (hardware) diff --git a/docs/releases/v3.0.0.md b/docs/releases/v3.0.0.md index bf6801cb..599220fb 100644 --- a/docs/releases/v3.0.0.md +++ b/docs/releases/v3.0.0.md @@ -1,5 +1,7 @@ # Patternflow v3.0.0 — the hybrid-power generation +> **Historical (2026-07).** Long-form notes for one release, kept as written. Release notes since 3.2 live on [GitHub Releases](https://github.com/engmung/Patternflow/releases); `CHANGELOG.md` at the root is the complete record. + The biggest hardware revision since launch. The v3.0 board and enclosure were rebuilt around one goal: **anyone should be able to solder and assemble this.** **Building one? Start here → [BUILD_GUIDE.md](https://github.com/engmung/Patternflow/blob/v3.0.0/BUILD_GUIDE.md)** — the PCB soldering is covered by a [full video walkthrough](https://youtu.be/NZCjMBCsDAc). diff --git a/docs/releases/v3.1.0.md b/docs/releases/v3.1.0.md index 428dc6f8..ef7271f9 100644 --- a/docs/releases/v3.1.0.md +++ b/docs/releases/v3.1.0.md @@ -1,5 +1,7 @@ # Patternflow v3.1.0 — the browser does everything now +> **Historical (2026-07).** Long-form notes for one release, kept as written. Release notes since 3.2 live on [GitHub Releases](https://github.com/engmung/Patternflow/releases); `CHANGELOG.md` at the root is the complete record. + **Hardware unchanged** — the v3.0 board and case carry over exactly as they are. This release is the software half of the instrument catching up: a pattern community, firmware builds that run on a server and flash from the browser, wireless updates, and one important piece of safety guidance. **Building one? Start here → [BUILD_GUIDE.md](https://github.com/engmung/Patternflow/blob/v3.1.0/BUILD_GUIDE.md)** — about 30 minutes of (deliberately easy, all through-hole) soldering, 30 minutes of assembly, ~10 hours of printer time, around US$100 in parts. diff --git a/firmware/CUSTOM_PATTERNS.md b/firmware/CUSTOM_PATTERNS.md index f55d38f2..a2c2afc4 100644 --- a/firmware/CUSTOM_PATTERNS.md +++ b/firmware/CUSTOM_PATTERNS.md @@ -217,13 +217,13 @@ The conversion path is the same: tune until you like it, click **Copy C++ prompt ## Share what you make -If your pattern is good, send it. +If your pattern is good, publish it. -- **Discord** — drop it in the patterns channel: [discord.gg/Vr9QtsxeTk](https://discord.gg/Vr9QtsxeTk) -- **GitHub** — open a PR adding your `pattern_yourname.h` to `firmware/patternflow/` -- **Instagram** — DM Patternflow with a clip and the code +- **Community** — from the Pattern Lab, click **Publish** and it goes on the [community wall](https://community.patternflow.work/community) under the license you pick, playable by every Patternflow. This is where patterns live; the repository does not take pattern pull requests. +- **Discord** — show it off in the patterns channel: [discord.gg/Vr9QtsxeTk](https://discord.gg/Vr9QtsxeTk) +- **Instagram** — DM Patternflow with a clip and it can get featured -Good patterns get bundled into future releases, with credit. The Patternflow pattern library should belong to the people who actually make patterns, not just the people who designed the hardware. +The Patternflow pattern library belongs to the people who actually make patterns, not just the people who designed the hardware. --- diff --git a/web/ARCHITECTURE.md b/web/ARCHITECTURE.md index 560277eb..552afe7f 100644 --- a/web/ARCHITECTURE.md +++ b/web/ARCHITECTURE.md @@ -87,7 +87,7 @@ The **firmware build service** (`/api/community/builds` + `scripts/build-worker. - **Section copy** — `content/build.md`, `content/pattern.md`, `content/inside.md`, parsed with gray-matter via `src/lib/content.ts`. - **Journal** — `content/journal/.mdx` (Korean) + `.en.mdx` (English), loaded by `src/lib/journal.ts`, rendered through `components/journal/`. Images in `public/journal//`. -- **Static data in code** — `src/app/roadmap/roadmap-data.ts`, `src/app/variants/variants-data.ts` (the shelf), `src/lib/atlas/data.ts` (the pattern-exploration map). Hand-curated; edit the file. +- **Static data in code** — `src/app/roadmap/roadmap-data.ts`, `src/app/editions/editions-data.ts` (the shelf), `src/lib/atlas/data.ts` (the pattern-exploration map). Hand-curated; edit the file. ## Analytics diff --git a/web/content/inside.md b/web/content/inside.md index 761d212d..c7cb6304 100644 --- a/web/content/inside.md +++ b/web/content/inside.md @@ -18,7 +18,7 @@ You do not have to start with the polished version. Start with what you have, as ## How to get involved -**Build one.** The build map starts with the 3D printed enclosure + official PCB path. Laser-cut and breadboard paths are planned. +**Build one.** The build map starts with the 3D printed enclosure + official PCB path. The breadboard path is available too, and enclosure remixes are welcome. **Fix something.** If a step is unclear, document it. If a part is hard to source, suggest a better one. diff --git a/web/src/lib/presets/_TEMPLATE.ts b/web/src/lib/presets/_TEMPLATE.ts index fcc81ba5..9f6b2141 100644 --- a/web/src/lib/presets/_TEMPLATE.ts +++ b/web/src/lib/presets/_TEMPLATE.ts @@ -3,7 +3,7 @@ import type { LivePreset } from "./types"; // Pattern template — copy this file to start a new pattern. // // The JS pattern is the SOURCE OF TRUTH. The firmware C++ header is generated -// from `code` below (see firmware/patternflow/patterns/_TEMPLATE.h). Keep the +// from `code` below (see firmware/patternflow/_TEMPLATE.h). Keep the // SPDX/author/lineage comment block at the top of `code` so attribution and // license survive the conversion into the .h file. // From 5d92aa0d16d68d5b31a4507e5c0dbf056458b354 Mon Sep 17 00:00:00 2001 From: engmung <122682380+engmung@users.noreply.github.com> Date: Mon, 14 Sep 2026 03:45:13 +0900 Subject: [PATCH 3/7] docs: one contributing table, a human repository map, and folder indexes for tools/ and integrations/ CONTRIBUTING.md is rewritten around one table: what you have, where it goes, what CI runs on it, plus the fork flow, the firmware pre-PR list and the hard rules that used to live only in AGENTS.md. docs/REPOSITORY.md is the folder-by-folder map for people; docs/README.md gains Walk-throughs, Contributing and a pointer to it. README's Docs line is grouped into Build / Play / Extend / Project and its firmware pointer now lands on the firmware build doc. The dev->main routine moves to RELEASING.md. tools/ and integrations/ get index READMEs that state the boundary between them; the Ableton bridge says 'install the Audio edition' instead of 'rebuild with OSC'. CUSTOM_PATTERNS' local route now names PlatformIO and presets/. .agents/ is gone; a root CLAUDE.md shim points agents at AGENTS.md. Co-Authored-By: Claude Fable 5.1 --- .agents/README.md | 18 ---- AGENTS.md | 7 +- AUDIO_GUIDE.md | 2 + CONTRIBUTING.md | 104 ++++++++++++------------ FEATURE_GUIDE.md | 2 + README.md | 14 ++-- docs/EDITIONS.md | 2 +- docs/README.md | 33 +++++--- docs/RELEASING.md | 14 ++++ docs/REPOSITORY.md | 50 ++++++++++++ firmware/CUSTOM_PATTERNS.md | 12 +-- firmware/patternflow/features/README.md | 2 +- integrations/README.md | 28 +++++++ integrations/ableton/README.md | 14 +--- tools/README.md | 17 ++++ web/AGENTS.md | 2 + web/README.md | 16 ++-- 17 files changed, 222 insertions(+), 115 deletions(-) delete mode 100644 .agents/README.md create mode 100644 docs/REPOSITORY.md create mode 100644 integrations/README.md create mode 100644 tools/README.md diff --git a/.agents/README.md b/.agents/README.md deleted file mode 100644 index 271f85b2..00000000 --- a/.agents/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# `.agents/` — AI Agent Harness - -This directory is the Antigravity harness folder for Patternflow. It is version-controlled and public — part of the open-source release. - -## What is here - -Nothing an agent needs to read first. The root `AGENTS.md` is the single context file, loaded in every session by Antigravity, Cursor and Claude Code alike; it carries the repository map, the hard rules, the build commands and the versioning conventions. - -The skills and workflows that used to live here (`add-pattern`, `update-bom`, `release-version`, `firmware-cleanup`, `/release`, `/update-build-doc`) were retired on 2026-09-03. They were written against the v1/v2 firmware and board — patterns as functions inside `patternflow.ino`, an SMD BOM, version numbers in folder names — and an agent following them today would edit the firmware core (which `AGENTS.md` forbids) or "correct" the v3 BOM back to v2. The procedures they described now live where they are kept current: - -- releasing → `docs/RELEASING.md` and `.github/workflows/firmware-release.yml` -- writing a pattern → `firmware/CUSTOM_PATTERNS.md`, `PATTERN_GUIDE.md` -- writing a feature or an edition → `FEATURE_GUIDE.md`, `docs/EDITIONS.md` -- the BOM → `hardware/bom/README.md` (the CSV is the source of truth) - -## Contributing to the harness - -If you find yourself repeatedly explaining the same thing to your agent while working on Patternflow, that is a candidate for a new skill under `skills//SKILL.md`. Write it against the current tree, and name the file it derives its facts from, so the next reader can tell when it has gone stale. diff --git a/AGENTS.md b/AGENTS.md index aaa805e8..4a8d17e4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # Patternflow — AI Agent Context -This file provides persistent project context for AI coding agents (Antigravity, Cursor, Claude Code). It is loaded automatically at the start of every session. It is the only agent-context file; `.agents/` holds nothing an agent needs to read first. +This file provides persistent project context for AI coding agents (Antigravity, Cursor, Claude Code). It is loaded automatically at the start of every session. Cursor and Antigravity read it directly; Claude Code reads it through the one-line `CLAUDE.md` shim. The human-facing map of the repository is `docs/REPOSITORY.md`; the contributor rules are `CONTRIBUTING.md`, and the hard rules below are the same rules. ## What this project is Patternflow is an open-source hardware instrument: four rotary encoders controlling generative light patterns on a 128×64 LED matrix, powered by an ESP32-S3. It is an open-source reinterpretation of Nam June Paik's *Participation TV* (1963). The project is multi-domain, encompassing Arduino-based firmware, KiCad/Blender hardware designs, a Next.js web ecosystem, and comprehensive documentation. @@ -14,7 +14,6 @@ It is standalone (not Eurorack), powered from a 5 V power bank through a screw t - `web/` — Next.js site at patternflow.work: landing page (`/`, `/pattern`, `/build`, `/inside` are tabs of one view), Pattern Lab (`/pattern-lab`), community (`/community/**`, SQLite + Drizzle + Better Auth, only on the Pi deployment), browser flasher (`/flash`), the edition shelf (`/editions`; `/variants` redirects there), device update handoff (`/update`), journal, roadmap. `lib/pattern/` is the pattern runtime and annotations, `lib/lab/` the Pattern Lab, `lib/community/` the community, `lib/ai/` the Gemini client. Architecture doc: `web/ARCHITECTURE.md`. The JS presets in `web/src/lib/presets/` are the source of truth for firmware preset headers. - `tools/` — desktop-side helpers: `patternflow-audio-extension` (the browser audio-react extension — also the authoring source the device's `/audio-in` console page is assembled from), `patternflow-audio-android` (phone capture app), `rtpmidi-probe`. - `integrations/` — host-software integrations, each with its own README. `integrations/ableton/` is the Max for Live bridge (knobs → Live parameters over OSC). The Home Assistant integration left this repository on 2026-09-03; its author maintains it separately. Integrations are built against the contracts in `docs/` (`rest-api.md`, `osc-spec.md`, `midi-spec.md`), not against the firmware source. `docs/rest-api.md` also has the table for choosing between HTTP, OSC and MQTT, and the rules that make the device's single-connection web server easy to knock over. -- `.agents/` — AI harness folder for Antigravity. Its skills were retired on 2026-09-03 (they described the pre-`features/` firmware and the v2 board); this file is the context. ## Hard rules (do not violate) 1. Founders boards (#001–#005) are private. The KiCad project in `hardware/pcb/kicad/` is the public v3.9 board (silkscreen "PATTERNFLOW … v3.9"). Never commit founders artifacts to this repo. @@ -34,12 +33,12 @@ It is standalone (not Eurorack), powered from a 5 V power bank through a screw t - KiCad exports: Export Gerbers from `hardware/pcb/kicad/patternflow.kicad_pcb`. Export STLs from `hardware/case/source/patternflow_case.blend`. ## Versioning -- Project: v3.10.2 (current, released 2026-09-11), using unified semantic versioning across firmware, hardware, web, and docs — the firmware reports it as `PF_IMPROV_FW_VERSION` in `net_config.h`, and `CHANGELOG.md` gets a section per release. Current hardware is the v3.0 board; every v3.x release since has been firmware/web on unchanged hardware. +- Project: v3.10.2 (current, released 2026-09-11), using unified semantic versioning across firmware, hardware, web, and docs — the firmware reports it as `PF_IMPROV_FW_VERSION` in `net_config.h`, and `CHANGELOG.md` gets a section per release. Current hardware is the v3.9 board — the v3.0 board with the USB-C footprint removed, same enclosure, pin map and guide; every v3.x release has been firmware/web on it. - Editions carry their own version line, independent of the project version (`PF_VARIANT_VERSION` in `firmware/bundles//overrides.h`): Audio v0.6.2, Performance v0.2.7, Clock v0.1.5 at the time of writing. The shelf (`web/src/app/editions/editions-data.ts`) and the flasher manifest (`web/public/flash/manifest.json`) name the images that are live; only those images are kept in `web/public/flash/bin/` — older ones live on their release tags. - Firmware source lives in `firmware/patternflow/`; use release tags for versioning instead of encoding the release in the folder name. Tags are `vX.Y.Z`. - Conventions: filenames lowercase with underscores; commit messages start with the area (`firmware:`, `web:`, `docs:`, `hardware:`) then a short present-tense summary. ## Documentation entry points - New users: `README.md` → `BUILD_GUIDE.md` -- Contributors: this file → `docs/EDITIONS.md` (firmware) · `web/ARCHITECTURE.md` (web) · `CONTRIBUTING.md` +- Contributors: `CONTRIBUTING.md` → `docs/REPOSITORY.md` → `docs/EDITIONS.md` (firmware) · `web/ARCHITECTURE.md` (web) - Version history: `CHANGELOG.md` diff --git a/AUDIO_GUIDE.md b/AUDIO_GUIDE.md index d593769f..00575a91 100644 --- a/AUDIO_GUIDE.md +++ b/AUDIO_GUIDE.md @@ -244,6 +244,8 @@ editor everywhere, two homes for the settings. ## For the AI agent +The hard rules — the same ones humans follow — are in [`AGENTS.md`](AGENTS.md#hard-rules-do-not-violate); the contributor flow is [`CONTRIBUTING.md`](CONTRIBUTING.md). + You were pointed here to work on Patternflow's audio path. The map: **Firmware — the mapping engine and mic** diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 65ea5b9c..8b07f2e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,33 +1,59 @@ # Contributing to Patternflow -Patternflow has a set of build paths (the official PCB in a 3D-printed enclosure, breadboard electronics, other panel sizes), pattern tools, a community site, and firmware editions — and contributions to any of them. +Patternflow is a device, a firmware, a website and a pile of documentation, and people contribute to all of them. This page says where each kind of contribution goes, what checks it meets, and the few rules that are not negotiable. Where to *ask* things is [SUPPORT.md](SUPPORT.md); how we treat each other is [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md); what is where is [docs/REPOSITORY.md](docs/REPOSITORY.md). -This file is intentionally a starting point. The contribution process will become more detailed as more people build, test, and modify Patternflow. +## Where your contribution goes -## Ways to Help +| You have… | It goes in | A change touches | What CI runs on it | +| :--- | :--- | :--- | :--- | +| A fix to a guide, a README or a spec | the markdown file itself: the root guides, `docs/`, any folder's README | one file | every relative link must resolve (`docs-links`) | +| A fix to the **breadboard** build guide | `web/src/app/build/breadboard/page.tsx` — that guide is React, not markdown | JSX text | `web-ci` (`next build`) | +| Your finished build, for the [build map](https://patternflow.work/inside) | `web/src/components/sections/InsideGlobe/builds.ts` plus a photo folder `web/public/builds//` — see [Your build](#your-build). Not a git person? The [Share your build](../../issues/new?template=share_build.yml) form does the same | one `Build` entry and its photos | `web-ci` (the typecheck rejects a malformed entry) | +| A firmware **feature** | `firmware/patternflow/features//`, plus one line in the bundle it joins (`firmware/bundles//features_local.h`) | the folder, the bundle line, an inventory row in `features/README.md`; a console page also adds a row to `firmware/toolchain/console_pages.py`; a library also goes in `platformio.ini` | `firmware-checks` (boundary, ABI freeze, presets, console pages…) and `firmware-build` (every edition, from scratch) | +| A fix to the firmware **core** (`patternflow.ino`, `src/`) | the file itself — for a bug or a real improvement to the device, never to make room for a feature | | the same, and the change must still be right on a build that has no features at all | +| An enclosure or mechanical **remix** | `hardware/case/remixes/-/`, with a README that states Author, License, what it is based on, which board it fits, and the print or cut settings | one new folder; the official folders stay as they are | the README fields are checked | +| A **bridge** to host software (TouchDesigner, Node-RED, Max, a DAW…) | `integrations//` with a README, plus a row in `integrations/README.md`. It talks to the panel through the contracts in `docs/` and never imports firmware or web code | one new folder | the README has to name the contract it is built against | +| A change to a **wire contract** | `docs/rest-api.md`, `osc-spec.md`, `midi-spec.md`, `mqtt-spec.md`, `audio-ws-spec.md`, `pfst-v2-spec.md` | the spec: bump its version line and add a Version history row | `docs-links` | +| Web app work | `web/` — start at [`web/README.md`](web/README.md) and [`web/ARCHITECTURE.md`](web/ARCHITECTURE.md) | | `web-ci`: lint, typecheck, the `check:*` suites, `next build` | +| A **pattern** | **not this repository.** Make it in the [Pattern Lab](https://patternflow.work/pattern-lab), press **Publish**, and it is on the [Community](https://community.patternflow.work/community) for every Patternflow to play, under the license you choose. [PATTERN_GUIDE.md](PATTERN_GUIDE.md) walks the loop. The presets bundled in the firmware and the Basics pack are curated by the maintainer from the repository's own sources | | | -- Build Patternflow and share photos, problems, and notes. -- Improve the build documentation when a step is unclear. -- Test the alternate build paths — breadboard electronics, other panel sizes, other printers — and report what breaks. -- Suggest better sourcing options for parts. -- Share custom patterns with the community. -- Report firmware, web, or documentation issues. +Parts sourcing tips, better photos of a build step, a clearer sentence: all of those are the first row. -## Pattern Contributions +## Sending it -Patterns are not repository contributions. Make one in the [Pattern Lab](https://patternflow.work/pattern-lab), click **Publish**, and it is on the [Community](https://community.patternflow.work/community) for every Patternflow to play, under the license you choose. That is the whole path; there is no pattern pull request. The presets bundled in the firmware and the Basics pack are curated by the maintainer from the repository's own sources. +1. Fork the repository and branch from `dev` (`fix/…`, `feat/…`, `docs/…`). +2. Commit with the area first, then a short present-tense summary — see [Commit messages](#commit-messages). +3. Open the pull request **against `main`**. `dev` is the maintainer's working branch; outside work is reviewed and merged into `main`, and `main` is pulled back into `dev` afterwards. +4. Fill in the template: what, why, how you tested it, and which row of the table above it is. The checks in that row run on every pull request, forks included, with no secrets involved. +5. Nobody pushes to `main` directly, the maintainer included, so a one-word typo fix is also a pull request. It is a small one. -**Licensing — inbound = outbound.** In the rare case a pattern is handed *to this repository* (a Discord post or issue the maintainer asks to bundle) you agree to license it under **CC-BY-SA 4.0** — the same commons as the rest of Patternflow — with attribution kept in the code header (`// Author:` and `// SPDX-License-Identifier: CC-BY-SA-4.0`). There is no copyright assignment (no CLA): you keep authorship, and the project just gets the right to bundle and redistribute it. You may set a different license in the header as long as it still lets the project bundle and redistribute the pattern. +## Before you open a firmware pull request -**Publishing to the Community is a different thing.** Patterns posted to the -[Community site](https://community.patternflow.work/community) are not repository -contributions — you pick their license yourself when you publish (CC-BY-SA 4.0 -by default, or CC-BY 4.0), and nothing here applies to them. See the -[License Summary](docs/LICENSE-SUMMARY.md). +- **Read, in this order:** [`docs/EDITIONS.md`](docs/EDITIONS.md) (what a feature and an edition are, and the promises every build keeps) → [`firmware/patternflow/features/README.md`](firmware/patternflow/features/README.md) (the hooks) → [`firmware/bundles/README.md`](firmware/bundles/README.md) (the two files that make an edition). [FEATURE_GUIDE.md](FEATURE_GUIDE.md) is the walk-through, written so an AI coding agent can follow it too. +- **The core names no feature.** No `#include`, no `#if PF__ENABLED`, not even the feature's name in a string on the panel. If your change to `src/` would be wrong on a build without your feature, it belongs in `features/`. `firmware/toolchain/check_boundaries.py` enforces this in CI. +- **A feature without a bundle line compiles nowhere.** Name the edition it joins in the pull request, or propose a new one. +- **Run before pushing:** `./firmware/bundles/build.sh all` (every edition, and a scan of each image for its feature markers) and `python firmware/toolchain/check_boundaries.py`. Touching the core means building every composition; the default build has no features to break. +- **Explore in a fork first.** Features need room to be wrong for a while. Once it runs on a panel, an in-tree pull request that touches only `features//` and a bundle line is welcome. + +## The rules that are not negotiable + +The full list, with the reasons, is [`AGENTS.md`](AGENTS.md#hard-rules-do-not-violate) — written for AI coding agents, but the rules are the project's, not the agents'. In short: + +- **The board has one power input, `J4`, the screw terminal.** Never describe USB-C as a power option; a board powered that way smoked at a connector pin after twenty minutes. +- **`hardware/bom/bom_v3.9.csv` is the BOM source of truth.** The parts table in `BUILD_GUIDE.md` and `hardware/pcb/schematic.pdf` must match it; change one, check the other two. +- **Two licenses, strictly split.** Code is MIT, hardware and docs are CC BY-SA 4.0, and the SPDX header in a file is the authority where one exists. Don't merge the license files. +- **Brand naming.** "Patternflow" in prose, "PATTERNFLOW" engraved on hardware, `patternflow` in filenames and URLs. +- **The firmware core is not the place to put a feature.** See above. + +## Licensing — inbound = outbound + +What you send is licensed the way the place it lands in is licensed: code under [MIT](LICENSE-MIT), hardware files, guides and docs under [CC BY-SA 4.0](LICENSE-CC-BY-SA). You keep your copyright and your name; the project gets the right to bundle and redistribute. There is no CLA. Code files carry an SPDX line (and an `// Author:` line if it is yours); a remix folder or a bridge states its license in its README, because STL and DXF files cannot carry a header. The whole table is [docs/LICENSE-SUMMARY.md](docs/LICENSE-SUMMARY.md). + +Patterns published to the Community are a different thing: you pick their license when you publish (CC BY-SA 4.0 by default, or CC BY 4.0), and nothing on this page applies to them. ## Commit messages -Keep it simple: start with the area, then a short summary in plain present tense. +Start with the area, then a short summary in plain present tense. ``` area: short summary @@ -35,44 +61,16 @@ area: short summary web: collapse the preset list on mobile firmware: fix reversed encoder direction docs: clarify the breadboard wiring step +hardware: knob plate for 18 mm shafts +integrations: node-red example flow ``` -Common areas: `web`, `firmware`, `pcb`, `enclosure`, `docs`, `pattern`. Use -`wip(area): …` for work that isn't finished yet. That's the whole rule — no -tooling enforces it, it just keeps the history (and the Discord dev-log) -readable. - -## Development workflow - -Work happens on `dev`, then lands on `main` through a pull request. - -``` -work on dev → commit early and often → open a PR into main → merge -``` - -- **Commit freely on `dev`.** Commits are cheap save points; small and frequent - is good. Keep throwaway `wip:` commits here rather than on `main`. -- **Code changes go through a PR** (anything under `web/` or `firmware/`). A PR - runs CI (`web/` PRs must pass `next build`) and groups the change into one - clean Discord dev-log post. Trivial doc/typo fixes can be committed directly. -- **Bigger or riskier work** gets its own branch (`feat/…`, `fix/…`) off `dev`. -- **After a PR merges**, pull `main` back into `dev` so the branches don't - drift apart over time: - - ``` - git checkout dev && git merge origin/main && git push origin dev - ``` - -Releases are cut from `dev` and published from `main` by `firmware/toolchain/release.py`; -the procedure is [docs/RELEASING.md](docs/RELEASING.md). +Use `wip(area): …` for work that isn't finished yet. Nothing enforces this; it keeps the history and the Discord dev-log readable. -## Project Rules +## Your build -Project rules and guidelines are currently under consideration and will be finalized in the future. +A pin on the map is one entry in [`web/src/components/sections/InsideGlobe/builds.ts`](web/src/components/sections/InsideGlobe/builds.ts) and a folder of photos in `web/public/builds//`. The type at the top of that file documents every field; the comments next to the fields say how precise a location to give and what a `collaboration` is. The `slug` becomes the pin's URL (`/inside/`), so pick it once. Photos you add are CC BY-SA 4.0 unless the entry says otherwise. If you would rather not touch the file, the [Share your build](../../issues/new?template=share_build.yml) form asks for the same things and the maintainer files it. -## Where to Start +## How the maintainer works -- Assembly map: [docs/assembly/README.md](docs/assembly/README.md) -- Current full build guide: [BUILD_GUIDE.md](BUILD_GUIDE.md) -- Custom patterns: [firmware/CUSTOM_PATTERNS.md](firmware/CUSTOM_PATTERNS.md) -- Discord: [discord.gg/Vr9QtsxeTk](https://discord.gg/Vr9QtsxeTk) +The `dev` → `main` routine, release cutting and what the workflows attach live in [docs/RELEASING.md](docs/RELEASING.md). Governance is one person: the maintainer decides what merges, in the open, in the pull request. Two collaborators have write access to the areas they built. diff --git a/FEATURE_GUIDE.md b/FEATURE_GUIDE.md index 3e23af84..1fbf221f 100644 --- a/FEATURE_GUIDE.md +++ b/FEATURE_GUIDE.md @@ -70,6 +70,8 @@ that doesn't include it exactly nothing. ## For the AI agent +The hard rules — the same ones humans follow — are in [`AGENTS.md`](AGENTS.md#hard-rules-do-not-violate); the contributor flow is [`CONTRIBUTING.md`](CONTRIBUTING.md). + You were pointed here to build a Patternflow firmware feature. Read this section fully before writing code. diff --git a/README.md b/README.md index df2d84cf..5fe83c46 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ A new board boots into **Origin**, concentric sine waves sampled by an emergent A new board is therefore nearly empty, so a set ships with it: the **Basics pack**, 33 patterns, at the top of the [decks shelf](https://community.patternflow.work/community/decks). One click installs the lot, no account and no build queue, or drop the `.zip` on your board's Patterns page yourself. The [Live Editor](https://patternflow.work/pattern) opens with its own preset library of 42 patterns, each loadable and remixable in the browser. -The Arduino IDE is only needed for firmware feature development or targeting an LED matrix with a different resolution; see [`firmware/patternflow/README.md`](firmware/patternflow/README.md) and [Custom Patterns](firmware/CUSTOM_PATTERNS.md). To rebuild the shipped pack from the repo's own preset sources, see [`firmware/toolchain/make_pack.py`](firmware/toolchain/make_pack.py). +A local firmware build (PlatformIO, driven by `firmware/bundles/build.sh`) is only needed for feature development or targeting an LED matrix with a different resolution; the setup is [`firmware/README.md`](firmware/README.md) and a new feature starts at [FEATURE_GUIDE.md](FEATURE_GUIDE.md). Patterns never need it: [Custom Patterns](firmware/CUSTOM_PATTERNS.md). To rebuild the shipped pack from the repo's own preset sources, see [`firmware/toolchain/make_pack.py`](firmware/toolchain/make_pack.py). ## MIDI, OSC, MQTT & audio-react @@ -181,18 +181,22 @@ Patternflow is built around a standalone ESP32-S3 driving a HUB75 RGB LED matrix | :--- | :--- | | `firmware/` | Arduino code for ESP32-S3, the custom pattern template, and the toolchain that builds patterns into `.pfm` modules and packs | | `hardware/` | Enclosure files and electronics source files (case, PCB, Gerbers, schematic PDF) | -| `web/` | Next.js site (landing, Live Editor, Pattern Lab, community, browser flasher & build server, journal) | -| `docs/` | Assembly map, build-guide media, manifesto, license summary | +| `web/` | Next.js site (landing, Live Editor, Pattern Lab, community, browser flasher & build server, journal); the breadboard build guide is a React page here | +| `docs/` | The contracts (HTTP, OSC, MIDI, MQTT, audio WebSocket, show files), how the firmware is put together (`EDITIONS.md`), the assembly map, walk-throughs, records and media — indexed in [`docs/README.md`](docs/README.md), with the folder-by-folder map in [`docs/REPOSITORY.md`](docs/REPOSITORY.md) | | `tools/` | Desktop-side helpers, including the audio-react browser extension | | `integrations/` | Host-software bridges: Ableton Live / Max for Live (OSC knob mapping) | +| `.github/` | Issue and PR templates, and the CI that runs on every pull request (web, every firmware edition, doc links, console pages) | -**Docs:** [Full Build Guide](BUILD_GUIDE.md) · [Pattern Guide](PATTERN_GUIDE.md) · [Audio Guide](AUDIO_GUIDE.md) · [Feature Guide](FEATURE_GUIDE.md) · [Assembly Map](docs/assembly/README.md) · [Custom Patterns](firmware/CUSTOM_PATTERNS.md) · [HTTP API](docs/rest-api.md) · [MIDI in Ableton](docs/midi-ableton.md) · [MIDI Spec](docs/midi-spec.md) · [OSC Spec](docs/osc-spec.md) · [Director → MIDI](docs/director-midi.md) · [Manifesto](docs/manifesto.md) · [Changelog](CHANGELOG.md) · [License Summary](docs/LICENSE-SUMMARY.md) +**Build:** [Full Build Guide](BUILD_GUIDE.md) · [Assembly Map](docs/assembly/README.md) · [Panel Compatibility](docs/panel-compatibility.md) · [Hardware files](hardware/README.md) +**Play:** [Pattern Guide](PATTERN_GUIDE.md) · [Custom Patterns](firmware/CUSTOM_PATTERNS.md) · [Audio Guide](AUDIO_GUIDE.md) · [MIDI in Ableton](docs/midi-ableton.md) +**Extend:** [Feature Guide](FEATURE_GUIDE.md) · [Editions](docs/EDITIONS.md) · [Firmware build](firmware/README.md) · [Web architecture](web/ARCHITECTURE.md) · [HTTP API](docs/rest-api.md) · [OSC Spec](docs/osc-spec.md) · [MIDI Spec](docs/midi-spec.md) · [Director → MIDI](docs/director-midi.md) +**Project:** [Contributing](CONTRIBUTING.md) · [Support](SUPPORT.md) · [Repository map](docs/REPOSITORY.md) · [Changelog](CHANGELOG.md) · [License Summary](docs/LICENSE-SUMMARY.md) · [Manifesto](docs/manifesto.md) **Links:** [patternflow.work](https://patternflow.work) · [Community](https://community.patternflow.work/community) · [Crowd Supply](https://www.crowdsupply.com/engmung/patternflow) · [Releases](../../releases) · [Discord](https://discord.gg/Vr9QtsxeTk) · [Instagram](https://www.instagram.com/patternflow.work) ## Contributing -Builds, documentation fixes, part sourcing tips, and custom patterns are all welcome. **[CONTRIBUTING.md](CONTRIBUTING.md)** covers how contributions flow, including the inbound = outbound pattern licensing. +Builds, documentation fixes, part sourcing tips, enclosure remixes, firmware features and host-software bridges are all welcome. **[CONTRIBUTING.md](CONTRIBUTING.md)** has one table of where each kind goes and what CI runs on it; **[SUPPORT.md](SUPPORT.md)** says where to ask. Patterns don't come here: publish them from the Pattern Lab to the Community. ## Story so far diff --git a/docs/EDITIONS.md b/docs/EDITIONS.md index ce701260..687e567f 100644 --- a/docs/EDITIONS.md +++ b/docs/EDITIONS.md @@ -449,4 +449,4 @@ is in [`investigations/2026-08-the-wifi-portal-a-samsung-never-drew.md`](investi | cut an edition | [`bundles/README.md`](../firmware/bundles/README.md) — the two files, in full | | know why any of this | [RFC](rfc-core-and-variants.md) §2.13, §2.14, §2.15 | | talk to a panel | [`rest-api.md`](rest-api.md) | -| write a pattern | [`firmware/README.md`](../firmware/README.md) | +| write a pattern | [`PATTERN_GUIDE.md`](../PATTERN_GUIDE.md) — the Pattern Lab route; [`firmware/CUSTOM_PATTERNS.md`](../firmware/CUSTOM_PATTERNS.md) for the hands-on one | diff --git a/docs/README.md b/docs/README.md index b59ea4c8..dd549700 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,37 +1,50 @@ # docs/ -What is here, and what is not. The rule for the split: **a guide somebody follows start to finish lives at the repository root** (`BUILD_GUIDE.md`, `BUILD_GUIDE_v2.md`, `PATTERN_GUIDE.md`, `FEATURE_GUIDE.md`, `AUDIO_GUIDE.md`); **a contract, a reference or a record lives here.** +What is here, and what is not. The rule for the split: **a guide somebody follows start to finish lives at the repository root** (`BUILD_GUIDE.md`, `BUILD_GUIDE_v2.md`, `PATTERN_GUIDE.md`, `FEATURE_GUIDE.md`, `AUDIO_GUIDE.md`); **a contract, a reference, a walk-through for one task, or a record lives here**; and a folder explains itself in its own README. The folder-by-folder map of the whole repository is [`REPOSITORY.md`](REPOSITORY.md). ## Contracts — other software is built against these, not against the firmware source -- [`rest-api.md`](rest-api.md) — the device's HTTP API (`/api/*`), the console pages, and how to choose between HTTP, OSC and MQTT +- [`rest-api.md`](rest-api.md) — the device's HTTP API (`/api/*`), the console pages, and the table for choosing between HTTP, OSC, MIDI and MQTT - [`osc-spec.md`](osc-spec.md) — OSC over UDP (DAWs, Max, TouchDesigner) - [`midi-spec.md`](midi-spec.md) — the panel as a network MIDI port +- `mqtt-spec.md` — MQTT topics, both directions (until it lands, the contract is the header comment of `firmware/patternflow/features/mqtt/core_mqtt.h` and the "which topic to write" section of `rest-api.md`) - [`audio-ws-spec.md`](audio-ws-spec.md) — the audio-react WebSocket the browser extension and the phone app speak - [`pfst-v2-spec.md`](pfst-v2-spec.md) — the `.pfs` show table, with test vectors in [`pfst-v2-vectors/`](pfst-v2-vectors/) -- [`panel-compatibility.md`](panel-compatibility.md) — which HUB75 panels work, and what to change for other sizes +- [`panel-compatibility.md`](panel-compatibility.md) — a buying guide first (which HUB75 panels light up and which stay dark), then the reference for other sizes ## How the firmware is put together - [`EDITIONS.md`](EDITIONS.md) — features, compositions, editions: the seam, the rule that the core names no feature, the vocabulary. **Read before touching firmware.** -- [`rfc-core-and-variants.md`](rfc-core-and-variants.md) and its [progress log](rfc-core-and-variants-progress.md) — the 2026-08 RFC that produced the seam. Historical: it says *addon* and *variant* where the tree says *feature* and *edition*. +- [`rfc-core-and-variants.md`](rfc-core-and-variants.md) and its [progress log](rfc-core-and-variants-progress.md) — the 2026-08 RFC that produced the seam. Historical: it says *addon* and *variant* where the tree says *feature* and *edition*, and its listing rules have been superseded by `EDITIONS.md`. + +## Walk-throughs — one task, start to finish + +- [`midi-ableton.md`](midi-ableton.md) — the panel as a MIDI port in Ableton Live, with screenshots - [`director-midi.md`](director-midi.md) — how a Director show becomes a MIDI clip -- [`midi-ableton.md`](midi-ableton.md) — the Ableton walk-through +- [`assembly/`](assembly/README.md) — the assembly map: which enclosure with which electronics, and where each route is documented +- [`../firmware/CUSTOM_PATTERNS.md`](../firmware/CUSTOM_PATTERNS.md) — the hands-on pattern route (the everyday one is [`PATTERN_GUIDE.md`](../PATTERN_GUIDE.md)) +- [`../firmware/patternflow/console/README.md`](../firmware/patternflow/console/README.md) — editing or adding a device console page ## Building it -- [`assembly/`](assembly/README.md) — the assembly map: electronics paths, enclosure paths, firmware. The full guide is [`../BUILD_GUIDE.md`](../BUILD_GUIDE.md). +- [`assembly/`](assembly/README.md) — the map. The full guide is [`../BUILD_GUIDE.md`](../BUILD_GUIDE.md); the files to order are described in [`../hardware/README.md`](../hardware/README.md) - [`build-guide/images/`](build-guide/images/) — photos for the build guides (`images/` is the v2 set, `images/v3/` the current board) -- [`LICENSE-SUMMARY.md`](LICENSE-SUMMARY.md) — MIT for code, CC-BY-SA 4.0 for hardware and bundled patterns, and what that means for a pattern you publish +- [`LICENSE-SUMMARY.md`](LICENSE-SUMMARY.md) — MIT for code, CC BY-SA 4.0 for hardware, docs and bundled patterns, and what that means for a pattern you publish or a remix you share + +## Contributing + +- [`../CONTRIBUTING.md`](../CONTRIBUTING.md) — one table: what you have → where it goes → what CI runs on it +- [`../SUPPORT.md`](../SUPPORT.md) — where to ask what +- [`REPOSITORY.md`](REPOSITORY.md) — the folder-by-folder map, and the list of files that outside things link to ## Running the project -- [`RELEASING.md`](RELEASING.md) — cutting a release: version, changelog, tag, what the workflows attach +- [`RELEASING.md`](RELEASING.md) — the `dev` → `main` routine, cutting a release, what the workflows attach - [`SERVICES.md`](SERVICES.md) — the production hosts (community, build worker) and their systemd units. Korean. ## Records - [`investigations/`](investigations/) — dated post-mortems -- [`releases/`](releases/) — long-form notes for particular releases; `CHANGELOG.md` at the root is the complete record -- [`manifesto.md`](manifesto.md) — why Patternflow exists +- [`releases/`](releases/) — long-form notes for three July 2026 releases, kept as written; notes since 3.2 are on [GitHub Releases](https://github.com/engmung/Patternflow/releases), and `CHANGELOG.md` at the root is the complete record +- [`manifesto.md`](manifesto.md) — why Patternflow exists, and (section 6) how we treat each other - [`images/`](images/), [`media/`](media/) — assets the guides and the site reference diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 56e7072d..4c1fe691 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -63,6 +63,20 @@ What the two commands do, step by step - and the way to do it by hand. 9. Create the GitHub Release from the tag. Publishing it triggers **Firmware release assets**, which attaches the four flash images from the tag plus a generated `FLASHING.md` with offsets and hashes. 10. Confirm it went green before announcing; re-run it with `workflow_dispatch` if it did not fire. +## Branches + +Work happens on `dev`, then lands on `main` through a pull request. `main` is protected: nobody pushes to it directly, the maintainer included. + +- **Commit freely on `dev`.** Commits are cheap save points; small and frequent is good. Throwaway `wip:` commits belong here rather than on `main`. +- **Bigger or riskier work** gets its own branch (`feat/...`, `fix/...`) off `dev`. +- **Outside pull requests target `main`.** After one merges, pull `main` back into `dev` so the branches don't drift: + + ``` + git checkout dev && git merge origin/main && git push origin dev + ``` + +- **A release** is `dev` → `main` as one pull request, opened by `release.py publish` from the changelog section; merging it posts the dev-log to Discord. + ## Current release line `CHANGELOG.md` is the record — one section per release, newest first — and the [releases page](https://github.com/engmung/Patternflow/releases) carries the notes and the flashable images. The shape of the line, for orientation: diff --git a/docs/REPOSITORY.md b/docs/REPOSITORY.md new file mode 100644 index 00000000..4d95ecc1 --- /dev/null +++ b/docs/REPOSITORY.md @@ -0,0 +1,50 @@ +# The repository, folder by folder + +A map for people. (AI coding agents get the same map with more rules in [`../AGENTS.md`](../AGENTS.md).) Version numbers are deliberately not written here; the current project and edition versions are stamped into `AGENTS.md` by the release script and listed on the [releases page](https://github.com/engmung/Patternflow/releases). + +## Top level + +| Folder | What it is | Start at | +| :--- | :--- | :--- | +| `firmware/` | The ESP32-S3 firmware. `patternflow/` is the sketch: `patternflow.ino`, `config.h` (pins, brightness, limits, calibration), `net_config.h` (Wi-Fi, OTA, update defaults), `src/` (the engine: HUB75 driver, encoders, canvas, colour, noise, Wi-Fi, web console — the **core**, compiled unchanged into every published firmware), `features/` (everything optional: OSC, audio, MQTT, MIDI, shows, weather, clock — attached through hooks the core exposes), `presets/` (the curated patterns), `abi/` (the frozen contract a `.pfm` module is compiled against), `console/` (the device's web pages as plain HTML). `bundles/` names the editions (which features compile in) and holds `build.sh`. `toolchain/` is the repo-level scripts: build a module, make the Basics pack, and the `check_*.py` that CI runs. `modules/` is the module toolchain's working folder, not a place patterns are contributed to | [`firmware/README.md`](../firmware/README.md) for building; [`EDITIONS.md`](EDITIONS.md) before touching anything | +| `hardware/` | `pcb/` (KiCad source, Gerbers per revision, schematic PDF), `case/` (STLs by printer bed size, knob plates, the Blender source, legacy v2 cases, and `remixes/` for community variants), `bom/` (the CSV that is the BOM source of truth) | [`hardware/README.md`](../hardware/README.md) | +| `web/` | The Next.js site at patternflow.work: landing page, Live Editor, Pattern Lab, the community (only on the community host), browser flasher, edition shelf, device update handoff, journal, roadmap. The JS presets in `src/lib/presets/` are the source of truth for the firmware's preset headers. The breadboard build guide is a React page here, `src/app/build/breadboard/` | [`web/README.md`](../web/README.md), then [`web/ARCHITECTURE.md`](../web/ARCHITECTURE.md) | +| `docs/` | Contracts other software is built against, how the firmware is put together, walk-throughs, the assembly map, project records and media | [`README.md`](README.md) | +| `tools/` | Clients Patternflow ships that run on their own: the audio-react browser extension (also the authoring source of the device's `/audio-in` page), the Android capture app, an RTP-MIDI probe | [`tools/README.md`](../tools/README.md) | +| `integrations/` | Bridges that run inside or beside someone else's software (Ableton / Max for Live today) and talk to the panel only through the contracts in `docs/` | [`integrations/README.md`](../integrations/README.md) | +| `.github/` | Issue and pull-request templates, the CI workflows (web, firmware editions, doc links, console-page sync, firmware release assets, Discord dev-log) and their helper scripts | the header comment of each workflow | +| root | `README.md`, the five guides (`BUILD_GUIDE.md`, `BUILD_GUIDE_v2.md`, `PATTERN_GUIDE.md`, `FEATURE_GUIDE.md`, `AUDIO_GUIDE.md`), `CHANGELOG.md`, `CONTRIBUTING.md`, `SUPPORT.md`, `CODE_OF_CONDUCT.md`, `SECURITY.md`, `CITATION.cff`, the two license texts and the `LICENSE` pointer, `AGENTS.md` (+ `CLAUDE.md`, a one-line shim) | | + +The rule for where a document lives: **a guide somebody follows start to finish is at the root; a contract, a reference or a record is in `docs/`; a folder explains itself in its own README.** + +## What you want to do → where to start + +| Goal | Path | +| :--- | :--- | +| Build one | [`README.md`](../README.md) → [`BUILD_GUIDE.md`](../BUILD_GUIDE.md) (or the [assembly map](assembly/README.md) for the other routes) → [`hardware/README.md`](../hardware/README.md) for which files to order | +| Make a pattern | [`PATTERN_GUIDE.md`](../PATTERN_GUIDE.md) — the Pattern Lab, the community, and the device. No local toolchain involved. [`firmware/CUSTOM_PATTERNS.md`](../firmware/CUSTOM_PATTERNS.md) is the older, more hands-on route | +| Write a firmware feature or cut an edition | [`FEATURE_GUIDE.md`](../FEATURE_GUIDE.md) → [`EDITIONS.md`](EDITIONS.md) → [`features/README.md`](../firmware/patternflow/features/README.md) → [`bundles/README.md`](../firmware/bundles/README.md) | +| Control the panel from other software | [`rest-api.md`](rest-api.md) has the table for choosing between HTTP, OSC, MIDI and MQTT; then the spec for the one you chose | +| Put sound into it | [`AUDIO_GUIDE.md`](../AUDIO_GUIDE.md) | +| Work on the site | [`web/README.md`](../web/README.md) → [`web/ARCHITECTURE.md`](../web/ARCHITECTURE.md) | +| Contribute anything | [`CONTRIBUTING.md`](../CONTRIBUTING.md) — one table of where each kind of contribution goes | +| Cut a release, run the servers | [`RELEASING.md`](RELEASING.md), [`SERVICES.md`](SERVICES.md) | + +## Deliberately not in git + +`_temp/`, `_tmp/` (scratch), `.claude/` (local agent config), `firmware/patternflow/patternflow_secrets.h` (per-device Wi-Fi credentials — never commit, and never build a shelf image with it present), `firmware/modules/.build/` and `firmware/patternflow/data/patterns/` (module build outputs), `web/data/` (a community host's SQLite and uploads), the PlatformIO clones under `firmware/patternflow/`. The reasons are in `.gitignore`'s comments. + +## Naming + +Filenames are lowercase with underscores. Tags are `vX.Y.Z`; the firmware source is not versioned by folder name. Preset files are named by the date they were made (`preset_0510.h`) and that name is also the site's sort key, so they are not renamed. `encloser.stl` is a typo that shipped in a release and on MakerWorld; it stays. + +## Files that other things link to — check before renaming + +The site, the firmware and the release notes hold absolute `blob/main/…` links into this tree, and none of them is checked by CI. Before renaming or moving any of these, grep `web/src`, `web/content`, `firmware/patternflow/console` and `firmware/patternflow/features/*/*_index.h`: + +- `README.md`, `BUILD_GUIDE.md` (three section anchors are linked from the site), `AUDIO_GUIDE.md`, `FEATURE_GUIDE.md`, `PATTERN_GUIDE.md` +- `docs/assembly/README.md`, `docs/midi-ableton.md`, `docs/midi-spec.md` (the last two are baked into the Audio edition's console pages) +- `docs/EDITIONS.md`, `docs/rest-api.md`, `firmware/README.md`, `hardware/bom/bom_v3.9.csv` +- `web/src/app/compliance/` — the `/compliance` URL is printed on the box. Never move, redirect or noindex it. + +`.github/scripts/check_links.py` checks the *relative* links in every tracked markdown file and runs on every pull request that touches one. diff --git a/firmware/CUSTOM_PATTERNS.md b/firmware/CUSTOM_PATTERNS.md index a2c2afc4..84a03744 100644 --- a/firmware/CUSTOM_PATTERNS.md +++ b/firmware/CUSTOM_PATTERNS.md @@ -5,7 +5,7 @@ Patternflow includes a workflow for creating patterns without writing low-level - **AI-assisted** — describe the pattern in plain language, paste the AI's output into the editor, tune knobs, copy to C++, flash. No shader knowledge required. - **Direct** — write the JavaScript pattern by hand in the editor, then convert to C++. For anyone comfortable with fragment-shader-style code. -> **New: you no longer need the Arduino IDE.** The last step — turning a pattern into firmware and getting it onto the board — now runs in the browser: the server compiles, your browser flashes over USB. See [step 5](#5-convert-to-c-and-flash). The Arduino IDE route still works and is still the right one for firmware development. +> **New: you no longer need the Arduino IDE.** The last step — turning a pattern into firmware and getting it onto the board — now runs in the browser: the server compiles, your browser flashes over USB. See [step 5](#5-convert-to-c-and-flash). A local build is still the route for firmware development itself; that is PlatformIO through `firmware/bundles/build.sh`, not the Arduino IDE (the IDE cannot build the editions' library set). > **Newer still: patterns can install without any flashing at all.** On firmware > with loadable-module support, the same `.h` builds into a tiny `.pfm` module @@ -62,11 +62,11 @@ Requirements: the device powered on and on the same Wi-Fi as your computer. (Bak If the build fails you get the compiler's own error. The usual causes are a helper the firmware already provides being redefined, or a type that differs from the JavaScript original. -#### Route B — from the Arduino IDE (local build) +#### Route B — a local build (PlatformIO) -1. Save the C++ output as `pattern_yourname.h` inside `firmware/patternflow/`. +1. Save the C++ output as `preset_yourname.h` inside `firmware/patternflow/presets/`. 2. Open `pattern_registry.h` and add two lines (see [Installing your pattern](#installing-your-pattern) below). -3. Open `patternflow.ino` in Arduino IDE, select your ESP32-S3 port, and upload. +3. Build and flash with the bundled toolchain: `./firmware/bundles/build.sh flash patternflow.local` (over Wi-Fi) or `cd firmware/patternflow && pio run -t upload` (USB). Still the route for changing anything beyond a pattern — firmware development, config edits, working offline, or building for a board you cannot plug into this machine. @@ -74,7 +74,7 @@ Still the route for changing anything beyond a pattern — firmware development, Long-press encoder 4 on the device to cycle to your new pattern. -> Either route flashes a **whole firmware image**, replacing the firmware and the presets compiled into it. Any `.pfm` modules you've installed live on a separate FATFS partition and **survive a normal reflash** — they only go away if you enable *Erase All Flash Before Sketch Upload*, or format the partition from `/patterns`. +> Route B flashes a **whole firmware image**, replacing the firmware and the presets compiled into it; Route A installs a module and touches nothing else. Any `.pfm` modules you've installed live on a separate FATFS partition and **survive a normal reflash** — they only go away if you enable *Erase All Flash Before Sketch Upload*, or format the partition from `/patterns`. --- @@ -211,7 +211,7 @@ function render(x, y, t) { `x` and `y` are pixel coordinates (0 to 127, 0 to 63). `t` is time in seconds. Knob values and helper functions are available — refer to the prompt copied by **Copy creation prompt** for the full API. That prompt is the canonical reference; this README only summarizes the workflow around it. -The conversion path is the same: tune until you like it, click **Copy C++ prompt**, paste into an AI, save the result as a `pattern_*.h` file, register it. +The conversion path is the same: tune until you like it, click **Copy C++ prompt**, paste into an AI, save the result as a `presets/preset_*.h` file, register it. --- diff --git a/firmware/patternflow/features/README.md b/firmware/patternflow/features/README.md index ba538487..302d4d0c 100644 --- a/firmware/patternflow/features/README.md +++ b/firmware/patternflow/features/README.md @@ -153,7 +153,7 @@ The order matters — these are positional. Copy the block from an existing feature and fill in what you need; the compiler catches a slot in the wrong place as a type error, which is how the ports found their own mistakes. -Then one line in `features.h`, and nothing else in the tree changes. +Then one line in the bundle that carries it — `firmware/bundles//features_local.h` — and nothing else in the tree changes. `features.h` itself belongs to the core and is never edited (its header says why). ### House rules diff --git a/integrations/README.md b/integrations/README.md new file mode 100644 index 00000000..49ad9483 --- /dev/null +++ b/integrations/README.md @@ -0,0 +1,28 @@ +# integrations/ + +Bridges that run inside or beside someone else's software and connect it to a Patternflow: a Max for Live device today, a TouchDesigner component or a Node-RED flow tomorrow. (A standalone program of ours is a *tool* and lives in [`tools/`](../tools/README.md).) + +An integration is built against the **contracts** in `docs/`, never against the firmware source, and it never imports code from `firmware/` or `web/`. That is what lets it keep working across firmware releases: the panel promises the wire, not the implementation. + +| Contract | Spec | Use it when | +| :--- | :--- | :--- | +| HTTP | [`rest-api.md`](../docs/rest-api.md) | one-shot commands and status; also the table for choosing between all four | +| OSC over UDP | [`osc-spec.md`](../docs/osc-spec.md) | Max, TouchDesigner, Resolume, Processing; both directions, rich payloads | +| Network MIDI | [`midi-spec.md`](../docs/midi-spec.md) | any DAW: the panel is a MIDI port | +| MQTT | `mqtt-spec.md` (until it lands: the header of `firmware/patternflow/features/mqtt/core_mqtt.h`) | home and venue buses, Home Assistant, Node-RED, boards following each other | + +OSC, MIDI and audio-react ship in the **Audio** edition and MQTT in the **Performance** edition, installed from [the shelf](https://patternflow.work/editions) in one click; no firmware rebuild is needed on the user's side. + +## In this folder + +| Folder | Host | Contract | Status | +| :--- | :--- | :--- | :--- | +| [`ableton/`](ableton/README.md) | Ableton Live, via a Max for Live device | OSC | in-tree, maintained | + +The Home Assistant integration (custom component and dashboard card, by [@bendobos](https://github.com/bendobos)) left this repository on 2026-09-03 and is maintained by its author separately. A link will be added here when there is one to add. + +## Contributing one + +One folder per host, `integrations//`, containing the source and a `README.md` with these headings, in this order: **What it does · Contract it uses · Requirements · Install · Connect · Troubleshooting · Tested with** (firmware and edition versions) **· License**. [`ableton/README.md`](ableton/README.md) is the reference shape. Add a row to the table above in the same pull request. Code is MIT unless the README says otherwise; a `.maxpat`, `.tox` or flow file that cannot carry a header takes the license its README states. + +There is no build step in CI for integrations. A pull request is checked for the README and for naming at least one contract; the maintainer tries it against a panel when they can, so say which firmware you tested with. diff --git a/integrations/ableton/README.md b/integrations/ableton/README.md index 6ead7b64..c86bce27 100644 --- a/integrations/ableton/README.md +++ b/integrations/ableton/README.md @@ -19,20 +19,14 @@ integrations/ableton/ ## Requirements - Ableton Live Suite (or Live + Max for Live), Live 11/12 -- Patternflow flashed with OSC enabled (below) on the **same Wi-Fi network** as the computer +- Patternflow running the **Audio** edition (below) on the **same Wi-Fi network** as the computer - First run on Windows: allow Max through the firewall when prompted (UDP 9000 must be able to reach Max) -## 1. Enable OSC in the firmware (one-time) +## 1. Put the Audio edition on the panel (one-time) -Copy `firmware/patternflow/patternflow_secrets.example.h` to `patternflow_secrets.h` and set: +OSC ships in the **Audio** edition. Open [patternflow.work/editions](https://patternflow.work/editions), pick Audio, and install it from the browser; your patterns, Wi-Fi networks and settings stay. No rebuild, no secrets file. (Building your own image with the OSC feature is also possible; that is [docs/EDITIONS.md](../../docs/EDITIONS.md).) -```cpp -#define PF_WIFI_SSID "your-wifi-name" -#define PF_WIFI_PASS "your-wifi-password" -#define PF_OSC_ENABLED 1 -``` - -You do **not** need to set your computer's IP — the device learns it from the bridge's ping. Flash, then check the K2-longpress info screen: OSC should read `READY` or `WAIT HOST`. +You do **not** need to set your computer's IP: the device learns it from the bridge's ping. Check the K2 long-press info screen: OSC should read `READY` or `WAIT HOST`. ## 2. Install the bridge device diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 00000000..09f9ffff --- /dev/null +++ b/tools/README.md @@ -0,0 +1,17 @@ +# tools/ + +Clients that Patternflow ships and that run on their own — a browser extension, a phone app, a diagnostic script. The line between this folder and [`integrations/`](../integrations/README.md): a **tool** is a standalone program of ours; an **integration** is a bridge that runs inside or beside someone else's software (a DAW, Max, TouchDesigner, Node-RED). Both talk to the panel only through the contracts in [`docs/`](../docs/README.md#contracts--other-software-is-built-against-these-not-against-the-firmware-source). + +| Folder | What it is | Contract | +| :--- | :--- | :--- | +| [`patternflow-audio-extension/`](patternflow-audio-extension/README.md) | Chrome/Edge extension: captures the current tab's audio, splits it into four bands you shape on a response graph, streams the levels to the panel | [`audio-ws-spec.md`](../docs/audio-ws-spec.md) | +| [`patternflow-audio-android/`](patternflow-audio-android/README.md) | The phone-side twin: captures what the phone is playing and drives the knobs with it, for filming | [`audio-ws-spec.md`](../docs/audio-ws-spec.md) | +| [`rtpmidi-probe/`](rtpmidi-probe/README.md) | A plain-Python RTP-MIDI session initiator that walks the MIDI contract against a panel from a machine with no MIDI driver | [`midi-spec.md`](../docs/midi-spec.md) | + +## The extension is also firmware source + +The band editor in `patternflow-audio-extension/` (`editor.html`, `editor.css`, `editor.js`, `editor-adapter.js`) is the **authoring source of the device's own `/audio-in` console page**: `firmware/toolchain/build_audio_in_page.py` assembles `firmware/patternflow/console/audio-in.html` from those files, and the `console-sync` workflow fails if the two drift. Edit the editor here, never the generated page, and do not move this folder — the build script and the workflow hold its path. + +## License + +Code in `tools/` is MIT, like the firmware and the site ([`LICENSE-MIT`](../LICENSE-MIT)). Each tool's README says how to build and run it. diff --git a/web/AGENTS.md b/web/AGENTS.md index 643577df..524c1fd6 100644 --- a/web/AGENTS.md +++ b/web/AGENTS.md @@ -7,3 +7,5 @@ This version has breaking changes — APIs, conventions, and file structure may This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. + +For humans: the repository map and rules are in the root `AGENTS.md`; how this app is put together is `./ARCHITECTURE.md`. diff --git a/web/README.md b/web/README.md index fb81b0c9..b47d7342 100644 --- a/web/README.md +++ b/web/README.md @@ -1,6 +1,6 @@ # Patternflow Web -The Next.js app behind [patternflow.work](https://patternflow.work) — landing page, Live Editor, browser flasher, journal, and roadmap. +The Next.js app behind [patternflow.work](https://patternflow.work) — landing page, Live Editor, Pattern Lab, the pattern community (on the community host only), browser flasher, edition shelf, device update handoff, journal, and roadmap. For how the app is put together (routes, pattern system, content pipeline), see **[ARCHITECTURE.md](./ARCHITECTURE.md)**. @@ -32,14 +32,16 @@ None are required — the site runs fully without them. ## Where things live -- `src/app/` — routes (App Router). `/pattern-lab` is an internal noindex tool. -- `src/components/` — 3D viewer, landing sections, journal renderer. -- `src/lib/presets/` — JS pattern library; **source of truth** for the firmware preset headers. -- `content/` — markdown/MDX site copy and journal articles. Editing copy means editing these files. -- `public/flash/` — esp-web-tools manifest + firmware binaries for the browser flasher. +- `src/app/` — routes (App Router). `/pattern-lab` is the pattern workspace (noindex, not internal). The breadboard build guide is `src/app/build/breadboard/page.tsx` — React, not markdown. +- `src/components/` — 3D viewer, landing sections, journal renderer, the community UI. The build map's pins are `src/components/sections/InsideGlobe/builds.ts` plus photos in `public/builds//`. +- `src/lib/presets/` — JS pattern library; **source of truth** for the firmware preset headers (`firmware/toolchain/check_presets.py` keeps the two in step). +- `content/` — markdown/MDX site copy (`build.md`, `pattern.md`, `inside.md`) and the journal. The journal is the maintainer's own writing. +- `public/flash/` — esp-web-tools manifest + firmware binaries for the browser flasher. `public/packs/` — the Basics pack. +- `scripts/` — build-time helpers (`build-sandbox.ts`, `import-patterns.ts`, ...); `test/` — the `check:*` suites (vitest); `drizzle/` — community DB migrations; `.env.example` — every variable the community host reads. +- `AGENTS.md` here is a block `next dev` writes for AI agents; `CLAUDE.md` is a one-line shim to it. The project's own agent context is the root `AGENTS.md`. ## Contributing -See the repo-level [CONTRIBUTING.md](../CONTRIBUTING.md). Web changes go through a PR into `main`; CI runs lint and `next build` on anything under `web/`. +See the repo-level [CONTRIBUTING.md](../CONTRIBUTING.md). Web changes go through a PR into `main`; CI runs lint, typecheck, the `check:*` suites and `next build` on anything under `web/`. Code in `web/` is MIT licensed ([LICENSE-MIT](../LICENSE-MIT)). From 909c7855ca426caa310f49911c5fc8c29775d288 Mon Sep 17 00:00:00 2001 From: engmung <122682380+engmung@users.noreply.github.com> Date: Mon, 14 Sep 2026 03:49:32 +0900 Subject: [PATCH 4/7] docs: folder READMEs, an MQTT contract, and the enclosure remixes surface Every contributor-facing subtree now explains itself: firmware/modules/ (the module toolchain's working folder, not an inbox), firmware/toolchain/, both presets/ folders, hardware/case/legacy_lasercut/. docs/mqtt-spec.md lifts the MQTT contract out of core_mqtt.h's header comment and rest-api.md so it sits beside the OSC and MIDI contracts. hardware/case/remixes/ is the named place for community enclosure variants, with a README-as-licence rule and a one-step workflow that checks it (and that every integration names a contract). The loader's ctor probe moves out of modules/ into toolchain/tests/, and the stale layer_stack fixture (author unknown, source path gone) is removed. The shelf's rules now point at EDITIONS.md instead of the historical RFC. The Workshop is no longer offered as a venue. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/community-surfaces.yml | 45 + CONTRIBUTING.md | 2 +- README.md | 4 +- SUPPORT.md | 4 +- docs/LICENSE-SUMMARY.md | 8 +- docs/README.md | 2 +- docs/mqtt-spec.md | 75 ++ docs/rest-api.md | 26 +- firmware/modules/README.md | 11 + firmware/modules/layer_stack/module.json | 14 - firmware/modules/layer_stack/pattern.cpp | 805 ------------------ firmware/patternflow/data/README.txt | 2 +- .../patternflow/features/mqtt/core_mqtt.h | 3 + firmware/patternflow/presets/README.md | 17 + firmware/toolchain/README.md | 21 + .../tests}/modules/_ctor_probe/pattern.cpp | 2 +- hardware/case/README.md | 8 +- hardware/case/legacy_lasercut/README.md | 12 + hardware/case/remixes/README.md | 35 + integrations/README.md | 2 +- tools/patternflow-audio-extension/README.md | 21 +- web/src/app/editions/editions-data.ts | 4 +- web/src/app/editions/page.tsx | 2 +- web/src/lib/presets/README.md | 14 + 24 files changed, 272 insertions(+), 867 deletions(-) create mode 100644 .github/workflows/community-surfaces.yml create mode 100644 docs/mqtt-spec.md create mode 100644 firmware/modules/README.md delete mode 100644 firmware/modules/layer_stack/module.json delete mode 100644 firmware/modules/layer_stack/pattern.cpp create mode 100644 firmware/patternflow/presets/README.md create mode 100644 firmware/toolchain/README.md rename firmware/{ => toolchain/tests}/modules/_ctor_probe/pattern.cpp (93%) create mode 100644 hardware/case/legacy_lasercut/README.md create mode 100644 hardware/case/remixes/README.md create mode 100644 web/src/lib/presets/README.md diff --git a/.github/workflows/community-surfaces.yml b/.github/workflows/community-surfaces.yml new file mode 100644 index 00000000..b4272f32 --- /dev/null +++ b/.github/workflows/community-surfaces.yml @@ -0,0 +1,45 @@ +name: Community folders carry their README + +# Two folders take outside contributions as whole new subfolders: +# hardware/case/remixes/-/ and integrations//. Their +# files (STL, DXF, .maxpat, .tox) cannot carry an SPDX header, so each +# folder's README is the header — it names the author and the license, and +# an integration names the contract it is built against. That is all this +# checks. There is no geometry check and no build; stdlib shell, seconds. +on: + pull_request: + paths: + - "hardware/case/remixes/**" + - "integrations/**" + - ".github/workflows/community-surfaces.yml" + +concurrency: + group: community-surfaces-${{ github.ref }} + cancel-in-progress: true + +permissions: {} + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Every remix folder has a README with Author and License + run: | + fail=0 + for d in hardware/case/remixes/*/; do + [ -d "$d" ] || continue + if [ ! -f "$d/README.md" ]; then echo "::error::$d has no README.md"; fail=1; continue; fi + grep -Eq '^Author: *[^ ]' "$d/README.md" || { echo "::error::$d/README.md has no 'Author:' line"; fail=1; } + grep -Eq '^License: *CC-BY(-SA)?-4\.0' "$d/README.md" || { echo "::error::$d/README.md has no 'License: CC-BY-SA-4.0' (or CC-BY-4.0) line"; fail=1; } + done + exit $fail + - name: Every integration has a README that names a contract + run: | + fail=0 + for d in integrations/*/; do + if [ ! -f "$d/README.md" ]; then echo "::error::$d has no README.md"; fail=1; continue; fi + grep -Eq 'rest-api\.md|osc-spec\.md|midi-spec\.md|mqtt-spec\.md|audio-ws-spec\.md|pfst-v2-spec\.md' "$d/README.md" \ + || { echo "::error::$d/README.md does not name a contract in docs/ (rest-api, osc-spec, midi-spec, mqtt-spec, audio-ws-spec, pfst-v2-spec)"; fail=1; } + done + exit $fail diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b07f2e2..2b6aa98a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,7 @@ Patternflow is a device, a firmware, a website and a pile of documentation, and | A fix to the firmware **core** (`patternflow.ino`, `src/`) | the file itself — for a bug or a real improvement to the device, never to make room for a feature | | the same, and the change must still be right on a build that has no features at all | | An enclosure or mechanical **remix** | `hardware/case/remixes/-/`, with a README that states Author, License, what it is based on, which board it fits, and the print or cut settings | one new folder; the official folders stay as they are | the README fields are checked | | A **bridge** to host software (TouchDesigner, Node-RED, Max, a DAW…) | `integrations//` with a README, plus a row in `integrations/README.md`. It talks to the panel through the contracts in `docs/` and never imports firmware or web code | one new folder | the README has to name the contract it is built against | -| A change to a **wire contract** | `docs/rest-api.md`, `osc-spec.md`, `midi-spec.md`, `mqtt-spec.md`, `audio-ws-spec.md`, `pfst-v2-spec.md` | the spec: bump its version line and add a Version history row | `docs-links` | +| A change to a **wire contract** | [`docs/rest-api.md`](docs/rest-api.md), [`osc-spec.md`](docs/osc-spec.md), [`midi-spec.md`](docs/midi-spec.md), [`mqtt-spec.md`](docs/mqtt-spec.md), [`audio-ws-spec.md`](docs/audio-ws-spec.md), [`pfst-v2-spec.md`](docs/pfst-v2-spec.md) | the spec: bump its version line and add a Version history row | `docs-links` | | Web app work | `web/` — start at [`web/README.md`](web/README.md) and [`web/ARCHITECTURE.md`](web/ARCHITECTURE.md) | | `web-ci`: lint, typecheck, the `check:*` suites, `next build` | | A **pattern** | **not this repository.** Make it in the [Pattern Lab](https://patternflow.work/pattern-lab), press **Publish**, and it is on the [Community](https://community.patternflow.work/community) for every Patternflow to play, under the license you choose. [PATTERN_GUIDE.md](PATTERN_GUIDE.md) walks the loop. The presets bundled in the firmware and the Basics pack are curated by the maintainer from the repository's own sources | | | diff --git a/README.md b/README.md index 5fe83c46..02369fe7 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ The **[Workshop](https://community.patternflow.work/community/workshop)** is whe It's already moving in directions I didn't choose. One contributor is building out MQTT further than I've had time to follow: units reaching each other across a network, one person's playing coming out of somebody else's device. Another is working on sound on the board itself. Another is taking the TouchDesigner link further than I did. None of it was assigned. -**[CONTRIBUTING.md](CONTRIBUTING.md)** covers how contributions flow. Questions and ideas go to the **[Discord](https://discord.gg/Vr9QtsxeTk)**, or to the **[Workshop](https://community.patternflow.work/community/workshop)** if Discord isn't reachable where you are. +**[CONTRIBUTING.md](CONTRIBUTING.md)** covers how contributions flow. Questions and ideas go to the **[Discord](https://discord.gg/Vr9QtsxeTk)**; where to ask what is **[SUPPORT.md](SUPPORT.md)**. ## Quick facts @@ -165,7 +165,7 @@ Each of these lives in an **edition** — a firmware you install from [the shelf **Bidirectional OSC.** Over Wi-Fi, Patternflow speaks OSC in both directions: knob turns, button presses, and pattern switches stream out to a remote host (Ableton Live, Max/MSP, TouchDesigner, anything that speaks OSC), and incoming OSC messages drive the device exactly like physical encoder motion. Play Patternflow as a controller for your set, let your set drive the light, or both at once. OSC is the language of Max, TouchDesigner, Resolume and Processing, and it carries more than MIDI can — pattern names, floats, a heartbeat. For Ableton Live Suite there's a ready-made Max for Live bridge in [`integrations/ableton`](integrations/ableton). Click Connect, map the four knobs to any Live parameters, done. The wire protocol is documented in [`docs/osc-spec.md`](docs/osc-spec.md). -**MQTT.** Patternflow also speaks MQTT, both ways, on the broker you already run. Knob turns and pattern changes publish as they happen; messages coming the other way move the knobs and switch patterns exactly as a hand on the encoder would. Two boards pointed at the same broker follow each other, which is the short version of why it exists. It also puts the device on the same bus as the rest of a home or venue setup, so Home Assistant, Node-RED or a lighting desk can drive it without anything Patternflow-specific in the middle. Point it at a broker on the device's own **MQTT** page; a pattern can be addressed by name or by slug. Publishing `1` to `/sleep` puts the panel to sleep and `0` wakes it, with the current state mirrored on `/sleep/state`. That is enough for a Home Assistant switch, and it is the one command a panel obeys whether it is set to Publisher or Subscriber. Contributed by **[@SimonePDA](https://github.com/SimonePDA)** (Simone Majocchi), along with the browser-side zip unpacking that makes pattern packs install in one click. +**MQTT.** Patternflow also speaks MQTT, both ways, on the broker you already run ([the contract](docs/mqtt-spec.md)). Knob turns and pattern changes publish as they happen; messages coming the other way move the knobs and switch patterns exactly as a hand on the encoder would. Two boards pointed at the same broker follow each other, which is the short version of why it exists. It also puts the device on the same bus as the rest of a home or venue setup, so Home Assistant, Node-RED or a lighting desk can drive it without anything Patternflow-specific in the middle. Point it at a broker on the device's own **MQTT** page; a pattern can be addressed by name or by slug. Publishing `1` to `/sleep` puts the panel to sleep and `0` wakes it, with the current state mirrored on `/sleep/state`. That is enough for a Home Assistant switch, and it is the one command a panel obeys whether it is set to Publisher or Subscriber. Contributed by **[@SimonePDA](https://github.com/SimonePDA)** (Simone Majocchi), along with the browser-side zip unpacking that makes pattern packs install in one click. **Audio-react.** The Chrome/Edge extension in [`tools/patternflow-audio-extension`](tools/patternflow-audio-extension) captures the current tab's audio, splits it into four bands you shape on a response graph, and sends the levels to the panel over a WebSocket. A pattern reads them as ordinary parameters, so every encoder-driven pattern reacts with no audio code of its own. The panel can also listen for itself: an on-board microphone runs the same analysis on the device, with no browser involved. diff --git a/SUPPORT.md b/SUPPORT.md index 895ed633..50150f75 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -7,11 +7,11 @@ One table for "where do I ask". Issues are for things that change this repositor | Get unstuck building, soldering or flashing | [Discord → hardware-help](https://discord.com/channels/1497757947827327067/1499907910707187833) — photos and quick back-and-forth | | Show a pattern I made, or get feedback on one | Publish it from the [Pattern Lab](https://patternflow.work/pattern-lab) to the [Community](https://community.patternflow.work/community), then [Discord → patterns](https://discord.com/channels/1497757947827327067/1499908302962819236) | | Put my finished build on the [build map](https://patternflow.work/inside) | [Share your build](https://github.com/engmung/Patternflow/issues/new?template=share_build.yml) — or post it in Discord | -| Talk about where the project should go, or find people working on the same direction | The [Workshop](https://community.patternflow.work/community/workshop) on the community site | +| Talk about where the project should go, or find people working on the same direction | [Discord](https://discord.gg/Vr9QtsxeTk) — the dev-log and the project channels | | Report a bug, a wrong or missing doc, or propose a feature | [New issue](https://github.com/engmung/Patternflow/issues/new/choose) — pick the template | | Report a security problem | [SECURITY.md](SECURITY.md) — privately, not as an issue | | Contribute code, hardware files or docs | [CONTRIBUTING.md](CONTRIBUTING.md) | -**If Discord is blocked where you live**, the community site is the venue: its Workshop and pattern pages need no Discord account, and browsing needs no account at all. +**If Discord is blocked where you live**, the community site still works for patterns and decks without it, and a bug or a documentation issue here reaches the maintainer the same day. A discussion venue that works everywhere is planned; until it exists, an issue is the fallback for a question too. There is no support email. Replies come from the maintainer and from other builders, usually within a day or two. diff --git a/docs/LICENSE-SUMMARY.md b/docs/LICENSE-SUMMARY.md index 54b4fd9e..6a7d2a64 100644 --- a/docs/LICENSE-SUMMARY.md +++ b/docs/LICENSE-SUMMARY.md @@ -11,9 +11,12 @@ override it. |---|---|---| | Firmware code (`firmware/`) | MIT | Use, modify, distribute freely. Keep the copyright notice. | | Web code (`web/`) | MIT | Same as above. | +| Tools and integrations (`tools/`, `integrations/`) | MIT | Same as above. A `.maxpat`, `.tox` or flow file that cannot carry a header takes the license its folder's README states. | | Hardware designs (`hardware/`) | CC BY-SA 4.0 | Modify and share — derivatives use the same license, and credit the author. | | Docs & build guides (`docs/`, `BUILD_GUIDE*.md`) | CC BY-SA 4.0 | Same as above. | | Journal (`web/content/journal/`) | CC BY-SA 4.0 | Same as above. | +| Enclosure remixes (`hardware/case/remixes/`) | Stated in each remix's README (CC BY-SA 4.0 by default) | The README is the license header for files that cannot carry one. | +| Build-map photos (`web/public/builds/`) | CC BY-SA 4.0 unless the build's entry says otherwise | Credit the maker. | | **Bundled patterns** (`web/src/lib/presets/`, `firmware/patternflow/presets/`) | CC BY-SA 4.0 | Per-file SPDX headers. They sit in code folders but they are artwork, not code. | | **Community patterns** | **Chosen by their author** — see below | Read the header in the pattern itself. | @@ -46,8 +49,9 @@ These are different things and are governed by different documents. | | Repository contribution | Community publishing | |---|---|---| -| Where | GitHub PR / issue / Discord | The community site | -| License | Inbound = outbound (CC BY-SA 4.0) | The author's choice, above | +| Where | GitHub PR / issue | The community site, from the Pattern Lab | +| What | Code, hardware files, docs, build-map entries | Patterns | +| License | Inbound = outbound: MIT for code, CC BY-SA 4.0 for the rest | The author's choice, above | | Governed by | [CONTRIBUTING.md](../CONTRIBUTING.md) | Terms of use *(not yet written)* | ## Trademark diff --git a/docs/README.md b/docs/README.md index dd549700..096215e3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,7 +7,7 @@ What is here, and what is not. The rule for the split: **a guide somebody follow - [`rest-api.md`](rest-api.md) — the device's HTTP API (`/api/*`), the console pages, and the table for choosing between HTTP, OSC, MIDI and MQTT - [`osc-spec.md`](osc-spec.md) — OSC over UDP (DAWs, Max, TouchDesigner) - [`midi-spec.md`](midi-spec.md) — the panel as a network MIDI port -- `mqtt-spec.md` — MQTT topics, both directions (until it lands, the contract is the header comment of `firmware/patternflow/features/mqtt/core_mqtt.h` and the "which topic to write" section of `rest-api.md`) +- [`mqtt-spec.md`](mqtt-spec.md) — MQTT topics, both directions, the roles, and why the channel decides whether a write sticks - [`audio-ws-spec.md`](audio-ws-spec.md) — the audio-react WebSocket the browser extension and the phone app speak - [`pfst-v2-spec.md`](pfst-v2-spec.md) — the `.pfs` show table, with test vectors in [`pfst-v2-vectors/`](pfst-v2-vectors/) - [`panel-compatibility.md`](panel-compatibility.md) — a buying guide first (which HUB75 panels light up and which stay dark), then the reference for other sizes diff --git a/docs/mqtt-spec.md b/docs/mqtt-spec.md new file mode 100644 index 00000000..533efc43 --- /dev/null +++ b/docs/mqtt-spec.md @@ -0,0 +1,75 @@ +# Patternflow MQTT contract + +**Version 1.0** (2026-09-14). Sibling of [`rest-api.md`](rest-api.md) (HTTP), [`osc-spec.md`](osc-spec.md) (OSC) and [`midi-spec.md`](midi-spec.md) (network MIDI); the table for choosing between the four is [Choosing a transport](rest-api.md#choosing-a-transport). MQTT ships in the **Performance** edition ([`EDITIONS.md`](EDITIONS.md)); a build without it serves neither the topics below nor `GET /api/mqtt`. The implementation is `firmware/patternflow/features/mqtt/`; this file is what a client is written against. + +What MQTT is for: putting the panel on the bus a home or a venue already runs (Home Assistant, Node-RED, a lighting desk), and making two panels follow each other. It reaches the knobs, the pattern, a banner message and sleep — not firmware update, pattern install or Wi-Fi, which stay on HTTP. + +## Transport + +| | | +| :--- | :--- | +| Broker | Any MQTT 3.1.1 broker. Set on the panel's **MQTT** console page or with `POST /api/mqtt` (host, port, user, password, prefix, role). Passwords are stored on the panel and never reported back. | +| Prefix | One topic prefix per panel, default `patternflow`. The prefix **is the channel** (below). No wildcards are used, so an ACL can be an exact list. | +| Roles | `off` (socket closed) · `publisher` (sends knobs, pattern and, on a show channel, a snapshot heartbeat) · `subscriber` (applies the retained snapshot, then follows the live topics). The two are exclusive: a Publisher ignores incoming knob and pattern writes. `GET /api/mqtt` reports the current role and `POST /api/mqtt?role=subscriber` flips it. | +| Channels | Prefix `patternflow` is **Broadcast**; `patternflow1` … `patternflow4` are **channels 1–4**; `patternflow5` is **Live**; anything else is **Custom**. Channels 1–4 force the Subscriber role. `GET /api/mqtt` reports the channel as `broadcast`, `ch1`–`ch4`, `live`, `custom` or `off`. | + +## Topics + +All under `/`. Direction is from the panel's point of view. + +| Topic | Direction | Payload | Retain | Obeyed in | +| :--- | :--- | :--- | :--- | :--- | +| `knob/1` … `knob/4` | out (publisher), in (subscriber) | absolute accumulated click count, signed integer | no | subscriber | +| `param/1` … `param/4` | out (publisher), in (subscriber) | absolute `0`–`1000`; empty payload releases the hold | no | subscriber | +| `pattern` | out (publisher), in (subscriber) | the pattern's display name or slug | no | subscriber | +| `message` | in | banner text shown on the panel | broadcast: yes · channels: no | either role | +| `sleep` | in | `1` / `on` / `true` / `sleep` · `0` / `off` / `false` / `wake` · `toggle` | no | either role | +| `sleep/state` | out | `0` or `1`, on every change and once per connection | no | — | +| `snapshot` | out (publisher, every 8 s), in (subscriber) | compact JSON of the mid-join state, including `param:[a,b,c,d]` | yes | channels 1–4 and Live only | + +Director-only, on a local broker and not part of the public ACL: `query` (panel → its module inventory), `select` (Director → mark modules on `/patterns` for ZIP export), `select/ack` (panel → `{matched, presets, missing, rev}`). Ignore them unless you are that tool. + +`sleep` and `message` are the two topics a panel obeys in **either** role: they are "tell the panels something", not "mirror this panel", and a panel that publishes its knobs is still one you want to switch off from home automation. Publishing `1` to `/sleep` puts the panel to sleep, `0` wakes it, and `sleep/state` mirrors the result — enough for a Home Assistant switch. + +## Which topic to write + +Decided per pattern by `absoluteReady` in its sidecar (`GET /api/patterns//sidecar` — see `rest-api.md`). + +- **`absoluteReady: true`** → publish `0`–`1000` to `param/`. The pattern pins that parameter to a fraction of its declared range; the value is idempotent and survives a restart of whatever is driving it. Physical encoder motion releases the hold, so a hand on the panel always wins. An empty payload releases it explicitly. +- **`absoluteReady: false`** (every module built before the parameter bus existed, and presets, which cannot be interrogated) → publish a new absolute click count to `knob/`. The panel diffs it against the last value it received and injects the difference as a detent delta. This is a **relative** control: the pattern integrates the delta through its own step size, so the number you send is not a value the parameter will arrive at. + +`knob`, `param` and `pattern` are obeyed **only in Subscriber role**; a Publisher ignores them silently. + +## The channel decides whether your writes survive + +Channels 1–4 and Live subscribe to the retained `/snapshot`, whose `param:[…]` the firmware applies straight onto the knobs, exactly as if it had arrived on `param/`. A Publisher on the channel re-sends one every 8 seconds, and the retained copy is redelivered on every reconnect. So on those five channels an external controller is not the only writer: its value is overwritten a moment later by whatever the snapshot last said, with every write succeeding and nothing reporting an error. The symptom is a control that will not stay where it is put. + +**Broadcast has no snapshot subscription.** For one panel driven by one external controller — home automation, a script, a dashboard — **Broadcast + Subscriber** is the combination that behaves. The show channels exist for a Director driving several panels, which is a different job. + +## Knob ordering + +Two orderings exist. **Physical** is K1–K4 left to right on the front panel. **Logical** is the order patterns read parameters in. The MQTT indices are **logical**, like the OSC indices, `knobs[]` in a sidecar and `/api/status`. The mapping between the two is in `rest-api.md` under [Knob ordering](rest-api.md#knob-ordering). + +## Examples + +Home Assistant, a switch that sleeps and wakes the panel: + +```yaml +mqtt: + switch: + - name: Patternflow + command_topic: patternflow/sleep + state_topic: patternflow/sleep/state + payload_on: "0" + payload_off: "1" + state_on: "0" + state_off: "1" +``` + +Node-RED, driving knob 2 of an `absoluteReady` pattern from a slider: an `mqtt out` node on topic `patternflow/param/2` with the slider's `0`–`1000` value; put the panel on Broadcast in Subscriber role first. + +Two panels following each other: point both at the same broker, same prefix on a show channel (`patternflow1`), one as Publisher and the other as Subscriber. + +## Version history + +- **1.0** (2026-09-14) — first written contract. Lifted verbatim, with no behaviour change, from the header comment of `firmware/patternflow/features/mqtt/core_mqtt.h` and the "Which topic to write" and "The channel decides" sections of `rest-api.md` 1.x. diff --git a/docs/rest-api.md b/docs/rest-api.md index bc1148c4..36bec52f 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -6,7 +6,7 @@ Clients should tolerate unknown status fields and probe capabilities before call Patternflow serves a plain HTTP server on port 80 over the local Wi-Fi network. It carries two different things: the **device console** — HTML pages a person opens in a browser — and a **JSON API** under `/api/`, which is the contract between the firmware and any host software that drives a device over the network. Anything that drives a panel — a bridge, a card, a script — is built against this file, not against the firmware source. -`docs/osc-spec.md` is the sibling contract for OSC over UDP, aimed at DAWs and show software, and `docs/midi-spec.md` the one for MIDI. The MQTT topic layout is documented in the header comment of `firmware/patternflow/features/mqtt/core_mqtt.h`. The three are not interchangeable — see [Choosing a transport](#choosing-a-transport). +`docs/osc-spec.md` is the sibling contract for OSC over UDP, aimed at DAWs and show software, and `docs/midi-spec.md` the one for MIDI. [`docs/mqtt-spec.md`](mqtt-spec.md) is the one for MQTT. The four are not interchangeable — see [Choosing a transport](#choosing-a-transport). ## Transport @@ -294,29 +294,9 @@ Both directions work over HTTP. This section used to say the opposite, and it wa Also reported: `normalHost`, `normalPort`, `normalUser`, `normalPrefix`, `normalHasPassword` (the saved Normal-mode broker, kept while Director mode overlays it) and `directorHost`. Passwords are never returned — only whether one is set. -### Which topic to write +### Which topic to write, and which channel -Decided per pattern by `absoluteReady` from the sidecar. - -**`absoluteReady: true`** → publish `0`–`1000` to `/param/<1..4>`. The pattern pins that parameter to a fraction of its declared range; the value is idempotent and survives a restart of whatever is driving it. Physical encoder motion releases the hold, so a hand on the device always wins. An empty payload releases it explicitly. - -**`absoluteReady: false`** — every module built before the bus existed, and presets, which cannot be interrogated — → publish a new absolute click count to `/knob/<1..4>`. The device diffs it against the last value it received and injects the difference as a detent delta. This is a **relative** control: the pattern integrates the delta through its own step size, so the value you send is not a value the parameter will arrive at. - -`/sleep` is the exception to everything above: it is obeyed in **either** role, because a panel that publishes its knobs is still a panel somebody wants to be able to switch off. `/sleep/state` mirrors it on every change and once per connection. - -Everything else — `knob`, `param`, `pattern` — is obeyed **only in Subscriber role**. A device set to Publisher will ignore knob writes silently. `POST /api/mqtt?role=subscriber` flips it, at the cost of the device no longer publishing its own knob turns; the two roles are exclusive. - -### The channel decides whether your writes survive - -The prefix **is** the channel: `patternflow` is Broadcast, `patternflow1`–`patternflow4` are channels 1–4, `patternflow5` is Live, anything else is Custom. Setting a prefix therefore selects a channel, which is not obvious from either end. - -It matters because **channels 1–4 and Live also subscribe to a retained `/snapshot`**, whose payload carries `param:[a,b,c,d]` — and the firmware applies those values straight onto the knobs, exactly as if they had arrived on `param/N`. A Publisher on the channel re-sends one every 8 seconds, and the retained copy is redelivered on every reconnect. - -So on those five channels an external controller is not the only writer. Its value is overwritten a moment later by whatever the snapshot last said, the write having succeeded, MQTT being healthy, and nothing anywhere reporting an error. The symptom is a control that will not stay where it is put. - -**Broadcast has no snapshot subscription.** For a single panel driven by one external controller — home automation, a script, a dashboard — Broadcast plus Subscriber is the combination that behaves. The show channels are for a Director driving several panels, which is a different job and the reason the snapshot bus exists at all. - -`GET /api/mqtt` reports the channel as `broadcast`, `ch1`–`ch4`, `live`, `custom` or `off`, so a client can check this rather than guess. +Moved to [`mqtt-spec.md`](mqtt-spec.md): the `absoluteReady` rule that decides between `param/` and `knob/`, which topics each role obeys, and why an external controller on channels 1–4 or Live sees its writes overwritten by the retained snapshot (Broadcast + Subscriber is the combination that behaves for one panel and one controller). ### Knob ordering diff --git a/firmware/modules/README.md b/firmware/modules/README.md new file mode 100644 index 00000000..3560e5b6 --- /dev/null +++ b/firmware/modules/README.md @@ -0,0 +1,11 @@ +# firmware/modules/ + +The module toolchain's working folder, **not a place patterns are contributed to**. A pattern is made in the [Pattern Lab](https://patternflow.work/pattern-lab) and published to the Community; it never needs to be in this repository. If you are looking for where patterns live, that is [`../../PATTERN_GUIDE.md`](../../PATTERN_GUIDE.md). + +What happens here: + +- `python firmware/toolchain/port_preset.py --all` converts the curated presets in `../patternflow/presets/` into freestanding module sources, one folder each: `/pattern.cpp` and `/module.json`. The build service that turns a Pattern Lab pattern into a `.pfm` runs the same script with `--out-dir`, so a submitted pattern never lands in the tree. +- `python firmware/toolchain/build_module.py --all` compiles every folder here into `../patternflow/data/patterns/.pfm` (gitignored), which `pio run -t uploadfs` can write to a panel's FATFS partition over USB. The everyday route is Wi-Fi: the panel's `/patterns` page, or the site. +- `python firmware/toolchain/make_pack.py` bundles built modules into the Basics pack (`web/public/packs/`). It refuses a module whose `module.json` has no real `author`. + +A module folder is `pattern.cpp` plus `module.json` with `name`, `namespace`, `author`, `license`, `abi` and `knobs`. The generated outputs are gitignored (`.build/`, `data/patterns/`); the folders themselves are only committed when something needs a checked-in example, and today nothing does. The loader's `.init_array` regression probe lives in `../toolchain/tests/modules/_ctor_probe/`. diff --git a/firmware/modules/layer_stack/module.json b/firmware/modules/layer_stack/module.json deleted file mode 100644 index 0b662ce1..00000000 --- a/firmware/modules/layer_stack/module.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "Layer Stack", - "namespace": "LabStack_Layer_Stack", - "author": "unknown", - "license": "CC-BY-SA-4.0", - "abi": 1, - "knobs": [ - "Waves", - "Speed", - "Sun", - "Glitter" - ], - "source": "G:/2026_G/26_1/\ud328\ud134\ud50c\ub85c\uc6b0/\ub79c\ub529\ud398\uc774\uc9c0_opensorce/firmware/patternflow/custom3.h" -} diff --git a/firmware/modules/layer_stack/pattern.cpp b/firmware/modules/layer_stack/pattern.cpp deleted file mode 100644 index 56a2868f..00000000 --- a/firmware/modules/layer_stack/pattern.cpp +++ /dev/null @@ -1,805 +0,0 @@ -// Generated by toolchain/port_preset.py from the layer_stack preset source. -// Do not edit directly - edit the source pattern and re-run the porter. -#include "pf_module.h" - -// SPDX-License-Identifier: CC-BY-SA-4.0 -// Pattern: Layer Stack — Pattern Lab layer-stack composition (3 layers) -// -// SCAFFOLD (deterministic, generated by Pattern Lab — do not hand-edit): -// buffers, shared-knob accumulation, ramp LUTs, pixel art, masks, blending -// and compositing are finished code. ONLY the "namespace L" blocks between -// the >>> markers are translated from each layer's JavaScript; stubs compile -// to a black layer until replaced. -// -// Layers (bottom → top): -// L0. Code 1 (code, normal, 100%) -// L1. Pixel 1 (pixel, multiply, 100%) -// L2. Code 2 (code, screen, 100%) - -namespace LabStack_Layer_Stack { - -const char* NAME = "Layer Stack"; -const char* const KNOB_LABELS[4] = {"Waves", "Speed", "Sun", "Glitter"}; - -constexpr int FRAME_W = 128; -constexpr int FRAME_H = 64; -constexpr int PIX_N = FRAME_W * FRAME_H; -constexpr int LAYER_N = 3; - -// ── Shared knobs: encoder detents become values HERE, once, for every layer ── -static const float KNOB_MIN[4] = {0.0f, 0.1f, 0.0f, 0.0f}; -static const float KNOB_MAX[4] = {1.0f, 3.0f, 1.0f, 1.0f}; -static const float KNOB_STEP[4] = {0.05f, 0.1f, 0.05f, 0.05f}; // value per detent (calibrated) -static float knobVal[4] = {1.0f, 0.604f, 1.0f, 1.0f}; -static float knobNorm[4] = {1.0f, 0.17379f, 1.0f, 1.0f}; - -// ── Layer buffers (RGBA8, PSRAM-first, allocated once in setup) ── -static uint8_t* layerBuf[LAYER_N] = {nullptr, nullptr, nullptr}; - -// ── Composite plan (bottom → top; blend: 0 normal, 1 add, 2 multiply, 3 screen) ── -constexpr int GROUP_N = 3; -static const uint8_t G_LAYER[3] = {0, 1, 2}; -static const float G_OPACITY[3] = {1.0f, 1.0f, 1.0f}; -static const uint8_t G_BLEND[3] = {0, 2, 3}; -static const uint8_t G_MASK_AT[3] = {0, 0, 0}; -static const uint8_t G_MASK_N[3] = {0, 0, 0}; -static const uint8_t MASK_LAYER[1] = {0}; -static const uint8_t MASK_PXART[1] = {0}; -static const uint8_t MASK_INVERT[1] = {0}; - -// ── L0 "Code 1": ramp LUT (RGBA, alpha included — baked by Pattern Lab, copy-proof) ── -static const uint8_t L0_RAMP[256][4] = { - {0,0,0,255},{0,0,0,255},{0,0,0,255},{0,0,0,255},{1,1,1,255},{2,2,2,255},{3,3,3,255},{4,4,4,255}, - {5,5,5,255},{6,6,6,255},{7,7,7,255},{8,8,8,255},{9,9,9,255},{10,10,10,255},{11,11,11,255},{12,12,12,255}, - {14,14,14,255},{15,15,15,255},{16,16,16,255},{17,17,17,255},{18,18,18,255},{19,19,19,255},{20,20,20,255},{21,21,21,255}, - {22,22,22,255},{23,23,23,255},{24,24,24,255},{25,25,25,255},{26,26,26,255},{27,27,27,255},{28,28,28,255},{29,29,29,255}, - {30,30,30,255},{31,31,31,255},{32,32,32,255},{33,33,33,255},{34,34,34,255},{35,35,35,255},{37,37,37,255},{38,38,38,255}, - {39,39,39,255},{40,40,40,255},{41,41,41,255},{42,42,42,255},{43,43,43,255},{44,44,44,255},{45,45,45,255},{46,46,46,255}, - {47,47,47,255},{48,48,48,255},{49,49,49,255},{50,50,50,255},{51,51,51,255},{52,52,52,255},{53,53,53,255},{54,54,54,255}, - {55,55,55,255},{56,56,56,255},{57,57,57,255},{58,58,58,255},{59,59,59,255},{61,61,61,255},{62,62,62,255},{63,63,63,255}, - {64,64,64,255},{65,65,65,255},{66,66,66,255},{67,67,67,255},{68,68,68,255},{69,69,69,255},{70,70,70,255},{71,71,71,255}, - {72,72,72,255},{73,73,73,255},{74,74,74,255},{75,75,75,255},{76,76,76,255},{77,77,77,255},{78,78,78,255},{79,79,79,255}, - {80,80,80,255},{81,81,81,255},{82,82,82,255},{84,84,84,255},{85,85,85,255},{86,86,86,255},{87,87,87,255},{88,88,88,255}, - {89,89,89,255},{90,90,90,255},{91,91,91,255},{92,92,92,255},{93,93,93,255},{94,94,94,255},{95,95,95,255},{96,96,96,255}, - {97,97,97,255},{98,98,98,255},{99,99,99,255},{100,100,100,255},{101,101,101,255},{102,102,102,255},{103,103,103,255},{104,104,104,255}, - {105,105,105,255},{107,107,107,255},{108,108,108,255},{109,109,109,255},{110,110,110,255},{111,111,111,255},{112,112,112,255},{113,113,113,255}, - {114,114,114,255},{115,115,115,255},{116,116,116,255},{117,117,117,255},{118,118,118,255},{119,119,119,255},{120,120,120,255},{121,121,121,255}, - {122,122,122,255},{123,123,123,255},{124,124,124,255},{125,125,125,255},{126,126,126,255},{127,127,127,255},{128,128,128,255},{130,130,130,255}, - {131,131,131,255},{132,132,132,255},{133,133,133,255},{134,134,134,255},{135,135,135,255},{136,136,136,255},{137,137,137,255},{138,138,138,255}, - {139,139,139,255},{140,140,140,255},{141,141,141,255},{142,142,142,255},{143,143,143,255},{144,144,144,255},{145,145,145,255},{146,146,146,255}, - {147,147,147,255},{148,148,148,255},{149,149,149,255},{150,150,150,255},{151,151,151,255},{152,152,152,255},{154,154,154,255},{155,155,155,255}, - {156,156,156,255},{157,157,157,255},{158,158,158,255},{159,159,159,255},{160,160,160,255},{161,161,161,255},{162,162,162,255},{163,163,163,255}, - {164,164,164,255},{165,165,165,255},{166,166,166,255},{167,167,167,255},{168,168,168,255},{169,169,169,255},{170,170,170,255},{171,171,171,255}, - {172,172,172,255},{173,173,173,255},{174,174,174,255},{175,175,175,255},{177,177,177,255},{178,178,178,255},{179,179,179,255},{180,180,180,255}, - {181,181,181,255},{182,182,182,255},{183,183,183,255},{184,184,184,255},{185,185,185,255},{186,186,186,255},{187,187,187,255},{188,188,188,255}, - {189,189,189,255},{190,190,190,255},{191,191,191,255},{192,192,192,255},{193,193,193,255},{194,194,194,255},{195,195,195,255},{196,196,196,255}, - {197,197,197,255},{198,198,198,255},{200,200,200,255},{201,201,201,255},{202,202,202,255},{203,203,203,255},{204,204,204,255},{205,205,205,255}, - {206,206,206,255},{207,207,207,255},{208,208,208,255},{209,209,209,255},{210,210,210,255},{211,211,211,255},{212,212,212,255},{213,213,213,255}, - {214,214,214,255},{215,215,215,255},{216,216,216,255},{217,217,217,255},{218,218,218,255},{219,219,219,255},{220,220,220,255},{221,221,221,255}, - {223,223,223,255},{224,224,224,255},{225,225,225,255},{226,226,226,255},{227,227,227,255},{228,228,228,255},{229,229,229,255},{230,230,230,255}, - {231,231,231,255},{232,232,232,255},{233,233,233,255},{234,234,234,255},{235,235,235,255},{236,236,236,255},{237,237,237,255},{238,238,238,255}, - {239,239,239,255},{240,240,240,255},{241,241,241,255},{242,242,242,255},{243,243,243,255},{244,244,244,255},{245,245,245,255},{247,247,247,255}, - {248,248,248,255},{249,249,249,255},{250,250,250,255},{251,251,251,255},{252,252,252,255},{253,253,253,255},{254,254,254,255},{255,255,255,255}, - {255,255,255,255},{255,255,255,255},{255,255,255,255},{255,255,255,255},{255,255,255,255},{255,255,255,255},{255,255,255,255},{255,255,255,255} -}; -static inline void L0_setValue(int x, int y, float v) { - if ((unsigned)x >= (unsigned)FRAME_W || (unsigned)y >= (unsigned)FRAME_H) return; - if (!(v > 0.0f)) v = 0.0f; else if (v > 1.0f) v = 1.0f; - const uint8_t* c = L0_RAMP[(int)(v * 255.0f + 0.5f)]; - uint8_t* p = layerBuf[0] + (((size_t)y * FRAME_W + x) << 2); - p[0] = c[0]; p[1] = c[1]; p[2] = c[2]; p[3] = c[3]; -} -static inline void L0_setPixel(int x, int y, uint8_t r, uint8_t g, uint8_t b) { - if ((unsigned)x >= (unsigned)FRAME_W || (unsigned)y >= (unsigned)FRAME_H) return; - uint8_t* p = layerBuf[0] + (((size_t)y * FRAME_W + x) << 2); - p[0] = r; p[1] = g; p[2] = b; p[3] = 255; -} - -// ── L1 "Pixel 1": pixel art, RLE {count,r,g,b,a} — decoded once in setup ── -static const uint8_t L1_RLE[7115] = { - 255,0,0,0,0,33,0,0,0,0,1,170,85,0,3,1,227,113,28,9, - 1,235,78,20,13,1,237,55,0,14,1,255,96,32,8,1,255,128,0,2, - 118,0,0,0,0,1,255,42,42,6,1,244,72,44,46,1,244,107,69,119, - 1,243,130,77,186,1,246,113,61,225,1,243,124,71,238,1,243,143,79,240, - 1,242,124,54,240,1,244,149,80,238,1,244,144,71,227,1,245,154,77,186, - 1,237,128,66,131,1,242,132,70,58,1,255,128,42,6,111,0,0,0,0, - 1,247,41,49,31,1,242,70,65,117,1,245,68,59,177,1,241,85,73,236, - 1,245,99,72,254,1,245,102,70,254,1,247,108,70,254,1,245,107,70,254, - 1,249,125,75,254,1,249,141,82,254,1,248,143,74,254,1,249,149,80,254, - 1,247,144,74,255,1,247,164,92,255,1,249,158,85,255,1,248,158,87,254, - 1,248,151,75,241,1,247,141,70,183,1,244,144,72,117,1,246,132,53,29, - 106,0,0,0,0,1,255,0,0,4,1,246,48,61,138,1,245,87,86,254, - 1,248,102,103,254,1,245,80,79,254,1,243,107,99,255,1,246,97,76,255, - 1,246,128,97,255,1,242,95,67,255,1,245,98,64,255,1,249,114,71,255, - 1,247,136,85,255,1,248,120,67,255,1,250,149,80,255,1,250,149,77,255, - 1,250,153,82,255,1,248,159,89,255,1,249,140,69,255,1,249,146,76,255, - 1,251,159,85,254,1,248,158,83,254,1,245,140,65,253,1,239,121,49,126, - 1,255,102,0,5,102,0,0,0,0,1,255,0,0,2,1,245,25,66,100, - 1,244,56,83,218,1,247,54,77,254,1,250,60,82,254,1,247,68,83,255, - 1,245,76,81,255,1,245,105,101,255,1,243,75,74,255,1,243,98,84,255, - 1,239,86,65,255,1,246,96,69,255,1,246,109,76,255,1,246,112,72,255, - 1,246,114,71,255,1,250,135,79,255,1,249,127,72,255,1,248,138,77,255, - 1,249,153,88,255,1,250,152,79,255,1,251,140,74,255,1,252,172,105,255, - 1,250,149,76,254,1,247,138,67,254,1,247,146,78,253,1,245,150,71,208, - 1,241,136,65,94,1,255,170,85,3,99,0,0,0,0,1,255,0,102,5, - 1,246,43,102,137,1,246,58,105,254,1,248,46,84,255,1,248,54,80,255, - 1,246,38,70,255,1,246,75,96,255,1,245,64,77,255,1,243,68,75,255, - 1,243,75,73,255,1,245,90,83,255,1,247,102,85,255,1,248,111,89,255, - 1,248,132,97,255,1,246,91,59,255,1,250,129,92,255,1,251,122,72,255, - 1,249,138,81,255,1,249,124,70,255,1,251,144,83,255,1,249,143,82,255, - 1,251,141,71,255,1,253,162,89,255,1,251,147,75,255,1,251,135,68,255, - 1,249,155,80,255,1,247,143,66,254,1,244,140,62,252,1,244,136,58,114, - 1,255,128,64,4,98,0,0,0,0,1,247,24,97,150,1,247,33,102,254, - 1,249,47,107,254,1,247,36,88,255,1,246,29,72,255,1,245,42,78,255, - 1,243,59,86,255,1,245,66,86,255,1,246,84,95,255,1,245,81,93,255, - 1,245,75,83,255,1,246,86,82,255,1,245,93,82,255,1,245,96,78,255, - 1,247,108,81,255,1,248,113,81,255,1,248,106,75,255,1,247,122,79,255, - 1,249,129,78,255,1,250,142,83,255,1,248,139,76,255,1,251,155,89,255, - 1,252,160,88,255,1,251,146,81,255,1,253,161,89,255,1,251,152,78,255, - 1,248,159,88,255,1,248,156,78,254,1,249,165,81,254,1,245,149,82,147, - 1,255,153,51,5,95,0,0,0,0,1,255,0,64,4,1,246,64,128,108, - 1,242,37,100,254,1,245,50,114,255,1,245,23,92,255,1,245,29,93,255, - 1,244,40,96,255,1,244,48,92,255,1,241,50,82,255,1,247,46,72,255, - 1,244,50,75,255,1,244,60,76,255,1,245,48,70,255,1,246,78,79,255, - 1,245,96,91,255,1,244,92,83,255,1,244,101,87,255,1,246,118,90,255, - 1,245,92,71,255,1,247,126,92,255,1,248,146,88,255,1,243,121,69,255, - 1,245,153,99,255,1,247,144,83,255,1,250,162,97,255,1,252,148,85,255, - 1,253,154,84,255,1,249,152,93,255,1,248,164,96,255,1,248,164,91,255, - 1,250,149,65,254,1,245,152,77,254,1,242,137,70,134,1,255,85,0,3, - 94,0,0,0,0,1,244,36,99,93,1,244,75,133,254,1,245,26,94,254, - 1,244,38,104,255,1,240,22,90,255,1,245,23,93,255,1,246,64,120,255, - 1,246,64,115,255,1,244,45,92,255,1,245,52,87,255,1,246,75,104,255, - 1,245,45,75,255,1,243,47,70,255,1,245,64,78,255,1,245,64,81,255, - 1,242,72,76,255,1,241,72,71,255,1,245,121,107,255,1,247,104,85,255, - 1,249,137,111,255,1,248,124,81,255,1,247,121,83,255,1,247,148,84,255, - 1,246,144,81,255,1,246,147,78,255,1,248,148,81,255,1,250,146,78,255, - 1,248,150,78,255,1,250,172,98,255,1,248,157,81,255,1,245,144,71,255, - 1,245,148,77,254,1,246,144,68,253,1,247,142,76,97,93,0,0,0,0, - 1,255,51,153,5,1,249,31,98,211,1,243,29,96,255,1,244,32,98,255, - 1,245,23,93,255,1,244,39,106,255,1,242,24,90,255,1,242,25,91,255, - 1,244,40,99,255,1,245,28,89,255,1,246,48,97,255,1,248,48,92,255, - 1,247,59,95,255,1,245,60,91,255,1,249,25,65,255,1,246,65,84,255, - 1,244,64,77,255,1,242,62,70,255,1,242,66,72,255,1,247,91,82,255, - 1,248,114,95,255,1,247,107,84,255,1,249,111,81,255,1,247,126,82,255, - 1,247,142,81,255,1,248,148,78,255,1,246,149,87,255,1,248,136,74,255, - 1,247,124,58,255,1,248,167,101,255,1,246,121,68,255,1,245,139,71,255, - 1,245,133,63,255,1,247,151,69,254,1,246,132,63,208,1,237,128,55,14, - 92,0,0,0,0,1,244,69,128,134,1,245,38,103,254,1,244,31,105,255, - 1,245,31,98,255,1,245,33,100,255,1,244,30,99,255,1,244,43,105,255, - 1,245,43,109,255,1,245,33,98,255,1,247,46,111,255,1,246,43,107,255, - 1,247,39,96,255,1,247,51,100,255,1,246,48,97,255,1,245,67,100,255, - 1,247,58,88,255,1,247,57,78,255,1,242,55,75,255,1,244,76,92,255, - 1,245,85,91,255,1,248,95,93,255,1,249,110,90,255,1,246,120,92,255, - 1,243,122,89,255,1,244,103,66,255,1,245,112,70,255,1,247,129,73,255, - 1,247,130,76,255,1,248,123,65,255,1,249,157,93,255,1,249,147,81,255, - 1,245,125,73,255,1,250,146,76,255,1,250,139,68,255,1,245,136,69,254, - 1,243,110,58,132,91,0,0,0,0,1,241,28,99,18,1,244,25,94,251, - 1,239,21,89,255,1,242,28,97,255,1,242,25,94,255,1,244,26,92,255, - 1,244,40,106,255,1,244,77,131,255,1,244,25,90,255,1,244,48,109,255, - 1,245,41,106,255,1,244,17,89,255,1,246,46,108,255,1,246,38,99,255, - 1,246,36,97,255,1,246,41,90,255,1,248,38,82,255,1,245,56,91,255, - 1,247,49,79,255,1,244,43,69,255,1,242,56,74,255,1,248,85,90,255, - 1,248,99,93,255,1,248,81,74,255,1,245,96,77,255,1,245,103,74,255, - 1,244,101,72,255,1,244,93,59,255,1,248,124,82,255,1,248,126,73,255, - 1,249,126,81,255,1,250,157,84,255,1,246,135,77,255,1,247,127,73,255, - 1,249,164,95,255,1,246,143,76,254,1,244,145,87,253,1,243,93,46,22, - 90,0,0,0,0,1,236,22,81,82,1,240,43,107,255,1,245,30,98,255, - 1,243,43,107,255,1,240,23,92,255,1,246,22,97,255,1,245,34,101,255, - 1,242,24,94,255,1,243,30,95,255,1,246,25,96,255,1,244,38,101,255, - 1,244,29,97,255,1,244,38,103,255,1,244,28,94,255,1,242,37,99,255, - 1,243,57,109,255,1,244,68,112,255,1,246,54,98,255,1,245,61,95,255, - 1,245,83,102,255,1,246,74,90,255,1,247,69,84,255,1,246,115,102,255, - 1,249,82,75,255,1,247,97,85,255,1,247,114,96,255,1,247,107,86,255, - 1,248,125,90,255,1,246,116,81,255,1,247,115,74,255,1,250,121,77,255, - 1,249,152,84,255,1,246,154,93,255,1,248,142,79,255,1,246,158,89,255, - 1,247,137,74,254,1,242,133,76,254,1,244,113,62,90,90,0,0,0,0, - 1,233,22,76,141,1,228,15,71,255,1,238,28,91,255,1,232,20,85,255, - 1,240,32,94,255,1,240,26,96,255,1,244,49,111,255,1,243,24,96,255, - 1,244,43,107,255,1,244,38,103,255,1,243,36,101,255,1,244,30,104,255, - 1,247,38,108,255,1,246,40,106,255,1,243,40,105,255,1,245,26,93,255, - 1,249,41,97,255,1,247,62,108,255,1,248,53,97,255,1,249,69,105,255, - 1,249,61,92,255,1,247,56,81,255,1,246,75,90,255,1,246,88,88,255, - 1,245,90,85,255,1,247,68,74,255,1,245,80,74,255,1,248,84,73,255, - 1,245,94,71,255,1,248,129,88,255,1,247,135,95,255,1,248,105,69,255, - 1,247,115,68,255,1,245,131,77,255,1,247,131,74,255,1,246,141,84,255, - 1,244,111,59,254,1,242,110,59,155,90,0,0,0,0,1,230,13,70,194, - 1,233,19,73,255,1,238,21,81,255,1,242,43,107,255,1,240,27,91,255, - 1,237,16,91,255,1,238,34,96,255,1,243,30,97,255,1,242,25,93,255, - 1,240,16,82,255,1,241,23,91,255,1,244,15,91,255,1,244,42,106,255, - 1,245,54,114,255,1,247,62,122,255,1,246,29,97,255,1,245,44,106,255, - 1,249,32,99,255,1,248,60,112,255,1,246,73,119,255,1,249,41,88,255, - 1,248,60,92,255,1,246,48,82,255,1,245,72,92,255,1,246,57,76,255, - 1,248,86,92,255,1,249,120,115,255,1,249,74,80,255,1,248,128,118,255, - 1,246,82,71,255,1,247,101,76,255,1,247,125,84,255,1,249,149,82,255, - 1,246,131,73,255,1,244,129,72,255,1,247,130,72,255,1,245,133,80,255, - 1,239,109,56,201,90,0,0,0,0,1,228,27,75,234,1,232,6,66,255, - 1,237,30,88,255,1,239,35,94,255,1,238,36,93,255,1,245,55,112,255, - 1,243,50,110,255,1,239,28,94,255,1,241,28,93,255,1,242,36,95,255, - 1,241,28,96,255,1,241,35,99,255,1,242,30,99,255,1,243,29,96,255, - 1,246,31,101,255,1,245,27,95,255,1,247,41,102,255,1,248,43,107,255, - 1,248,35,100,255,1,248,35,97,255,1,246,54,105,255,1,246,46,87,255, - 1,244,46,83,255,1,242,63,94,255,1,246,77,95,255,1,247,64,83,255, - 1,248,55,74,255,1,247,98,105,255,1,247,75,84,255,1,246,82,80,255, - 1,245,93,82,255,1,246,98,78,255,1,245,112,81,255,1,245,103,66,255, - 1,245,118,74,255,1,243,111,69,255,1,246,140,77,255,1,245,120,73,235, - 89,0,0,0,0,1,191,0,0,4,1,212,14,56,253,1,227,13,70,255, - 1,232,19,77,255,1,224,15,73,255,1,226,21,79,255,1,242,42,103,255, - 1,241,19,83,255,1,242,14,83,255,1,240,35,98,255,1,243,29,92,255, - 1,242,34,101,255,1,242,21,89,255,1,246,66,123,255,1,247,28,97,255, - 1,241,18,88,255,1,244,29,99,255,1,245,26,93,255,1,244,44,103,255, - 1,246,55,116,255,1,247,54,113,255,1,247,43,103,255,1,248,43,101,255, - 1,246,26,81,255,1,244,50,99,255,1,248,40,83,255,1,246,76,101,255, - 1,248,74,97,255,1,247,90,107,255,1,247,68,78,255,1,243,77,83,255, - 1,242,31,47,255,1,245,89,84,255,1,246,115,97,255,1,244,86,63,255, - 1,242,85,58,255,1,241,103,70,255,1,245,105,67,255,1,245,103,64,251, - 89,0,0,0,0,1,237,18,55,14,1,222,16,65,254,1,228,38,83,255, - 1,232,20,78,255,1,240,49,103,255,1,237,21,83,255,1,240,24,88,255, - 1,237,18,85,255,1,239,49,108,255,1,237,24,88,255,1,242,25,90,255, - 1,240,30,95,255,1,239,34,97,255,1,243,26,94,255,1,247,35,102,255, - 1,241,31,95,255,1,242,25,91,255,1,245,53,115,255,1,244,20,90,255, - 1,244,29,97,255,1,245,38,104,255,1,247,54,114,255,1,247,55,110,255, - 1,246,39,93,255,1,246,36,93,255,1,249,48,102,255,1,248,77,114,255, - 1,249,65,94,255,1,250,67,92,255,1,248,51,75,255,1,245,52,72,255, - 1,247,63,80,255,1,246,82,87,255,1,247,70,69,255,1,245,94,82,255, - 1,243,87,69,255,1,242,121,83,255,1,248,108,72,255,1,244,117,71,254, - 1,239,48,16,16,89,0,0,0,0,1,217,15,61,244,1,195,7,47,255, - 1,225,30,78,255,1,235,20,75,255,1,238,29,85,255,1,233,11,74,255, - 1,237,28,88,255,1,239,41,98,255,1,240,42,101,255,1,245,18,87,255, - 1,243,39,103,255,1,244,45,108,255,1,243,33,96,255,1,247,47,113,255, - 1,246,24,92,255,1,244,34,96,255,1,241,24,85,255,1,243,44,107,255, - 1,245,64,124,255,1,242,28,98,255,1,242,41,103,255,1,247,55,110,255, - 1,248,26,90,255,1,245,82,134,255,1,249,39,103,255,1,249,34,93,255, - 1,251,37,88,254,1,250,42,87,255,1,250,47,82,255,1,246,68,92,255, - 1,246,36,60,255,1,246,91,98,255,1,247,50,61,255,1,246,99,96,255, - 1,243,90,89,255,1,245,81,70,255,1,246,81,68,255,1,244,108,75,250, - 1,255,0,0,1,89,0,0,0,0,1,212,25,69,204,1,212,19,68,255, - 1,228,30,79,255,1,234,28,85,255,1,233,18,76,255,1,238,17,78,255, - 1,238,29,87,255,1,232,15,74,255,1,237,17,78,254,1,242,39,98,227, - 1,244,34,96,156,1,244,37,98,136,1,245,39,102,132,1,246,38,104,140, - 1,246,34,98,209,1,247,28,97,255,1,242,27,94,255,1,241,24,88,255, - 1,242,24,91,255,1,245,31,96,255,1,244,55,112,255,1,246,24,94,255, - 1,248,60,121,255,1,250,48,115,209,1,248,71,127,137,1,247,32,91,129, - 1,249,53,104,130,1,250,82,121,152,1,250,63,103,220,1,248,51,85,255, - 1,248,37,68,255,1,246,66,84,255,1,246,71,85,255,1,247,76,88,255, - 1,246,73,80,255,1,243,73,79,255,1,243,77,67,255,1,243,91,62,211, - 90,0,0,0,0,1,200,8,49,152,1,217,10,61,255,1,222,19,68,255, - 1,236,57,103,255,1,229,21,76,255,1,230,25,83,255,1,235,29,90,255, - 1,233,10,75,250,1,232,16,77,109,1,255,0,0,1,4,0,0,0,0, - 1,255,0,51,5,1,246,18,88,170,1,244,38,108,255,1,245,36,103,255, - 1,245,45,108,255,1,242,41,101,255,1,247,30,99,255,1,249,68,127,255, - 1,250,31,99,162,1,255,64,128,4,4,0,0,0,0,1,255,0,0,1, - 1,250,35,70,95,1,244,44,76,247,1,247,71,89,255,1,247,89,103,255, - 1,244,56,77,255,1,246,66,81,255,1,245,73,86,255,1,242,48,57,255, - 1,244,84,77,169,90,0,0,0,0,1,193,9,44,86,1,208,7,52,255, - 1,222,7,59,255,1,229,22,75,255,1,226,13,67,255,1,227,26,80,253, - 1,231,14,80,178,1,234,0,64,36,7,0,0,0,0,1,243,0,85,21, - 1,245,30,105,207,1,246,37,104,255,1,247,43,108,255,1,243,47,109,255, - 1,246,32,101,255,1,246,40,108,215,1,245,20,98,26,7,0,0,0,0, - 1,249,12,56,41,1,249,39,73,184,1,250,55,81,254,1,246,68,86,255, - 1,247,53,73,255,1,247,63,80,255,1,244,67,77,255,1,242,67,72,99, - 90,0,0,0,0,1,209,12,46,22,1,203,19,61,249,1,222,11,62,254, - 1,229,31,86,255,1,229,30,84,255,1,231,19,80,238,1,232,8,70,33, - 9,0,0,0,0,1,243,30,108,128,1,242,25,91,255,1,241,29,96,255, - 1,238,34,96,255,1,243,27,97,255,1,244,17,93,135,9,0,0,0,0, - 1,248,67,74,38,1,248,59,82,232,1,249,31,68,254,1,247,78,96,255, - 1,248,85,93,254,1,247,65,74,248,1,255,60,75,17,91,0,0,0,0, - 1,191,0,37,103,1,213,16,62,253,1,210,15,62,255,1,226,22,79,254, - 1,227,12,70,102,10,0,0,0,0,1,242,36,108,78,1,239,27,94,255, - 1,242,30,96,255,1,242,30,98,255,1,241,28,96,255,1,242,26,105,80, - 10,0,0,0,0,1,248,31,77,116,1,246,36,80,255,1,247,35,72,255, - 1,246,57,77,253,1,245,44,64,104,93,0,0,0,0,1,212,20,66,178, - 1,215,6,55,255,1,225,24,76,249,1,170,0,0,3,10,0,0,0,0, - 1,231,12,82,84,1,236,32,93,255,1,242,25,91,255,1,246,36,106,255, - 1,243,41,108,254,1,245,26,116,77,10,0,0,0,0,1,255,0,96,8, - 1,249,34,90,254,1,249,52,88,255,1,0,0,0,0,1,255,0,42,6, - 93,0,0,0,0,1,216,6,55,46,1,207,15,57,252,1,219,19,72,247, - 11,0,0,0,0,1,235,14,84,142,1,240,29,92,255,1,243,32,96,255, - 1,246,40,101,254,1,244,27,96,254,1,242,11,97,137,10,0,0,0,0, - 1,255,0,64,4,1,247,24,93,253,1,248,59,105,246,52,0,0,0,0, - 1,255,77,0,0,42,0,0,0,0,1,0,0,0,1,1,207,9,54,223, - 1,222,24,74,254,1,216,22,72,46,9,0,0,0,0,1,236,0,66,27, - 1,243,32,94,214,1,246,31,96,252,1,242,23,92,219,1,242,12,85,216, - 1,244,22,95,251,1,243,20,96,215,1,236,9,85,27,9,0,0,0,0, - 1,250,26,109,49,1,248,25,103,254,1,249,25,97,202,52,0,0,0,0, - 1,255,77,0,0,4,0,0,0,0,1,255,77,0,0,37,0,0,0,0, - 1,201,18,58,57,1,211,21,69,250,1,217,16,67,254,1,211,4,53,173, - 1,255,0,0,1,7,0,0,0,0,1,255,0,0,1,1,239,15,80,156, - 1,243,39,98,251,1,246,29,98,208,1,246,26,97,29,1,243,12,81,22, - 1,244,37,109,192,1,246,43,114,251,1,245,28,103,148,8,0,0,0,0, - 1,255,0,85,3,1,246,23,106,175,1,247,25,100,254,1,249,25,98,247, - 53,0,0,0,0,1,255,77,0,0,2,0,0,0,0,1,255,77,0,0, - 36,0,0,0,0,1,170,0,0,3,1,193,15,44,70,1,192,1,45,228, - 1,216,16,69,255,1,217,19,73,255,1,219,9,70,248,1,222,9,68,86, - 6,0,0,0,0,1,255,0,73,14,1,240,23,84,152,1,240,29,88,254, - 1,234,18,76,244,1,236,11,71,68,2,0,0,0,0,1,246,46,116,55, - 1,247,36,108,245,1,245,33,100,254,1,246,41,115,138,1,235,20,78,13, - 6,0,0,0,0,1,246,23,104,88,1,246,42,114,244,1,245,29,101,255, - 1,248,28,102,254,1,0,0,0,0,1,245,41,124,74,1,255,0,64,4, - 50,0,0,0,0,1,255,77,0,0,2,0,0,0,0,1,255,77,0,0, - 36,0,0,0,0,1,177,6,32,88,1,205,24,62,245,1,205,16,60,254, - 1,212,15,60,255,1,220,22,72,255,1,209,7,65,254,1,218,25,77,233, - 1,206,8,51,129,1,223,0,32,16,2,0,0,0,0,1,219,0,73,7, - 1,223,12,62,87,1,233,28,87,200,1,234,34,91,250,1,233,23,81,254, - 1,226,18,74,141,4,0,0,0,0,1,239,17,94,147,1,241,30,94,254, - 1,243,37,100,249,1,241,21,90,195,1,245,17,88,75,1,219,0,36,7, - 2,0,0,0,0,1,255,42,113,18,1,245,28,107,129,1,246,35,109,236, - 1,249,48,120,254,1,245,40,110,255,1,248,39,110,254,1,0,0,0,0, - 1,249,37,111,244,1,245,22,100,102,51,0,0,0,0,2,255,77,0,0, - 36,0,0,0,0,1,255,0,0,1,1,184,4,36,214,1,197,10,47,255, - 1,204,10,53,255,1,211,13,59,255,1,211,13,58,255,1,211,14,60,254, - 1,224,26,78,254,1,215,20,70,254,1,211,16,63,239,1,218,12,61,193, - 1,227,27,80,198,1,230,20,75,240,1,225,22,75,254,1,225,23,75,255, - 1,225,23,77,255,1,221,29,81,243,1,223,24,77,63,4,0,0,0,0, - 1,232,12,70,44,1,236,26,88,234,1,242,34,96,254,1,239,19,85,254, - 1,241,37,101,254,1,242,20,88,238,1,240,33,94,199,1,241,24,86,204, - 1,243,24,91,242,1,245,41,109,254,1,246,31,100,255,1,244,51,114,255, - 1,243,29,96,255,1,246,40,110,255,1,246,46,110,255,1,0,0,0,0, - 1,246,28,108,225,1,255,0,0,2,50,0,0,0,0,2,255,77,0,0, - 36,0,0,0,0,1,179,0,0,10,1,181,1,30,251,1,182,1,32,255, - 1,200,6,47,255,1,213,17,61,255,1,208,9,53,255,1,210,18,62,255, - 1,217,13,62,255,1,222,25,79,254,1,213,10,59,254,1,217,17,69,254, - 1,228,33,86,254,1,228,15,68,254,1,228,16,71,255,1,228,22,75,255, - 1,223,26,76,255,1,209,16,67,218,1,188,0,40,19,4,0,0,0,0, - 1,234,21,64,12,1,241,37,98,201,1,241,28,89,254,1,241,35,95,254, - 1,240,28,92,255,1,243,33,96,254,1,241,23,85,254,1,238,16,78,254, - 1,241,45,106,255,1,241,21,89,254,1,235,21,88,255,1,238,23,89,255, - 1,239,29,93,255,1,245,36,104,255,1,247,33,100,255,1,0,0,0,0, - 1,246,42,114,253,1,241,0,99,18,49,0,0,0,0,2,255,77,0,0, - 38,0,0,0,0,1,197,7,43,215,1,197,4,43,255,1,201,8,50,255, - 1,204,15,56,255,1,207,10,54,255,1,215,20,69,255,1,213,10,60,255, - 1,219,16,70,255,1,219,12,64,255,1,225,7,65,255,1,234,17,79,255, - 1,236,13,72,255,1,234,17,76,255,1,228,10,68,255,1,225,22,78,255, - 1,228,24,87,190,2,0,0,0,0,1,217,9,57,27,1,226,29,78,26, - 2,0,0,0,0,1,240,46,102,155,1,235,29,86,254,1,236,19,81,255, - 1,239,32,90,255,1,240,26,89,255,1,236,21,83,255,1,240,53,108,255, - 1,239,23,86,255,1,237,37,100,255,1,237,30,94,255,1,241,47,107,255, - 1,242,30,95,255,1,243,36,100,255,1,243,23,93,255,1,245,26,94,255, - 1,0,0,0,0,1,0,0,0,1,48,0,0,0,0,3,255,77,0,0, - 38,0,0,0,0,1,179,8,42,134,1,196,3,44,254,1,203,10,54,255, - 1,217,10,61,255,1,211,14,59,255,1,214,16,61,255,1,212,13,62,255, - 1,227,36,90,255,1,214,16,65,255,1,214,6,55,255,1,228,12,67,255, - 1,229,7,65,255,1,224,6,60,255,1,224,13,68,255,1,220,11,66,255, - 1,212,9,61,192,1,255,0,0,1,1,212,0,42,6,1,222,20,74,170, - 1,227,23,80,179,1,255,0,73,7,1,0,0,0,0,1,238,38,97,168, - 1,234,30,88,255,1,236,26,84,255,1,236,32,90,255,1,236,25,86,255, - 1,235,29,86,255,1,237,18,79,255,1,238,30,91,255,1,241,48,106,255, - 1,239,39,99,255,1,239,34,92,255,1,245,35,99,255,1,245,35,101,255, - 1,243,26,97,255,1,242,32,100,255,50,0,0,0,0,2,255,77,0,0, - 39,0,0,0,0,1,160,0,22,35,1,194,6,43,229,1,206,9,54,254, - 1,204,6,55,255,1,204,7,52,255,1,213,10,64,255,1,199,10,56,255, - 1,224,32,83,255,1,216,17,69,255,1,203,6,52,255,1,214,10,62,255, - 1,221,9,65,255,1,227,25,80,255,1,221,14,65,255,1,230,31,86,255, - 1,227,27,83,242,1,219,15,73,136,1,207,4,54,142,1,219,17,68,245, - 1,230,19,78,247,1,232,19,82,146,1,230,25,82,122,1,234,23,82,233, - 1,229,17,78,255,1,232,38,91,255,1,234,26,85,255,1,228,19,76,255, - 1,238,36,94,255,1,239,35,96,255,1,237,27,91,255,1,235,22,85,255, - 1,237,32,94,255,1,237,26,86,255,1,239,27,92,255,1,246,50,114,255, - 1,243,28,99,253,1,244,33,104,179,1,255,0,77,10,50,0,0,0,0, - 1,255,77,0,0,40,0,0,0,0,1,188,0,40,19,1,196,12,50,226, - 1,207,10,53,254,1,197,7,48,254,1,192,4,47,255,1,204,10,63,254, - 1,202,4,50,231,1,211,11,58,167,1,207,2,43,118,1,207,9,56,228, - 1,212,11,62,255,1,222,14,66,255,1,225,22,73,255,1,223,11,68,255, - 1,214,9,59,254,1,218,20,71,254,1,223,28,83,254,1,213,19,73,254, - 1,221,11,64,254,1,235,18,78,254,1,236,44,100,254,1,233,18,77,254, - 1,233,24,84,255,1,237,25,87,255,1,235,32,88,255,1,239,31,89,255, - 1,240,35,93,223,1,232,11,75,136,1,236,30,95,177,1,239,19,82,238, - 1,242,23,87,254,1,238,34,95,255,1,239,21,88,255,1,242,38,100,255, - 1,244,35,101,180,1,230,0,77,10,50,0,0,0,0,1,255,77,0,0, - 42,0,0,0,0,1,183,0,24,32,1,189,6,39,123,1,196,11,50,138, - 1,196,8,51,125,1,180,0,31,58,3,0,0,0,0,1,219,0,54,57, - 1,217,14,63,254,1,219,9,63,255,1,222,8,66,255,1,216,13,70,255, - 1,211,5,61,255,1,212,9,60,255,1,229,37,95,255,1,216,15,71,255, - 1,223,22,76,255,1,230,35,87,255,1,225,27,81,255,1,223,23,80,255, - 1,229,13,71,255,1,236,34,90,255,1,237,20,82,255,1,237,31,98,246, - 1,211,0,53,29,2,0,0,0,0,1,255,0,0,3,1,245,42,98,73, - 1,239,20,82,127,1,238,25,94,133,1,243,51,110,109,1,255,42,85,6, - 102,0,0,0,0,1,232,0,23,11,1,219,33,79,254,1,217,11,68,255, - 1,224,34,91,255,1,214,12,66,255,1,192,7,48,255,1,209,9,63,255, - 1,221,10,62,255,1,223,8,65,255,1,228,32,89,255,1,223,34,84,255, - 1,218,9,65,255,1,227,21,78,255,1,232,30,89,255,1,230,17,77,255, - 1,236,51,99,255,1,229,22,82,228,111,0,0,0,0,1,177,0,35,36, - 1,182,1,38,254,1,203,19,64,255,1,214,11,68,255,1,216,15,70,255, - 1,213,15,64,255,1,209,13,62,255,1,218,21,69,255,1,225,27,80,255, - 1,221,23,79,255,1,219,13,70,255,1,214,9,62,255,1,217,12,63,255, - 1,234,26,84,255,1,237,37,94,255,1,229,19,76,255,1,222,22,75,248, - 1,216,0,39,13,110,0,0,0,0,1,205,14,55,92,1,193,7,46,254, - 1,208,16,74,255,1,218,7,66,255,1,210,6,57,255,1,210,5,53,255, - 1,201,5,48,255,1,203,11,58,255,1,223,19,84,255,1,205,19,64,255, - 1,219,16,67,255,1,217,9,59,255,1,227,6,66,255,1,228,5,66,255, - 1,228,8,69,255,1,229,34,87,254,1,224,28,80,254,1,232,30,86,77, - 110,0,0,0,0,1,202,12,51,129,1,189,3,42,254,1,185,2,42,255, - 1,212,20,72,255,1,202,13,54,255,1,197,7,49,255,1,195,9,45,255, - 1,198,15,54,255,1,196,17,57,255,1,215,22,68,255,1,215,9,62,255, - 1,215,10,59,255,1,222,8,60,255,1,226,24,78,255,1,222,20,77,255, - 1,223,16,72,255,1,220,13,66,253,1,220,4,57,72,110,0,0,0,0, - 1,185,0,35,66,1,192,4,41,253,1,207,10,58,254,1,205,13,55,254, - 1,187,4,37,255,1,190,5,41,255,1,200,14,52,255,1,207,15,53,255, - 1,206,10,55,255,1,204,28,67,255,1,209,19,63,255,1,213,8,57,255, - 1,225,32,86,255,1,227,17,75,254,1,228,32,90,254,1,220,13,69,251, - 1,224,47,82,158,111,0,0,0,0,1,170,0,0,3,1,171,1,33,203, - 1,196,13,56,122,1,204,7,48,106,1,207,25,64,236,1,199,7,49,255, - 1,199,17,56,255,1,207,18,60,255,1,213,21,66,255,1,208,10,55,255, - 1,210,9,55,255,1,207,12,58,255,1,213,24,68,254,1,211,14,59,146, - 1,220,13,70,95,1,207,6,57,185,1,213,0,57,18,112,0,0,0,0, - 1,188,10,45,183,1,188,0,27,19,1,0,0,0,0,1,255,0,0,2, - 1,202,0,46,67,1,199,4,47,232,1,199,5,49,186,1,209,13,65,39, - 1,223,16,61,80,1,211,19,64,228,1,217,21,70,204,1,219,0,46,28, - 2,0,0,0,0,1,199,8,54,128,1,198,0,28,9,111,0,0,0,0, - 1,191,0,48,16,1,179,13,42,233,1,168,0,23,44,2,0,0,0,0, - 1,191,0,0,4,1,183,13,49,155,1,255,0,0,1,2,0,0,0,0, - 1,205,10,59,103,1,189,7,46,116,3,0,0,0,0,1,202,15,55,187, - 1,188,0,33,23,111,0,0,0,0,1,171,8,27,67,1,174,4,32,246, - 1,159,0,18,72,3,0,0,0,0,1,178,6,40,129,3,0,0,0,0, - 1,192,7,44,69,1,163,0,30,103,2,0,0,0,0,1,188,0,34,38, - 1,195,15,51,243,1,196,12,53,43,111,0,0,0,0,1,177,9,28,82, - 1,177,4,34,247,1,169,0,24,74,3,0,0,0,0,1,193,28,56,127, - 3,0,0,0,0,1,196,7,52,74,1,196,11,59,112,2,0,0,0,0, - 1,198,4,44,58,1,207,13,61,250,1,213,31,73,49,111,0,0,0,0, - 1,170,0,0,3,1,185,0,26,40,1,182,0,0,7,2,0,0,0,0, - 1,170,0,0,3,1,211,14,49,145,3,0,0,0,0,1,181,0,40,96, - 1,170,4,40,135,3,0,0,0,0,1,202,0,41,62,1,198,0,28,9, - 116,0,0,0,0,1,182,0,36,7,1,191,15,48,171,3,0,0,0,0, - 1,182,6,39,139,1,195,12,52,186,1,170,0,0,3,120,0,0,0,0, - 1,164,0,18,14,1,169,3,36,196,1,185,0,23,11,1,0,0,0,0, - 1,191,0,0,4,1,189,3,40,190,1,189,13,60,213,1,200,0,44,23, - 120,0,0,0,0,1,159,0,32,24,1,181,8,44,215,1,193,9,44,58, - 1,0,0,0,0,1,175,0,16,16,1,195,4,48,207,1,197,9,62,228, - 1,186,0,41,37,120,0,0,0,0,1,186,7,34,37,1,192,10,45,237, - 1,182,8,41,123,1,0,0,0,0,1,255,0,0,2,1,199,19,53,124, - 1,184,7,39,144,1,196,0,20,13,120,0,0,0,0,1,207,19,52,79, - 1,200,23,63,253,1,190,8,41,200,1,170,0,0,3,1,0,0,0,0, - 1,0,0,0,1,1,255,0,0,1,121,0,0,0,0,1,185,5,32,110, - 1,183,10,44,254,1,185,10,44,211,1,170,0,0,9,124,0,0,0,0, - 1,170,5,30,51,1,178,7,39,243,1,159,2,24,125,125,0,0,0,0, - 1,0,0,0,1,1,182,0,36,14,1,0,0,0,1,255,0,0,0,0, - 255,0,0,0,0,255,0,0,0,0,97,0,0,0,0 -}; - -// ── L2 "Code 2": ramp LUT (RGBA, alpha included — baked by Pattern Lab, copy-proof) ── -static const uint8_t L2_RAMP[256][4] = { - {140,255,0,82},{140,255,1,82},{141,255,2,83},{141,255,3,84},{142,255,4,84},{142,255,5,85},{143,255,6,86},{143,255,7,86}, - {144,255,8,87},{144,255,9,88},{145,255,10,88},{145,255,11,89},{145,255,12,90},{146,255,13,90},{146,255,14,91},{147,255,15,92}, - {147,255,16,92},{148,255,17,93},{148,255,18,94},{149,255,19,95},{149,255,20,95},{149,255,21,96},{150,255,22,97},{150,255,23,97}, - {151,255,24,98},{151,255,25,99},{152,255,26,99},{152,255,27,100},{153,255,28,101},{153,255,29,101},{154,255,30,102},{154,255,31,103}, - {154,255,32,103},{155,255,33,104},{155,255,34,105},{156,255,35,105},{156,255,36,106},{157,255,37,107},{157,255,38,107},{158,255,39,108}, - {158,255,40,109},{158,255,41,109},{159,255,42,110},{159,255,43,111},{160,255,44,112},{160,255,45,112},{161,255,46,113},{161,255,47,114}, - {162,255,48,114},{162,255,49,115},{163,255,50,116},{163,255,51,116},{163,255,52,117},{164,255,53,118},{164,255,54,118},{165,255,55,119}, - {165,255,56,120},{166,255,57,120},{166,255,58,121},{167,255,59,122},{167,255,60,122},{168,255,61,123},{168,255,62,124},{168,255,63,124}, - {169,255,64,125},{169,255,65,126},{170,255,66,126},{170,255,67,127},{171,255,68,128},{171,255,69,129},{172,255,70,129},{172,255,71,130}, - {172,255,72,131},{173,255,73,131},{173,255,74,132},{174,255,75,133},{174,255,76,133},{175,255,77,134},{175,255,78,135},{176,255,79,135}, - {176,255,80,136},{177,255,81,137},{177,255,82,137},{177,255,83,138},{178,255,84,139},{178,255,85,139},{179,255,86,140},{179,255,87,141}, - {180,255,88,141},{180,255,89,142},{181,255,90,143},{181,255,91,143},{181,255,92,144},{182,255,93,145},{182,255,94,146},{183,255,95,146}, - {183,255,96,147},{184,255,97,148},{184,255,98,148},{185,255,99,149},{185,255,100,150},{186,255,101,150},{186,255,102,151},{186,255,103,152}, - {187,255,104,152},{187,255,105,153},{188,255,106,154},{188,255,107,154},{189,255,108,155},{189,255,109,156},{190,255,110,156},{190,255,111,157}, - {191,255,112,158},{191,255,113,158},{191,255,114,159},{192,255,115,160},{192,255,116,160},{193,255,117,161},{193,255,118,162},{194,255,119,163}, - {194,255,120,163},{195,255,121,164},{195,255,122,165},{195,255,123,165},{196,255,124,166},{196,255,125,167},{197,255,126,167},{197,255,127,168}, - {198,255,128,169},{198,255,129,169},{199,255,130,170},{199,255,131,171},{200,255,132,171},{200,255,133,172},{200,255,134,173},{201,255,135,173}, - {201,255,136,174},{202,255,137,175},{202,255,138,175},{203,255,139,176},{203,255,140,177},{204,255,141,177},{204,255,142,178},{204,255,143,179}, - {205,255,144,180},{205,255,145,180},{206,255,146,181},{206,255,147,182},{207,255,148,182},{207,255,149,183},{208,255,150,184},{208,255,151,184}, - {209,255,152,185},{209,255,153,186},{209,255,154,186},{210,255,155,187},{210,255,156,188},{211,255,157,188},{211,255,158,189},{212,255,159,190}, - {212,255,160,190},{213,255,161,191},{213,255,162,192},{214,255,163,192},{214,255,164,193},{214,255,165,194},{215,255,166,194},{215,255,167,195}, - {216,255,168,196},{216,255,169,197},{217,255,170,197},{217,255,171,198},{218,255,172,199},{218,255,173,199},{218,255,174,200},{219,255,175,201}, - {219,255,176,201},{220,255,177,202},{220,255,178,203},{221,255,179,203},{221,255,180,204},{222,255,181,205},{222,255,182,205},{223,255,183,206}, - {223,255,184,207},{223,255,185,207},{224,255,186,208},{224,255,187,209},{225,255,188,209},{225,255,189,210},{226,255,190,211},{226,255,191,211}, - {227,255,192,212},{227,255,193,213},{227,255,194,214},{228,255,195,214},{228,255,196,215},{229,255,197,216},{229,255,198,216},{230,255,199,217}, - {230,255,200,218},{231,255,201,218},{231,255,202,219},{232,255,203,220},{232,255,204,220},{232,255,205,221},{233,255,206,222},{233,255,207,222}, - {234,255,208,223},{234,255,209,224},{235,255,210,224},{235,255,211,225},{236,255,212,226},{236,255,213,226},{237,255,214,227},{237,255,215,228}, - {237,255,216,228},{238,255,217,229},{238,255,218,230},{239,255,219,231},{239,255,220,231},{240,255,221,232},{240,255,222,233},{241,255,223,233}, - {241,255,224,234},{241,255,225,235},{242,255,226,235},{242,255,227,236},{243,255,228,237},{243,255,229,237},{244,255,230,238},{244,255,231,239}, - {245,255,232,239},{245,255,233,240},{246,255,234,241},{246,255,235,241},{246,255,236,242},{247,255,237,243},{247,255,238,243},{248,255,239,244}, - {248,255,240,245},{249,255,241,245},{249,255,242,246},{250,255,243,247},{250,255,244,248},{250,255,245,248},{251,255,246,249},{251,255,247,250}, - {252,255,248,250},{252,255,249,251},{253,255,250,252},{253,255,251,252},{254,255,252,253},{254,255,253,254},{255,255,254,254},{255,255,255,255} -}; -static inline void L2_setValue(int x, int y, float v) { - if ((unsigned)x >= (unsigned)FRAME_W || (unsigned)y >= (unsigned)FRAME_H) return; - if (!(v > 0.0f)) v = 0.0f; else if (v > 1.0f) v = 1.0f; - const uint8_t* c = L2_RAMP[(int)(v * 255.0f + 0.5f)]; - uint8_t* p = layerBuf[2] + (((size_t)y * FRAME_W + x) << 2); - p[0] = c[0]; p[1] = c[1]; p[2] = c[2]; p[3] = c[3]; -} -static inline void L2_setPixel(int x, int y, uint8_t r, uint8_t g, uint8_t b) { - if ((unsigned)x >= (unsigned)FRAME_W || (unsigned)y >= (unsigned)FRAME_H) return; - uint8_t* p = layerBuf[2] + (((size_t)y * FRAME_W + x) << 2); - p[0] = r; p[1] = g; p[2] = b; p[3] = 255; -} - -// >>> LAYER 0 TRANSLATION BEGIN <<< -namespace L0 { - static float s_timeAcc = 0.0f; - - void setup() { - PFMath::buildSinLUT(); - s_timeAcc = 0.0f; - } - - void update(float dt, const InputFrame& input) { - (void)input; - float speed = knobVal[1]; - s_timeAcc += dt * speed; - if (s_timeAcc >= TWO_PI * 100.0f) { - s_timeAcc -= TWO_PI * 100.0f; - } - } - - void draw() { - const float cx = FRAME_W * 0.5f; - const float cy = FRAME_H * 0.5f; - const int tileSize = 8; - - float quantize = knobVal[0]; - float phaseShift = knobVal[2]; - float sharpness = knobVal[3]; - - bool useQuantize = (quantize > 1.0f); - float qStep = useQuantize ? (1.0f / quantize) : 1.0f; - - for (int y = 0; y < FRAME_H; ++y) { - bool isRowBorder = ((y % tileSize) == 0); - int gridY = y / tileSize; - float ty = gridY * tileSize + tileSize * 0.5f; - float dy = ty - cy; - - for (int x = 0; x < FRAME_W; ++x) { - if (isRowBorder || (x % tileSize) == 0) { - L0_setValue(x, y, 0.0f); - continue; - } - - int gridX = x / tileSize; - float tx = gridX * tileSize + tileSize * 0.5f; - float dx = tx - cx; - - float dist = sqrtf(dx * dx + dy * dy); - - float localTime = s_timeAcc - dist * phaseShift * 0.08f; - if (useQuantize) { - localTime = floorf(localTime / qStep) * qStep; - } - - float wave = PFMath::fastSin(dist * 0.25f - localTime * 3.0f); - float val = (wave + 1.0f) * 0.5f; - - if (val <= 0.0f) { - val = 0.0f; - } else if (val >= 1.0f) { - val = 1.0f; - } else { - val = PFMath::fastPow(val, sharpness); - } - - if (val < 0.0f) val = 0.0f; - if (val > 1.0f) val = 1.0f; - - L0_setValue(x, y, val); - } - } - } -} -// >>> LAYER 0 TRANSLATION END <<< - -// >>> LAYER 2 TRANSLATION BEGIN <<< -namespace L2 { - static float s_t = 0.0f; - - void setup() { - PFMath::buildSinLUT(); - s_t = 0.0f; - } - - void update(float dt, const InputFrame& input) { - (void)input; - float speed = knobVal[1]; - s_t += dt * speed; - if (s_t >= TWO_PI * 100.0f) { - s_t -= TWO_PI * 100.0f; - } - } - - void draw() { - const int W = FRAME_W; - const int H = FRAME_H; - const bool portrait = (W < H); - const float vw = portrait ? (float)W : (float)H; - const float vh = portrait ? (float)H : (float)W; - - const float amp = knobVal[0]; - const float sun = knobVal[2]; - const float glit = knobVal[3]; - - const float horizon = floorf(vh * 0.34f); - const float beachTop = vh - floorf(vh * 0.14f); - const float sunU = vw * 0.5f; - const float sunV = horizon - 3.0f - sun * (horizon - 8.0f); - - const int stepT = (int)(s_t * 7.0f); - - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - float u, v; - if (portrait) { - u = (float)x; - v = (float)y; - } else { - u = (float)y; - v = (float)(W - 1 - x); - } - - float val = 0.0f; - - if (v < horizon) { - float g = v / horizon; - val = 0.12f + 0.38f * g; - - float du = u - sunU; - float dv = (v - sunV) * 1.2f; - float d = sqrtf(du * du + dv * dv); - if (d < 4.5f) { - val = 1.0f; - } else { - val += 0.7f * expf(-d * 0.18f); - } - - float cl = PFMath::fastSin(u * 0.11f + v * 0.9f + s_t * 0.25f) - + PFMath::fastSin(u * 0.05f - v * 0.5f + 2.0f); - if (cl > 1.2f && v < horizon * 0.8f) { - val += 0.12f; - } - } else if (v < beachTop) { - float depth = (v - horizon) / (beachTop - horizon); - float persp = 1.0f / (depth + 0.09f); - float wob = PFMath::fastSin(u * 0.25f + s_t * 1.3f) * 0.5f * amp; - float band = PFMath::fastSin(persp * 2.6f + wob + s_t * (1.5f + depth * 2.0f)); - val = 0.42f - 0.22f * depth - + band * (0.06f + 0.14f * amp) * (0.4f + depth); - - float pathW = 2.5f + depth * 9.0f; - float sway = PFMath::fastSin(v * 0.5f + s_t) * amp * 2.0f; - bool inPath = (fabsf(u - sunU + sway) < pathW); - if (inPath) { - val += 0.12f + 0.10f * (1.0f - depth); - } - - float sp = PFNoise::cellHash((int)u, (int)v, stepT); - float thr = 1.0f - glit * (inPath ? 0.10f : 0.03f); - if (sp > thr && band > 0.2f) { - val = 1.0f; - } - } else { - float s = (v - beachTop) / (vh - beachTop); - val = 0.5f + 0.15f * s + 0.06f * PFNoise::cellHash((int)u, (int)v); - - float surge = PFMath::fastSin(s_t * 1.8f) * 0.5f + 0.5f; - float edge = beachTop - + 2.0f + surge * (vh - beachTop) * 0.55f * (0.4f + amp) - + PFMath::fastSin(u * 0.35f + s_t * 2.2f) * 2.5f * amp; - - if (v < edge) { - val = 0.34f - 0.10f * (edge - v) / (vh - beachTop); - if (edge - v < 1.5f) { - val = 0.95f; - } - } - } - - if (val < 0.0f) val = 0.0f; - if (val > 1.0f) val = 1.0f; - - L2_setValue(x, y, val); - } - } - } -} -// >>> LAYER 2 TRANSLATION END <<< - -// ── Deterministic pipeline (do not edit) ── -static void rleDecode(const uint8_t* rle, size_t len, uint8_t* out) { - size_t o = 0; - const size_t cap = (size_t)PIX_N * 4; - for (size_t i = 0; i + 4 < len && o < cap; i += 5) { - for (int k = 0; k < rle[i] && o < cap; k++) { - out[o++] = rle[i + 1]; out[o++] = rle[i + 2]; out[o++] = rle[i + 3]; out[o++] = rle[i + 4]; - } - } -} - -// Binary mask test — identical to the Pattern Lab preview: pixel art is "on" -// where something was drawn (alpha >= 0.5); code layers where ramp-colored -// luminance x alpha crosses 0.5. -static inline bool maskOn(const uint8_t* p, bool pixelArt, bool invert) { - bool on; - if (pixelArt) on = p[3] >= 128; - else on = (0.2126f * p[0] + 0.7152f * p[1] + 0.0722f * p[2]) * (p[3] / 255.0f) >= 127.5f; - return invert ? !on : on; -} - -static void recolorBuffer(uint8_t* buf, const uint8_t lut[256][4]) { - for (int i = 0; i < PIX_N; i++) { - uint8_t* p = buf + (size_t)i * 4; - if (p[3] == 0) continue; - int lum = (int)(0.2126f * p[0] + 0.7152f * p[1] + 0.0722f * p[2] + 0.5f); - if (lum > 255) lum = 255; - const uint8_t* c = lut[lum]; - p[0] = c[0]; p[1] = c[1]; p[2] = c[2]; p[3] = c[3]; - } -} - -void setup() { - for (int i = 0; i < LAYER_N; i++) - if (!layerBuf[i]) layerBuf[i] = (uint8_t*)PFMem::alloc((size_t)PIX_N * 4); - for (int i = 0; i < LAYER_N; i++) - if (!layerBuf[i]) return; // allocation failed → draw() degrades to blank - rleDecode(L1_RLE, sizeof(L1_RLE), layerBuf[1]); - L0::setup(); - L2::setup(); -} - -void update(float dt, const InputFrame& input) { - for (int i = 0; i < 4; i++) { - knobVal[i] += input.knobDeltas[i] * KNOB_STEP[i]; - if (knobVal[i] < KNOB_MIN[i]) knobVal[i] = KNOB_MIN[i]; - if (knobVal[i] > KNOB_MAX[i]) knobVal[i] = KNOB_MAX[i]; - knobNorm[i] = (knobVal[i] - KNOB_MIN[i]) / (KNOB_MAX[i] - KNOB_MIN[i]); - } - L0::update(dt, input); - L2::update(dt, input); -} - -void draw() { - for (int i = 0; i < LAYER_N; i++) - if (!layerBuf[i]) { PFCanvas::present(); return; } - - memset(layerBuf[0], 0, (size_t)PIX_N * 4); - L0::draw(); - memset(layerBuf[2], 0, (size_t)PIX_N * 4); - L2::draw(); - - // Composite bottom → top over the panel's black — same math as the web preview. - for (int y = 0; y < FRAME_H; y++) { - for (int x = 0; x < FRAME_W; x++) { - const size_t j = ((size_t)y * FRAME_W + x) << 2; - float cr = 0.0f, cg = 0.0f, cb = 0.0f; - for (int gi = 0; gi < GROUP_N; gi++) { - bool hidden = false; - for (int m = 0; m < G_MASK_N[gi]; m++) { - const int mi = G_MASK_AT[gi] + m; - if (!maskOn(layerBuf[MASK_LAYER[mi]] + j, MASK_PXART[mi] != 0, MASK_INVERT[mi] != 0)) { - hidden = true; - break; - } - } - if (hidden) continue; - const uint8_t* p = layerBuf[G_LAYER[gi]] + j; - const float a = (p[3] / 255.0f) * G_OPACITY[gi]; - if (a <= 0.0f) continue; - const float sr = p[0], sg = p[1], sb = p[2], inv = 1.0f - a; - switch (G_BLEND[gi]) { - case 1: cr += sr * a; cg += sg * a; cb += sb * a; break; - case 2: - cr = cr * inv + (cr * sr / 255.0f) * a; - cg = cg * inv + (cg * sg / 255.0f) * a; - cb = cb * inv + (cb * sb / 255.0f) * a; - break; - case 3: - cr = cr * inv + (255.0f - (255.0f - cr) * (255.0f - sr) / 255.0f) * a; - cg = cg * inv + (255.0f - (255.0f - cg) * (255.0f - sg) / 255.0f) * a; - cb = cb * inv + (255.0f - (255.0f - cb) * (255.0f - sb) / 255.0f) * a; - break; - default: - cr = cr * inv + sr * a; - cg = cg * inv + sg * a; - cb = cb * inv + sb * a; - break; - } - } - int ir = (int)(cr + 0.5f); if (ir > 255) ir = 255; - int ig = (int)(cg + 0.5f); if (ig > 255) ig = 255; - int ib = (int)(cb + 0.5f); if (ib > 255) ib = 255; - PFCanvas::setPixel(x, y, (uint8_t)ir, (uint8_t)ig, (uint8_t)ib); - } - } - PFCanvas::present(); -} - -} // namespace LabStack_Layer_Stack - -PF_REGISTER_PATTERN(LabStack_Layer_Stack) diff --git a/firmware/patternflow/data/README.txt b/firmware/patternflow/data/README.txt index f7ef0736..c4164bde 100644 --- a/firmware/patternflow/data/README.txt +++ b/firmware/patternflow/data/README.txt @@ -16,5 +16,5 @@ Requirements: gone afterwards unless they are in data/patterns/ too. File naming: - - Lowercase slugs, no spaces: origin.pfm, layer_stack.pfm + - Lowercase slugs, no spaces: origin.pfm, wave_saw.pfm - The slug must match the module's NAME (build_module.py derives it). diff --git a/firmware/patternflow/features/mqtt/core_mqtt.h b/firmware/patternflow/features/mqtt/core_mqtt.h index a826f8fc..88bff92c 100644 --- a/firmware/patternflow/features/mqtt/core_mqtt.h +++ b/firmware/patternflow/features/mqtt/core_mqtt.h @@ -1,6 +1,9 @@ // ═══════════════════════════════════════════════════════════ // PatternFlow - MQTT sidechannel (knobs + pattern + absolute params) // +// The contract clients are written against is docs/mqtt-spec.md; keep the +// two in step (bump its version line when a topic changes). +// // Topics per prefix (no wildcards — ACL-friendly exact list): // // /knob/1..4 absolute click counts (live; non-retain) diff --git a/firmware/patternflow/presets/README.md b/firmware/patternflow/presets/README.md new file mode 100644 index 00000000..eb555371 --- /dev/null +++ b/firmware/patternflow/presets/README.md @@ -0,0 +1,17 @@ +# presets/ + +The curated patterns, as C++ headers. `preset_origin.h` is the one compiled into every firmware image — the failsafe a board can always boot into. The rest are built into `.pfm` modules by `firmware/toolchain/make_pack.py` and ship as the **Basics pack** (`web/public/packs/`), which a new board installs in one click. `presetPatterns[]` in [`../pattern_registry.h`](../pattern_registry.h) decides what is compiled in; [`../README.md`](../README.md) explains the registry. + +**This set is curated by the maintainer.** Patterns are not contributed here: they are made in the [Pattern Lab](https://patternflow.work/pattern-lab) and published to the Community, where every Patternflow can play them. [`../../CUSTOM_PATTERNS.md`](../../CUSTOM_PATTERNS.md) is the hands-on route for your own board. + +## Twins + +Every header here has a JavaScript twin in `web/src/lib/presets/`, and **the JavaScript is the source of truth**: the header is generated from it (the Pattern Lab's *Copy C++ prompt* flow, or `firmware/toolchain/port_preset.py` in the other direction). `firmware/toolchain/check_presets.py` runs in CI and fails when the two sets drift. Its `WEB_ONLY` list names the web presets that deliberately have no header — the ones that missed frame budget on the real ESP32, and the ones posted after the module loader made a compiled-in showcase unnecessary; delete an entry there the day its header lands. `preset_calib.h` is the display-calibration pattern and has no web twin on purpose. + +## Names + +Most files are named by the date the pattern was made (`preset_0510.h` is 10 May). That name is also the site's sort key and the module's slug, so **files are not renamed**. The pattern's display name, author and license are in the header comment of each file (`// Pattern:`, `// Author:`, `// SPDX-License-Identifier:`), and `make_pack.py` reads them from there; there is deliberately no hand-kept table of them, because the last one fell thirteen entries behind. + +## License + +CC BY-SA 4.0, per-file SPDX header — these are artwork, not code, even though they sit in a code folder. See [`docs/LICENSE-SUMMARY.md`](../../../docs/LICENSE-SUMMARY.md). diff --git a/firmware/toolchain/README.md b/firmware/toolchain/README.md new file mode 100644 index 00000000..b1f8b88f --- /dev/null +++ b/firmware/toolchain/README.md @@ -0,0 +1,21 @@ +# firmware/toolchain/ + +The repository-level scripts around the firmware: what builds a module or a pack, what assembles a console page, and the `check_*.py` that CI runs. Each script's docstring is its manual (`python firmware/toolchain/