# Vector Editor: changes from VectorCraft

Vector Editor is based on VectorCraft by the ArtCraft team (https://github.com/storytold/vectorcraft), commit `ed960ef1f1d70e5b0e4cf83f03f551fe86cad8e5`,
licensed under the MIT License or the Apache License 2.0; Everyapp uses it under the Apache License 2.0.
Upstream LICENSE-APACHE, LICENSE-MIT and NOTICE are included unchanged in this folder.

Everyapp changed the files below. Everything else is unmodified upstream source.

## Text and links (rebranding)

Upstream app and suite names in interface text were replaced with Everyapp names, and links to the upstream
website, community and repository were pointed to everyapp.pro or support@everyapp.pro.

| File | Changes |
|---|---|
| `(dependency a517b38) PATCHES.md` | name: 1 |
| `(dependency a517b38) docs/egui-037-migration-plan.md` | name: 50 |
| `(dependency fonts-build) README.md` | name: 3 |
| `(dependency hayro-interpret) README.md` | name: 2 |
| `(dependency i18n) README.md` | name: 1 |
| `(dependency krilla) README.craft.md` | name: 4 |
| `(dependency pdf) README.md` | name: 2 |
| `(dependency ui) README.md` | name: 17 |
| `(dependency window) README.md` | name: 1 |
| `README.md` | brand: 8, links: 31, name: 33, phrases: 2 |
| `ROADMAP.md` | name: 4 |
| `apps/vectorcraft-cli/src/main.rs` | name: 2 |
| `apps/vectorcraft-cli/src/perf.rs` | name: 1 |
| `apps/vectorcraft-web/index.html` | name: 3 |
| `apps/vectorcraft-web/src/api.rs` | name: 1 |
| `apps/vectorcraft-web/src/web.rs` | name: 2 |
| `apps/vectorcraft/build.rs` | name: 3 |
| `apps/vectorcraft/src/app.rs` | name: 2 |
| `apps/vectorcraft/src/gpu.rs` | links: 1, name: 1 |
| `apps/vectorcraft/src/mac_save_format.rs` | name: 1 |
| `apps/vectorcraft/src/main.rs` | name: 8 |
| `apps/vectorcraft/src/portal_save.rs` | name: 4 |
| `apps/vectorcraft/src/prefs.rs` | name: 1 |
| `apps/vectorcraft/src/prefs_dir.rs` | name: 3 |
| `apps/vectorcraft/src/profile.rs` | name: 12 |
| `apps/vectorcraft/src/titlebar.rs` | name: 1 |
| `assets/app-icon/README.md` | brand: 1, name: 4 |
| `assets/icons/pen-tool-add.svg` | name: 1 |
| `assets/icons/pen-tool-delete.svg` | name: 1 |
| `crates/affinity/README.md` | name: 11 |
| `crates/affinity/src/overlay.rs` | name: 1 |
| `crates/color/src/cms.rs` | name: 1 |
| `crates/color/src/palette_io.rs` | name: 2 |
| `crates/effects/src/catalog.rs` | name: 28 |
| `crates/engine/src/cmd/brushlib.rs` | name: 1 |
| `crates/engine/src/cmd/clipboard/flavours.rs` | name: 1 |
| `crates/engine/src/cmd/fileio/affinity/nodes.rs` | name: 2 |
| `crates/engine/src/cmd/fileio/commands.rs` | name: 2 |
| `crates/engine/src/cmd/fileio/formats.rs` | name: 2 |
| `crates/engine/src/cmd/fileio/legacy_ai.rs` | name: 1 |
| `crates/engine/src/cmd/fileio/load.rs` | name: 2 |
| `crates/engine/src/cmd/fileio/native.rs` | name: 2 |
| `crates/engine/src/cmd/fileio/pdf.rs` | name: 4 |
| `crates/engine/src/cmd/fileio/save.rs` | name: 6 |
| `crates/engine/src/cmd/fileio/svg.rs` | name: 1 |
| `crates/engine/src/cmd/fileio/tests_pdfedit.rs` | name: 1 |
| `crates/engine/src/cmd/fileio/tests_pdfoutput.rs` | name: 1 |
| `crates/engine/src/cmd/findfiles/walk.rs` | name: 2 |
| `crates/engine/src/cmd/fontfiles.rs` | name: 2 |
| `crates/engine/src/cmd/help.rs` | links: 8, name: 1, phrases: 4 |
| `crates/engine/src/cmd/importmatches.rs` | name: 1 |
| `crates/engine/src/cmd/links.rs` | name: 1 |
| `crates/engine/src/cmd/pdfcmds.rs` | name: 2 |
| `crates/engine/src/cmd/place.rs` | name: 2 |
| `crates/engine/src/cmd/place/document.rs` | name: 1 |
| `crates/engine/src/cmd/place/docx.rs` | name: 2 |
| `crates/engine/src/cmd/recovery.rs` | name: 4 |
| `crates/engine/src/cmd/shortcutset.rs` | name: 1 |
| `crates/engine/src/cmd/stylelib.rs` | name: 1 |
| `crates/engine/src/cmd/swatchlib.rs` | name: 2 |
| `crates/engine/src/cmd/symbollib.rs` | name: 1 |
| `crates/eps/src/import.rs` | name: 2 |
| `crates/eps/src/import/ai/blend.rs` | name: 1 |
| `crates/eps/src/import/ai/read/art.rs` | name: 7 |
| `crates/eps/src/import/ai/read/document.rs` | name: 2 |
| `crates/eps/src/import/ai/read/types.rs` | name: 1 |
| `crates/eps/src/import/graphics.rs` | name: 1 |
| `crates/eps/src/import/interp.rs` | name: 1 |
| `crates/eps/src/import/native/slots.rs` | name: 1 |
| `crates/eps/src/import/tests_generators.rs` | name: 1 |
| `crates/eps/src/legacy_ai.rs` | name: 1 |
| `crates/eps/src/lib.rs` | name: 1 |
| `crates/format/src/lib.rs` | name: 5 |
| `crates/mcp/src/backend.rs` | name: 4 |
| `crates/mcp/src/prompts.rs` | name: 5 |
| `crates/mcp/src/server.rs` | name: 2 |
| `crates/mcp/src/tools/definitions.rs` | name: 3 |
| `crates/metafile/src/emf.rs` | name: 1 |
| `crates/metafile/src/import.rs` | name: 1 |
| `crates/pathops/README.md` | name: 1 |
| `crates/pdf/src/editing.rs` | name: 1 |
| `crates/pdf/src/export/writer.rs` | name: 2 |
| `crates/pdf/src/presets.rs` | name: 2 |
| `crates/render/src/encode/tests_tiff.rs` | name: 1 |
| `crates/render/src/encode/tiff.rs` | name: 1 |
| `crates/svg/src/import/files.rs` | name: 1 |
| `crates/testkit/src/ai.rs` | name: 2 |
| `crates/testkit/src/fixtures.rs` | name: 1 |
| `crates/ui-egui/src/canvas/home.rs` | name: 1 |
| `crates/ui-egui/src/chrome.rs` | name: 5 |
| `crates/ui-egui/src/community.rs` | links: 7, name: 1, phrases: 2 |
| `crates/ui-egui/src/dialogs/about.rs` | brand: 1, name: 3 |
| `crates/ui-egui/src/dialogs/confirm.rs` | name: 1 |
| `crates/ui-egui/src/dialogs/export_for_screens.rs` | name: 2 |
| `crates/ui-egui/src/dialogs/missing_fonts.rs` | name: 1 |
| `crates/ui-egui/src/dialogs/place.rs` | name: 1 |
| `crates/ui-egui/src/dialogs/recovery.rs` | name: 1 |
| `crates/ui-egui/src/dialogs/save_for_web.rs` | name: 2 |
| `crates/ui-egui/src/dialogs/script_check.rs` | name: 1 |
| `crates/ui-egui/src/dialogs/shortcut_import.rs` | name: 3 |
| `crates/ui-egui/src/dialogs/tests_save_for_web.rs` | name: 9 |
| `crates/ui-egui/src/i18n/bg.tsv` | brand: 6, links: 4, name: 95, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/cs.tsv` | brand: 6, links: 4, name: 84, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/da.tsv` | brand: 5, links: 4, name: 89, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/de.tsv` | brand: 4, links: 4, name: 79, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/el.tsv` | brand: 6, links: 4, name: 95, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/es.tsv` | brand: 4, links: 4, name: 87, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/fi.tsv` | brand: 3, links: 4, name: 78, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/fr.tsv` | brand: 6, links: 4, name: 95, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/hu.tsv` | brand: 6, links: 4, name: 91, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/id.tsv` | brand: 6, links: 4, name: 93, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/it.tsv` | brand: 4, links: 4, name: 79, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/ja.tsv` | brand: 4, links: 4, name: 77, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/ka.tsv` | brand: 4, links: 4, name: 89, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/ko.tsv` | brand: 4, links: 4, name: 77, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/nl.tsv` | brand: 6, links: 4, name: 93, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/pl.tsv` | brand: 4, links: 4, name: 81, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/pt-br.tsv` | brand: 5, links: 4, name: 89, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/ru.tsv` | brand: 4, links: 4, name: 79, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/sv.tsv` | brand: 4, links: 4, name: 90, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/tr.tsv` | brand: 6, links: 3, name: 93, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/uk.tsv` | brand: 4, links: 4, name: 79, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/vi.tsv` | brand: 4, links: 4, name: 79, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/zh-hans.tsv` | brand: 6, links: 4, name: 94, phrases: 4, translations: 2 |
| `crates/ui-egui/src/i18n/zh-hant.tsv` | brand: 5, links: 4, name: 80, phrases: 4, translations: 2 |
| `crates/ui-egui/src/ime.rs` | name: 2 |
| `crates/ui-egui/src/io/save.rs` | name: 1 |
| `crates/ui-egui/src/menus/bar.rs` | name: 1 |
| `crates/ui-egui/src/menus/tree.rs` | links: 1, name: 5, phrases: 2 |
| `crates/ui-egui/src/menus/ui_commands.rs` | name: 4 |
| `crates/ui-egui/src/native_menu.rs` | name: 5 |
| `crates/ui-egui/src/panel_docking.rs` | name: 1 |
| `crates/ui-egui/src/prefs_dialog.rs` | name: 2 |
| `crates/ui-egui/src/shortcut_editor.rs` | name: 4 |
| `crates/ui-egui/src/updates_ui.rs` | links: 1, name: 3 |
| `docs/affinity-validation.md` | name: 4 |
| `docs/architecture.md` | name: 1 |
| `docs/control-protocol.md` | name: 10 |
| `docs/development.md` | name: 11 |
| `docs/effects-parity.md` | name: 15 |
| `docs/egui-037-migration-plan.md` | links: 1, name: 63 |
| `docs/file-format-parity.md` | name: 12 |
| `docs/gaps.md` | name: 43 |
| `docs/hardware-parity.md` | name: 4 |
| `docs/image-trace-adjustments.md` | name: 2 |
| `docs/image-trace-quality.md` | name: 1 |
| `docs/localization-parity.md` | name: 1 |
| `docs/mcp.md` | brand: 4, name: 38 |
| `docs/pdf-backend.md` | name: 4 |
| `docs/plugins.md` | name: 3 |
| `docs/print-tiling.md` | name: 8 |
| `docs/releasing.md` | brand: 2, name: 22 |
| `docs/revolve.md` | links: 1 |
| `docs/roadmap.md` | name: 10 |
| `docs/target-app-parity.md` | links: 1, name: 144 |
| `docs/three-d.md` | name: 1 |
| `docs/typography-lettering.md` | name: 9 |
| `docs/ui-parity.md` | links: 1, name: 4 |
| `docs/windows7.md` | name: 1 |

## Images

Upstream trademarks and app icons were replaced with Everyapp artwork of the same size and format.

- `assets/app-icon/hicolor/128x128/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/16x16/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/24x24/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/256x256/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/32x32/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/48x48/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/512x512/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/64x64/apps/ai.storyteller.vectorcraft.png`
- `assets/app-icon/hicolor/scalable/apps/ai.storyteller.vectorcraft.svg`
- `assets/app-icon/vectorcraft-1024.png`
- `assets/app-icon/vectorcraft-macos-512.png`
- `assets/app-icon/vectorcraft-small.svg`
- `assets/app-icon/vectorcraft.icns`
- `assets/app-icon/vectorcraft.ico`
- `assets/app-icon/vectorcraft.svg`
- `docs/brand/artcraft-logo-white.png`
- `docs/brand/artcraft-logo-white.svg`
- `docs/brand/artcraft-logo.png`
- `docs/brand/artcraft-logo.svg`
- `docs/brand/artcraft-mark-black.png`
- `docs/brand/artcraft-mark-black.svg`
- `docs/brand/artcraft-mark.png`
- `docs/brand/artcraft-mark.svg`

## Web page

`index.html` loads `everyapp-frame.js` first (progress, export rules, links) and sets a Content-Security-Policy
(`connect-src 'self' blob: data:`) so the app makes no requests to other sites.
