├── static
├── icons
│ ├── 32.png
│ ├── 48.png
│ ├── 64.png
│ ├── 128.png
│ └── 256.png
├── popup.html
├── options.html
└── styles
│ ├── popup.css
│ ├── options.css
│ └── shared.css
├── .gitattributes
├── .gitignore
├── .editorconfig
├── source
├── utilities
│ ├── test_dom.ts
│ ├── parse_version.ts
│ ├── regex_utils.ts
│ ├── __tests__
│ │ ├── parse_version.ts
│ │ ├── regex_utils.test.ts
│ │ ├── favicon_autoselector.test.ts
│ │ └── favicon_selector.test.ts
│ ├── permissions.ts
│ ├── i18n.ts
│ ├── favicon_selector.ts
│ ├── image_helpers.ts
│ ├── append_favicon_link.ts
│ └── favicon_autoselector.ts
├── components
│ ├── only.tsx
│ ├── emoji_selector
│ │ ├── types.ts
│ │ ├── components
│ │ │ ├── emoji_button.tsx
│ │ │ ├── custom_delete.tsx
│ │ │ ├── groups.tsx
│ │ │ ├── custom_upload.tsx
│ │ │ └── popup.tsx
│ │ └── mod.tsx
│ ├── switch.tsx
│ ├── __tests__
│ │ └── only.test.tsx
│ ├── header.tsx
│ ├── checkbox.tsx
│ ├── list.tsx
│ └── list_input.tsx
├── models
│ ├── __tests__
│ │ ├── __snapshots__
│ │ │ └── emoji.test.ts.snap
│ │ ├── storage_legacy.test.ts
│ │ └── emoji.test.ts
│ ├── favicon.ts
│ ├── settings.ts
│ ├── storage_legacy.ts
│ ├── __fixtures__
│ │ └── settings_fixtures.ts
│ └── emoji.ts
├── hooks
│ ├── use_route.ts
│ ├── use_status.ts
│ ├── use_focus_observer.ts
│ ├── use_active_tab.ts
│ ├── use_list_state.ts
│ ├── use_selected_favicon.ts
│ └── use_browser_storage.ts
├── manifest.json
├── pages
│ ├── favicons_page.tsx
│ ├── about_page.tsx
│ └── settings_page.tsx
├── options.tsx
├── background.ts
├── content_script.ts
├── popup.tsx
└── config
│ └── legacy_autoselect_set.ts
├── .github
├── PULL_REQUEST_TEMPLATE.md
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── workflows
│ └── deno.yml
├── import_map.json
├── LICENSE
├── deno.json
├── README.md
└── deno.lock
/static/icons/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpevs/favioli/HEAD/static/icons/32.png
--------------------------------------------------------------------------------
/static/icons/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpevs/favioli/HEAD/static/icons/48.png
--------------------------------------------------------------------------------
/static/icons/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpevs/favioli/HEAD/static/icons/64.png
--------------------------------------------------------------------------------
/static/icons/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpevs/favioli/HEAD/static/icons/128.png
--------------------------------------------------------------------------------
/static/icons/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpevs/favioli/HEAD/static/icons/256.png
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize eol
2 | *.css text
3 | *.txt text
4 | *.md text
5 | *.html text
6 | *.js text
7 | *.json text
8 | *.ts text
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # build files
4 | dist
5 |
6 | # misc
7 | ._*
8 | .DS_Store
9 | .env
10 | .Trashes
11 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | indent_size = 2
7 | indent_style = space
8 | insert_final_newline = true
9 | tab_width = 2
10 | trim_trailing_whitespace = true
11 |
12 | [Makefile]
13 | indent_style = tab
14 |
--------------------------------------------------------------------------------
/source/utilities/test_dom.ts:
--------------------------------------------------------------------------------
1 | import { DOMParser } from 'deno-dom';
2 |
3 | globalThis.document = new DOMParser()
4 | .parseFromString(
5 | ``,
6 | 'text/html',
7 | // deno-lint-ignore no-explicit-any
8 | ) as any;
9 |
--------------------------------------------------------------------------------
/source/components/only.tsx:
--------------------------------------------------------------------------------
1 | /* @jsx h */
2 | import { Fragment, h, VNode } from 'preact';
3 |
4 | export interface OnlyProps {
5 | if: boolean;
6 | children: VNode | string | (VNode | string)[];
7 | }
8 |
9 | export default function Only({ if: predicate, children }: OnlyProps) {
10 | return (
11 |
Version {cache.version}
19 |23 | Favioli is a tool for modifying website favicons (icons that represent 24 | websites in tabs, your browsing history, and your bookmarks). 25 |
26 | 27 |29 | Favioli does not track you, does not transmit any data outside of your 30 | computer, and does not modify anything on websites outside of favicons. 31 |
32 |33 | The only links to external sites/etc are informational links on this 34 | about page. 35 |
36 |37 | I am actively trying to respect your privacy. The source code is freely 38 | available for inspection and/or to build from source: 39 |
40 | 41 | https://github.com/ivebencrazy/favioli 42 | 43 | 44 |46 | To replace favicons, Favioli runs code on websites that you are 47 | browsing. If you are very nervous about that, some browsers now allow 48 | you to restrict extensions to only run on specific websites. As features 49 | are added, I will try to keep permissions as granular as possible. 50 |
51 | 52 |54 | Please report any bugs you find on{' '} 55 | 56 | Github Issues 57 | ! Since Favioli does not collect any automated feedback, any kind of 58 | feedback is very useful! 59 |
60 |61 | In the future, I will add a form to{' '} 62 | favioli.com/contact{' '} 63 | so that sending feedback will be easier. 64 |
65 | 66 |Thanks for using Favioli!
67 |68 | – Ben 69 |
70 | 71 |{emojiGroup.name}
47 | {emojiGroup.emojis.map((emoji) => ( 48 |