{
 "_comment": "SembilaJu Cloudflare Pages config (home: https://sembilaju.my; sembilaju.io forwards there). server.url = https://api.sembilaju.my; set it to \"\" for a map-only trial (routing, toll, ETA, reports and chat then show \"coming soon\"). Editable after build without rebuilding.",
 "server": {
  "url": "https://api.sembilaju.my",
  "fallbackUrl": "https://srv2110462.hstgr.cloud",
  "_help": "SembilaJu server address (https). Empty = map-only trial. If routing data is not ready, the app says \"Routing is warming up, try again in a few minutes\". fallbackUrl: used for the rest of the session only when server.url cannot be reached at all (DNS/network error, not HTTP errors); \"\" = off."
 },
 "basemap": {
  "pmtiles": "https://pub-6a5f500c4659481b8378a513ea7bf9b9.r2.dev/malaysia.pmtiles",
  "schema": "openmaptiles",
  "glyphs": "fonts/{fontstack}/{range}.pbf",
  "attribution": "© OpenStreetMap contributors · © OpenMapTiles",
  "_help": "Full https URL of malaysia.pmtiles (Jalan, Cloudflare R2). Needs CORS + Range on the bucket."
 },
 "routing": {
  "type": "server",
  "urlCar": "",
  "urlMotorcycle": "",
  "_help": "Routing goes through server.url /v1/route."
 },
 "geocoder": {
  "type": "photon",
  "url": "",
  "minIntervalMs": 1500,
  "_help": "'photon' = full address search through the myPeta server (/api/geocode -> self-hosted Photon on the server box), falling back to the offline index if it is down. 'osm-index' = offline OSM place index only (public/places.json). 'nominatim' + url of a SELF-HOSTED Nominatim. Never public nominatim.openstreetmap.org."
 },
 "data": {
  "fuel": "{server}/v1/data/fuel",
  "weather": "{server}/v1/data/warnings",
  "toll": "{server}/v1/toll",
  "tollPlazas": "{server}/v1/toll-plazas",
  "eta": "{server}/v1/eta",
  "chargers": "{server}/v1/data/chargers",
  "traffic": "{server}/v1/traffic",
  "typical": "{server}/v1/data/typical",
  "truck": "{server}/v1/truck",
  "truckRoute": "{server}/v1/truck/route",
  "rainUrl": "static/rain.geojson",
  "floodUrl": "static/flood.geojson",
  "rrUrl": "static/rnr.geojson",
  "offlineManifest": "https://pub-6a5f500c4659481b8378a513ea7bf9b9.r2.dev/offline/2026.10.28/manifest.json"
 },
 "snapshot": {
  "_help": "Bundled copies of Jalan's 'latest' files (npm run snapshot) used when the server is unreachable. Shown with their date.",
  "fuel": "snapshot/fuelprice_latest.json",
  "weather": "snapshot/warning_latest.json",
  "chargers": "snapshot/ev-chargers.geojson",
  "typical": "snapshot/typical-speeds.json"
 },
 "traffic": {
  "refreshSec": 60
 },
 "vehicles": {
  "motorcycle": {
   "fuelTier": "ron95_budi95",
   "litresPer100km": 2.5
  },
  "car": {
   "fuelTier": "ron95_budi95",
   "litresPer100km": 7
  },
  "ev": {
   "kWhPer100km": 15,
   "rmPerKWh": 1.3
  }
 },
 "features": {
  "MYPETA_ENABLE_TRUCK": false,
  "MYPETA_ENABLE_GUIDANCE": true,
  "MYPETA_ENABLE_SHELTERS": true,
  "MYPETA_ENABLE_ETA_SHARE": true,
  "MYPETA_ENABLE_WARNINGS_BY_STATE": true,
  "MYPETA_ENABLE_OFFLINE_PACKS": true,
  "MYPETA_ENABLE_TIDE_FLOOD": false,
  "MYPETA_ENABLE_CAMERAS": true,
  "MYPETA_ENABLE_SURAU": true,
  "MYPETA_ENABLE_MOTOPARK": true,
  "_help_v52": "v5.2: ETA_SHARE (/v1/share live, tested 30 Oct with demo data, share deleted after) and WARNINGS_BY_STATE (/v1/warnings live) ON. OFFLINE_PACKS ON (Sam OK 30 Oct; 10 packs on R2, manifest data.offlineManifest, sha256-checked, kept in OPFS, wiped by Delete my data). TIDE_FLOOD OFF (AVISO account not approved yet).",
  "_help": "Truck stays off. SHELTERS = rain shelters on the route + opt-in stopped signal via {server}/v1/shelters and /v1/shelters/stopped, ON (Sam/Jalan 30 Oct 2:21pm). GUIDANCE = BM/中文/粵語 turn voice from our phrase tables, ON as written (Sam 29 Oct 5:50pm). Police/camera reports stay hidden. CAMERAS (6.2.1, Sam 31 Oct) = OSM fixed speed cameras only (layer + drive alert); rider police/camera REPORTS stay blocked. SURAU (surau & masjid along the route, OSM via /v1/surau_along) and MOTOPARK (motorcycle parking near the destination, OSM via /v1/parking/motorcycle) ON (Sam 31 Oct, 6.2.1)."
 },
 "tolls": {
  "motorcycleFreeHighways": [
   "PLUS",
   "LDP",
   "SPRINT",
   "NPE"
  ],
  "sourceUrl": "https://berita.rtm.gov.my/nasional/senarai-berita-nasional/senarai-artikel/llm-nafi-caj-tol-kepada-penunggang-motosikal/",
  "_help": "ON (Sam 29 Oct 5:50pm): motorcycles pay RM0 on these highways. With a server, the /toll fields (free_for_motorcycles, subject_to_confirmation, labels) are used as sent; without one, RM0 \"Free for motorcycles\" + \"subject to confirmation\". Source: LLM Aug 2025 statement (RTM). Empty list [] = old toll behaviour."
 }
}
