Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client
117
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: favicon changes color

+ setting logos elsewhere
+ rspack config for development source maps

+63 -11
+1
assets/icons/logo-mark.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="var(--logo-mark-fill, currentColor)" d="M6.335 4.212c2.293 1.76 4.76 5.327 5.665 7.241.906-1.914 3.372-5.482 5.665-7.241C19.319 2.942 22 1.96 22 5.086c0 .624-.35 5.244-.556 5.994-.713 2.608-3.315 3.273-5.629 2.87 4.045.704 5.074 3.035 2.852 5.366-4.22 4.426-6.066-1.111-6.54-2.53-.086-.26-.126-.382-.127-.278 0-.104-.041.018-.128.278-.473 1.419-2.318 6.956-6.539 2.53-2.222-2.331-1.193-4.662 2.852-5.366-2.314.403-4.916-.262-5.63-2.87C2.35 10.33 2 5.71 2 5.086c0-3.126 2.68-2.144 4.335-.874Z"/></svg>
+1
assets/icons/logo.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 555 123"><path fill="var(--logo-mark-fill, currentColor)" fill-rule="evenodd" d="M101.821 7.673C112.575-.367 130-6.589 130 13.21c0 3.953-2.276 33.214-3.611 37.965-4.641 16.516-21.549 20.729-36.591 18.179 26.292 4.457 32.979 19.218 18.535 33.98C80.9 131.369 68.905 96.3 65.831 87.314c-.563-1.647-.827-2.418-.831-1.763-.004-.655-.268.116-.831 1.763-3.074 8.986-15.07 44.055-42.502 16.02C7.223 88.571 13.91 73.81 40.202 69.353c-15.041 2.55-31.95-1.663-36.59-18.179C2.275 46.424 0 17.162 0 13.21 0-6.59 17.426-.368 28.18 7.673 43.084 18.817 59.114 41.413 65 53.54c5.886-12.125 21.917-34.722 36.821-45.866Z" clip-rule="evenodd"/><path fill="var(--logo-text-fill, currentColor)" fill-rule="evenodd" d="m454.459 63.823 24.128-25.056h32.638l4.825 15.104c3.561 11.357 6.664 22.598 9.422 33.72 2.527-9.6 5.744-20.84 9.536-33.603l4.826-15.221H555l-22.864 65.335c-2.413 6.673-5.4 11.475-9.192 14.168s-9.192 3.98-16.315 3.98c-2.413 0-4.481-.117-6.319-.352v-11.59h5.514c6.549 0 9.767-4.099 9.767-9.719 0-2.81-.92-6.908-2.758-12.177l-17.177-49.478-22.239 22.665L497.2 99.184h-16.545l-17.234-28.101-8.962 9.133v18.968h-14.246V15.817h14.246v48.006Zm-48.373-26.46c16.889 0 25.622 6.79 26.196 20.49h-13.673c-.344-7.377-4.595-9.954-12.523-9.954q-10.341 0-10.341 7.026c0 4.215 2.987 6.089 9.881 7.377l7.469 1.17c14.361 2.694 20.566 8.08 20.566 18.384 0 12.176-9.652 18.967-26.311 18.967-17.235 0-26.311-6.908-27.116-20.842h14.132c.804 7.494 4.481 10.304 13.213 10.304 7.813 0 11.72-2.459 11.72-7.26 0-4.332-2.758-6.44-11.605-7.962l-6.778-1.17c-12.983-2.224-19.418-8.313-19.418-18.265 0-11.358 8.847-18.266 24.588-18.266ZM270.534 76.351c0 7.61 3.677 11.474 11.145 11.474 7.008 0 13.212-5.268 13.213-15.22v-33.84h14.476v60.418h-14.016v-8.782q-6.722 10.187-18.614 10.187c-12.523 0-20.68-7.728-20.68-21.778V38.767h14.476v37.585Zm75.432-38.99c8.961 0 16.085 3.045 21.37 9.016s7.928 13.933 7.928 23.651v3.513h-44.35c1.034 10.42 6.664 15.572 15.396 15.572 6.663 0 11.144-2.927 13.557-8.664h13.903c-3.103 12.294-13.443 20.139-27.575 20.139-8.847 0-15.971-2.927-21.371-8.664s-8.157-13.348-8.157-22.95c0-9.483 2.643-17.094 8.043-22.949 5.4-5.737 12.409-8.664 21.256-8.664ZM195.628 15.817c17.809 0 26.426 9.251 26.426 21.545 0 8.196-3.677 14.168-10.915 17.914 9.306 3.396 14.247 11.24 14.247 20.022 0 14.87-9.767 23.886-28.494 23.886h-38.26V15.817h36.996Zm51.264 83.367h-14.477V15.817h14.477v83.367ZM174.143 86.07h21.944c8.732 0 13.443-4.098 13.443-11.474q0-11.592-13.443-11.592h-21.944V86.07Zm171.708-37.233c-7.928 0-13.443 4.683-14.822 14.401h29.758c-1.264-8.781-6.549-14.401-14.936-14.401Zm-171.708 1.756h20.336c7.927 0 12.178-4.215 12.178-11.24 0-6.44-4.366-10.539-12.178-10.539h-20.336v21.779Z" clip-rule="evenodd"/></svg>
+5 -1
rspack.config.ts
··· 93 93 /** @type {import('@rspack/core').Configuration} */ 94 94 module.exports = { 95 95 mode: isProduction ? 'production' : 'development', 96 - devtool: isProduction ? 'source-map' : 'eval-cheap-module-source-map', 96 + // Avoid eval-based sourcemaps in development. Firefox resolves relative 97 + // sourcemap URLs from injected devtools scripts like `installHook.js.map` 98 + // against an `<anonymous code>` URL when the bundle is eval-backed, which 99 + // produces noisy 404s in the console. 100 + devtool: isProduction ? 'source-map' : 'cheap-module-source-map', 97 101 98 102 entry: { 99 103 main: path.resolve(__dirname, 'index.web.js'),
+5 -5
src/components/icons/Logo.tsx
··· 4 4 import {createSinglePathSVG} from './TEMPLATE' 5 5 6 6 export const Mark = createSinglePathSVG({ 7 - path: 'M6.335 4.212c2.293 1.76 4.76 5.327 5.665 7.241.906-1.914 3.372-5.482 5.665-7.241C19.319 2.942 22 1.96 22 5.086c0 .624-.35 5.244-.556 5.994-.713 2.608-3.315 3.273-5.629 2.87 4.045.704 5.074 3.035 2.852 5.366-4.22 4.426-6.066-1.111-6.54-2.53-.086-.26-.126-.382-.127-.278 0-.104-.041.018-.128.278-.473 1.419-2.318 6.956-6.539 2.53-2.222-2.331-1.193-4.662 2.852-5.366-2.314.403-4.916-.262-5.63-2.87C2.35 10.33 2 5.71 2 5.086c0-3.126 2.68-2.144 4.335-.874Z', 7 + path: 'M374.473 57.7173C367.666 50.7995 357.119 49.1209 348.441 53.1659C347.173 53.7567 342.223 56.0864 334.796 59.8613C326.32 64.1696 314.568 70.3869 301.394 78.0596C275.444 93.1728 242.399 114.83 218.408 139.477C185.983 172.786 158.719 225.503 140.029 267.661C130.506 289.144 122.878 308.661 117.629 322.81C116.301 326.389 115.124 329.63 114.104 332.478C87.1783 336.42 64.534 341.641 47.5078 348.101C37.6493 351.84 28.3222 356.491 21.0573 362.538C13.8818 368.511 6.00003 378.262 6.00003 391.822C6.00014 403.222 11.8738 411.777 17.4566 417.235C23.0009 422.655 29.9593 426.793 36.871 430.062C50.8097 436.653 69.5275 441.988 90.8362 446.249C133.828 454.846 192.21 460 256.001 460C319.79 460 378.172 454.846 421.164 446.249C442.472 441.988 461.19 436.653 475.129 430.062C482.041 426.793 488.999 422.655 494.543 417.235C500.039 411.862 505.817 403.489 505.996 392.353L506 391.822L505.995 391.188C505.754 377.959 498.012 368.417 490.945 362.534C483.679 356.485 474.35 351.835 464.491 348.095C446.749 341.366 422.906 335.982 394.476 331.987C393.6 330.57 392.633 328.995 391.595 327.273C386.477 318.777 379.633 306.842 372.737 293.115C358.503 264.781 345.757 232.098 344.756 206.636C343.87 184.121 351.638 154.087 360.819 127.789C365.27 115.041 369.795 103.877 373.207 95.9072C374.909 91.9309 376.325 88.7712 377.302 86.6328C377.79 85.5645 378.167 84.7524 378.416 84.2224C378.54 83.9579 378.632 83.7635 378.69 83.643C378.718 83.5829 378.739 83.5411 378.75 83.5181C378.753 83.5108 378.756 83.5049 378.757 83.5015C382.909 74.8634 381.196 64.5488 374.473 57.7173Z', 8 8 }) 9 9 10 10 export function Full( ··· 14 14 }, 15 15 ) { 16 16 const {fill, size, style, gradient, ...rest} = useCommonSVGProps(props) 17 - const ratio = 123 / 555 17 + const ratio = 123 / 641 18 18 19 19 return ( 20 20 <Svg 21 21 fill="none" 22 22 {...rest} 23 - viewBox="0 0 555 123" 23 + viewBox="0 0 641 123" 24 24 width={size} 25 25 height={size * ratio} 26 26 style={[style]}> ··· 29 29 fill={props.markFill ?? fill} 30 30 fillRule="evenodd" 31 31 clipRule="evenodd" 32 - d="M101.821 7.673C112.575-.367 130-6.589 130 13.21c0 3.953-2.276 33.214-3.611 37.965-4.641 16.516-21.549 20.729-36.591 18.179 26.292 4.457 32.979 19.218 18.535 33.98-27.433 28.035-39.428-7.034-42.502-16.02-.563-1.647-.827-2.418-.831-1.763-.004-.655-.268.116-.831 1.763-3.074 8.986-15.07 44.055-42.502 16.02C7.223 88.571 13.91 73.81 40.202 69.353c-15.041 2.55-31.95-1.663-36.59-18.179C2.275 46.424 0 17.162 0 13.21 0-6.59 17.426-.368 28.18 7.673 43.084 18.817 59.114 41.413 65 53.54c5.886-12.125 21.917-34.722 36.821-45.866Z" 32 + d="M95.803 5.74658C94.033 3.94786 91.291 3.51141 89.0346 4.56316C88.705 4.71679 87.4179 5.32255 85.487 6.30408C83.2833 7.4243 80.2277 9.04088 76.8025 11.0359C70.0556 14.9655 61.4639 20.5968 55.226 27.0052C46.7956 35.6661 39.7068 49.3734 34.8476 60.335C32.3714 65.9207 30.3883 70.9954 29.0235 74.6746C28.6783 75.6051 28.3721 76.4477 28.1071 77.1883C21.1063 78.2133 15.2188 79.5709 10.792 81.2504C8.22882 82.2228 5.80378 83.432 3.9149 85.0043C2.04927 86.5573 7.87818e-07 89.0928 7.87818e-07 92.6186C2.98221e-05 95.5828 1.52718 97.8072 2.97872 99.2262C4.42023 100.636 6.22941 101.712 8.02646 102.561C11.6505 104.275 16.5172 105.663 22.0574 106.77C33.2353 109.006 48.4147 110.346 65.0001 110.346C81.5855 110.346 96.7647 109.006 107.943 106.77C113.483 105.663 118.349 104.275 121.974 102.561C123.771 101.712 125.58 100.636 127.021 99.2262C128.45 97.8293 129.952 95.6521 129.999 92.7568L130 92.6186L129.999 92.4538C129.936 89.014 127.923 86.5329 126.086 85.0033C124.196 83.4305 121.771 82.2213 119.208 81.249C114.595 79.4993 108.396 78.0993 101.004 77.0607C100.776 76.6921 100.524 76.2827 100.255 75.835C98.9239 73.6259 97.1446 70.5227 95.3515 66.9533C91.6507 59.5861 88.3368 51.0879 88.0765 44.4677C87.8463 38.6133 89.8658 30.8041 92.253 23.9662C93.4101 20.6516 94.5868 17.7487 95.4738 15.6765C95.9163 14.6426 96.2845 13.821 96.5385 13.265C96.6653 12.9873 96.7635 12.7761 96.8282 12.6383C96.8604 12.5695 96.8844 12.519 96.8993 12.4876C96.9067 12.472 96.9121 12.4611 96.915 12.4552C96.9159 12.4533 96.9164 12.4517 96.9169 12.4508C97.9964 10.2048 97.5508 7.52289 95.803 5.74658Z" 33 33 /> 34 34 <Path 35 35 fill={props.textFill ?? fill} 36 36 fillRule="evenodd" 37 37 clipRule="evenodd" 38 - d="m454.459 63.823 24.128-25.056h32.638l4.825 15.104c3.561 11.357 6.664 22.598 9.422 33.72 2.527-9.6 5.744-20.84 9.536-33.603l4.826-15.221H555l-22.864 65.335c-2.413 6.673-5.4 11.475-9.192 14.168-3.791 2.693-9.192 3.98-16.315 3.98-2.413 0-4.481-.117-6.319-.352v-11.59h5.514c6.549 0 9.767-4.099 9.767-9.719 0-2.81-.92-6.908-2.758-12.177l-17.177-49.478-22.239 22.665L497.2 99.184h-16.545l-17.234-28.101-8.962 9.133v18.968h-14.246V15.817h14.246v48.006Zm-48.373-26.46c16.889 0 25.622 6.79 26.196 20.49h-13.673c-.344-7.377-4.595-9.954-12.523-9.954-6.894 0-10.341 2.342-10.341 7.026 0 4.215 2.987 6.089 9.881 7.377l7.469 1.17c14.361 2.694 20.566 8.08 20.566 18.384 0 12.176-9.652 18.967-26.311 18.967-17.235 0-26.311-6.908-27.116-20.842h14.132c.804 7.494 4.481 10.304 13.213 10.304 7.813 0 11.72-2.459 11.72-7.26 0-4.332-2.758-6.44-11.605-7.962l-6.778-1.17c-12.983-2.224-19.418-8.313-19.418-18.265 0-11.358 8.847-18.266 24.588-18.266ZM270.534 76.351c0 7.61 3.677 11.474 11.145 11.474 7.008 0 13.212-5.268 13.213-15.22v-33.84h14.476v60.418h-14.016v-8.782c-4.481 6.791-10.686 10.187-18.614 10.187-12.523 0-20.68-7.728-20.68-21.778V38.767h14.476v37.585Zm75.432-38.99c8.961 0 16.085 3.045 21.37 9.016s7.928 13.933 7.928 23.651v3.513h-44.35c1.034 10.42 6.664 15.572 15.396 15.572 6.663 0 11.144-2.927 13.557-8.664h13.903c-3.103 12.294-13.443 20.139-27.575 20.139-8.847 0-15.971-2.927-21.371-8.664-5.4-5.737-8.157-13.348-8.157-22.95 0-9.483 2.643-17.094 8.043-22.949 5.4-5.737 12.409-8.664 21.256-8.664ZM195.628 15.817c17.809 0 26.426 9.251 26.426 21.545 0 8.196-3.677 14.168-10.915 17.914 9.306 3.396 14.247 11.24 14.247 20.022 0 14.87-9.767 23.886-28.494 23.886h-38.26V15.817h36.996Zm51.264 83.367h-14.477V15.817h14.477v83.367ZM174.143 86.07h21.944c8.732 0 13.443-4.098 13.443-11.474 0-7.728-4.481-11.592-13.443-11.592h-21.944V86.07Zm171.708-37.233c-7.928 0-13.443 4.683-14.822 14.401h29.758c-1.264-8.781-6.549-14.401-14.936-14.401Zm-171.708 1.756h20.336c7.927 0 12.178-4.215 12.178-11.24 0-6.44-4.366-10.539-12.178-10.539h-20.336v21.779Z" 38 + d="M169.591 99.9167L147 19.8695H162.595L177.018 78.6933H177.76L193.16 19.8695H207.348L222.787 78.7323H223.49L237.913 19.8695H253.508L230.917 99.9167H216.611L200.586 43.7508H199.961L183.897 99.9167H169.591ZM262.938 99.9167V39.8813H277.087V99.9167H262.938ZM270.051 31.3606C267.81 31.3606 265.882 30.618 264.266 29.1328C262.651 27.6214 261.843 25.8105 261.843 23.6999C261.843 21.5632 262.651 19.7522 264.266 18.267C265.882 16.7557 267.81 16 270.051 16C272.318 16 274.246 16.7557 275.836 18.267C277.451 19.7522 278.259 21.5632 278.259 23.6999C278.259 25.8105 277.451 27.6214 275.836 29.1328C274.246 30.618 272.318 31.3606 270.051 31.3606ZM321.615 39.8813V50.8252H287.102V39.8813H321.615ZM295.623 25.4978H309.772V81.8592C309.772 83.7613 310.058 85.2205 310.632 86.2368C311.231 87.2269 312.013 87.9044 312.977 88.2692C313.941 88.634 315.009 88.8164 316.182 88.8164C317.068 88.8164 317.876 88.7513 318.605 88.621C319.361 88.4907 319.934 88.3734 320.325 88.2692L322.709 99.3304C321.954 99.591 320.872 99.8776 319.465 100.19C318.084 100.503 316.39 100.685 314.384 100.738C310.84 100.842 307.648 100.308 304.808 99.135C301.968 97.9364 299.714 96.0863 298.046 93.5849C296.405 91.0834 295.597 87.9565 295.623 84.2043V25.4978ZM358.99 101.089C352.997 101.089 347.851 99.7734 343.552 97.1416C339.278 94.5099 335.982 90.8749 333.663 86.2368C331.37 81.5726 330.223 76.2048 330.223 70.1335C330.223 64.0362 331.396 58.6554 333.741 53.9912C336.086 49.3009 339.395 45.6529 343.669 43.0472C347.968 40.4155 353.049 39.0996 358.912 39.0996C363.785 39.0996 368.097 39.9985 371.849 41.7965C375.628 43.5684 378.637 46.0829 380.878 49.34C383.119 52.5711 384.396 56.3493 384.709 60.6748H371.185C370.638 57.7825 369.335 55.3722 367.276 53.444C365.244 51.4897 362.521 50.5126 359.108 50.5126C356.215 50.5126 353.675 51.2943 351.486 52.8577C349.297 54.3951 347.59 56.6099 346.366 59.5022C345.167 62.3946 344.568 65.8602 344.568 69.899C344.568 73.99 345.167 77.5077 346.366 80.4521C347.564 83.3705 349.245 85.6244 351.408 87.2139C353.597 88.7773 356.163 89.559 359.108 89.559C361.192 89.559 363.055 89.1682 364.697 88.3865C366.364 87.5787 367.759 86.4192 368.879 84.9079C369.999 83.3965 370.768 81.5595 371.185 79.3968H384.709C384.37 83.6441 383.119 87.4093 380.956 90.6925C378.794 93.9497 375.849 96.5032 372.123 98.3533C368.397 100.177 364.019 101.089 358.99 101.089ZM410.476 64.7397V99.9167H396.327V19.8695H410.163V50.0826H410.867C412.274 46.6952 414.45 44.0244 417.394 42.0701C420.364 40.0897 424.143 39.0996 428.729 39.0996C432.898 39.0996 436.533 39.9725 439.634 41.7183C442.734 43.4641 445.132 46.0177 446.825 49.3791C448.545 52.7404 449.405 56.8444 449.405 61.691V99.9167H435.256V63.8798C435.256 59.841 434.214 56.7011 432.129 54.4602C430.071 52.1932 427.178 51.0598 423.452 51.0598C420.951 51.0598 418.71 51.607 416.73 52.7014C414.775 53.7697 413.238 55.3201 412.117 57.3525C411.023 59.385 410.476 61.8474 410.476 64.7397ZM511.277 55.75L498.379 57.1571C498.014 55.8543 497.376 54.6296 496.464 53.4831C495.578 52.3366 494.379 51.4115 492.868 50.708C491.357 50.0044 489.507 49.6527 487.318 49.6527C484.374 49.6527 481.898 50.2911 479.892 51.5679C477.911 52.8447 476.934 54.4993 476.96 56.5317C476.934 58.2776 477.573 59.6977 478.876 60.7921C480.204 61.8865 482.393 62.7854 485.442 63.489L495.682 65.6778C501.363 66.9024 505.584 68.8437 508.346 71.5015C511.134 74.1593 512.541 77.6379 512.567 81.9374C512.541 85.7156 511.434 89.0509 509.245 91.9433C507.082 94.8095 504.073 97.0504 500.216 98.666C496.36 100.282 491.93 101.089 486.927 101.089C479.579 101.089 473.664 99.5519 469.182 96.4772C464.701 93.3764 462.03 89.064 461.17 83.5399L474.967 82.211C475.592 84.9209 476.921 86.9664 478.954 88.3474C480.986 89.7284 483.631 90.4189 486.888 90.4189C490.249 90.4189 492.946 89.7284 494.979 88.3474C497.037 86.9664 498.067 85.2596 498.067 83.2272C498.067 81.5074 497.402 80.0873 496.073 78.9668C494.77 77.8464 492.738 76.9865 489.976 76.3872L479.735 74.2375C473.977 73.0389 469.717 71.0195 466.954 68.1792C464.192 65.313 462.824 61.691 462.85 57.3134C462.824 53.6133 463.828 50.4083 465.86 47.6984C467.919 44.9624 470.772 42.8518 474.42 41.3665C478.094 39.8552 482.328 39.0996 487.123 39.0996C494.158 39.0996 499.695 40.5979 503.734 43.5944C507.799 46.591 510.313 50.6428 511.277 55.75ZM537.133 81.0775L537.094 63.9971H539.36L560.936 39.8813H577.469L550.93 69.43H547.998L537.133 81.0775ZM524.234 99.9167V19.8695H538.383V99.9167H524.234ZM561.913 99.9167L542.37 72.5959L551.907 62.6291L578.837 99.9167H561.913ZM596.337 122.43C594.409 122.43 592.624 122.274 590.983 121.961C589.367 121.674 588.077 121.336 587.113 120.945L590.396 109.923C592.455 110.522 594.292 110.809 595.908 110.783C597.523 110.756 598.943 110.248 600.168 109.258C601.419 108.294 602.474 106.679 603.334 104.412L604.545 101.167L582.775 39.8813H597.784L611.62 85.2205H612.245L626.121 39.8813H641.169L617.131 107.187C616.011 110.366 614.525 113.089 612.675 115.356C610.825 117.649 608.558 119.394 605.874 120.593C603.217 121.818 600.038 122.43 596.337 122.43Z" 39 39 /> 40 40 </Svg> 41 41 )
+4 -4
src/view/icons/Logo.tsx
··· 14 14 import {flatten, useTheme} from '#/alf' 15 15 16 16 const ratio = 512 / 512 17 + export const LOGO_VIEW_BOX = '0 0 512 512' 18 + export const LOGO_PATH = 19 + 'M374.473 57.7173C367.666 50.7995 357.119 49.1209 348.441 53.1659C347.173 53.7567 342.223 56.0864 334.796 59.8613C326.32 64.1696 314.568 70.3869 301.394 78.0596C275.444 93.1728 242.399 114.83 218.408 139.477C185.983 172.786 158.719 225.503 140.029 267.661C130.506 289.144 122.878 308.661 117.629 322.81C116.301 326.389 115.124 329.63 114.104 332.478C87.1783 336.42 64.534 341.641 47.5078 348.101C37.6493 351.84 28.3222 356.491 21.0573 362.538C13.8818 368.511 6.00003 378.262 6.00003 391.822C6.00014 403.222 11.8738 411.777 17.4566 417.235C23.0009 422.655 29.9593 426.793 36.871 430.062C50.8097 436.653 69.5275 441.988 90.8362 446.249C133.828 454.846 192.21 460 256.001 460C319.79 460 378.172 454.846 421.164 446.249C442.472 441.988 461.19 436.653 475.129 430.062C482.041 426.793 488.999 422.655 494.543 417.235C500.039 411.862 505.817 403.489 505.996 392.353L506 391.822L505.995 391.188C505.754 377.959 498.012 368.417 490.945 362.534C483.679 356.485 474.35 351.835 464.491 348.095C446.749 341.366 422.906 335.982 394.476 331.987C393.6 330.57 392.633 328.995 391.595 327.273C386.477 318.777 379.633 306.842 372.737 293.115C358.503 264.781 345.757 232.098 344.756 206.636C343.87 184.121 351.638 154.087 360.819 127.789C365.27 115.041 369.795 103.877 373.207 95.9072C374.909 91.9309 376.325 88.7712 377.302 86.6328C377.79 85.5645 378.167 84.7524 378.416 84.2224C378.54 83.9579 378.632 83.7635 378.69 83.643C378.718 83.5829 378.739 83.5411 378.75 83.5181C378.753 83.5108 378.756 83.5049 378.757 83.5015C382.909 74.8634 381.196 64.5488 374.473 57.7173Z' 17 20 18 21 type Props = { 19 22 fill?: PathProps['fill'] ··· 74 77 </Defs> 75 78 )} 76 79 77 - <Path 78 - fill={_fill} 79 - d="M374.473 57.7173C367.666 50.7995 357.119 49.1209 348.441 53.1659C347.173 53.7567 342.223 56.0864 334.796 59.8613C326.32 64.1696 314.568 70.3869 301.394 78.0596C275.444 93.1728 242.399 114.83 218.408 139.477C185.983 172.786 158.719 225.503 140.029 267.661C130.506 289.144 122.878 308.661 117.629 322.81C116.301 326.389 115.124 329.63 114.104 332.478C87.1783 336.42 64.534 341.641 47.5078 348.101C37.6493 351.84 28.3222 356.491 21.0573 362.538C13.8818 368.511 6.00003 378.262 6.00003 391.822C6.00014 403.222 11.8738 411.777 17.4566 417.235C23.0009 422.655 29.9593 426.793 36.871 430.062C50.8097 436.653 69.5275 441.988 90.8362 446.249C133.828 454.846 192.21 460 256.001 460C319.79 460 378.172 454.846 421.164 446.249C442.472 441.988 461.19 436.653 475.129 430.062C482.041 426.793 488.999 422.655 494.543 417.235C500.039 411.862 505.817 403.489 505.996 392.353L506 391.822L505.995 391.188C505.754 377.959 498.012 368.417 490.945 362.534C483.679 356.485 474.35 351.835 464.491 348.095C446.749 341.366 422.906 335.982 394.476 331.987C393.6 330.57 392.633 328.995 391.595 327.273C386.477 318.777 379.633 306.842 372.737 293.115C358.503 264.781 345.757 232.098 344.756 206.636C343.87 184.121 351.638 154.087 360.819 127.789C365.27 115.041 369.795 103.877 373.207 95.9072C374.909 91.9309 376.325 88.7712 377.302 86.6328C377.79 85.5645 378.167 84.7524 378.416 84.2224C378.54 83.9579 378.632 83.7635 378.69 83.643C378.718 83.5829 378.739 83.5411 378.75 83.5181C378.753 83.5108 378.756 83.5049 378.757 83.5015C382.909 74.8634 381.196 64.5488 374.473 57.7173Z" 80 - /> 80 + <Path fill={_fill} d={LOGO_PATH} /> 81 81 </Svg> 82 82 ) 83 83 })
+1 -1
src/view/icons/Logomark.tsx
··· 21 21 height={Number(size) * ratio}> 22 22 <Path 23 23 fill={fill || pal.text.color} 24 - d="M13.223 3.602C20.215 8.832 27.738 19.439 30.5 25.13c2.762-5.691 10.284-16.297 17.278-21.528C52.824-.172 61-3.093 61 6.2c0 1.856-1.068 15.59-1.694 17.82-2.178 7.752-10.112 9.73-17.17 8.532 12.337 2.092 15.475 9.021 8.697 15.95-12.872 13.159-18.5-3.302-19.943-7.52-.264-.773-.388-1.135-.39-.827-.002-.308-.126.054-.39.827-1.442 4.218-7.071 20.679-19.943 7.52-6.778-6.929-3.64-13.858 8.697-15.95-7.058 1.197-14.992-.78-17.17-8.532C1.068 21.79 0 8.056 0 6.2 0-3.093 8.176-.172 13.223 3.602Z" 24 + d="M374.473 57.7173C367.666 50.7995 357.119 49.1209 348.441 53.1659C347.173 53.7567 342.223 56.0864 334.796 59.8613C326.32 64.1696 314.568 70.3869 301.394 78.0596C275.444 93.1728 242.399 114.83 218.408 139.477C185.983 172.786 158.719 225.503 140.029 267.661C130.506 289.144 122.878 308.661 117.629 322.81C116.301 326.389 115.124 329.63 114.104 332.478C87.1783 336.42 64.534 341.641 47.5078 348.101C37.6493 351.84 28.3222 356.491 21.0573 362.538C13.8818 368.511 6.00003 378.262 6.00003 391.822C6.00014 403.222 11.8738 411.777 17.4566 417.235C23.0009 422.655 29.9593 426.793 36.871 430.062C50.8097 436.653 69.5275 441.988 90.8362 446.249C133.828 454.846 192.21 460 256.001 460C319.79 460 378.172 454.846 421.164 446.249C442.472 441.988 461.19 436.653 475.129 430.062C482.041 426.793 488.999 422.655 494.543 417.235C500.039 411.862 505.817 403.489 505.996 392.353L506 391.822L505.995 391.188C505.754 377.959 498.012 368.417 490.945 362.534C483.679 356.485 474.35 351.835 464.491 348.095C446.749 341.366 422.906 335.982 394.476 331.987C393.6 330.57 392.633 328.995 391.595 327.273C386.477 318.777 379.633 306.842 372.737 293.115C358.503 264.781 345.757 232.098 344.756 206.636C343.87 184.121 351.638 154.087 360.819 127.789C365.27 115.041 369.795 103.877 373.207 95.9072C374.909 91.9309 376.325 88.7712 377.302 86.6328C377.79 85.5645 378.167 84.7524 378.416 84.2224C378.54 83.9579 378.632 83.7635 378.69 83.643C378.718 83.5829 378.739 83.5411 378.75 83.5181C378.753 83.5108 378.756 83.5049 378.757 83.5015C382.909 74.8634 381.196 64.5488 374.473 57.7173Z" 25 25 /> 26 26 </Svg> 27 27 )
+46
src/view/shell/index.web.tsx
··· 13 13 import {Lightbox} from '#/view/com/lightbox/Lightbox' 14 14 import {ModalsContainer} from '#/view/com/modals/Modal' 15 15 import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' 16 + import {LOGO_PATH, LOGO_VIEW_BOX} from '#/view/icons/Logo' 16 17 import {Deactivated} from '#/screens/Deactivated' 17 18 import {Takendown} from '#/screens/Takendown' 18 19 import {atoms as a, select, useBreakpoints, useTheme} from '#/alf' ··· 36 37 import {Composer} from './Composer' 37 38 import {DrawerContent} from './Drawer' 38 39 40 + function createFaviconDataUrl(color: string) { 41 + const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${LOGO_VIEW_BOX}"><path fill="${color}" d="${LOGO_PATH}"/></svg>` 42 + return `data:image/svg+xml,${encodeURIComponent(svg)}` 43 + } 44 + 45 + function upsertHeadLink({ 46 + rel, 47 + href, 48 + type, 49 + sizes, 50 + }: { 51 + rel: string 52 + href: string 53 + type?: string 54 + sizes?: string 55 + }) { 56 + let link = document.head.querySelector<HTMLLinkElement>(`link[rel="${rel}"]`) 57 + 58 + if (!link) { 59 + link = document.createElement('link') 60 + link.rel = rel 61 + document.head.appendChild(link) 62 + } 63 + 64 + if (type) link.type = type 65 + if (sizes) link.sizes = sizes 66 + link.href = href 67 + } 68 + 39 69 function ShellInner() { 40 70 const t = useTheme() 41 71 const navigator = useNavigation<NavigationProp>() ··· 76 106 color: ${color} !important; 77 107 } 78 108 ` 109 + }, [t.palette.primary_500]) 110 + 111 + useLayoutEffect(() => { 112 + const faviconHref = createFaviconDataUrl(t.palette.primary_500) 113 + 114 + upsertHeadLink({ 115 + rel: 'icon', 116 + href: faviconHref, 117 + type: 'image/svg+xml', 118 + sizes: 'any', 119 + }) 120 + upsertHeadLink({ 121 + rel: 'shortcut icon', 122 + href: faviconHref, 123 + type: 'image/svg+xml', 124 + }) 79 125 }, [t.palette.primary_500]) 80 126 81 127 useEffect(() => {