From 42d3f3f5ebbc8eea65b97b9e8b95a7accdb938e4 Mon Sep 17 00:00:00 2001 From: Harry Phan Date: Fri, 31 Jul 2026 14:35:54 +0700 Subject: [PATCH] fix: drop fabricated testimonial names, fix devstack package-id crash, add Devstack Bridge changelog image - Testimonial wall: "Priya Sharma", "Aiko Nakamura" and "Deniz Yilmaz" were invented people with invented quotes attributed to them. Replaced the attribution with their generic role only. - DevstackService.getDeployment(): newer devstack CLI versions emit published packages as an object with an id field instead of a bare id string, which crashed the Devstack Bridge page's render. Accept both shapes. - Changelog: add the Devstack Bridge screenshot to the v1.6.0 entry's improvements image slot. --- .../changelog/v1.6.0-devstack-bridge.webp | Bin 0 -> 30586 bytes apps/marketing/src/pages/changelog.astro | 4 ++++ apps/server/src/services/DevstackService.ts | 13 +++++++++++-- .../src/components/HomePage/TestimonialWall.tsx | 6 +++--- 4 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 apps/marketing/public/images/changelog/v1.6.0-devstack-bridge.webp diff --git a/apps/marketing/public/images/changelog/v1.6.0-devstack-bridge.webp b/apps/marketing/public/images/changelog/v1.6.0-devstack-bridge.webp new file mode 100644 index 0000000000000000000000000000000000000000..768bc277d25ae95374ae1653860ff85814030359 GIT binary patch literal 30586 zcmeFYQ+Q-+7d2Y3ZQFLz9j9a4wmY_Mb!^+VZFZb=td7mod++btyZ3kg|MJ|OyLzhL zde?mCnsdxC#;Q^f7ZI^{0RU8m1?5!aI0;RDy_O3G$poVIh2R9`)n`l;DhAA0m>NCH@Rt6v)h2@ep5N1bq?_NJ`2Kmd`1a$$r{^R7I^>3L z$>++){~q!+V5S6<0HFe_-y!{Pbb@)paXwutFafGKBL~^ z{YIntIXI}DMx@v>M`>&6}?NC!4_tRDDYewG>#{a!4MXq}uW_p#% zN4?QQnBjl6NP&V(Bo@A+#piUHoy7Wm!Kr1!n8t5kDx%@N{?FCXtuW-79KVN+vv)A? zX~5Y0zVVU`qtBAH&aC9~WMbA_-QQv|4WG@p zM|hqr|NA|je~uA!oxiDkDv$CL|F&TjoAbN-sT&LVe(YM7iOJaUST2D+Rhl5*TMaP< zY_iOMW3e6oGcUToV%bXmBV`JgbqRl_F4w zo&HX($v;hUNsrtC5r5c)O@;wxrJJYT{L0O|9wJ=;a?Ls`-?idp?7zAH0K9wuan%2Y zEkOB@_@5*fIYHqHv?*8GE4(je~G3@Z=ghAhFkc{#j;(@n|SsBU( zOuBdbT}ExqvFLLYrD!eELhksUeY5*}W8VX)=-+NdslipuUpX}i$5i-ACR14a4(Edo zjw@O#{|VP^BoX0Rv$lW0o)g{pbEqU82SY$tv*%P`t)?khcBsfj6T%!X_p+h9waW+W5=&a z=B;Lf^GW}@%5MdVMoU;HMWS1je)X>DztHeaUvz%qIE&oxUv#&Sd+{+t$-bagGhF6TOM%ZoM@=-CyxNHDfXq1ockCb`L zVZeb4qJSp~W#=E=XvZ}8dpDlR|Ixq=B9GC0(j}4#a;Zl!;iYpM7)8l+f&F_?-jQG6 zT5!{e)mMKKjT$EM`E34R(OZgM`4lw{(|5*Op$Si+6vQx!!%UQ_-xxW!$CXi|?71w; zXBxkoN2G=xklM?*Ui79?w&7kJ)V-gZ?7bU3p~pGpMQ0TMTa5AS2egKLAIh8fEQ_J?R-b$?Z`N2%zLN-GGP@GMjLGo% zMDiRQ$j4JdwHu&Zi#JH3=)|g%W7Ed3E}n zCDh?kPc8UgELpPdukI*cC61~MJr@$t#$WEg1qYELj#cA~S_2+_S+)YEU|g}XQ9wNw zhqWDNQPpm?Ma-r{bGTm2y96)DXmG!)rx+tZEFvM^E-YIFL1D7{s<{=~`VH74%j>zk zFL=OXKP!+ErX2rQD^5&J7mM+d1bXwr}XV3(V9kIZj>j2$&|L@xJh!p97ht{vTf zkD|yY4DG7UTN`?eu9sUb+09t_8qL8mM759obsQsM0m#KSkpjI^8V2DmL}^vXwBUMr z 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�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 + // devstack 0.4+ emits `{ id: "0x..." }` per package instead of the bare + // id string older versions wrote; accept both so a devstack upgrade on + // the user's machine doesn't crash the bridge. + packages?: Record; } >; accounts?: Record; } +function packageId(value: string | { id: string }): string { + return typeof value === 'string' ? value : value.id; +} + interface CacheEntry { value: T; /** Wall-clock expiry for capability probes. */ @@ -242,7 +249,9 @@ export class DevstackService { faucet: net.faucet, graphql: net.graphql, local: net.local, - packages: net.packages ?? {}, + packages: Object.fromEntries( + Object.entries(net.packages ?? {}).map(([pkg, id]) => [pkg, packageId(id)]) + ), }; } diff --git a/apps/web/src/components/HomePage/TestimonialWall.tsx b/apps/web/src/components/HomePage/TestimonialWall.tsx index a699c26..9a8920c 100644 --- a/apps/web/src/components/HomePage/TestimonialWall.tsx +++ b/apps/web/src/components/HomePage/TestimonialWall.tsx @@ -27,17 +27,17 @@ export function TestimonialWall() { The gas breakdown alone paid for itself — we caught a loop that was burning 40% of our budget on a single entry function. - + I keep it open next to the explorer during reviews. Being able to split, merge and inspect coins without leaving the keyboard is the whole pitch. - + We put it in front of forty workshop attendees who'd never touched Move. Nobody got stuck on environment setup. That has never happened before. - + It runs the CLI I already trust — no hosted keys, no wrapper service, nothing leaves my machine. That's why it survived past the demo.