{"version":1,"defaults":{"fxPalette":"ultracode","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1},"fields":{"fxPalette":{"type":"string","enum":["ultracode","theme","ocean","ember","custom"],"default":"ultracode","description":"Streak palette: UltraCode violet, current theme, ocean, ember, or custom colors."},"fxMix":{"type":"number","minimum":0,"maximum":1,"default":0.2,"description":"How strongly the streak palette colors the contribution cells: 0 keeps their theme colors, 1 uses the full streak palette."},"fxDirection":{"type":"string","enum":["rtl","ltr"],"default":"rtl","description":"Travel direction of the glints: rtl moves from today into the past; ltr moves toward today."},"fxSpeed":{"type":"number","minimum":2,"maximum":20,"default":10,"description":"Glint speed in calendar columns per second."},"fxSpread":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"How far the glints are scattered across weekday rows: 0 aligns the rows, 1 fully disperses them."},"fxColor":{"type":"string","pattern":"^#?[0-9a-fA-F]{6}$","description":"Optional streak body color, as six-digit RGB hex. Omit for the selected palette; PATCH null clears an override."},"fxGlint":{"type":"string","pattern":"^#?[0-9a-fA-F]{6}$","description":"Optional glint highlight color, as six-digit RGB hex. Omit for the selected palette; PATCH null clears an override."},"fxSpark":{"type":"string","pattern":"^#?[0-9a-fA-F]{6}$","description":"Optional spark color, as six-digit RGB hex. Omit for the selected palette; PATCH null clears an override."}},"presets":[{"id":"tethered-twinkles","label":"TetherEd twinkles","description":"TetherEd heatmap with violet twinkles, 20% tint, and dispersed right-to-left movement.","config":{"theme":"tethered","fx":true,"fxPalette":"ultracode","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1},"patch":{"theme":"tethered","fx":true,"fxPalette":"ultracode","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1,"colors":null,"fxColor":null,"fxGlint":null,"fxSpark":null}},{"id":"ocean-twinkles","label":"Ocean twinkles","description":"TetherEd heatmap with blue and teal twinkles, 20% tint, and dispersed right-to-left movement.","config":{"theme":"tethered","fx":true,"fxPalette":"ocean","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1},"patch":{"theme":"tethered","fx":true,"fxPalette":"ocean","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1,"colors":null,"fxColor":null,"fxGlint":null,"fxSpark":null}}],"palettes":[{"id":"ultracode","label":"UltraCode violet","description":"Violet streak with pale highlights and a warm spark.","config":{"fxPalette":"ultracode"},"patch":{"fxPalette":"ultracode","fxColor":null,"fxGlint":null,"fxSpark":null}},{"id":"theme","label":"Match the theme","description":"Use the widget theme colors for the streak.","config":{"fxPalette":"theme"},"patch":{"fxPalette":"theme","fxColor":null,"fxGlint":null,"fxSpark":null}},{"id":"ocean","label":"Ocean","description":"Cool blue and teal streak colors.","config":{"fxPalette":"ocean"},"patch":{"fxPalette":"ocean","fxColor":null,"fxGlint":null,"fxSpark":null}},{"id":"ember","label":"Ember","description":"Warm orange and gold streak colors.","config":{"fxPalette":"ember"},"patch":{"fxPalette":"ember","fxColor":null,"fxGlint":null,"fxSpark":null}},{"id":"custom","label":"Custom colors","description":"Choose fxColor, fxGlint and fxSpark to supply your own colors.","config":{"fxPalette":"custom","fxColor":"#5627ff","fxGlint":"#d0b4ff","fxSpark":"#ffcc68"},"patch":{"fxPalette":"custom","fxColor":"#5627ff","fxGlint":"#d0b4ff","fxSpark":"#ffcc68"}}],"examples":[{"name":"Ocean with gentle tint","config":{"fxPalette":"ocean","fxMix":0.2,"fxDirection":"rtl","fxSpeed":10,"fxSpread":1}},{"name":"Custom warm streak","config":{"fxPalette":"custom","fxMix":0.6,"fxColor":"#e05a24","fxGlint":"#ffe9b0","fxSpark":"#ffcc68","fxDirection":"ltr","fxSpeed":6,"fxSpread":0.8}}],"usage":"Use these flat fields in /w and /t query strings, widget JSON bodies, or MCP get_snippet/create_widget/update_widget. presets[] restores a complete appearance (heatmap, streak palette and motion); palettes[] changes streak colors only. Use .config when creating a widget and .patch when updating one: preset patches clear old heatmap and custom streak overrides, while palette patches clear only custom streak colors. fx=0 disables the effect. JSON PATCH null resets a numeric/enum field to its default or clears an optional color; omitted fields keep their saved values. Reduced-motion preferences and the viewer pause control still apply."}