jskelet 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -33,6 +33,13 @@ one is listed under a **Breaking** heading.
33
33
  hours, and every banned or unauthorised response is a `404` rather than a 401
34
34
  that would confirm the panel exists. The panel is excluded from indexing,
35
35
  prewarming and navigation speculation.
36
+ - A language picker in the cache panel header, Turkish and English. The first
37
+ visit follows the browser's language, the choice is kept in `localStorage` and
38
+ carries over to the login page, and switching costs no request. To keep this
39
+ from leaking UI concerns into the server, an `/action` response now returns
40
+ `{ ok, code, params }` instead of an English sentence and the panel builds the
41
+ text — the framework's log and API stay in one language while the panel
42
+ speaks two.
36
43
  - Cloudflare cache management, from the panel and from code. Set
37
44
  `JSKELET_CLOUDFLARE_KEY` and `JSKELET_CLOUDFLARE_ZONE_ID` (or
38
45
  `cache().cloudflare`) and the panel gains the CDN tier next to the origin one:
package/docs/06-cache.md CHANGED
@@ -815,7 +815,7 @@ Panel açıldığında sunucu logu şifreyi basar:
815
815
 
816
816
  | Bölüm | Gösterdiği |
817
817
  | --- | --- |
818
- | Üst satır | Sürüm, ortam, pid, uptime, RSS |
818
+ | Üst satır | Sürüm, ortam, pid, uptime, RSS ve dil seçimi (Türkçe / İngilizce) |
819
819
  | Kartlar | HTML girdi sayısı ve sınırı, bellekteki HTML boyutu, bayat girdi sayısı, veri girdisi sayısı, Redis durumu (`connected` / `bypassed` / `off`), ısıtma turunun ilerlemesi |
820
820
  | Paylaşımlı kademe | Bağlantının **nereye** kurulduğu (adres, TLS, veritabanı), anahtar öneki ve `namespace`, `buildId`, hangi türlerin paylaşıldığı, sıkıştırılmış gövde ve purge yayını durumu, komut zaman aşımı ve hata sayısı. Kapalıysa yerine Redis önerisi ve kurulum parçacığı çıkar. |
821
821
  | Cloudflare | Zone, plan, cache ile ilgili zone ayarları, development mode'un kalan süresi, Tiered Cache / Cache Reserve durumu ve cache isabet oranı. Bağlı değilse kurulum parçacığı çıkar. |
@@ -845,6 +845,13 @@ değil.
845
845
  Hepsi paylaşımlı kademeye de yayılır: tek kopyanın önbelleğini boşaltmak,
846
846
  kümede çalışan bir kurulumda "temizledim ama hâlâ eski" sorusunu üretir.
847
847
 
848
+ Panel iki dilde: header'daki seçici Türkçe ile İngilizce arasında geçiş yapar.
849
+ İlk açılışta tarayıcının diline bakılır, seçim `localStorage`'da tutulur ve
850
+ giriş sayfasına da uygulanır. Dil değişimi hiçbir isteğe yol açmaz. Sunucu
851
+ tarafı arayüz dilini hiç bilmez: `/action` cevabı metin değil bir kod döner
852
+ (`{ ok, code, params }`) ve cümleyi panel kurar — framework'ün log'u ve API'si
853
+ tek dilde kalır.
854
+
848
855
  Listedeki tek satırı silmek `invalidateHtmlCache()`ten farklıdır: o yol
849
856
  desenine bakar ve bir yolun **bütün** query varyantlarını düşürür,
850
857
  `dropHtmlCacheKey()` ise tam anahtarı alır — `/liste?sayfa=2` düşerken
@@ -837,7 +837,7 @@ When the panel is on, the server log prints the password:
837
837
 
838
838
  | Area | Contents |
839
839
  | --- | --- |
840
- | Top bar | Version, environment, pid, uptime, RSS |
840
+ | Top bar | Version, environment, pid, uptime, RSS and the language picker (Turkish / English) |
841
841
  | Cards | HTML entry count and limit, HTML bytes in memory, stale entry count, data entry count, Redis state (`connected` / `bypassed` / `off`), prewarm progress |
842
842
  | Shared tier | **Where** the connection points (address, TLS, database), the key prefix and `namespace`, the `buildId`, which kinds are shared, the state of compressed bodies and the purge broadcast, the command timeout and the error count. When it is off, a Redis recommendation with an install snippet takes its place. |
843
843
  | Cloudflare | Zone, plan, cache related zone settings, how long development mode has left, Tiered Cache / Cache Reserve state and the cache hit ratio. When no zone is connected, a setup snippet takes its place. |
@@ -868,6 +868,13 @@ Each one propagates to the shared tier as well: clearing a single replica's
868
868
  cache is what produces the "I cleared it and it is still old" question in a
869
869
  clustered setup.
870
870
 
871
+ The panel speaks two languages: the picker in the header switches between
872
+ Turkish and English. The first visit follows the browser, the choice is kept in
873
+ `localStorage` and applies to the login page too. Switching costs no request.
874
+ The server never knows the interface language: an `/action` response returns a
875
+ code rather than a sentence (`{ ok, code, params }`) and the panel builds the
876
+ text — so the framework's log and API stay in one language.
877
+
871
878
  Dropping a single row is not the same as `invalidateHtmlCache()`: that one
872
879
  matches a path pattern and takes down **every** query variant of a path, while
873
880
  `dropHtmlCacheKey()` takes the exact key — `/list?page=2` goes and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jskelet",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "A framework that feels like no framework: Express 5 + EJS server rendering, vanilla JS islands, Tailwind v4 and an in-process HTML TTL cache.",
5
5
  "type": "module",
6
6
  "license": "MIT",