Skip to content
Open
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
8 changes: 8 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Code of Conduct

This project follows the ownCloud Code of Conduct.

Please read the full Code of Conduct at:
**<https://owncloud.com/contribute/code-of-conduct/>**

By participating in this project, you agree to abide by its terms.
99 changes: 6 additions & 93 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,96 +1,9 @@
## Submitting issues
# Contributing

If you have questions about how to use ownCloud, please join our [forum][forum].
Thank you for your interest in contributing to this project!

### Guidelines
* [Report the issue](https://github.com/owncloud/android/issues/new) using on of our [templates][template], they include all the information we need to track down the issue.
* This repository is *only* for issues within the ownCloud Android app code. Issues in other components should be reported in their own repositories:
- [ownCloud core](https://github.com/owncloud/core/issues)
- [oCIS](https://github.com/owncloud/ocis/issues)
- [iOS client](https://github.com/owncloud/ios-app/issues)
- [Desktop client](https://github.com/owncloud/client/issues)
* Search the [existing issues](https://github.com/owncloud/android/issues) first, it's likely that your issue was already reported.
Please read the full contributing guidelines at:
**<https://owncloud.com/contribute/>**

If your issue appears to be a bug, and hasn't been reported, open a new issue.

Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.

[template]: https://github.com/owncloud/android/tree/master/.github/ISSUE_TEMPLATE
[forum]: https://central.owncloud.org/

## Contributing to Source Code

Thanks for wanting to contribute source code to ownCloud. That's great!

Before we're able to merge your code into the ownCloud app for Android, please, check the [contribution guidelines][contribution].

### Guidelines
* Contribute your code in a feature, fix, improvement or technical enhancement branch by using one of the following branch names:

- ```feature/feature_name``` → new features in the app
- ```fix/fix_name``` → fixing problems or bugs, always welcome!
- ```improvement/improvement_name``` → make even better an existing feature
- ```technical/technical_description``` → code review, DB... technical stuff improved

Please, use the mentioned prefixes because CI system is ready to match with them. Be sure your feature, fix, improvement or technical branches are updated with latest changes in official `android/master`, it will give us a better chance to test your code before merging it with stable code.
* Once you are done with your code, start a pull request to merge your contribution into official `android/master`.
* Keep on using pull requests for your next contributions although you own write permissions.
* Important to mention that ownCloud Android team uses OneFlow as branching model. It's something as useful as easy:

* `master` will stay as main branch. Everything will work around it.
* Feature branch: new branch created from `master`. Once it is finished and DoD accomplished, rebased and merged into `master`.
* Release branch: will work as any feature branch. Before rebasing and merging into `master`, release tag must be signed.
* Hotfix branch: created from latest tag. Once it is finished, tag must be signed. Then, rebased and merged into `master`.
* The way to get an specific version is browsing through the tags.

Interesting [link](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow) about this.

[contribution]: https://owncloud.com/contribute/

### 1. Fork and download android/master repository:

* Please follow [SETUP.md](https://github.com/owncloud/android/blob/master/SETUP.md) to setup ownCloud Android app work environment.

### 2. Create pull request:

NOTE: You must sign the [CLA](https://cla-assistant.io/owncloud/android) before your changes can be accepted!

* Create new feature, fix, improvement or technical enhancement branch from your master branch: ```git checkout -b feature/feature_name```
* Register your changes: `git add filename`
* Commit your changes locally. Please, if posible use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) to add descriptive messages to the commits. Take the simplest approach:
- Feature commits: `feat: brief description of the changes performed`
- Fix commits: `fix: brief description of applied fix`
- Test commits: `test: brief description of developed tests`
- Calens commits: `chore: add calens file`

Submit the commit with ```git commit -m "commit message"```
* Push your changes to your GitHub repo: ```git push origin feature/feature_name```
* Browse to https://github.com/YOURGITHUBNAME/android/pulls and issue pull request
* Enter description and send pull request.

### 3. Update your contribution branch with master changes:

It is possible you see the next message from time to time.

<img src="docs_resources/out_of_date_branch.png" />

To fix this and make sure your contribution branch is updated with official android/master, you need to perform the next steps:
* Checkout your master branch: ```git checkout master```
* Get and apply official android/master branch changes in your master branch: ```git fetch upstream``` + ```git rebase upstream/master```. Now you have your master branch updated with official master branch changes.
* Checkout your contribution branch: ```git checkout feature/feature_name```
* Rebase contribution branch with master to put your contribution commits after the last commit of master branch, ensuring a clean commits history: ```git rebase master```. If there's some conflicts, solve it by using rebase in different steps.
* Push branch to server: ```git push -f origin feature/feature_name```. At this point, the message ```This branch is out-of-date with the base branch``` should disappear.

## Versioning

In order to check or review the stable versions, all available tags can be fetched with the command `git fetch --tags` and listed with the command `git tag`. The tag `latest` is also available pointing to the latest released version.

## Translations
Please submit translations via [Transifex][transifex].

[transifex]: https://www.transifex.com/projects/p/owncloud/

## Code of conduct
Please, read the [ownCloud code of conduct]. Being respectful and polite with other members of the community and staff is necessary to develop a better product together.

[ownCloud code of conduct]: https://owncloud.com/contribute/code-of-conduct/
For development setup, coding standards, and pull request process,
see the README in this repository.
115 changes: 94 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,108 @@
[![Android Unit Tests](https://github.com/owncloud/android/actions/workflows/android-unit-tests.yml/badge.svg)](https://github.com/owncloud/android/actions/workflows/android-unit-tests.yml) [![Android Instrumented Data Tests](https://github.com/owncloud/android/actions/workflows/android-instrumented-data-tests.yml/badge.svg)](https://github.com/owncloud/android/actions/workflows/android-instrumented-data-tests.yml) [![Detekt](https://github.com/owncloud/android/actions/workflows/detekt.yml/badge.svg)](https://github.com/owncloud/android/actions/workflows/detekt.yml) [![Conventional Commits](https://github.com/owncloud/android/actions/workflows/conventional-commits.yml/badge.svg)](https://github.com/owncloud/android/actions/workflows/conventional-commits.yml)
# ownCloud Android App

# [ownCloud](https://owncloud.org) Android app
<!-- OSPO-managed README | Generated: 2026-04-16 | v2 -->

<a href="https://play.google.com/store/apps/details?id=com.owncloud.android"><img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" height="75"></a><a href="https://f-droid.org/packages/com.owncloud.android/"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="75"></a>
[![License](https://img.shields.io/badge/License-GPL--2.0-blue.svg)](LICENSE.txt) [![ownCloud OSPO](https://img.shields.io/badge/OSPO-ownCloud-blue)](https://kiteworks.com/opensource)

| <img src="docs_resources/filelist_device.png"> | <img src="docs_resources/photos_device.png"> | <img src="docs_resources/share_device.png"> | <img src="docs_resources/spaces_device.png"> |
| ---------------------------------------------- | -------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
The ownCloud Android app enables users to access, sync, and share files stored on their ownCloud server directly from Android devices. Built with Kotlin, it supports ownCloud Infinite Scale (oCIS) and ownCloud 10 servers, featuring file browsing, photo galleries, Spaces, sharing, passcode lock, and biometric authentication. The app is available on [Google Play](https://play.google.com/store/apps/details?id=com.owncloud.android) and [F-Droid](https://f-droid.org/packages/com.owncloud.android/).

## Join development!
## Part of Mobile (Android)

**Start contributing:** Make sure you read [SETUP.md](https://github.com/owncloud/android/blob/master/SETUP.md) when you start working on this project. Basically: Fork this repository and contribute back using pull requests to the master branch.
Easy starting points are also reviewing [pull requests](https://github.com/owncloud/android/pulls) and working on [contributions are welcome](https://github.com/owncloud/android/issues?q=is%3Aopen+is%3Aissue+label%3A%22Contributions+are+welcome%22).
This is the official [ownCloud Android app](https://github.com/owncloud/android), the primary mobile client for Android users. It connects to both [ownCloud Infinite Scale (oCIS)](https://github.com/owncloud/ocis) and [ownCloud Server (Classic)](https://github.com/owncloud/core).

**Forum:** [#Android](https://central.owncloud.org/c/android)
## Getting Started

**License:** [GPLv2](https://github.com/owncloud/android/blob/master/LICENSE.txt)
1. Read [SETUP.md](https://github.com/owncloud/android/blob/master/SETUP.md) for development environment setup
2. Fork the repository and clone it locally
3. Open the project in Android Studio
4. Build and run using `./gradlew assembleDebug`

## Join testing!
### Beta Testing

If you are interested in testing the new features before being released and give us your feedback, please try out our beta channels:
- **Play Store:** Download the app from Play Store, scroll down to the beta section, and tap "I'm in"
- **F-Droid:** Open the ownCloud tab in F-Droid and download the latest beta version

**Play Store**
## Documentation

1. Download ownCloud app from Play Store.
2. Go to ownCloud tab in Play Store and scroll down to the end of the view.
3. Press the **I'M IN** button to join the beta program and your final app will be replaced with the beta one.
- [SETUP.md](https://github.com/owncloud/android/blob/master/SETUP.md) - Development setup guide
- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guidelines
- [CHANGELOG.md](https://github.com/owncloud/android/blob/master/CHANGELOG.md) - Release history
- [ownCloud documentation](https://doc.owncloud.com)

Note: If you want to use the ownCloud production version you have to leave the beta program, uninstall the app, and reinstall the production version.
## Community & Support

**F-Droid**
**[Star](https://github.com/owncloud/android)** this repo and **Watch** for release notifications!

1. Go to ownCloud tab in F-Droid.
2. Open versions section.
3. Download the latest version that contains beta in the name.
- [ownCloud Website](https://owncloud.com)
- [Community Discussions](https://github.com/orgs/owncloud/discussions)
- [Matrix Chat](https://app.element.io/#/room/#owncloud:matrix.org)
- [Documentation](https://doc.owncloud.com)
- [Enterprise Support](https://owncloud.com/contact-us/)
- [OSPO Home](https://kiteworks.com/opensource)

## Contributing

We welcome contributions! Please read the [Contributing Guidelines](CONTRIBUTING.md)
and our [Code of Conduct](CODE_OF_CONDUCT.md) before getting started.

### Workflow

- **Rebase Early, Rebase Often!** We use a rebase workflow. Always rebase on the target branch before submitting a PR.
- **Dependabot**: Automated dependency updates are managed via Dependabot. Review and merge dependency PRs promptly.
- **Signed Commits**: All commits **must** be PGP/GPG signed. See [GitHub's signing guide](https://docs.github.com/en/authentication/managing-commit-signature-verification).
- **DCO Sign-off**: Every commit must carry a `Signed-off-by` line:
```
git commit -s -S -m "your commit message"
```
- **GitHub Actions Policy**: Workflows may only use actions that are (a) owned by `owncloud`, (b) created by GitHub (`actions/*`), or (c) verified in the GitHub Marketplace.

## Translations

Help translate this project on Transifex:
**<https://explore.transifex.com/owncloud-org/owncloud-android/>**

Please submit translations via Transifex -- do not open pull requests for translation changes.

## Security

**Do not open a public GitHub issue for security vulnerabilities.**

Report vulnerabilities at **<https://security.owncloud.com>** -- see [SECURITY.md](SECURITY.md).

Bug bounty: [YesWeHack ownCloud Program](https://yeswehack.com/programs/owncloud-bug-bounty-program)

## License

This project is licensed under the [GPL-2.0](LICENSE.txt).

## About the ownCloud OSPO

The [Kiteworks Open Source Program Office](https://kiteworks.com/opensource), operating under
the [ownCloud](https://owncloud.com) brand, launched on May 5, 2026, to steward the open source
ecosystem around ownCloud's products. The OSPO ensures transparent governance, license compliance,
community health, and sustainable collaboration between the open source community and
[Kiteworks](https://www.kiteworks.com), which acquired ownCloud in 2023.

- **OSPO Home**: <https://kiteworks.com/opensource>
- **GitHub**: <https://github.com/owncloud>
- **ownCloud**: <https://owncloud.com>

For questions about the OSPO or licensing, contact ospo@kiteworks.com.

### License Migration to Apache 2.0

The OSPO is driving a strategic relicensing of ownCloud repositories toward the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0), following
the [Apache Software Foundation's third-party license policy](https://www.apache.org/legal/resolved.html).

Individual repositories will migrate as their audit is completed. The LICENSE file
in each repo reflects its **current** license status (not the target).

**Current license: GPL-2.0** (Category X per Apache policy -- cannot be included in Apache-2.0 works).

Migration prerequisites for this repository:

- **CLA/DCO coverage**: All past contributors must have signed agreements permitting relicensing
- **Copyleft dependency audit**: All GPL dependencies must be replaced or isolated
- **KDE heritage review**: Any code with KDE-era copyrights requires legal analysis
- **Complete relicensing**: GPL-2.0 is a strong copyleft license; migration requires full relicensing of all files
11 changes: 11 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Security Policy

## Reporting a Vulnerability

**Do NOT open a public GitHub issue for security vulnerabilities.**

Please report security issues responsibly via:
**<https://security.owncloud.com>**

You can also report vulnerabilities through our YesWeHack bug bounty program:
**<https://yeswehack.com/programs/owncloud-bug-bounty-program>**
10 changes: 10 additions & 0 deletions SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Support

For support with this project, please use the following channels:

- **Enterprise Support**: <https://owncloud.com/contact-us/>
- **Community discussions**: https://github.com/orgs/owncloud/discussions
- **Matrix Chat**: <https://app.element.io/#/room/#owncloud:matrix.org>
- **Documentation**: <https://doc.owncloud.com>

Please do not use GitHub issues for general support questions.
80 changes: 80 additions & 0 deletions agents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# AI Agent Guidelines for Android

This file provides context for AI coding agents (Claude Code, GitHub Copilot, Cursor, etc.) working in this repository.

## Repository Overview
- **Product family:** Mobile (Android)
- **Primary language(s):** Kotlin
- **Build system:** Gradle
- **Test framework:** JUnit (Android Unit Tests, Instrumented Tests)
- **CI system:** GitHub Actions

## Architecture & Key Paths
- `owncloudApp/` - Main Android application module
- `owncloudDomain/` - Domain layer (business logic, use cases)
- `owncloudData/` - Data layer (repositories, data sources)
- `owncloudComLibrary/` - Common library module
- `owncloudTestUtil/` - Test utilities
- `build.gradle` - Root Gradle build file
- `gradle/` - Gradle wrapper
- `config/` - Build configuration
- `fastlane/` - Fastlane deployment configuration
- `doc/` - Developer documentation
- `SETUP.md` - Development environment setup
- `CONTRIBUTING.md` - Contribution guidelines
- `CHANGELOG.md` - Release history

## Development Conventions
- **Branching:** master
- **Commit messages:** DCO sign-off required (`git commit -s`)
- **Code style:** Detekt (Kotlin linter), EditorConfig
- **PR process:** Open a PR against master. All CI checks must pass.

## Build & Test Commands
```bash
# Build
./gradlew assembleDebug

# Test (unit)
./gradlew testDebugUnitTest

# Test (instrumented)
./gradlew connectedDebugAndroidTest

# Lint
./gradlew detekt
```

## Important Constraints
- All code contributions must be compatible with the **GPL-2.0** license
- Do not introduce new **copyleft-licensed dependencies** (GPL, AGPL, LGPL, MPL) without explicit discussion in an issue first. This is especially important for repos migrating to Apache 2.0.
- Do not introduce new dependencies without discussion in an issue first
- Minimum SDK version is 24 (Android 7.0), target SDK is 35
- The app uses a clean architecture pattern with domain/data/presentation layers


## OSPO Policy Constraints

### GitHub Actions
- **Only** use actions owned by `owncloud`, created by GitHub (`actions/*`), verified on the GitHub Marketplace, or verified by the ownCloud Maintainers.
- Pin all actions to their full commit SHA (not tags): `uses: actions/checkout@<SHA> # vX.Y.Z`
- Never introduce actions from unverified third parties.

### Dependency Management
- Dependabot is configured for automated dependency updates.
- Review and merge Dependabot PRs as part of regular maintenance.
- Do not introduce new dependencies without discussion in an issue first.

### Git Workflow
- **Rebase policy**: Always rebase; never create merge commits. Use `git pull --rebase` and `git rebase` before pushing.
- **Signed commits**: All commits **must** be PGP/GPG signed (`git commit -S -s`).
- **DCO sign-off**: Every commit needs a `Signed-off-by` line (`git commit -s`).
- **Conventional Commits & Squash Merge**: Use the [Conventional Commits](https://www.conventionalcommits.org/) format where the repository enforces it. Many repos use squash merge, where the PR title becomes the commit message on the default branch — apply Conventional Commits format to PR titles as well. A reusable GitHub Actions workflow enforces this.

## Context for AI Agents
- Match existing code style
- Do not refactor unrelated code in the same PR
- Write tests for new functionality
- Keep PRs focused and atomic
- Follow the existing multi-module architecture (app/domain/data separation)
- Use Kotlin idioms consistent with the existing codebase
Loading