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 @@ - - - - - - - - \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1d013ff --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/README.md b/README.md index d8d551c..256cead 100644 --- a/README.md +++ b/README.md @@ -134,15 +134,6 @@ public static function infolist(Infolist $infolist): Infolist -### FilaForms -[](https://filaforms.app/) - -Visual form builder for all your public-facing forms. -[Learn more ->](https://filaforms.app) - - - - ### Custom Fields [](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) - - ### Flowforge @@ -160,8 +149,6 @@ Let users add custom fields to any model without code changes. Transform any Laravel model into a drag-and-drop Kanban board. [Learn more ->](https://relaticle.github.io/flowforge) - -