chore: deploy to Cloudflare Pages and update branding

- Add Cloudflare Pages deployment for landing page (snapotter.com) and
  docs (docs.snapotter.com)
- Create deploy-landing.yml and update deploy-docs.yml workflows
- Update CI to ignore apps/landing/** paths
- Fix logo transparency (remove white background) across all apps
- Recreate social-preview.png with SnapOtter branding
- Update all docs URLs from GitHub Pages to docs.snapotter.com
- Update VitePress config: light theme default, fix llms.txt paths
- Add .vitepress/cache/ and .env.* to gitignore
This commit is contained in:
SnapOtter
2026-04-24 18:06:29 +08:00
parent fbaa603d03
commit 0309e0f680
174 changed files with 970 additions and 926 deletions
+3 -3
View File
@@ -34,7 +34,7 @@ import {
saturation,
sepia,
stripMetadata,
} from "@ashim/image-engine";
} from "@snapotter/image-engine";
const FIXTURES_DIR = path.resolve(__dirname, "../../fixtures");
@@ -1395,7 +1395,7 @@ describe("parseExif", () => {
const result = parseExif(metadata.exif!);
expect(result.image.Artist).toBe("Test Artist");
expect(result.image.Copyright).toBe("2026 Test Copyright");
expect(result.image.Software).toBe("ashim Test");
expect(result.image.Software).toBe("SnapOtter Test");
expect(result.image.ImageDescription).toBe("Test Description");
});
@@ -1489,7 +1489,7 @@ describe("editMetadata", () => {
expect(parsed.Image?.Artist).toBe("New Artist");
expect(parsed.Image?.Copyright).toBe("New Copyright");
// Original fields should be preserved via withExifMerge
expect(parsed.Image?.Software).toBe("ashim Test");
expect(parsed.Image?.Software).toBe("SnapOtter Test");
});
it("clears GPS while preserving other EXIF", async () => {