Skip to content

Commit ed5fc7b

Browse files
PHKennyclaude
andauthored
Development (#117)
Add automated changelog generation to publish workflow using requarks/changelog-action. Releases will now include structured changelogs categorized by type (features, bugs, docs, maintenance). - Add release.yaml config with changelog categories and exclusions - Add create-release job to publish workflow - Exclude chore and style commits from changelogs - Update debug route in example app Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2 parents 2d637e5 + 207496f commit ed5fc7b

5 files changed

Lines changed: 67 additions & 3 deletions

File tree

.github/release.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
changelog:
2+
exclude:
3+
labels:
4+
- skip-changelog
5+
- duplicate
6+
authors:
7+
- dependabot
8+
categories:
9+
- title: 🚀 New Features
10+
labels:
11+
- feat
12+
- enh
13+
- title: 🐛 Bug Fixes
14+
labels:
15+
- bug
16+
- fix
17+
- title: 📖 Documentation
18+
labels:
19+
- docs
20+
- title: 🧹 Maintenance
21+
labels:
22+
- perf
23+
- deps
24+
- title: Other Changes
25+
labels:
26+
- "*"

.github/workflows/publish.yaml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,42 @@ jobs:
7979
git push origin $NEW_TAG
8080
git push --delete origin $TAG_NAME
8181
82+
83+
create-release:
84+
runs-on: ubuntu-latest
85+
needs: deploy-dart
86+
if: success()
87+
88+
steps:
89+
- name: Checkout
90+
uses: actions/checkout@v6
91+
with:
92+
fetch-depth: 0
93+
94+
- name: Get previous tag
95+
id: previousTag
96+
run: |
97+
name=$(git --no-pager tag --sort=creatordate --merged ${{ github.ref_name }} | tail -2 | head -1)
98+
echo "previousTag=$name" >> $GITHUB_OUTPUT
99+
100+
- name: Generate Changelog
101+
id: changelog
102+
uses: requarks/changelog-action@v1
103+
with:
104+
token: ${{ github.token }}
105+
fromTag: ${{ github.ref_name }}
106+
toTag: ${{ steps.previousTag.outputs.previousTag }}
107+
writeToFile: false
108+
excludeTypes: chore,style
109+
82110
- name: Create GitHub Release
83-
if: success()
84111
uses: softprops/action-gh-release@v1
85112
with:
86113
tag_name: ${{ github.ref_name }}
87114
name: Release ${{ github.ref_name }}
115+
body: ${{ steps.changelog.outputs.changes }}
88116
draft: false
89117
prerelease: false
90-
generate_release_notes: true
91118
env:
92119
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
93120

example/lib/router.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ final goRoutes = [
145145
];
146146

147147
final router = GoRouter(
148-
initialLocation: kDebugMode ? '/inputs/text' : '/',
148+
initialLocation: kDebugMode ? '/map/layer' : '/',
149149
errorPageBuilder: (context, state) => customTransitionBuilder(context, state, const NotFoundView()),
150150
routes: goRoutes,
151151
);

example/lib/views/map/src/layer.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class _MapLayerViewState extends State<MapLayerView> with TickerProviderStateMix
111111
layer: selectedLayer,
112112
controller: _controller,
113113
),
114+
114115
// MarkerLayer(
115116
// markers: [
116117
// Marker(

lib/src/inputs/src/general/password_input.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ class ThemedPasswordInput extends StatefulWidget {
4949
/// The progress indicator will fill up to 25% for each requirement met and for each level reached.
5050
final bool showLevels;
5151

52+
/// [autofillHints] is the list of autofill hints for the input.
53+
///
54+
/// By default uses [AutofillHints.newPassword] and [AutofillHints.password] to allow the browser
55+
/// to suggest strong passwords and to recognize the field as a password input
56+
/// for autofill purposes. However, ideally you should use [AutofillHints.newPassword] for password
57+
/// creation fields and [AutofillHints.password] for password update fields
58+
final List<String> autofillHints;
59+
5260
/// [ThemedPasswordInput] is the constructor of the input.
5361
/// Simplifies (I hope so) the creation of an input using the standard format of Layrz.
5462
const ThemedPasswordInput({
@@ -68,6 +76,7 @@ class ThemedPasswordInput extends StatefulWidget {
6876
this.focusNode,
6977
this.controller,
7078
this.showLevels = true,
79+
this.autofillHints = const [AutofillHints.newPassword, AutofillHints.password],
7180
}) : assert(
7281
(label == null && labelText != null) || (label != null && labelText == null),
7382
'You must provide either a labelText or a label, but not both.',
@@ -167,6 +176,7 @@ class _ThemedPasswordInputState extends State<ThemedPasswordInput> {
167176
padding: widget.padding,
168177
isRequired: widget.isRequired,
169178
obscureText: !_showPassword,
179+
autofillHints: widget.autofillHints,
170180
suffixWidget: Row(
171181
mainAxisAlignment: .center,
172182
crossAxisAlignment: .center,

0 commit comments

Comments
 (0)