diff --git a/.github/workflows/sync-development-to-nightly.yml b/.github/workflows/sync-development-to-nightly.yml
new file mode 100644
index 0000000..4804907
--- /dev/null
+++ b/.github/workflows/sync-development-to-nightly.yml
@@ -0,0 +1,86 @@
+name: Sync development → nightly
+
+on:
+ push:
+ branches:
+ - development
+
+permissions:
+ contents: write
+ pull-requests: write
+
+concurrency:
+ group: sync-dev-nightly
+ cancel-in-progress: true
+
+jobs:
+ create-and-merge:
+ name: Create PR and merge into nightly
+ runs-on: ubuntu-latest
+ steps:
+ - name: Create or update PR and merge when possible
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const owner = context.repo.owner;
+ const repo = context.repo.repo;
+ const head = 'development';
+ const base = 'nightly';
+ const title = `chore: sync ${head} → ${base} (${new Date().toISOString().split('T')[0]})`;
+ const body = `Automated sync of ${head} into ${base} by workflow.`;
+
+ // Look for an existing open PR from development -> nightly
+ const { data: existing } = await github.rest.pulls.list({
+ owner,
+ repo,
+ state: 'open',
+ head: `${owner}:${head}`,
+ base,
+ });
+
+ let pr;
+ if (existing.length > 0) {
+ pr = existing[0];
+ core.info(`Found existing PR #${pr.number}`);
+ } else {
+ const { data: created } = await github.rest.pulls.create({
+ owner,
+ repo,
+ title,
+ head,
+ base,
+ body,
+ maintainer_can_modify: true,
+ });
+ pr = created;
+ core.info(`Created PR #${pr.number}`);
+ }
+
+ // Wait for GitHub to compute mergeability (it may be null initially)
+ let refreshed = pr;
+ for (let i = 0; i < 10; i++) {
+ const { data } = await github.rest.pulls.get({ owner, repo, pull_number: pr.number });
+ refreshed = data;
+ if (refreshed.mergeable !== null) break;
+ await new Promise((r) => setTimeout(r, 2000));
+ }
+
+ if (!refreshed.mergeable) {
+ core.setOutput('pr-number', String(pr.number));
+ core.info(`PR #${pr.number} is not mergeable (state=${refreshed.mergeable_state}). Leaving PR open for manual resolution.`);
+ return;
+ }
+
+ // Merge the PR
+ try {
+ const mergeRes = await github.rest.pulls.merge({
+ owner,
+ repo,
+ pull_number: pr.number,
+ merge_method: 'merge',
+ });
+ core.info(`Merged PR #${pr.number} — sha: ${mergeRes.data.sha}`);
+ core.setOutput('pr-number', String(pr.number));
+ } catch (err) {
+ core.setFailed(`Failed to merge PR #${pr.number}: ${err.message}`);
+ }
diff --git a/app/privacy/page.tsx b/app/privacy/page.tsx
deleted file mode 100644
index 892d92b..0000000
--- a/app/privacy/page.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Privacy } from "@/components/privacy"
-import { Navigation } from "@/components/Static/navigation"
-import { Footer } from "@/components/Static/footer"
-
-export default function PrivacyPage() {
- return (
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/app/terms/page.tsx b/app/terms/page.tsx
deleted file mode 100644
index 7b346db..0000000
--- a/app/terms/page.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Terms } from "@/components/terms"
-import { Navigation } from "@/components/Static/navigation"
-import { Footer } from "@/components/Static/footer"
-
-export default function TermsPage() {
- return (
-
-
-
-
-
- )
-}
\ No newline at end of file