You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0021669
Browse filesBrowse the repository at this point in the historyBrowse files
-`owncloudTestUtil/` — shared test factories, mocks, and extensions (test-only dependency)
25
+
-`build.gradle` — Root Gradle build file
26
+
-`gradle/` — Gradle wrapper and version catalog (`gradle/libs.versions.toml`)
27
+
-`config/` — Build configuration
28
+
-`fastlane/` — Fastlane deployment configuration
29
+
-`doc/` — Developer documentation
30
+
-`SETUP.md` — Development environment setup
31
+
-`CONTRIBUTING.md` — Contribution guidelines
32
+
-`CHANGELOG.md` — Release history
33
+
34
+
**Pattern:** MVVM + Clean Architecture. Data flows strictly in one direction:
35
+
36
+
```
37
+
Fragment → ViewModel → UseCase → Repository → DataSource → ownCloud server (WebDAV/Graph API)
38
+
```
39
+
40
+
UseCases extend `BaseUseCase<R>` or `BaseUseCaseWithResult<P, R>`. ViewModels call them via coroutines and expose `Flow` (preferred) or `LiveData` to the UI.
41
+
42
+
**DI:** Koin with module-per-layer structure under `owncloudApp/.../dependecyinjection/`:
-**PR process:** Rebase on the target branch before opening a PR. All CI checks must pass.
101
+
102
+
## Changelog
103
+
104
+
Every PR must include a file in `changelog/unreleased/` named after the PR number (e.g., `4936`):
37
105
38
-
# Test (unit)
39
-
./gradlew testDebugUnitTest
106
+
```
107
+
Enhancement: Short title under 80 chars
40
108
41
-
# Test (instrumented)
42
-
./gradlew connectedDebugAndroidTest
109
+
Description in present perfect passive tense.
43
110
44
-
# Lint
45
-
./gradlew detekt
111
+
https://github.com/owncloud/android/issues/<issue> ← optional, omit if there is no linked issue
112
+
https://github.com/owncloud/android/pull/<pr>
46
113
```
47
114
115
+
Types: `Bugfix`, `Change`, `Enhancement`, `Security`. Calens reads these files to auto-generate `CHANGELOG.md` after merge.
116
+
48
117
## Important Constraints
49
-
- All code contributions must be compatible with the **GPL-2.0** license
50
-
- 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.
51
-
- Do not introduce new dependencies without discussion in an issue first
52
-
- Minimum SDK version is 24 (Android 7.0), target SDK is 35
53
-
- The app uses a clean architecture pattern with domain/data/presentation layers
54
118
119
+
-**No translation PRs** — submit translations to Transifex only.
120
+
-**Detekt is zero-tolerance** (`maxIssues: 0`). Run `./gradlew detekt` locally before pushing.
121
+
-**License migration in progress** (GPL-2.0 → Apache 2.0): do not introduce new copyleft dependencies without discussion.
122
+
-**Security issues** go to security.owncloud.com, not GitHub issues.
123
+
- Do not introduce new dependencies without discussion in an issue first.
55
124
56
125
## OSPO Policy Constraints
57
126
@@ -65,12 +134,6 @@ This file provides context for AI coding agents (Claude Code, GitHub Copilot, Cu
65
134
- Review and merge Dependabot PRs as part of regular maintenance.
66
135
- Do not introduce new dependencies without discussion in an issue first.
67
136
68
-
### Git Workflow
69
-
-**Rebase policy**: Always rebase; never create merge commits. Use `git pull --rebase` and `git rebase` before pushing.
70
-
-**Signed commits**: All commits **must** be PGP/GPG signed (`git commit -S -s`).
71
-
-**DCO sign-off**: Every commit needs a `Signed-off-by` line (`git commit -s`).
72
-
-**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.
0 commit comments