From e799c3a3635d96b352edf47de6678484fa8cb8b8 Mon Sep 17 00:00:00 2001
From: hyochan
Date: Thu, 18 Jun 2026 15:15:07 +0900
Subject: [PATCH 1/2] docs: update site URL
---
README.md | 6 +++---
libraries/expo-ondevice-ai/README.md | 2 +-
.../example/app/(tabs)/settings.tsx | 2 +-
libraries/flutter_ondevice_ai/README.md | 4 ++--
.../example/lib/screens/settings_screen.dart | 2 +-
.../example/src/screens/SettingsScreen.tsx | 2 +-
llms-full.txt | 10 +++++-----
llms.txt | 6 +++---
packages/android/locanara/build.gradle.kts | 2 +-
packages/site/index.html | 11 ++++++----
packages/site/public/llms-full.txt | 14 ++++++-------
packages/site/public/llms.txt | 6 +++---
packages/site/public/robots.txt | 4 ++--
packages/site/public/sitemap.xml | 4 ++--
packages/site/src/components/SEO.tsx | 2 +-
packages/site/src/pages/PrivacyPolicy.tsx | 4 ++--
packages/site/src/pages/TermsOfService.tsx | 4 ++--
packages/site/src/seo.test.ts | 20 ++++++++++---------
scripts/agent/compile-context.ts | 16 +++++++--------
19 files changed, 63 insertions(+), 58 deletions(-)
diff --git a/README.md b/README.md
index 9115ccd..f73975d 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Locanara is an on-device AI framework inspired by LangChain, purpose-built for m
No cloud. No data leaves. Privacy by design.
-**Documentation**: [locanara.com](https://locanara.com) | **Blog**: [LangChain for Mobile, Entirely On-Device — Meet Locanara](https://medium.com/dooboolab/langchain-for-mobile-entirely-on-device-meet-locanara-33112ade3b0e)
+**Documentation**: [locanara.hyo.dev](https://locanara.hyo.dev) | **Blog**: [LangChain for Mobile, Entirely On-Device — Meet Locanara](https://medium.com/dooboolab/langchain-for-mobile-entirely-on-device-meet-locanara-33112ade3b0e)
---
@@ -282,7 +282,7 @@ suspend fun pipelineExample(context: Context) {
| Rewrite | `Rewrite(style:)` | `.rewrite(style:)` | `RewriteResult` |
| Extract | `Extract(entityTypes:)` | `.extract(entityTypes:)` | `ExtractResult` |
-> **Full tutorial**: [locanara.com/docs/tutorials/pipeline](https://locanara.com/docs/tutorials/pipeline)
+> **Full tutorial**: [locanara.hyo.dev/docs/tutorials/pipeline](https://locanara.hyo.dev/docs/tutorials/pipeline)
---
@@ -297,7 +297,7 @@ suspend fun pipelineExample(context: Context) {
[](https://central.sonatype.com/artifact/com.locanara/locanara)
[](https://github.com/hyodotdev/locanara/actions/workflows/ci-android.yml)
-- [**site**](packages/site) — Website + Documentation → [locanara.com](https://locanara.com)
+- [**site**](packages/site) — Website + Documentation → [locanara.hyo.dev](https://locanara.hyo.dev)
## Libraries
diff --git a/libraries/expo-ondevice-ai/README.md b/libraries/expo-ondevice-ai/README.md
index 09a69ef..247e8e2 100644
--- a/libraries/expo-ondevice-ai/README.md
+++ b/libraries/expo-ondevice-ai/README.md
@@ -101,7 +101,7 @@ const translated = await translate('Hello', {
## Documentation
-Full API documentation and guides are available at **[locanara.com/docs/libraries/expo](https://locanara.com/docs/libraries/expo)**.
+Full API documentation and guides are available at **[locanara.hyo.dev/docs/libraries/expo](https://locanara.hyo.dev/docs/libraries/expo)**.
## License
diff --git a/libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx b/libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx
index 5d27ccb..6baa84b 100644
--- a/libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx
+++ b/libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx
@@ -67,7 +67,7 @@ export default function SettingsScreen() {
};
const handleOpenDocs = () => {
- Linking.openURL('https://locanara.com/docs');
+ Linking.openURL('https://locanara.hyo.dev/docs');
};
const handleOpenGitHub = () => {
diff --git a/libraries/flutter_ondevice_ai/README.md b/libraries/flutter_ondevice_ai/README.md
index 5077417..8763e47 100644
--- a/libraries/flutter_ondevice_ai/README.md
+++ b/libraries/flutter_ondevice_ai/README.md
@@ -1,6 +1,6 @@
# flutter_ondevice_ai
-Flutter plugin for on-device AI using [Locanara SDK](https://locanara.com).
+Flutter plugin for on-device AI using [Locanara SDK](https://locanara.hyo.dev).
Supports iOS (Apple Intelligence / llama.cpp), Android (Gemini Nano), and Web (Chrome Built-in AI) from a single Dart API.
@@ -27,7 +27,7 @@ if (capability.isSupported) {
## Documentation
-Full documentation at [locanara.com/docs/libraries/flutter](https://locanara.com/docs/libraries/flutter)
+Full documentation at [locanara.hyo.dev/docs/libraries/flutter](https://locanara.hyo.dev/docs/libraries/flutter)
## License
diff --git a/libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart b/libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart
index 88198af..fcd46cf 100644
--- a/libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart
+++ b/libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart
@@ -77,7 +77,7 @@ class SettingsScreen extends StatelessWidget {
icon: Icons.menu_book,
label: 'Documentation',
trailing: Icons.open_in_new,
- onTap: () => _launchUrl('https://locanara.com/docs'),
+ onTap: () => _launchUrl('https://locanara.hyo.dev/docs'),
),
const _Separator(),
_ActionRow(
diff --git a/libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx b/libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx
index 60900c5..7839950 100644
--- a/libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx
+++ b/libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx
@@ -67,7 +67,7 @@ export default function SettingsScreen() {
};
const handleOpenDocs = () => {
- Linking.openURL('https://locanara.com/docs');
+ Linking.openURL('https://locanara.hyo.dev/docs');
};
const handleOpenGitHub = () => {
diff --git a/llms-full.txt b/llms-full.txt
index 5cd1773..5bc12f5 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -1,8 +1,8 @@
# Locanara Community SDK Complete Reference
> Locanara: Unified on-device AI SDK for iOS/macOS and Android
-> Documentation: https://locanara.com
-> Quick Reference: https://locanara.com/llms.txt
+> Documentation: https://locanara.hyo.dev
+> Quick Reference: https://locanara.hyo.dev/llms.txt
> Generated: 2026-02-16T13:55:08.262Z
## Table of Contents
@@ -1917,7 +1917,7 @@ try await llmSession?.prewarm()
## Links & Resources
-- Documentation: https://locanara.com
+- Documentation: https://locanara.hyo.dev
- GitHub: https://github.com/hyodotdev/locanara
-- Types Reference: https://locanara.com/docs/types
-- APIs Reference: https://locanara.com/docs/apis
+- Types Reference: https://locanara.hyo.dev/docs/types
+- APIs Reference: https://locanara.hyo.dev/docs/apis
diff --git a/llms.txt b/llms.txt
index cb7cd0f..dc7419d 100644
--- a/llms.txt
+++ b/llms.txt
@@ -1,8 +1,8 @@
# Locanara Community SDK Quick Reference
> Locanara: On-device AI SDK for iOS/macOS and Android
-> Documentation: https://locanara.com
-> Full Reference: https://locanara.com/llms-full.txt
+> Documentation: https://locanara.hyo.dev
+> Full Reference: https://locanara.hyo.dev/llms-full.txt
> Generated: 2026-02-16T13:55:08.262Z
## Overview
@@ -105,5 +105,5 @@ enum LocanaraError: Error {
## Links
-- Docs: https://locanara.com
+- Docs: https://locanara.hyo.dev
- GitHub: https://github.com/hyodotdev/locanara
diff --git a/packages/android/locanara/build.gradle.kts b/packages/android/locanara/build.gradle.kts
index c786d8d..33534f6 100644
--- a/packages/android/locanara/build.gradle.kts
+++ b/packages/android/locanara/build.gradle.kts
@@ -132,7 +132,7 @@ mavenPublishing {
pom {
name.set("Locanara Android SDK")
description.set("On-device AI SDK for Android using Gemini Nano")
- url.set("https://locanara.com")
+ url.set("https://locanara.hyo.dev")
licenses {
license {
diff --git a/packages/site/index.html b/packages/site/index.html
index 12716a7..f617e3e 100644
--- a/packages/site/index.html
+++ b/packages/site/index.html
@@ -37,7 +37,7 @@
-
+
-
+
@@ -55,7 +55,7 @@
-
+
-
+
diff --git a/packages/site/public/llms-full.txt b/packages/site/public/llms-full.txt
index 33476ea..f0fba55 100644
--- a/packages/site/public/llms-full.txt
+++ b/packages/site/public/llms-full.txt
@@ -9,9 +9,9 @@ Locanara is a privacy-first, on-device AI SDK that enables mobile developers to
## Project Information
- **Name**: Locanara
-- **Website**: https://locanara.com
-- **Documentation**: https://locanara.com/docs
-- **Community Forum**: https://locanara.com/community
+- **Website**: https://locanara.hyo.dev
+- **Documentation**: https://locanara.hyo.dev/docs
+- **Community Forum**: https://locanara.hyo.dev/community
- **GitHub Repository**: https://github.com/hyodotdev/locanara
- **License**: AGPL-3.0 (free and open-source)
@@ -431,16 +431,16 @@ A: On iOS, Locanara supports both Apple Intelligence (Foundation Models) and dow
## Support & Community
-- **Documentation**: https://locanara.com/docs
-- **Community Forum**: https://locanara.com/community
+- **Documentation**: https://locanara.hyo.dev/docs
+- **Community Forum**: https://locanara.hyo.dev/community
- **GitHub Issues**: https://github.com/hyodotdev/locanara/issues
- **Email**: support@locanara.com
## Legal
- License: AGPL-3.0 (https://github.com/hyodotdev/locanara/blob/main/LICENSE)
-- Privacy Policy: https://locanara.com/privacy-policy
-- Terms of Service: https://locanara.com/terms-of-service
+- Privacy Policy: https://locanara.hyo.dev/privacy-policy
+- Terms of Service: https://locanara.hyo.dev/terms-of-service
---
diff --git a/packages/site/public/llms.txt b/packages/site/public/llms.txt
index 9696336..af13490 100644
--- a/packages/site/public/llms.txt
+++ b/packages/site/public/llms.txt
@@ -18,7 +18,7 @@ Free and open-source. No API keys, no usage limits, no per-request fees.
## Links
-- Docs: https://locanara.com/docs
-- Full info: https://locanara.com/llms-full.txt
-- Community: https://locanara.com/community
+- Docs: https://locanara.hyo.dev/docs
+- Full info: https://locanara.hyo.dev/llms-full.txt
+- Community: https://locanara.hyo.dev/community
- GitHub: https://github.com/hyodotdev/locanara
diff --git a/packages/site/public/robots.txt b/packages/site/public/robots.txt
index dc51da9..3a24684 100644
--- a/packages/site/public/robots.txt
+++ b/packages/site/public/robots.txt
@@ -23,7 +23,7 @@ Allow: /
User-agent: Applebot-Extended
Allow: /
-Sitemap: https://locanara.com/sitemap.xml
+Sitemap: https://locanara.hyo.dev/sitemap.xml
# AI/LLM information
-# See https://locanara.com/llms.txt for structured information about this site
+# See https://locanara.hyo.dev/llms.txt for structured information about this site
diff --git a/packages/site/public/sitemap.xml b/packages/site/public/sitemap.xml
index 59697fb..94c2329 100644
--- a/packages/site/public/sitemap.xml
+++ b/packages/site/public/sitemap.xml
@@ -1,13 +1,13 @@
- https://locanara.com/
+ https://locanara.hyo.dev/
weekly
1.0
- https://locanara.com/community
+ https://locanara.hyo.dev/community
daily
0.8
diff --git a/packages/site/src/components/SEO.tsx b/packages/site/src/components/SEO.tsx
index c61a2e4..02c0b92 100644
--- a/packages/site/src/components/SEO.tsx
+++ b/packages/site/src/components/SEO.tsx
@@ -19,7 +19,7 @@ const DEFAULT_TITLE =
"Locanara - Free Open-Source On-Device AI SDK for iOS and Android";
const DEFAULT_DESCRIPTION =
"Privacy-first, unified on-device AI SDK for mobile developers. Build AI-powered apps without compromising user privacy.";
-const SITE_URL = "https://locanara.com";
+const SITE_URL = "https://locanara.hyo.dev";
const DEFAULT_IMAGE = `${SITE_URL}/og-image.png`;
const organizationSchema = {
diff --git a/packages/site/src/pages/PrivacyPolicy.tsx b/packages/site/src/pages/PrivacyPolicy.tsx
index c0e941e..b03458e 100644
--- a/packages/site/src/pages/PrivacyPolicy.tsx
+++ b/packages/site/src/pages/PrivacyPolicy.tsx
@@ -218,10 +218,10 @@ export function PrivacyPolicy() {
Website:{" "}
- https://locanara.com
+ https://locanara.hyo.dev
diff --git a/packages/site/src/pages/TermsOfService.tsx b/packages/site/src/pages/TermsOfService.tsx
index 09d94dc..7a33110 100644
--- a/packages/site/src/pages/TermsOfService.tsx
+++ b/packages/site/src/pages/TermsOfService.tsx
@@ -188,10 +188,10 @@ export function TermsOfService() {
Website:{" "}
- https://locanara.com
+ https://locanara.hyo.dev
diff --git a/packages/site/src/seo.test.ts b/packages/site/src/seo.test.ts
index b43497b..3edfb27 100644
--- a/packages/site/src/seo.test.ts
+++ b/packages/site/src/seo.test.ts
@@ -18,11 +18,13 @@ describe("SEO", () => {
});
it("should contain homepage URL", () => {
- expect(sitemap).toContain("https://locanara.com/");
+ expect(sitemap).toContain("https://locanara.hyo.dev/");
});
it("should contain community page URL", () => {
- expect(sitemap).toContain("https://locanara.com/community");
+ expect(sitemap).toContain(
+ "https://locanara.hyo.dev/community"
+ );
});
it("should have valid changefreq values", () => {
@@ -71,7 +73,7 @@ describe("SEO", () => {
});
it("should reference sitemap", () => {
- expect(robots).toContain("Sitemap: https://locanara.com/sitemap.xml");
+ expect(robots).toContain("Sitemap: https://locanara.hyo.dev/sitemap.xml");
});
});
@@ -108,7 +110,7 @@ describe("SEO", () => {
it("should have og:url", () => {
expect(html).toContain('property="og:url"');
- expect(html).toContain("https://locanara.com/");
+ expect(html).toContain("https://locanara.hyo.dev/");
});
it("should have og:title", () => {
@@ -121,7 +123,7 @@ describe("SEO", () => {
it("should have og:image", () => {
expect(html).toContain('property="og:image"');
- expect(html).toContain("https://locanara.com/og-image.png");
+ expect(html).toContain("https://locanara.hyo.dev/og-image.png");
});
it("should have og:site_name", () => {
@@ -160,15 +162,15 @@ describe("SEO", () => {
describe("SEO Component", () => {
// Test the SEO component constants
- const SITE_URL = "https://locanara.com";
+ const SITE_URL = "https://locanara.hyo.dev";
const DEFAULT_IMAGE = `${SITE_URL}/og-image.png`;
it("should have correct site URL", () => {
- expect(SITE_URL).toBe("https://locanara.com");
+ expect(SITE_URL).toBe("https://locanara.hyo.dev");
});
it("should have correct default image URL", () => {
- expect(DEFAULT_IMAGE).toBe("https://locanara.com/og-image.png");
+ expect(DEFAULT_IMAGE).toBe("https://locanara.hyo.dev/og-image.png");
});
it("should generate correct full title with suffix", () => {
@@ -180,7 +182,7 @@ describe("SEO", () => {
it("should generate correct URL with path", () => {
const path = "/community";
const url = `${SITE_URL}${path}`;
- expect(url).toBe("https://locanara.com/community");
+ expect(url).toBe("https://locanara.hyo.dev/community");
});
});
diff --git a/scripts/agent/compile-context.ts b/scripts/agent/compile-context.ts
index 35557af..f2312e0 100644
--- a/scripts/agent/compile-context.ts
+++ b/scripts/agent/compile-context.ts
@@ -59,8 +59,8 @@ async function generateLlmsTxt(): Promise<{ quick: number; full: number }> {
let fullContent = `# Locanara Community SDK Complete Reference
> Locanara: Unified on-device AI SDK for iOS/macOS and Android
-> Documentation: https://locanara.com
-> Quick Reference: https://locanara.com/llms.txt
+> Documentation: https://locanara.hyo.dev
+> Quick Reference: https://locanara.hyo.dev/llms.txt
> Generated: ${new Date().toISOString()}
## Table of Contents
@@ -104,18 +104,18 @@ async function generateLlmsTxt(): Promise<{ quick: number; full: number }> {
// Add links
fullContent += `## Links & Resources
-- Documentation: https://locanara.com
+- Documentation: https://locanara.hyo.dev
- GitHub: https://github.com/hyodotdev/locanara
-- Types Reference: https://locanara.com/docs/types
-- APIs Reference: https://locanara.com/docs/apis
+- Types Reference: https://locanara.hyo.dev/docs/types
+- APIs Reference: https://locanara.hyo.dev/docs/apis
`;
// Generate llms.txt (quick reference)
const quickContent = `# Locanara Community SDK Quick Reference
> Locanara: On-device AI SDK for iOS/macOS and Android
-> Documentation: https://locanara.com
-> Full Reference: https://locanara.com/llms-full.txt
+> Documentation: https://locanara.hyo.dev
+> Full Reference: https://locanara.hyo.dev/llms-full.txt
> Generated: ${new Date().toISOString()}
## Overview
@@ -218,7 +218,7 @@ enum LocanaraError: Error {
## Links
-- Docs: https://locanara.com
+- Docs: https://locanara.hyo.dev
- GitHub: https://github.com/hyodotdev/locanara
`;
From ccaf0eea951e06e151d4abd3a8d0ea817e995784 Mon Sep 17 00:00:00 2001
From: hyochan
Date: Thu, 18 Jun 2026 15:42:10 +0900
Subject: [PATCH 2/2] chore: narrow library CI triggers
---
.github/workflows/ci-expo.yml | 34 +++++++++++++++++++++++++++
.github/workflows/ci-flutter.yml | 28 ++++++++++++++++++++++
.github/workflows/ci-react-native.yml | 33 +++++++++++++++++++++++++-
3 files changed, 94 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/ci-expo.yml b/.github/workflows/ci-expo.yml
index 3214d4a..6af6130 100644
--- a/.github/workflows/ci-expo.yml
+++ b/.github/workflows/ci-expo.yml
@@ -5,16 +5,44 @@ on:
branches: [main]
paths:
- 'libraries/expo-ondevice-ai/**'
+ - '!libraries/expo-ondevice-ai/**/*.md'
+ - '!libraries/expo-ondevice-ai/**/*.mdx'
+ - '!libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx'
- '.github/workflows/ci-expo.yml'
pull_request:
branches: [main]
paths:
- 'libraries/expo-ondevice-ai/**'
+ - '!libraries/expo-ondevice-ai/**/*.md'
+ - '!libraries/expo-ondevice-ai/**/*.mdx'
+ - '!libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx'
- '.github/workflows/ci-expo.yml'
jobs:
+ changes:
+ name: Detect Changes
+ runs-on: ubuntu-latest
+ outputs:
+ library: ${{ steps.filter.outputs.library }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Filter changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ library:
+ - '.github/workflows/ci-expo.yml'
+ - 'libraries/expo-ondevice-ai/**'
+ - '!libraries/expo-ondevice-ai/**/*.md'
+ - '!libraries/expo-ondevice-ai/**/*.mdx'
+ - '!libraries/expo-ondevice-ai/example/app/(tabs)/settings.tsx'
+
lint-and-test:
name: Lint & Test
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
defaults:
run:
@@ -57,6 +85,8 @@ jobs:
build-android:
name: Build Android
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
steps:
@@ -100,6 +130,8 @@ jobs:
build-ios:
name: Build iOS
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: macos-latest
steps:
@@ -156,6 +188,8 @@ jobs:
build-web:
name: Build Web
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/ci-flutter.yml b/.github/workflows/ci-flutter.yml
index 075842d..b3d6677 100644
--- a/.github/workflows/ci-flutter.yml
+++ b/.github/workflows/ci-flutter.yml
@@ -5,16 +5,44 @@ on:
branches: [main]
paths:
- 'libraries/flutter_ondevice_ai/**'
+ - '!libraries/flutter_ondevice_ai/**/*.md'
+ - '!libraries/flutter_ondevice_ai/**/*.mdx'
+ - '!libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart'
- '.github/workflows/ci-flutter.yml'
pull_request:
branches: [main]
paths:
- 'libraries/flutter_ondevice_ai/**'
+ - '!libraries/flutter_ondevice_ai/**/*.md'
+ - '!libraries/flutter_ondevice_ai/**/*.mdx'
+ - '!libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart'
- '.github/workflows/ci-flutter.yml'
jobs:
+ changes:
+ name: Detect Changes
+ runs-on: ubuntu-latest
+ outputs:
+ library: ${{ steps.filter.outputs.library }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Filter changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ library:
+ - '.github/workflows/ci-flutter.yml'
+ - 'libraries/flutter_ondevice_ai/**'
+ - '!libraries/flutter_ondevice_ai/**/*.md'
+ - '!libraries/flutter_ondevice_ai/**/*.mdx'
+ - '!libraries/flutter_ondevice_ai/example/lib/screens/settings_screen.dart'
+
analyze-and-test:
name: Analyze & Test
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/ci-react-native.yml b/.github/workflows/ci-react-native.yml
index d9ec9b4..ce55cbf 100644
--- a/.github/workflows/ci-react-native.yml
+++ b/.github/workflows/ci-react-native.yml
@@ -5,16 +5,44 @@ on:
branches: [main]
paths:
- 'libraries/react-native-ondevice-ai/**'
+ - '!libraries/react-native-ondevice-ai/**/*.md'
+ - '!libraries/react-native-ondevice-ai/**/*.mdx'
+ - '!libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx'
- '.github/workflows/ci-react-native.yml'
pull_request:
branches: [main]
paths:
- 'libraries/react-native-ondevice-ai/**'
+ - '!libraries/react-native-ondevice-ai/**/*.md'
+ - '!libraries/react-native-ondevice-ai/**/*.mdx'
+ - '!libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx'
- '.github/workflows/ci-react-native.yml'
jobs:
+ changes:
+ name: Detect Changes
+ runs-on: ubuntu-latest
+ outputs:
+ library: ${{ steps.filter.outputs.library }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Filter changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ library:
+ - '.github/workflows/ci-react-native.yml'
+ - 'libraries/react-native-ondevice-ai/**'
+ - '!libraries/react-native-ondevice-ai/**/*.md'
+ - '!libraries/react-native-ondevice-ai/**/*.mdx'
+ - '!libraries/react-native-ondevice-ai/example/src/screens/SettingsScreen.tsx'
+
lint-and-test:
name: Lint & Test
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
defaults:
run:
@@ -64,6 +92,8 @@ jobs:
build-android:
name: Build Android
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: ubuntu-latest
steps:
@@ -99,6 +129,8 @@ jobs:
build-ios:
name: Build iOS
+ needs: changes
+ if: needs.changes.outputs.library == 'true'
runs-on: macos-latest
steps:
@@ -153,4 +185,3 @@ jobs:
-configuration Debug \
build \
CODE_SIGNING_ALLOWED=NO
-