Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ runs:
using: composite
steps:
- name: Setup pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v6

- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: "22"
cache: "pnpm"
Expand Down
40 changes: 16 additions & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Setup
uses: ./.github/actions/setup
Expand All @@ -23,49 +23,41 @@ jobs:
- name: Build
run: pnpm build

- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: build-output
path: |
.svelte-kit
node_modules
retention-days: 1

lint:
needs: build
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Setup
uses: ./.github/actions/setup

- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: build-output

- name: Run Lint
run: pnpm lint

check:
needs: build
test:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Setup
uses: ./.github/actions/setup

- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: build-output
- name: Run Tests
run: pnpm test

check:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup
uses: ./.github/actions/setup

- name: Run Type Check
run: pnpm check
6 changes: 4 additions & 2 deletions .github/workflows/wrangler-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
ref: ${{ inputs.ref || github.ref }}

Expand All @@ -42,7 +42,9 @@ jobs:
SITE_URL: ${{ inputs.site_url }}

- name: Deploy to Cloudflare
run: pnpm wrangler deploy --env ${{ inputs.environment }}
run: >-
pnpm wrangler deploy --env ${{ inputs.environment }} --var ENVIRONMENT:${{
inputs.environment }} --var SITE_URL:${{ inputs.site_url }}
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.cloudflare_api_token }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.cloudflare_account_id }}
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
.DS_Store
node_modules

.idea/
.vscode/

.svelte-kit
.astro
.wrangler
build
dist

.env
.env.*
Expand Down
34 changes: 34 additions & 0 deletions .wip/plans/main-shell-elsewhere-mirror.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Implementation Plan: Main Shell Elsewhere Mirror

## Task

Make the main site shell mirror Elsewhere by anchoring navigation in the same top-left
breadcrumb position, and remove page transition animations.

## Approach

Create a shared breadcrumb-like navigation treatment for the main shell rather than
importing the Elsewhere implementation directly. The main site can keep its readable
content column, but the top navigation should become the same kind of small,
fixed-position reality anchor as Elsewhere.

Remove Astro view transitions and title transition behavior from the main layout and
page/article title links. This includes dropping the client router, transition attributes,
controller component usage, and view-transition CSS/keyframes that only exist to support
animated page changes. Keep ordinary CSS link hover/focus affordances.

## Touch points

- `src/layouts/SiteLayout.astro`: remove transition imports/components and keep a static
shell.
- `src/components/Navigation.astro` and `src/app.css`: restyle primary navigation to
occupy the same top-left anchor role as Elsewhere breadcrumbs.
- `src/pages/index.astro` and `src/layouts/ArticleLayout.astro`: remove transition
attributes/classes from titles and links.
- `src/lib/astro/viewTransitions.ts` and `src/components/TitleTransitionController.astro`:
likely remove if no longer referenced.

## Verification

Manual check the homepage, about page, post page, project page, and Elsewhere route to
ensure navigation remains usable and no transition-only imports remain.
36 changes: 36 additions & 0 deletions .wip/tasks/draft-elsewhere-quote-trail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
status: draft
---

# Add a quote journey trail

## Problem

The Elsewhere quote wire now creates a procedural path through quotes, but the page does
not remember the choices that shaped the route. Each step changes the quote, links, and
layout, but the visitor has no visible artifact of the path they made.

This misses an opportunity to make the journey feel more personal and game-like while
preserving the current URL-driven model.

## Proposed solution

Add a lightweight trail to the quote journey that records the words a visitor chooses
while moving through the quote wire. The trail should be carried in the URL so the same
link preserves the same path and can be shared.

The trail should render as a quiet collection of chosen words on quote pages. It should
feel like a trace, inventory, or small poem made by the visitor's route, not like a
dashboard or progress tracker.

The existing quote journey should remain simple. The quote stays primary, the continuation
links stay minimal, and the trail should not compete with the reading experience.

## Requirements

- Trail state must live in query parameters rather than local storage or server state.
- Following a continuation link should append the chosen word to the trail.
- Sharing or reloading the URL should preserve the same trail.
- The rendered trail should remain visually subtle and fit the Elsewhere quote wire style.
- The trail should have a practical length limit so URLs do not grow without bound.
- The experience should continue to work without JavaScript.
54 changes: 54 additions & 0 deletions .wip/tasks/draft-elsewhere-quotes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
status: draft
---

# Create an Elsewhere programming quotes journey

## Problem

The site currently has a clean, text-first blog experience, but it does not yet have a
dedicated place for more experimental web design. The desired Elsewhere direction needs a
first concrete project that can establish the visual language without changing the main
blog experience.

A procedural programming quotes journey is a good starting point because it can be small,
self-contained, and expressive. It can use curated text fragments to explore bold styling,
odd layouts, animation, page transitions, and non-linear navigation while keeping the
normal writing experience intact.

## Proposed solution

Create the first Elsewhere experience as a procedural journey through programming quotes.
The experience should live behind an intentional Elsewhere entry point and present curated
quotes through bold, full-page, CSS-driven layouts.

The journey should feel exploratory rather than archival. Readers should move through
quotes by following strange choices, signals, doors, or fragments instead of using a
normal list. Each step can vary layout, color, scale, motion, or composition to make the
route feel alive. Query parameters should carry the journey state so each route is
shareable, reload-safe, and inspectable.

The quote collection should start as local Markdown or MDX entries with a consistent YAML
frontmatter schema across the entire import. Wikiquote is the preferred first source to
investigate because it has explicit reuse terms and stable source pages. Do not depend on
scraped quote sites unless the source license is verified and compatible with reuse.

## Requirements

- The main blog and default reading templates should remain unchanged.
- The experience should sit under the Elsewhere concept documented in `docs/elsewhere.md`.
- Quote entries should be stored as Markdown or MDX files with the quote text as content.
- Quote frontmatter must use one consistent YAML schema across the entire collection.
- Query parameters must be the primary application state for the journey.
- Quote data must include quote text, author attribution, source name, source URL,
license, retrieval date, and tags.
- Every rendered quote page must include a readable attribution path and link back to the
source.
- Any external quote source must have a verified license before content is copied into the
project.
- Styling should use authored CSS and custom property inheritance as a core design
mechanism.
- Layouts should be responsive and intrinsically adapt across viewport sizes.
- Motion and page transitions should respect `prefers-reduced-motion`.
- The first version should be small and easy to extend rather than a complete quote
platform.
29 changes: 29 additions & 0 deletions .wip/tasks/draft-markdown-callouts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
status: draft
---

# Render Markdown in info callouts

## Problem

Info callouts are currently written as raw `<doc-info>` HTML blocks inside Markdown posts.
Markdown syntax inside raw HTML is not parsed, so inline code like backticks renders
literally in the HTML. This makes callout content inconsistent with the surrounding prose
and forces authors to use manual HTML for normal Markdown formatting.

## Proposed solution

Authors should be able to write info callouts with normal Markdown content, including
inline code, links, emphasis, and other common inline formatting. Existing callout styling
and rendered markup should remain visually consistent with the current `<doc-info>`
presentation.

The preferred authoring format is MDX for posts that need Markdown-rendered callout
contents. Existing plain Markdown posts should continue to work.

## Requirements

- Existing published posts that use `<doc-info>` should continue to render as callouts or
be migrated to the new supported Markdown-friendly syntax.
- Inline Markdown inside info callouts must render correctly.
- The solution should preserve the existing callout appearance.
1 change: 0 additions & 1 deletion AGENTS.md

This file was deleted.

Loading