Migrate to crafter-build project.cpp and restructure views
- Replace project.json + run.sh with a C++ project.cpp build descriptor (crafter-build), targeting wasm32-wasip1 with the Crafter.Graphics dep - Add Catcrafts-Views implementation; drop Catcrafts-Component - Add catcrafts-head.js (sets <title>/<link> tags at runtime) - Update Blog/Root/main modules, README, and favicon Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d87c408712
commit
13a12c2a2c
15 changed files with 227 additions and 126 deletions
|
|
@ -1,13 +1,13 @@
|
|||
/*
|
||||
catcrafts.net
|
||||
Copyright (C) 2025 Catcrafts
|
||||
Copyright (C) 2026 Catcrafts
|
||||
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
No permission is granted to copy, modify, distribute, or create derivative works.
|
||||
*/
|
||||
|
||||
export module Catcrafts:Blog;
|
||||
import Crafter.CppDOM;
|
||||
import Crafter.Graphics;
|
||||
import std;
|
||||
using namespace Crafter;
|
||||
|
||||
|
|
@ -22,8 +22,8 @@ export namespace Catcrafts {
|
|||
{
|
||||
"In WASM, Exit doesn't mean done.",
|
||||
"in-wasm-exit-doesnt-mean-done",
|
||||
"2025-11-14",
|
||||
R"(So if anyone looked at the source code for this website pefore this post you would have seen that every is allocated with new, for example this very blog was defined as <code>std::vector<BlogPost> posts = new std::vector<BlogPost>{...</code><br><br>
|
||||
"2026-11-14",
|
||||
R"(So if anyone looked at the source code for this website pefore this post you would have seen that everything was allocated with new, for example this very blog was defined as <code>std::vector<BlogPost> posts = new std::vector<BlogPost>{...};</code><br><br>
|
||||
|
||||
Reason for this was that everything became corrupted when callbacking from JS, not knowing sure as to why this was the fastest solution, but after debugging the problem became clear.<br><br>
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ export namespace Catcrafts {
|
|||
|
||||
This caused all the memory corruption errors since everything was destructed.<br><br>
|
||||
|
||||
Luckily this is a very simple fix of adding <code>-fno-c++-static-destructors</code>, and things like this are is also the reason i use clang instead of gcc.<br><br>
|
||||
Luckily this is a very simple fix of adding <code>-fno-c++-static-destructors</code>, and the ease of things like this is also one of the reasons i use clang instead of gcc.<br><br>
|
||||
|
||||
So now all examples and this site have been updated to use normal variables again.<br><br>
|
||||
|
||||
|
|
@ -40,12 +40,12 @@ export namespace Catcrafts {
|
|||
{
|
||||
"Hello World!",
|
||||
"hello-world",
|
||||
"2025-11-12",
|
||||
"2026-11-12",
|
||||
R"(Welcome to catcrafts.net!<br><br>
|
||||
Here we believe optimization is everything and C++ is a gift from god.<br>
|
||||
This blog will mostly be dedicated to random tidbits i come across while working on my Crafter series of libraries.<br><br>
|
||||
|
||||
Like this website which is fully written in C++ using the Crafter.CppDOM library.<br>
|
||||
Like this website which is fully written in C++ using the Crafter.Graphics library.<br>
|
||||
And source available too!<br>
|
||||
<a href="https://forgejo.catcrafts.net/Catcrafts/catcrafts.net">https://forgejo.catcrafts.net/Catcrafts/catcrafts.net<a>)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
catcrafts.net
|
||||
Copyright (C) 2025 Catcrafts
|
||||
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
No permission is granted to copy, modify, distribute, or create derivative works.
|
||||
*/
|
||||
|
||||
export module Catcrafts:Component;
|
||||
using namespace Crafter;
|
||||
|
||||
export namespace Catcrafts {
|
||||
class Component {
|
||||
std::string render();
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
/*
|
||||
catcrafts.net
|
||||
Copyright (C) 2025 Catcrafts
|
||||
Copyright (C) 2026 Catcrafts
|
||||
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
No permission is granted to copy, modify, distribute, or create derivative works.
|
||||
*/
|
||||
|
||||
export module Catcrafts:Root;
|
||||
import Crafter.CppDOM;
|
||||
import Crafter.Graphics;
|
||||
import std;
|
||||
using namespace Crafter;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,48 +1,27 @@
|
|||
/*
|
||||
catcrafts.net
|
||||
Copyright (C) 2025 Catcrafts
|
||||
Copyright (C) 2026 Catcrafts
|
||||
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
No permission is granted to copy, modify, distribute, or create derivative works.
|
||||
*/
|
||||
|
||||
export module Catcrafts:Views;
|
||||
import Crafter.CppDOM;
|
||||
import Crafter.Graphics;
|
||||
import std;
|
||||
using namespace Crafter;
|
||||
|
||||
export namespace Catcrafts {
|
||||
HtmlElementPtr body("body", R"(
|
||||
<header>
|
||||
<div class="nav-container">
|
||||
<a href="/" class="logo">🐱 Catcrafts</a>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a id="blog-nav-button" style="cursor: pointer;" class="active">Blog</a></li>
|
||||
<li><a href="https://forgejo.catcrafts.net/Catcrafts/">Forgejo</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
// Builds the persistent page chrome (header / <main id="main"> / footer)
|
||||
// under <body>. Owns the root element for the page's lifetime so its
|
||||
// children don't get yanked out of the DOM. Must be called from main()
|
||||
// — the Crafter.Graphics Dom bridge is only safe to use after wasm
|
||||
// instantiation hands control to user code.
|
||||
void InitializePage();
|
||||
|
||||
<main id="main"></main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-content">
|
||||
<div class="footer-links">
|
||||
Powered by Crafter.CppDOM, Running near native with WASM!
|
||||
<a href="https://forgejo.catcrafts.net/Catcrafts/catcrafts.net">View source</a>
|
||||
</div>
|
||||
<p>© 2025 Catcrafts®. All rights reserved. Crafter® and Catcrafts® are registered trademarks with the EUIPO</p>
|
||||
</div>
|
||||
</footer>)");
|
||||
|
||||
HtmlElementPtr head("head", R"(
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Catcrafts.net</title>
|
||||
<link rel="stylesheet" href="/styles.css">
|
||||
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
|
||||
)");
|
||||
|
||||
HtmlElementPtr main("main");
|
||||
// Per-render scratch ref to the <main> content container created by
|
||||
// InitializePage(). Looking it up fresh on every call costs one
|
||||
// document.getElementById; in return we don't have to thread a long-lived
|
||||
// reference across module boundaries.
|
||||
inline Dom::HtmlElementPtr MainContent() { return Dom::HtmlElementPtr("main"); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
catcrafts.net
|
||||
Copyright (C) 2025 Catcrafts
|
||||
Copyright (C) 2026 Catcrafts
|
||||
|
||||
The source code of this website is made available for viewing purposes only.
|
||||
No permission is granted to copy, modify, distribute, or create derivative works.
|
||||
|
|
|
|||
Loading…
Reference in a new issue