├── .github └── workflows │ ├── linux.yml │ ├── macos.yml │ └── windows.yml ├── README.md └── juli-version /.github/workflows/linux.yml: -------------------------------------------------------------------------------- 1 | name: Linux 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | tags: 8 | - "v*.*.*" 9 | paths-ignore: 10 | - 'catalog/**' 11 | - 'docs/**' 12 | pull_request: 13 | branches: 14 | - master 15 | paths-ignore: 16 | - 'catalog/**' 17 | - 'docs/**' 18 | 19 | jobs: 20 | build: 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | - uses: actions/checkout@v2 25 | - name: Get juli version 26 | run: echo ::set-env name=JULI_VERSION::$(cat juli-version $1) 27 | - uses: actions/checkout@v2 28 | with: 29 | repository: 'atomery/juli' 30 | ref: v${{ env.JULI_VERSION }} 31 | path: 'juli' 32 | fetch-depth: 1 33 | submodules: false 34 | - name: Install Snapcraft 35 | uses: samuelmeuli/action-snapcraft@v1 36 | with: 37 | snapcraft_token: ${{ secrets.SNAP_TOKEN }} 38 | - name: Set up Node.js 39 | uses: actions/setup-node@v1 40 | with: 41 | node-version: 12.x 42 | - name: Get yarn cache directory path 43 | id: yarn-cache-dir-path 44 | run: echo "::set-output name=dir::$(yarn cache dir)" 45 | - name: Cache yarn cache 46 | uses: actions/cache@v2 47 | id: cache-yarn-cache 48 | with: 49 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 50 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 51 | restore-keys: | 52 | ${{ runner.os }}-yarn- 53 | - name: Get tag name 54 | run: echo ::set-env name=CI_BUILD_TAG::${GITHUB_REF/refs\/tags\//} 55 | if: startsWith(github.ref, 'refs/tags/') 56 | - name: Build Singlebox 57 | run: | 58 | cd juli 59 | yarn --prefer-offline --network-timeout 600000 60 | yarn lint 61 | yarn singlebox:dist 62 | env: 63 | CI: true 64 | CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }} 65 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 66 | REACT_APP_LICENSE_SECRET: ${{ secrets.REACT_APP_LICENSE_SECRET }} -------------------------------------------------------------------------------- /.github/workflows/macos.yml: -------------------------------------------------------------------------------- 1 | name: macOS 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | tags: 8 | - "v*.*.*" 9 | paths-ignore: 10 | - 'catalog/**' 11 | - 'docs/**' 12 | pull_request: 13 | branches: 14 | - master 15 | paths: 16 | - '.github/workflows/macos.yml' 17 | 18 | jobs: 19 | build: 20 | runs-on: macos-latest 21 | 22 | steps: 23 | - uses: actions/checkout@v2 24 | - name: Get juli version 25 | run: echo ::set-env name=JULI_VERSION::$(cat juli-version $1) 26 | - uses: actions/checkout@v2 27 | with: 28 | repository: 'atomery/juli' 29 | ref: v${{ env.JULI_VERSION }} 30 | path: 'juli' 31 | fetch-depth: 1 32 | submodules: false 33 | - name: Set up Node.js 34 | uses: actions/setup-node@v1 35 | with: 36 | node-version: 12.x 37 | - name: Get yarn cache directory path 38 | id: yarn-cache-dir-path 39 | run: echo "::set-output name=dir::$(yarn cache dir)" 40 | - name: Cache yarn cache 41 | uses: actions/cache@v2 42 | id: cache-yarn-cache 43 | with: 44 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 45 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 46 | restore-keys: | 47 | ${{ runner.os }}-yarn- 48 | - name: Get tag name 49 | run: echo ::set-env name=CI_BUILD_TAG::${GITHUB_REF/refs\/tags\//} 50 | if: startsWith(github.ref, 'refs/tags/') 51 | - name: Build Singlebox 52 | run: | 53 | cd juli 54 | yarn --prefer-offline --network-timeout 600000 55 | yarn lint 56 | yarn singlebox:dist 57 | env: 58 | CI: true 59 | CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }} 60 | APPLE_ID: ${{ secrets.APPLE_ID }} 61 | APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} 62 | CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} 63 | CSC_LINK: ${{ secrets.CSC_LINK }} 64 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 65 | REACT_APP_LICENSE_SECRET: ${{ secrets.REACT_APP_LICENSE_SECRET }} -------------------------------------------------------------------------------- /.github/workflows/windows.yml: -------------------------------------------------------------------------------- 1 | name: Windows 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | tags: 8 | - "v*.*.*" 9 | paths-ignore: 10 | - 'catalog/**' 11 | - 'docs/**' 12 | pull_request: 13 | branches: 14 | - master 15 | paths: 16 | - '.github/workflows/windows.yml' 17 | 18 | jobs: 19 | build: 20 | runs-on: windows-latest 21 | 22 | steps: 23 | - uses: actions/checkout@v2 24 | - name: Get juli version 25 | run: echo "::set-env name=JULI_VERSION::$(type juli-version)" 26 | - uses: actions/checkout@v2 27 | with: 28 | repository: 'atomery/juli' 29 | ref: v${{ env.JULI_VERSION }} 30 | path: 'juli' 31 | fetch-depth: 1 32 | submodules: false 33 | - name: Set up Node.js 34 | uses: actions/setup-node@v1 35 | with: 36 | node-version: 12.x 37 | - name: Get yarn cache directory path 38 | id: yarn-cache-dir-path 39 | run: echo "::set-output name=dir::$(yarn cache dir)" 40 | - name: Cache yarn cache 41 | uses: actions/cache@v2 42 | id: cache-yarn-cache 43 | with: 44 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 45 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 46 | restore-keys: | 47 | ${{ runner.os }}-yarn- 48 | - name: Get tag name 49 | run: echo ::set-env name=CI_BUILD_TAG::${GITHUB_REF/refs\/tags\//} 50 | if: startsWith(github.ref, 'refs/tags/') 51 | - name: Build Singlebox 52 | run: | 53 | cd juli 54 | yarn --prefer-offline --network-timeout 600000 55 | yarn lint 56 | yarn singlebox:dist 57 | env: 58 | CI: true 59 | CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }} 60 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 61 | REACT_APP_LICENSE_SECRET: ${{ secrets.REACT_APP_LICENSE_SECRET }} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Singlebox [![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](LICENSE) 2 | 3 | |macOS|Linux|Windows| 4 | |---|---|---| 5 | |[![GitHub Actions macOS Build Status](https://github.com/atomery/singlebox/workflows/macOS/badge.svg)](https://github.com/atomery/singlebox/actions?query=workflow%3AmacOS)|[![GitHub Actions Linux Build Status](https://github.com/atomery/singlebox/workflows/Linux/badge.svg)](https://github.com/atomery/singlebox/actions?query=workflow%3ALinux)|[![GitHub Actions Windows Build Status](https://github.com/atomery/singlebox/workflows/Windows/badge.svg)](https://github.com/atomery/singlebox/actions?query=workflow%3AWindows)| 6 | 7 | **[Singlebox](https://singleboxapp.com)** - All Your Apps in One Single Window. 8 | 9 | --- 10 | 11 | ## Licensing 12 | ### Usage 13 | **Singlebox is paid software.** You can add up to two workspaces for free or [pay just $14.99](https://webcatalog.onfastspring.com/singleboxapp) to add as many as you need. 14 | 15 | The license: 16 | - Lets you add unlimited apps and workspaces. 17 | - Has no time limit and never expires. 18 | - Works with all versions (including major updates). 19 | - Permits uses on all of the devices you own (regardless of platforms or operating systems). 20 | 21 | ### Source Code 22 | On the other hand, **the source code is freely available** for use, modification and distribution under the permissions, limitations and conditions listed in the [Mozilla Public License 2.0](LICENSE). 23 | 24 | --- 25 | 26 | ## Development 27 | The development is unified with the [WebCatalog](https://atomery.com/webcatalog) project. Check out: 28 | - [atomery/juli](https://github.com/atomery/juli) repo for the code 29 | - [atomery/webcatalog](https://github.com/atomery/webcatalog/issues) repo for bug reports & feature requests -------------------------------------------------------------------------------- /juli-version: -------------------------------------------------------------------------------- 1 | 10.0.0-beta.4 --------------------------------------------------------------------------------