This commit is contained in:
parent
38688a68f5
commit
284f8d3e49
2 changed files with 12 additions and 12 deletions
|
|
@ -40,7 +40,7 @@ export const std::vector<Product>& Products() {
|
||||||
static const std::vector<Product> products = [] {
|
static const std::vector<Product> products = [] {
|
||||||
Product p;
|
Product p;
|
||||||
p.slug = "fp6-pmos";
|
p.slug = "fp6-pmos";
|
||||||
p.name = "Fairphone 6 with postmarketOS";
|
p.name = "The Fairphone (Gen. 6) with postmarketOS";
|
||||||
p.brand = "Fairphone";
|
p.brand = "Fairphone";
|
||||||
p.tagline = "A repairable Android phone, reflashed to run mainline Linux with a working IMS/VoLTE stack.";
|
p.tagline = "A repairable Android phone, reflashed to run mainline Linux with a working IMS/VoLTE stack.";
|
||||||
// Launch day is this one line: "coming-soon" -> "available". The page
|
// Launch day is this one line: "coming-soon" -> "available". The page
|
||||||
|
|
@ -50,7 +50,7 @@ export const std::vector<Product>& Products() {
|
||||||
p.shipEuMinor = 2500; // Sendcloud table overrides
|
p.shipEuMinor = 2500; // Sendcloud table overrides
|
||||||
p.shipWorldMinor = 5500; // these per country
|
p.shipWorldMinor = 5500; // these per country
|
||||||
p.image = "/fp6-pmos.jpg";
|
p.image = "/fp6-pmos.jpg";
|
||||||
p.summary = "A Fairphone 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.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 = "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.";
|
||||||
// The one claim on this page that is about safety rather than
|
// The one claim on this page that is about safety rather than
|
||||||
// features. It stays until emergency calling has been verified on a
|
// features. It stays until emergency calling has been verified on a
|
||||||
|
|
@ -65,7 +65,7 @@ export const std::vector<Product>& Products() {
|
||||||
{ "white", "White", 60488 + kMarkupMinor },
|
{ "white", "White", 60488 + kMarkupMinor },
|
||||||
};
|
};
|
||||||
// The hardware, as Fairphone specifies it — this is a stock Fairphone
|
// The hardware, as Fairphone specifies it — this is a stock Fairphone
|
||||||
// 6, so its spec sheet is this product's spec sheet.
|
// (Gen. 6), so its spec sheet is this product's spec sheet.
|
||||||
p.specs = {
|
p.specs = {
|
||||||
{ "Display", "6.31″ OLED, 2484 × 1116 (FHD+), up to 120 Hz, Gorilla Glass 7i" },
|
{ "Display", "6.31″ OLED, 2484 × 1116 (FHD+), up to 120 Hz, Gorilla Glass 7i" },
|
||||||
{ "Processor", "Qualcomm Snapdragon 7s Gen 3, Adreno 810 GPU" },
|
{ "Processor", "Qualcomm Snapdragon 7s Gen 3, Adreno 810 GPU" },
|
||||||
|
|
@ -95,7 +95,7 @@ export const std::vector<Project>& Projects() {
|
||||||
static const std::vector<Project> projects = {
|
static const std::vector<Project> projects = {
|
||||||
{
|
{
|
||||||
"imsd",
|
"imsd",
|
||||||
"IMS/VoLTE for the Fairphone 6's Qualcomm modem: calls on a mainline-Linux phone.",
|
"IMS/VoLTE for the Qualcomm modem in the Fairphone (Gen. 6): calls on a mainline-Linux phone.",
|
||||||
"https://forgejo.catcrafts.net/Catcrafts/imsd",
|
"https://forgejo.catcrafts.net/Catcrafts/imsd",
|
||||||
"C++",
|
"C++",
|
||||||
true,
|
true,
|
||||||
|
|
@ -181,7 +181,7 @@ export const LegalPage& AboutPage() {
|
||||||
} },
|
} },
|
||||||
{ "The work",
|
{ "The work",
|
||||||
{
|
{
|
||||||
"imsd is the IMS/VoLTE implementation that makes phone calls work on mainline-Linux phones, written from scratch and tested on a live Dutch network. It is the reason a Fairphone 6 running postmarketOS can ring. Jorijn works on the Fairphone 6's mainline Linux support and upstreams it into the kernel: sensor bindings, Qualcomm audio, the unglamorous patches that make a phone a phone.",
|
"imsd is the IMS/VoLTE implementation that makes phone calls work on mainline-Linux phones, written from scratch and tested on a live Dutch network. It is the reason a Fairphone (Gen. 6) running postmarketOS can ring. Jorijn works on mainline Linux support for the Fairphone (Gen. 6) and upstreams it into the kernel: sensor bindings, Qualcomm audio, the unglamorous patches that make a phone a phone.",
|
||||||
"The Crafter suite is the other half: a C++ build system with no DSL, a graphics engine that ray-traces natively on Vulkan and in the browser through WebGPU, a QUIC and HTTP/3 networking stack, and more. This website is built with all of it. The same C++ renders each page on the server and again in your browser as WebAssembly.",
|
"The Crafter suite is the other half: a C++ build system with no DSL, a graphics engine that ray-traces natively on Vulkan and in the browser through WebGPU, a QUIC and HTTP/3 networking stack, and more. This website is built with all of it. The same C++ renders each page on the server and again in your browser as WebAssembly.",
|
||||||
"And of course all the upstreaming work that comes along: Catcrafts will upstream everything it makes whenever possible.",
|
"And of course all the upstreaming work that comes along: Catcrafts will upstream everything it makes whenever possible.",
|
||||||
} },
|
} },
|
||||||
|
|
|
||||||
|
|
@ -288,8 +288,8 @@ export RenderedPage RenderHome(std::span<const Project> projects,
|
||||||
R"("founder":{"@type":"Person","@id":"https://catcrafts.net/about#person",)"
|
R"("founder":{"@type":"Person","@id":"https://catcrafts.net/about#person",)"
|
||||||
R"("name":"Jorijn van der Graaf","url":"https://catcrafts.net/about"},)"
|
R"("name":"Jorijn van der Graaf","url":"https://catcrafts.net/about"},)"
|
||||||
R"("description":"Catcrafts makes accessible, open-source software and hardware: )"
|
R"("description":"Catcrafts makes accessible, open-source software and hardware: )"
|
||||||
R"(the Crafter C++ suite, the imsd IMS/VoLTE implementation, and Fairphone 6 )"
|
R"(the Crafter C++ suite, the imsd IMS/VoLTE implementation, and Fairphone )"
|
||||||
R"(handsets sold with postmarketOS preinstalled.",)"
|
R"((Gen. 6) handsets sold with postmarketOS preinstalled.",)"
|
||||||
R"("sameAs":["https://forgejo.catcrafts.net/Catcrafts/"]},)"
|
R"("sameAs":["https://forgejo.catcrafts.net/Catcrafts/"]},)"
|
||||||
R"({"@type":"WebSite","@id":"https://catcrafts.net/#website",)"
|
R"({"@type":"WebSite","@id":"https://catcrafts.net/#website",)"
|
||||||
R"("name":"Catcrafts","alternateName":["Catcrafts.net","CatCrafts"],)"
|
R"("name":"Catcrafts","alternateName":["Catcrafts.net","CatCrafts"],)"
|
||||||
|
|
@ -323,7 +323,7 @@ export RenderedPage RenderProjects(std::span<const Project> projects) {
|
||||||
page.meta.title = "Projects — Catcrafts";
|
page.meta.title = "Projects — Catcrafts";
|
||||||
page.meta.description =
|
page.meta.description =
|
||||||
"The Crafter suite: a C++ build system, graphics engine, networking "
|
"The Crafter suite: a C++ build system, graphics engine, networking "
|
||||||
"stack, and an IMS/VoLTE implementation for the Fairphone 6.";
|
"stack, and an IMS/VoLTE implementation for the Fairphone (Gen. 6).";
|
||||||
page.meta.canonical = "/projects";
|
page.meta.canonical = "/projects";
|
||||||
page.main = Format(
|
page.main = Format(
|
||||||
R"(<header class="page-header">)"
|
R"(<header class="page-header">)"
|
||||||
|
|
@ -619,8 +619,8 @@ export RenderedPage RenderShop(std::span<const Product> products, const Rates& r
|
||||||
RenderedPage page;
|
RenderedPage page;
|
||||||
page.meta.title = "Shop — Catcrafts";
|
page.meta.title = "Shop — Catcrafts";
|
||||||
page.meta.description =
|
page.meta.description =
|
||||||
"Fairphone 6 handsets reflashed to run postmarketOS, with the IMS/VoLTE "
|
"Fairphone (Gen. 6) handsets reflashed to run postmarketOS, with the "
|
||||||
"stack Catcrafts maintains.";
|
"IMS/VoLTE stack Catcrafts maintains.";
|
||||||
page.meta.canonical = "/shop";
|
page.meta.canonical = "/shop";
|
||||||
page.meta.geoPriceHint = true;
|
page.meta.geoPriceHint = true;
|
||||||
// The category page as typed data: an ItemList naming each product page.
|
// The category page as typed data: an ItemList naming each product page.
|
||||||
|
|
@ -1048,8 +1048,8 @@ export RenderedPage RenderProduct(const Product& product,
|
||||||
R"({})"
|
R"({})"
|
||||||
R"(<section class="section">)"
|
R"(<section class="section">)"
|
||||||
R"(<h2 class="section__title">Specifications</h2>)"
|
R"(<h2 class="section__title">Specifications</h2>)"
|
||||||
R"(<p class="section__lede">The hardware is a stock Fairphone 6, )"
|
R"(<p class="section__lede">The hardware is a stock Fairphone )"
|
||||||
R"(unmodified. Fairphone's spec sheet is this product's spec sheet, )"
|
R"((Gen. 6), unmodified. Fairphone's spec sheet is this product's spec sheet, )"
|
||||||
R"(and all of it works under postmarketOS. The one caveat is the )"
|
R"(and all of it works under postmarketOS. The one caveat is the )"
|
||||||
R"(emergency-calling warning above.</p>)"
|
R"(emergency-calling warning above.</p>)"
|
||||||
R"(<table class="spec-table"><tbody>{}</tbody></table>)"
|
R"(<table class="spec-table"><tbody>{}</tbody></table>)"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue