Skip to content

Binding Mirrored Pages by Content, Not Names

Adityo Guni Waluyo

Name-based bindings fork silently under renames; pagesync moves page identity into a hidden HTML marker plus a normalized sha256 drift hash.

TL;DR

The doc-sync tool mirrors markdown files from the docs folder to Plane Pages using content-shaped identity rather than names. A hidden HTML comment holding the source path sits as the first line and Plane preserves it verbatim as the sync authority. Strict tiers, sha256 drift checks on normalized markdown, and hard config validation keep sync reliable through renames and edits.

The Hidden Marker

I was about to bind mirrored pages by their page name while writing the pagesync module for the doc-sync tool. Then I stopped. Names belong to humans; a renaming editor would fork a name-based binding silently. I needed a mechanism that survives renames and ID churn without breaking the synchronization link, and that is why identity in v3 is content-shaped. The tool mirrors markdown files from .docs to self-hosted Plane Pages; this commit adds the pages engine primitives: identity, naming, tier, config validation, and drift hashes.

The identity is a hidden HTML-comment marker as the first line of the page body, holding the source file's relative path. It looks exactly like this:

<!-- plane-doc-sync:v3 path=.docs/MEETING/2026-09-27-weekly.md -->
# Meeting Notes
Actual content starts here

Per MDN, an HTML comment adds explanatory notes or prevents the browser from interpreting parts of the document, and the browser never renders it [1]. The live probe the day and night before had shown that Plane Community Edition round-trips page HTML verbatim, comments included. The official docs warn more broadly that Plane sanitizes HTML server-side [2], so the marker design leans on measured CE behavior, treating the docs as the conservative ceiling. Missing or malformed marker? The page classifies as blocked immediately. The marker path must agree with the config item path; page_id may sit in the config as the API handle, but it never binds a page to a file.

Why hidden? In v2 the marker lived on work items whose HTML is sanitized server-side, so comments got stripped. Pages do not strip them. Storage shape dictates identity shape.

Naming for Humans, Strict Tiers

Naming goes like this: MEETING: YYYY-MM-DD — </code> for two-way files, <code>DOC: <path></code> for one-way library docs, so a meeting file at <code>.docs/MEETING/2026-09-27-weekly.md</code> becomes a page named MEETING: 2026-09-27 — Weekly. The title comes from frontmatter when present, otherwise it is rebuilt from date plus file slug. Names are pleasant to read, and their role stops there. Plane pages are flat (create ignores the parent), so structure lives in the name, not in a folder hierarchy.</p> <p>Tier resolution is deliberately unambiguous. A file under both a twoway and an oneway directory resolves twoway, period; one file never gets two treatments. Outside both, error, not a guess. One-way pages are publish-only: pull is refused by design, because the direction is repo-to-page only. With content-shaped identity as the authority, these rules stay easy to run: a page's status comes from the marker plus the hash, not from vibes.</p> <h2 id="drift-and-config-validation">Drift and Config Validation</h2> <p>Drift authority is sha256 over the normalized markdown on both sides. The repo side strips YAML frontmatter before hashing, so local metadata never influences drift. The plane side hashes the markdown pulled back through the converter; pagesync normalizes before hashing, so harmless formatting changes do not trigger false drift alerts. Python ships <code>sha256</code> among hashlib's always-present constructors, though the docs carry a FIPS caveat that some hash functions provide less collision resistance than expected [3]. That is why the config validator pins the algorithm explicitly instead of trusting ambient defaults.</p> <p>Config validation has hard edges too. Every item path must resolve inside the repo; a traversal path is a config bug and hard-stops, the OWASP path traversal class of problem [4]. The <code>last_sync</code> field must hold two 64-character hex digests plus timestamps. A legacy v2 config touching pages actions dies with one exact hard-stop message, every time.</p> <p>The lesson from this small module: <strong>content-shaped identity survives renames, editor rewrites, and ID churn</strong>. Name-shaped or title-shaped identity breaks the first time someone renames a page.</p> <h2 id="sources">Sources</h2> <ul> <li>[1] <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Comments">Using HTML comments (MDN)</a></li> <li>[2] <a href="https://developers.plane.so/api-reference/page/page-content-html">Page content HTML contract (Plane API reference)</a></li> <li>[3] <a href="https://docs.python.org/3/library/hashlib.html">hashlib (Python docs)</a></li> <li>[4] <a href="https://owasp.org/www-community/attacks/Path_Traversal">Path Traversal (OWASP)</a></li> </ul></div></div></div><nav class="mt-10 flex flex-col gap-5 sm:flex-row sm:items-start sm:justify-between sm:gap-8"><a class="group min-w-0 flex-1" href="/en/blog/kontrak-dua-sisi-konverter-en"><span class="flex items-center gap-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground transition-colors group-hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left size-3.5 transition-transform group-hover:-translate-x-0.5" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg>Previous</span><span class="mt-1 block line-clamp-2 text-sm font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1">All Unit Tests Green, Yet the Converter Still Broke</span></a></nav></article><aside class="hidden xl:block"><nav aria-label="Table of contents" class="sticky top-24 max-h-[calc(100vh-7rem)] overflow-y-auto pb-8"><h3 class="mb-3 flex items-center gap-1.5 text-[13px] font-bold text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-tree size-3.5" aria-hidden="true"><path d="M8 5h13"></path><path d="M13 12h8"></path><path d="M13 19h8"></path><path d="M3 10a2 2 0 0 0 2 2h3"></path><path d="M3 5v12a2 2 0 0 0 2 2h3"></path></svg>On this page</h3><div class="text-[13px]"><div class=""><a href="#the-hidden-marker" class="group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><span class="truncate">The Hidden Marker</span></a></div><div class="mt-3"><a href="#naming-for-humans-strict-tiers" class="group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><span class="truncate">Naming for Humans, Strict Tiers</span></a></div><div class="mt-3"><a href="#drift-and-config-validation" class="group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><span class="truncate">Drift and Config Validation</span></a></div><div class="mt-3"><a href="#sources" class="group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><span class="truncate">Sources</span></a></div></div></nav></aside></div></div><div class="mx-auto max-w-6xl px-3 pb-8 sm:px-4"><section><h2 class="text-lg font-bold tracking-tight sm:text-xl">Related articles</h2><div class="mt-5 grid grid-cols-1 gap-x-10 gap-y-6 lg:grid-cols-2"><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/kontrak-dua-sisi-konverter-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-29T10:04:34Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 29, 2026</time><div title="python" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m14.25.18l.9.2l.73.26l.59.3l.45.32l.34.34l.25.34l.16.33l.1.3l.04.26l.02.2l-.01.13V8.5l-.05.63l-.13.55l-.21.46l-.26.38l-.3.31l-.33.25l-.35.19l-.35.14l-.33.1l-.3.07l-.26.04l-.21.02H8.77l-.69.05l-.59.14l-.5.22l-.41.27l-.33.32l-.27.35l-.2.36l-.15.37l-.1.35l-.07.32l-.04.27l-.02.21v3.06H3.17l-.21-.03l-.28-.07l-.32-.12l-.35-.18l-.36-.26l-.36-.36l-.35-.46l-.32-.59l-.28-.73l-.21-.88l-.14-1.05l-.05-1.23l.06-1.22l.16-1.04l.24-.87l.32-.71l.36-.57l.4-.44l.42-.33l.42-.24l.4-.16l.36-.1l.32-.05l.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75l-.02-.37l.05-.34l.11-.31l.17-.28l.25-.26l.31-.23l.38-.2l.44-.18l.51-.15l.58-.12l.64-.1l.71-.06l.77-.04l.84-.02l1.27.05zm-6.3 1.98l-.23.33l-.08.41l.08.41l.23.34l.33.22l.41.09l.41-.09l.33-.22l.23-.34l.08-.41l-.08-.41l-.23-.33l-.33-.22l-.41-.09l-.41.09zm13.09 3.95l.28.06l.32.12l.35.18l.36.27l.36.35l.35.47l.32.59l.28.73l.21.88l.14 1.04l.05 1.23l-.06 1.23l-.16 1.04l-.24.86l-.32.71l-.36.57l-.4.45l-.42.33l-.42.24l-.4.16l-.36.09l-.32.05l-.24.02l-.16-.01h-8.22v.82h5.84l.01 2.76l.02.36l-.05.34l-.11.31l-.17.29l-.25.25l-.31.24l-.38.2l-.44.17l-.51.15l-.58.13l-.64.09l-.71.07l-.77.04l-.84.01l-1.27-.04l-1.07-.14l-.9-.2l-.73-.25l-.59-.3l-.45-.33l-.34-.34l-.25-.34l-.16-.33l-.1-.3l-.04-.25l-.02-.2l.01-.13v-5.34l.05-.64l.13-.54l.21-.46l.26-.38l.3-.32l.33-.24l.35-.2l.35-.14l.33-.1l.3-.06l.26-.04l.21-.02l.13-.01h5.84l.69-.05l.59-.14l.5-.21l.41-.28l.33-.32l.27-.35l.2-.36l.15-.36l.1-.35l.07-.32l.04-.28l.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33l-.08.41l.08.41l.23.33l.33.23l.41.08l.41-.08l.33-.23l.23-.33l.08-.41l-.08-.41l-.23-.33l-.33-.23l-.41-.08l-.41.08z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>tooling</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">All Unit Tests Green, Yet the Converter Still Broke</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">Three pull-side bugs slipped past unit tests that were green on each side; only the round-trip property test caught the unsynchronized two-sided contract.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/konverter-html-markdown-round-trip-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-29T09:20:28Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 29, 2026</time><div title="python" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m14.25.18l.9.2l.73.26l.59.3l.45.32l.34.34l.25.34l.16.33l.1.3l.04.26l.02.2l-.01.13V8.5l-.05.63l-.13.55l-.21.46l-.26.38l-.3.31l-.33.25l-.35.19l-.35.14l-.33.1l-.3.07l-.26.04l-.21.02H8.77l-.69.05l-.59.14l-.5.22l-.41.27l-.33.32l-.27.35l-.2.36l-.15.37l-.1.35l-.07.32l-.04.27l-.02.21v3.06H3.17l-.21-.03l-.28-.07l-.32-.12l-.35-.18l-.36-.26l-.36-.36l-.35-.46l-.32-.59l-.28-.73l-.21-.88l-.14-1.05l-.05-1.23l.06-1.22l.16-1.04l.24-.87l.32-.71l.36-.57l.4-.44l.42-.33l.42-.24l.4-.16l.36-.1l.32-.05l.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75l-.02-.37l.05-.34l.11-.31l.17-.28l.25-.26l.31-.23l.38-.2l.44-.18l.51-.15l.58-.12l.64-.1l.71-.06l.77-.04l.84-.02l1.27.05zm-6.3 1.98l-.23.33l-.08.41l.08.41l.23.34l.33.22l.41.09l.41-.09l.33-.22l.23-.34l.08-.41l-.08-.41l-.23-.33l-.33-.22l-.41-.09l-.41.09zm13.09 3.95l.28.06l.32.12l.35.18l.36.27l.36.35l.35.47l.32.59l.28.73l.21.88l.14 1.04l.05 1.23l-.06 1.23l-.16 1.04l-.24.86l-.32.71l-.36.57l-.4.45l-.42.33l-.42.24l-.4.16l-.36.09l-.32.05l-.24.02l-.16-.01h-8.22v.82h5.84l.01 2.76l.02.36l-.05.34l-.11.31l-.17.29l-.25.25l-.31.24l-.38.2l-.44.17l-.51.15l-.58.13l-.64.09l-.71.07l-.77.04l-.84.01l-1.27-.04l-1.07-.14l-.9-.2l-.73-.25l-.59-.3l-.45-.33l-.34-.34l-.25-.34l-.16-.33l-.1-.3l-.04-.25l-.02-.2l.01-.13v-5.34l.05-.64l.13-.54l.21-.46l.26-.38l.3-.32l.33-.24l.35-.2l.35-.14l.33-.1l.3-.06l.26-.04l.21-.02l.13-.01h5.84l.69-.05l.59-.14l.5-.21l.41-.28l.33-.32l.27-.35l.2-.36l.15-.36l.1-.35l.07-.32l.04-.28l.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33l-.08.41l.08.41l.23.33l.33.23l.41.08l.41-.08l.33-.23l.23-.33l.08-.41l-.08-.41l-.23-.33l-.33-.23l-.41-.08l-.41.08z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>tooling</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">Two-way converter: conservative on push, tolerant on pull</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">A horizontal rule that vanished without a trace exposed a healthy two-way converter design: canonical push, tolerant pull that still refuses loudly.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/konverter-markdown-fail-loud-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-29T08:26:50Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 29, 2026</time><div title="python" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m14.25.18l.9.2l.73.26l.59.3l.45.32l.34.34l.25.34l.16.33l.1.3l.04.26l.02.2l-.01.13V8.5l-.05.63l-.13.55l-.21.46l-.26.38l-.3.31l-.33.25l-.35.19l-.35.14l-.33.1l-.3.07l-.26.04l-.21.02H8.77l-.69.05l-.59.14l-.5.22l-.41.27l-.33.32l-.27.35l-.2.36l-.15.37l-.1.35l-.07.32l-.04.27l-.02.21v3.06H3.17l-.21-.03l-.28-.07l-.32-.12l-.35-.18l-.36-.26l-.36-.36l-.35-.46l-.32-.59l-.28-.73l-.21-.88l-.14-1.05l-.05-1.23l.06-1.22l.16-1.04l.24-.87l.32-.71l.36-.57l.4-.44l.42-.33l.42-.24l.4-.16l.36-.1l.32-.05l.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75l-.02-.37l.05-.34l.11-.31l.17-.28l.25-.26l.31-.23l.38-.2l.44-.18l.51-.15l.58-.12l.64-.1l.71-.06l.77-.04l.84-.02l1.27.05zm-6.3 1.98l-.23.33l-.08.41l.08.41l.23.34l.33.22l.41.09l.41-.09l.33-.22l.23-.34l.08-.41l-.08-.41l-.23-.33l-.33-.22l-.41-.09l-.41.09zm13.09 3.95l.28.06l.32.12l.35.18l.36.27l.36.35l.35.47l.32.59l.28.73l.21.88l.14 1.04l.05 1.23l-.06 1.23l-.16 1.04l-.24.86l-.32.71l-.36.57l-.4.45l-.42.33l-.42.24l-.4.16l-.36.09l-.32.05l-.24.02l-.16-.01h-8.22v.82h5.84l.01 2.76l.02.36l-.05.34l-.11.31l-.17.29l-.25.25l-.31.24l-.38.2l-.44.17l-.51.15l-.58.13l-.64.09l-.71.07l-.77.04l-.84.01l-1.27-.04l-1.07-.14l-.9-.2l-.73-.25l-.59-.3l-.45-.33l-.34-.34l-.25-.34l-.16-.33l-.1-.3l-.04-.25l-.02-.2l.01-.13v-5.34l.05-.64l.13-.54l.21-.46l.26-.38l.3-.32l.33-.24l.35-.2l.35-.14l.33-.1l.3-.06l.26-.04l.21-.02l.13-.01h5.84l.69-.05l.59-.14l.5-.21l.41-.28l.33-.32l.27-.35l.2-.36l.15-.36l.1-.35l.07-.32l.04-.28l.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33l-.08.41l.08.41l.23.33l.33.23l.41.08l.41-.08l.33-.23l.23-.33l.08-.41l-.08-.41l-.23-.33l-.33-.23l-.41-.08l-.41.08z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>tooling</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">The Markdown converter I trust is the one that refuses</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">A two-way repo-to-Plane converter that rejects anything outside a closed subset, line number included, instead of guessing.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/plane-pages-mirror-dokumen-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-29T07:17:53Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 29, 2026</time><div title="git" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M13.09 23.549a1.54 1.54 0 0 1-2.18 0L.451 13.089a1.54 1.54 0 0 1 0-2.179l7.191-7.19l2.733 2.733a1.85 1.85 0 0 0 .964 2.326v6.66a1.849 1.849 0 1 0 1.54 0V8.957l2.508 2.508a1.85 1.85 0 1 0 1.09-1.09l-2.634-2.634a1.85 1.85 0 0 0-2.378-2.377L8.73 2.63L10.91.451a1.54 1.54 0 0 1 2.179 0l10.459 10.46a1.54 1.54 0 0 1 0 2.179z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>devops</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">The document mirror moved offices: work items to Plane Pages</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">The document mirror moved off the kanban board and into Plane Pages, and the storage contract forced a full identity redesign.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/plane-gate-bukti-done-terverifikasi-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-28T16:25:45Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 28, 2026</time><div title="git" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M13.09 23.549a1.54 1.54 0 0 1-2.18 0L.451 13.089a1.54 1.54 0 0 1 0-2.179l7.191-7.19l2.733 2.733a1.85 1.85 0 0 0 .964 2.326v6.66a1.849 1.849 0 1 0 1.54 0V8.957l2.508 2.508a1.85 1.85 0 1 0 1.09-1.09l-2.634-2.634a1.85 1.85 0 0 0-2.378-2.377L8.73 2.63L10.91.451a1.54 1.54 0 0 1 2.179 0l10.459 10.46a1.54 1.54 0 0 1 0 2.179z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>devops</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">Done on the tracker is a claim; the proof lives in Git</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">A card flipped to Done with nothing behind it. Now a work item only counts as done when its evidence hashes actually resolve in the repository.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/plane-doc-sync-refusal-taxonomy-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-28T16:25:27Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 28, 2026</time><div title="python" class="flex size-14 shrink-0 items-center justify-center gap-0.5 sm:size-16 sm:gap-1"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-full transition-transform duration-200 group-hover:scale-110" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m14.25.18l.9.2l.73.26l.59.3l.45.32l.34.34l.25.34l.16.33l.1.3l.04.26l.02.2l-.01.13V8.5l-.05.63l-.13.55l-.21.46l-.26.38l-.3.31l-.33.25l-.35.19l-.35.14l-.33.1l-.3.07l-.26.04l-.21.02H8.77l-.69.05l-.59.14l-.5.22l-.41.27l-.33.32l-.27.35l-.2.36l-.15.37l-.1.35l-.07.32l-.04.27l-.02.21v3.06H3.17l-.21-.03l-.28-.07l-.32-.12l-.35-.18l-.36-.26l-.36-.36l-.35-.46l-.32-.59l-.28-.73l-.21-.88l-.14-1.05l-.05-1.23l.06-1.22l.16-1.04l.24-.87l.32-.71l.36-.57l.4-.44l.42-.33l.42-.24l.4-.16l.36-.1l.32-.05l.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75l-.02-.37l.05-.34l.11-.31l.17-.28l.25-.26l.31-.23l.38-.2l.44-.18l.51-.15l.58-.12l.64-.1l.71-.06l.77-.04l.84-.02l1.27.05zm-6.3 1.98l-.23.33l-.08.41l.08.41l.23.34l.33.22l.41.09l.41-.09l.33-.22l.23-.34l.08-.41l-.08-.41l-.23-.33l-.33-.22l-.41-.09l-.41.09zm13.09 3.95l.28.06l.32.12l.35.18l.36.27l.36.35l.35.47l.32.59l.28.73l.21.88l.14 1.04l.05 1.23l-.06 1.23l-.16 1.04l-.24.86l-.32.71l-.36.57l-.4.45l-.42.33l-.42.24l-.4.16l-.36.09l-.32.05l-.24.02l-.16-.01h-8.22v.82h5.84l.01 2.76l.02.36l-.05.34l-.11.31l-.17.29l-.25.25l-.31.24l-.38.2l-.44.17l-.51.15l-.58.13l-.64.09l-.71.07l-.77.04l-.84.01l-1.27-.04l-1.07-.14l-.9-.2l-.73-.25l-.59-.3l-.45-.33l-.34-.34l-.25-.34l-.16-.33l-.1-.3l-.04-.25l-.02-.2l.01-.13v-5.34l.05-.64l.13-.54l.21-.46l.26-.38l.3-.32l.33-.24l.35-.2l.35-.14l.33-.1l.3-.06l.26-.04l.21-.02l.13-.01h5.84l.69-.05l.59-.14l.5-.21l.41-.28l.33-.32l.27-.35l.2-.36l.15-.36l.1-.35l.07-.32l.04-.28l.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33l-.08.41l.08.41l.23.33l.33.23l.41.08l.41-.08l.33-.23l.23-.33l.08-.41l-.08-.41l-.23-.33l-.33-.23l-.41-.08l-.41.08z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>backend</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">Two-way document sync: the trustworthy tool refuses precisely</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">A pull returned different content than my push, with no error. The fix was not a smarter parser but a precise map of what the sync refuses to do.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/plane-onboarding-satu-pintu-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-28T16:25:02Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 28, 2026</time><div aria-hidden="true" class="flex size-14 shrink-0 items-center justify-center text-muted-foreground/40 sm:size-16 lg:size-[4.5rem]"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-7 text-muted-foreground/60 sm:size-8 lg:size-10" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M13.983 11.078h2.119a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.119a.185.185 0 0 0-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 0 0 .186-.186V3.574a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 0 0 .186-.186V6.29a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 0 0 .184-.186V6.29a.185.185 0 0 0-.185-.185H8.1a.185.185 0 0 0-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 0 0 .185-.186V6.29a.185.185 0 0 0-.185-.185H5.136a.186.186 0 0 0-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 0 0 .185-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.186.186 0 0 0-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51q-.508.001-1.01.087c-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199l-.226.327c-.284.438-.49.922-.612 1.43c-.23.97-.09 1.882.403 2.661c-.595.332-1.55.413-1.744.42H.751a.75.75 0 0 0-.75.748a11.4 11.4 0 0 0 .692 4.062c.545 1.428 1.355 2.48 2.41 3.124c1.18.723 3.1 1.137 5.275 1.137a15.7 15.7 0 0 0 2.93-.266a12.3 12.3 0 0 0 3.823-1.389a10.5 10.5 0 0 0 2.61-2.136c1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009c.309-.293.55-.65.707-1.046l.098-.288Z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>devops</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">One-door Plane onboarding: logic in one repo, data in every repo</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">I almost copied a skill folder into every repository. The healthier shape turned out to be one onboarding door and tiny consumer footprints.</p></div></a></div><div class="relative"><span aria-hidden="true" class="absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9"></span><a class="group relative flex items-start gap-3 sm:gap-4" href="/en/blog/fb45375-plane-mirror-api-probe-en"><div class="relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]"><time dateTime="2026-09-28T15:30:45Z" class="inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock3 lucide-clock-3 size-2.5 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6h4"></path></svg>Sep 28, 2026</time><div aria-hidden="true" class="flex size-14 shrink-0 items-center justify-center text-muted-foreground/40 sm:size-16 lg:size-[4.5rem]"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="size-7 text-muted-foreground/60 sm:size-8 lg:size-10" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M13.983 11.078h2.119a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.119a.185.185 0 0 0-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 0 0 .186-.186V3.574a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 0 0 .186-.186V6.29a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 0 0 .184-.186V6.29a.185.185 0 0 0-.185-.185H8.1a.185.185 0 0 0-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 0 0 .185-.186V6.29a.185.185 0 0 0-.185-.185H5.136a.186.186 0 0 0-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 0 0 .185-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.186.186 0 0 0-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51q-.508.001-1.01.087c-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199l-.226.327c-.284.438-.49.922-.612 1.43c-.23.97-.09 1.882.403 2.661c-.595.332-1.55.413-1.744.42H.751a.75.75 0 0 0-.75.748a11.4 11.4 0 0 0 .692 4.062c.545 1.428 1.355 2.48 2.41 3.124c1.18.723 3.1 1.137 5.275 1.137a15.7 15.7 0 0 0 2.93-.266a12.3 12.3 0 0 0 3.823-1.389a10.5 10.5 0 0 0 2.61-2.136c1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009c.309-.293.55-.65.707-1.046l.098-.288Z"/></svg></div><span aria-hidden="true" class="absolute -bottom-1 left-1/2 h-px w-5 bg-border"></span><span aria-hidden="true" class="absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100"></span></div><div class="min-w-0 flex-1 pt-0.5"><span class="inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]"><span class="size-1.5 animate-pulse rounded-full bg-primary"></span>devops</span><h3 class="mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]">Live probe vs my Plane spec: two assumptions died in 27 minutes</h3><p class="mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs">My 905-line Plane sync spec lost two assumptions to a live probe: HTML markers stripped by server-side sanitization, archive endpoint 404.</p></div></a></div></div></section></div><!--$--><!--/$--></main><footer class="relative border-t border-border/60 bg-card/30 backdrop-blur-xl"><div class="pointer-events-none absolute inset-x-0 top-0 h-40 overflow-hidden"><div class="absolute left-1/4 top-0 h-40 w-80 rounded-full bg-[#2ea043] opacity-[0.05] blur-[80px]"></div><div class="absolute right-1/4 top-0 h-40 w-80 rounded-full bg-[#1f6feb] opacity-[0.05] blur-[80px]"></div></div><div class="h-px bg-gradient-to-r from-transparent via-[#2ea043]/60 to-transparent"></div><div class="relative mx-auto max-w-6xl"><div class="px-3 py-10 sm:px-4 sm:py-12"><div class="grid gap-10 sm:gap-8 lg:grid-cols-[1.5fr_2fr]"><div class="flex flex-col"><a class="group inline-flex w-fit items-center gap-2.5" href="/en"><div class="flex size-9 items-center justify-center rounded-lg bg-gradient-to-br from-[#238636] via-[#1f6feb] to-[color:var(--accent-purple)] shadow-[0_0_12px_rgba(31,111,235,0.30)] transition-transform duration-300 group-hover:scale-105"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-terminal size-4 text-white" aria-hidden="true"><path d="M12 19h8"></path><path d="m4 17 6-6-6-6"></path></svg></div><span class="text-gradient-tri bg-[length:200%_auto] text-xl font-bold tracking-tight">Adityo</span></a><p class="mt-4 max-w-sm text-sm leading-relaxed text-muted-foreground">Web Developer & IT Specialist — Over 15 years of experience in web development, server infrastructure, and AI integration.</p><div class="mt-5 flex gap-2"><a href="https://github.com/didiet86" target="_blank" rel="noopener noreferrer" aria-label="GitHub" class="group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80" style="--social-color:var(--foreground)"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-4 transition-colors duration-300" style="color:var(--social-color)"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg><span class="pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100">GitHub</span></a><a href="https://wa.me/6289666666741" target="_blank" rel="noopener noreferrer" aria-label="WhatsApp" class="group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80" style="--social-color:#25d366"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-4 transition-colors duration-300" style="color:var(--social-color)"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"></path></svg><span class="pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100">WhatsApp</span></a><a href="#" class="group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80" aria-label="Email" style="--social-color:#1f6feb"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail size-4 transition-colors duration-300" aria-hidden="true" style="color:var(--social-color)"><path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"></path><rect x="2" y="4" width="20" height="16" rx="2"></rect></svg><span class="pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100">Email</span></a></div><div class="mt-6"><div class="mb-2.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground/50">Tech Stack</div><div class="flex flex-wrap items-center gap-1.5"><div title="WordPress" class="group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-300 group-hover/tech:scale-125" style="color:#21759b"><path d="M3.42 12c0-1.24.27-2.42.75-3.47l4.07 11.13A8.56 8.56 0 0 1 3.42 12zm8.58 8.58c-.83 0-1.64-.12-2.4-.35l2.55-7.4 2.61 7.16.06.14a8.58 8.58 0 0 1-2.82.45zm1.2-12.87c.51-.03.97-.08.97-.08.46-.05.4-.73-.05-.7 0 0-1.38.11-2.27.11-.84 0-2.24-.11-2.24-.11-.46-.03-.51.68-.06.7 0 0 .43.05.89.08l1.32 3.62-1.86 5.56-3.08-9.18c.51-.03.97-.08.97-.08.46-.05.4-.73-.05-.7 0 0-1.38.11-2.27.11-.16 0-.35 0-.55-.01A8.56 8.56 0 0 1 12 3.42c2.25 0 4.3.86 5.84 2.27-.04 0-.08-.01-.12-.01-.83 0-1.42.72-1.42 1.5 0 .69.4 1.28.82 1.97.32.56.69 1.28.69 2.32 0 .72-.28 1.55-.64 2.72l-.84 2.81-3.05-9.07zm2.4 11.27l2.55-7.38c.48-1.19.64-2.14.64-2.99 0-.31-.02-.6-.06-.87a8.56 8.56 0 0 1-3.13 11.24zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 19.13c-5.04 0-9.13-4.09-9.13-9.13S6.96 2.87 12 2.87s9.13 4.09 9.13 9.13-4.09 9.13-9.13 9.13z"></path></svg><span class="text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground">WordPress</span></div><div title="Python" class="group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-300 group-hover/tech:scale-125" style="color:#009688"><path d="M11.914 0C5.82 0 6.2 2.656 6.2 2.656l.007 2.752h5.814v.826H3.9S0 5.789 0 11.96c0 6.17 3.403 5.95 3.403 5.95h2.03v-2.867s-.109-3.403 3.34-3.403h5.762s3.233.052 3.233-3.123V3.225S18.49 0 11.914 0zM8.788 1.865a1.04 1.04 0 1 1 0 2.08 1.04 1.04 0 0 1 0-2.08z"></path><path d="M12.086 24c6.094 0 5.714-2.656 5.714-2.656l-.007-2.752h-5.814v-.826h8.121S24 18.211 24 12.04c0-6.17-3.403-5.95-3.403-5.95h-2.03v2.867s.109 3.403-3.34 3.403H9.465s-3.233-.052-3.233 3.123v5.292S5.51 24 12.086 24zm3.126-1.865a1.04 1.04 0 1 1 0-2.08 1.04 1.04 0 0 1 0 2.08z"></path></svg><span class="text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground">Python</span></div><div title="Docker" class="group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-300 group-hover/tech:scale-125" style="color:#2496ed"><path d="M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.186.186 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.749 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"></path></svg><span class="text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground">Docker</span></div><div title="Next.js" class="group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-300 group-hover/tech:scale-125" style="color:var(--foreground)"><path d="M11.5725 0c-.1763 0-.3049.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.5064 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1577-.0184-.0139-.8727-1.1556-1.8978-2.5363l-1.8633-2.5097-2.3345-3.4566c-1.2828-1.9012-2.34-3.4588-2.3493-3.4588-.0093-.0022-.0186 1.5347-.0237 3.4071-.0067 3.2787-.0093 3.4118-.0516 3.4877-.061.0915-.108.1156-.2584.1337-.0915.0093-.3411.0139-.6234.0139h-.5143l-.1336-.0841c-.087-.0558-.1491-.1282-.1902-.2159l-.061-.1402.0067-4.5523.0093-4.5541.0915-.1156c.0475-.061.1491-.1395.2183-.1783.1194-.061.1665-.0665.6735-.0665.5961 0 .6937.0237.8483.1963.0431.0475 1.3066 1.9487 2.8112 4.2223 1.5045 2.2735 3.5607 5.3812 4.5707 6.9083l1.8354 2.7755.0925-.061c1.0289-.6665 2.118-1.6179 2.9623-2.5989 1.8229-2.118 2.9973-4.7393 3.3896-7.4949.0962-.6591.108-.8538.108-1.7475s-.012-1.0884-.108-1.7476c-.652-4.5064-3.8591-8.2919-8.2087-9.6945-.7751-.2511-1.5958-.4223-2.5337-.5255-.3239-.0346-1.8567-.0716-2.0223-.0581zm5.4483 7.2163c.1337 0 .1577.012.2183.061.0431.0328.087.0935.0991.1337.0139.0431.0186 1.4186.0139 3.0611l-.0093 2.9876-.6983-1.0695-.7075-1.0714v-1.9068c0-1.2525.0093-1.9326.0237-1.9763.0186-.061.0707-.1156.1282-.1491.0475-.0237.1953-.0328.932-.0328z"></path></svg><span class="text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground">Next.js</span></div><div title="AI" class="group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80"><svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-300 group-hover/tech:scale-125" style="color:#a371f7"><path d="M12 2a1 1 0 0 1 1 1v1.06a3.5 3.5 0 0 1 2.5 3.44v.5a3.5 3.5 0 0 1 2.5 3.34v.16a3.5 3.5 0 0 1-1.5 5.69V18a3.5 3.5 0 0 1-3.5 3.5h-.5a2.5 2.5 0 0 1-5 0H7A3.5 3.5 0 0 1 3.5 18v-.31A3.5 3.5 0 0 1 2 12v-.16a3.5 3.5 0 0 1 2.5-3.34v-.5A3.5 3.5 0 0 1 7 4.06V3a1 1 0 0 1 1-1 1 1 0 0 1 1 1v1h2V3a1 1 0 0 1 1-1zm-1 6a1 1 0 0 0-1 1v6a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1zm-3 3a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0v-3a1 1 0 0 0-1-1zm6 0a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0v-3a1 1 0 0 0-1-1z"></path></svg><span class="text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground">AI</span></div></div></div></div><div class="grid grid-cols-2 gap-6 sm:grid-cols-3 sm:gap-8"><div class="group/menu"><h4 class="mb-3.5 flex items-center gap-2 text-sm font-bold"><span class="inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4"></span>Main Menu</h4><ul class="space-y-2"><li><a class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground" href="/en"><span class="relative">Home<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground" href="/en/about"><span class="relative">About<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">Chat AI<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">RAG System<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">Design Clone<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li></ul></div><div class="group/menu"><h4 class="mb-3.5 flex items-center gap-2 text-sm font-bold"><span class="inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4"></span>Services</h4><ul class="space-y-2"><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">Web Development<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">DevOps & Cloud<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">AI Integration<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">IT Consultation<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li></ul></div><div class="group/menu"><h4 class="mb-3.5 flex items-center gap-2 text-sm font-bold"><span class="inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4"></span>Contact</h4><ul class="space-y-2"><li><a href="https://github.com/didiet86" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">GitHub<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="https://wa.me/6289666666741" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">WhatsApp<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li><li><a href="#" class="group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground"><span class="relative">LinkedIn<span class="absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full"></span></span></a></li></ul></div></div></div><div class="my-8 h-px bg-gradient-to-r from-transparent via-border to-transparent"></div><div class="flex flex-col items-center justify-between gap-4 sm:flex-row sm:gap-6"><div class="flex flex-col items-center gap-1 text-center sm:items-start sm:text-left"><p class="text-[13px] text-muted-foreground">© 2025 Adityo GW. All rights reserved.</p><p class="flex items-center gap-1.5 text-xs text-muted-foreground/60">Built with<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart size-3 fill-[#2ea043] text-[#2ea043]" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path></svg>using Next.js, Tailwind CSS & shadcn/ui</p></div><a href="#top" class="group/up flex items-center gap-2 rounded-full border border-border/60 bg-background/40 px-4 py-2 text-[13px] font-medium text-muted-foreground backdrop-blur-sm transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80 hover:text-foreground"><span>Back to top</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up size-3.5 transition-transform duration-300 group-hover/up:-translate-y-0.5" aria-hidden="true"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg></a></div></div></div></footer><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","name":"Adityo Guni Waluyo","url":"https://adityo.web.id","image":"https://adityo.web.id/profile.jpg","jobTitle":"Web Developer & AI Integration Specialist","email":"mailto:adityogw86@gmail.com","sameAs":["https://github.com/didiet86","https://wa.me/6289666666741"],"knowsAbout":["Web Development","DevOps","AI Integration","Docker","Python","Next.js","WordPress"],"worksFor":{"@type":"Organization","name":"Adityo GW"}}</script><script src="/_next/static/chunks/0akuu0mhpupaq.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[32035,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"default\"]\n3:I[591168,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"default\"]\n6:I[364381,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[364381,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"ViewportBoundary\"]\nc:I[364381,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"MetadataBoundary\"]\ne:I[775115,[],\"default\",1]\n11:I[404489,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"default\"]\n13:I[752306,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"Providers\"]\n15:I[374332,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"default\"]\n17:I[551624,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"default\"]\n22:I[744308,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"EmailLink\"]\n23:I[824499,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"default\"]\n2d:I[504189,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"default\"]\n2e:I[816506,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\"],\"\"]\n:HL[\"/_next/static/chunks/0cqmbsfo6x1vs.css\",\"style\"]\n:HL[\"/_next/static/chunks/1y-r98el9mv7p.css\",\"style\"]\n:HL[\"/_next/static/media/1b99372b3eaef0c8-s.p.1gsd1jahc5dg_.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/b8b552e8609c5636-s.p.2qe5xx8d5sx8i.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"en\",\"blog\",\"identitas-konten-pagesync-en\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"locale\",\"en\",\"d\",null],{\"children\":[\"blog\",{\"children\":[[\"slug\",\"identitas-konten-pagesync-en\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0cqmbsfo6x1vs.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1y-r98el9mv7p.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L4\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1m-bnru4--byc.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2-88ubju-8gg4.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/2bu39lgwf083t.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/30qir_z2dql5f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/2sby9c-4xwieh.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/14qsee9d-htmq.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/37xamenotiwny.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/_next/static/chunks/31-10y-ic6vfz.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/_next/static/chunks/0c05mme6db5y2.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/_next/static/chunks/1dbumlihosg07.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/_next/static/chunks/3scufj0koz643.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,\"$@9\"]},null,false,null]},null,false,\"$@9\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"EZZNZ66M7qvU0uFsJ4_Zu\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n4:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"inter_fbdc5002-module__JJo7gW__variable outfit_9369865f-module__dEjsIq__variable fira_code_1eba2a4e-module__nHXpmq__variable h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#main\",\"className\":\"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:rounded-lg focus:bg-white focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:shadow-lg\",\"children\":\"Skip to content\"}],\"$L10\",[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Adityo Guni Waluyo\\\",\\\"url\\\":\\\"https://adityo.web.id\\\",\\\"image\\\":\\\"https://adityo.web.id/profile.jpg\\\",\\\"jobTitle\\\":\\\"Web Developer \u0026 AI Integration Specialist\\\",\\\"email\\\":\\\"mailto:adityogw86@gmail.com\\\",\\\"sameAs\\\":[\\\"https://github.com/didiet86\\\",\\\"https://wa.me/6289666666741\\\"],\\\"knowsAbout\\\":[\\\"Web Development\\\",\\\"DevOps\\\",\\\"AI Integration\\\",\\\"Docker\\\",\\\"Python\\\",\\\"Next.js\\\",\\\"WordPress\\\"],\\\"worksFor\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Adityo GW\\\"}}\"}}]]}]}]\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:[\"$\",\"$L11\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"Nav\":{\"home\":\"Home\",\"about\":\"About\",\"activity\":\"Activity\",\"portfolio\":\"Portfolio\",\"blog\":\"Blog\",\"ai\":\"Ask AI\"},\"Navbar\":{\"consultation\":\"Consultation\",\"lightMode\":\"Light Mode\",\"darkMode\":\"Dark Mode\"},\"SearchDialog\":{\"placeholder\":\"Search articles, courses, or topics...\",\"menuLabel\":\"Menu\",\"noResults\":\"No results found for \\\"{query}\\\"\",\"trendingLabel\":\"Trending\"},\"AiSearch\":{\"askAction\":\"Ask AI\",\"askHint\":\"answers grounded in this blog's articles\",\"analyzing\":\"Analyzing context…\",\"sourcesLabel\":\"Sources\",\"articlesSourcesLabel\":\"Articles\",\"followupsLabel\":\"Follow-up questions\",\"answerDisclaimer\":\"AI answers are generated from this blog's articles.\",\"rateLimited\":\"Too many requests. Try again later.\",\"errorGeneric\":\"Something went wrong while generating the answer.\",\"retry\":\"Retry\",\"youLabel\":\"You\",\"threadRegion\":\"Conversation with AI\",\"openLabel\":\"Ask AI\",\"betaLabel\":\"Beta\",\"greeting\":\"Hi 👋 Ask me anything about the articles on this blog.\",\"inputPlaceholder\":\"Ask anything...\",\"sendLabel\":\"Send\",\"resultsHeading\":\"Search results\",\"usedInAnswer\":\"Used in answer\",\"sitePageLabel\":\"Site page\",\"knowledgeLabel\":\"Knowledge\",\"modeSearch\":\"Search Articles\",\"modeAbout\":\"Ask Adityo\",\"modeMixed\":\"Mixed\",\"fallbackCache\":\"Answered from cache\",\"fallbackNoLlm\":\"Answered from the knowledge base\",\"relatedArticles\":\"Related articles\",\"backLabel\":\"Back\",\"whatsappCtaLabel\":\"WhatsApp Chat\",\"searchingHint\":\"Searching…\",\"historyPagination\":\"Conversation history\",\"pageLabel\":\"Open history item {n}\",\"clearHistory\":\"Clear chat history\",\"clearHistoryConfirm\":\"Sure?\",\"answerFullLabel\":\"Full answer\",\"answerPending\":\"Composing answer…\",\"stepUnderstand\":\"Understanding question\",\"stepSearch\":\"Searching site content\",\"stepCompose\":\"Composing answer\",\"answeredIn\":\"Answered in {s}s\",\"answeredLabel\":\"Answered\",\"kind_articles\":\"articles\",\"kind_portfolio\":\"portfolio\",\"kind_activity\":\"activity\",\"kind_knowledge\":\"knowledge\",\"stopLabel\":\"Stop\",\"copyLabel\":\"Copy\",\"copiedLabel\":\"Copied\",\"regenerateLabel\":\"Regenerate\",\"deleteTurnLabel\":\"Delete turn\",\"cardsArticles\":\"From the blog\",\"cardsPortfolio\":\"Projects\",\"cardsActivity\":\"Latest activity\",\"cardsSitePages\":\"From the site\",\"showMoreLabel\":\"Show more\",\"showLessLabel\":\"Show less\",\"pageHomeLabel\":\"Home page\",\"pageAboutLabel\":\"About page\",\"pageActivityLabel\":\"Activity page\",\"pagePortfolioLabel\":\"Portfolio page\",\"pageStatsLabel\":\"GitHub stats\",\"pageReposLabel\":\"Repositories\",\"statCommits\":\"{n} total commits\",\"statStreak\":\"{n}-day streak\",\"statAvg\":\"{n} commits/day\",\"statTopLang\":\"Top language: {n}\",\"jumpToLatest\":\"Jump to latest\"},\"AiPage\":{\"title\":\"Ask AI\",\"description\":\"Full-width AI chat workspace — ask about this blog's articles or about Adityo, with grounded sources and follow-up questions.\",\"chatColumnLabel\":\"Chat\",\"outputColumnLabel\":\"Answer\",\"contextColumnLabel\":\"Sources \u0026 follow-ups\",\"historyTitle\":\"Conversation history\"},\"TechStack\":{\"subheadingLabel\":\"Technologies Used\"},\"Footer\":{\"mainMenu\":\"Main Menu\",\"services\":\"Services\",\"contact\":\"Contact\",\"chatAI\":\"Chat AI\",\"ragSystem\":\"RAG System\",\"designClone\":\"Design Clone\",\"webDev\":\"Web Development\",\"devops\":\"DevOps \u0026 Cloud\",\"aiIntegration\":\"AI Integration\",\"itConsultation\":\"IT Consultation\",\"github\":\"GitHub\",\"whatsapp\":\"WhatsApp\",\"linkedin\":\"LinkedIn\",\"email\":\"Email\",\"techStack\":\"Tech Stack\",\"brandDescription\":\"Web Developer \u0026 IT Specialist — Over 15 years of experience in web development, server infrastructure, and AI integration.\",\"copyright\":\"© 2025 Adityo GW. All rights reserved.\",\"builtWith\":\"Built with\",\"usingTech\":\"using Next.js, Tailwind CSS \u0026 shadcn/ui\",\"backToTop\":\"Back to top\"},\"Hero\":{\"badge\":\"Web Developer • DevOps • AI Integration\",\"headingLine1\":\"Building AI-Powered\",\"headingHighlight\":\"Apps \u0026 Infrastructure\",\"description\":\"Over \u003chighlight\u003e15 years\u003c/highlight\u003e of experience in web development, server architecture, automation, and AI engineering. Focused on fast, scalable, and maintainable solutions for modern business needs.\",\"ctaPortfolio\":\"View Portfolio\",\"ctaTools\":\"Try AI Tools\",\"floatValue\":\"15+ Years\",\"floatLabel\":\"Experience\",\"synced\":\"synced\",\"noErrors\":\"No errors\"},\"Stats\":{\"experience\":\"Years Experience\",\"websites\":\"Websites Built\",\"uptime\":\"Server Uptime\",\"clients\":\"Active Clients\"},\"WhyUs\":{\"badge\":\"Expertise \u0026 Services\",\"headingPrefix\":\"Comprehensive\",\"headingHighlight\":\"Digital Solutions\",\"subheading\":\"From web development to AI integration — all your digital needs in one place.\",\"webDevTitle\":\"Web Development\",\"webDevDesc\":\"WordPress specialist, FastAPI backend, Elementor custom widgets, and theme development tailored to your business needs.\",\"devopsTitle\":\"DevOps \u0026 Cloud\",\"devopsDesc\":\"Docker, Nginx, CI/CD pipeline, DigitalOcean, Vultr, Cloudflare DNS — reliable deployment \u0026 server management.\",\"aiTitle\":\"AI \u0026 Machine Learning\",\"aiDesc\":\"RAG integration, LLM, Ollama, and MCP Server — building intelligent applications powered by AI.\",\"dbTitle\":\"Database\",\"dbDesc\":\"PostgreSQL with pgvector, MySQL, schema design, query optimization, and database performance management.\",\"seoTitle\":\"SEO \u0026 Digital Marketing\",\"seoDesc\":\"Digital marketing strategy, content optimization, traffic management, and online visibility improvement.\",\"monitoringTitle\":\"Monitoring \u0026 Observability\",\"monitoringDesc\":\"Grafana, Prometheus, Loki for logging, metrics, and alerting — ensuring optimal system performance.\"},\"Features\":{\"badge\":\"Production Code\",\"headingPrefix\":\"Real code from\",\"headingHighlight\":\"production projects\",\"description\":\"FastAPI backend, Docker config, RAG pipeline, and automation used by real clients.\",\"viewActivity\":\"View Activity\"},\"Activities\":{\"headingPrefix\":\"Projects \u0026\",\"headingHighlight\":\"Services\",\"description\":\"Real-world projects and ongoing services powered by modern technology.\",\"toolsDate\":\"2020 – Present\",\"toolsTitle\":\"Tools AI Platform\",\"toolsDesc\":\"All-in-one AI platform with Chat (RAG + Web Search), Design Clone Pipeline, AI Website Builder, and stealth Crawler. Built with FastAPI, Docker, and pgvector.\",\"webDate\":\"2015 – Present\",\"webTitle\":\"Web Development\",\"webDesc\":\"Website creation and maintenance with WordPress, custom Elementor widgets, theme development, SEO optimization, and performance tuning for various clients.\",\"devopsDate\":\"2017 – Present\",\"devopsTitle\":\"DevOps Consulting\",\"devopsDesc\":\"Server setup and maintenance, Docker containerization, CI/CD pipeline, Nginx proxy, Cloudflare DNS, and monitoring with Grafana — reliable infrastructure for your business.\",\"aiDate\":\"2019 – Present\",\"aiTitle\":\"AI Integration\",\"aiDesc\":\"Custom chatbots, RAG systems with pgvector, LLM integration (OpenAI, Anthropic Claude, Gemini), and AI-powered automation tools.\",\"dbDate\":\"2017 – Present\",\"dbTitle\":\"Database Engineering\",\"dbDesc\":\"PostgreSQL with pgvector, MySQL, schema design, query optimization, and data-driven backends for production workloads.\",\"seoDate\":\"2015 – Present\",\"seoTitle\":\"SEO \u0026 Performance\",\"seoDesc\":\"Technical SEO, Core Web Vitals tuning, structured data, and content strategy that grew client traffic for years.\",\"monitorDate\":\"2018 – Present\",\"monitorTitle\":\"Monitoring \u0026 Observability\",\"monitorDesc\":\"Grafana dashboards, Prometheus metrics, Loki logging, and alerting setups that keep systems healthy and incidents short.\",\"autoDate\":\"2020 – Present\",\"autoTitle\":\"Automation \u0026 Crawlers\",\"autoDesc\":\"Web scrapers, stealth crawlers, workflow automation, and CI/CD glue that remove repetitive work from your operations.\",\"viewAll\":\"View All\"},\"Services\":{\"headingPrefix\":\"Professional\",\"headingHighlight\":\"Services\",\"description\":\"End-to-end digital solutions tailored to your business needs.\",\"cta\":\"Consultation\",\"webDevLabel\":\"Website Development\",\"webDevPrice\":\"WordPress \u0026 FastAPI\",\"webDevDesc\":\"Business websites, company profiles, e-commerce, and custom web applications with WordPress + Elementor or FastAPI backend.\",\"webDevF1\":\"Custom Theme \u0026 Widget\",\"webDevF2\":\"SEO Optimization\",\"webDevF3\":\"Responsive Design\",\"devopsLabel\":\"DevOps \u0026 Cloud\",\"devopsPrice\":\"Infrastructure Setup\",\"devopsDesc\":\"Server setup and maintenance, Docker containerization, CI/CD pipeline, Nginx, and monitoring — reliable 24/7 infrastructure.\",\"devopsF1\":\"Docker \u0026 Docker Compose\",\"devopsF2\":\"Grafana \u0026 Prometheus\",\"devopsF3\":\"99.9% Uptime SLA\",\"aiLabel\":\"AI Integration\",\"aiPrice\":\"Custom AI Solution\",\"aiDesc\":\"AI chatbot integration, RAG systems, design automation, and custom AI tools to boost your business efficiency.\",\"aiF1\":\"RAG \u0026 LLM Integration\",\"aiF2\":\"Custom Chatbot\",\"aiF3\":\"Web Scraping \u0026 Automation\"},\"Testimonials\":{\"badge\":\"Client Testimonials\",\"headingPrefix\":\"Trusted by\",\"headingHighlight\":\"Clients\",\"description\":\"Delivering reliable solutions with long-term partnerships.\",\"esaRole\":\"DevOps \u0026 Server Management — Since 2017\",\"esaQuote\":\"Our servers and infrastructure are managed with the utmost professionalism. 99.9% uptime over the years. Fast response and efficient solutions for every issue.\",\"indoRole\":\"Web Development \u0026 SEO — 2021 to 2025\",\"indoQuote\":\"indopos.co.id and indoposco.id were built and maintained exceptionally well. The SEO optimization significantly increased traffic over 4 years of partnership.\",\"wiraRole\":\"Web Development \u0026 Server — Active\",\"wiraQuote\":\"Our website and server maintenance runs smoothly. Fast and professional support — both remote and on-site. Highly recommended for web and IT needs.\"},\"CTA\":{\"badge\":\"Get Started\",\"heading\":\"Ready to Build Something Great?\",\"description\":\"Let's discuss your project and find the best solution for your business.\",\"button\":\"Get in Touch\",\"buttonSecondary\":\"Try AI Tools\",\"activeClients\":\"Active \u0026 ongoing clients\",\"yearsValue\":\"15+ Years\",\"yearsLabel\":\"Experience\"},\"ActivityFeed\":{\"badge\":\"Commit Feed\",\"heading\":\"All Commits\",\"description\":\"Search and filter all commits from all repositories\",\"searchPlaceholder\":\"Search commits or repos...\",\"allFilter\":\"All\",\"errorLoad\":\"Failed to load the commit list.\",\"emptyFilter\":\"No commits match the filter.\",\"loadMore\":\"Load more\",\"showingCount\":\"Showing {visible} of {total} commits\"},\"ActivityHero\":{\"badge\":\"Live Development Activity\",\"headingLine1\":\"What I'm\",\"headingHighlight\":\"Working On\",\"description\":\"Every commit, every fix, every feature — all recorded in real-time from my GitHub repositories. See what I'm building right now.\",\"statCommits\":\"commits\",\"statStreak\":\"day streak\",\"statRepos\":\"active repos\"},\"ActivityStats\":{\"badge\":\"Statistics\",\"headingLine1\":\"Measured\",\"headingHighlight\":\"Activity\",\"description\":\"Summary of contributions, language distribution, and my weekly activity patterns.\",\"statCommits\":\"Commits\",\"statPRs\":\"Pull Requests\",\"statRepos\":\"Repos\",\"statStreak\":\"Streak\",\"streakSuffix\":\"d\",\"languages\":\"Languages\",\"categories\":\"Categories\",\"weekly\":\"Weekly\",\"avgPerDay\":\"Avg /day\",\"longestStreak\":\"Longest streak (days)\",\"mostActiveHour\":\"Most active (WIB)\",\"errorLoad\":\"Failed to load activity statistics.\",\"weekday_mon\":\"Mon\",\"weekday_tue\":\"Tue\",\"weekday_wed\":\"Wed\",\"weekday_thu\":\"Thu\",\"weekday_fri\":\"Fri\",\"weekday_sat\":\"Sat\",\"weekday_sun\":\"Sun\"},\"ActivityTimeline\":{\"badge\":\"Timeline\",\"headingLine1\":\"Recent\",\"headingHighlight\":\"Activity\",\"description\":\"Explore commits by time, or search and filter all commits across every repository.\",\"searchPlaceholder\":\"Search commits or repos...\",\"filterLabel\":\"Filter\",\"filterAll\":\"All\",\"tabToday\":\"Today\",\"tabYesterday\":\"Yesterday\",\"tabThisWeek\":\"This Week\",\"tabEarlier\":\"Earlier\",\"loadMore\":\"Load More\",\"loadAgain\":\"Load Again\",\"loading\":\"Loading...\",\"showingResults\":\"Showing {shown} of {total} commits\",\"errorCommits\":\"Failed to load commit list.\",\"noCommitsMatch\":\"No commits match the filter.\",\"errorTimeline\":\"Failed to load activity timeline.\",\"noCommitsPeriod\":\"No commits in this period yet.\",\"timeJustNow\":\"Just now\",\"timeMinAgo\":\"{count} min ago\",\"timeHoursAgo\":\"{count} hours ago\",\"timeDaysAgo\":\"{count} days ago\",\"filesSuffix\":\"file\",\"filesPluralSuffix\":\"files\"},\"ActivityRepositories\":{\"badge\":\"Repositories\",\"headingLine1\":\"Active\",\"headingHighlight\":\"Repositories\",\"description\":\"All projects I'm currently working on, with real-time contribution stats.\",\"searchPlaceholder\":\"Search repo, language, or topic...\",\"searchResult\":\"{shown} of {total} repos\",\"searchAll\":\"{total} repos\",\"errorLoad\":\"Failed to load repository list.\",\"noMatch\":\"No matching repositories.\",\"colRepository\":\"Repository\",\"colLanguage\":\"Language\",\"colActivity\":\"Activity\",\"colUpdate\":\"Update\",\"commitSuffix\":\"commit\",\"pageLabel\":\"Page {page} / {total}\",\"prev\":\"Prev\",\"next\":\"Next\",\"timeJustNow\":\"Just now\",\"timeHoursAgo\":\"{count} hours ago\",\"timeDaysAgo\":\"{count} days ago\",\"repoAiTools\":\"All-in-one AI platform: Chat (RAG + Web Search), Design Clone Pipeline, AI Website Builder, and stealth Crawler.\",\"repoPortfolio\":\"Portfolio website built with Next.js 15, TypeScript, TailwindCSS, and GSAP animations.\",\"repoDocker\":\"Docker infrastructure templates, CI/CD pipelines, and monitoring dashboards for all services.\",\"repoElementor\":\"Collection of custom Elementor widgets: animated counters, pricing tables, timeline, and testimonial sliders.\",\"repoCrawler\":\"High-performance web crawler with proxy rotation, headless browser rendering, and anti-detection.\",\"repoRag\":\"Vector database service with pgvector, document ingestion pipeline, and semantic search API.\",\"repoDesignClone\":\"Automated pipeline for cloning website designs: screenshot → analyze → generate HTML/CSS.\",\"repoWebsiteBuilder\":\"AI-powered website builder: prompt → generate components → deploy. Integrated with LLM + template engine.\"},\"ContributionHeatmap\":{\"noContributions\":\"No contributions\",\"contributionsSuffix\":\"contributions\",\"onDate\":\"on\",\"yearSummary\":\"contributions in the last year\",\"legendLess\":\"Less\",\"legendMore\":\"More\",\"weekday_sun\":\"Sun\",\"weekday_mon\":\"Mon\",\"weekday_tue\":\"Tue\",\"weekday_wed\":\"Wed\",\"weekday_thu\":\"Thu\",\"weekday_fri\":\"Fri\",\"weekday_sat\":\"Sat\",\"month_jan\":\"Jan\",\"month_feb\":\"Feb\",\"month_mar\":\"Mar\",\"month_apr\":\"Apr\",\"month_may\":\"May\",\"month_jun\":\"Jun\",\"month_jul\":\"Jul\",\"month_aug\":\"Aug\",\"month_sep\":\"Sep\",\"month_oct\":\"Oct\",\"month_nov\":\"Nov\",\"month_dec\":\"Dec\"},\"AboutHero\":{\"badge\":\"About Me\",\"subtitle\":\"Web Developer \u0026 IT Specialist\",\"description\":\"I am a Web Developer \u0026 IT Specialist with over \u003chighlight\u003e15 years\u003c/highlight\u003e of experience in web development, server management, and digital performance optimization. Currently working as a freelancer and involved in several website projects and server maintenance.\",\"statusBadge\":\"Available for work\",\"stat1Label\":\"Years Experience\",\"stat2Label\":\"Clients\",\"stat3Label\":\"Projects\",\"stat4Label\":\"Uptime\"},\"AboutServices\":{\"badge\":\"Services\",\"headingPrefix\":\"Services I\",\"headingHighlight\":\"Offer\",\"description\":\"End-to-end solutions for your digital business needs — from web development to server infrastructure and AI integration.\",\"webDevTitle\":\"Web Development\",\"webDevDesc\":\"Professional website development with WordPress + Elementor, custom theme \u0026 plugin, and FastAPI for scalable backend services.\",\"webDevF1\":\"Company Profile\",\"webDevF2\":\"E-Commerce\",\"webDevF3\":\"Landing Page\",\"webDevF4\":\"Custom Web App\",\"devopsTitle\":\"DevOps \u0026 Server\",\"devopsDesc\":\"Server management, deployment automation, monitoring, and end-to-end digital infrastructure security.\",\"devopsF1\":\"Docker \u0026 CI/CD\",\"devopsF2\":\"Server Maintenance\",\"devopsF3\":\"Cloud Management\",\"devopsF4\":\"Monitoring \u0026 Alerting\",\"aiTitle\":\"AI Integration\",\"aiDesc\":\"Integrating AI into business workflows, intelligent chatbots, RAG pipelines, and LLM-based automation.\",\"aiF1\":\"Chatbot \u0026 Assistant\",\"aiF2\":\"RAG Pipeline\",\"aiF3\":\"MCP Server\",\"aiF4\":\"AI Workflow\"},\"AboutSkills\":{\"badge\":\"Skills\",\"headingPrefix\":\"Technical\",\"headingHighlight\":\"Skills\",\"description\":\"Technologies and tools I master to build end-to-end digital solutions.\",\"levelExpert\":\"Expert\",\"levelAdvanced\":\"Advanced\",\"levelIntermediate\":\"Intermediate\",\"skill1Desc\":\"Theme, Custom Widget, Plugin\",\"skill1Years\":\"15+ years\",\"skill2Desc\":\"Backend, API, AI Services\",\"skill2Years\":\"4+ years\",\"skill3Desc\":\"CI/CD, Git, Auto Deployment\",\"skill3Years\":\"6+ years\",\"skill4Desc\":\"DigitalOcean, Vultr, Cloudflare\",\"skill4Years\":\"10+ years\",\"skill5Desc\":\"Grafana, Prometheus, Loki\",\"skill5Years\":\"4+ years\",\"skill6Desc\":\"LLM, Ollama, MCP Server\",\"skill6Years\":\"2+ years\",\"skill7Desc\":\"React Framework, SSR, SSG\",\"skill7Years\":\"2+ years\",\"skill8Desc\":\"SPA, Nuxt, Composition API\",\"skill8Years\":\"2+ years\",\"skill9Desc\":\"Static Sites, Islands, MPA\",\"skill9Years\":\"1+ years\"},\"AboutTimeline\":{\"badge\":\"Work Experience\",\"headingPrefix\":\"Career \u0026\",\"headingHighlight\":\"Experience\",\"description\":\"My professional journey from junior developer to freelance specialist.\",\"nowLabel\":\"Now\",\"stackLabel\":\"Stack\",\"period1\":\"2024 — Present\",\"title1\":\"AI Infrastructure Engineer \u0026 Solutions Architect\",\"desc1\":\"Designing and building AI platforms powered by Local LLM, RAG (Retrieval-Augmented Generation), MCP (Model Context Protocol), and AI Agents for coding, knowledge management, and workflow automation. Focused on scalable, efficient, and self-hosted architecture.\",\"period2\":\"2019 — 2024\",\"title2\":\"Freelance Web Developer \u0026 IT Specialist\",\"desc2\":\"Handling website development and server maintenance, helping clients maintain performance, security, and continuity of their online services.\",\"period3\":\"2015 — 2019\",\"title3\":\"IT \u0026 Web Developer\",\"desc3\":\"Internal system development, server infrastructure management, and digital service optimization for the company.\",\"period4\":\"2010 — 2015\",\"title4\":\"Web Developer\",\"desc4\":\"Focused on website development with WordPress, custom themes, and plugin development for various clients.\",\"period5\":\"2008 — 2010\",\"title5\":\"Junior Web Developer\",\"desc5\":\"Starting my career in web development, learning HTML, CSS, PHP, and WordPress from the ground up.\"},\"AboutCTA\":{\"headingPrefix\":\"Interested in Working\",\"headingHighlight\":\"Together?\",\"description\":\"I'm always open to discussing new projects, creative ideas, or collaboration opportunities. Contact me via WhatsApp for a quick response.\",\"whatsappButton\":\"Chat WhatsApp\",\"emailButton\":\"Send Email\",\"whatsappText\":\"Hello Adityo, I am interested in discussing a project.\"},\"AboutPage\":{\"title\":\"About Adityo GW\",\"description\":\"Adityo Guni Waluyo — web developer \u0026 IT specialist with 15+ years experience in WordPress, FastAPI, Docker, and AI integration.\"},\"ActivityPage\":{\"title\":\"Activity\",\"description\":\"Real-time development activity by Adityo GW — commits, pull requests, and repositories from GitHub.\"},\"Blog\":{\"badge\":\"Insights\",\"headingPrefix\":\"Case Studies \u0026\",\"headingHighlight\":\"Technology\",\"description\":\"Sharing experience, technical tips, and insights from real projects.\",\"viewAll\":\"View all articles\",\"readMore\":\"Read more\",\"ragTitle\":\"Building a RAG System with pgvector and FastAPI\",\"ragExcerpt\":\"A complete guide to building a Retrieval-Augmented Generation system using PostgreSQL pgvector, FastAPI, and embedding models for semantic search.\",\"dockerTitle\":\"Docker Multi-Service: Nginx, FastAPI, and Grafana Stack\",\"dockerExcerpt\":\"How to set up production-grade infrastructure with Docker Compose — reverse proxy, API server, monitoring stack, and automated SSL certificate renewal.\",\"scrapingTitle\":\"Stealth Web Scraping with Playwright for AI Training Data\",\"scrapingExcerpt\":\"Undetectable web scraping techniques using Playwright with stealth injection — for collecting AI training data efficiently and legally.\"},\"BlogPage\":{\"badge\":\"Blog\",\"title\":\"Blog\",\"description\":\"Technical notes on web development, DevOps, and AI integration.\",\"articlesCount\":\"{count, plural, =0 {No articles} one {# article} other {# articles}}\",\"allArticles\":\"All articles\",\"search\":\"Search articles…\",\"categories\":\"Categories\",\"tags\":\"Tags\",\"latest\":\"Latest articles\",\"aboutTitle\":\"About\",\"aboutText\":\"Field notes from building and shipping — architecture decisions, migrations, and lessons from real projects.\",\"emptyTitle\":\"No articles found\",\"emptyDescription\":\"Try a different category, tag, or search term.\",\"minutes\":\"min read\",\"previous\":\"Previous\",\"next\":\"Next\",\"onThisPage\":\"On this page\",\"pageOf\":\"Page {page} of {total}\",\"prevPage\":\"Previous page\",\"nextPage\":\"Next page\",\"related\":\"Related articles\",\"tldr\":\"TL;DR\",\"ttsListen\":\"Listen\",\"ttsStop\":\"Stop\",\"ttsLoading\":\"Preparing audio…\",\"ttsUnavailable\":\"Playback is not available in this browser\"},\"PortfolioPage\":{\"title\":\"Portfolio\",\"description\":\"Portfolio of Adityo GW — AI platforms, web development, DevOps infrastructure, and automation tools.\"},\"PortfolioHero\":{\"badge\":\"Portfolio \u0026 Projects\",\"headingPrefix\":\"My\",\"headingHighlight\":\"Projects\",\"description\":\"A collection of projects I've worked on — from AI platforms, web development, DevOps infrastructure, to automation tools. Each project is built with a focus on scalable and maintainable architecture.\",\"statRealLabel\":\"Real Projects\",\"statRealNote\":\"not demos\",\"statLiveLabel\":\"Live Updated\",\"statLiveNote\":\"via Agent Zero\"},\"PortfolioGrid\":{\"headingPrefix\":\"All\",\"headingHighlight\":\"Projects\",\"resultCount\":\"{count} projects total\",\"searchPlaceholder\":\"Search projects, tech, or tags...\",\"tabAll\":\"All\",\"tabGithub\":\"GitHub Repos\",\"tabCustom\":\"Custom Projects\",\"errorLoad\":\"Failed to load project data. Please refresh the page.\",\"emptySearch\":\"No projects matching \\\"{query}\\\"\",\"emptyDefault\":\"No projects yet.\",\"paginationShowing\":\"Showing {start}–{end} of {total} projects\",\"prevPage\":\"Previous page\",\"nextPage\":\"Next page\"},\"PortfolioCard\":{\"statusActive\":\"Active\",\"statusCompleted\":\"Completed\",\"statusArchived\":\"Archived\",\"code\":\"Code\",\"private\":\"Private\",\"liveDemo\":\"Live Demo\",\"present\":\"Now\",\"unknownLanguage\":\"Unknown\",\"noDescription\":\"No description available.\",\"repo\":\"Repo\",\"timeToday\":\"today\",\"timeDaysAgo\":\"{days}d ago\",\"timeWeeksAgo\":\"{weeks}w ago\",\"timeMonthsAgo\":\"{months}mo ago\"},\"HomePage\":{\"title\":\"Adityo GW — Web Developer \u0026 AI Integration Specialist\",\"description\":\"Adityo GW — web developer specializing in AI-powered apps, DevOps infrastructure, and scalable web solutions. 15+ years experience.\",\"seoDescription\":\"Adityo GW is a freelance web developer and AI integration specialist based in Indonesia. With over 15 years of experience, he builds AI-powered applications, DevOps infrastructure, and scalable web solutions using Python, FastAPI, Next.js, Docker, OpenAI, and Anthropic Claude. Services include custom web development, AI chatbot integration, RAG (Retrieval-Augmented Generation) systems, WordPress development, server automation, CI/CD pipelines, and cloud deployment. Explore the portfolio of real-world projects, AI tools, and activity showcasing practical implementations of modern web technologies, machine learning APIs, and infrastructure as code.\"},\"NotFound\":{\"description\":\"Page not found. The page you're looking for doesn't exist or has been moved.\",\"backHome\":\"Back to Home\",\"viewPortfolio\":\"View Portfolio\",\"aboutMe\":\"About Me\"}},\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":\"$L12\"}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"$L13\",null,{\"children\":[\"$L14\",[\"$\",\"$L15\",null,{}],[\"$\",\"main\",null,{\"id\":\"main\",\"className\":\"flex-1\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$L16\",[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],\"$L19\"]}]\n1b:T450,M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"])</script><script>self.__next_f.push([1,"18:[\"$\",\"footer\",null,{\"className\":\"relative border-t border-border/60 bg-card/30 backdrop-blur-xl\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute inset-x-0 top-0 h-40 overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute left-1/4 top-0 h-40 w-80 rounded-full bg-[#2ea043] opacity-[0.05] blur-[80px]\"}],[\"$\",\"div\",null,{\"className\":\"absolute right-1/4 top-0 h-40 w-80 rounded-full bg-[#1f6feb] opacity-[0.05] blur-[80px]\"}]]}],[\"$\",\"div\",null,{\"className\":\"h-px bg-gradient-to-r from-transparent via-[#2ea043]/60 to-transparent\"}],[\"$\",\"div\",null,{\"className\":\"relative mx-auto max-w-6xl\",\"children\":[\"$\",\"div\",null,{\"className\":\"px-3 py-10 sm:px-4 sm:py-12\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid gap-10 sm:gap-8 lg:grid-cols-[1.5fr_2fr]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col\",\"children\":[\"$L1a\",[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-sm text-sm leading-relaxed text-muted-foreground\",\"children\":\"Web Developer \u0026 IT Specialist — Over 15 years of experience in web development, server infrastructure, and AI integration.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5 flex gap-2\",\"children\":[[\"$\",\"a\",\"GitHub\",{\"href\":\"https://github.com/didiet86\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"GitHub\",\"className\":\"group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80\",\"style\":{\"--social-color\":\"var(--foreground)\"},\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-4 transition-colors duration-300\",\"style\":{\"color\":\"var(--social-color)\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"}]}],[\"$\",\"span\",null,{\"className\":\"pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100\",\"children\":\"GitHub\"}]]}],[\"$\",\"a\",\"WhatsApp\",{\"href\":\"https://wa.me/6289666666741\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"WhatsApp\",\"className\":\"group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80\",\"style\":{\"--social-color\":\"#25d366\"},\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-4 transition-colors duration-300\",\"style\":{\"color\":\"var(--social-color)\"},\"children\":[\"$\",\"path\",null,{\"d\":\"$1b\"}]}],\"$L1c\"]}],\"$L1d\"]}],\"$L1e\"]}],\"$L1f\"]}],\"$L20\",\"$L21\"]}]}]]}]\n"])</script><script>self.__next_f.push([1,"1c:[\"$\",\"span\",null,{\"className\":\"pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100\",\"children\":\"WhatsApp\"}]\n1d:[\"$\",\"$L22\",\"Email\",{\"user\":\"adityogw86\",\"domain\":\"gmail.com\",\"aria-label\":\"Email\",\"className\":\"group/social relative flex size-9 items-center justify-center rounded-full border border-border/60 bg-background/40 text-muted-foreground transition-all duration-300 hover:-translate-y-0.5 hover:border-transparent hover:bg-background/80\",\"style\":{\"--social-color\":\"#1f6feb\"},\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\",\"key\":\"132q7q\"}],[\"rect\",{\"x\":\"2\",\"y\":\"4\",\"width\":\"20\",\"height\":\"16\",\"rx\":\"2\",\"key\":\"izxlao\"}]],\"className\":\"lucide-mail size-4 transition-colors duration-300\",\"style\":{\"color\":\"var(--social-color)\"}}],[\"$\",\"span\",null,{\"className\":\"pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full border border-border bg-popover px-2.5 py-1 text-xs font-medium text-popover-foreground opacity-0 shadow-xl transition-all duration-200 group-hover/social:-top-10 group-hover/social:opacity-100\",\"children\":\"Email\"}]]}]\n24:T677,"])</script><script>self.__next_f.push([1,"M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.186.186 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.749 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"])</script><script>self.__next_f.push([1,"1e:[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground/50\",\"children\":\"Tech Stack\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-1.5\",\"children\":[[\"$\",\"div\",\"WordPress\",{\"title\":\"WordPress\",\"className\":\"group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-3.5 transition-transform duration-300 group-hover/tech:scale-125\",\"style\":{\"color\":\"#21759b\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M3.42 12c0-1.24.27-2.42.75-3.47l4.07 11.13A8.56 8.56 0 0 1 3.42 12zm8.58 8.58c-.83 0-1.64-.12-2.4-.35l2.55-7.4 2.61 7.16.06.14a8.58 8.58 0 0 1-2.82.45zm1.2-12.87c.51-.03.97-.08.97-.08.46-.05.4-.73-.05-.7 0 0-1.38.11-2.27.11-.84 0-2.24-.11-2.24-.11-.46-.03-.51.68-.06.7 0 0 .43.05.89.08l1.32 3.62-1.86 5.56-3.08-9.18c.51-.03.97-.08.97-.08.46-.05.4-.73-.05-.7 0 0-1.38.11-2.27.11-.16 0-.35 0-.55-.01A8.56 8.56 0 0 1 12 3.42c2.25 0 4.3.86 5.84 2.27-.04 0-.08-.01-.12-.01-.83 0-1.42.72-1.42 1.5 0 .69.4 1.28.82 1.97.32.56.69 1.28.69 2.32 0 .72-.28 1.55-.64 2.72l-.84 2.81-3.05-9.07zm2.4 11.27l2.55-7.38c.48-1.19.64-2.14.64-2.99 0-.31-.02-.6-.06-.87a8.56 8.56 0 0 1-3.13 11.24zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 19.13c-5.04 0-9.13-4.09-9.13-9.13S6.96 2.87 12 2.87s9.13 4.09 9.13 9.13-4.09 9.13-9.13 9.13z\"}]}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground\",\"children\":\"WordPress\"}]]}],[\"$\",\"div\",\"Python\",{\"title\":\"Python\",\"className\":\"group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-3.5 transition-transform duration-300 group-hover/tech:scale-125\",\"style\":{\"color\":\"#009688\"},\"children\":[[\"$\",\"path\",null,{\"d\":\"M11.914 0C5.82 0 6.2 2.656 6.2 2.656l.007 2.752h5.814v.826H3.9S0 5.789 0 11.96c0 6.17 3.403 5.95 3.403 5.95h2.03v-2.867s-.109-3.403 3.34-3.403h5.762s3.233.052 3.233-3.123V3.225S18.49 0 11.914 0zM8.788 1.865a1.04 1.04 0 1 1 0 2.08 1.04 1.04 0 0 1 0-2.08z\"}],[\"$\",\"path\",null,{\"d\":\"M12.086 24c6.094 0 5.714-2.656 5.714-2.656l-.007-2.752h-5.814v-.826h8.121S24 18.211 24 12.04c0-6.17-3.403-5.95-3.403-5.95h-2.03v2.867s.109 3.403-3.34 3.403H9.465s-3.233-.052-3.233 3.123v5.292S5.51 24 12.086 24zm3.126-1.865a1.04 1.04 0 1 1 0-2.08 1.04 1.04 0 0 1 0 2.08z\"}]]}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground\",\"children\":\"Python\"}]]}],[\"$\",\"div\",\"Docker\",{\"title\":\"Docker\",\"className\":\"group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-3.5 transition-transform duration-300 group-hover/tech:scale-125\",\"style\":{\"color\":\"#2496ed\"},\"children\":[\"$\",\"path\",null,{\"d\":\"$24\"}]}],\"$L25\"]}],\"$L26\",\"$L27\"]}]]}]\n"])</script><script>self.__next_f.push([1,"1f:[\"$\",\"div\",null,{\"className\":\"grid grid-cols-2 gap-6 sm:grid-cols-3 sm:gap-8\",\"children\":[[\"$\",\"div\",\"Footer.mainMenu\",{\"className\":\"group/menu\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3.5 flex items-center gap-2 text-sm font-bold\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4\"}],\"Main Menu\"]}],[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"Nav.home\",{\"children\":\"$L28\"}],[\"$\",\"li\",\"Nav.about\",{\"children\":\"$L29\"}],[\"$\",\"li\",\"Footer.chatAI\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"Chat AI\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.ragSystem\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"RAG System\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.designClone\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"Design Clone\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}]]}]]}],[\"$\",\"div\",\"Footer.services\",{\"className\":\"group/menu\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3.5 flex items-center gap-2 text-sm font-bold\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4\"}],\"Services\"]}],[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"Footer.webDev\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"Web Development\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.devops\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"DevOps \u0026 Cloud\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.aiIntegration\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"AI Integration\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.itConsultation\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"IT Consultation\",\"$L2a\"]}]}]}]]}]]}],\"$L2b\"]}]\n"])</script><script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"my-8 h-px bg-gradient-to-r from-transparent via-border to-transparent\"}]\n"])</script><script>self.__next_f.push([1,"21:[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-between gap-4 sm:flex-row sm:gap-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center gap-1 text-center sm:items-start sm:text-left\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"© 2025 Adityo GW. All rights reserved.\"}],[\"$\",\"p\",null,{\"className\":\"flex items-center gap-1.5 text-xs text-muted-foreground/60\",\"children\":[\"Built with\",[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\"key\":\"mvr1a0\"}]],\"className\":\"lucide-heart size-3 fill-[#2ea043] text-[#2ea043]\"}],\"using Next.js, Tailwind CSS \u0026 shadcn/ui\"]}]]}],[\"$\",\"a\",null,{\"href\":\"#top\",\"className\":\"group/up flex items-center gap-2 rounded-full border border-border/60 bg-background/40 px-4 py-2 text-[13px] font-medium text-muted-foreground backdrop-blur-sm transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80 hover:text-foreground\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Back to top\"}],[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m5 12 7-7 7 7\",\"key\":\"hav0vg\"}],[\"path\",{\"d\":\"M12 19V5\",\"key\":\"x0mq9r\"}]],\"className\":\"lucide-arrow-up size-3.5 transition-transform duration-300 group-hover/up:-translate-y-0.5\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"25:[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground\",\"children\":\"Docker\"}]\n2c:T596,"])</script><script>self.__next_f.push([1,"M11.5725 0c-.1763 0-.3049.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.5064 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1577-.0184-.0139-.8727-1.1556-1.8978-2.5363l-1.8633-2.5097-2.3345-3.4566c-1.2828-1.9012-2.34-3.4588-2.3493-3.4588-.0093-.0022-.0186 1.5347-.0237 3.4071-.0067 3.2787-.0093 3.4118-.0516 3.4877-.061.0915-.108.1156-.2584.1337-.0915.0093-.3411.0139-.6234.0139h-.5143l-.1336-.0841c-.087-.0558-.1491-.1282-.1902-.2159l-.061-.1402.0067-4.5523.0093-4.5541.0915-.1156c.0475-.061.1491-.1395.2183-.1783.1194-.061.1665-.0665.6735-.0665.5961 0 .6937.0237.8483.1963.0431.0475 1.3066 1.9487 2.8112 4.2223 1.5045 2.2735 3.5607 5.3812 4.5707 6.9083l1.8354 2.7755.0925-.061c1.0289-.6665 2.118-1.6179 2.9623-2.5989 1.8229-2.118 2.9973-4.7393 3.3896-7.4949.0962-.6591.108-.8538.108-1.7475s-.012-1.0884-.108-1.7476c-.652-4.5064-3.8591-8.2919-8.2087-9.6945-.7751-.2511-1.5958-.4223-2.5337-.5255-.3239-.0346-1.8567-.0716-2.0223-.0581zm5.4483 7.2163c.1337 0 .1577.012.2183.061.0431.0328.087.0935.0991.1337.0139.0431.0186 1.4186.0139 3.0611l-.0093 2.9876-.6983-1.0695-.7075-1.0714v-1.9068c0-1.2525.0093-1.9326.0237-1.9763.0186-.061.0707-.1156.1282-.1491.0475-.0237.1953-.0328.932-.0328z"])</script><script>self.__next_f.push([1,"26:[\"$\",\"div\",\"Next.js\",{\"title\":\"Next.js\",\"className\":\"group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-3.5 transition-transform duration-300 group-hover/tech:scale-125\",\"style\":{\"color\":\"var(--foreground)\"},\"children\":[\"$\",\"path\",null,{\"d\":\"$2c\"}]}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground\",\"children\":\"Next.js\"}]]}]\n27:[\"$\",\"div\",\"AI\",{\"title\":\"AI\",\"className\":\"group/tech flex items-center gap-1.5 rounded-full border border-border/50 bg-background/40 px-2.5 py-1 transition-all duration-300 hover:-translate-y-0.5 hover:border-muted-foreground/30 hover:bg-background/80\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"size-3.5 transition-transform duration-300 group-hover/tech:scale-125\",\"style\":{\"color\":\"#a371f7\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M12 2a1 1 0 0 1 1 1v1.06a3.5 3.5 0 0 1 2.5 3.44v.5a3.5 3.5 0 0 1 2.5 3.34v.16a3.5 3.5 0 0 1-1.5 5.69V18a3.5 3.5 0 0 1-3.5 3.5h-.5a2.5 2.5 0 0 1-5 0H7A3.5 3.5 0 0 1 3.5 18v-.31A3.5 3.5 0 0 1 2 12v-.16a3.5 3.5 0 0 1 2.5-3.34v-.5A3.5 3.5 0 0 1 7 4.06V3a1 1 0 0 1 1-1 1 1 0 0 1 1 1v1h2V3a1 1 0 0 1 1-1zm-1 6a1 1 0 0 0-1 1v6a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1zm-3 3a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0v-3a1 1 0 0 0-1-1zm6 0a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0v-3a1 1 0 0 0-1-1z\"}]}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-muted-foreground transition-colors group-hover/tech:text-foreground\",\"children\":\"AI\"}]]}]\n2a:[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]\n"])</script><script>self.__next_f.push([1,"2b:[\"$\",\"div\",\"Footer.contact\",{\"className\":\"group/menu\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3.5 flex items-center gap-2 text-sm font-bold\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-block h-3 w-0.5 rounded-full bg-gradient-to-b from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/menu:h-4\"}],\"Contact\"]}],[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"Footer.github\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/didiet86\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"GitHub\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.whatsapp\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://wa.me/6289666666741\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"WhatsApp\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}],[\"$\",\"li\",\"Footer.linkedin\",{\"children\":[\"$\",\"a\",null,{\"href\":\"#\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"LinkedIn\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"1a:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en\",\"locale\":\"$undefined\",\"localeCookie\":{\"name\":\"NEXT_LOCALE\",\"sameSite\":\"lax\"},\"className\":\"group inline-flex w-fit items-center gap-2.5\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex size-9 items-center justify-center rounded-lg bg-gradient-to-br from-[#238636] via-[#1f6feb] to-[color:var(--accent-purple)] shadow-[0_0_12px_rgba(31,111,235,0.30)] transition-transform duration-300 group-hover:scale-105\",\"children\":[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M12 19h8\",\"key\":\"baeox8\"}],[\"path\",{\"d\":\"m4 17 6-6-6-6\",\"key\":\"1yngyt\"}]],\"className\":\"lucide-terminal size-4 text-white\"}]}],[\"$\",\"span\",null,{\"className\":\"text-gradient-tri bg-[length:200%_auto] text-xl font-bold tracking-tight\",\"children\":\"Adityo\"}]]}]\n28:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"Home\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]\n29:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/about\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group/link relative inline-block text-[13px] text-muted-foreground transition-colors duration-200 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"relative\",\"children\":[\"About\",[\"$\",\"span\",null,{\"className\":\"absolute -bottom-0.5 left-0 h-px w-0 bg-gradient-to-r from-[#2ea043] to-[#1f6feb] transition-all duration-300 group-hover/link:w-full\"}]]}]}]\n16:[\"$\",\"div\",null,{\"className\":\"flex min-h-[70vh] flex-col items-center justify-center px-4 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-6xl font-bold tracking-tight text-neutral-900 dark:text-white sm:text-8xl\",\"children\":\"404\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-lg text-neutral-600 dark:text-neutral-400\",\"children\":\"Page not found. The page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"div\",null,{\"className\":\"mt-8 flex flex-wrap items-center justify-center gap-4\",\"children\":[[\"$\",\"$L2e\",null,{\"href\":\"/en\",\"className\":\"rounded-lg bg-neutral-900 px-6 py-3 text-sm font-medium text-white transition hover:bg-neutral-700 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-200\",\"children\":\"Back to Home\"}],[\"$\",\"$L2e\",null,{\"href\":\"/en/portfolio\",\"className\":\"rounded-lg border border-neutral-300 px-6 py-3 text-sm font-medium text-neutral-900 transition hover:bg-neutral-100 dark:border-neutral-700 dark:text-white dark:hover:bg-neutral-800\",\"children\":\"View Portfolio\"}],[\"$\",\"$L2e\",null,{\"href\":\"/en/about\",\"className\":\"rounded-lg border border-neutral-300 px-6 py-3 text-sm font-medium text-neutral-900 transition hover:bg-neutral-100 dark:border-neutral-700 dark:text-white dark:hover:bg-neutral-800\",\"children\":\"About Me\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"14:null\n19:null\n"])</script><script>self.__next_f.push([1,"2f:I[312843,[\"/_next/static/chunks/2nu_9jg9ir1wo.js\",\"/_next/static/chunks/3sb2q3mwtcjk1.js\"],\"IconMark\"]\n8:null\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"Content-shaped identity: hidden marker in pagesync · Adityo GW\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Why mirrored page identity is a hidden HTML comment plus a normalized content hash, not a name or ID: a design lesson from the pagesync module.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"author\",\"content\":\"Adityo Guni Waluyo\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"4\",{\"name\":\"keywords\",\"content\":\"plane,python,markdown,sync\"}],[\"$\",\"meta\",\"5\",{\"name\":\"creator\",\"content\":\"Adityo Guni Waluyo\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\"}],[\"$\",\"link\",\"7\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\"}],[\"$\",\"link\",\"8\",{\"rel\":\"alternate\",\"hrefLang\":\"id\",\"href\":\"https://adityo.web.id/id/blog/identitas-konten-pagesync\"}],[\"$\",\"link\",\"9\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"Content-shaped identity: hidden marker in pagesync\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Why mirrored page identity is a hidden HTML comment plus a normalized content hash, not a name or ID: a design lesson from the pagesync module.\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:site_name\",\"content\":\"Adityo GW\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image\",\"content\":\"https://adityo.web.id/profile.jpg\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:alt\",\"content\":\"Adityo GW — Web Developer \u0026 AI Integration Specialist\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Content-shaped identity: hidden marker in pagesync\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Why mirrored page identity is a hidden HTML comment plus a normalized content hash, not a name or ID: a design lesson from the pagesync module.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://adityo.web.id/profile.jpg\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/icon?b229510b44cdb4f2\",\"alt\":\"$undefined\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"$L2f\",\"25\",{}]]\n"])</script><script>self.__next_f.push([1,"5:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BlogPosting\\\",\\\"headline\\\":\\\"Binding Mirrored Pages by Content, Not Names\\\",\\\"description\\\":\\\"Name-based bindings fork silently under renames; pagesync moves page identity into a hidden HTML marker plus a normalized sha256 drift hash.\\\",\\\"url\\\":\\\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\\\",\\\"mainEntityOfPage\\\":\\\"https://adityo.web.id/en/blog/identitas-konten-pagesync-en\\\",\\\"inLanguage\\\":\\\"en\\\",\\\"image\\\":[\\\"\\\"],\\\"datePublished\\\":\\\"2026-09-29T10:17:55Z\\\",\\\"dateModified\\\":\\\"2026-09-29T10:19:20Z\\\",\\\"author\\\":{\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Adityo Guni Waluyo\\\",\\\"url\\\":\\\"https://adityo.web.id\\\"},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Adityo GW\\\",\\\"logo\\\":{\\\"@type\\\":\\\"ImageObject\\\",\\\"url\\\":\\\"https://adityo.web.id/profile.jpg\\\"}}}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Blog\\\",\\\"item\\\":\\\"https://adityo.web.id/en/blog\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"tooling\\\",\\\"item\\\":\\\"https://adityo.web.id/en/blog/category/tooling\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"Binding Mirrored Pages by Content, Not Names\\\"}]}\"}}],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl px-3 pt-24 pb-16 sm:px-4 sm:pt-28\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid gap-10 lg:grid-cols-[240px_minmax(0,1fr)] xl:grid-cols-[240px_minmax(0,1fr)_240px]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"hidden lg:block\",\"children\":[\"$\",\"nav\",null,{\"aria-label\":\"Blog navigation\",\"className\":\"sticky top-24 max-h-[calc(100vh-7rem)] space-y-6 overflow-y-auto pb-8 text-sm\",\"children\":[[\"$\",\"form\",null,{\"role\":\"search\",\"children\":[\"$\",\"div\",null,{\"className\":\"group relative\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m21 21-4.34-4.34\",\"key\":\"14j7rj\"}],[\"circle\",{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"8\",\"key\":\"4ej97u\"}]],\"className\":\"lucide-search pointer-events-none absolute top-1/2 left-3 size-3.5 -translate-y-1/2 text-muted-foreground\"}],[\"$\",\"input\",null,{\"type\":\"search\",\"name\":\"q\",\"defaultValue\":\"$undefined\",\"placeholder\":\"Search articles…\",\"aria-label\":\"Search articles…\",\"className\":\"h-9 w-full rounded-[6px] border border-border bg-card/60 pr-3 pl-9 text-[13px] text-foreground placeholder:text-muted-foreground/70 focus:border-[#25E2A8]/60 focus:outline-none focus:ring-2 focus:ring-[#25E2A8]/25\"}]]}]}],[\"$\",\"section\",null,{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-2 flex items-center gap-1.5 px-3 text-[13px] font-bold text-foreground\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\",\"key\":\"usdka0\"}]],\"className\":\"lucide-folder-open size-3.5\"}],\"Categories\"]}],[\"$\",\"ul\",null,{\"className\":\"max-h-60 space-y-0.5 overflow-y-auto pr-1\",\"children\":[[\"$\",\"li\",null,{\"children\":\"$L30\"}],[[\"$\",\"li\",\"frontend\",{\"children\":\"$L31\"}],[\"$\",\"li\",\"devops\",{\"children\":\"$L32\"}],[\"$\",\"li\",\"ai\",{\"children\":\"$L33\"}],[\"$\",\"li\",\"backend\",{\"children\":\"$L34\"}],[\"$\",\"li\",\"tooling\",{\"children\":\"$L35\"}],[\"$\",\"li\",\"seo\",{\"children\":\"$L36\"}],[\"$\",\"li\",\"security\",{\"children\":\"$L37\"}],[\"$\",\"li\",\"testing\",{\"children\":\"$L38\"}],[\"$\",\"li\",\"design\",{\"children\":\"$L39\"}],[\"$\",\"li\",\"mobile\",{\"children\":\"$L3a\"}],[\"$\",\"li\",\"writing\",{\"children\":\"$L3b\"}]]]}]]}],[\"$\",\"section\",null,{\"className\":\"border-b border-border/60 pb-6\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-2 flex items-center gap-1.5 px-3 text-[13px] font-bold text-foreground\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z\",\"key\":\"16rjxf\"}],[\"path\",{\"d\":\"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193\",\"key\":\"178nd4\"}],[\"circle\",{\"cx\":\"10.5\",\"cy\":\"6.5\",\"r\":\".5\",\"fill\":\"currentColor\",\"key\":\"12ikhr\"}]],\"className\":\"lucide-tags size-3.5\"}],\"Tags\"]}],\"$L3c\"]}]]}]}],\"$L3d\",\"$L3e\"]}]}],\"$L3f\"]\n"])</script><script>self.__next_f.push([1,"12b:I[681113,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"TechIconRow\"]\n"])</script><script>self.__next_f.push([1,"3c:[\"$\",\"div\",null,{\"className\":\"flex max-h-40 flex-wrap gap-1.5 overflow-y-auto px-2 py-0.5 pr-1\",\"children\":[\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\",\"$L50\",\"$L51\",\"$L52\",\"$L53\",\"$L54\",\"$L55\",\"$L56\",\"$L57\",\"$L58\",\"$L59\",\"$L5a\",\"$L5b\",\"$L5c\",\"$L5d\",\"$L5e\",\"$L5f\",\"$L60\",\"$L61\",\"$L62\",\"$L63\",\"$L64\",\"$L65\",\"$L66\",\"$L67\",\"$L68\",\"$L69\",\"$L6a\",\"$L6b\",\"$L6c\",\"$L6d\",\"$L6e\",\"$L6f\",\"$L70\",\"$L71\",\"$L72\",\"$L73\",\"$L74\",\"$L75\",\"$L76\",\"$L77\",\"$L78\",\"$L79\",\"$L7a\",\"$L7b\",\"$L7c\",\"$L7d\",\"$L7e\",\"$L7f\",\"$L80\",\"$L81\",\"$L82\",\"$L83\",\"$L84\",\"$L85\",\"$L86\",\"$L87\",\"$L88\",\"$L89\",\"$L8a\",\"$L8b\",\"$L8c\",\"$L8d\",\"$L8e\",\"$L8f\",\"$L90\",\"$L91\",\"$L92\",\"$L93\",\"$L94\",\"$L95\",\"$L96\",\"$L97\",\"$L98\",\"$L99\",\"$L9a\",\"$L9b\",\"$L9c\",\"$L9d\",\"$L9e\",\"$L9f\",\"$La0\",\"$La1\",\"$La2\",\"$La3\",\"$La4\",\"$La5\",\"$La6\",\"$La7\",\"$La8\",\"$La9\",\"$Laa\",\"$Lab\",\"$Lac\",\"$Lad\",\"$Lae\",\"$Laf\",\"$Lb0\",\"$Lb1\",\"$Lb2\",\"$Lb3\",\"$Lb4\",\"$Lb5\",\"$Lb6\",\"$Lb7\",\"$Lb8\",\"$Lb9\",\"$Lba\",\"$Lbb\",\"$Lbc\",\"$Lbd\",\"$Lbe\",\"$Lbf\",\"$Lc0\",\"$Lc1\",\"$Lc2\",\"$Lc3\",\"$Lc4\",\"$Lc5\",\"$Lc6\",\"$Lc7\",\"$Lc8\",\"$Lc9\",\"$Lca\",\"$Lcb\",\"$Lcc\",\"$Lcd\",\"$Lce\",\"$Lcf\",\"$Ld0\",\"$Ld1\",\"$Ld2\",\"$Ld3\",\"$Ld4\",\"$Ld5\",\"$Ld6\",\"$Ld7\",\"$Ld8\",\"$Ld9\",\"$Lda\",\"$Ldb\",\"$Ldc\",\"$Ldd\",\"$Lde\",\"$Ldf\",\"$Le0\",\"$Le1\",\"$Le2\",\"$Le3\",\"$Le4\",\"$Le5\",\"$Le6\",\"$Le7\",\"$Le8\",\"$Le9\",\"$Lea\",\"$Leb\",\"$Lec\",\"$Led\",\"$Lee\",\"$Lef\",\"$Lf0\",\"$Lf1\",\"$Lf2\",\"$Lf3\",\"$Lf4\",\"$Lf5\",\"$Lf6\",\"$Lf7\",\"$Lf8\",\"$Lf9\",\"$Lfa\",\"$Lfb\",\"$Lfc\",\"$Lfd\",\"$Lfe\",\"$Lff\",\"$L100\",\"$L101\",\"$L102\",\"$L103\",\"$L104\",\"$L105\",\"$L106\",\"$L107\",\"$L108\",\"$L109\",\"$L10a\",\"$L10b\",\"$L10c\",\"$L10d\",\"$L10e\",\"$L10f\",\"$L110\",\"$L111\",\"$L112\",\"$L113\",\"$L114\",\"$L115\",\"$L116\",\"$L117\",\"$L118\",\"$L119\",\"$L11a\",\"$L11b\",\"$L11c\",\"$L11d\",\"$L11e\",\"$L11f\",\"$L120\",\"$L121\",\"$L122\",\"$L123\",\"$L124\",\"$L125\",\"$L126\",\"$L127\",\"$L128\"]}]\n"])</script><script>self.__next_f.push([1,"12c:T64a,"])</script><script>self.__next_f.push([1,"\u003cpath fill=\"currentColor\" d=\"m14.25.18l.9.2l.73.26l.59.3l.45.32l.34.34l.25.34l.16.33l.1.3l.04.26l.02.2l-.01.13V8.5l-.05.63l-.13.55l-.21.46l-.26.38l-.3.31l-.33.25l-.35.19l-.35.14l-.33.1l-.3.07l-.26.04l-.21.02H8.77l-.69.05l-.59.14l-.5.22l-.41.27l-.33.32l-.27.35l-.2.36l-.15.37l-.1.35l-.07.32l-.04.27l-.02.21v3.06H3.17l-.21-.03l-.28-.07l-.32-.12l-.35-.18l-.36-.26l-.36-.36l-.35-.46l-.32-.59l-.28-.73l-.21-.88l-.14-1.05l-.05-1.23l.06-1.22l.16-1.04l.24-.87l.32-.71l.36-.57l.4-.44l.42-.33l.42-.24l.4-.16l.36-.1l.32-.05l.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75l-.02-.37l.05-.34l.11-.31l.17-.28l.25-.26l.31-.23l.38-.2l.44-.18l.51-.15l.58-.12l.64-.1l.71-.06l.77-.04l.84-.02l1.27.05zm-6.3 1.98l-.23.33l-.08.41l.08.41l.23.34l.33.22l.41.09l.41-.09l.33-.22l.23-.34l.08-.41l-.08-.41l-.23-.33l-.33-.22l-.41-.09l-.41.09zm13.09 3.95l.28.06l.32.12l.35.18l.36.27l.36.35l.35.47l.32.59l.28.73l.21.88l.14 1.04l.05 1.23l-.06 1.23l-.16 1.04l-.24.86l-.32.71l-.36.57l-.4.45l-.42.33l-.42.24l-.4.16l-.36.09l-.32.05l-.24.02l-.16-.01h-8.22v.82h5.84l.01 2.76l.02.36l-.05.34l-.11.31l-.17.29l-.25.25l-.31.24l-.38.2l-.44.17l-.51.15l-.58.13l-.64.09l-.71.07l-.77.04l-.84.01l-1.27-.04l-1.07-.14l-.9-.2l-.73-.25l-.59-.3l-.45-.33l-.34-.34l-.25-.34l-.16-.33l-.1-.3l-.04-.25l-.02-.2l.01-.13v-5.34l.05-.64l.13-.54l.21-.46l.26-.38l.3-.32l.33-.24l.35-.2l.35-.14l.33-.1l.3-.06l.26-.04l.21-.02l.13-.01h5.84l.69-.05l.59-.14l.5-.21l.41-.28l.33-.32l.27-.35l.2-.36l.15-.36l.1-.35l.07-.32l.04-.28l.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33l-.08.41l.08.41l.23.33l.33.23l.41.08l.41-.08l.33-.23l.23-.33l.08-.41l-.08-.41l-.23-.33l-.33-.23l-.41-.08l-.41.08z\"/\u003e"])</script><script>self.__next_f.push([1,"3d:[\"$\",\"article\",null,{\"className\":\"min-w-0\",\"children\":[[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"className\":\"text-xs text-muted-foreground\",\"children\":[\"$\",\"ol\",null,{\"className\":\"flex flex-wrap items-center gap-1.5\",\"children\":[[\"$\",\"li\",null,{\"children\":\"$L129\"}],[\"$\",\"li\",null,{\"className\":\"flex items-center gap-1.5\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"/\"}],\"$L12a\"]}],[\"$\",\"li\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"/\"}],[\"$\",\"span\",null,{\"aria-current\":\"page\",\"className\":\"truncate text-foreground/70\",\"children\":\"Binding Mirrored Pages by Content, Not Names\"}]]}]]}]}],[\"$\",\"header\",null,{\"className\":\"mt-5 mb-8 border-b border-border/70 pb-8\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl leading-tight font-extrabold tracking-tight sm:text-3xl lg:text-4xl\",\"children\":\"Binding Mirrored Pages by Content, Not Names\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground sm:text-[13px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"circle\",{\"cx\":\"12\",\"cy\":\"8\",\"r\":\"5\",\"key\":\"1hypcn\"}],[\"path\",{\"d\":\"M20 21a8 8 0 0 0-16 0\",\"key\":\"rfgkzh\"}]],\"className\":\"lucide-user-round size-3.5\"}],\"Adityo Guni Waluyo\"]}],[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M8 2v3\",\"key\":\"1ioesn\"}],[\"path\",{\"d\":\"M16 2v3\",\"key\":\"otl347\"}],[\"rect\",{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"key\":\"h1oib\"}],[\"path\",{\"d\":\"M3 9h18\",\"key\":\"1pudct\"}],[\"path\",{\"d\":\"M8 13h.01\",\"key\":\"1sbv64\"}],[\"path\",{\"d\":\"M12 13h.01\",\"key\":\"y0uutt\"}],[\"path\",{\"d\":\"M16 13h.01\",\"key\":\"wip0gl\"}],[\"path\",{\"d\":\"M8 17h.01\",\"key\":\"p3bg7i\"}],[\"path\",{\"d\":\"M12 17h.01\",\"key\":\"p32p05\"}],[\"path\",{\"d\":\"M16 17h.01\",\"key\":\"ql8jdd\"}]],\"className\":\"lucide-calendar-days size-3.5\"}],[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T10:17:55Z\",\"children\":\"September 29, 2026\"}]]}],[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"circle\",{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\",\"key\":\"1mglay\"}],[\"path\",{\"d\":\"M12 6v6h4\",\"key\":\"135r8i\"}]],\"className\":\"lucide-clock3 lucide-clock-3 size-3.5\"}],[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T10:17:55Z\",\"children\":\"17:17\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-3 flex items-center gap-5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"min-w-0 flex-1 text-base leading-relaxed text-muted-foreground\",\"children\":\"Name-based bindings fork silently under renames; pagesync moves page identity into a hidden HTML marker plus a normalized sha256 drift hash.\"}],[\"$\",\"div\",null,{\"className\":\"group/hero shrink-0\",\"children\":[\"$\",\"$L12b\",null,{\"icons\":[{\"tag\":\"python\",\"icon\":{\"width\":24,\"height\":24,\"body\":\"$12c\"}}],\"category\":\"tooling\"}]}]]}],\"$L12d\"]}],\"$L12e\",\"$L12f\",\"$L130\",\"$L131\"]}]\n"])</script><script>self.__next_f.push([1,"3e:[\"$\",\"aside\",null,{\"className\":\"hidden xl:block\",\"children\":[\"$\",\"nav\",null,{\"aria-label\":\"Table of contents\",\"className\":\"sticky top-24 max-h-[calc(100vh-7rem)] overflow-y-auto pb-8\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 flex items-center gap-1.5 text-[13px] font-bold text-foreground\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M8 5h13\",\"key\":\"1pao27\"}],[\"path\",{\"d\":\"M13 12h8\",\"key\":\"h98zly\"}],[\"path\",{\"d\":\"M13 19h8\",\"key\":\"c3s6r1\"}],[\"path\",{\"d\":\"M3 10a2 2 0 0 0 2 2h3\",\"key\":\"1npucw\"}],[\"path\",{\"d\":\"M3 5v12a2 2 0 0 0 2 2h3\",\"key\":\"x1gjn2\"}]],\"className\":\"lucide-list-tree size-3.5\"}],\"On this page\"]}],[\"$\",\"div\",null,{\"className\":\"text-[13px]\",\"children\":[[\"$\",\"div\",\"the-hidden-marker\",{\"className\":\"\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#the-hidden-marker\",\"className\":\"group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m9 18 6-6-6-6\",\"key\":\"mthhwq\"}]],\"className\":\"lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary\",\"aria-hidden\":\"true\"}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"The Hidden Marker\"}]]}],false]}],[\"$\",\"div\",\"naming-for-humans-strict-tiers\",{\"className\":\"mt-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#naming-for-humans-strict-tiers\",\"className\":\"group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3e:props:children:props:children:1:props:children:0:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary\",\"aria-hidden\":\"true\"}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"Naming for Humans, Strict Tiers\"}]]}],false]}],[\"$\",\"div\",\"drift-and-config-validation\",{\"className\":\"mt-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#drift-and-config-validation\",\"className\":\"group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3e:props:children:props:children:1:props:children:0:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary\",\"aria-hidden\":\"true\"}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"Drift and Config Validation\"}]]}],false]}],[\"$\",\"div\",\"sources\",{\"className\":\"mt-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#sources\",\"className\":\"group flex items-center gap-1 rounded-md py-1 pr-2 pl-1 font-semibold text-foreground/80 transition-colors hover:text-primary\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3e:props:children:props:children:1:props:children:0:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-chevron-right size-3 shrink-0 text-muted-foreground/50 transition-transform group-hover:translate-x-0.5 group-hover:text-primary\",\"aria-hidden\":\"true\"}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"Sources\"}]]}],false]}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"3f:[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl px-3 pb-8 sm:px-4\",\"children\":[\"$\",\"section\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-bold tracking-tight sm:text-xl\",\"children\":\"Related articles\"}],[\"$\",\"div\",null,{\"className\":\"mt-5 grid grid-cols-1 gap-x-10 gap-y-6 lg:grid-cols-2\",\"children\":[[\"$\",\"div\",\"kontrak-dua-sisi-konverter-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L132\"]}],[\"$\",\"div\",\"konverter-html-markdown-round-trip-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L133\"]}],[\"$\",\"div\",\"konverter-markdown-fail-loud-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L134\"]}],[\"$\",\"div\",\"plane-pages-mirror-dokumen-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L135\"]}],[\"$\",\"div\",\"plane-gate-bukti-done-terverifikasi-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L136\"]}],[\"$\",\"div\",\"plane-doc-sync-refusal-taxonomy-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L137\"]}],[\"$\",\"div\",\"plane-onboarding-satu-pintu-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L138\"]}],[\"$\",\"div\",\"fb45375-plane-mirror-api-probe-en\",{\"className\":\"relative\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute top-2 bottom-[-1.5rem] left-7 w-px -translate-x-1/2 bg-gradient-to-b from-primary/40 via-border to-transparent sm:left-8 lg:left-9\"}],\"$L139\"]}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"30:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"page\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors bg-[#25E2A8]/10 font-medium text-emerald-600 dark:text-[#25E2A8]\",\"children\":\"All articles\"}]\n31:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/frontend\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"rect\",{\"width\":\"18\",\"height\":\"18\",\"x\":\"3\",\"y\":\"3\",\"rx\":\"2\",\"key\":\"afitv7\"}],[\"path\",{\"d\":\"M3 9h18\",\"key\":\"1pudct\"}],[\"path\",{\"d\":\"M9 21V9\",\"key\":\"1oto5p\"}]],\"className\":\"lucide-panels-top-left size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"frontend\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":97}]]}]}]\n32:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/devops\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z\",\"key\":\"1t2lqe\"}],[\"path\",{\"d\":\"M10 21.9V14L2.1 9.1\",\"key\":\"o7czzq\"}],[\"path\",{\"d\":\"m10 14 11.9-6.9\",\"key\":\"zm5e20\"}],[\"path\",{\"d\":\"M14 19.8v-8.1\",\"key\":\"159ecu\"}],[\"path\",{\"d\":\"M18 17.5V9.4\",\"key\":\"11uown\"}]],\"className\":\"lucide-container size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"devops\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":77}]]}]}]\n33:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/ai\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M12 8V4H8\",\"key\":\"hb8ula\"}],[\"rect\",{\"width\":\"16\",\"height\":\"12\",\"x\":\"4\",\"y\":\"8\",\"rx\":\"2\",\"key\":\"enze0r\"}],[\"path\",{\"d\":\"M2 14h2\",\"key\":\"vft8re\"}],[\"path\",{\"d\":\"M20 14h2\",\"key\":\"4cs60a\"}],[\"path\",{\"d\":\"M15 13v2\",\"key\":\"1xurst\"}],[\"path\",{\"d\":\"M9 13v2\",\"key\":\"rq6x2g\"}]],\"className\":\"lucide-bot size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"ai\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":52}]]}]}]\n34:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/backend\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"rect\",{\"width\":\"20\",\"height\":\"8\",\"x\":\"2\",\"y\":\"2\",\"rx\":\"2\",\"ry\":\"2\",\"key\":\"ngkwjq\"}],[\"rect\",{\"width\":\"20"])</script><script>self.__next_f.push([1,"\",\"height\":\"8\",\"x\":\"2\",\"y\":\"14\",\"rx\":\"2\",\"ry\":\"2\",\"key\":\"iecqi9\"}],[\"line\",{\"x1\":\"6\",\"x2\":\"6.01\",\"y1\":\"6\",\"y2\":\"6\",\"key\":\"16zg32\"}],[\"line\",{\"x1\":\"6\",\"x2\":\"6.01\",\"y1\":\"18\",\"y2\":\"18\",\"key\":\"nzw8ys\"}]],\"className\":\"lucide-server size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"backend\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":29}]]}]}]\n35:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/tooling\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\",\"key\":\"1ngwbx\"}]],\"className\":\"lucide-wrench size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"tooling\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":29}]]}]}]\n36:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/seo\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M16 7h6v6\",\"key\":\"box55l\"}],[\"path\",{\"d\":\"m22 7-8.5 8.5-5-5L2 17\",\"key\":\"1t1m79\"}]],\"className\":\"lucide-trending-up size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"seo\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":8}]]}]}]\n37:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/security\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\"key\":\"oel41y\"}],[\"path\",{\"d\":\"m9 12 2 2 4-4\",\"key\":\"dzmm74\"}]],\"className\":\"lucide-shield-check size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"security\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":8}]]}]}]\n38:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/testing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2\",\"key\":\"18mbvz\"}],[\"path\",{\"d\":\"M6.453 15h11.094\",\"key\":\"3shlmq\"}],[\"path\",{\"d\":\"M8.5 2h7\",\"key\":\"csnxdl\"}]],\"className\":\"lucide-fla"])</script><script>self.__next_f.push([1,"sk-conical size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"testing\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":7}]]}]}]\n39:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/design\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\",\"key\":\"e79jfc\"}],[\"circle\",{\"cx\":\"13.5\",\"cy\":\"6.5\",\"r\":\".5\",\"fill\":\"currentColor\",\"key\":\"1okk4w\"}],[\"circle\",{\"cx\":\"17.5\",\"cy\":\"10.5\",\"r\":\".5\",\"fill\":\"currentColor\",\"key\":\"f64h9f\"}],[\"circle\",{\"cx\":\"6.5\",\"cy\":\"12.5\",\"r\":\".5\",\"fill\":\"currentColor\",\"key\":\"qy21gx\"}],[\"circle\",{\"cx\":\"8.5\",\"cy\":\"7.5\",\"r\":\".5\",\"fill\":\"currentColor\",\"key\":\"fotxhn\"}]],\"className\":\"lucide-palette size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"design\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":7}]]}]}]\n3a:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/mobile\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"rect\",{\"width\":\"14\",\"height\":\"20\",\"x\":\"5\",\"y\":\"2\",\"rx\":\"2\",\"ry\":\"2\",\"key\":\"1yt0o3\"}],[\"path\",{\"d\":\"M12 18h.01\",\"key\":\"mhygvu\"}]],\"className\":\"lucide-smartphone size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"mobile\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":6}]]}]}]\n3b:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/writing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"block truncate rounded-md py-1.5 pr-2 pl-3 text-[13px] transition-colors text-muted-foreground hover:bg-muted/60 hover:text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"flex items-center justify-between gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex min-w-0 items-center gap-1.5\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M13 21h8\",\"key\":\"1jsn5i\"}],[\"path\",{\"d\":\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\"key\":\"1a8usu\"}]],\"className\":\"lucide-pen-line size-3.5 shrink-0\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"writing\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 text-[11px] text-muted-foreground/70\",\"children\":4}]]}]}]\n"])</script><script>self.__next_f.push([1,"13e:I[583276,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"default\"]\n140:I[713645,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"default\"]\n142:I[681113,[\"/_next/static/chunks/1y-pe4vrl44z-.js\",\"/_next/static/chunks/1fhmqo8oxrbqy.js\",\"/_next/static/chunks/0lhlvh1hgiuma.js\",\"/_next/static/chunks/1m-bnru4--byc.js\",\"/_next/static/chunks/2-88ubju-8gg4.js\",\"/_next/static/chunks/2bu39lgwf083t.js\",\"/_next/static/chunks/30qir_z2dql5f.js\",\"/_next/static/chunks/2sby9c-4xwieh.js\",\"/_next/static/chunks/14qsee9d-htmq.js\",\"/_next/static/chunks/37xamenotiwny.js\",\"/_next/static/chunks/3mth_4ccpg0fx.js\",\"/_next/static/chunks/31-10y-ic6vfz.js\",\"/_next/static/chunks/0c05mme6db5y2.js\",\"/_next/static/chunks/3nqp4f_tsyr0y.js\",\"/_next/static/chunks/1dbumlihosg07.js\",\"/_next/static/chunks/3scufj0koz643.js\"],\"default\"]\n12d:[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-wrap items-center justify-between gap-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-1.5\",\"children\":[\"$L13a\",\"$L13b\",\"$L13c\",\"$L13d\"]}],[\"$\",\"div\",null,{\"className\":\"ml-auto\",\"children\":[\"$\",\"$L13e\",null,{\"locale\":\"en\"}]}]]}]\n12e:[\"$\",\"div\",null,{\"className\":\"mb-8\",\"children\":[\"$\",\"section\",null,{\"aria-label\":\"TL;DR\",\"className\":\"rounded-lg border border-primary/30 bg-primary/5 p-4 sm:p-5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs font-semibold tracking-wider text-primary uppercase\",\"children\":\"TL;DR\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm leading-relaxed sm:text-base\",\"children\":\"The doc-sync tool mirrors markdown files from the docs folder to Plane Pages using content-shaped identity rather than names. A hidden HTML comment holding the source path sits as the first line and Plane preserves it verbatim as the sync authority. Strict tiers, sha256 drift checks on normalized markdown, and hard config validation keep sync reliable through renames and edits.\"}]]}]}]\n13f:T1670,"])</script><script>self.__next_f.push([1,"\u003ch2 id=\"the-hidden-marker\"\u003eThe Hidden Marker\u003c/h2\u003e\n\u003cp\u003eI was about to bind mirrored pages by their page name while writing the \u003ccode\u003epagesync\u003c/code\u003e module for the doc-sync tool. Then I stopped. Names belong to humans; a renaming editor would fork a name-based binding silently. I needed a mechanism that survives renames and ID churn without breaking the synchronization link, and that is why identity in v3 is content-shaped. The tool mirrors markdown files from \u003ccode\u003e.docs\u003c/code\u003e to self-hosted Plane Pages; this commit adds the pages engine primitives: identity, naming, tier, config validation, and drift hashes.\u003c/p\u003e\n\u003cp\u003eThe identity is a hidden HTML-comment marker as the first line of the page body, holding the source file's relative path. It looks exactly like this:\u003c/p\u003e\n\u003cpre data-title=\"README.md\" class=\"shiki shiki-themes one-light one-dark-pro\" style=\"--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"\u003e\u0026#x3C;!-- plane-doc-sync:v3 path=.docs/MEETING/2026-09-27-weekly.md --\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#E45649;--shiki-dark:#E06C75\"\u003e# Meeting Notes\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#383A42;--shiki-dark:#ABB2BF\"\u003eActual content starts here\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\u003c/code\u003e\u003cbutton type=\"button\" class=\"code-copy-btn\" aria-label=\"Copy code\"\u003e\u003csvg class=\"icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003crect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/\u003e\u003cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/\u003e\u003c/svg\u003e\u003csvg class=\"icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M20 6 9 17l-5-5\"/\u003e\u003c/svg\u003e\u003c/button\u003e\u003c/pre\u003e\n\u003cp\u003ePer MDN, an HTML comment adds explanatory notes or prevents the browser from interpreting parts of the document, and the browser never renders it [1]. The live probe the day and night before had shown that Plane Community Edition round-trips page HTML verbatim, comments included. The official docs warn more broadly that Plane sanitizes HTML server-side [2], so the marker design leans on measured CE behavior, treating the docs as the conservative ceiling. Missing or malformed marker? The page classifies as blocked immediately. The marker path must agree with the config item path; \u003ccode\u003epage_id\u003c/code\u003e may sit in the config as the API handle, but it never binds a page to a file.\u003c/p\u003e\n\u003cp\u003eWhy hidden? In v2 the marker lived on work items whose HTML is sanitized server-side, so comments got stripped. Pages do not strip them. Storage shape dictates identity shape.\u003c/p\u003e\n\u003ch2 id=\"naming-for-humans-strict-tiers\"\u003eNaming for Humans, Strict Tiers\u003c/h2\u003e\n\u003cp\u003eNaming goes like this: \u003ccode\u003eMEETING: YYYY-MM-DD — \u003ctitle\u003e\u003c/code\u003e for two-way files, \u003ccode\u003eDOC: \u003cpath\u003e\u003c/code\u003e for one-way library docs, so a meeting file at \u003ccode\u003e.docs/MEETING/2026-09-27-weekly.md\u003c/code\u003e becomes a page named MEETING: 2026-09-27 — Weekly. The title comes from frontmatter when present, otherwise it is rebuilt from date plus file slug. Names are pleasant to read, and their role stops there. Plane pages are flat (create ignores the parent), so structure lives in the name, not in a folder hierarchy.\u003c/p\u003e\n\u003cp\u003eTier resolution is deliberately unambiguous. A file under both a twoway and an oneway directory resolves twoway, period; one file never gets two treatments. Outside both, error, not a guess. One-way pages are publish-only: pull is refused by design, because the direction is repo-to-page only. With content-shaped identity as the authority, these rules stay easy to run: a page's status comes from the marker plus the hash, not from vibes.\u003c/p\u003e\n\u003ch2 id=\"drift-and-config-validation\"\u003eDrift and Config Validation\u003c/h2\u003e\n\u003cp\u003eDrift authority is sha256 over the normalized markdown on both sides. The repo side strips YAML frontmatter before hashing, so local metadata never influences drift. The plane side hashes the markdown pulled back through the converter; pagesync normalizes before hashing, so harmless formatting changes do not trigger false drift alerts. Python ships \u003ccode\u003esha256\u003c/code\u003e among hashlib's always-present constructors, though the docs carry a FIPS caveat that some hash functions provide less collision resistance than expected [3]. That is why the config validator pins the algorithm explicitly instead of trusting ambient defaults.\u003c/p\u003e\n\u003cp\u003eConfig validation has hard edges too. Every item path must resolve inside the repo; a traversal path is a config bug and hard-stops, the OWASP path traversal class of problem [4]. The \u003ccode\u003elast_sync\u003c/code\u003e field must hold two 64-character hex digests plus timestamps. A legacy v2 config touching pages actions dies with one exact hard-stop message, every time.\u003c/p\u003e\n\u003cp\u003eThe lesson from this small module: \u003cstrong\u003econtent-shaped identity survives renames, editor rewrites, and ID churn\u003c/strong\u003e. Name-shaped or title-shaped identity breaks the first time someone renames a page.\u003c/p\u003e\n\u003ch2 id=\"sources\"\u003eSources\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[1] \u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Comments\"\u003eUsing HTML comments (MDN)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[2] \u003ca href=\"https://developers.plane.so/api-reference/page/page-content-html\"\u003ePage content HTML contract (Plane API reference)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[3] \u003ca href=\"https://docs.python.org/3/library/hashlib.html\"\u003ehashlib (Python docs)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[4] \u003ca href=\"https://owasp.org/www-community/attacks/Path_Traversal\"\u003ePath Traversal (OWASP)\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e"])</script><script>self.__next_f.push([1,"12f:[\"$\",\"div\",null,{\"data-article-body\":true,\"children\":[\"$\",\"div\",null,{\"className\":\"space-y-6\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"docs-prose\",\"dangerouslySetInnerHTML\":{\"__html\":\"$13f\"}}]]}]}]\n130:[\"$\",\"$L140\",null,{}]\n131:[\"$\",\"nav\",null,{\"className\":\"mt-10 flex flex-col gap-5 sm:flex-row sm:items-start sm:justify-between sm:gap-8\",\"children\":[\"$L141\",null]}]\n40:[\"$\",\"$L2d\",\"nextjs\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/nextjs\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"nextjs\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":46}]]}]\n41:[\"$\",\"$L2d\",\"css\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/css\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"css\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":41}]]}]\n42:[\"$\",\"$L2d\",\"react\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/react\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"react\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":37}]]}]\n43:[\"$\",\"$L2d\",\"frontend\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/frontend\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"frontend\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":36}]]}]\n44:[\"$\",\"$L2d\",\"automation\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/automation\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"automation\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":35}]]}]\n45:[\"$\",\"$L2d\",\"python\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/python\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"python\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":33}]]}]\n46:[\"$\",\"$L2d\",\"tailwind\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/tailwind\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"tailwind\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":32}]]}]\n47:[\"$\",\"$L2d\",\"docker\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/docker\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"docker\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":25}]]}]\n48:[\"$\",\"$L2d\",\"devops\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/devops\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 rin"])</script><script>self.__next_f.push([1,"g-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"devops\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":24}]]}]\n49:[\"$\",\"$L2d\",\"seo\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/seo\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"seo\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":18}]]}]\n4a:[\"$\",\"$L2d\",\"llm\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/llm\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"llm\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":18}]]}]\n4b:[\"$\",\"$L2d\",\"ux\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ux\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ux\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":17}]]}]\n4c:[\"$\",\"$L2d\",\"self-hosting\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/self-hosting\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"self-hosting\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":16}]]}]\n4d:[\"$\",\"$L2d\",\"accessibility\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/accessibility\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"accessibility\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":14}]]}]\n4e:[\"$\",\"$L2d\",\"fastapi\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/fastapi\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"fastapi\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":14}]]}]\n4f:[\"$\",\"$L2d\",\"git\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/git\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"git\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":13}]]}]\n50:[\"$\",\"$L2d\",\"plane\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/plane\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"plane\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":13}]]}]\n51:[\"$\",\"$L2d\",\"testing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/testing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"testing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":13}]]}]\n52:[\"$\",\"$L2d\",\"ansible\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag"])</script><script>self.__next_f.push([1,"/ansible\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ansible\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":12}]]}]\n53:[\"$\",\"$L2d\",\"typescript\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/typescript\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"typescript\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":12}]]}]\n54:[\"$\",\"$L2d\",\"debugging\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/debugging\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"debugging\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":11}]]}]\n55:[\"$\",\"$L2d\",\"ai-agents\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ai-agents\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ai-agents\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":11}]]}]\n56:[\"$\",\"$L2d\",\"mariadb\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mariadb\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mariadb\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":9}]]}]\n57:[\"$\",\"$L2d\",\"bash\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/bash\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"bash\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":9}]]}]\n58:[\"$\",\"$L2d\",\"vercel\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/vercel\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"vercel\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":8}]]}]\n59:[\"$\",\"$L2d\",\"monitoring\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/monitoring\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"monitoring\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":8}]]}]\n5a:[\"$\",\"$L2d\",\"cron\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cron\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cron\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n5b:[\"$\",\"$L2d\",\"cloudflare\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cloudflare\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1"])</script><script>self.__next_f.push([1," ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cloudflare\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n5c:[\"$\",\"$L2d\",\"qwen\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/qwen\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"qwen\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n5d:[\"$\",\"$L2d\",\"playwright\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/playwright\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"playwright\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n5e:[\"$\",\"$L2d\",\"sse\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sse\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sse\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n5f:[\"$\",\"$L2d\",\"ssh\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ssh\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ssh\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":7}]]}]\n60:[\"$\",\"$L2d\",\"ai\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ai\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ai\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n61:[\"$\",\"$L2d\",\"forgejo\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/forgejo\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"forgejo\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n62:[\"$\",\"$L2d\",\"layout\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/layout\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"layout\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n63:[\"$\",\"$L2d\",\"security\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/security\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"security\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n64:[\"$\",\"$L2d\",\"tooling\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/tooling\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"tooling\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n65:[\"$\",\"$L2d\",\"i18n\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/i18"])</script><script>self.__next_f.push([1,"n\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"i18n\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":6}]]}]\n66:[\"$\",\"$L2d\",\"streaming\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/streaming\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"streaming\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n67:[\"$\",\"$L2d\",\"javascript\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/javascript\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"javascript\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n68:[\"$\",\"$L2d\",\"maplibre\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/maplibre\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"maplibre\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n69:[\"$\",\"$L2d\",\"github\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/github\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"github\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6a:[\"$\",\"$L2d\",\"regex\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/regex\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"regex\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6b:[\"$\",\"$L2d\",\"prompt\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/prompt\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"prompt\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6c:[\"$\",\"$L2d\",\"linux\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/linux\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"linux\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6d:[\"$\",\"$L2d\",\"rest-api\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/rest-api\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"rest-api\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6e:[\"$\",\"$L2d\",\"deployment\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/deployment\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 rin"])</script><script>self.__next_f.push([1,"g-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"deployment\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":5}]]}]\n6f:[\"$\",\"$L2d\",\"performance\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/performance\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"performance\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n70:[\"$\",\"$L2d\",\"ci\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ci\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ci\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n71:[\"$\",\"$L2d\",\"whisper\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/whisper\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"whisper\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n72:[\"$\",\"$L2d\",\"tailwindcss\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/tailwindcss\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"tailwindcss\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n73:[\"$\",\"$L2d\",\"design\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/design\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"design\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n74:[\"$\",\"$L2d\",\"compose\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/compose\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"compose\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n75:[\"$\",\"$L2d\",\"shiki\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/shiki\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"shiki\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n76:[\"$\",\"$L2d\",\"next-image\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/next-image\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"next-image\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n77:[\"$\",\"$L2d\",\"redis\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/redis\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"redis\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n78:[\"$\",\"$L2d\",\"markdown\",{\"ref\":\"$undefined"])</script><script>self.__next_f.push([1,"\",\"href\":\"/en/blog/tag/markdown\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"markdown\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n79:[\"$\",\"$L2d\",\"embedding\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/embedding\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"embedding\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n7a:[\"$\",\"$L2d\",\"prometheus\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/prometheus\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"prometheus\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n7b:[\"$\",\"$L2d\",\"agent-skills\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/agent-skills\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"agent-skills\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n7c:[\"$\",\"$L2d\",\"animation\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/animation\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"animation\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":4}]]}]\n7d:[\"$\",\"$L2d\",\"lucide\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/lucide\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"lucide\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n7e:[\"$\",\"$L2d\",\"llm-security\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/llm-security\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"llm-security\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n7f:[\"$\",\"$L2d\",\"mcp\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mcp\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mcp\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n80:[\"$\",\"$L2d\",\"backup\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/backup\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"backup\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n81:[\"$\",\"$L2d\",\"localstorage\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/localstorage\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 "])</script><script>self.__next_f.push([1,"px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"localstorage\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n82:[\"$\",\"$L2d\",\"sqlmodel\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sqlmodel\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sqlmodel\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n83:[\"$\",\"$L2d\",\"memory\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/memory\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"memory\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n84:[\"$\",\"$L2d\",\"wordpress\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/wordpress\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"wordpress\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n85:[\"$\",\"$L2d\",\"deepseek\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/deepseek\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"deepseek\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n86:[\"$\",\"$L2d\",\"dark-mode\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/dark-mode\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"dark-mode\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n87:[\"$\",\"$L2d\",\"claude-code\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/claude-code\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"claude-code\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n88:[\"$\",\"$L2d\",\"hermes\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/hermes\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"hermes\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n89:[\"$\",\"$L2d\",\"cli\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cli\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cli\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n8a:[\"$\",\"$L2d\",\"networking\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/networking\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"networking\",[\"$\",\"span\",null,{\"cla"])</script><script>self.__next_f.push([1,"ssName\":\"ml-1 opacity-60\",\"children\":3}]]}]\n8b:[\"$\",\"$L2d\",\"idempotency\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/idempotency\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"idempotency\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":3}]]}]\n8c:[\"$\",\"$L2d\",\"observability\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/observability\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"observability\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n8d:[\"$\",\"$L2d\",\"benchmark\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/benchmark\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"benchmark\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n8e:[\"$\",\"$L2d\",\"prompt-injection\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/prompt-injection\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"prompt-injection\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n8f:[\"$\",\"$L2d\",\"workflow\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/workflow\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"workflow\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n90:[\"$\",\"$L2d\",\"cloud-init\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cloud-init\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cloud-init\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n91:[\"$\",\"$L2d\",\"evaluation\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/evaluation\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"evaluation\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n92:[\"$\",\"$L2d\",\"refactoring\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/refactoring\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"refactoring\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n93:[\"$\",\"$L2d\",\"flexbox\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/flexbox\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"flexbox\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n94:[\"$\",\"$L2d\",\"log-analysis\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/t"])</script><script>self.__next_f.push([1,"ag/log-analysis\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"log-analysis\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n95:[\"$\",\"$L2d\",\"cache-invalidation\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cache-invalidation\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cache-invalidation\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n96:[\"$\",\"$L2d\",\"lfs\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/lfs\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"lfs\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n97:[\"$\",\"$L2d\",\"prompt-engineering\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/prompt-engineering\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"prompt-engineering\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n98:[\"$\",\"$L2d\",\"gitignore\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/gitignore\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"gitignore\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n99:[\"$\",\"$L2d\",\"grounding\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/grounding\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"grounding\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9a:[\"$\",\"$L2d\",\"openstreetmap\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/openstreetmap\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"openstreetmap\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9b:[\"$\",\"$L2d\",\"sync\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sync\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sync\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9c:[\"$\",\"$L2d\",\"mobile\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mobile\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mobile\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9d:[\"$\",\"$L2d\",\"node-exporter\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/node-exporter\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":"])</script><script>self.__next_f.push([1,"\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"node-exporter\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9e:[\"$\",\"$L2d\",\"fts\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/fts\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"fts\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\n9f:[\"$\",\"$L2d\",\"vps\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/vps\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"vps\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na0:[\"$\",\"$L2d\",\"dns\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/dns\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"dns\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na1:[\"$\",\"$L2d\",\"cloudflared\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cloudflared\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cloudflared\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na2:[\"$\",\"$L2d\",\"pydantic\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/pydantic\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"pydantic\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na3:[\"$\",\"$L2d\",\"fleet\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/fleet\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"fleet\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na4:[\"$\",\"$L2d\",\"9router\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/9router\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"9router\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na5:[\"$\",\"$L2d\",\"nginx\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/nginx\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"nginx\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na6:[\"$\",\"$L2d\",\"ffmpeg\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ffmpeg\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ffmpeg\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\""])</script><script>self.__next_f.push([1,"children\":2}]]}]\na7:[\"$\",\"$L2d\",\"ocr\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ocr\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ocr\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na8:[\"$\",\"$L2d\",\"openfreemap\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/openfreemap\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"openfreemap\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\na9:[\"$\",\"$L2d\",\"logrotate\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/logrotate\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"logrotate\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\naa:[\"$\",\"$L2d\",\"serverless\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/serverless\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"serverless\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nab:[\"$\",\"$L2d\",\"sre\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sre\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sre\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nac:[\"$\",\"$L2d\",\"3proxy\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/3proxy\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"3proxy\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nad:[\"$\",\"$L2d\",\"sqlite\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sqlite\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sqlite\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nae:[\"$\",\"$L2d\",\"caching\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/caching\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"caching\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\naf:[\"$\",\"$L2d\",\"schema\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/schema\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"schema\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb0:[\"$\",\"$L2d\",\"html\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/html\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/"])</script><script>self.__next_f.push([1,"10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"html\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb1:[\"$\",\"$L2d\",\"systemd\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/systemd\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"systemd\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb2:[\"$\",\"$L2d\",\"goaccess\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/goaccess\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"goaccess\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb3:[\"$\",\"$L2d\",\"content-strategy\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/content-strategy\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"content-strategy\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb4:[\"$\",\"$L2d\",\"sqlalchemy\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sqlalchemy\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sqlalchemy\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb5:[\"$\",\"$L2d\",\"hardening\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/hardening\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"hardening\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb6:[\"$\",\"$L2d\",\"yaml\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/yaml\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"yaml\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":2}]]}]\nb7:[\"$\",\"$L2d\",\"npm\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/npm\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"npm\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nb8:[\"$\",\"$L2d\",\"next-themes\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/next-themes\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"next-themes\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nb9:[\"$\",\"$L2d\",\"kubernetes\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/kubernetes\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"kubernetes\",[\"$"])</script><script>self.__next_f.push([1,"\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nba:[\"$\",\"$L2d\",\"nagios\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/nagios\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"nagios\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nbb:[\"$\",\"$L2d\",\"reboot\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/reboot\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"reboot\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nbc:[\"$\",\"$L2d\",\"web-components\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/web-components\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"web-components\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nbd:[\"$\",\"$L2d\",\"api\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/api\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"api\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nbe:[\"$\",\"$L2d\",\"writing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/writing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"writing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nbf:[\"$\",\"$L2d\",\"dashboard\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/dashboard\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"dashboard\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc0:[\"$\",\"$L2d\",\"next-intl\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/next-intl\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"next-intl\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc1:[\"$\",\"$L2d\",\"stateless\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/stateless\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"stateless\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc2:[\"$\",\"$L2d\",\"onboarding\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/onboarding\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"onboarding\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc3:[\"$\",\"$L2d\",\"squid\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/squid\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:pr"])</script><script>self.__next_f.push([1,"ops:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"squid\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc4:[\"$\",\"$L2d\",\"agent-runtime\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/agent-runtime\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"agent-runtime\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc5:[\"$\",\"$L2d\",\"tailwind-css\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/tailwind-css\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"tailwind-css\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc6:[\"$\",\"$L2d\",\"oauth\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/oauth\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"oauth\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc7:[\"$\",\"$L2d\",\"composer\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/composer\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"composer\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc8:[\"$\",\"$L2d\",\"webp\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/webp\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"webp\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nc9:[\"$\",\"$L2d\",\"google-search-console\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/google-search-console\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"google-search-console\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nca:[\"$\",\"$L2d\",\"anti-ai-writing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/anti-ai-writing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"anti-ai-writing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ncb:[\"$\",\"$L2d\",\"restic\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/restic\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"restic\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ncc:[\"$\",\"$L2d\",\"backward-compatibility\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/backward-compatibility\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py"])</script><script>self.__next_f.push([1,"-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"backward-compatibility\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ncd:[\"$\",\"$L2d\",\"tesseract\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/tesseract\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"tesseract\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nce:[\"$\",\"$L2d\",\"llms-txt\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/llms-txt\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"llms-txt\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ncf:[\"$\",\"$L2d\",\"routing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/routing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"routing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd0:[\"$\",\"$L2d\",\"crawl-budget\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/crawl-budget\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"crawl-budget\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd1:[\"$\",\"$L2d\",\"data-contract\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/data-contract\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"data-contract\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd2:[\"$\",\"$L2d\",\"subprocess\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/subprocess\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"subprocess\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd3:[\"$\",\"$L2d\",\"aeo\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/aeo\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"aeo\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd4:[\"$\",\"$L2d\",\"ui\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ui\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ui\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd5:[\"$\",\"$L2d\",\"ci-cd\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ci-cd\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ci-cd\",[\"$\",\"span\",null,{\"class"])</script><script>self.__next_f.push([1,"Name\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd6:[\"$\",\"$L2d\",\"burstiness\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/burstiness\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"burstiness\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd7:[\"$\",\"$L2d\",\"ransomware\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ransomware\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ransomware\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd8:[\"$\",\"$L2d\",\"osm\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/osm\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"osm\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nd9:[\"$\",\"$L2d\",\"pipeline\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/pipeline\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"pipeline\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nda:[\"$\",\"$L2d\",\"cls\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cls\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cls\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ndb:[\"$\",\"$L2d\",\"php-fpm\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/php-fpm\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"php-fpm\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ndc:[\"$\",\"$L2d\",\"maxauthtries\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/maxauthtries\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"maxauthtries\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ndd:[\"$\",\"$L2d\",\"youtube\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/youtube\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"youtube\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nde:[\"$\",\"$L2d\",\"prismjs\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/prismjs\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"prismjs\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ndf:[\"$\",\"$L2d\",\"lisensi\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/lisensi\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$"])</script><script>self.__next_f.push([1,"undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"lisensi\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne0:[\"$\",\"$L2d\",\"attribusi\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/attribusi\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"attribusi\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne1:[\"$\",\"$L2d\",\"ollama\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ollama\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ollama\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne2:[\"$\",\"$L2d\",\"og-image\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/og-image\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"og-image\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne3:[\"$\",\"$L2d\",\"github-actions\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/github-actions\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"github-actions\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne4:[\"$\",\"$L2d\",\"useeffect\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/useeffect\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"useeffect\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne5:[\"$\",\"$L2d\",\"query-rewriting\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/query-rewriting\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"query-rewriting\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne6:[\"$\",\"$L2d\",\"mermaid\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mermaid\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mermaid\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne7:[\"$\",\"$L2d\",\"alerting\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/alerting\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"alerting\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne8:[\"$\",\"$L2d\",\"sticky\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sticky\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hove"])</script><script>self.__next_f.push([1,"r:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sticky\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ne9:[\"$\",\"$L2d\",\"openrouter\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/openrouter\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"openrouter\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nea:[\"$\",\"$L2d\",\"mutation-testing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mutation-testing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mutation-testing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\neb:[\"$\",\"$L2d\",\"flyto\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/flyto\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"flyto\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nec:[\"$\",\"$L2d\",\"chatgpt\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/chatgpt\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"chatgpt\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\ned:[\"$\",\"$L2d\",\"firecrawl\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/firecrawl\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"firecrawl\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nee:[\"$\",\"$L2d\",\"ai-agent\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ai-agent\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ai-agent\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nef:[\"$\",\"$L2d\",\"recharts\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/recharts\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"recharts\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf0:[\"$\",\"$L2d\",\"discord\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/discord\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"discord\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf1:[\"$\",\"$L2d\",\"srcset\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/srcset\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"srcset\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf2:[\"$\",\"$L2d\",\"wp-cli\",{\"ref\":\"$undefined"])</script><script>self.__next_f.push([1,"\",\"href\":\"/en/blog/tag/wp-cli\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"wp-cli\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf3:[\"$\",\"$L2d\",\"browser-automation\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/browser-automation\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"browser-automation\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf4:[\"$\",\"$L2d\",\"privacy\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/privacy\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"privacy\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf5:[\"$\",\"$L2d\",\"openhands\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/openhands\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"openhands\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf6:[\"$\",\"$L2d\",\"rag\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/rag\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"rag\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf7:[\"$\",\"$L2d\",\"writing-style\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/writing-style\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"writing-style\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf8:[\"$\",\"$L2d\",\"php\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/php\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"php\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nf9:[\"$\",\"$L2d\",\"content-pipeline\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/content-pipeline\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"content-pipeline\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nfa:[\"$\",\"$L2d\",\"error-handling\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/error-handling\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"error-handling\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nfb:[\"$\",\"$L2d\",\"iso-9001\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/iso-9001\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"clas"])</script><script>self.__next_f.push([1,"sName\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"iso-9001\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nfc:[\"$\",\"$L2d\",\"agent-canvas\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/agent-canvas\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"agent-canvas\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nfd:[\"$\",\"$L2d\",\"cookie\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/cookie\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"cookie\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nfe:[\"$\",\"$L2d\",\"searxng\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/searxng\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"searxng\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\nff:[\"$\",\"$L2d\",\"event-sourcing\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/event-sourcing\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"event-sourcing\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n100:[\"$\",\"$L2d\",\"editorial\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/editorial\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"editorial\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n101:[\"$\",\"$L2d\",\"mysql\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/mysql\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"mysql\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n102:[\"$\",\"$L2d\",\"migrasi\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/migrasi\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"migrasi\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n103:[\"$\",\"$L2d\",\"fixture\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/fixture\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"fixture\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n104:[\"$\",\"$L2d\",\"certification\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/certification\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:t"])</script><script>self.__next_f.push([1,"ext-primary\",\"children\":[\"#\",\"certification\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n105:[\"$\",\"$L2d\",\"turbopack\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/turbopack\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"turbopack\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n106:[\"$\",\"$L2d\",\"svg\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/svg\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"svg\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n107:[\"$\",\"$L2d\",\"indonesian\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/indonesian\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"indonesian\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n108:[\"$\",\"$L2d\",\"rsync\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/rsync\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"rsync\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n109:[\"$\",\"$L2d\",\"triage\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/triage\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"triage\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10a:[\"$\",\"$L2d\",\"positioning\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/positioning\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"positioning\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10b:[\"$\",\"$L2d\",\"opencode\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/opencode\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"opencode\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10c:[\"$\",\"$L2d\",\"bandwidth\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/bandwidth\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"bandwidth\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10d:[\"$\",\"$L2d\",\"coding-agent\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/coding-agent\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"coding-agent\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10e:[\"$\",\"$L2d\",\"postgresql\",{\"ref\":\"$undefined\",\"href\":\"/"])</script><script>self.__next_f.push([1,"en/blog/tag/postgresql\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"postgresql\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n10f:[\"$\",\"$L2d\",\"hermes-agent\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/hermes-agent\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"hermes-agent\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n110:[\"$\",\"$L2d\",\"chat-ui\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/chat-ui\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"chat-ui\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n111:[\"$\",\"$L2d\",\"search-console\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/search-console\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"search-console\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n112:[\"$\",\"$L2d\",\"ffprobe\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/ffprobe\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"ffprobe\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n113:[\"$\",\"$L2d\",\"doh\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/doh\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"doh\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n114:[\"$\",\"$L2d\",\"openviking\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/openviking\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"openviking\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n115:[\"$\",\"$L2d\",\"data-modeling\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/data-modeling\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"data-modeling\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n116:[\"$\",\"$L2d\",\"glossary\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/glossary\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"glossary\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n117:[\"$\",\"$L2d\",\"skill-drift\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/skill-drift\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded"])</script><script>self.__next_f.push([1,"-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"skill-drift\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n118:[\"$\",\"$L2d\",\"locale\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/locale\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"locale\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n119:[\"$\",\"$L2d\",\"sitemap\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sitemap\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sitemap\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11a:[\"$\",\"$L2d\",\"venv\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/venv\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"venv\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11b:[\"$\",\"$L2d\",\"shellcheck\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/shellcheck\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"shellcheck\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11c:[\"$\",\"$L2d\",\"metadata\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/metadata\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"metadata\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11d:[\"$\",\"$L2d\",\"leaflet\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/leaflet\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"leaflet\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11e:[\"$\",\"$L2d\",\"clipboard\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/clipboard\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"clipboard\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n11f:[\"$\",\"$L2d\",\"knowledge-base\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/knowledge-base\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"knowledge-base\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n120:[\"$\",\"$L2d\",\"backend\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/backend\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\""])</script><script>self.__next_f.push([1,"#\",\"backend\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n121:[\"$\",\"$L2d\",\"distributed-systems\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/distributed-systems\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"distributed-systems\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n122:[\"$\",\"$L2d\",\"debian\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/debian\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"debian\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n123:[\"$\",\"$L2d\",\"sshd\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sshd\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sshd\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n124:[\"$\",\"$L2d\",\"swe-bench\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/swe-bench\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"swe-bench\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n125:[\"$\",\"$L2d\",\"quality-assurance\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/quality-assurance\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"quality-assurance\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n126:[\"$\",\"$L2d\",\"journald\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/journald\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"journald\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n127:[\"$\",\"$L2d\",\"semver\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/semver\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"semver\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n128:[\"$\",\"$L2d\",\"pagination\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/pagination\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"aria-current\":\"$undefined\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"pagination\",[\"$\",\"span\",null,{\"className\":\"ml-1 opacity-60\",\"children\":1}]]}]\n129:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"transition-colors hover:text-primary\",\"children\":\"Blog\"}]\n12a:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/category/tooling\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"transition-colors hover:text-primary\",\"children\":\"tooling\"}]\n"])</script><script>self.__next_f.push([1,"132:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/kontrak-dua-sisi-konverter-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T10:04:34Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 29, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"python\",\"icon\":\"$3d:props:children:1:props:children:2:props:children:1:props:children:props:icons:0:icon\"}],\"category\":\"tooling\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"tooling\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"All Unit Tests Green, Yet the Converter Still Broke\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"Three pull-side bugs slipped past unit tests that were green on each side; only the round-trip property test caught the unsynchronized two-sided contract.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"133:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/konverter-html-markdown-round-trip-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T09:20:28Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 29, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"python\",\"icon\":\"$3d:props:children:1:props:children:2:props:children:1:props:children:props:icons:0:icon\"}],\"category\":\"tooling\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"tooling\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"Two-way converter: conservative on push, tolerant on pull\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"A horizontal rule that vanished without a trace exposed a healthy two-way converter design: canonical push, tolerant pull that still refuses loudly.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"134:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/konverter-markdown-fail-loud-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T08:26:50Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 29, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"python\",\"icon\":\"$3d:props:children:1:props:children:2:props:children:1:props:children:props:icons:0:icon\"}],\"category\":\"tooling\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"tooling\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"The Markdown converter I trust is the one that refuses\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"A two-way repo-to-Plane converter that rejects anything outside a closed subset, line number included, instead of guessing.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"135:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/plane-pages-mirror-dokumen-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-29T07:17:53Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 29, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"git\",\"icon\":{\"width\":24,\"height\":24,\"body\":\"\u003cpath fill=\\\"currentColor\\\" d=\\\"M13.09 23.549a1.54 1.54 0 0 1-2.18 0L.451 13.089a1.54 1.54 0 0 1 0-2.179l7.191-7.19l2.733 2.733a1.85 1.85 0 0 0 .964 2.326v6.66a1.849 1.849 0 1 0 1.54 0V8.957l2.508 2.508a1.85 1.85 0 1 0 1.09-1.09l-2.634-2.634a1.85 1.85 0 0 0-2.378-2.377L8.73 2.63L10.91.451a1.54 1.54 0 0 1 2.179 0l10.459 10.46a1.54 1.54 0 0 1 0 2.179z\\\"/\u003e\"}}],\"category\":\"devops\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"devops\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"The document mirror moved offices: work items to Plane Pages\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"The document mirror moved off the kanban board and into Plane Pages, and the storage contract forced a full identity redesign.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"136:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/plane-gate-bukti-done-terverifikasi-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-28T16:25:45Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 28, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"git\",\"icon\":\"$135:props:children:0:props:children:1:props:icons:0:icon\"}],\"category\":\"devops\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"devops\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"Done on the tracker is a claim; the proof lives in Git\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"A card flipped to Done with nothing behind it. Now a work item only counts as done when its evidence hashes actually resolve in the repository.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"137:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/plane-doc-sync-refusal-taxonomy-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-28T16:25:27Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 28, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[{\"tag\":\"python\",\"icon\":\"$3d:props:children:1:props:children:2:props:children:1:props:children:props:icons:0:icon\"}],\"category\":\"backend\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"backend\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"Two-way document sync: the trustworthy tool refuses precisely\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"A pull returned different content than my push, with no error. The fix was not a smarter parser but a precise map of what the sync refuses to do.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"138:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/plane-onboarding-satu-pintu-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-28T16:25:02Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 28, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[],\"category\":\"devops\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"devops\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"One-door Plane onboarding: logic in one repo, data in every repo\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"I almost copied a skill folder into every repository. The healthier shape turned out to be one onboarding door and tiny consumer footprints.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"139:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/fb45375-plane-mirror-api-probe-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group relative flex items-start gap-3 sm:gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative flex w-14 shrink-0 flex-col items-center gap-1.5 sm:w-16 lg:w-[4.5rem]\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-09-28T15:30:45Z\",\"className\":\"inline-flex w-max shrink-0 items-center gap-1 whitespace-nowrap rounded-full bg-[#25E2A8]/10 px-1.5 py-0.5 text-[9px] font-medium tabular-nums text-emerald-600 dark:text-[#25E2A8]\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$3d:props:children:1:props:children:1:props:children:2:props:children:0:props:iconNode\",\"className\":\"lucide-clock3 lucide-clock-3 size-2.5 shrink-0\"}],\"Sep 28, 2026\"]}],[\"$\",\"$L142\",null,{\"icons\":[],\"category\":\"devops\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 h-px w-5 bg-border\"}],[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"absolute -bottom-1 left-1/2 size-2 -translate-x-1/2 rounded-full bg-primary opacity-40 shadow-[0_0_8px_2px_color-mix(in_srgb,var(--primary)_40%,transparent)] transition-opacity group-hover:opacity-100\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1 pt-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-bold tracking-wide text-primary uppercase sm:text-[11px]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"size-1.5 animate-pulse rounded-full bg-primary\"}],\"devops\"]}],[\"$\",\"h3\",null,{\"className\":\"mt-1.5 line-clamp-2 text-[13px] leading-snug font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1 sm:text-[15px]\",\"children\":\"Live probe vs my Plane spec: two assumptions died in 27 minutes\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 line-clamp-2 text-[11px] leading-relaxed text-muted-foreground sm:line-clamp-1 sm:text-xs\",\"children\":\"My 905-line Plane sync spec lost two assumptions to a live probe: HTML markers stripped by server-side sanitization, archive endpoint 404.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"13a:[\"$\",\"$L2d\",\"plane\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/plane\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"plane\"]}]\n13b:[\"$\",\"$L2d\",\"python\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/python\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"python\"]}]\n13c:[\"$\",\"$L2d\",\"markdown\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/markdown\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"markdown\"]}]\n13d:[\"$\",\"$L2d\",\"sync\",{\"ref\":\"$undefined\",\"href\":\"/en/blog/tag/sync\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"rounded-[6px] bg-primary/10 px-2.5 py-0.5 text-[11px] text-primary/80 ring-1 ring-primary/15 ring-inset transition-colors hover:bg-primary/15 hover:text-primary\",\"children\":[\"#\",\"sync\"]}]\n141:[\"$\",\"$L2d\",null,{\"ref\":\"$undefined\",\"href\":\"/en/blog/kontrak-dua-sisi-konverter-en\",\"locale\":\"$undefined\",\"localeCookie\":\"$1a:props:localeCookie\",\"className\":\"group min-w-0 flex-1\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground transition-colors group-hover:text-primary\",\"children\":[[\"$\",\"$L23\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m12 19-7-7 7-7\",\"key\":\"1l729n\"}],[\"path\",{\"d\":\"M19 12H5\",\"key\":\"x3x0zl\"}]],\"className\":\"lucide-arrow-left size-3.5 transition-transform group-hover:-translate-x-0.5\"}],\"Previous\"]}],[\"$\",\"span\",null,{\"className\":\"mt-1 block line-clamp-2 text-sm font-semibold text-foreground transition-colors group-hover:text-primary sm:line-clamp-1\",\"children\":\"All Unit Tests Green, Yet the Converter Still Broke\"}]]}]\n"])</script></body></html>