content: lc-eos
voidcannon: implement visibility_level for content, fixes and tweaks
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import {PagexTemplateType} from "pagex";
|
import {PagexTemplateType} from "pagex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
id: "voidcannon",
|
id: "blognutty",
|
||||||
site_config: {
|
site_config: {
|
||||||
title: "voidcannon-dev"
|
title: "voidcannon-dev"
|
||||||
},
|
},
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
34
src/content/articles/labscore-deprecation-notice/content.md
Normal file
34
src/content/articles/labscore-deprecation-notice/content.md
Normal file
@@ -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.
|
||||||
|
|
||||||
|
<voidcannon-cta layout="button">
|
||||||
|
<md-icon slot="icon">help</md-icon>
|
||||||
|
For any further questions, feel free to reach out.
|
||||||
|
<md-text-button href="https://discord.gg/fwU68KBH5d" target="_blank" slot="button">labsCore Discord</md-text-button>
|
||||||
|
</voidcannon-cta>
|
||||||
@@ -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]
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import {VoidcannonContentType} from "voidcannon";
|
import {VoidcannonContentType, VoidcannonVisibilityLevel} from "voidcannon";
|
||||||
|
|
||||||
import placeholder from "../../authors/placeholder.pagex.js";
|
import placeholder from "../../authors/placeholder.pagex.js";
|
||||||
|
|
||||||
@@ -13,5 +13,6 @@ export default {
|
|||||||
id: "playground-empty",
|
id: "playground-empty",
|
||||||
title: "Playground Empty Article",
|
title: "Playground Empty Article",
|
||||||
created_at: 1762267626610,
|
created_at: 1762267626610,
|
||||||
|
visibility_level: VoidcannonVisibilityLevel.HIDDEN,
|
||||||
authors: [placeholder]
|
authors: [placeholder]
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ import {
|
|||||||
VoidcannonHeaderLayoutType,
|
VoidcannonHeaderLayoutType,
|
||||||
VoidcannonHeaderType,
|
VoidcannonHeaderType,
|
||||||
VoidcannonContentType,
|
VoidcannonContentType,
|
||||||
VoidcannonEmojiStyle
|
VoidcannonEmojiStyle, VoidcannonVisibilityLevel
|
||||||
} from "voidcannon";
|
} from "voidcannon";
|
||||||
|
|
||||||
import bignutty from "../../authors/bignutty.pagex.js";
|
import bignutty from "../../authors/bignutty.pagex.js";
|
||||||
@@ -21,6 +21,7 @@ export default {
|
|||||||
id: "playground-full",
|
id: "playground-full",
|
||||||
title: "Playground Test Article (full theme)",
|
title: "Playground Test Article (full theme)",
|
||||||
created_at: 0,
|
created_at: 0,
|
||||||
|
visibility_level: VoidcannonVisibilityLevel.HIDDEN,
|
||||||
theme: {
|
theme: {
|
||||||
emoji_style: VoidcannonEmojiStyle.FLUENT_FLAT,
|
emoji_style: VoidcannonEmojiStyle.FLUENT_FLAT,
|
||||||
partial: false,
|
partial: false,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {
|
|||||||
VoidcannonHeaderLayoutType,
|
VoidcannonHeaderLayoutType,
|
||||||
VoidcannonHeaderType,
|
VoidcannonHeaderType,
|
||||||
VoidcannonContentType,
|
VoidcannonContentType,
|
||||||
VoidcannonEmojiStyle
|
VoidcannonEmojiStyle, VoidcannonVisibilityLevel
|
||||||
} from "voidcannon";
|
} from "voidcannon";
|
||||||
|
|
||||||
import bignutty from "../../authors/bignutty.pagex.js";
|
import bignutty from "../../authors/bignutty.pagex.js";
|
||||||
@@ -21,6 +21,7 @@ export default {
|
|||||||
id: "playground-gm3",
|
id: "playground-gm3",
|
||||||
title: "Playground Test Article (gm3 base theme)",
|
title: "Playground Test Article (gm3 base theme)",
|
||||||
created_at: 1757861297516,
|
created_at: 1757861297516,
|
||||||
|
visibility_level: VoidcannonVisibilityLevel.HIDDEN,
|
||||||
theme: {
|
theme: {
|
||||||
emoji_style: VoidcannonEmojiStyle.TWITTER
|
emoji_style: VoidcannonEmojiStyle.TWITTER
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
import {VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType} from "voidcannon";
|
import {
|
||||||
|
VoidcannonHeaderLayoutType,
|
||||||
|
VoidcannonHeaderType,
|
||||||
|
VoidcannonContentType,
|
||||||
|
VoidcannonVisibilityLevel
|
||||||
|
} from "voidcannon";
|
||||||
|
|
||||||
import bignutty from "../../authors/bignutty.pagex.js";
|
import bignutty from "../../authors/bignutty.pagex.js";
|
||||||
|
|
||||||
@@ -19,6 +24,7 @@ export default {
|
|||||||
title: "Playground P3 Test Article",
|
title: "Playground P3 Test Article",
|
||||||
abstract: "An article about the 2024 video game 'Persona 3 Reload'.",
|
abstract: "An article about the 2024 video game 'Persona 3 Reload'.",
|
||||||
created_at: 1757861297516,
|
created_at: 1757861297516,
|
||||||
|
visibility_level: VoidcannonVisibilityLevel.HIDDEN,
|
||||||
theme: {
|
theme: {
|
||||||
colors: {
|
colors: {
|
||||||
light: "#0eb1f4",
|
light: "#0eb1f4",
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
import {VoidcannonHeaderLayoutType, VoidcannonHeaderType, VoidcannonContentType} from "voidcannon";
|
import {
|
||||||
|
VoidcannonHeaderLayoutType,
|
||||||
|
VoidcannonHeaderType,
|
||||||
|
VoidcannonContentType,
|
||||||
|
VoidcannonVisibilityLevel
|
||||||
|
} from "voidcannon";
|
||||||
|
|
||||||
import bignutty from "../../authors/bignutty.pagex.js";
|
import bignutty from "../../authors/bignutty.pagex.js";
|
||||||
|
|
||||||
@@ -18,6 +23,7 @@ export default {
|
|||||||
title: "Playground Totk Test Article",
|
title: "Playground Totk Test Article",
|
||||||
created_at: 1757861297516,
|
created_at: 1757861297516,
|
||||||
updated_at: 1757861297516,
|
updated_at: 1757861297516,
|
||||||
|
visibility_level: VoidcannonVisibilityLevel.HIDDEN,
|
||||||
theme: {
|
theme: {
|
||||||
// partial: true,
|
// partial: true,
|
||||||
colors: {
|
colors: {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {
|
|||||||
VoidcannonHeaderLayoutType,
|
VoidcannonHeaderLayoutType,
|
||||||
VoidcannonHeaderType,
|
VoidcannonHeaderType,
|
||||||
VoidcannonContentType,
|
VoidcannonContentType,
|
||||||
VoidcannonEmojiStyle
|
VoidcannonEmojiStyle, VoidcannonVisibilityLevel
|
||||||
} from "voidcannon";
|
} from "voidcannon";
|
||||||
|
|
||||||
import bignutty from "../../authors/bignutty.pagex.js";
|
import bignutty from "../../authors/bignutty.pagex.js";
|
||||||
@@ -22,6 +22,7 @@ export default {
|
|||||||
id: "playground",
|
id: "playground",
|
||||||
title: "Playground Test Article",
|
title: "Playground Test Article",
|
||||||
created_at: Date.now(),
|
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.",
|
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",
|
author_abstract: "i swear i only played this game for the plot",
|
||||||
cta: "View Test Article!",
|
cta: "View Test Article!",
|
||||||
|
|||||||
BIN
src/content/authors/assets/labscore.webp
Normal file
BIN
src/content/authors/assets/labscore.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
31
src/content/authors/labsCoreMaintainers.pagex.js
Normal file
31
src/content/authors/labsCoreMaintainers.pagex.js
Normal file
@@ -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,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
13
src/content/editorial/home-debug/content.md
Normal file
13
src/content/editorial/home-debug/content.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<voidcannon-cta>
|
||||||
|
<md-icon slot="icon">comic_bubble</md-icon>
|
||||||
|
The site (and content) are still heavily work-in-progress!
|
||||||
|
</voidcannon-cta>
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
<gm3-wavy-divider></gm3-wavy-divider>
|
||||||
89
src/content/editorial/home-debug/home-debug.pagex.js
Normal file
89
src/content/editorial/home-debug/home-debug.pagex.js
Normal file
@@ -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: "<gm3-wavy-divider></gm3-wavy-divider>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,13 +1,6 @@
|
|||||||
|
# blognutty
|
||||||
|
|
||||||
<voidcannon-cta>
|
<voidcannon-cta>
|
||||||
<md-icon slot="icon">comic_bubble</md-icon>
|
<md-icon slot="icon">comic_bubble</md-icon>
|
||||||
The site (and content) are still heavily work-in-progress!
|
This site is still work-in-progress!
|
||||||
</voidcannon-cta>
|
</voidcannon-cta>
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
<gm3-wavy-divider></gm3-wavy-divider>
|
|
||||||
@@ -16,27 +16,12 @@ import recentArticles from "../recent-articles/recent-articles.pagex.js";
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
type: VoidcannonContentType.EDITORIAL,
|
type: VoidcannonContentType.EDITORIAL,
|
||||||
id: "voidcannon-index",
|
id: "blognutty-index",
|
||||||
slug: "index",
|
slug: "index",
|
||||||
name: "Voidcannon Home",
|
name: "/home",
|
||||||
description: "Voidcannon Home",
|
description: "blognutty home",
|
||||||
color: null,
|
color: null,
|
||||||
sections: [
|
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,
|
type: VoidcannonSectionType.EDITORIAL,
|
||||||
content: {
|
content: {
|
||||||
@@ -44,27 +29,11 @@ export default {
|
|||||||
path: "./content.md"
|
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: "<gm3-wavy-divider></gm3-wavy-divider>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: VoidcannonSectionType.CONTENT_GRID,
|
type: VoidcannonSectionType.CONTENT_GRID,
|
||||||
content: {
|
content: {
|
||||||
_transform: RecentContentTransformer,
|
_transform: RecentContentTransformer,
|
||||||
amount: 15
|
amount: 9
|
||||||
},
|
},
|
||||||
label: "Recent Articles",
|
label: "Recent Articles",
|
||||||
icon: "history",
|
icon: "history",
|
||||||
@@ -75,15 +44,6 @@ export default {
|
|||||||
id: recentArticles.id
|
id: recentArticles.id
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
{
|
|
||||||
type: VoidcannonSectionType.CAROUSEL,
|
|
||||||
content: {
|
|
||||||
_transform: CollectionContentTransformer,
|
|
||||||
collection_id: "featured"
|
|
||||||
},
|
|
||||||
label: "Various Articles",
|
|
||||||
target: "collections/featured"
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Submodule voidcannon updated: d3eb75154a...dd03da61ad
Reference in New Issue
Block a user