diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index a03fe6f5dc..870d9f5fda 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -12,7 +12,7 @@ body: Thanks for taking the time to file this issue! Here are a few things to do before submitting: 1. Use the [**latest nightly version**](https://github.com/LawnchairLauncher/lawnchair#development-builds) when reporting bugs. - 2. [**Read the FAQ**](https://lawnchair.app/faq/#common-issues) for common issues; if it is, please don't create an issue about it. + 2. [**Read our documentation**](https://docs.lawnchair.app/) for common issues; if it is, please don't create an issue about it. 3. Search **both [open and closed issues](https://github.com/LawnchairLauncher/lawnchair/issues?q=is%3Aissue+sort%3Aupdated-desc+)** for your bug. - type: textarea diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index ce8d7329d7..5b5c2b829e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -11,7 +11,7 @@ body: Thanks for taking the time to file this issue! Here are a few things to do before submitting: 1. Use the [**latest nightly version**](https://github.com/LawnchairLauncher/lawnchair#development-builds) when requesting. - 2. [**Read the FAQ**](https://lawnchair.app/faq) to check if your request is already planned by the developers. + 2. [**Read the docs**](https://docs.lawnchair.app/) to check if your request is already planned by the developers. 3. Search **both [open and closed issues](https://github.com/LawnchairLauncher/lawnchair/issues?q=is%3Aissue+sort%3Aupdated-desc+)** for your feature request. Please keep in mind that **we may not always implement this feature request**. @@ -37,8 +37,7 @@ body: attributes: label: Did the feature exist in Lawnchair Legacy? description: | - See [this FAQ page](https://lawnchair.app/faq/#what-happened-to-lawnchair-legacy) for more info about Lawnchair Legacy, previously - known as Lawnchair 2. + See [this documentation page](https://docs.lawnchair.app/community/about/project-history#what-happened-to-lawnchair-legacy) for more info about Lawnchair Legacy, previously known as Lawnchair 2. options: - "Yes" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 230828e36b..5602075604 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,154 +1,32 @@ -# Lawnchair contributing guidelines +# Contributing to Lawnchair - - - - - +Thank you for your interest in contributing to the Lawnchair project. This document provides general reminders and directs you to our official, living documentation hub at [docs.lawnchair.app](https://docs.lawnchair.app). -Welcome to the **Lawnchair** project. We appreciate your interest in contributing. If you have -questions, -feel free to reach out on [Telegram][telegram] or [Discord][discord]. +## General reminders -## No-code contributions +Before participating in any area of the project, please keep these core guidelines in mind: -- For **[bug reports][bug-reports]**, please be as detailed as possible and provide clear steps to - reproduce the issue. -- For **[feature requests][feature-requests]**, clearly describe the feature and its potential - benefits. -- For security vulnerabilities, follow the instructions in our [Security Policy][security-policy] -- For translations, visit **[Lawnchair on Crowdin][crowdin]**. -- For documentation, follow - the [developer documentation style guide](https://developers.google.com/style) of Google. +* Adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) during all interactions. +* Always search our [GitHub issue tracker](https://github.com/LawnchairLauncher/lawnchair/issues) to see if a bug has already been reported or a feature requested before opening a new issue. +* Avoid using the issue tracker for personal support. If you need help, please visit our [community channels](https://docs.lawnchair.app/project-and-community/get-involved/community-channels) on Telegram or Discord. -**Tips for contributing** +### Contributing non-code -- Follow our [Code of Conduct][code-of-conduct]. -- Use Lawnchair's [Nightly builds][nightly] before creating issues. +You do not need to write code to make a significant impact on Lawnchair. We welcome and encourage several forms of non-code contributions: -## Contributing code +* You can help make Lawnchair accessible to a global audience by contributing translations through [Lawnchair on Crowdin](https://lawnchair.crowdin.com/lawnchair). +* You can help make development sustainable by [donating to the project](https://opencollective.com/lawnchair/). +* You can help maintain a clean and effective issue tracker by joining our [triaging issues](https://docs.lawnchair.app/community/get-involved/triage-issues). +* You can help keep our documentation accurate and clear by contributing directly to our [documentation files](https://docs.lawnchair.app/community/get-involved/writing-documentation). -### Getting started +### Contributing code -1. Clone the repository with the `--recursive` flag to include the project's submodules: - ```bash - git clone --recursive https://github.com/LawnchairLauncher/lawnchair.git - ``` -2. Open the project in Android Studio. -3. Select the `lawnWithQuickstepGithubDebug` build variant. +Lawnchair is built on a highly complex, AOSP-derived foundation. Because of this, direct code contribution is challenging and may not be suitable for beginners. -If you encounter errors with modules that end with the `lib` suffix, such as `iconloaderlib` or -`searchuilib`, run `git submodule update --init --recursive`. +Before setting up your environment or writing any code, please read our [onboarding preface](https://docs.lawnchair.app/developers) to understand the unique challenges of this codebase. -Here are some contribution tips to help you get started: +If you are ready to write code, refer to [our official developer guides](https://docs.lawnchair.app/developers) on our documentation site: -- Ensure you are up to date with **Lawnchair** by setting your base branch to `16-dev`. -- Make sure your code is logical and formatted correctly. For Kotlin, see - the [Kotlin coding conventions][kotlin-coding-conventions]. -- [The `lawnchair` package][lawnchair-package] houses Lawnchair’s own code, whereas [the - `src` package][src-package] includes a clone of the Launcher3 codebase with modifications. - Generally, place new files in the former and keep changes to the latter to a minimum. - -### Additional documentation - -- [Roadmap](ROADMAP.md) -- [Wiki](https://github.com/LawnchairLauncher/lawnchair/wiki) -- [Visual guidelines](/docs/assets/README.md) -- [`compatLib` module](compatLib/README.md) -- [`preferences` directory](lawnchair/src/app/lawnchair/ui/preferences/components/README.md) -- [`libs/systemui` framework module](platform_frameworks_libs_systemui/README.md) -- [`packages/SystemUI` app](systemUI/README.md) -- [Prebuilt libraries](prebuilts/libs/README.md) - -### Development workflow - -We use a tiered workflow to balance development speed with stability. The process for merging a -change depends on its complexity and risk. All PRs should target the `16-dev` branch. - -| Tier | Definition | Examples | Protocol | -|-----------------------------|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Trivial changes | Changes with zero risk of functional regression. | Fixing typos in comments or UI text (`docs`, `fix`), simple code style fixes (`style`). | Commit **directly** to the active branch. | -| Simple, self-contained work | Changes that are functionally isolated and have a very low risk of side effects. | Most single-file bug fixes, minor UX polish (padding, colors). | 1. Create a Pull Request.
2. Assign a reviewer.
3. Enable **"Auto-merge"** on the PR. It will merge automatically after CI passes and a reviewer approves. | -| Medium complexity features | New features or changes that affect multiple components but are not deeply architectural. | A new settings screen, a new drawer search provider | 1. Create a detailed Pull Request.
2. Assign the core team for review. | -| Major architectural changes | High-risk, complex changes that affect the core foundation of the app. | Android version rebase | 1. Create a very detailed Pull Request.
2. **Mandatory Review:** You **must** wait for at least one formal approval from a key team member before merging. The "Merge on Silence" rule does not apply. | - -### Commit message convention - -We follow the **[Conventional Commits specification][conventional-commits]**. - -* **Format:** `type(scope): subject` -* **Example:** `feat(settings): Add toggle for new feature` -* **Allowed types:** `feat`, `fix`, `style`, `refactor`, `perf`, `docs`, `test`, `chore`. - -### Versioning scheme - -Lawnchair’s version code is composed of five parts, separated by underscores: - -

- - - - - -

- -1. Android major version -2. Android minor version -3. Lawnchair development stage -4. Lawnchair development version -5. Revision/Release number - -#### Lawnchair development stages - -The following table lists the development stages used by Lawnchair: - -| Stage | Denote | -|-------------------|--------| -| Development | 00 | -| Alpha | 01 | -| Beta | 02 | -| Release Candidate | 03 | -| Release | 04 | - -### `strings.xml` naming - -String `name` attributes in `strings.xml` should follow this format: - -| Type | Format | Example usage | Actual string | Other information | -|--------------------------------------------------|-------------------|----------------------------|----------------------|----------------------------------------------------------------------------------------------------| -| Generic word | $1 | `disagree_or_agree` | Disagree or agree | Should only be used if it doesn't fit the categories below. | -| Action | $1_action | `apply_action` | Apply | Any generic action verb fits here. | -| Preference or popup label
Preference headers | $1_label | `folders_label` | Folders | | -| Preference or popup description | $1_description | `folders_description` | Row and column count | | -| Preference choice | $1_choice | `off_choice` | Off | | -| Feature string | (feature_name)_$1 | `colorpicker_hsb` | HSB | Feature strings are confined to a specific feature. Examples include the gesture and color picker. | -| Launcher string | $1_launcher | `device_contacts_launcher` | Contacts from device | Strings that are specific to the Launcher area. | - -### Updating the locally stored Google Fonts listing - -Lawnchair uses a locally stored JSON file (`google_fonts.json`) to list available fonts from Google -Fonts. This file should be updated periodically or before a release. - -To update the font listing, follow these steps: - -1. Obtain a [Google Fonts Developer API key][google-fonts-api-key]. -2. Download the JSON file from `https://www.googleapis.com/webfonts/v1/webfonts?key=API_KEY`, - replacing `API_KEY` with your key. -3. Replace the content of [`google_fonts.json`](lawnchair/assets/google_fonts.json) with the API - response. - - -[telegram]: https://t.me/lccommunity -[discord]: https://discord.com/invite/3x8qNWxgGZ -[nightly]: https://github.com/LawnchairLauncher/lawnchair/releases/tag/nightly -[security-report]: https://github.com/LawnchairLauncher/lawnchair/security/advisories/new -[security-policy]: https://github.com/LawnchairLauncher/lawnchair/security/policy -[bug-reports]: https://github.com/LawnchairLauncher/lawnchair/issues/new?assignees=&labels=bug&projects=&template=bug_report.yaml&title=%5BBUG%5D+ -[feature-requests]: https://github.com/LawnchairLauncher/lawnchair/issues/new?assignees=&labels=feature%2Cenhancement&projects=&template=feature_request.yaml&title=%5BFEATURE%5D+ -[code-of-conduct]: CODE_OF_CONDUCT.md -[crowdin]: https://lawnchair.crowdin.com -[kotlin-coding-conventions]: https://kotlinlang.org/docs/coding-conventions.html -[lawnchair-package]: https://github.com/LawnchairLauncher/lawnchair/tree/16-dev/lawnchair -[src-package]: https://github.com/LawnchairLauncher/lawnchair/tree/16-dev/src -[conventional-commits]: https://www.conventionalcommits.org/en/v1.0.0/ -[google-fonts-api-key]: https://developers.google.com/fonts/docs/developer_api#APIKey +* [Setup your build environment](https://docs.lawnchair.app/developers/introduction/get-started) +* [Understand our development workflow](https://docs.lawnchair.app/developers/standards/development-workflow) +* [Follow code standards](https://docs.lawnchair.app/developer-guide/standards/coding-standards) \ No newline at end of file diff --git a/README.md b/README.md index f705bd6ce6..3e451e3f79 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ > This branch contains major changes from the rebase of Launcher3, including changes that can cause > Lawnchair to crash or break. > -> For regular users, we recommend staying on **Lawnchair 15 Beta 3**. +> For regular users, we recommend staying on *Lawnchair 15 Beta 3*. @@ -31,8 +31,7 @@ This branch houses the codebase of Lawnchair 16, which is currently in developme ## Features - Material 3 Expressive theming that follows your wallpaper and system colors. -- At a Glance widget support, with integration - for [Smartspacer](https://github.com/KieronQuinn/Smartspacer). +- At a Glance widget support, with integration for [Smartspacer](https://github.com/KieronQuinn/Smartspacer). - QuickSwitch support for Android Recents integration on Android 10-15 (root required). - Global search for apps, contacts, and web results from the home screen. - Customization options for icon packs, fonts, and color settings. @@ -67,28 +66,27 @@ This branch houses the codebase of Lawnchair 16, which is currently in developme

-Lawnchair on Play Store will install as a different app from other sources. Features may be restricted to comply with Google Play's publishing rules. +Lawnchair on Play Store will install as a different app compared to other sources. Features may be restricted to comply with Google Play’s publishing rules. -You can also [verify your installation](VERIFICATION.md) to see if you have installed an official build. +You can also [verify your installation](https://docs.lawnchair.app/getting-started/install-and-setup/verify) to check if you have installed an official build. ### Development builds Interested in keeping yourself up-to-date with every Lawnchair development? Try our development builds! -These builds offer the latest features and bug fixes at a cost of performance and additional issues. -Make backups before installing. +These builds offer the latest features and bug fixes at a cost of performance and additional issues. Make backups before installing. -**Download:** [Obtainium][Obtainium link] • [GitHub][GitHub link] • [nightly.link][Nightly link] +Download: [Obtainium][Obtainium link] • [GitHub][GitHub link] • [nightly.link][Nightly link] -## Contributing +## Contribute Visit the [Lawnchair contributing guidelines](CONTRIBUTING.md) for information and tips on contributing to Lawnchair. -## Supporting Lawnchair +## Support Lawnchair If you love what we do, consider [supporting us on Open Collective](https://opencollective.com/lawnchair)! Your contributions help keep Lawnchair independent and enable us to develop faster. -A huge thank you to our **Core Backers ($5+)**: +A huge thank you to our Core Backers ($5+): *(These backers directly fund our Project Velocity Fund)* [![Core Backers](https://opencollective.com/lawnchair/tiers/backer.svg?avatarHeight=64&width=890&button=false)](https://opencollective.com/lawnchair) @@ -97,16 +95,14 @@ A huge thank you to our **Core Backers ($5+)**: ## Quick links -- [Website](https://lawnchair.app) -- [Support](https://lawnchair.app/support) -- [News on Telegram](https://t.me/lawnchairci) -- [Discord](https://discord.com/invite/3x8qNWxgGZ) -- [X (formerly Twitter)](https://x.com/lawnchairapp) -- [_XDA_ thread](https://xdaforums.com/t/lawnchair-customizable-pixel-launcher.3627137/) +- [Website](https://lawnchair.app) +- [Documentation](https://docs.lawnchair.app/) +- [News on Telegram](https://t.me/lawnchairci) +- [Discord](https://discord.com/invite/3x8qNWxgGZ) +- [X (formerly Twitter)](https://x.com/lawnchairapp) +- [_XDA_ thread](https://xdaforums.com/t/lawnchair-customizable-pixel-launcher.3627137/) -View all our links in the [Lawnchair Wiki](https://github.com/LawnchairLauncher/lawnchair/wiki). - - + [Nightly link]: https://nightly.link/LawnchairLauncher/lawnchair/workflows/ci/15-dev [Obtainium link]: https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22app.lawnchair.nightly%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Flawnchairlauncher%2Flawnchair%22%2C%22author%22%3A%22Lawnchair%20Launcher%22%2C%22name%22%3A%22Lawnchair%20(Debug)%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Atrue%2C%5C%22fallbackToOlderReleases%5C%22%3Afalse%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22Lawnchair%20Nightly%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Afalse%2C%5C%22releaseDateAsVersion%5C%22%3Atrue%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22Lawnchair%20is%20a%20free%2C%20open-source%20home%20app%20for%20Android.%20(NOTE%3A%20This%20is%20the%20debug%20version%20of%20Lawnchair%2C%20for%20the%20beta%2Fstable%20versions%20see%20%5C%5C%5C%22Lawnchair%5C%5C%5C%22)%5C%22%7D%22%7D [GitHub link]: https://github.com/LawnchairLauncher/lawnchair/releases/tag/nightly diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index 40f5a4d369..0000000000 --- a/ROADMAP.md +++ /dev/null @@ -1,16 +0,0 @@ -# Lawnchair development roadmap - -For the status of individual tasks, see -our [GitHub Issue Tracker](https://github.com/LawnchairLauncher/lawnchair/issues) - -## Vision - -Lawnchair's goal is to be: - -* **Simple:** Match the core Pixel Launcher experience. -* **Powerful:** Offer deep, meaningful customization. -* **Stable:** Provide a rock-solid, reliable foundation. - -## Roadmap - -See the pinned issues for details of our current roadmap. diff --git a/SECURITY.md b/SECURITY.md index c29af3c5dd..d6ab0212ca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,10 +1,9 @@ -# Security Policy +# Security policy -## Supported Versions +## Supported versions > [!WARNING] > [Lawnchair Legacy](https://play.google.com/store/apps/details?id=ch.deletescape.lawnchair.plah) is **unsupported**. Use the newer versions instead. -> See [this FAQ page](https://lawnchair.app/faq/#what-happened-to-lawnchair-legacy) for additional information. The latest version of Lawnchair is the only supported version. @@ -20,13 +19,11 @@ The latest version of Lawnchair is the only supported version. | 11 | :x: | | Older (Legacy) | :x: | -## Reporting Security issues +## Reporting security issues We appreciate your efforts to responsibly disclose your findings and will make every effort to acknowledge your contributions. -To report an issue, please file a [security advisory](https://github.com/LawnchairLauncher/lawnchair/security/advisories/new) -or contact a developer (can be found in the about page of the app) in [Telegram](https://t.me/lccommunity) or [Discord](https://discord.com/invite/3x8qNWxgGZ) and -state your security vulnerability starting with the words "**SECURITY**" +To report an issue, please file a [security advisory on GitHub](https://github.com/LawnchairLauncher/lawnchair/security/advisories/new). We'll endeavor to respond quickly, and will keep you updated throughout the process. diff --git a/VERIFICATION.md b/VERIFICATION.md deleted file mode 100644 index 9e00360997..0000000000 --- a/VERIFICATION.md +++ /dev/null @@ -1,35 +0,0 @@ -# Verifying your Lawnchair installation - -Lawnchair's APKs are cryptographically signed and can be verified using two systems: - -1. GitHub / SLSA attestations (Starting with Lawnchair 15 Beta 1) -2. SHA-256 Android app certificate fingerprints - -## SLSA attestation - -Every Lawnchair release, starting with Lawnchair 15 Beta 1 (except Nightly builds), is attested and -verified with SLSA provenance. -This repository meets the requirements for SLSA Level 2 compliance. - -> [!NOTE] -> You can verify without using the GitHub CLI by cross-referencing checks from -> [GitHub Attestations][github-attestation] with [Sigstore Rekor][sigstore-rekor]. - -1. Install the [GitHub CLI](https://cli.github.com/). -2. Download the APK and its attestation from [GitHub Attestations][github-attestation]. -3. Run `gh attestation verify {APK} -R LawnchairLauncher/lawnchair`, replacing `{APK}` with the path - to the downloaded APK file. - -## Android App Certificate - -Lawnchair uses two app certificates, which can be verified by tools such -as [AppVerifier][3p-appverifier]: - -* **Google Play**: - `47:AC:92:63:1C:60:35:13:CC:8D:26:DD:9C:FF:E0:71:9A:8B:36:55:44:DC:CE:C2:09:58:24:EC:25:61:20:A7` -* **Direct Downloads (Elsewhere)**: - `74:7C:36:45:B3:57:25:8B:2E:23:E8:51:E5:3C:96:74:7F:E0:AD:D0:07:E5:BA:2C:D9:7E:8C:85:57:2E:4D:C5` - -[github-attestation]: https://github.com/LawnchairLauncher/lawnchair/attestations -[sigstore-rekor]: https://search.sigstore.dev/ -[3p-appverifier]: https://github.com/soupslurpr/AppVerifier diff --git a/docs/assets/README.md b/docs/assets/README.md deleted file mode 100644 index d9f70166a3..0000000000 --- a/docs/assets/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Lawnchair assets guidelines - -This directory lists all the decoration & visual explainers used in the Lawnchair Documentation. - -All assets created should use Material 3 design with `#47B84F` as source color, and -the [Inter](https://fonts.google.com/specimen/Inter) ([OFL v1.1](https://github.com/rsms/inter/?tab=OFL-1.1-1-ov-file#readme)) -typography. - -Visit the [Material 3 theme builder][material-theme-builder] for more information on color. - -## Device mockup - -When creating device mockups for Lawnchair, make sure the latest stable commits of Lawnchair is use -as base. All wallpapers, fonts and icon packs are allowed as long as they're free-to-use -under a permissive license like the licenses from Creative-Common. Using vanilla out-of-the-box -experience is recommended because they show the user what to expect from Lawnchair Launcher when -they first use it. - -[material-theme-builder]: https://material-foundation.github.io/material-theme-builder/?primary=%2347B84F&bodyFont=Inter&displayFont=Inter&colorMatch=false diff --git a/docs/assets/version-dark.svg b/docs/assets/version-dark.svg deleted file mode 100644 index 151bbe84dd..0000000000 --- a/docs/assets/version-dark.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/assets/version-light.svg b/docs/assets/version-light.svg deleted file mode 100644 index 67fad3cbf2..0000000000 --- a/docs/assets/version-light.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -