<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://lonetrail.pages.dev/en/</id>
    <title>Lonetrail</title>
    <updated>2026-02-28T16:00:00.000Z</updated>
    <generator>Astro - Feed Library</generator>
    <author>
        <name>Lonetrail</name>
        <email>i@chongxi.us</email>
        <uri>https://lonetrail.pages.dev/</uri>
    </author>
    <link rel="alternate" href="https://lonetrail.pages.dev/en/"/>
    <link rel="self" href="https://lonetrail.pages.dev/en/atom.xml"/>
    <subtitle>Ad Astra Per Aspera</subtitle>
    <icon>https://lonetrail.pages.dev/favicon.ico</icon>
    <rights>All rights reserved 2026, Lonetrail</rights>
    <entry>
        <title type="html"><![CDATA[Configuring Lonetrail]]></title>
        <id>https://lonetrail.pages.dev/en/posts/customize/</id>
        <link href="https://lonetrail.pages.dev/en/posts/customize/"/>
        <updated>2026-02-28T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Site metadata, navigation and profile live in site.yml; feature flags and third-party integrations live in config.ts.]]></summary>
        <content type="html"><![CDATA[<h2>Two layers of configuration</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Holds</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>src/site.yml</code></td>
<td>Title, subtitle, URL, author, navigation, social links, copyright, trusted domains, taxonomy labels</td>
</tr>
<tr>
<td><code>src/config.ts</code></td>
<td>Locale routing, feature flags (search, comments, analytics), Twikoo / Umami parameters</td>
</tr>
</tbody>
</table>
<p><code>src/config.ts</code> reads <code>site.yml</code> and exports <code>siteConfig</code> / <code>navBarConfig</code> / <code>profileConfig</code>, so components never touch the raw YAML.</p>
<h2>site.yml</h2>
<pre><code class="language-yaml">site:
  title: "Lonetrail"
  title_en: "Lonetrail"
  subtitle: "循此苦旅 直抵群星"
  subtitle_en: "Ad Astra Per Aspera"
  description: "一个关于代码、安全与网络的个人笔记本。"
  description_en: "A personal notebook on code, security and the web."
  url: "https://lonetrail.pages.dev"
  lang: "zh_CN"
  author: "Lonetrail"
  email: "i@chongxi.us"
  favicon: "/images/favicon.webp"
  banner: "/images/banner.webp"
  og_image: "/images/og.webp"
  avatar: "/images/avatar.webp"
</code></pre>
<p>Bilingual fields come in pairs. The English site reads <code>*_en</code> and falls back to the default value when it is empty.</p>
<p><code>url</code> also drives <code>site</code> and the image allow-list in <code>astro.config.mjs</code>, so changing the domain is a one-line edit.</p>
<h3>Navigation</h3>
<p>Nav entries reference built-in labels by <code>key</code>, so they translate automatically:</p>
<pre><code class="language-yaml">nav:
  - key: home
    url: "/"
  - key: archive
    url: "/archive/"
  - key: series
    url: "/seri/"
  - key: essays
    url: "/essays/"
  - key: about
    url: "/about/"
</code></pre>
<p>Available keys: <code>home</code>, <code>archive</code>, <code>series</code>, <code>essays</code>, <code>about</code>, <code>subscribe</code>. Custom links use <code>name</code> instead:</p>
<pre><code class="language-yaml">nav:
  - name: "Notes"
    url: "/notes/"
</code></pre>
<h3>Taxonomy labels</h3>
<p>Translated labels are display-only — URLs and filters keep the canonical name:</p>
<pre><code class="language-yaml">taxonomy:
  tags:
    "技术": "Technology"
  categories:
    "技术": "Technology"
</code></pre>
<h2>config.ts</h2>
<pre><code class="language-ts">export const localeConfig = {
	defaultLocale: "zh",
	locales: ["zh", "en"],
	translatedPaths: ["/", "/archive/", "/about/", "/subscribe/", "/essays/"],
};

export const featureConfig = {
	comments: true,
	search: true,
	analytics: "none",
};

export const integrationConfig = {
	twikoo: { envId: "" },
	umami: { websiteId: "", domains: "" },
};
</code></pre>
<ul>
<li><code>translatedPaths</code> — pages that have a real English version; every other <code>/en/</code> route is a fallback of the Chinese page and is marked noindex</li>
<li><code>featureConfig.comments</code> — turn off to drop the comment section</li>
<li><code>featureConfig.search</code> — turn off to skip mounting the search panel</li>
<li><code>featureConfig.analytics</code> — set to <code>"umami"</code> and fill <code>umami.websiteId</code> to load the script</li>
<li><code>integrationConfig.twikoo.envId</code> — leave empty to skip comments entirely</li>
</ul>
<h2>Post frontmatter</h2>
<pre><code class="language-yaml">---
title: "Post title"
published: 2026-01-15
updated: 2026-02-01
description: "One-line summary"
tags: ["tag-one", "tag-two"]
category: "技术"
draft: false
pinned: false
noindex: false
---
</code></pre>
<ul>
<li><code>draft: true</code> — skipped in production builds</li>
<li><code>pinned: true</code> — pinned to the top of the first home page</li>
<li><code>noindex: true</code> — kept out of listings and sitemaps</li>
</ul>
]]></content>
        <author>
            <name>Lonetrail</name>
            <email>i@chongxi.us</email>
            <uri>https://lonetrail.pages.dev/</uri>
        </author>
        <category label="Lonetrail"/>
        <category label="Configuration"/>
        <published>2026-02-28T16:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Whispers of the Stars]]></title>
        <id>https://lonetrail.pages.dev/en/posts/journey/</id>
        <link href="https://lonetrail.pages.dev/en/posts/journey/"/>
        <updated>2026-02-19T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[A curated collection of timeless quotes about the cosmos, space exploration, and humanity's eternal gaze upward.]]></summary>
        <content type="html"><![CDATA[<p>Humanity has looked up at the stars for as long as we have existed. Across millennia, thinkers, scientists, and explorers have captured their wonder in words. Here is a collection spanning centuries and cultures.</p>
<h2>Looking Up</h2>
<blockquote>
<p>Two things fill the mind with ever new and increasing admiration and awe — the starry heavens above me and the moral law within me.<br />
<strong>— Immanuel Kant</strong></p>
</blockquote>
<p>When Kant wrote these words, humanity did not yet know that galaxies existed beyond the Milky Way, nor that the universe was expanding. Yet his reverence for the night sky remains as vivid today as it was two centuries ago.</p>
<h2>Exploration</h2>
<blockquote>
<p>We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard.<br />
<strong>— John F. Kennedy, 1962</strong></p>
</blockquote>
<p>Perhaps the most famous words ever spoken about human exploration. It was never about conquest — it was about choosing the difficult path.</p>
<blockquote>
<p>Look again at that dot. That’s here. That’s home. That’s us.<br />
On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives.<br />
<strong>— Carl Sagan, <em>Pale Blue Dot</em></strong></p>
</blockquote>
<p>In 1990, Voyager 1 turned its camera back toward Earth from 6.4 billion kilometers away and captured the iconic “Pale Blue Dot” photograph. Sagan’s reflection on that image has moved millions.</p>
<h2>The Cosmos</h2>
<blockquote>
<p>The universe is not only queerer than we suppose, but queerer than we can suppose.<br />
<strong>— J.B.S. Haldane</strong></p>
</blockquote>
<blockquote>
<p>Space: the final frontier.<br />
These are the voyages of the Starship Enterprise.<br />
Its five-year mission: to explore strange new worlds, to seek out new life and new civilizations, to boldly go where no man has gone before.<br />
<strong>— <em>Star Trek</em> Opening Narration</strong></p>
</blockquote>
<h2>Science</h2>
<blockquote>
<p>The most incomprehensible thing about the universe is that it is comprehensible.<br />
<strong>— Albert Einstein</strong></p>
</blockquote>
<blockquote>
<p>Somewhere, something incredible is waiting to be known.<br />
<strong>— Carl Sagan</strong></p>
</blockquote>
<blockquote>
<p>Science is not only compatible with spirituality; it is a profound source of spirituality.<br />
<strong>— Carl Sagan</strong></p>
</blockquote>
<h2>Stardust</h2>
<blockquote>
<p>We are made of starstuff.<br />
<strong>— Carl Sagan</strong></p>
</blockquote>
<p>This is not merely poetic — it is scientific fact. Every atom of carbon, oxygen, nitrogen, and iron in our bodies was forged in the core of an ancient star.</p>
<blockquote>
<p>When you look up at the night sky, you are seeing starlight that left its source millions of years ago.<br />
It is like reading a love letter from the distant past.</p>
</blockquote>
<h2>Solitude</h2>
<blockquote>
<p>The vastness of the cosmos — the smallness of humanity.<br />
Yet it is this small life, armed with curiosity, that measures the infinite.<br />
That, in itself, is extraordinary.</p>
</blockquote>
<blockquote>
<p>Somewhere in the universe, perhaps, intelligent beings are gazing at their own night sky.<br />
They are asking the same question we ask:<br />
“Are we alone?”</p>
</blockquote>
<h2>Final Thoughts</h2>
<p>These words span hundreds, even thousands of years. They come from different eras, cultures, and perspectives — but they all point in the same direction: upward, outward, toward the stars.</p>
<blockquote>
<p>A hymn to humanity is a hymn to courage.<br />
The greatness of humanity is the greatness of its courage.<br />
<strong>— Hirohiko Araki, <em>JoJo’s Bizarre Adventure</em></strong></p>
</blockquote>
<p>Perhaps that is why we keep exploring.</p>
<hr />
<p><em>This article is demo content for the Lonetrail theme, showcasing blockquotes, dividers, lists, and other typographic features.</em></p>
]]></content>
        <author>
            <name>Lonetrail</name>
            <email>i@chongxi.us</email>
            <uri>https://lonetrail.pages.dev/</uri>
        </author>
        <category label="Stars"/>
        <category label="Cosmos"/>
        <category label="Quotes"/>
        <category label="Philosophy"/>
        <published>2026-02-19T16:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Art of Code]]></title>
        <id>https://lonetrail.pages.dev/en/posts/code/</id>
        <link href="https://lonetrail.pages.dev/en/posts/code/"/>
        <updated>2026-02-09T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Showcasing Lonetrail's syntax highlighting across JavaScript, Python, Rust, Go, and more.]]></summary>
        <content type="html"><![CDATA[<h2>Elegant Code</h2>
<p>Good code reads like good writing — clear, concise, and purposeful. Below is a demonstration of Lonetrail’s syntax highlighting across multiple programming languages.</p>
<h3>TypeScript</h3>
<pre><code class="language-typescript">interface Star {
  name: string;
  distance: number; // light years
  spectralType: string;
}

async function findNearestStars(
  maxDistance: number
): Promise&lt;Star[]&gt; {
  const response = await fetch(
    "https://api.stellar-db.example/stars"
  );
  const allStars: Star[] = await response.json();
  return allStars.filter(
    (star) =&gt; star.distance &lt;= maxDistance
  );
}
</code></pre>
<h3>Python</h3>
<pre><code class="language-python">from dataclasses import dataclass
from typing import List
import asyncio


@dataclass
class Voyager:
    name: str
    launch_year: int
    speed: float  # km/s
    destination: str

    async def transmit(self, message: str) -&gt; bool:
        """Transmit signal back to Earth"""
        delay = len(message) * 0.1  # simulate transmission delay
        await asyncio.sleep(delay)
        print(f"[{self.name}] Signal sent: {message}")
        return True


async def exploration_mission():
    voyager = Voyager(
        name="Lonetrail-1",
        launch_year=2147,
        speed=42.0,
        destination="Proxima Centauri b"
    )
    await voyager.transmit("Arrived at target sector, beginning observation")
</code></pre>
<h3>Rust</h3>
<pre><code class="language-rust">use std::collections::HashMap;

#[derive(Debug)]
struct NavigationSystem {
    waypoints: HashMap&lt;String, (f64, f64, f64)&gt;,
    current_position: (f64, f64, f64),
}

impl NavigationSystem {
    fn new() -&gt; Self {
        NavigationSystem {
            waypoints: HashMap::new(),
            current_position: (0.0, 0.0, 0.0),
        }
    }

    fn add_waypoint(&amp;mut self, name: &amp;str, coords: (f64, f64, f64)) {
        self.waypoints.insert(name.to_string(), coords);
    }

    fn distance_to(&amp;self, target: &amp;str) -&gt; Option&lt;f64&gt; {
        self.waypoints.get(target).map(|&amp;(x, y, z)| {
            let dx = x - self.current_position.0;
            let dy = y - self.current_position.1;
            let dz = z - self.current_position.2;
            (dx * dx + dy * dy + dz * dz).sqrt()
        })
    }
}
</code></pre>
<h3>Go</h3>
<pre><code class="language-go">package stellar

import (
	"context"
	"fmt"
	"time"
)

type Probe struct {
	ID        string
	Launched  time.Time
	Status    string
	Telemetry chan Signal
}

type Signal struct {
	Timestamp time.Time
	Data      map[string]float64
	Strength  float64
}

func (p *Probe) StartMission(ctx context.Context) error {
	p.Status = "en_route"
	ticker := time.NewTicker(30 * time.Second)
	defer ticker.Stop()

	for {
		select {
		case &lt;-ctx.Done():
			p.Status = "offline"
			return ctx.Err()
		case &lt;-ticker.C:
			signal := p.collectData()
			p.Telemetry &lt;- signal
		}
	}
}

func (p *Probe) collectData() Signal {
	return Signal{
		Timestamp: time.Now(),
		Data: map[string]float64{
			"temperature": -270.4,
			"radiation":   0.87,
			"velocity":    42.0,
		},
		Strength: 0.92,
	}
}
</code></pre>
<h3>Inline Code</h3>
<p>Call <code>calculateTrajectory(origin, destination, fuel)</code> which returns a <code>Trajectory</code> object. Use <code>pnpm dev</code> to start the development server.</p>
<h3>Terminal Commands</h3>
<pre><code class="language-bash"># Clone the theme
git clone https://github.com/ChongxiSama/Lonetrail.git
cd Lonetrail

# Install and run
pnpm install
pnpm dev

# Build
pnpm build
</code></pre>
<h3>Math Formulas</h3>
<p>$$
E = mc^2
$$</p>
<p>$$
v = \sqrt{\frac{2GM}{r}}
$$</p>
<p>Lonetrail supports LaTeX math rendering via KaTeX, making it ideal for technical and scientific blogging.</p>
]]></content>
        <author>
            <name>Lonetrail</name>
            <email>i@chongxi.us</email>
            <uri>https://lonetrail.pages.dev/</uri>
        </author>
        <category label="Code"/>
        <category label="Programming"/>
        <category label="Syntax Highlighting"/>
        <published>2026-02-09T16:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[We Choose to Go to the Moon]]></title>
        <id>https://lonetrail.pages.dev/en/posts/lonetrail/</id>
        <link href="https://lonetrail.pages.dev/en/posts/lonetrail/"/>
        <updated>2026-01-31T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[On September 12, 1962, John F. Kennedy delivered what became the defining speech of the Space Age at Rice University. It remains a testament to human ambition and the courage to attempt the impossible.]]></summary>
        <content type="html"><![CDATA[<h2>The Moment</h2>
<p>September 12, 1962. Houston, Texas. Rice University Stadium.</p>
<p>A sweltering autumn day. Some forty thousand people gathered to hear the President of the United States speak. Few realized that seventeen minutes would change the course of human history.</p>
<blockquote>
<p>We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard.</p>
</blockquote>
<h2>Full Speech</h2>
<p><strong>President Pitzer, Mr. Vice President, Governor, Congressman Thomas, Senator Wiley, Congressman Miller, Mr. Webb, Mr. Bell, scientists, distinguished guests, ladies and gentlemen:</strong></p>
<p>I appreciate your president having made me an honorary visiting professor, and I will assure you that my first lecture will be very brief.</p>
<p>We meet at a college noted for knowledge, in a city noted for progress, in a State noted for strength. And we stand in need of all three, for we meet in an hour of change and challenge, in a decade of hope and fear, in an age of both knowledge and ignorance. The greater our knowledge increases, the greater our ignorance unfolds.</p>
<h3>The Measure of Progress</h3>
<p>No man can fully grasp how far and how fast we have come. But condense the entire 50,000 years of man’s recorded history into a span of half a century:</p>
<ul>
<li>For the first 40 years, we knew little — only at the end did advanced humans learn to cover themselves with animal skins</li>
<li>About 10 years ago, man emerged from caves to build other kinds of shelter</li>
<li>Only 5 years ago, man learned to write and use the wheeled cart</li>
<li>Less than 2 years ago, Christianity was born</li>
<li>This year, printing was invented</li>
<li>Less than 2 months ago, the steam engine provided a new power source</li>
<li>Newton explored the meaning of gravity</li>
<li><strong>Last month</strong>, electric lights, telephones, cars, and airplanes became available</li>
<li><strong>Last week</strong>, we developed penicillin, television, and nuclear power</li>
<li>And if America’s new spacecraft succeeds in reaching Venus, <strong>by midnight tonight</strong> — we will have literally touched the stars.</li>
</ul>
<h3>Why the Moon?</h3>
<blockquote>
<p>But why, some say, the moon? Why choose this as our goal?<br />
And they may well ask: why climb the highest mountain?<br />
Why, 35 years ago, fly the Atlantic?<br />
Why does Rice play Texas?</p>
</blockquote>
<p><strong>We choose to go to the moon.</strong> We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard. Because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win.</p>
<h3>The Cost</h3>
<blockquote>
<p>The vast expanse of space promises high costs and hardships, along with great rewards.</p>
</blockquote>
<p>But this country — the United States — was not built by those who waited, rested, and looked back. This country was conquered by those who moved forward — and so will space.</p>
<p>William Bradford, speaking in 1630 of the founding of the Plymouth Bay Colony, said:</p>
<blockquote>
<p>All great and honorable actions are accompanied by great difficulties, and both must be enterprised and overcome with answerable courage.</p>
</blockquote>
<h2>Afterword</h2>
<p>Sixty-four years later, Kennedy’s words still resonate.</p>
<p>Apollo 11 ultimately fulfilled the promise on July 20, 1969 — Armstrong and Aldrin stepped onto the lunar surface. But what was said that September afternoon in Houston represents something beyond the moon landing itself: the pinnacle of the human spirit of exploration.</p>
<p><strong>Not because they are easy, but because they are hard.</strong></p>
<hr />
<p><em>This article is demo content for the Lonetrail theme, showcasing long-form typography, blockquotes, and lists. Speech source: John F. Kennedy Presidential Library and Museum.</em></p>
]]></content>
        <author>
            <name>Lonetrail</name>
            <email>i@chongxi.us</email>
            <uri>https://lonetrail.pages.dev/</uri>
        </author>
        <category label="Lonetrail"/>
        <category label="Space"/>
        <category label="History"/>
        <category label="Speech"/>
        <published>2026-01-31T16:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Welcome to Lonetrail]]></title>
        <id>https://lonetrail.pages.dev/en/posts/welcome/</id>
        <link href="https://lonetrail.pages.dev/en/posts/welcome/"/>
        <updated>2026-01-14T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Lonetrail is an Astro-based blog theme — clean, restrained, and packed with features. This article walks you through what it does.]]></summary>
        <content type="html"><![CDATA[<h2>About Lonetrail</h2>
<p><strong>Lonetrail</strong> is a modern blog theme built with Astro. It puts reading experience first while keeping plenty of room for customization.</p>
<blockquote>
<p>Per Aspera, Ad Astra.
<em>Through hardships to the stars.</em></p>
</blockquote>
<h3>What’s inside</h3>
<ul>
<li><strong>Static by default</strong> — Astro ships plain HTML; almost nothing to wait for</li>
<li><strong>Bilingual</strong> — Chinese at <code>/</code>, English at <code>/en/</code>, the language switch keeps your place</li>
<li><strong>Essays</strong> — short notes and images, kept apart from long-form posts</li>
<li><strong>No-refresh navigation</strong> — Swup handles transitions between pages</li>
<li><strong>Full-text search</strong> — Pagefind index generated at build time, no backend</li>
<li><strong>Series</strong> — group articles into multi-part reads</li>
<li><strong>Tags &amp; categories</strong> — archive pages generated from content</li>
<li><strong>Dark mode</strong> — follow the system or toggle manually</li>
<li><strong>RSS / Atom / Sitemap</strong> — emitted at build time, including per-locale variants</li>
<li><strong>Code highlighting</strong> — Expressive Code with line numbers, folding and copy</li>
<li><strong>Math &amp; diagrams</strong> — KaTeX and Mermaid</li>
</ul>
<h3>Quick start</h3>
<pre><code class="language-bash">git clone https://github.com/ChongxiSama/Lonetrail.git my-blog
cd my-blog
pnpm install
pnpm dev
pnpm build
</code></pre>
<h3>Directory layout</h3>
<pre><code>src/
├── content/        # Content
│   ├── posts/      # Posts
│   ├── essays/     # Essays
│   ├── seri/       # Series
│   └── spec/       # Standalone pages
├── components/     # Components
├── layouts/        # Layouts
├── pages/          # Routes
├── styles/         # Styles
├── config.ts       # Feature flags and integrations
└── site.yml        # Site metadata
</code></pre>
<h3>Writing a post</h3>
<p>Drop a Markdown file into <code>src/content/posts/</code> with frontmatter:</p>
<pre><code class="language-yaml">---
title: "Post title"
published: 2026-01-15
description: "One-line summary"
tags: ["tag-one", "tag-two"]
category: "技术"
---
</code></pre>
<p>For an English translation, add a sibling file with an <code>.en</code> suffix such as <code>welcome.en.md</code>; it is served at <code>/en/posts/welcome/</code>.</p>
<p>See “Configuring Lonetrail” for the full configuration reference.</p>
]]></content>
        <author>
            <name>Lonetrail</name>
            <email>i@chongxi.us</email>
            <uri>https://lonetrail.pages.dev/</uri>
        </author>
        <category label="Lonetrail"/>
        <category label="Getting Started"/>
        <category label="Astro"/>
        <published>2026-01-14T16:00:00.000Z</published>
    </entry>
</feed>