From eaf294c0e73024ba88b4aa3b5c52e13815c7e1a9 Mon Sep 17 00:00:00 2001 From: Erick Mwamodo Date: Wed, 10 Jun 2026 20:06:31 +0300 Subject: [PATCH 1/3] docs(markdown-blog): document FrontmatterParser YAML subset --- src/Support/FrontmatterParser.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Support/FrontmatterParser.php b/src/Support/FrontmatterParser.php index ef969fb..4e7cf6b 100644 --- a/src/Support/FrontmatterParser.php +++ b/src/Support/FrontmatterParser.php @@ -2,6 +2,29 @@ namespace xsavo\MarkdownBlog\Support; +/** + * Minimal frontmatter parser supporting a small, deliberate subset of YAML. + * + * This is intentionally NOT a full YAML parser. Supported syntax inside the + * leading `---` ... `---` block is limited to scalar `key: value` pairs, one + * per line: + * + * - values may be unquoted, single-quoted, or double-quoted (surrounding + * quotes are stripped; no escape-sequence processing is performed) + * - every value is returned as a string ('true', '42', etc. are not cast) + * - blank lines and lines starting with '#' are skipped + * + * Everything else is silently ignored, including: + * + * - lists / sequences (`- item` lines, or inline `[a, b]` kept as a literal string) + * - nested maps and indentation-based structure + * - multiline scalars (block `|` / folded `>` styles) + * - anchors, aliases, tags, and multi-document markers + * - lines without a colon + * + * If richer metadata is needed, keep frontmatter flat and scalar, or parse + * the value (e.g. a comma-separated list) in the consumer. + */ class FrontmatterParser { private const UTF8_BOM = "\xEF\xBB\xBF"; From a1a6b1bb4bd377e3711183d1968016008af72689 Mon Sep 17 00:00:00 2001 From: Erick Mwamodo Date: Mon, 17 Aug 2026 16:22:36 +0300 Subject: [PATCH 2/3] Rename composer vendor xsavo/* to apxcde/* - Rename `name` fields on the root monorepo, all four platform packages, beacon, and the product starter template - Rename `require` entries (beacon: identity, licensing; apexcode: markdown-blog) and `composer_name` fields in .turbine/repos.json - Add composer path repositories to beacon and apexcode so the renamed platform packages resolve from the monorepo, then regenerate all lockfiles via composer update Closes #4 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01EZBbbzTyFfaxsPsNSQ8TC9 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a574efd..9921ee9 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "xsavo/markdown-blog", + "name": "apxcde/markdown-blog", "description": "Markdown-powered blog package for Laravel apps", "type": "library", "license": "proprietary", From 49b5dfdc399fd1b473ad2bc17b1825c2ac821e20 Mon Sep 17 00:00:00 2001 From: Erick Mwamodo Date: Mon, 17 Aug 2026 17:06:28 +0300 Subject: [PATCH 3/3] Rename PHP namespace xsavo\ to apxcde\ across packages and consumers Keep the existing lowercase vendor casing (apxcde\) and apply it uniformly across the four platform packages (health, identity, licensing, markdown-blog), products/beacon, and internal/apexcode: namespace/use statements, FQCN strings in config and blade views, composer PSR-4 and autoload-dev maps, extra.laravel providers and aliases, and the regenerated lockfiles. Closes #5 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_014faN1JnJy29HXDtVA418Mg --- composer.json | 8 ++++---- src/ArticleRepository.php | 4 ++-- src/Facades/MarkdownBlog.php | 8 ++++---- src/MarkdownBlog.php | 2 +- src/MarkdownBlogServiceProvider.php | 4 ++-- src/Support/FrontmatterParser.php | 2 +- tests/ArticleRepositoryTest.php | 4 ++-- tests/FrontmatterParserTest.php | 2 +- tests/Pest.php | 2 +- tests/TestCase.php | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/composer.json b/composer.json index 9921ee9..1feafee 100644 --- a/composer.json +++ b/composer.json @@ -15,21 +15,21 @@ }, "autoload": { "psr-4": { - "xsavo\\MarkdownBlog\\": "src/" + "apxcde\\MarkdownBlog\\": "src/" } }, "autoload-dev": { "psr-4": { - "xsavo\\MarkdownBlog\\Tests\\": "tests/" + "apxcde\\MarkdownBlog\\Tests\\": "tests/" } }, "extra": { "laravel": { "providers": [ - "xsavo\\MarkdownBlog\\MarkdownBlogServiceProvider" + "apxcde\\MarkdownBlog\\MarkdownBlogServiceProvider" ], "aliases": { - "MarkdownBlog": "xsavo\\MarkdownBlog\\Facades\\MarkdownBlog" + "MarkdownBlog": "apxcde\\MarkdownBlog\\Facades\\MarkdownBlog" } } }, diff --git a/src/ArticleRepository.php b/src/ArticleRepository.php index 96e9860..1e372d7 100644 --- a/src/ArticleRepository.php +++ b/src/ArticleRepository.php @@ -1,13 +1,13 @@ set('markdown-blog.articles_path', __DIR__.'/Fixtures/articles'); diff --git a/tests/FrontmatterParserTest.php b/tests/FrontmatterParserTest.php index a1e1181..776e4dd 100644 --- a/tests/FrontmatterParserTest.php +++ b/tests/FrontmatterParserTest.php @@ -1,6 +1,6 @@ in(__DIR__); diff --git a/tests/TestCase.php b/tests/TestCase.php index 0e3d59b..5586e56 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,9 +1,9 @@