147 Commits

Author SHA1 Message Date
Qihan 814f21f1fe Update package.json 2026-06-16 21:36:01 +08:00
Qihan aba09a517d Update package.json 2026-06-16 15:44:00 +08:00
satnaing 4c33a60529 bump: version 6.0.0 → 6.1.0 2026-06-06 15:50:50 +07:00
Sat Naing e0506cb41e feat: add callout support (#655)
* feat: toggle .dark class on theme change

* feat: add callouts with rehype-callouts plugin

* docs: update blog posts with callouts
2026-06-06 09:09:08 +07:00
Sat Naing ca42b6b218 build(deps): bump astro and other dependencies (#651)
* build(deps): bump astro and its related dependencies

* build(deps): bump dependencies to latest versions
2026-06-02 08:22:00 +07:00
Sat Naing f0b644de3a feat!: AstroPaper v6 (#631)
* feat: add initial configuration and social icons for AstroPaper theme

* feat: add theme styles and design tokens

* chore: configure Astro with sitemap, i18n, fonts, and tooling

- Set site URL, i18n (single locale, no prefix), sitemap integration
- Add Google Sans Code font via stable fonts API
- Configure Shiki dual-theme markdown (min-light / night-owl)
- Fix astro-paper.config.ts to use relative import (alias not
  available when Vite loads root-level config files)
- Add @astrojs/sitemap and @typescript-eslint/parser dependencies
- Wire @typescript-eslint/parser into ESLint so TypeScript syntax
  in Astro frontmatter (type Props, etc.) parses correctly

* feat: add base styles, dark variant, and typography

- global.css: dark variant via [data-theme], base layer for * / a /
  button selectors, scrollbar tokens, layout utilities (max-w-app,
  app-layout), active-nav as @utility for Tailwind variant support
- html and body classes moved directly onto elements in BaseLayout
  (Tailwind-native approach) so only truly global selectors remain here
- typography.css: prose overrides, Shiki light/dark code block
  switching, diff/highlight/word-highlight transformer styles

* feat: add i18n types, English strings, and useTranslations helper

Plain typed object approach — no third-party i18n library needed.
Paraglide.js was considered but requires SSR output (hard blocker
for a static Astro site).

- UIStrings interface with nav, post, pagination, and a11y groups
- en.ts with `satisfies UIStrings` for literal-type preservation
- useTranslations(locale) helper falls back to English automatically

Adding a new language is a one-file addition; full routing stays
as a registry add-on.

* feat: add client-side theme toggle script

- Reads window.__theme.value set by the inline FOUC-prevention script
  to avoid re-detecting the theme on first load
- Toggles data-theme on <html> and persists to localStorage
- Fills <meta name="theme-color"> with the computed background colour
  so Android's browser chrome matches the page
- Re-runs setup on astro:after-swap for View Transitions navigation
- Carries theme-color across astro:before-swap to prevent navbar
  flicker on Android during page transitions
- Syncs with OS prefers-color-scheme changes at runtime

* feat: add BaseLayout and PostLayout

BaseLayout (replaces scaffold Layout.astro):
- Font, canonical URL via Astro.site, RSS autodiscovery
- FOUC-prevention inline script sets data-theme before first paint
  and exposes window.__theme.value for theme.ts to reuse
- html/body classes on elements directly (Tailwind-native)
- <slot name="head"> for child layout injection
- ClientRouter for View Transitions (respects lightAndDarkMode flag)
- googleVerification rendered from config instead of .env — it is a
  public string, not a secret, and not environment-specific

PostLayout (new):
- Wraps BaseLayout; injects article-specific head content via slot
- Overrides og:type to "article"
- Adds article:published_time / article:modified_time conditionally
- JSON-LD BlogPosting with conditional datePublished/dateModified
  (fixes old bug where absent dates produced "undefined" string)
- Structured data only on actual post pages (not home/archives/tags)

SiteConfig: add optional googleVerification field

* chore: replace scaffold index page with BaseLayout placeholder

* feat: add Header component

* feat: add Footer and Socials component

* chore: install dayjs, slugify, zod, @astrojs/mdx and add MDX integration

* feat: add resolved config that applies defaults in one place

Defaults for posts, features, socials, and shareLinks are merged in
src/config.ts so all consuming code gets non-optional types with no
scattered ?? fallbacks.

* feat: add content schema, blog path, and post utilities

Renames collection blog→posts, moves content to src/content/posts/,
adds .mdx support, and adds a typed pages collection. Includes
getSortedPosts, postFilter, getPath, and slugify utilities.

* feat: add Datetime and Card components

* refactor: switch layouts and components to resolved config

Replaces @/astro-paper.config imports with @/config and removes
optional chaining on feature flags now that the resolved config
guarantees non-optional values.

* feat: add home and footer i18n strings

* feat: implement home page with hero, featured, and recent posts

Replaces the BaseLayout placeholder with the full index page:
hero section with RSS link and social links, featured posts section,
recent posts capped at posts.perIndex, and an All Posts link. All
section labels come from i18n.

* feat: add pagination component

* feat: add Breadcrumb component with locale support

* feat: add Main component

* refactor: update code formatting in Card.astro

* feat: add posts page

* fix: add missing @astrojs/mdx dependency

* refactor: rename meta to pages in i18n

* refactor: improve code formatting in Breadcrumb

* refactor: destructure props in Main component for clarity

* feat: add tag pages

* feat: add About page

* chore: update i18n configuration to use site language from config

* feat: add Archives page

* feat: integrate Pagefind search functionality

* feat: add dynamic Open Graph image generation for posts

* feat: add post detail page

* feat: add Shiki transformers

* chore: remove unused edit link text

* chore: update .gitignore to include generated Pagefind directory

* chore: update site URL in configuration to production link

* chore: replace favicon and remove unused SVG assets, add new Open Graph image

* feat: update site config with default values

* feat: add default OG image path resolution

* fix: ensure edit post feature checks for enabled status correctly

* feat: implement dynamic Open Graph image generation

* feat: add RSS feed generation functionality

* feat: add 404 Not Found page

* feat: add robots.txt generation for SEO optimization

* refactor: change getSortedPosts to a named export

* refactor: change postFilter to a named export

* refactor: rename BaseLayout to Layout

* refactor: standardize locale handling across components

* refactor: update getPostsByGroupCondition location

* chore: remove unused Welcome component

* refactor(i18n): update links using getRelativeLocaleUrl

* refactor(i18n): add dynamic locale loading

* fix: update language attribute to use current locale

* fix: correct wording for updatedAt in post translations

* fix: update layout titles to use correct translation keys for tags pages

* chore: use new colors for better DX and a11y

* feat: add underline icon for active icon nav

* feat: add toc for markdown contents

* refactor: remove unused feature flags in config

* refactor(i18n): enhance locale handling and path management

* fix: ts unused variable hint

* refactor: extract locale stripping logic into a util func

* refactor(i18n): improve locale handling in tag pages

* refactor: update post URL helper functions

* refactor(i18n): replace pathWithBase with getRelativeLocaleUrl for locale handling

* refactor: rename fileWithBase to getAssetPath

* refactor: use runtime agnostic APIs for file paths

* refactor: use transition directive for heading transition

* refactor: remove unused title element from tag page

* fix: decouple ClientRouter from lightAndDarkMode flag

* refactor: rename `postPaths.ts` to `getPostPaths.ts`

* refactor: remove unused `minutesRead` string from post translations

* refactor: simplify AdjacentPostNav component by passing prevPost and nextPost directly

* refactor: remove unused code declaration

* docs: add existing blog posts

* chore: update astro and @astrojs/check dependencies to latest versions

* build: use experimental svg optimizer

* chore(repo): restore project meta files and Docker configs

* refactor: update code formatting with Prettier

* docs: update README and docs

* docs: add JSDoc comments to utility functions

* docs: add JSDoc comments to resolved config file

* fix(og): avoid double slashes when appending index.png

* chore(ci): update Node.js version to 22.12.0 in CI workflow

* feat: improve og image generation with Astro's getFontFileURL API (#632)

* feat: improve og image generation with Astro's getFontFileURL API

- remove @resvg/resvg-js and use sharp to convert SVG to PNG
- update og image generation to use Astro's getFontFileURL API for better font handling

* docs: update README and dynamic OG images documentation

- remove outdated content and clarify dynamic OG image generation process in README.
- add new image example and update instructions for handling non-Latin characters in dynamic OG images.
- adjust copyright year in README to 2026.

* fix(header): adjust icon button alignment in mobile

* feat(docs): add ResponsiveTable to use it in MDX posts (#634)

* feat(docs): add ResponsiveTable to use it in MDX posts

Introduce ResponsiveTable with variant-based styling. Rename docs posts to
.mdx, wrap tables in the component, and remove redundant table `code` rules
from prose typography.

* chore(prettier): ignore .mdx files when checking format

* chore(ci): update Node.js version to 24 in CI workflow

* bump: upgrade Astro and dependencies

* fix: remove redundant backUrl script bug

* fix(header): adjust button and icon alignment

* fix(a11y): improve muted-foreground color contrast

* docs: update predefined color schemes

* chore: support site verification env as fallback for googleVerification

* docs: add astro paper v6 updates in docs

* docs: add AstroPaper-v6.png in astro-paper-6 blog post

* fix: update back-to-top button DOM placement (#641)

Closes #626, #131, #493
2026-05-17 16:17:58 +07:00
Sat Naing fb63d96011 fix: slugify supports better acronyms and preserve non-latin char (#606)
* fix: slugify supports better acronyms and preserve non-latin char

Update slugify function to handle better acronyms and preserve non-latin characters.
- uses slugify (simov) for Latin-only strings to fix acronym issue (eg: e2e-testing)
- uses lodash.kebabcase for strings with non-latin characters to preserve them

* fix: remove dots in slugified titles for view transitions

Fixes #584
2026-01-14 05:20:25 +07:00
satnaing 25d25437cf bump: version 5.5.0 → 5.5.1 2026-01-08 19:04:42 +07:00
Sat Naing 93d491b7f3 bump: upgrade astro and dependencies (#596)
* bump: update astro to v5.16.6 and related dependencies

* bump: update dependencies to latest versions

- Upgraded @tailwindcss/vite from 4.1.11 to 4.1.18
- Updated dayjs from 1.11.13 to 1.11.19
- Bumped satori from 0.15.2 to 0.18.3
- Updated sharp from 0.34.2 to 0.34.5
- Upgraded @pagefind/default-ui from 1.3.0 to 1.4.0
- Updated @tailwindcss/typography from 0.5.16 to 0.5.19
- Bumped @typescript-eslint/parser from 8.36.0 to 8.51.0
- Updated eslint from 9.30.1 to 9.39.2
- Upgraded eslint-plugin-astro from 1.3.1 to 1.5.0
- Updated globals from 16.3.0 to 16.5.0
- Bumped pagefind from 1.3.0 to 1.4.0
- Updated prettier from 3.6.2 to 3.7.4
- Upgraded prettier-plugin-tailwindcss from 0.6.13 to 0.7.2
- Updated typescript from 5.8.3 to 5.9.3
- Bumped typescript-eslint from 8.36.0 to 8.51.0

* chore: fix prettier warnings

- Changed single quotes to double quotes for the @plugin directive in typography.css.
- Updated CSS classes to use wrap-break-word for better text handling in various elements.
2026-01-01 20:12:17 +07:00
Sat Naing e8bcc0dd60 bump: update astro to version 5.12.0 and related dependencies (#563)
- Updated astro from 5.11.0 to 5.12.0 in package.json and pnpm-lock.yaml.
- Upgraded @astrojs/markdown-remark from 6.3.2 to 6.3.3.
- Updated smol-toml from 1.3.1 to 1.4.1.
- Updated semver from 7.7.1 to 7.7.2.
2025-07-20 14:24:35 +07:00
satnaing 9d96bbd57f bump: version 5.4.3 → 5.5.0 2025-07-12 00:21:49 +07:00
Sat Naing e03aed6bf2 build(deps): update astro and other dependencies (#557)
- Bump @tailwindcss/vite, astro, and tailwindcss to 4.1.11, 5.11.0, and 4.1.11 respectively.
- Upgrade eslint, prettier, and related packages to their latest versions.
- Update typescript-eslint packages to 8.36.0 for improved compatibility.

* fix: disable ts check for tailwindcss plugin

* fix: adjust list item formatting in tailwind typography example
2025-07-09 23:29:31 +07:00
satnaing aedd98ddca bump: version 5.4.2 → 5.4.3 2025-06-21 15:15:31 +07:00
Sat Naing ce5b57b4d7 build(deps): upgrade astro and dependencies (#544)
* build(deps): bump astro from 5.9.2 to 5.10.0

* build(deps): upgrade minor and patch dependencies
2025-06-20 22:41:16 +07:00
satnaing bd2f335c3c bump: version 5.4.1 → 5.4.2 2025-06-15 15:58:33 +07:00
satnaing 37a487801d bump: version 5.4.0 → 5.4.1 2025-06-14 23:46:32 +07:00
satnaing 572553df16 bump: version 5.3.0 → 5.4.0 2025-06-14 00:16:02 +07:00
Sat Naing 76e15b55e3 feat: add Shiki transformers for better syntax highlighting (#534)
* refactor: organize prose related styles inside nested prose

* feat: add Shiki transformers for better syntax highlighting

* chore: update blog posts using Shiki transformers

Closes #210
2025-06-13 23:08:18 +07:00
satnaing b3680c590a bump: version 5.2.0 → 5.3.0 2025-06-11 18:19:47 +07:00
Sat Naing ad67e04666 build(deps): upgrade dependencies (#529)
* build(deps): upgrade dependencies

* fix: remove packageManager in package.json file

Closes #526
2025-06-11 18:03:22 +07:00
Frederik c7702bb715 build(deps): upgrade astro and related packages (#521)
* build(deps): upgrade astro and related packages 

* build: upgrade latest astro

---------

Co-authored-by: satnaing <satnaingdev@gmail.com>
2025-06-07 18:25:26 +07:00
Gray 53696266fd build: specify pnpm version in package.json and ci.yml (#513)
Specify pnpm version in both `package.json` and
`ci.yml` to avoid build errors during deployment.

---------
Closes #512
Co-authored-by: satnaing <satnaingdev@gmail.com>
2025-06-06 13:35:28 +07:00
satnaing de8da9e37a bump: version 5.1.1 → 5.2.0 2025-03-22 17:26:36 +07:00
Sat Naing 5cff7c50b9 feat: add global and per-post timezone support (#491)
* refactor: replace embedded svg with svg icon

* feat: add global and per-post timezone support

- add `SITE.timezone` in config to define a global default timezone.
- allow per-post timezone overrides via `timezone` in frontmatter.
- update date formatting logic to use the correct timezone when rendering timestamps.
- ensure that posts without a timezone fallback to `SITE.timezone`.
- improve consistency between local and deployed timezones.

* refactor: replace `LOCALE` constant with  `SITE.lang`

* docs: update guides

* fix: update code word-break inside markdown table

Closes #466
2025-03-22 17:21:21 +07:00
satnaing 237467a005 bump: version 5.1.0 → 5.1.1 2025-03-20 12:43:31 +07:00
satnaing 0d8cbaf714 bump: version 5.0.1 → 5.1.0 2025-03-18 08:18:41 +07:00
Sat Naing 9c92ba9452 build(deps): bump astro and dependencies (#484)
* build(deps): bump astro from 5.4.2 to 5.5.2

Upgrade astro and add experimental preserveScriptOrder

* build(deps): upgrade tailwind and eslint patch updates
2025-03-18 08:16:27 +07:00
satnaing ad9c26f260 bump: version 5.0.0 → 5.0.1 2025-03-12 21:49:49 +07:00
satnaing 4b730b181d bump: version 4.8.0 → 5.0.0 2025-03-08 18:21:37 +07:00
satnaing 9cf78aa64c chore: update name, version and script in package.json 2025-03-08 18:21:37 +07:00
satnaing 2b8dde4d64 build: upgrade dependencies and enable responsiveImages option 2025-03-08 18:21:37 +07:00
satnaing 579c29aac5 chore: remove unused fuse.js for search 2025-03-08 18:21:37 +07:00
Sat Naing 9119125643 feat!: add pagefind for static search (#458)
Replace React with pagefind for static site search
2025-03-08 18:21:37 +07:00
Sat Naing 35429176e0 refactor!: remove react dependency for UI interactions (#457)
Remove react as a dependency for UI interactions.
Update jsx components such as Search and Datetime
with astro components.
2025-03-08 18:21:37 +07:00
satnaing 846315a265 chore: remove eslint-plugin-jsx-a11y package 2025-03-08 18:21:37 +07:00
satnaing 172e14b5f4 build!: upgrade to Tailwind CSS v4 2025-03-08 18:21:37 +07:00
satnaing bac762f981 build: upgrade prettier and prettier config file 2025-03-08 18:21:37 +07:00
satnaing d167f6295d build: upgrade ESLint and its related packages 2025-03-08 18:21:37 +07:00
satnaing cc936ca5e4 build!: upgrade Astro to v5 and related packages 2025-03-08 18:21:37 +07:00
satnaing 1d7b6da440 bump: version 4.7.0 → 4.8.0 2025-02-08 11:53:16 +07:00
dependabot[bot] b3fd456a94 build(deps): bump astro from 4.16.3 to 4.16.18 (#431)
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 4.16.3 to 4.16.18.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/astro@4.16.18/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@4.16.18/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 15:03:48 +07:00
satnaing 8bcf870072 bump: version 4.6.0 → 4.7.0 2024-10-15 18:54:20 +07:00
dependabot[bot] ed11b740a7 build(deps): bump astro from 4.15.12 to 4.16.3 (#402)
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 4.15.12 to 4.16.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@4.16.3/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 18:51:57 +07:00
satnaing cdf31a216b bump: version 4.5.1 → 4.6.0 2024-10-13 10:38:01 +07:00
dependabot[bot] cd417f5b7d build(deps): bump cookie and astro (#397)
Bumps [cookie](https://github.com/jshttp/cookie) to 0.7.2 and updates ancestor dependency [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro). These dependencies need to be updated together.


Updates `cookie` from 0.6.0 to 0.7.2
- [Release notes](https://github.com/jshttp/cookie/releases)
- [Commits](https://github.com/jshttp/cookie/compare/v0.6.0...v0.7.2)

Updates `astro` from 4.15.6 to 4.15.12
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@4.15.12/packages/astro)

---
updated-dependencies:
- dependency-name: cookie
  dependency-type: indirect
- dependency-name: astro
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 20:53:51 +07:00
satnaing d56bc0c834 bump: version 4.5.0 → 4.5.1 2024-10-07 20:51:29 +07:00
satnaing d89fb487d2 bump: version 4.4.0 → 4.5.0 2024-09-16 21:37:02 +07:00
Sat Naing c164b5e9ea build(deps): upgrade dependencies (#381)
Bump @tailwindcss/typography from 0.5.13 to 0.5.15
Bump @types/react from 18.3.3 to 18.3.6
Bump @typescript-eslint/parser from 8.1.0 to 8.5.0
Bump astro from 4.15.4 to 4.15.6
Bump astro-eslint-parser from 1.0.2 to 1.0.3
Bump eslint from 9.9.0 to 9.10.0
Bump eslint-plugin-astro from 1.2.3 to 1.2.4
Bump prettier-plugin-tailwindcss from 0.6.5 to 0.6.6
Bump satori from 0.10.14 to 0.11.0
Bump tailwindcss from 3.4.6 to 3.4.11
Bump typescript-eslint from 8.1.0 to  8.5.0
2024-09-16 21:33:13 +07:00
satnaing 4e0e2195ac build: bump Astro to v4.15.4 2024-09-08 14:07:35 +07:00
satnaing e0b587369c bump: version 4.3.2 → 4.4.0 2024-08-19 13:13:18 +07:00