Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
paths:
.github/workflows/**/*.{yml,yaml}:
ignore:
- '"inputs" section is alias node but mapping node is expected'
- '"paths" section must be sequence node but got alias node with "" tag'
- '"paths-ignore" section must be sequence node but got alias node with "" tag'
2 changes: 1 addition & 1 deletion .github/workflows/draft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:

steps:
- name: "Checkout"
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: "Draft Release Action"
id: draft
Expand Down
48 changes: 26 additions & 22 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,19 @@ jobs:

steps:
- name: "Checkout"
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: "Debug event.json"
if: ${{ !cancelled() }}
continue-on-error: true
run: |
cat "${GITHUB_EVENT_PATH}"
run: cat "${GITHUB_EVENT_PATH}"
- name: "Debug CTX github"
continue-on-error: true
env:
GITHUB_CTX: ${{ toJSON(github) }}
run: echo "$GITHUB_CTX"
- name: "Debug Environment"
continue-on-error: true
run: env

- name: "Kotlin Lint"
if: ${{ !cancelled() }}
Expand All @@ -49,28 +55,26 @@ jobs:
echo "::endgroup::"
npx prettier --check .

- name: "Yamllint"
- name: "yamllint"
if: ${{ !cancelled() }}
env:
CONFIG: "{extends: relaxed, ignore: [node_modules/,.github/disabled/], rules: {line-length: {max: 119}}}"
CONFIG: .github/yamllint.yaml
run: |
echo "::group::List Files"
yamllint -d '${{ env.CONFIG }}' --list-files .
yamllint -c "${{ env.CONFIG }}" --list-files .
echo "::endgroup::"
yamllint -d '${{ env.CONFIG }}' .
yamllint -c "${{ env.CONFIG }}" .

- name: "Actionlint"
- name: "actionlint"
if: ${{ !cancelled() }}
run: |
echo "::group::Download"
loc=$(curl -sI https://github.com/rhysd/actionlint/releases/latest | grep -i '^location:')
echo "loc: ${loc}"
tag=$(echo "${loc}" | sed -E 's|.*/tag/v?(.*)|\1|' | tr -d '\t\r\n')
echo "tag: ${tag}"
url="https://github.com/rhysd/actionlint/releases/latest/download/actionlint_${tag}_linux_amd64.tar.gz"
echo "url: ${url}"
curl -sL "${url}" | tar xz -C "${RUNNER_TEMP}" actionlint
file "${RUNNER_TEMP}/actionlint"
"${RUNNER_TEMP}/actionlint" --version
echo "::endgroup::"
"${RUNNER_TEMP}/actionlint" -color -verbose -shellcheck= -pyflakes=
uses: cssnr/actionlint-action@v1
with:
shellcheck_opts: -e SC2129

- name: "ShellCheck"
if: ${{ !cancelled() }}
uses: ludeeus/action-shellcheck@master
env:
SHELLCHECK_OPTS: -x
with:
scandir: .github/scripts
44 changes: 21 additions & 23 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:

steps:
- name: "Checkout"
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: "Debug Event"
continue-on-error: true
Expand Down Expand Up @@ -68,7 +68,7 @@ jobs:
echo "::endgroup::"

- name: "Update Version"
uses: chkfung/android-version-actions@v1.2.2
uses: chkfung/android-version-actions@fcf89abef1c7afba2083146dcca0c6da4705ba4b # v1.2.3
id: version
with:
gradlePath: ${{ env.gradle_file }}
Expand Down Expand Up @@ -98,7 +98,7 @@ jobs:
echo ${{ secrets.ANDROID_KEYSTORE_PASS }} | keytool -list -keystore ${{ env.key_file }}

- name: "Setup Node 22"
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22

Expand All @@ -114,7 +114,7 @@ jobs:
ls -lAh app

- name: "Setup Java"
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: "zulu"
java-version: "17"
Expand Down Expand Up @@ -159,12 +159,10 @@ jobs:

- name: "Upload APK to Release"
if: ${{ github.event_name == 'release' }}
uses: svenstaro/upload-release-action@v2
uses: cssnr/upload-release-action@v1
with:
file: ${{ env.apk_path }}/${{ env.signed_apk }}
tag: ${{ github.ref }}
files: ${{ env.apk_path }}/${{ env.signed_apk }}
overwrite: true
file_glob: true

- name: "Gradle Bundle AAB"
if: ${{ !github.event.release.prerelease }}
Expand All @@ -177,11 +175,11 @@ jobs:
continue-on-error: true
run: |
echo "env.aab_path: ${{ env.aab_path }}"
ls -lAh ${{ env.aab_path }} ||:
ls -lAh "${{ env.aab_path }}" ||:
echo "env.debug_symbols: ${{ env.debug_symbols }}"
ls -lAh ${{ env.debug_symbols }} ||:
ls -lAh "${{ env.debug_symbols }}" ||:
echo "env.mapping_file: ${{ env.mapping_file }}"
ls -lAh $(dirname ${{ env.debug_symbols }}) ||:
ls -lAh "$(dirname "${{ env.debug_symbols }}")" ||:

- name: "Sign Bundle"
if: ${{ !github.event.release.prerelease }}
Expand All @@ -196,7 +194,7 @@ jobs:

- name: "Upload Bundle to Artifacts"
if: ${{ !github.event.release.prerelease }}
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: bundle
path: ${{ env.aab_path }}
Expand All @@ -219,7 +217,7 @@ jobs:

- name: "Upload Google Play"
if: ${{ github.event_name == 'release' && !github.event.release.prerelease }}
uses: r0adkll/upload-google-play@v1
uses: r0adkll/upload-google-play@935ef9c68bb393a8e6116b1575626a7f5be3a7fb # v1.1.3
with:
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }}
packageName: ${{ env.package_name }}
Expand Down Expand Up @@ -248,24 +246,24 @@ jobs:
if: ${{ !github.event.act }}
continue-on-error: true
run: |
echo -e "## Android Release\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "## Android Release\n\n" >> "$GITHUB_STEP_SUMMARY"

