diff --git a/pagex.config.js b/pagex.config.js index 30dbc8c..3437539 100644 --- a/pagex.config.js +++ b/pagex.config.js @@ -1,7 +1,7 @@ import {PagexTemplateType} from "pagex"; export default { - id: "voidcannon", + id: "blognutty", site_config: { title: "voidcannon-dev" }, diff --git a/src/content/articles/labscore-deprecation-notice/assets/header/background.webp b/src/content/articles/labscore-deprecation-notice/assets/header/background.webp new file mode 100644 index 0000000..56a8622 Binary files /dev/null and b/src/content/articles/labscore-deprecation-notice/assets/header/background.webp differ diff --git a/src/content/articles/labscore-deprecation-notice/content.md b/src/content/articles/labscore-deprecation-notice/content.md new file mode 100644 index 0000000..eaeb437 --- /dev/null +++ b/src/content/articles/labscore-deprecation-notice/content.md @@ -0,0 +1,34 @@ +## What's happening? + +The labsCore Discord Bot will be ceasing operation starting on the **1st of January 2026**. + +## What's next? + +labsCore will continue operating throughout 2025. From 2026 onward the public instance (`labsCore#5969`) will no longer +be available. + +> If you're looking for replacements, I can personally vouch for [Assyst](https://discord.com/oauth2/authorize?client_id=571661221854707713) +> and [NotSoBot](https://discord.com/oauth2/authorize?client_id=439205512425504771). + +The frontend (bot) source-code will be preserved in a read-only state on [GitLab](https://gitlab.com/bignutty/labscore), +the first-party backend (labscore-api) cannot not be trivially made available due to it relying on a plethora of private +and undocumented services. + +## Why now? + +The bot has always been a hobby project that I work on in my free time. In the recent months I've gradually felt +less and less motivation to dedicate any significant time towards contributing to the project. I don't feel comfortable +handing this project over to new maintainers, nor do I want to keep it running on "autopilot" until it eventually breaks +down and I disappear from the internet. + +labsCore is one of my oldest JavaScript-based projects, two and a half rewrites later it still exhibits many poor +conventions and bad decisions that I'd no longer make today. The entire codebase (both frontend and backend) are still +using CommonJS imports and exports as well as a giant mess of half-baked helper functions and utilities. I believe +another full rewrite of both the frontend and backend would be necessary to get it into a somewhat manageable state, +which is something I simply don't want to invest the time into. + + + help + For any further questions, feel free to reach out. + labsCore Discord + \ No newline at end of file diff --git a/src/content/articles/labscore-deprecation-notice/labscore-deprecation-notice.pagex.js b/src/content/articles/labscore-deprecation-notice/labscore-deprecation-notice.pagex.js new file mode 100644 index 0000000..44182dd --- /dev/null +++ b/src/content/articles/labscore-deprecation-notice/labscore-deprecation-notice.pagex.js @@ -0,0 +1,40 @@ +import {VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType} from "voidcannon"; + +import bignutty from "../../authors/bignutty.pagex.js"; + +import videogamesCollection from "../../collections/videogames.pagex.js"; +import testCollection from "../../collections/test.pagex.js"; +import featuredCollection from "../../collections/_featured.pagex.js"; + +import {PagexResourceTransformer} from "pagex"; +import {ThemeVariants} from "pagex_commons"; +import labsCoreMaintainersPagex from "../../authors/labsCoreMaintainers.pagex.js"; + +export default { + type: VoidcannonContentType.ARTICLE, + content: { + _transform: PagexResourceTransformer.MARKDOWN, + path: "./content.md" + }, + id: "labscore-deprecation-notice", + title: "labsCore End of Service Notice", + slug: "labscore-eos-notice", + abstract: "labsCore will be ceasing operations after 2025.", + created_at: 1757861297516, + theme: { + partial: true, + colors: { + light: "#00F562", + dark: "#00F562", + } + }, + header: { + type: VoidcannonHeaderType.IMAGE, + base: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/background.webp" + }, + color: "#0eb1f4" + }, + authors: [labsCoreMaintainersPagex] +} \ No newline at end of file diff --git a/src/content/articles/playground-empty/playground-empty.pagex.js b/src/content/articles/playground-empty/playground-empty.pagex.js index c6fa976..8eb2e7c 100644 --- a/src/content/articles/playground-empty/playground-empty.pagex.js +++ b/src/content/articles/playground-empty/playground-empty.pagex.js @@ -1,4 +1,4 @@ -import {VoidcannonContentType} from "voidcannon"; +import {VoidcannonContentType, VoidcannonVisibilityLevel} from "voidcannon"; import placeholder from "../../authors/placeholder.pagex.js"; @@ -13,5 +13,6 @@ export default { id: "playground-empty", title: "Playground Empty Article", created_at: 1762267626610, + visibility_level: VoidcannonVisibilityLevel.HIDDEN, authors: [placeholder] } \ No newline at end of file diff --git a/src/content/articles/playground-full/playground-full.pagex.js b/src/content/articles/playground-full/playground-full.pagex.js index 644b9e7..909ca4c 100644 --- a/src/content/articles/playground-full/playground-full.pagex.js +++ b/src/content/articles/playground-full/playground-full.pagex.js @@ -2,7 +2,7 @@ import { VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType, - VoidcannonEmojiStyle + VoidcannonEmojiStyle, VoidcannonVisibilityLevel } from "voidcannon"; import bignutty from "../../authors/bignutty.pagex.js"; @@ -21,6 +21,7 @@ export default { id: "playground-full", title: "Playground Test Article (full theme)", created_at: 0, + visibility_level: VoidcannonVisibilityLevel.HIDDEN, theme: { emoji_style: VoidcannonEmojiStyle.FLUENT_FLAT, partial: false, diff --git a/src/content/articles/playground-gm3/playground-gm3.pagex.js b/src/content/articles/playground-gm3/playground-gm3.pagex.js index 5fc8a3b..69477a3 100644 --- a/src/content/articles/playground-gm3/playground-gm3.pagex.js +++ b/src/content/articles/playground-gm3/playground-gm3.pagex.js @@ -2,7 +2,7 @@ import { VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType, - VoidcannonEmojiStyle + VoidcannonEmojiStyle, VoidcannonVisibilityLevel } from "voidcannon"; import bignutty from "../../authors/bignutty.pagex.js"; @@ -21,6 +21,7 @@ export default { id: "playground-gm3", title: "Playground Test Article (gm3 base theme)", created_at: 1757861297516, + visibility_level: VoidcannonVisibilityLevel.HIDDEN, theme: { emoji_style: VoidcannonEmojiStyle.TWITTER }, diff --git a/src/content/articles/playground-p3/playground-p3.pagex.js b/src/content/articles/playground-p3/playground-p3.pagex.js index 7dbf77b..1f2dcf8 100644 --- a/src/content/articles/playground-p3/playground-p3.pagex.js +++ b/src/content/articles/playground-p3/playground-p3.pagex.js @@ -1,4 +1,9 @@ -import {VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType} from "voidcannon"; +import { + VoidcannonHeaderLayoutType, + VoidcannonHeaderType, + VoidcannonContentType, + VoidcannonVisibilityLevel +} from "voidcannon"; import bignutty from "../../authors/bignutty.pagex.js"; @@ -19,6 +24,7 @@ export default { title: "Playground P3 Test Article", abstract: "An article about the 2024 video game 'Persona 3 Reload'.", created_at: 1757861297516, + visibility_level: VoidcannonVisibilityLevel.HIDDEN, theme: { colors: { light: "#0eb1f4", diff --git a/src/content/articles/playground-totk/playground-totk.pagex.js b/src/content/articles/playground-totk/playground-totk.pagex.js index af38a0a..c962f02 100644 --- a/src/content/articles/playground-totk/playground-totk.pagex.js +++ b/src/content/articles/playground-totk/playground-totk.pagex.js @@ -1,4 +1,9 @@ -import {VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType} from "voidcannon"; +import { + VoidcannonHeaderLayoutType, + VoidcannonHeaderType, + VoidcannonContentType, + VoidcannonVisibilityLevel +} from "voidcannon"; import bignutty from "../../authors/bignutty.pagex.js"; @@ -18,6 +23,7 @@ export default { title: "Playground Totk Test Article", created_at: 1757861297516, updated_at: 1757861297516, + visibility_level: VoidcannonVisibilityLevel.HIDDEN, theme: { // partial: true, colors: { diff --git a/src/content/articles/playground/playground.pagex.js b/src/content/articles/playground/playground.pagex.js index fcd7a23..926128b 100644 --- a/src/content/articles/playground/playground.pagex.js +++ b/src/content/articles/playground/playground.pagex.js @@ -2,7 +2,7 @@ import { VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType, - VoidcannonEmojiStyle + VoidcannonEmojiStyle, VoidcannonVisibilityLevel } from "voidcannon"; import bignutty from "../../authors/bignutty.pagex.js"; @@ -22,6 +22,7 @@ export default { id: "playground", title: "Playground Test Article", created_at: Date.now(), + visibility_level: VoidcannonVisibilityLevel.HIDDEN, abstract: "Article to quickly run tests for all pagex markdown features. Abstract has a lot of filler and padding to test if css limits work as intended across all surfaces.", author_abstract: "i swear i only played this game for the plot", cta: "View Test Article!", diff --git a/src/content/authors/assets/labscore.webp b/src/content/authors/assets/labscore.webp new file mode 100644 index 0000000..3559860 Binary files /dev/null and b/src/content/authors/assets/labscore.webp differ diff --git a/src/content/authors/labsCoreMaintainers.pagex.js b/src/content/authors/labsCoreMaintainers.pagex.js new file mode 100644 index 0000000..16f4a46 --- /dev/null +++ b/src/content/authors/labsCoreMaintainers.pagex.js @@ -0,0 +1,31 @@ +import {PagexResourceTransformer} from "pagex"; +import {VoidcannonContentType, VoidcannonEmojiStyle, VoidcannonLinksIconType} from "voidcannon"; + +export default { + type: VoidcannonContentType.AUTHOR, + id: "labscore-maintainers", + name: "labsCore Maintainers", + avatar: { + _transform: PagexResourceTransformer.MEDIA, + path: "/content/authors/assets/labscore.webp" + }, + theme: { + partial: true, + colors: { + light: "#00F562", + dark: "#00F562", + } + }, + links: [ + { + label: "Discord", + url: "https://discord.gg/fwU68KBH5d", + icon: VoidcannonLinksIconType.DISCORD + }, + { + label: "GitLab", + url: "https://gitlab.com/bignutty/labscore", + icon: VoidcannonLinksIconType.GITLAB, + } + ] +} \ No newline at end of file diff --git a/src/content/editorial/home-debug/content.md b/src/content/editorial/home-debug/content.md new file mode 100644 index 0000000..fa69ee5 --- /dev/null +++ b/src/content/editorial/home-debug/content.md @@ -0,0 +1,13 @@ + + comic_bubble + The site (and content) are still heavily work-in-progress! + + +# Voidcannon + +Voidcannon is a modern blogging frontend build on pagex, a static site generator. + +This site exists as both a functional example of what pagex can do, and my personal +playground to write about topics that interest me. + + \ No newline at end of file diff --git a/src/content/editorial/home-debug/home-debug.pagex.js b/src/content/editorial/home-debug/home-debug.pagex.js new file mode 100644 index 0000000..02a4b6f --- /dev/null +++ b/src/content/editorial/home-debug/home-debug.pagex.js @@ -0,0 +1,89 @@ +import { + VoidcannonContentType, + VoidcannonSectionType +} from "voidcannon"; + +import {PagexResourceTransformer} from "pagex"; +import CollectionContentTransformer from "voidcannon/src/transformers/CollectionContent.transformer.js"; +import RecentContentTransformer from "voidcannon/src/transformers/RecentContent.transformer.js"; +import ContentByIdentifierTransformer from "voidcannon/src/transformers/ContentByIdentifier.transformer.js"; + +import playground from "../../articles/playground/playground.pagex.js"; +import playgroundP3 from "../../articles/playground-p3/playground-p3.pagex.js"; +import playgroundEmpty from "../../articles/playground-empty/playground-empty.pagex.js"; + +import recentArticles from "../recent-articles/recent-articles.pagex.js"; + +export default { + type: VoidcannonContentType.EDITORIAL, + id: "voidcannon-index-debug", + slug: "home-debug", + name: "Voidcannon Home", + description: "Voidcannon Home", + color: null, + sections: [ + { + type: VoidcannonSectionType.STORY_HERO, + content: { + _transform: ContentByIdentifierTransformer, + content_ids: [ + playground.id, + playgroundEmpty.id, + playgroundP3.id, + ], + // TODO: implement this + content_types: [ + VoidcannonContentType.ARTICLE + ] + } + }, + { + type: VoidcannonSectionType.EDITORIAL, + content: { + _transform: PagexResourceTransformer.MARKDOWN, + path: "./content.md" + } + }, + { + type: VoidcannonSectionType.CONTENT_GRID, + content: { + _transform: CollectionContentTransformer, + collection_id: "test" + }, + label: "Testing Articles", + icon: "forklift" + }, + { + type: VoidcannonSectionType.EDITORIAL, + content: { + _transform: PagexResourceTransformer.MARKDOWN, + content: "" + } + }, + { + type: VoidcannonSectionType.CONTENT_GRID, + content: { + _transform: RecentContentTransformer, + amount: 15 + }, + label: "Recent Articles", + icon: "history", + cta: { + label: "View All", + target: { + type: VoidcannonContentType.EDITORIAL, + id: recentArticles.id + }, + } + }, + { + type: VoidcannonSectionType.CAROUSEL, + content: { + _transform: CollectionContentTransformer, + collection_id: "featured" + }, + label: "Various Articles", + target: "collections/featured" + }, + ] +} \ No newline at end of file diff --git a/src/content/editorial/home/content.md b/src/content/editorial/home/content.md index fa69ee5..60a5cd4 100644 --- a/src/content/editorial/home/content.md +++ b/src/content/editorial/home/content.md @@ -1,13 +1,6 @@ +# blognutty + comic_bubble - The site (and content) are still heavily work-in-progress! - - -# Voidcannon - -Voidcannon is a modern blogging frontend build on pagex, a static site generator. - -This site exists as both a functional example of what pagex can do, and my personal -playground to write about topics that interest me. - - \ No newline at end of file + This site is still work-in-progress! + \ No newline at end of file diff --git a/src/content/editorial/home/home.pagex.js b/src/content/editorial/home/home.pagex.js index 69482b4..6c77d58 100644 --- a/src/content/editorial/home/home.pagex.js +++ b/src/content/editorial/home/home.pagex.js @@ -16,27 +16,12 @@ import recentArticles from "../recent-articles/recent-articles.pagex.js"; export default { type: VoidcannonContentType.EDITORIAL, - id: "voidcannon-index", + id: "blognutty-index", slug: "index", - name: "Voidcannon Home", - description: "Voidcannon Home", + name: "/home", + description: "blognutty home", color: null, sections: [ - { - type: VoidcannonSectionType.STORY_HERO, - content: { - _transform: ContentByIdentifierTransformer, - content_ids: [ - playground.id, - playgroundEmpty.id, - playgroundP3.id, - ], - // TODO: implement this - content_types: [ - VoidcannonContentType.ARTICLE - ] - } - }, { type: VoidcannonSectionType.EDITORIAL, content: { @@ -44,27 +29,11 @@ export default { path: "./content.md" } }, - { - type: VoidcannonSectionType.CONTENT_GRID, - content: { - _transform: CollectionContentTransformer, - collection_id: "test" - }, - label: "Testing Articles", - icon: "forklift" - }, - { - type: VoidcannonSectionType.EDITORIAL, - content: { - _transform: PagexResourceTransformer.MARKDOWN, - content: "" - } - }, { type: VoidcannonSectionType.CONTENT_GRID, content: { _transform: RecentContentTransformer, - amount: 15 + amount: 9 }, label: "Recent Articles", icon: "history", @@ -75,15 +44,6 @@ export default { id: recentArticles.id }, } - }, - { - type: VoidcannonSectionType.CAROUSEL, - content: { - _transform: CollectionContentTransformer, - collection_id: "featured" - }, - label: "Various Articles", - target: "collections/featured" - }, + } ] } \ No newline at end of file diff --git a/voidcannon b/voidcannon index d3eb751..dd03da6 160000 --- a/voidcannon +++ b/voidcannon @@ -1 +1 @@ -Subproject commit d3eb75154aa245d7f2009effeac18f2f215c33e7 +Subproject commit dd03da61adf27636d7fc1ce49b0fd16481f5c1cc