Compare commits

..

3 commits

Author SHA1 Message Date
e2a0346400 chore: add Copilot instructions for project guidance
Add Copilot-specific instructions documenting project overview, tech stack,
  structure, development guidelines, and best practices for AI-assisted development.
2026-01-02 21:30:34 +09:00
1cf9933d08 docs: add post on fixing GitHub Copilot CLI system vault error
Add new blog post explaining how to resolve the "system vault not available"
error when installing GitHub Copilot CLI using systemd and gnome-keyring.
Includes step-by-step instructions with command examples.
2026-01-02 21:28:51 +09:00
989b829a20 chore: polish layout and homepage lists 2026-01-02 21:27:59 +09:00
6 changed files with 141 additions and 8 deletions

59
.github/copilot-instructions.md vendored Normal file
View file

@ -0,0 +1,59 @@
# Copilot Instructions for n-daisuke897-blog
## Project Overview
This is a personal blog named "Naputo" built with Astro and Preact. The blog is designed to publish articles and content with a modern static site generation approach.
**Repository**: https://git.n-daisuke897.com/nakada0907/n-daisuke897-blog
## Tech Stack
- **Framework**: Astro 5.x
- **UI Library**: Preact 10.x for interactive components
- **Language**: TypeScript
- **Build Tool**: Astro CLI
- **RSS**: @astrojs/rss for RSS feed generation
- **Linting**: ESLint with TypeScript and Astro plugins
## Project Structure
- `src/`: Source code
- `pages/`: Astro pages (routing based on file structure)
- `layouts/`: Layout components
- `components/`: Reusable components
- `blog/`: Blog content
- `styles/`: Global styles
- `scripts/`: Utility scripts
- `content.config.ts`: Content collection configuration
- `public/`: Static assets (images, fonts, etc.)
- `dist/`: Build output directory
- `buildspec.yml`: AWS CodeBuild configuration
## Development Guidelines
### Commands
- `npm install`: Install dependencies
- `npm run dev`: Start local development server at `localhost:4321`
- `npm run build`: Build production site to `./dist/`
- `npm run preview`: Preview production build locally
- `npm run astro`: Run Astro CLI commands
### Coding Standards
- Use TypeScript for all new code
- Follow the ESLint configuration provided
- Use Preact components for interactive UI elements
- Keep components modular and reusable
- Use Astro's component syntax for static content
### File Naming
- Use kebab-case for file names
- Use PascalCase for component names
- Use `.astro` extension for Astro components
- Use `.tsx` extension for Preact components
### Best Practices
- Prefer static generation over client-side rendering when possible
- Use Astro's content collections for blog posts
- Optimize images and assets before adding to `public/`
- Keep bundle size minimal - Astro ships zero JS by default
- Use Preact only when client interactivity is needed
## Deployment
This project uses AWS CodeBuild for deployment (see `buildspec.yml`).

64
src/blog/post-5.md Normal file
View file

@ -0,0 +1,64 @@
---
title: 'Fixing GitHub Copilot CLI System Vault Error with systemd'
pubDate: 2026-01-02
author: 'Nakahara Daisuke'
tags: ["GitHub", "AI"]
---
When installing GitHub Copilot CLI, you may encounter the error message: `The system vault (keychain, keyring, password manager, etc.) is not available. You may need to install one.` The solution was documented in [this issue](https://github.com/github/copilot-cli/issues/49).
This article explains how to resolve this issue using `systemd`.
### Install via Apt
```bash
$ sudo apt update
```
```bash
$ sudo apt install -y \
gnome-keyring \
libsecret-1-0 \
libsecret-tools \
seahorse
```
### Verify systemd is running
```bash
$ systemctl is-system-running
```
### Check if the user service is enabled
```bash
$ systemctl --user status gnome-keyring-daemon
○ gnome-keyring-daemon.service - GNOME Keyring daemon
Loaded: loaded (/usr/lib/systemd/user/gnome-keyring-daemon.service; enabled; preset: enabled)
Active: inactive (dead)
TriggeredBy: ○ gnome-keyring-daemon.socket
```
```bash
$ systemctl --user enable gnome-keyring-daemon
```
```bash
$ systemctl --user start gnome-keyring-daemon
```
```bash
$ systemctl --user status gnome-keyring-daemon
● gnome-keyring-daemon.service - GNOME Keyring daemon
Loaded: loaded (/usr/lib/systemd/user/gnome-keyring-daemon.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-01-02 08:36:46 JST; 3s ago
Invocation: d830e5563e974edc9265650d11dfa086
TriggeredBy: ● gnome-keyring-daemon.socket
Main PID: 5222 (gnome-keyring-d)
Tasks: 5 (limit: 9422)
Memory: 3.4M (peak: 3.9M)
CPU: 37ms
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/gnome-keyring-daemon.service
└─5222 /usr/bin/gnome-keyring-daemon --foreground --components=pkcs11,secrets --control-directory=/run/user/1000/keyring
Jan 02 08:36:46 hostname systemd[649]: Started gnome-keyring-daemon.service - GNOME Keyring daemon.
Jan 02 08:36:46 hostname gnome-keyring-daemon[5222]: GNOME_KEYRING_CONTROL=/run/user/1000/keyring
Jan 02 08:36:46 hostname gnome-keyring-daemon[5222]: another secret service is running
Jan 02 08:36:46 hostname gnome-keyring-d[5222]: another secret service is running
```
> **Note**: This article was translated from Japanese to English and reviewed with the assistance of AI (GitHub Copilot).

View file

@ -16,5 +16,5 @@
</style>
<footer>
<p class="legal-information">&copy; 2025 Nakahara Daisuke</p>
<p class="legal-information">&copy; 2026 Nakahara Daisuke — Built with <a href="https://astro.build" target="_blank" rel="noopener">Astro</a></p>
</footer>

View file

@ -7,7 +7,7 @@
<a href="/about/">About</a>
<a href="/blog/">Articles</a>
<a href="/tags/">Tags</a>
<a href="https://git.n-daisuke897.com/" target="_blank">
<a href="https://git.n-daisuke897.com/nakada0907/" target="_blank">
<img src="/icon/simple-icons--forgejo.svg" alt="Forgejo Icon">
</a>
</div>

View file

@ -49,18 +49,27 @@ const optionsForDate = {
.markdown-content {
font-family: sans-serif;
font-size: 1.2rem;
line-height: 2.5;
font-size: 1.1rem;
line-height: 1.8;
}
.markdown-content h1 {
font-size: 1.9rem;
font-size: 1.6rem;
margin-top: 2rem;
margin-bottom: 1rem;
line-height: 1.3;
}
.markdown-content h2 {
font-size: 1.75rem;
font-size: 1.4rem;
margin-top: 1.8rem;
margin-bottom: 0.8rem;
line-height: 1.3;
}
.markdown-content h3 {
font-size: 1.5rem;
font-size: 1.2rem;
margin-top: 1.5rem;
margin-bottom: 0.6rem;
line-height: 1.3;
}
</style>

View file

@ -4,6 +4,7 @@ import BlogPost from "../components/BlogPost.astro";
import { getCollection } from "astro:content";
const pageTitle = "Naputo";
const allPosts = await getCollection("blog");
const sortedPosts = allPosts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
---
<style>
@ -41,7 +42,7 @@ const allPosts = await getCollection("blog");
<h3 class="header-new-posts">New Posts</h3>
<div class="new-articles">
{
allPosts.slice(0, 6).map((post: any) => (
sortedPosts.slice(0, 5).map((post: any) => (
<BlogPost
url={`/posts/${post.id}/`}
title={post.data.title}