Skip to content

Commit dbeb5cb

Browse files
authored
feat: Remove support for expired Dart and Flutter versions (#1052)
BREAKING CHANGE: This release removes support for Dart 3.2 - 3.9 and Flutter 3.16 - 3.37. These versions exceeded their 6-month support window after the next significant version release. The minimum required versions are now Dart 3.10 and Flutter 3.38.
1 parent f98e85c commit dbeb5cb

File tree

82 files changed

+4017
-3210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+4017
-3210
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
name: "\U0001F4E6 Version Conflict"
3+
about: Report a version conflict with Parse SDK dependencies
4+
title: '[Version Conflict] '
5+
labels: 'dependencies, version-conflict'
6+
assignees: ''
7+
---
8+
9+
## Version Conflict Description
10+
11+
<!-- Describe the version conflict you're experiencing -->
12+
13+
## Environment
14+
15+
**Parse SDK Version:**
16+
- Dart SDK: [e.g., 8.0.2]
17+
- Flutter SDK (if applicable): [e.g., 9.0.0]
18+
19+
**Framework Version:**
20+
- Dart: [e.g., 3.2.6]
21+
- Flutter (if applicable): [e.g., 3.16.9]
22+
23+
**Platform:**
24+
- [ ] Dart
25+
- [ ] Flutter (Web)
26+
- [ ] Flutter (Mobile - iOS)
27+
- [ ] Flutter (Mobile - Android)
28+
- [ ] Flutter (Desktop - macOS)
29+
- [ ] Flutter (Desktop - Windows)
30+
- [ ] Flutter (Desktop - Linux)
31+
32+
## Conflict Details
33+
34+
**Conflicting Package:**
35+
[e.g., dio, http, sembast]
36+
37+
**Required Version:**
38+
[e.g., Package X requires dio ^6.0.0 but Parse SDK requires ^5.0.0]
39+
40+
**Error Message:**
41+
```
42+
Paste the full error message from `dart pub get` or `flutter pub get`
43+
```
44+
45+
## Your pubspec.yaml
46+
47+
```yaml
48+
# Paste relevant sections of your pubspec.yaml
49+
dependencies:
50+
parse_server_sdk: ^8.0.0
51+
# ... other dependencies
52+
```
53+
54+
## Dependency Tree
55+
56+
```bash
57+
# Run: dart pub deps or flutter pub deps
58+
# Paste the output here
59+
```
60+
61+
## Steps Tried
62+
63+
<!-- Check all that apply -->
64+
65+
- [ ] Updated to latest Parse SDK version
66+
- [ ] Ran `dart pub outdated` / `flutter pub outdated`
67+
- [ ] Checked [MIGRATION_GUIDES.md](https://github.com/parse-community/Parse-SDK-Flutter/blob/master/MIGRATION_GUIDES.md)
68+
- [ ] Tried `dependency_overrides` (temporary workaround)
69+
- [ ] Searched existing issues
70+
71+
## Workaround
72+
73+
<!-- If you found a workaround, share it here to help others -->
74+
75+
## Additional Context
76+
77+
<!-- Add any other context, screenshots, or information -->

.github/dependabot.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 2
2+
updates:
3+
# Dart package dependencies
4+
- package-ecosystem: "pub"
5+
directory: "/packages/dart"
6+
schedule:
7+
interval: "daily"
8+
open-pull-requests-limit: 10
9+
labels:
10+
- "dart"
11+
commit-message:
12+
prefix: "feat"
13+
14+
# Flutter package dependencies
15+
- package-ecosystem: "pub"
16+
directory: "/packages/flutter"
17+
schedule:
18+
interval: "daily"
19+
open-pull-requests-limit: 10
20+
labels:
21+
- "flutter"
22+
commit-message:
23+
prefix: "feat"
24+
25+
# GitHub Actions
26+
- package-ecosystem: "github-actions"
27+
directory: "/"
28+
schedule:
29+
interval: "weekly"
30+
open-pull-requests-limit: 5
31+
labels:
32+
- "ci"
33+
commit-message:
34+
prefix: "refactor"

.github/workflows/ci.yml

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,21 @@ jobs:
1414
strategy:
1515
matrix:
1616
include:
17+
# Version Support Policy: 6 months after next significant version release
18+
# See VERSIONING_POLICY.md for full details
19+
#
1720
# Dart framework may contain breaking changes in minor version releases, not following semver.
1821
# The latest Dart framework (below) is tested on all architectures (Ubuntu, macOS, Windows).
19-
- name: Dart 3.5, Ubuntu
22+
- name: Dart 3.10, Ubuntu
2023
os: ubuntu-latest
21-
sdk: 3.5.3
22-
- name: Dart 3.5, macOS
24+
sdk: 3.10.0
25+
- name: Dart 3.10, macOS
2326
os: macos-latest
24-
sdk: 3.5.3
25-
- name: Dart 3.5, Windows
27+
sdk: 3.10.0
28+
- name: Dart 3.10, Windows
2629
os: windows-latest
27-
sdk: 3.5.3
28-
# Older Dart framework versions (below) are only tested with Ubuntu to reduce CI resource usage.
29-
- name: Dart 3.4
30-
os: ubuntu-latest
31-
sdk: 3.4.4
32-
- name: Dart 3.3
33-
os: ubuntu-latest
34-
sdk: 3.3.4
35-
- name: Dart 3.2
36-
os: ubuntu-latest
37-
sdk: 3.2.6
30+
sdk: 3.10.0
31+
# Beta channel helps identify breaking changes early
3832
- name: Dart beta
3933
os: ubuntu-latest
4034
sdk: beta
@@ -43,6 +37,12 @@ jobs:
4337
steps:
4438
- name: Checkout code
4539
uses: actions/checkout@v4
40+
- name: Configure git for line endings (Windows)
41+
if: matrix.os == 'windows-latest'
42+
run: |
43+
git config core.autocrlf false
44+
git rm --cached -r .
45+
git reset --hard
4646
- name: Setup dart
4747
uses: dart-lang/setup-dart@v1.5.0
4848
with:
@@ -79,27 +79,21 @@ jobs:
7979
strategy:
8080
matrix:
8181
include:
82+
# Version Support Policy: 6 months after next significant version release
83+
# See VERSIONING_POLICY.md for full details
84+
#
8285
# Flutter framework may contain breaking changes in minor version releases, not following semver.
8386
# The latest Flutter framework (below) is tested on all architectures (Ubuntu, macOS, Windows).
84-
- name: Flutter 3.24, Ubuntu
87+
- name: Flutter 3.38, Ubuntu
8588
os: ubuntu-latest
86-
sdk: 3.24.3
87-
- name: Flutter 3.24, macOS
89+
sdk: 3.38.1
90+
- name: Flutter 3.38, macOS
8891
os: macos-latest
89-
sdk: 3.24.3
90-
- name: Flutter 3.24, Windows
92+
sdk: 3.38.1
93+
- name: Flutter 3.38, Windows
9194
os: windows-latest
92-
sdk: 3.24.3
93-
# Older Flutter framework versions (below) are only tested with Ubuntu to reduce CI resource usage.
94-
- name: Flutter 3.22
95-
os: ubuntu-latest
96-
sdk: 3.22.3
97-
- name: Flutter 3.19
98-
os: ubuntu-latest
99-
sdk: 3.19.6
100-
- name: Flutter 3.16
101-
os: ubuntu-latest
102-
sdk: 3.16.9
95+
sdk: 3.38.1
96+
# Beta channel helps identify breaking changes early
10397
- name: Flutter beta
10498
os: ubuntu-latest
10599
sdk: beta
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
name: dependency-audit
2+
3+
on:
4+
schedule:
5+
# Run on the first day of every month at 9:00 AM UTC
6+
- cron: '0 9 1 * *'
7+
workflow_dispatch: # Allow manual triggering
8+
9+
permissions:
10+
contents: read
11+
issues: write
12+
13+
jobs:
14+
audit-dart:
15+
name: Audit Dart Package Dependencies
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v4
20+
21+
- name: Setup Dart
22+
uses: dart-lang/setup-dart@v1
23+
with:
24+
sdk: stable
25+
26+
- name: Get dependencies
27+
working-directory: packages/dart
28+
run: dart pub get
29+
30+
- name: Check for outdated dependencies
31+
id: outdated
32+
working-directory: packages/dart
33+
run: |
34+
echo "## Dart Package - Outdated Dependencies" >> $GITHUB_STEP_SUMMARY
35+
dart pub outdated --mode=outdated || true
36+
dart pub outdated --mode=outdated >> $GITHUB_STEP_SUMMARY || true
37+
38+
- name: Security audit
39+
id: audit
40+
working-directory: packages/dart
41+
run: |
42+
echo "## Dart Package - Security Audit" >> $GITHUB_STEP_SUMMARY
43+
dart pub audit || true
44+
dart pub audit >> $GITHUB_STEP_SUMMARY || true
45+
46+
audit-flutter:
47+
name: Audit Flutter Package Dependencies
48+
runs-on: ubuntu-latest
49+
steps:
50+
- name: Checkout repository
51+
uses: actions/checkout@v4
52+
53+
- name: Setup Flutter
54+
uses: subosito/flutter-action@v2
55+
with:
56+
channel: stable
57+
58+
- name: Get dependencies
59+
working-directory: packages/flutter
60+
run: flutter pub get
61+
62+
- name: Check for outdated dependencies
63+
id: outdated
64+
working-directory: packages/flutter
65+
run: |
66+
echo "## Flutter Package - Outdated Dependencies" >> $GITHUB_STEP_SUMMARY
67+
flutter pub outdated --mode=outdated || true
68+
flutter pub outdated --mode=outdated >> $GITHUB_STEP_SUMMARY || true
69+
70+
- name: Security audit
71+
id: audit
72+
working-directory: packages/flutter
73+
run: |
74+
echo "## Flutter Package - Security Audit" >> $GITHUB_STEP_SUMMARY
75+
dart pub audit || true
76+
dart pub audit >> $GITHUB_STEP_SUMMARY || true
77+
78+
create-issue:
79+
name: Create Issue if Security Vulnerabilities Found
80+
needs: [audit-dart, audit-flutter]
81+
runs-on: ubuntu-latest
82+
if: failure()
83+
steps:
84+
- name: Create issue for security vulnerabilities
85+
uses: actions/github-script@v7
86+
with:
87+
script: |
88+
const title = '[Security] Dependency vulnerabilities detected';
89+
const body = `## Security Vulnerabilities Detected
90+
91+
The monthly dependency audit has detected security vulnerabilities in our dependencies.
92+
93+
### Action Required
94+
1. Review the [workflow run](${context.payload.repository.html_url}/actions/runs/${context.runId})
95+
2. Update affected dependencies
96+
3. Test thoroughly
97+
4. Create a PR with security fixes
98+
99+
### Resources
100+
- [VERSIONING_POLICY.md](${context.payload.repository.html_url}/blob/master/VERSIONING_POLICY.md)
101+
- [Dart Security Best Practices](https://dart.dev/guides/libraries/secure)
102+
103+
---
104+
**Auto-generated by dependency-audit workflow**
105+
`;
106+
107+
// Check if similar issue exists
108+
const issues = await github.rest.issues.listForRepo({
109+
owner: context.repo.owner,
110+
repo: context.repo.repo,
111+
state: 'open',
112+
labels: 'security,dependencies'
113+
});
114+
115+
const existingIssue = issues.data.find(issue =>
116+
issue.title.includes('[Security] Dependency vulnerabilities')
117+
);
118+
119+
if (!existingIssue) {
120+
await github.rest.issues.create({
121+
owner: context.repo.owner,
122+
repo: context.repo.repo,
123+
title: title,
124+
body: body,
125+
labels: ['security', 'dependencies', 'high-priority']
126+
});
127+
} else {
128+
await github.rest.issues.createComment({
129+
owner: context.repo.owner,
130+
repo: context.repo.repo,
131+
issue_number: existingIssue.number,
132+
body: `New vulnerabilities detected in [workflow run](${context.payload.repository.html_url}/actions/runs/${context.runId})`
133+
});
134+
}

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ analysis_benchmark.json
5050
.flutter-plugins
5151
.flutter-plugins-dependencies
5252
**/generated_plugin_registrant.dart
53+
**/generated_plugin_registrant.cc
54+
**/generated_plugin_registrant.h
55+
**/generated_plugins.cmake
5356
.packages
5457
.pub-cache/
5558
.pub/
@@ -123,3 +126,6 @@ app.*.symbols
123126
!/dev/ci/**/Gemfile.lock
124127

125128
/node_modules
129+
130+
# AI agents
131+
/.claude

CONTRIBUTING.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ We actively welcome your pull requests. When we get one, we'll run some Parse-sp
1010
2. Add unit tests for any new code you add.
1111
3. If you've changed APIs, update the documentation.
1212
4. Ensure the test suite passes.
13+
5. Follow the commit message format for automated versioning (see below).
14+
6. For dependency updates, see the [Dependency Management](#dependency-management) section.
15+
16+
## Dependency Management
17+
18+
The Parse SDK follows a structured approach to dependency management. See [VERSIONING_POLICY.md](VERSIONING_POLICY.md) for full details.
19+
20+
## Framework Support Policy
21+
22+
The Parse SDK supports Dart and Flutter versions for 6 months after the next significant version release. When contributing:
23+
24+
- Ensure compatibility with all supported versions (see README compatibility tables)
25+
- Don't use features only available in the latest version without version checks
26+
- CI will test your PR against all supported versions
1327

1428
## Code of Conduct
1529

0 commit comments

Comments
 (0)