diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..8aade0f --- /dev/null +++ b/.github/copilot-instructions.md @@ -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`). diff --git a/src/blog/post-5.md b/src/blog/post-5.md new file mode 100644 index 0000000..94029ac --- /dev/null +++ b/src/blog/post-5.md @@ -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). diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 9c72f54..3e2edc3 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -16,5 +16,5 @@ diff --git a/src/components/Navigation.astro b/src/components/Navigation.astro index 4257856..67284b2 100644 --- a/src/components/Navigation.astro +++ b/src/components/Navigation.astro @@ -7,7 +7,7 @@ About Articles Tags - + Forgejo Icon diff --git a/src/layouts/MarkdownPostLayout.astro b/src/layouts/MarkdownPostLayout.astro index af007b0..b236a24 100644 --- a/src/layouts/MarkdownPostLayout.astro +++ b/src/layouts/MarkdownPostLayout.astro @@ -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; } diff --git a/src/pages/index.astro b/src/pages/index.astro index 06ba9b9..aa7888a 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -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()); ---