diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..b0ee5d8
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,55 @@
+# Contributing
+
+Contributions are **welcome** and will be fully **credited**.
+
+Please read and understand the contribution guide before creating an issue or pull request.
+
+## Etiquette
+
+This project is open source, and as such, the maintainers give their free time to build and maintain the source code
+held within. They make the code freely available in the hope that it will be of use to other developers. It would be
+extremely unfair for them to suffer abuse or anger for their hard work.
+
+Please be considerate towards maintainers when raising issues or presenting pull requests. Let's show the
+world that developers are civilized and selfless people.
+
+It's the duty of the maintainer to ensure that all submissions to the project are of sufficient
+quality to benefit the project. Many developers have different skills, strengths, and weaknesses. Respect the maintainer's decision, and do not be upset or abusive if your submission is not used.
+
+## Viability
+
+When requesting or submitting new features, first consider whether it might be useful to others. Open
+source projects are used by many developers, who may have entirely different needs to your own. Think about
+whether or not your feature is likely to be used by other users of the project.
+
+## Procedure
+
+Before filing an issue:
+
+- Attempt to replicate the problem, to ensure that it wasn't a coincidental incident.
+- Check to make sure your feature suggestion isn't already present within the project.
+- Check the pull requests tab to ensure that the bug doesn't have a fix in progress.
+- Check the pull requests tab to ensure that the feature isn't already in progress.
+
+Before submitting a pull request:
+
+- Check the codebase to ensure that your feature doesn't already exist.
+- Check the pull requests to ensure that another person hasn't already submitted the feature or fix.
+
+## Requirements
+
+If the project maintainer has any additional requirements, you will find them listed here.
+
+- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](https://pear.php.net/package/PHP_CodeSniffer).
+
+- **Add tests!** - Your patch won't be accepted if it doesn't have tests.
+
+- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
+
+- **Consider our release cycle** - We try to follow [SemVer v2.0.0](https://semver.org/). Randomly breaking public APIs is not an option.
+
+- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
+
+- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](https://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
+
+**Happy coding**!
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..7605c1c
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: Relaticle
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000..42603d9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,66 @@
+name: Bug Report
+description: Report an Issue or Bug with the Package
+title: "[Bug]: "
+labels: ["bug"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ We're sorry to hear you have a problem. Can you help us solve it by providing the following details.
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: What did you expect to happen?
+ placeholder: I cannot currently do X thing because when I do, it breaks X thing.
+ validations:
+ required: true
+ - type: textarea
+ id: how-to-reproduce
+ attributes:
+ label: How to reproduce the bug
+ description: How did this occur, please add any config values used and provide a set of reliable steps if possible.
+ placeholder: When I do X I see Y.
+ validations:
+ required: true
+ - type: input
+ id: package-version
+ attributes:
+ label: Package Version
+ description: What version of our Package are you running? Please be as specific as possible
+ placeholder: 1.0.0
+ validations:
+ required: true
+ - type: input
+ id: php-version
+ attributes:
+ label: PHP Version
+ description: What version of PHP are you running? Please be as specific as possible
+ placeholder: 8.2.0
+ validations:
+ required: true
+ - type: input
+ id: laravel-version
+ attributes:
+ label: Laravel Version
+ description: What version of Laravel are you running? Please be as specific as possible
+ placeholder: 12.0.0
+ validations:
+ required: true
+ - type: dropdown
+ id: operating-systems
+ attributes:
+ label: Which operating systems does with happen with?
+ description: You may select more than one.
+ multiple: true
+ options:
+ - macOS
+ - Windows
+ - Linux
+ - type: textarea
+ id: notes
+ attributes:
+ label: Notes
+ description: Use this field to provide any other notes that you feel might be relevant to the issue.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..6523b12
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,11 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Ask a question
+ url: https://github.com/Relaticle/comments/discussions/new?category=q-a
+ about: Ask the community for help
+ - name: Request a feature
+ url: https://github.com/Relaticle/comments/discussions/new?category=ideas
+ about: Share ideas for new features
+ - name: Report a security issue
+ url: https://github.com/Relaticle/comments/security/policy
+ about: Learn how to notify us for sensitive bugs
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..0f4107d
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,3 @@
+# Security Policy
+
+If you discover any security related issues, please email manuk.minasyan1@gmail.com instead of using the issue tracker.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..0bc378d
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,12 @@
+# Please see the documentation for all configuration options:
+# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ labels:
+ - "dependencies"
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000..aa5650e
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,21 @@
+changelog:
+ exclude:
+ labels:
+ - skip-changelog
+ authors:
+ - dependabot
+ categories:
+ - title: Bug Fixes
+ labels:
+ - bug
+ - fix
+ - title: New Features
+ labels:
+ - feature
+ - enhancement
+ - title: Breaking Changes
+ labels:
+ - breaking
+ - title: Other Changes
+ labels:
+ - "*"
diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml
new file mode 100644
index 0000000..eed8c52
--- /dev/null
+++ b/.github/workflows/auto-merge.yml
@@ -0,0 +1,33 @@
+name: Auto-Merge
+
+on: pull_request_target
+
+permissions:
+ pull-requests: write
+ contents: write
+
+jobs:
+ dependabot:
+ runs-on: ubuntu-latest
+ if: ${{ github.actor == 'dependabot[bot]' }}
+ steps:
+
+ - name: Dependabot metadata
+ id: metadata
+ uses: dependabot/fetch-metadata@v2.5.0
+ with:
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
+
+ - name: Auto-merge Dependabot PRs for semver-minor updates
+ if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor'}}
+ run: gh pr merge --auto --merge "$PR_URL"
+ env:
+ PR_URL: ${{github.event.pull_request.html_url}}
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ - name: Auto-merge Dependabot PRs for semver-patch updates
+ if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
+ run: gh pr merge --auto --merge "$PR_URL"
+ env:
+ PR_URL: ${{github.event.pull_request.html_url}}
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml
new file mode 100644
index 0000000..9fa8b0a
--- /dev/null
+++ b/.github/workflows/changelog.yml
@@ -0,0 +1,42 @@
+name: Changelog
+
+on:
+ release:
+ types: [released]
+
+permissions:
+ contents: write
+
+jobs:
+ update:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Determine target branch
+ id: branch
+ run: |
+ TAG="${{ github.event.release.tag_name }}"
+ MAJOR=$(echo "$TAG" | sed -E 's/^v?([0-9]+)\..*/\1/')
+ BRANCH="${MAJOR}.x"
+ if ! git ls-remote --exit-code --heads "https://github.com/${{ github.repository }}" "$BRANCH" > /dev/null 2>&1; then
+ BRANCH="${{ github.event.repository.default_branch }}"
+ fi
+ echo "name=${BRANCH}" >> $GITHUB_OUTPUT
+
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ steps.branch.outputs.name }}
+
+ - name: Update Changelog
+ uses: stefanzweifel/changelog-updater-action@v1
+ with:
+ latest-version: ${{ github.event.release.name }}
+ release-notes: ${{ github.event.release.body }}
+
+ - name: Commit updated CHANGELOG
+ uses: stefanzweifel/git-auto-commit-action@v7
+ with:
+ branch: ${{ steps.branch.outputs.name }}
+ commit_message: Update CHANGELOG
+ file_pattern: CHANGELOG.md
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 0000000..241ef41
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,137 @@
+name: Deploy Docs
+
+on:
+ push:
+ branches: ["1.x"]
+ paths:
+ - 'docs/**'
+ - '.github/workflows/deploy-docs.yml'
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Version branch to deploy (e.g., 1.x)'
+ required: true
+ type: choice
+ options:
+ - '1.x'
+
+# Prevent concurrent deploys to avoid push conflicts
+concurrency:
+ group: deploy-docs
+ cancel-in-progress: false
+
+permissions:
+ contents: write
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Determine version
+ id: version
+ run: |
+ if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
+ echo "branch=${{ inputs.version }}" >> $GITHUB_OUTPUT
+ else
+ echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
+ fi
+
+ - name: Set version config
+ id: config
+ run: |
+ BRANCH="${{ steps.version.outputs.branch }}"
+ case $BRANCH in
+ 1.x)
+ echo "dest_folder=." >> $GITHUB_OUTPUT
+ echo "base_url=/comments/" >> $GITHUB_OUTPUT
+ echo "is_latest=true" >> $GITHUB_OUTPUT
+ ;;
+ *)
+ echo "Unknown branch: $BRANCH"
+ exit 1
+ ;;
+ esac
+
+ - name: Checkout source branch
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ steps.version.outputs.branch }}
+
+ - name: Checkout gh-pages
+ uses: actions/checkout@v6
+ with:
+ ref: gh-pages
+ path: gh-pages
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
+ with:
+ node-version: '20'
+ cache: 'npm'
+ cache-dependency-path: 'docs/package-lock.json'
+
+ - name: Install dependencies
+ working-directory: ./docs
+ run: npm ci
+
+ - name: Build documentation
+ working-directory: ./docs
+ run: npm run generate
+ env:
+ NUXT_APP_BASE_URL: ${{ steps.config.outputs.base_url }}
+ NUXT_SITE_URL: https://relaticle.github.io
+ DOCS_VERSION: ${{ steps.version.outputs.branch }}
+ NUXT_PUBLIC_FATHOM_SITE_ID: ${{ secrets.FATHOM_SITE_ID }}
+
+ - name: Deploy to gh-pages
+ run: |
+ DEST="${{ steps.config.outputs.dest_folder }}"
+ IS_LATEST="${{ steps.config.outputs.is_latest }}"
+
+ if [ "$IS_LATEST" == "true" ]; then
+ echo "Deploying latest version to root..."
+ cd gh-pages
+ # List of items to preserve
+ PRESERVE="versions.json .nojekyll README.md .git"
+ # Remove everything except preserved items
+ for item in *; do
+ if [ -e "$item" ]; then
+ SKIP=false
+ for keep in $PRESERVE; do
+ if [ "$item" == "$keep" ]; then
+ SKIP=true
+ break
+ fi
+ done
+ if [ "$SKIP" == "false" ]; then
+ rm -rf "$item"
+ fi
+ fi
+ done
+ # Also remove hidden files except .git, .nojekyll
+ for item in .[!.]*; do
+ if [ -e "$item" ] && [ "$item" != ".git" ] && [ "$item" != ".nojekyll" ]; then
+ rm -rf "$item"
+ fi
+ done
+ cd ..
+ # Copy new build to root
+ cp -r docs/.output/public/* gh-pages/
+ else
+ echo "Deploying to $DEST subfolder..."
+ rm -rf "gh-pages/$DEST"
+ cp -r docs/.output/public "gh-pages/$DEST"
+ fi
+
+ - name: Commit and push
+ working-directory: ./gh-pages
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add -A
+ if git diff --staged --quiet; then
+ echo "No changes to deploy"
+ else
+ git commit -m "Deploy ${{ steps.version.outputs.branch }} docs"
+ git push
+ fi
diff --git a/.github/workflows/pint.yml b/.github/workflows/pint.yml
new file mode 100644
index 0000000..bf7e174
--- /dev/null
+++ b/.github/workflows/pint.yml
@@ -0,0 +1,27 @@
+name: Pint
+
+on:
+ push:
+ paths:
+ - '**.php'
+
+permissions:
+ contents: write
+
+jobs:
+ php-code-styling:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ github.head_ref }}
+
+ - name: Fix PHP code style issues
+ uses: aglipanci/laravel-pint-action@2.6
+
+ - name: Commit changes
+ uses: stefanzweifel/git-auto-commit-action@v7
+ with:
+ commit_message: Fix styling
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..038b6ee
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,51 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*.*.*'
+
+permissions:
+ contents: write
+
+jobs:
+ tests:
+ uses: ./.github/workflows/tests.yml
+ secrets: inherit
+
+ release:
+ needs: tests
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Determine if pre-release
+ id: prerelease
+ run: |
+ TAG="${{ github.ref_name }}"
+ if [[ "$TAG" == *"-"* ]]; then
+ echo "flag=--prerelease" >> $GITHUB_OUTPUT
+ else
+ echo "flag=" >> $GITHUB_OUTPUT
+ fi
+
+ - name: Create GitHub Release
+ run: gh release create "${{ github.ref_name }}" --generate-notes ${{ steps.prerelease.outputs.flag }}
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ cleanup:
+ needs: tests
+ if: failure()
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Delete tag on test failure
+ run: git push --delete origin "${{ github.ref_name }}"
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..8affd55
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,51 @@
+name: Tests
+
+on:
+ push:
+ branches: [1.x]
+ pull_request:
+ branches: [1.x]
+ workflow_call:
+
+jobs:
+ test:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ubuntu-latest]
+ php: [8.2, 8.3, 8.4]
+ laravel: [12.*]
+ stability: [prefer-stable]
+ include:
+ - laravel: 12.*
+ testbench: 10.*
+
+ name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
+ coverage: xdebug
+
+ - name: Setup problem matchers
+ run: |
+ echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+ echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
+
+ - name: Install dependencies
+ run: |
+ composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
+ composer update --${{ matrix.stability }} --prefer-dist --no-interaction
+
+ - name: List Installed Dependencies
+ run: composer show -D
+
+ - name: Execute tests
+ run: vendor/bin/pest --ci
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index eb1625e..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
](https://filaforms.app/)
-
-Visual form builder for all your public-facing forms.
-[Learn more ->](https://filaforms.app)
-
-
](https://relaticle.github.io/custom-fields)
@@ -150,8 +141,6 @@ Let users add custom fields to any model without code changes.
[Learn more ->](https://relaticle.github.io/custom-fields)