echo -e "Final APK: \`${{ env.signed_apk }}\`\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "Final APK: \`${{ env.signed_apk }}\`\n\n" >> "$GITHUB_STEP_SUMMARY"

echo -e "<details><summary>Build Artifacts</summary>\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "\`\`\`text\n$(ls -lAh ${{ env.apk_path }})\n\`\`\`\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "</details>\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "<details><summary>Build Artifacts</summary>\n\n" >> "$GITHUB_STEP_SUMMARY"
echo -e "\`\`\`text\n$(ls -lAh ${{ env.apk_path }})\n\`\`\`\n\n" >> "$GITHUB_STEP_SUMMARY"
echo -e "</details>\n\n" >> "$GITHUB_STEP_SUMMARY"

if [ -f "${{ env.apk_path }}/output-metadata.json" ];then
echo -e "<details><summary>File: output-metadata.json</summary>\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "\`\`\`json\n$(cat ${{ env.apk_path }}/output-metadata.json)\n\`\`\`\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "</details>\n\n" >> $GITHUB_STEP_SUMMARY
echo -e "<details><summary>File: output-metadata.json</summary>\n\n" >> "$GITHUB_STEP_SUMMARY"
echo -e "\`\`\`json\n$(cat ${{ env.apk_path }}/output-metadata.json)\n\`\`\`\n\n" >> "$GITHUB_STEP_SUMMARY"
echo -e "</details>\n\n" >> "$GITHUB_STEP_SUMMARY"
fi

echo -e "\n\n---" >> $GITHUB_STEP_SUMMARY
echo -e "\n\n---" >> "$GITHUB_STEP_SUMMARY"

- name: "Send Failure Notification"
if: ${{ failure() && github.event_name == 'release' }}
uses: sarisia/actions-status-discord@v1
uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0
with:
webhook: ${{ secrets.DISCORD_WEBHOOK }}
7 changes: 7 additions & 0 deletions .github/yamllint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends: relaxed

ignore-from-file: .gitignore

rules:
line-length:
max: 119
8 changes: 3 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
# Generic
.DS_Store

.idea/
*.iml

**/build/
**/dist/
.gradle/
.kotlin/
captures/
app/debug
app/release

# App
local.properties
*.keystore
*.logcat
**/google-services.json
**/firebase-adminsdk.json

**/dist/
15 changes: 4 additions & 11 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
# IDE
.idea/
.vscode/

# Build
**/dist/
**/node_modules/
.github/assets/

# App
app/src/main/assets/preview/**
.github/assets
.github/disabled
.github/pull_request_template.md
app/src/main/assets/preview
34 changes: 19 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
[![GitHub Downloads](https://img.shields.io/github/downloads/cssnr/zipline-android/total?logo=android)](https://github.com/cssnr/zipline-android/releases/latest/download/app-release.apk)
[![GitHub Release Version](https://img.shields.io/github/v/release/cssnr/zipline-android?logo=github&label=latest)](https://github.com/cssnr/zipline-android/releases/latest)
[![GitHub Docs Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android-docs?logo=vitepress&logoColor=white&label=docs)](https://zipline-android.cssnr.com/)
[![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android?logo=github&label=updated)](https://github.com/cssnr/zipline-android/pulse)
[![Lint](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/lint.yaml?logo=cachet&label=lint)](https://github.com/cssnr/zipline-android/actions/workflows/lint.yaml)
[![Release](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/release.yaml?logo=cachet&label=release)](https://github.com/cssnr/zipline-android/actions/workflows/release.yaml)
[![Workflow Lint](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/lint.yaml?logo=testcafe&logoColor=white&label=lint)](https://github.com/cssnr/zipline-android/actions/workflows/lint.yaml)
[![Workflow Release](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/release.yaml?logo=testcafe&logoColor=white&label=release)](https://github.com/cssnr/zipline-android/actions/workflows/release.yaml)
[![AGP Version](https://img.shields.io/badge/dynamic/toml?logo=gradle&label=agp&query=%24.versions.agp&url=https%3A%2F%2Fraw.githubusercontent.com%2Fcssnr%2Fzipline-android%2Frefs%2Fheads%2Fmaster%2Fgradle%2Flibs.versions.toml)](https://github.com/cssnr/zipline-android/blob/master/gradle/libs.versions.toml#L2)
[![GitHub Repo Size](https://img.shields.io/github/repo-size/cssnr/zipline-android?logo=bookstack&logoColor=white&label=repo%20size)](https://github.com/cssnr/zipline-android)
[![GitHub Top Language](https://img.shields.io/github/languages/top/cssnr/zipline-android?logo=htmx)](https://github.com/cssnr/zipline-android)
[![GitHub Discussions](https://img.shields.io/github/discussions/cssnr/zipline-android?logo=github)](https://github.com/cssnr/zipline-android/discussions)
[![GitHub Forks](https://img.shields.io/github/forks/cssnr/zipline-android?style=flat&logo=github)](https://github.com/cssnr/zipline-android/forks)
[![GitHub Repo Stars](https://img.shields.io/github/stars/cssnr/zipline-android?style=flat&logo=github)](https://github.com/cssnr/zipline-android/stargazers)
[![GitHub Org Stars](https://img.shields.io/github/stars/cssnr?style=flat&logo=github&label=org%20stars)](https://cssnr.com/)
[![GitHub Docs Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android-docs?logo=vitepress&logoColor=white&label=docs)](https://zipline-android.cssnr.com/)
[![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android?logo=listenhub&label=updated)](https://github.com/cssnr/zipline-android/pulse)
[![GitHub Repo Size](https://img.shields.io/github/repo-size/cssnr/zipline-android?logo=buffer&label=repo%20size)](https://github.com/cssnr/zipline-android?tab=readme-ov-file#readme)
[![GitHub Top Language](https://img.shields.io/github/languages/top/cssnr/zipline-android?logo=devbox)](https://github.com/cssnr/zipline-android?tab=readme-ov-file#readme)
[![GitHub Contributors](https://img.shields.io/github/contributors-anon/cssnr/zipline-android?logo=southwestairlines)](https://github.com/cssnr/zipline-android/graphs/contributors)
[![GitHub Issues](https://img.shields.io/github/issues/cssnr/zipline-android?logo=codeforces&logoColor=white)](https://github.com/cssnr/zipline-android/issues)
[![GitHub Discussions](https://img.shields.io/github/discussions/cssnr/zipline-android?logo=theconversation)](https://github.com/cssnr/zipline-android/discussions)
[![GitHub Forks](https://img.shields.io/github/forks/cssnr/zipline-android?style=flat&logo=forgejo&logoColor=white)](https://github.com/cssnr/zipline-android/forks)
[![GitHub Repo Stars](https://img.shields.io/github/stars/cssnr/zipline-android?style=flat&logo=gleam&logoColor=white)](https://github.com/cssnr/zipline-android/stargazers)
[![GitHub Org Stars](https://img.shields.io/github/stars/cssnr?style=flat&logo=apachespark&logoColor=white&label=org%20stars)](https://cssnr.github.io/)
[![Discord](https://img.shields.io/discord/899171661457293343?logo=discord&logoColor=white&label=discord&color=7289da)](https://discord.gg/wXy6m2X8wY)
[![Ko-fi](https://img.shields.io/badge/Ko--fi-72a5f2?logo=kofi&label=support)](https://ko-fi.com/cssnr)
[![](https://repository-images.githubusercontent.com/963715375/e18a8ea8-f964-4088-852b-98f51631877f)](https://zipline-android.cssnr.com/)
Expand Down Expand Up @@ -38,11 +40,11 @@ Native Kotlin Android Application with a Mobile First Design.
Everything is cached and images are not downloaded over metered connections unless enabled.
User profile and stats widget are updated in the background with a user configurable task.

**More information available on the website:** https://zipline-android.cssnr.com/

_We are also developing a browser addon for all major browsers including Firefox Android:
[Zipline Web Extension](https://github.com/cssnr/zipline-extension?tab=readme-ov-file#readme)_

[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/)

## Install

> [!NOTE]
Expand Down Expand Up @@ -85,9 +87,9 @@ should take you to the settings area to allow installation if not already enable

</details>

### Setup
[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/)

Setup guides available [on the website](https://zipline-android.cssnr.com/guides/get-started).
### Setup

1. [Install](#Install) and open the app on your device.
2. Log in as you normally would on the website.
Expand Down Expand Up @@ -149,6 +151,8 @@ Features are documented [on the website](https://zipline-android.cssnr.com/guide

If you are having trouble using the app, support is available via [GitHub](#support) or [Discord](https://discord.gg/wXy6m2X8wY).

[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/)

## Screenshots

A slideshow is available [on the website](https://zipline-android.cssnr.com/guides/features#screenshots).
Expand Down Expand Up @@ -192,7 +196,7 @@ A slideshow is available [on the website](https://zipline-android.cssnr.com/guid

## Support

Documentation Site: https://zipline-android.cssnr.com/
[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/)

For general help or to request a feature, see:

Expand Down
24 changes: 24 additions & 0 deletions Taskfile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# yaml-language-server: $schema=https://taskfile.dev/schema.json
version: "3"

tasks:
lint:
desc: Lint
cmd: |
prettier --check .
yamllint -c .github/yamllint.yaml .
actionlint -shellcheck="-e SC2129"
shellcheck .github/scripts/prepare.sh

format:
desc: Format
aliases: [fmt]
cmd: |
prettier --write .

build:
desc: Build (recommended android studio)
vars:
GRADLEW: 'gradlew{{if eq OS "windows"}}.bat{{end}}'
cmd: |
./{{.GRADLEW}} assemble {{.CLI_ARGS}}
Loading
Loading