{ "$comment": "Cross-client CONSOLE-UI parity vectors: the background palette table, the settings section tabs, and the screen-transition motion contract. Consumed by pf-console-ui's Rust tests, the Android app's ConsoleVectorsTest, and the Apple client's ConsoleVectorsTests -- so the three hand-copies of these tables can no longer drift in silence. Sibling of deeplink-vectors.json, same rules: this file is the contract, and a value absent here is a value no client may assume.", "version": 1, "cell_ramp": [ 0.1, -0.06, 0.04, -0.12, -0.08, 0.14, -0.1, 0.06, 0.06, -0.12, 0.16, -0.04, -0.1, 0.08, -0.06, 0.12 ], "mesh_interior": [ [ 0.333, 0.333, 0.11, 0.049, 0.063, 0.4 ], [ 0.667, 0.333, 0.1, 0.055, 0.052, 2.1 ], [ 0.333, 0.667, 0.1, 0.058, 0.049, 3.6 ], [ 0.667, 0.667, 0.12, 0.047, 0.061, 5.0 ] ], "palettes": [ { "id": "violet", "name": "Violet", "light": false, "stops": [], "ground": [ 0.075, 0.06, 0.16 ], "accent": [ 0.525, 0.471, 0.961 ], "mesh": [ [ 0.075, 0.06, 0.16 ], [ 0.34, 0.27, 0.72 ], [ 0.3, 0.26, 0.74 ], [ 0.075, 0.06, 0.16 ], [ 0.42, 0.2, 0.54 ], [ 0.49, 0.39, 0.95 ], [ 0.28, 0.31, 0.84 ], [ 0.16, 0.26, 0.64 ], [ 0.45, 0.23, 0.6 ], [ 0.53, 0.31, 0.75 ], [ 0.35, 0.35, 0.91 ], [ 0.19, 0.28, 0.7 ], [ 0.075, 0.06, 0.16 ], [ 0.22, 0.18, 0.54 ], [ 0.24, 0.2, 0.58 ], [ 0.075, 0.06, 0.16 ] ], "blobs": [ [ 0.356, 0.308, 0.816 ], [ 0.468, 0.26, 0.768 ], [ 0.38, 0.348, 0.836 ], [ 0.406, 0.434, 0.92 ] ] }, { "id": "oled", "name": "Eclipse", "light": false, "stops": [ [ 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0 ], [ 0.01, 0.02, 0.1 ], [ 0.045, 0.016, 0.115 ], [ 0.12, 0.024, 0.13 ] ], "ground": [ 0.0, 0.0, 0.0 ], "accent": [ 0.525, 0.471, 0.961 ], "mesh": [ [ 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0 ], [ 0.004933333, 0.009866667, 0.049333333 ], [ 0.0052, 0.0104, 0.052 ], [ 0.0, 0.0, 0.0 ], [ 0.008933333, 0.017866667, 0.089333333 ], [ 0.006, 0.012, 0.06 ], [ 0.041733333, 0.016373333, 0.1136 ], [ 0.005733333, 0.011466667, 0.057333333 ], [ 0.0052, 0.0104, 0.052 ], [ 0.068, 0.018453333, 0.1196 ], [ 0.058, 0.017386667, 0.1176 ], [ 0.006, 0.012, 0.06 ], [ 0.044533333, 0.016053333, 0.1148 ], [ 0.052, 0.016746667, 0.1164 ], [ 0.12, 0.024, 0.13 ] ], "blobs": [ [ 0.0, 0.0, 0.0 ], [ 0.006, 0.012, 0.06 ], [ 0.031, 0.0176, 0.109 ], [ 0.09, 0.0208, 0.124 ] ] }, { "id": "nebula", "name": "Nebula", "light": false, "stops": [ [ 0.07, 0.05, 0.2 ], [ 0.26, 0.14, 0.54 ], [ 0.52, 0.2, 0.72 ], [ 0.82, 0.26, 0.62 ], [ 0.98, 0.46, 0.68 ] ], "ground": [ 0.055, 0.04, 0.135 ], "accent": [ 0.95, 0.42, 0.72 ], "mesh": [ [ 0.146, 0.086, 0.336 ], [ 0.151066667, 0.0884, 0.345066667 ], [ 0.388266667, 0.1696, 0.6288 ], [ 0.3952, 0.1712, 0.6336 ], [ 0.135866667, 0.0812, 0.317866667 ], [ 0.492266667, 0.1936, 0.7008 ], [ 0.416, 0.176, 0.648 ], [ 0.792, 0.2544, 0.629333333 ], [ 0.409066667, 0.1744, 0.6432 ], [ 0.3952, 0.1712, 0.6336 ], [ 0.869066667, 0.321333333, 0.6384 ], [ 0.847733333, 0.294666667, 0.6304 ], [ 0.416, 0.176, 0.648 ], [ 0.816, 0.2592, 0.621333333 ], [ 0.834933333, 0.278666667, 0.6256 ], [ 0.98, 0.46, 0.68 ] ], "blobs": [ [ 0.184, 0.104, 0.404 ], [ 0.416, 0.176, 0.648 ], [ 0.7, 0.236, 0.66 ], [ 0.916, 0.38, 0.656 ] ] }, { "id": "abyss", "name": "Abyss", "light": false, "stops": [ [ 0.02, 0.1, 0.17 ], [ 0.04, 0.28, 0.42 ], [ 0.07, 0.46, 0.63 ], [ 0.16, 0.38, 0.78 ], [ 0.26, 0.22, 0.58 ] ], "ground": [ 0.018, 0.07, 0.13 ], "accent": [ 0.26, 0.76, 0.92 ], "mesh": [ [ 0.028, 0.172, 0.27 ], [ 0.028533333, 0.1768, 0.276666667 ], [ 0.0548, 0.3688, 0.5236 ], [ 0.0556, 0.3736, 0.5292 ], [ 0.026933333, 0.1624, 0.256666667 ], [ 0.0668, 0.4408, 0.6076 ], [ 0.058, 0.388, 0.546 ], [ 0.1516, 0.387466667, 0.766 ], [ 0.0572, 0.3832, 0.5404 ], [ 0.0556, 0.3736, 0.5292 ], [ 0.190666667, 0.330933333, 0.718666667 ], [ 0.177333333, 0.352266667, 0.745333333 ], [ 0.058, 0.388, 0.546 ], [ 0.1588, 0.381066667, 0.778 ], [ 0.169333333, 0.365066667, 0.761333333 ], [ 0.26, 0.22, 0.58 ] ], "blobs": [ [ 0.032, 0.208, 0.32 ], [ 0.058, 0.388, 0.546 ], [ 0.124, 0.412, 0.72 ], [ 0.22, 0.284, 0.66 ] ] }, { "id": "ember", "name": "Ember", "light": false, "stops": [ [ 0.16, 0.03, 0.1 ], [ 0.45, 0.06, 0.12 ], [ 0.72, 0.18, 0.06 ], [ 0.9, 0.42, 0.08 ], [ 0.95, 0.68, 0.18 ] ], "ground": [ 0.09, 0.035, 0.04 ], "accent": [ 0.98, 0.62, 0.26 ], "mesh": [ [ 0.276, 0.042, 0.108 ], [ 0.283733333, 0.0428, 0.108533333 ], [ 0.5832, 0.1192, 0.0904 ], [ 0.5904, 0.1224, 0.0888 ], [ 0.260533333, 0.0404, 0.106933333 ], [ 0.6912, 0.1672, 0.0664 ], [ 0.612, 0.132, 0.084 ], [ 0.8832, 0.3976, 0.078133333 ], [ 0.6048, 0.1288, 0.0856 ], [ 0.5904, 0.1224, 0.0888 ], [ 0.915333333, 0.499733333, 0.110666667 ], [ 0.908666667, 0.465066667, 0.097333333 ], [ 0.612, 0.132, 0.084 ], [ 0.8976, 0.4168, 0.079733333 ], [ 0.904666667, 0.444266667, 0.089333333 ], [ 0.95, 0.68, 0.18 ] ], "blobs": [ [ 0.334, 0.048, 0.112 ], [ 0.612, 0.132, 0.084 ], [ 0.828, 0.324, 0.072 ], [ 0.93, 0.576, 0.14 ] ] }, { "id": "moss", "name": "Moss", "light": false, "stops": [ [ 0.03, 0.11, 0.09 ], [ 0.06, 0.27, 0.2 ], [ 0.09, 0.45, 0.31 ], [ 0.28, 0.61, 0.28 ], [ 0.58, 0.77, 0.31 ] ], "ground": [ 0.025, 0.085, 0.07 ], "accent": [ 0.48, 0.86, 0.46 ], "mesh": [ [ 0.042, 0.174, 0.134 ], [ 0.0428, 0.178266667, 0.136933333 ], [ 0.0748, 0.3588, 0.254266667 ], [ 0.0756, 0.3636, 0.2572 ], [ 0.0404, 0.165466667, 0.128133333 ], [ 0.0868, 0.4308, 0.298266667 ], [ 0.078, 0.378, 0.266 ], [ 0.262266667, 0.595066667, 0.2828 ], [ 0.0772, 0.3732, 0.263066667 ], [ 0.0756, 0.3636, 0.2572 ], [ 0.372, 0.659066667, 0.2892 ], [ 0.332, 0.637733333, 0.2852 ], [ 0.078, 0.378, 0.266 ], [ 0.277466667, 0.607866667, 0.2804 ], [ 0.308, 0.624933333, 0.2828 ], [ 0.58, 0.77, 0.31 ] ], "blobs": [ [ 0.048, 0.206, 0.156 ], [ 0.078, 0.378, 0.266 ], [ 0.204, 0.546, 0.292 ], [ 0.46, 0.706, 0.298 ] ] }, { "id": "graphite", "name": "Graphite", "light": false, "stops": [ [ 0.06, 0.07, 0.11 ], [ 0.15, 0.18, 0.25 ], [ 0.3, 0.31, 0.35 ], [ 0.45, 0.42, 0.38 ], [ 0.6, 0.56, 0.49 ] ], "ground": [ 0.055, 0.055, 0.07 ], "accent": [ 0.78, 0.8, 0.86 ], "mesh": [ [ 0.096, 0.114, 0.166 ], [ 0.0984, 0.116933333, 0.169733333 ], [ 0.224, 0.244133333, 0.299333333 ], [ 0.228, 0.2476, 0.302 ], [ 0.0912, 0.108133333, 0.158533333 ], [ 0.284, 0.296133333, 0.339333333 ], [ 0.24, 0.258, 0.31 ], [ 0.436, 0.409733333, 0.3772 ], [ 0.236, 0.254533333, 0.307333333 ], [ 0.228, 0.2476, 0.302 ], [ 0.496, 0.462933333, 0.413733333 ], [ 0.476, 0.444266667, 0.399066667 ], [ 0.24, 0.258, 0.31 ], [ 0.448, 0.418533333, 0.3796 ], [ 0.464, 0.433066667, 0.390266667 ], [ 0.6, 0.56, 0.49 ] ], "blobs": [ [ 0.114, 0.136, 0.194 ], [ 0.24, 0.258, 0.31 ], [ 0.39, 0.376, 0.368 ], [ 0.54, 0.504, 0.446 ] ] }, { "id": "holo", "name": "Holo", "light": true, "stops": [ [ 0.99, 0.72, 0.9 ], [ 0.8, 0.6, 0.98 ], [ 0.58, 0.62, 0.99 ], [ 0.55, 0.86, 0.98 ], [ 0.94, 0.98, 1.0 ] ], "ground": [ 0.96, 0.92, 0.99 ], "accent": [ 0.42, 0.28, 0.86 ], "mesh": [ [ 0.914, 0.672, 0.932 ], [ 0.908933333, 0.6688, 0.934133333 ], [ 0.691466667, 0.609866667, 0.984933333 ], [ 0.6856, 0.6104, 0.9852 ], [ 0.924133333, 0.6784, 0.927733333 ], [ 0.603466667, 0.617866667, 0.988933333 ], [ 0.668, 0.612, 0.986 ], [ 0.5528, 0.8376, 0.980933333 ], [ 0.673866667, 0.611466667, 0.985733333 ], [ 0.6856, 0.6104, 0.9852 ], [ 0.6696, 0.8968, 0.986133333 ], [ 0.6176, 0.8808, 0.983466667 ], [ 0.668, 0.612, 0.986 ], [ 0.5504, 0.8568, 0.980133333 ], [ 0.5864, 0.8712, 0.981866667 ], [ 0.94, 0.98, 1.0 ] ], "blobs": [ [ 0.876, 0.648, 0.948 ], [ 0.668, 0.612, 0.986 ], [ 0.562, 0.764, 0.984 ], [ 0.784, 0.932, 0.992 ] ] }, { "id": "sunset", "name": "Sunset", "light": true, "stops": [ [ 0.55, 0.45, 0.92 ], [ 0.86, 0.31, 0.66 ], [ 0.97, 0.26, 0.34 ], [ 0.99, 0.51, 0.18 ], [ 1.0, 0.8, 0.22 ] ], "ground": [ 0.98, 0.74, 0.34 ], "accent": [ 0.64, 0.13, 0.44 ], "mesh": [ [ 0.674, 0.394, 0.816 ], [ 0.682266667, 0.390266667, 0.809066667 ], [ 0.914266667, 0.285333333, 0.502133333 ], [ 0.9172, 0.284, 0.4936 ], [ 0.657466667, 0.401466667, 0.829866667 ], [ 0.958266667, 0.265333333, 0.374133333 ], [ 0.926, 0.28, 0.468 ], [ 0.988133333, 0.486666667, 0.194933333 ], [ 0.923066667, 0.281333333, 0.476533333 ], [ 0.9172, 0.284, 0.4936 ], [ 0.993066667, 0.598933333, 0.192266667 ], [ 0.991733333, 0.560266667, 0.186933333 ], [ 0.926, 0.28, 0.468 ], [ 0.989733333, 0.506666667, 0.182133333 ], [ 0.990933333, 0.537066667, 0.183733333 ], [ 1.0, 0.8, 0.22 ] ], "blobs": [ [ 0.736, 0.366, 0.764 ], [ 0.926, 0.28, 0.468 ], [ 0.982, 0.41, 0.244 ], [ 0.996, 0.684, 0.204 ] ] }, { "id": "bloom", "name": "Bloom", "light": true, "stops": [ [ 1.0, 0.86, 0.72 ], [ 0.99, 0.73, 0.79 ], [ 0.95, 0.65, 0.89 ], [ 0.82, 0.68, 0.96 ], [ 0.73, 0.79, 0.99 ] ], "ground": [ 0.99, 0.9, 0.89 ], "accent": [ 0.72, 0.24, 0.55 ], "mesh": [ [ 0.996, 0.808, 0.748 ], [ 0.995733333, 0.804533333, 0.749866667 ], [ 0.970266667, 0.690533333, 0.839333333 ], [ 0.9692, 0.6884, 0.842 ], [ 0.996533333, 0.814933333, 0.744266667 ], [ 0.954266667, 0.658533333, 0.879333333 ], [ 0.966, 0.682, 0.85 ], [ 0.832133333, 0.6772, 0.953466667 ], [ 0.967066667, 0.684133333, 0.847333333 ], [ 0.9692, 0.6884, 0.842 ], [ 0.7924, 0.713733333, 0.9692 ], [ 0.8044, 0.699066667, 0.9652 ], [ 0.966, 0.682, 0.85 ], [ 0.821733333, 0.6796, 0.959066667 ], [ 0.8116, 0.690266667, 0.9628 ], [ 0.73, 0.79, 0.99 ] ], "blobs": [ [ 0.994, 0.782, 0.762 ], [ 0.966, 0.682, 0.85 ], [ 0.872, 0.668, 0.932 ], [ 0.766, 0.746, 0.978 ] ] }, { "id": "dawn", "name": "Dawn", "light": true, "stops": [ [ 1.0, 0.92, 0.7 ], [ 1.0, 0.8, 0.62 ], [ 0.99, 0.66, 0.62 ], [ 0.9, 0.62, 0.78 ], [ 0.77, 0.69, 0.95 ] ], "ground": [ 1.0, 0.93, 0.82 ], "accent": [ 0.82, 0.33, 0.28 ], "mesh": [ [ 1.0, 0.872, 0.668 ], [ 1.0, 0.8688, 0.665866667 ], [ 0.995066667, 0.730933333, 0.62 ], [ 0.9948, 0.7272, 0.62 ], [ 1.0, 0.8784, 0.672266667 ], [ 0.991066667, 0.674933333, 0.62 ], [ 0.994, 0.716, 0.62 ], [ 0.9084, 0.623733333, 0.765066667 ], [ 0.994266667, 0.719733333, 0.62 ], [ 0.9948, 0.7272, 0.62 ], [ 0.860133333, 0.641466667, 0.832133333 ], [ 0.877466667, 0.632133333, 0.809466667 ], [ 0.994, 0.716, 0.62 ], [ 0.9012, 0.620533333, 0.777866667 ], [ 0.887866667, 0.626533333, 0.795866667 ], [ 0.77, 0.69, 0.95 ] ], "blobs": [ [ 1.0, 0.848, 0.652 ], [ 0.994, 0.716, 0.62 ], [ 0.936, 0.636, 0.716 ], [ 0.822, 0.662, 0.882 ] ] }, { "id": "mint", "name": "Mint", "light": true, "stops": [ [ 0.82, 0.98, 0.9 ], [ 0.62, 0.94, 0.88 ], [ 0.55, 0.88, 0.95 ], [ 0.63, 0.82, 0.99 ], [ 0.82, 0.87, 1.0 ] ], "ground": [ 0.9, 0.98, 0.96 ], "accent": [ 0.04, 0.42, 0.4 ], "mesh": [ [ 0.74, 0.964, 0.892 ], [ 0.734666667, 0.962933333, 0.891466667 ], [ 0.585466667, 0.9104, 0.914533333 ], [ 0.5836, 0.9088, 0.9164 ], [ 0.750666667, 0.966133333, 0.893066667 ], [ 0.557466667, 0.8864, 0.942533333 ], [ 0.578, 0.904, 0.922 ], [ 0.622533333, 0.8256, 0.986266667 ], [ 0.579866667, 0.9056, 0.920133333 ], [ 0.5836, 0.9088, 0.9164 ], [ 0.688266667, 0.835333333, 0.993066667 ], [ 0.662933333, 0.828666667, 0.991733333 ], [ 0.578, 0.904, 0.922 ], [ 0.628933333, 0.8208, 0.989466667 ], [ 0.647733333, 0.824666667, 0.990933333 ], [ 0.82, 0.87, 1.0 ] ], "blobs": [ [ 0.7, 0.956, 0.888 ], [ 0.578, 0.904, 0.922 ], [ 0.598, 0.844, 0.974 ], [ 0.744, 0.85, 0.996 ] ] }, { "id": "opal", "name": "Opal", "light": true, "stops": [ [ 0.98, 0.92, 0.96 ], [ 0.87, 0.93, 0.99 ], [ 0.91, 0.99, 0.95 ], [ 0.99, 0.96, 0.88 ], [ 0.94, 0.9, 0.99 ] ], "ground": [ 0.97, 0.96, 0.99 ], "accent": [ 0.36, 0.32, 0.44 ], "mesh": [ [ 0.936, 0.924, 0.972 ], [ 0.933066667, 0.924266667, 0.9728 ], [ 0.889733333, 0.9596, 0.970266667 ], [ 0.8908, 0.9612, 0.9692 ], [ 0.941866667, 0.923466667, 0.9704 ], [ 0.905733333, 0.9836, 0.954266667 ], [ 0.894, 0.966, 0.966 ], [ 0.982533333, 0.9628, 0.886533333 ], [ 0.892933333, 0.9644, 0.967066667 ], [ 0.8908, 0.9612, 0.9692 ], [ 0.974666667, 0.9416, 0.913733333 ], [ 0.981333333, 0.9496, 0.899066667 ], [ 0.894, 0.966, 0.966 ], [ 0.988933333, 0.9604, 0.880933333 ], [ 0.985333333, 0.9544, 0.890266667 ], [ 0.94, 0.9, 0.99 ] ], "blobs": [ [ 0.914, 0.926, 0.978 ], [ 0.894, 0.966, 0.966 ], [ 0.958, 0.972, 0.908 ], [ 0.96, 0.924, 0.946 ] ] } ], "tabs": [ { "name": "Stream" }, { "name": "Video" }, { "name": "Audio" }, { "name": "Controller" }, { "name": "Input", "desktop_only": true, "$why": "Touch mode, mouse, invert-scroll and shortcuts are desktop-host settings with nothing to set on a phone or a TV, so the mobile clients ship six tabs and the desktop console seven. Modelled rather than omitted: a flat six-name list would red the desktop on day one, and a seven-name list would red both mobile clients." }, { "name": "Interface" }, { "name": "Profiles" } ], "motion": { "$why": "The console screen transition, from pf-console-ui's shell: TRANSITION_S and the paint geometry in shell/render.rs. Every client re-implements this by hand in its own animation system, which is why it is pinned here.", "transition_s": 0.26, "push_slide_dp": 36.0, "enter_scale": 0.985, "exit_scale": 0.96, "reveal_alpha": 0.4, "ease_out_cubic": { "$why": "Sampled, not given as Bezier control points: the desktop's curve is the analytic 1-(1-t)^3, Android reproduces it exactly, and SwiftUI can only approximate it with a timing curve. A tolerance on samples is the only form all three can meet. Two different beziers are published under the name 'easeOutCubic' and neither is this curve -- that is the drift this pins.", "tolerance": 0.02, "samples": [ { "t": 0.0, "p": 0.0 }, { "t": 0.125, "p": 0.330078125 }, { "t": 0.25, "p": 0.578125 }, { "t": 0.375, "p": 0.755859375 }, { "t": 0.5, "p": 0.875 }, { "t": 0.625, "p": 0.947265625 }, { "t": 0.75, "p": 0.984375 }, { "t": 0.875, "p": 0.998046875 }, { "t": 1.0, "p": 1.0 } ] } } }