{
  "project": {
    "name": "Bashrc Dotfiles",
    "purpose": "Global and per-user bash prompt + banner with seasonal palettes and time/season emoji accents.",
    "repo_root": "/home/steffen/Bashrc",
    "default_branch": "main",
    "release_state": "main is production-ready"
  },
  "branches": {
    "main": {
      "notes": [
        "Shared PS1 module in dotfiles/ps1/ps1.sh is source of truth for both Linux and macOS installers.",
        "README documents seasonal ranges and style packs.",
        "README example image uses images/bash-pallete.png."
      ]
    }
  },
  "files": {
    "ps1_shared": "dotfiles/ps1/ps1.sh",
    "linux_installer": "dotfiles/install/install-linux-global.sh",
    "macos_installer": "dotfiles/install/install-macos-user.sh",
    "global_installer_wrapper": "dotfiles/install/install-global-ps1.sh",
    "readme": "README.md",
    "library": "libary.md",
    "palette_image": "images/bash-pallete.png",
    "theme_images_dir": "images/themes"
  },
  "install_behavior": {
    "linux": {
      "script": "dotfiles/install/install-linux-global.sh",
      "scope": "global (all users)",
      "installs": [
        "/etc/profile.d/ps1.sh",
        "/etc/profile.d/banner.sh"
      ],
      "sources_from": "/etc/bash.bashrc",
      "prompts": [
        "PS1 only / Banner only / Both",
        "PS1 mode: Single season / Dynamic / Contest / Holidays / Custom (if PS1 selected)",
        "Season pick (if single season)",
        "Layout order selection (seasonal/contest/holidays)",
        "Style preset selection (if contest)",
        "Holiday selection (if holidays)",
        "Custom style selection (if custom)",
        "Enable git capsule for all themes (if PS1 selected)"
      ],
      "season_config_file": "/etc/ps1-season",
      "style_config_file": "/etc/ps1-style",
      "banner_punchline_file": "/etc/ps1-punchline"
    },
    "macos": {
      "script": "dotfiles/install/install-macos-user.sh",
      "scope": "per-user",
      "installs": [
        "~/.config/ps1/ps1.sh"
      ],
      "sources_from": [
        "~/.bashrc",
        "~/.bash_profile"
      ],
      "prompts": [
        "PS1 mode: Single season / Dynamic / Contest / Holidays / Custom",
        "Season pick (if single season)",
        "Layout order selection (seasonal/contest/holidays)",
        "Style preset selection (if contest)",
        "Holiday selection (if holidays)",
        "Custom style selection (if custom)",
        "Enable git capsule for all themes"
      ],
      "season_config_file": "~/.config/ps1/season",
      "style_config_file": "~/.config/ps1/style"
    },
    "global_installer_wrapper": {
      "script": "dotfiles/install/install-global-ps1.sh",
      "behavior": "Copies shared PS1 module to /etc/profile.d/ps1.sh and updates /etc/bash.bashrc."
    }
  },
  "season_rules": {
    "timezone": "Europe/Oslo",
    "dynamic_ranges": {
      "spring": "March-May",
      "summer": "June-August",
      "autumn": "September-mid November (before Nov 15)",
      "winter": "mid November-February"
    },
    "config": {
      "mode_env": "PS1_SEASON_MODE=dynamic|static",
      "season_env": "PS1_SEASON=winter|spring|summer|autumn",
      "config_file_keys": [
        "PS1_SEASON_MODE",
        "PS1_SEASON"
      ]
    }
  },
  "palettes": {
    "winter": {
      "Z1_BG": 59,
      "Z2_BG": 61,
      "Z3_BG": 63,
      "Z4_BG": 38,
      "Z5_BG": 37,
      "Z1_FG": 255,
      "Z2_FG": 255,
      "PATH_FG": 152,
      "FRAME": 60
    },
    "spring": {
      "Z1_BG": 68,
      "Z2_BG": 70,
      "Z3_BG": 72,
      "Z4_BG": 121,
      "Z5_BG": 120,
      "Z1_FG": 255,
      "Z2_FG": 22,
      "PATH_FG": 28,
      "FRAME": 65
    },
    "summer": {
      "Z1_BG": 141,
      "Z2_BG": 142,
      "Z3_BG": 143,
      "Z4_BG": 214,
      "Z5_BG": 208,
      "Z1_FG": 255,
      "Z2_FG": 0,
      "PATH_FG": 0,
      "FRAME": 130
    },
    "autumn": {
      "Z1_BG": 93,
      "Z2_BG": 95,
      "Z3_BG": 97,
      "Z4_BG": 166,
      "Z5_BG": 136,
      "Z1_FG": 255,
      "Z2_FG": 255,
      "PATH_FG": 223,
      "FRAME": 95
    }
  },
  "styles": {
    "default": "aurora",
    "available": [
      {
        "id": "aurora",
        "name": "Aurora",
        "description": "Powerline blocks with seasonal palette, two-line calm layout.",
        "layout": "two-line, segmented blocks",
        "preview": "[date time user] > [@host /path]"
      },
      {
        "id": "neon",
        "name": "Neon",
        "description": "Magenta/cyan cyber blocks, high contrast, two-line.",
        "layout": "two-line, neon blocks",
        "preview": "[user time] > [@host /path]"
      },
      {
        "id": "forge",
        "name": "Forge",
        "description": "Warm copper blocks, heavy frame, assertive.",
        "layout": "two-line, bold blocks",
        "preview": "[date time user] > [@host /path]"
      },
      {
        "id": "circuit",
        "name": "Circuit",
        "description": "Green scanline rail, minimal chrome, compact.",
        "layout": "two-line, rail style",
        "preview": "[user time] - @host /path"
      },
      {
        "id": "mono",
        "name": "Mono",
        "description": "Clean monochrome, fast read, low noise.",
        "layout": "two-line, minimal",
        "preview": "[date time user] @host /path"
      },
      {
        "id": "git",
        "name": "Git",
        "description": "Minimal blocks with git capsule when in repo.",
        "layout": "two-line, git capsule on line 2",
        "preview": "[date time user] @host - /path (git)"
      },
      {
        "id": "hawolex",
        "name": "Hawolex",
        "description": "Winter neon with tech icons, contest layout.",
        "layout": "two-line, contest layout",
        "preview": "[date time user] @host - /path"
      },
      {
        "id": "hawolexv2",
        "name": "HawolexV2",
        "description": "Winter neon with multi-segment gradient.",
        "layout": "two-line, segmented gradient",
        "preview": "[date time user] @host - /path"
      },
      {
        "id": "radar",
        "name": "Radar",
        "description": "Green scanline HUD with a clean, low-noise read.",
        "layout": "two-line, minimal HUD",
        "preview": "[user time] @host /path"
      },
      {
        "id": "synthwave",
        "name": "Synthwave",
        "description": "Pink/cyan/orange glow blocks, aggressive contrast.",
        "layout": "two-line, three blocks",
        "preview": "[date time user] | @host | /path"
      },
      {
        "id": "noir",
        "name": "Noir",
        "description": "Near-black minimal with a sharp path accent.",
        "layout": "two-line, minimal",
        "preview": "[date time user] @host /path"
      },
      {
        "id": "topo",
        "name": "Topo",
        "description": "Elevation-style path with multi-tone segments.",
        "layout": "two-line, path emphasis",
        "preview": "[date time user] @host /path"
      },
      {
        "id": "glitch",
        "name": "Glitch",
        "description": "Jitter separators and neon contrast.",
        "layout": "two-line, glitch separators",
        "preview": "[date time user] ~ @host /path"
      },
      {
        "id": "arcticfire",
        "name": "ArcticFire",
        "description": "Icy blues on the left, ember orange on the right.",
        "layout": "two-line, three blocks",
        "preview": "[date time user] | @host | /path"
      },
      {
        "id": "acidlime",
        "name": "AcidLime",
        "description": "Black background with electric green signal.",
        "layout": "two-line, minimal",
        "preview": "[date time user] @host /path"
      }
    ],
    "config": {
      "env": "PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime; PS1_STYLE_PACK=standard|contest|holiday|custom; PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time; PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear; PS1_GIT=0|1",
      "config_file_keys": [
        "PS1_STYLE",
        "PS1_STYLE_PACK",
        "PS1_CONTEST_LAYOUT",
        "PS1_HOLIDAY",
        "PS1_GIT"
      ]
    }
  },
  "emoji_rules": {
    "fixed_times": {
      "lunch": "11:00-11:29 => 🥪",
      "dinner": "16:00-16:59 => 🍲"
    },
    "rotation": "Daily rotation by day-of-year with season offsets.",
    "seasonal_accents": {
      "spring": {
        "sunrise": [
          "🌷",
          "🌱",
          "🐣",
          "🌤"
        ],
        "coffee": "☕",
        "work": [
          "🌿",
          "🪴",
          "🐝",
          "🌼"
        ],
        "evening": "🌤",
        "night": "🌙"
      },
      "summer": {
        "sunrise": [
          "🌞",
          "🏖️",
          "🌅",
          "🌤"
        ],
        "coffee": "🧃",
        "work": [
          "🏄",
          "🏖️",
          "🚤",
          "🌴"
        ],
        "evening": "🌇",
        "night": "🌙"
      },
      "autumn": {
        "sunrise": [
          "🍁",
          "🍂",
          "🌫️",
          "🌦️"
        ],
        "coffee": "☕",
        "work": [
          "🍂",
          "🍄",
          "🎃",
          "🪵"
        ],
        "evening": "🌆",
        "night": "🌙"
      },
      "winter": {
        "sunrise": [
          "🏔️",
          "🌨️",
          "❄️",
          "🌌"
        ],
        "coffee": "☕",
        "work": [
          "🎿",
          "⛷️",
          "🏂",
          "🧊"
        ],
        "evening": "🌆",
        "night": "🌙"
      }
    },
    "contest_accents": {
      "sunrise": [
        "⚡️",
        "🛰️",
        "🧬",
        "🧠"
      ],
      "work": [
        "🛠️",
        "💾",
        "🧪",
        "🧩"
      ],
      "coffee": "☕",
      "evening": "🎛️",
      "night": "🕶️"
    },
    "holiday_accents": {
      "christmas": {
        "sunrise": [
          "🎄",
          "🎅",
          "❄️",
          "⛄"
        ],
        "work": [
          "🎁",
          "🧤",
          "🧣",
          "🦌"
        ],
        "coffee": "☕",
        "evening": "🌟",
        "night": "🕯️"
      },
      "easter": {
        "sunrise": [
          "🐣",
          "🥚",
          "🌷",
          "🌤"
        ],
        "work": [
          "🐰",
          "🌼",
          "🧺",
          "🍫"
        ],
        "coffee": "☕",
        "evening": "🌅",
        "night": "🌙"
      },
      "halloween": {
        "sunrise": [
          "🎃",
          "🦇",
          "🌕",
          "🕸️"
        ],
        "work": [
          "👻",
          "💀",
          "🕯️",
          "🧪"
        ],
        "coffee": "☕",
        "evening": "🌆",
        "night": "🕷️"
      },
      "valentine": {
        "sunrise": [
          "💖",
          "🌹",
          "💘",
          "💕"
        ],
        "work": [
          "💌",
          "🍫",
          "🕊️",
          "💗"
        ],
        "coffee": "☕",
        "evening": "🌆",
        "night": "🌙"
      },
      "thanksgiving": {
        "sunrise": [
          "🦃",
          "🍁",
          "🥧",
          "🍂"
        ],
        "work": [
          "🍽️",
          "🌾",
          "🧺",
          "🥖"
        ],
        "coffee": "☕",
        "evening": "🌆",
        "night": "🌙"
      },
      "newyear": {
        "sunrise": [
          "🎆",
          "🥂",
          "🎇",
          "✨"
        ],
        "work": [
          "🗓️",
          "⏳",
          "🚀",
          "✨"
        ],
        "coffee": "☕",
        "evening": "🌆",
        "night": "🌙"
      }
    },
    "style_accents": {
      "hawolex": {
        "sunrise": [
          "💻",
          "🚗",
          "🔊",
          "🎮"
        ],
        "work": [
          "🎧",
          "🕹️",
          "📟",
          "🧩"
        ],
        "coffee": "☕",
        "evening": "🌆",
        "night": "🌙"
      }
    },
    "time_slots": {
      "sunrise": "05:00-08:59",
      "coffee": "09:00-10:59",
      "work": "11:30-15:59",
      "evening": "17:00-22:59",
      "night": "23:00-04:59"
    }
  },
  "prompt_structure": {
    "zone1": "date time user",
    "zone2": "host path",
    "seasonal_segments": "date | time | user | host+path (subtle seasonal gradient)",
    "line2": "status arrow + emoji",
    "emoji_padding": "Two spaces after the emoji before the cursor",
    "path_shortening": "Keeps /home/user or /Users/user visible and shortens middle if deep.",
    "nerd_font_caps": "Always enabled unless PS1_FORCE_ASCII=1"
  },
  "overrides": {
    "force_nerd_font": "PS1_FORCE_NF=1",
    "force_ascii": "PS1_FORCE_ASCII=1",
    "disable_prompt_env": "DISABLE_GLOBAL_PS1=1",
    "disable_prompt_file": "~/.config/ps1/disable"
  },
  "notes": [
    "On Linux, installer affects all users by writing to /etc/profile.d and sourcing from /etc/bash.bashrc.",
    "On macOS, installer is per-user and sources from .bashrc/.bash_profile.",
    "Seasonal palettes and contest pack are now documented directly in main.",
    "README uses images/bash-pallete.png.",
    "Git capsule prefers __git_ps1 and falls back to git symbolic-ref/short hash when git-prompt is unavailable or returns empty.",
    "Hawolex git capsule enables when PS1_GIT resolves to a truthy value (1/yes/true/on).",
    "Custom pack adds bold styles (radar, synthwave, noir, topo, glitch, arcticfire, acidlime)."
  ]
}
