From ed61fb5ca55b133832e7c57a953795ab922d5de8 Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Wed, 19 Aug 2026 17:19:51 +0200 Subject: [PATCH] fp6+ --- deploy/README.md | 8 +- images/fp6plus-pmos.jpg | Bin 0 -> 128346 bytes project.cpp | 17 +-- server/implementations/main.cpp | 3 +- .../interfaces/Catcrafts.Shared-Content.cppm | 106 +++++++++++++++++- shared/interfaces/Catcrafts.Shared-Views.cppm | 19 +++- tests/ShouldEmitStructuredData/main.cpp | 5 + tests/ShouldSellTheShopFront/main.cpp | 21 +++- tests/ShouldServeRoutes/main.cpp | 5 +- tests/ShouldShipContent/main.cpp | 102 +++++++++++++++-- tests/ShouldStayScriptFree/main.cpp | 4 +- tools/dev.sh | 2 +- 12 files changed, 254 insertions(+), 38 deletions(-) create mode 100644 images/fp6plus-pmos.jpg diff --git a/deploy/README.md b/deploy/README.md index 5955229..479f067 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -693,9 +693,9 @@ split working as designed. tools/fetch-posts.sh # pull posts from the allowed communities tools/fetch-media.sh [dir] # mirror their media locally (run after the above) tools/fetch-rates.sh # ECB reference rates for the indicative prices -crafter-build --local -r # the wasm app alone, no backend, on :8080 +crafter-build -r # the wasm app alone, no backend, on :8080 -crafter-build test --product=server --local # every suite: the unit assertions +crafter-build test --product=server # every suite: the unit assertions # AND the black-box HTTP suites, which spawn the # real server on scratch ports (the CI gate; the # checkout lifecycle re-arms at launch) @@ -706,8 +706,8 @@ crafter-build test --product=server --local # every suite: the unit assertions ### If a `bin/` glob matches two directories -The variant directory name embeds a config hash, and **`--local` and -non-`--local` builds hash differently**: `--local` resolves the Crafter libraries +The variant directory name embeds a config hash, and **`` and +non-`` builds hash differently**: `` resolves the Crafter libraries from sibling working trees, a plain build fetches them from Forgejo. They are genuinely different configurations and both land in `bin/`. diff --git a/images/fp6plus-pmos.jpg b/images/fp6plus-pmos.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26dffe1545ec3582d442f53b9381b26462bd91e6 GIT binary patch literal 128346 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ξ^13ClWd+*5n%4-hQ6!gP%zlxx~1~@nzeKdoCGE{ zK5X`YTRlpJ?zMdZ7|LQ}S_F=e3Gd2kDsvZ9#rQ}lNt-GYh|#+tXGpEPooUG%{T%h5 zSY>apA=hIR&U1>H7N_uC_qEbYVWvw?oNQP!C>2E=>&e$3fjU@6j$86f_jyj7G#p{% zoa)~&f05(=3+n8HhJNH!5S5}nRu$ydI>vOMU37`@L|Ro>p$N2k;iZC(JYtf-!EVKn zLK?xSnQsI~;9E9!Mc{Q2f#1r6E-Zd+5gyqM?P;$o$+H$CtSmpo=m*Ju2lN&6m)~5e zQO_l{m3eb}!(?Z+9Ig3(HEyV4;bN*UbF{kzzQ;asd)2kz@JDtAX3Z^%lG*-)8{)YL zC73PYwIps2I5RyOdYF-B-Y$;cpF@jiIOel@j_-zY0|XO@cw@N44(AhA7}uzT!>Xnm z&AZt2!_iV}8PdwSdnbg=8V8Puh&*m=y!{NDYLBQ0phfFBQDbYH2NXY5CDM**G71h5 zp0!Nu77o+qPclQ1P2BbnZHq%irv=h!5W)U2WwR{hPTH9?zEZyx#Y`o`0lrjC^VN%# z9-UiHYP51s(G+Bg^AXwg=LBsPv_IkF`c>{UgRGWcvgJf7|Wu+-pcsx(w+rqXHVdz!6z!ZE|)0C5^I&S2I5?d&Ruu;5}- zXh^mt!l}~hYZ9O0Mt?0Yj;ys9m6X9ONa?2-xQdB{#Ky(=c^nQ9ZpHcZ*%olp zHw!hF{U`gg4HBjr=(Q (I30-3~JgeF?%Y!opa)Ac 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 b%5`naQ>cGCyEZ+TgYo a std::vector netArgs(args.begin(), args.end()); bool useLocalNet = false; for (std::string_view a : args) { - if (a == "--local") { useLocalNet = true; break; } + if (a == "") { useLocalNet = true; break; } } Configuration* network = useLocalNet ? LocalProject({ @@ -275,16 +275,16 @@ extern "C" Configuration CrafterBuildProject(std::span a std::vector depArgs(args.begin(), args.end()); depArgs.push_back("--target=wasm32-wasip1"); - // --local resolves the Crafter.Graphics dep from a sibling working tree + // resolves the Crafter.Graphics dep from a sibling working tree // instead of fetching it from forgejo. Mirrors Crafter.Graphics's own // project.cpp convention so edits across the two repos pick up without // commit-and-pull. bool useLocal = false; for (std::string_view a : args) { - if (a == "--local") { useLocal = true; break; } + if (a == "") { useLocal = true; break; } } - if (useLocal && std::find(depArgs.begin(), depArgs.end(), std::string("--local")) == depArgs.end()) { - depArgs.push_back("--local"); + if (useLocal && std::find(depArgs.begin(), depArgs.end(), std::string("")) == depArgs.end()) { + depArgs.push_back(""); } Configuration* graphics = useLocal @@ -355,10 +355,13 @@ extern "C" Configuration CrafterBuildProject(std::span a // EnableWasiBrowserRuntime — sets /<link> tags since the // Dom partition has no head-element access. cfg.files.emplace_back(fs::path("catcrafts-head.js")); - // Product photography. CC BY-SA 4.0, © Fairphone (official render via - // Wikimedia Commons) — the attribution lives on /legal/imprint. NOT in + // Product photography. Both renders are © Fairphone under CC BY-SA 4.0 and + // are cropped and recompressed here — the Gen. 6 one came via Wikimedia + // Commons, the Gen. 6+ one from Fairphone's own Flickr. The attribution and + // the adaptation notice the licence requires live on /legal/imprint. NOT in // cfg.assets: that pipeline transcodes to .ctex, which <img> cannot decode. cfg.files.emplace_back(fs::path("images/fp6-pmos.jpg")); + cfg.files.emplace_back(fs::path("images/fp6plus-pmos.jpg")); // ECB rates ride with the content so the wasm-rendered shop (backend-down // fallback) can emit the same indicative prices the server does. cfg.files.emplace_back(fs::path("content/rates.json")); diff --git a/server/implementations/main.cpp b/server/implementations/main.cpp index 3aa309b..e078065 100644 --- a/server/implementations/main.cpp +++ b/server/implementations/main.cpp @@ -125,7 +125,8 @@ int main(int argc, char** argv) { // --routes: status + title for every route, for a quick smoke check. if (has("--routes")) { const Views::SiteContent content = LoadContent("content"); - for (std::string_view p : { "/", "/about", "/shop", "/shop/fp6-pmos", "/shop/nope", + for (std::string_view p : { "/", "/about", "/shop", "/shop/fp6-pmos", + "/shop/fp6plus-pmos", "/shop/donation", "/shop/nope", "/financials", "/order/0123456789abcdef0123456789abcdef", "/order/not-a-token", diff --git a/shared/interfaces/Catcrafts.Shared-Content.cppm b/shared/interfaces/Catcrafts.Shared-Content.cppm index b3413fd..4b90d0d 100644 --- a/shared/interfaces/Catcrafts.Shared-Content.cppm +++ b/shared/interfaces/Catcrafts.Shared-Content.cppm @@ -54,6 +54,13 @@ static_assert(kMarkupMinor * 10000 % (10000 + Money::kVatRateBp) == 0, static_assert(kMarkupMinor * 10000 / (10000 + Money::kVatRateBp) == kMarkupNetMinor, "the exact net of the markup must be the €50 the rule promises"); +// The warranty both phones carry, verbatim. Shared rather than pasted per +// product because it is a promise about how Catcrafts handles a fault, not a +// statement about a particular board — and two copies of a legal text are two +// texts that can drift apart, while /legal/terms states exactly one policy. +inline constexpr std::string_view kPhoneWarranty = + "Two years from Catcrafts, worldwide, one counter: every claim goes to Catcrafts, whatever turns out to be broken. The software (postmarketOS, the patches, imsd) is Catcrafts' own work and is fixed by Catcrafts with updates, delivered over the air. Even a phone that no longer boots is normally recovered in place: as long as fastboot still comes up, Catcrafts walks you through reflashing it over a USB cable in minutes. Only a phone that shows nothing at all, not even fastboot, travels for a software fault. For a hardware fault Catcrafts takes the phone back and handles the manufacturer's process, including the temporary reflash to stock Android it requires, and returns it running postmarketOS. When a phone does have to travel, warranty shipping is paid by Catcrafts, both directions, worldwide. User inflicted damage, including software faults caused by relocking the bootloader do not fall under this policy. The full terms are on the terms page."; + export const std::vector<Product>& Products() { static const std::vector<Product> products = [] { Product p; @@ -72,7 +79,7 @@ export const std::vector<Product>& Products() { p.shipWeightGrams = 700; p.image = "/fp6-pmos.jpg"; p.summary = "The Fairphone (Gen. 6), reflashed by Catcrafts to run postmarketOS with the patches and IMS/VoLTE implementation Catcrafts maintains. All of that software is open source. You can download it and flash a Fairphone yourself, and you are welcome to. What you pay for here is the thing open source doesn't come with: real support. A phone that arrives working, and one email address that answers for it. Not a forum, not a git issue, but support like any other manufacturer offers. And the margin funds the development itself."; - p.warranty = "Two years from Catcrafts, worldwide, one counter: every claim goes to Catcrafts, whatever turns out to be broken. The software (postmarketOS, the patches, imsd) is Catcrafts' own work and is fixed by Catcrafts with updates, delivered over the air. Even a phone that no longer boots is normally recovered in place: as long as fastboot still comes up, Catcrafts walks you through reflashing it over a USB cable in minutes. Only a phone that shows nothing at all, not even fastboot, travels for a software fault. For a hardware fault Catcrafts takes the phone back and handles the manufacturer's process, including the temporary reflash to stock Android it requires, and returns it running postmarketOS. When a phone does have to travel, warranty shipping is paid by Catcrafts, both directions, worldwide. User inflicted damage, including software faults caused by relocking the bootloader do not fall under this policy. The full terms are on the terms page."; + p.warranty = kPhoneWarranty; // No safety note. There was one — the emergency-calling caveat — and // it came off on 2026-08-18, when imsd placed calls to 112 on a live // network in a test session approved by TB112 (the Dutch 1-1-2 @@ -111,15 +118,93 @@ export const std::vector<Product>& Products() { p.priceInclMinor = cheapest->priceInclMinor; } + // The Fairphone (Gen. 6+): Fairphone's mid-generation refresh, announced + // 2026-08-18. A second listing rather than more colours on the entry + // above — different silicon, a different price and its own spec sheet, + // and the two are bought as different phones. + // + // It is sellable at all because the SOFTWARE is unchanged: the same + // postmarketOS image, the same kernel patches and the same imsd run on + // this board, confirmed on a device. The chassis, modem, cameras and + // battery are the Gen. 6's; the SoC and the RAM are the only parts the + // image had to be re-verified against, and it was. + Product q; + q.slug = "fp6plus-pmos"; + q.name = "The Fairphone (Gen. 6+) with postmarketOS"; + q.brand = "Fairphone"; + q.tagline = "The mid-generation refresh faster chip, 12 GB of RAM, running the same mainline Linux image."; + q.status = "coming-soon"; + // Same device weight (193 g) in the same retail box, so the outgoing + // parcel is the Gen. 6's parcel and lands in the same carrier bracket. + // The rounding note on the entry above applies here too: this wants a + // scale reading of a real parcel before launch, not a second guess. + q.shipWeightGrams = 700; + // Fairphone's own Cobalt Blue render, cropped from the 2200 × 2200 + // original on their Flickr — same rightsholder and same CC BY-SA 4.0 + // licence as the Gen. 6 render above, credited with the adaptation + // notice on /legal/imprint. Deliberately NOT one of the copies the tech + // press hosts: an outlet's file carries no licence grant from the + // outlet, and the ones in circulation show the phone running stock + // Android with the Play Store on screen — which is the single thing + // this listing exists to sell the absence of. + q.image = "/fp6plus-pmos.jpg"; + q.summary = "The Fairphone (Gen. 6+), reflashed by Catcrafts to run postmarketOS with the same patches and IMS/VoLTE implementation as the Gen. 6 — that image is confirmed working on this board. The hardware is Fairphone's mid-generation refresh: a faster Snapdragon and 12 GB of RAM in the same repairable chassis, with the same twelve replaceable modules and spare parts through 2033. All of that software is open source. You can download it and flash a Fairphone yourself, and you are welcome to. What you pay for here is the thing open source doesn't come with: real support. A phone that arrives working, and one email address that answers for it. Not a forum, not a git issue, but support like any other manufacturer offers. And the margin funds the development itself."; + q.warranty = kPhoneWarranty; + // Supplier €649.00 incl VAT in every colour — Fairphone's own launch + // price, which is what the device costs anywhere a day after launch and + // the only real number that exists for it today. The Gen. 6 above is + // sourced well below list, so expect these to come DOWN once a sourcing + // price lands: change the three numbers here (and the pins in + // ShouldShipContent) and the €50 net margin holds by construction, as + // the static_asserts above guarantee for every supplier price. + // + // Cobalt Blue leads the list: with one price across the range, + // CheapestVariant() returns whichever colour comes first, and that is + // the selector's pre-selected default — so it has to be the colour the + // photo above actually shows. + q.variants = { + { "blue", "Cobalt Blue", 64900 + kMarkupMinor }, + { "green", "Forest Green", 64900 + kMarkupMinor }, + { "black", "Horizon Black", 64900 + kMarkupMinor }, + }; + // The hardware, as Fairphone specifies it. Five rows differ from the + // Gen. 6 — the panel, the SoC, the RAM, the charge rate, and Fairphone's + // own rounding of the chassis length (156.57 mm here, 156.5 there, one + // shell). The other eight are restated rather than cross-referenced: a + // spec sheet that says "as above" is not a spec sheet. + q.specs = { + { "Display", "6.31″ LTPO AMOLED, 2484 × 1116 (FHD+), 10–120 Hz adaptive, Gorilla Glass 7i" }, + { "Processor", "Qualcomm Snapdragon 7s Gen 4, Adreno 810 GPU" }, + { "Memory", "12 GB RAM" }, + { "Storage", "256 GB, microSD slot up to 2 TB" }, + { "Rear cameras", "50 MP main with OIS + 13 MP ultra-wide" }, + { "Front camera", "32 MP" }, + { "Battery", "4415 mAh, user-replaceable, 27 W fast charging" }, + { "Connectivity", "5G, Wi-Fi 6E, Bluetooth 5.4, NFC" }, + { "SIM", "Dual: nano-SIM + eSIM" }, + { "USB", "USB-C 2.0" }, + { "Fingerprint reader", "Side-mounted, in the power button" }, + { "Durability", "IP55, 12 user-replaceable modules" }, + { "Dimensions", "156.6 × 73.3 × 9.6 mm, 193 g" }, + }; + // Same derivation as above: the sticker is the cheapest colour, so the + // page cannot advertise a number the default choice doesn't honour. + if (const Variant* cheapest = q.CheapestVariant()) { + q.priceInclMinor = cheapest->priceInclMinor; + } + // The donation item: the shop's soft opening. It is "available" while - // the phone above stays "coming-soon" on purpose — the two rails, the + // the phones above stay "coming-soon" on purpose — the two rails, the // ledger, the reconciler and the mailer all run for real money before // the first phone order depends on them. The buyer names the amount // (Form::ValidateDonation bounds it); nothing ships and no VAT is // charged, because a gift with nothing supplied in return is not a // taxable supply — which is also why a donation never gets an invoice. - // fp6-pmos stays FIRST in this vector: it is the shop's headline, and - // tests address Products()[0] as the priced product. + // The order of this vector is the order of the shop grid, and it is + // deliberate: fp6-pmos FIRST (the shop's headline, and the tests + // address Products()[0] as the priced product), the Gen. 6+ second, + // and the donation LAST — it is the odd entry out, not what the shop + // is about. Product d; d.slug = "donation"; d.name = "Donation"; @@ -127,7 +212,7 @@ export const std::vector<Product>& Products() { d.status = "available"; d.donation = true; d.summary = "Thank you very much for considering to donate! Your donation will contribute to the maintenance of the image and R&D for new devices."; - return std::vector<Product>{ std::move(p), std::move(d) }; + return std::vector<Product>{ std::move(p), std::move(q), std::move(d) }; }(); return products; } @@ -308,7 +393,7 @@ export const std::vector<LegalPage>& LegalPages() { { .slug = "imprint", .title = "Imprint & contact", - .updated = "2026-08-05", + .updated = "2026-08-19", .lede = "Who is behind this site and how to reach them.", .sections = { { "Contact", @@ -324,6 +409,15 @@ export const std::vector<LegalPage>& LegalPages() { { "If you find a vulnerability, please email at security@catcrafts.net before disclosing it publicly and you will be credited. This site is source-available on Forgejo, so you can read exactly what it does rather than guessing.", } }, + // The CC BY-SA 4.0 licence on both product renders requires + // naming the author, linking the licence and flagging that the + // files were changed. project.cpp pointed here for it long + // before anything here said it, which is the gap this closes. + { "Image credits", + { + "The product renders are the manufacturer's own: © Fairphone, used under the Creative Commons Attribution-ShareAlike 4.0 licence, https://creativecommons.org/licenses/by-sa/4.0 . The Fairphone (Gen. 6) in Forest Green came through Wikimedia Commons; the Fairphone (Gen. 6+) in Cobalt Blue comes from Fairphone's own photostream at https://www.flickr.com/photos/fairphone . Both were cropped and recompressed to fit this site, and those adaptations are offered back under the same licence.", + "They are renders of stock hardware, which is exactly what Catcrafts ships — the difference is the software on it. No manufacturer render shows postmarketOS, so treat the screens in those images as the manufacturer's artwork rather than a picture of what arrives.", + } }, }, }, { diff --git a/shared/interfaces/Catcrafts.Shared-Views.cppm b/shared/interfaces/Catcrafts.Shared-Views.cppm index c27278a..b2a6306 100644 --- a/shared/interfaces/Catcrafts.Shared-Views.cppm +++ b/shared/interfaces/Catcrafts.Shared-Views.cppm @@ -676,8 +676,8 @@ export RenderedPage RenderShop(std::span<const Product> products, const Rates& r RenderedPage page; page.meta.title = "Shop — Catcrafts"; page.meta.description = - "Fairphone (Gen. 6) handsets reflashed to run postmarketOS, with the " - "IMS/VoLTE stack Catcrafts maintains."; + "Fairphone (Gen. 6) and (Gen. 6+) handsets reflashed to run postmarketOS, " + "with the IMS/VoLTE stack Catcrafts maintains."; page.meta.canonical = "/shop"; page.meta.geoPriceHint = true; // The category page as typed data: an ItemList naming each product page. @@ -1325,16 +1325,23 @@ export RenderedPage RenderProduct(const Product& product, // The spec and warranty sections exist only where the content does: a // donation has neither a spec sheet nor a warranty, and an empty table - // under a Fairphone-specific lede would be nonsense on its page. + // under a manufacturer-specific lede would be nonsense on its page. + // + // The lede names the BRAND, never a model. It used to say "Fairphone + // (Gen. 6)" in the markup, which read true while the catalogue held one + // phone and went silently false the moment it held two — a spec sheet + // introduced as some other device's sheet is worse than no lede at all. + // A spec sheet with no brand to name is a content bug, asserted against in + // ShouldShipContent rather than papered over with a second sentence here. const SafeHtml specsSection = product.specs.empty() ? SafeHtml{} : Format( R"(<section class="section">)" R"(<h2 class="section__title">Specifications</h2>)" - R"(<p class="section__lede">The hardware is a stock Fairphone )" - R"((Gen. 6), unmodified. Fairphone's spec sheet is this product's spec sheet, )" + R"(<p class="section__lede">The hardware is a stock {}, unmodified. )" + R"({}'s spec sheet is this product's spec sheet, )" R"(and all of it works under postmarketOS.</p>)" R"(<table class="spec-table"><tbody>{}</tbody></table>)" R"(</section>)", - Join(specRows)); + Escape(product.brand), Escape(product.brand), Join(specRows)); const SafeHtml warrantySection = product.warranty.empty() ? SafeHtml{} : Format( R"(<section class="section">)" R"(<h2 class="section__title">Warranty</h2>)" diff --git a/tests/ShouldEmitStructuredData/main.cpp b/tests/ShouldEmitStructuredData/main.cpp index 048494d..f5024f9 100644 --- a/tests/ShouldEmitStructuredData/main.cpp +++ b/tests/ShouldEmitStructuredData/main.cpp @@ -165,6 +165,11 @@ int main(int argc, char** argv) { srv.BodyHas("/", "property=\"og:title\"", "home page has og:title"); srv.BodyHas("/shop/fp6-pmos", "og:image\" content=\"https://catcrafts.net/fp6-pmos.jpg", "product og:image is the absolute photo URL"); + // Per product, not per site: two phones that share a link-preview image + // are two Mastodon posts that look like the same phone. + srv.BodyHas("/shop/fp6plus-pmos", + "og:image\" content=\"https://catcrafts.net/fp6plus-pmos.jpg", + "the refresh previews with its own photo, not the Gen. 6's"); // ── the person-company weld ─────────────────────────────────────── // The about page: the founder must be named in the HTML, the Person diff --git a/tests/ShouldSellTheShopFront/main.cpp b/tests/ShouldSellTheShopFront/main.cpp index dfc654e..c01d957 100644 --- a/tests/ShouldSellTheShopFront/main.cpp +++ b/tests/ShouldSellTheShopFront/main.cpp @@ -38,7 +38,26 @@ int main(int argc, char** argv) { srv.BodyHas("/shop", "coming soon", "shop card carries the coming-soon badge"); srv.BodyLacks("/shop/fp6-pmos", "<form", "no order form while coming soon"); } - // The donation item: open while the phone above may not be — the shop's + // The Gen. 6+ beside it: one launch price in all three colours, so the + // "from" price and every selector row are the same number — and the + // ex-VAT twin is still derived from it rather than typed in. + srv.BodyHas("/shop/fp6plus-pmos", "€709.50", + "refresh page shows the from-price (€649.00 supplier + €60.50 gross markup)"); + srv.BodyHas("/shop/fp6plus-pmos", "€586.36", "refresh page shows the derived ex-VAT price"); + srv.BodyHas("/shop", "€709.50", "shop card shows the refresh from-price"); + srv.BodyHas("/shop/fp6plus-pmos", "Cobalt Blue €709.50", + "colour selector prices the colour only this model ships in"); + srv.BodyHas("/shop/fp6plus-pmos", "12 GB RAM", + "refresh page states the spec that makes it a different phone"); + srv.BodyHas("/shop/fp6plus-pmos", "src=\"/fp6plus-pmos.jpg\"", + "refresh page embeds its own photo"); + srv.BodyHas("/shop", "src=\"/fp6plus-pmos.jpg\"", "shop card embeds the refresh thumbnail"); + Check(std::filesystem::exists("images/fp6plus-pmos.jpg"), + "refresh photo exists in the repo"); + srv.BodyLacks("/shop/fp6plus-pmos", "stock Fairphone (Gen. 6),", + "refresh page does not caption its specs as the Gen. 6's"); + + // The donation item: open while the phones above may not be — the shop's // soft opening. Its card quotes no price (there is none), its page is a // form asking an amount and, optionally, an email — never an address. srv.BodyHas("/shop", "/shop/donation", "shop grid lists the donation item"); diff --git a/tests/ShouldServeRoutes/main.cpp b/tests/ShouldServeRoutes/main.cpp index 0df5592..e898ba0 100644 --- a/tests/ShouldServeRoutes/main.cpp +++ b/tests/ShouldServeRoutes/main.cpp @@ -19,7 +19,8 @@ int main(int argc, char** argv) { TestServer srv(argv[1], 8210); // ── status codes ────────────────────────────────────────────────── - for (std::string_view p : { "/", "/about", "/shop", "/shop/fp6-pmos", "/projects", + for (std::string_view p : { "/", "/about", "/shop", "/shop/fp6-pmos", + "/shop/fp6plus-pmos", "/shop/donation", "/projects", "/posts", "/demos", "/demos/raytracer", "/financials", "/legal/privacy", "/legal/terms", "/legal/imprint", "/feed.xml", "/sitemap.xml", "/api/healthz" }) { @@ -72,6 +73,8 @@ int main(int argc, char** argv) { // ── sitemap and feed content ────────────────────────────────────── srv.BodyHas("/sitemap.xml", "/shop/fp6-pmos", "sitemap lists the product"); + srv.BodyHas("/sitemap.xml", "/shop/fp6plus-pmos", + "sitemap lists the refresh — it comes off the catalogue, not a second list"); srv.BodyHas("/sitemap.xml", "/about", "sitemap lists the about page"); srv.BodyHas("/sitemap.xml", "/legal/privacy", "sitemap lists the privacy page"); srv.BodyHas("/sitemap.xml", "/demos", "sitemap lists the demos page"); diff --git a/tests/ShouldShipContent/main.cpp b/tests/ShouldShipContent/main.cpp index 6be84de..2d64161 100644 --- a/tests/ShouldShipContent/main.cpp +++ b/tests/ShouldShipContent/main.cpp @@ -31,11 +31,12 @@ void CatalogueContract() { using namespace Catcrafts::Money; const auto& products = Content::Products(); - // Two entries: the phone, and the donation item that soft-opens the shop. - // The phone stays FIRST — it is the headline, and the suites below - // address Products()[0] as the priced product. - Check(products.size() == 2, "content: two products"); - if (products.size() == 2) { + // Three entries: the two phones, and the donation item that soft-opens + // the shop. The Gen. 6 stays FIRST — it is the headline, and the suites + // below address Products()[0] as the priced product — and the donation + // stays LAST. + Check(products.size() == 3, "content: three products"); + if (products.size() == 3) { const Product& pr = products[0]; Check(pr.slug == "fp6-pmos", "content: product slug"); // Coming-soon is the pre-launch state; launch flips it to @@ -167,15 +168,91 @@ void CatalogueContract() { "schema: and the rest of the record still parses"); } + // The Gen. 6+: the same contract as the phone above, asserted against + // its own numbers. That the two SHARE the pricing rule is the point — + // a second device must not quietly become a second pricing policy. + const Product& plus = products[1]; + Check(plus.slug == "fp6plus-pmos", "content: the refresh is the second listing"); + Check(plus.brand == "Fairphone", "content: the refresh names its manufacturer"); + Check(plus.Buyable() || plus.ComingSoon(), + "content: the refresh is buyable or deliberately coming soon"); + Check(plus.variants.size() == 3, "content: three colours on the refresh"); + // Launch price in every colour, so all three stickers are €709.50 — + // and each still nets exactly €50 after VAT, by the same arithmetic + // the invoice and the checkout use. + for (std::string_view slug : { "green", "black", "blue" }) { + const Variant* v = plus.FindVariant(slug); + Check(v && v->priceInclMinor == 70950, + "content: refresh colour = 649.00 supplier + 60.50 gross markup", slug); + Check(v && Money::NetFromGross(v->priceInclMinor) + - Money::NetFromGross(64900) == 5000, + "content: refresh colour nets the supplier price plus exactly €50", slug); + } + Check(plus.FindVariant("white") == nullptr, + "content: a colour this model doesn't ship in is null"); + Check(plus.CheapestVariant() + && plus.priceInclMinor == plus.CheapestVariant()->priceInclMinor, + "content: refresh from-price is the cheapest variant"); + // Same box, same 193 g device, so the same bracket and the same + // per-parcel ceiling the phone above is checked against. + Check(plus.shipWeightGrams == 700, + "content: the refresh leaves in the same 700 g parcel"); + // One warranty text for both phones, not two that can drift — the + // reason it is a shared constant rather than a second paste. + Check(plus.warranty == pr.warranty, + "content: both phones carry the identical warranty text"); + Check(plus.specs.size() == pr.specs.size(), + "content: the refresh states every spec row the Gen. 6 does"); + // The refresh IS the faster silicon — if these two rows ever match the + // Gen. 6's, the listing is selling the wrong phone. + { + bool soc = false, ram = false; + for (const Spec& s : plus.specs) { + soc = soc || (s.label == "Processor" && s.value.find("7s Gen 4") != std::string::npos); + ram = ram || (s.label == "Memory" && s.value.find("12 GB") != std::string::npos); + } + Check(soc && ram, "content: the refresh lists its own SoC and 12 GB of RAM"); + } + // Its own photo, not the Gen. 6's — the two phones ship in different + // colours, so sharing one render would picture a phone this listing + // cannot sell. Published, not merely committed: a file that the page, + // the link preview and the schema record all omit is a photo nobody + // ever sees, which is the failure the checks below actually catch. + Check(plus.image == "/fp6plus-pmos.jpg", "content: the refresh names its own photo"); + Check(plus.image != pr.image, "content: and not the Gen. 6's"); + // The pictured colour is the pre-selected one. With a single price + // across the range that is purely a question of list order, so it is + // worth pinning: a reorder would leave the page showing blue and + // selling green by default. + Check(plus.CheapestVariant() && plus.CheapestVariant()->slug == "blue", + "content: the default colour is the one the photo shows"); + { + const auto pp = Views::RenderProduct(plus, Rates{}); + // The spec lede is generated from the brand, so it must introduce + // THIS sheet — the old markup hardcoded "Fairphone (Gen. 6)" and + // would now caption the refresh's specs with the other phone's name. + Check(pp.main.View().find("a stock Fairphone, unmodified") != std::string_view::npos, + "refresh page: the spec lede names the brand, not a model"); + Check(pp.main.View().find("stock Fairphone (Gen. 6)") == std::string_view::npos, + "refresh page: and does not caption these specs as the Gen. 6's"); + Check(pp.main.View().find("product__photo") != std::string_view::npos, + "refresh page: the photo renders"); + Check(pp.meta.ogImage == "/fp6plus-pmos.jpg", + "refresh page: the link preview names its own photo"); + Check(pp.meta.jsonLd.find("\"image\":\"https://catcrafts.net/fp6plus-pmos.jpg\"") + != std::string::npos, + "refresh page: and the schema record carries it absolute"); + } + // The donation item: the shop's soft opening. Available (it is what - // the shop is open FOR) while the phone stays coming-soon; buyer + // the shop is open FOR) while both phones stay coming-soon; buyer // names the amount, so no price, no variants, no weight — and the // Buyable() price check is waived for exactly this shape. - const Product& don = products[1]; + const Product& don = products[2]; Check(don.slug == "donation" && don.donation, - "content: the second product is the donation item"); + "content: the donation item comes last"); Check(don.Buyable() && !don.ComingSoon(), - "content: the donation item is on sale while the phone is not"); + "content: the donation item is on sale while the phones are not"); Check(don.priceInclMinor == 0 && don.variants.empty() && don.shipWeightGrams == 0, "content: a donation has no price, no colours and no parcel"); @@ -206,6 +283,13 @@ void CatalogueContract() { "donation page: no price-hint script — nothing to convert"); } } + // The spec lede is "a stock <brand>, unmodified", so a spec sheet with no + // brand renders a sentence with a hole in it. Cheaper to assert than to + // branch around in the renderer. + for (const Product& any : products) { + Check(any.specs.empty() || !any.brand.empty(), + "content: a product with a spec sheet names its manufacturer", any.slug); + } Check(!Content::Projects().empty(), "content: projects present"); Check(Content::LegalPages().size() == 3, "content: three legal pages"); Check(Content::AboutPage().sections.size() >= 3 diff --git a/tests/ShouldStayScriptFree/main.cpp b/tests/ShouldStayScriptFree/main.cpp index 73108e7..9f1a48e 100644 --- a/tests/ShouldStayScriptFree/main.cpp +++ b/tests/ShouldStayScriptFree/main.cpp @@ -53,7 +53,7 @@ int main(int argc, char** argv) { // Placeholders are dev-only markers; one reaching production is a content // bug (an imprint that says PLACEHOLDER once shipped exactly that way). for (std::string_view pg : { "/legal/privacy", "/legal/terms", "/legal/imprint", - "/shop/fp6-pmos", "/financials" }) { + "/shop/fp6-pmos", "/shop/fp6plus-pmos", "/financials" }) { srv.BodyLacks(std::string(pg), "PLACEHOLDER", std::format("{} ships no placeholder markers", pg)); } @@ -65,7 +65,7 @@ int main(int argc, char** argv) { // rule. Pin the shape hard: inline only (no src=, so nothing external can // ever ride in under this exception), no network APIs, and the page must // remain complete without it — both prices in the markup regardless. - for (std::string_view pg : { "/shop", "/shop/fp6-pmos" }) { + for (std::string_view pg : { "/shop", "/shop/fp6-pmos", "/shop/fp6plus-pmos" }) { const std::string body = srv.Body(std::string(pg)); const std::size_t n = CountOccurrences(body, "<script>"); Check(n == 1, diff --git a/tools/dev.sh b/tools/dev.sh index 6d7e059..25457b6 100755 --- a/tools/dev.sh +++ b/tools/dev.sh @@ -230,7 +230,7 @@ cat <<EOF / home /shop product list - /shop/fp6-pmos product page + checkout (fake payment rail) + /shop/<slug> fp6-pmos, fp6plus-pmos, donation (fake payment rail) /projects the Crafter suite /posts fediverse posts /demos demo list; /demos/raytracer loads the wasm