Skip to content

Commit a740fe8

Browse files
justin808claude
andcommitted
Merge branch 'master' into justin808/fix-claude-action-oidc
Merged comprehensive CLAUDE.md with master's version, keeping the detailed guidance while incorporating changelog formatting requirements from master. Also includes: - New /update-changelog slash command - Updated generator templates for better error messaging 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
2 parents 884889d + 3ba1ba4 commit a740fe8

File tree

4 files changed

+242
-13
lines changed

4 files changed

+242
-13
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
# Update Changelog
2+
3+
You are helping to add an entry to the CHANGELOG.md file for the Cypress on Rails project.
4+
5+
## Critical Requirements
6+
7+
1. **User-visible changes only**: Only add changelog entries for user-visible changes:
8+
9+
- New features
10+
- Bug fixes
11+
- Breaking changes
12+
- Deprecations
13+
- Performance improvements
14+
- Security fixes
15+
- Changes to public APIs or configuration options
16+
17+
2. **Do NOT add entries for**:
18+
- Linting fixes
19+
- Code formatting
20+
- Internal refactoring
21+
- Test updates
22+
- Documentation fixes (unless they fix incorrect docs about behavior)
23+
- CI/CD changes
24+
25+
## Formatting Requirements
26+
27+
### Entry Format
28+
29+
Each changelog entry MUST follow this exact format:
30+
31+
```markdown
32+
- **Bold description of change**. [PR 1818](https://github.com/shakacode/cypress-on-rails/pull/1818) by [username](https://github.com/username). Optional additional context or details.
33+
```
34+
35+
**Important formatting rules**:
36+
37+
- Start with a dash and space: `- `
38+
- Use **bold** for the main description
39+
- End the bold description with a period before the link
40+
- Always link to the PR: `[PR 1818](https://github.com/shakacode/cypress-on-rails/pull/1818)` - **NO hash symbol**
41+
- Always link to the author: `by [username](https://github.com/username)`
42+
- End with a period after the author link
43+
- Additional details can be added after the main entry, using proper indentation for multi-line entries
44+
45+
### Breaking Changes Format
46+
47+
For breaking changes, use this format:
48+
49+
```markdown
50+
- **Feature Name**: Description of the breaking change. See migration guide below. [PR 1818](https://github.com/shakacode/cypress-on-rails/pull/1818) by [username](https://github.com/username).
51+
52+
**Migration Guide:**
53+
54+
1. Step one
55+
2. Step two
56+
```
57+
58+
### Category Organization
59+
60+
Entries should be organized under these section headings. The project uses both standard and custom headings:
61+
62+
**Standard headings** (from keepachangelog.com) - use these for most changes:
63+
64+
- `#### Added` - New features
65+
- `#### Changed` - Changes to existing functionality
66+
- `#### Deprecated` - Deprecation notices
67+
- `#### Removed` - Removed features
68+
- `#### Fixed` - Bug fixes
69+
- `#### Security` - Security-related changes
70+
- `#### Improved` - Improvements to existing features
71+
72+
**Custom headings** (project-specific) - use sparingly when standard headings don't fit:
73+
74+
- `#### Breaking Changes` - Breaking changes with migration guides
75+
- `#### API Improvements` - API changes and improvements
76+
- `#### Developer Experience` - Developer workflow improvements
77+
- `#### Generator Improvements` - Generator-specific changes
78+
- `#### Performance` - Performance improvements
79+
80+
**Prefer standard headings.** Only use custom headings when the change needs more specific categorization.
81+
82+
**Only include section headings that have entries.**
83+
84+
### Version Management
85+
86+
After adding entries, use the rake task to manage version headers:
87+
88+
```bash
89+
bundle exec rake update_changelog
90+
```
91+
92+
This will:
93+
94+
- Add headers for the new version
95+
- Update version diff links at the bottom of the file
96+
97+
## Process
98+
99+
### For Regular Changelog Updates
100+
101+
1. **Determine the correct version tag to compare against**:
102+
103+
- First, check the tag dates: `git log --tags --simplify-by-decoration --pretty="format:%ai %d" | head -10`
104+
- Find the latest version tag and its date
105+
- Compare main branch date to the tag date
106+
- If the tag is NEWER than main, it means main needs to be updated to include the tag's commits
107+
- **CRITICAL**: Always use `git log TAG..BRANCH` to find commits that are in the tag but not in the branch, as the tag may be ahead
108+
109+
2. **Check commits and version boundaries**:
110+
111+
- Run `git log --oneline LAST_TAG..master` to see commits since the last release
112+
- Also check `git log --oneline master..LAST_TAG` to see if the tag is ahead of master
113+
- If the tag is ahead, entries in "Unreleased" section may actually belong to that tagged version
114+
- Identify which commits contain user-visible changes
115+
- Extract PR numbers and author information from commit messages
116+
- **Never ask the user for PR details** - get them from the git history
117+
118+
3. **Validate** that changes are user-visible (per the criteria above). If not user-visible, skip those commits.
119+
120+
4. **Read the current CHANGELOG.md** to understand the existing structure and formatting.
121+
122+
5. **Determine where entries should go**:
123+
124+
- If the latest version tag is NEWER than master branch, move entries from "Unreleased" to that version section
125+
- If master is ahead of the latest tag, add new entries to "Unreleased"
126+
- Always verify the version date in CHANGELOG.md matches the actual tag date
127+
128+
6. **Add or move entries** to the appropriate section under appropriate category headings.
129+
130+
- **CRITICAL**: When moving entries from "Unreleased" to a version section, merge them with existing entries under the same category heading
131+
- **NEVER create duplicate section headings** (e.g., don't create two "### Fixed" sections)
132+
- If the version section already has a category heading (e.g., "### Fixed"), add the moved entries to that existing section
133+
- Maintain the category order as defined above
134+
135+
7. **Verify formatting**:
136+
137+
- Bold description with period
138+
- Proper PR link (NO hash symbol)
139+
- Proper author link
140+
- Consistent with existing entries
141+
- File ends with a newline character
142+
143+
8. **Show the user** the added or moved entries and explain what was done.
144+
145+
### For Beta to Non-Beta Version Release
146+
147+
When releasing from beta to a stable version (e.g., v2.1.0-beta.3 → v2.1.0):
148+
149+
1. **Remove all beta version labels** from the changelog:
150+
151+
- Change `### [v2.1.0-beta.1]`, `### [v2.1.0-beta.2]`, etc. to a single `### [v2.1.0]` section
152+
- Combine all beta entries into the stable release section
153+
154+
2. **Consolidate duplicate entries**:
155+
156+
- If bug fixes or changes were made to features introduced in earlier betas, keep only the final state
157+
- Remove redundant changelog entries for fixes to beta features
158+
- Keep the most recent/accurate description of each change
159+
160+
3. **Update version diff links** using `bundle exec rake update_changelog`
161+
162+
### For New Beta Version Release
163+
164+
When creating a new beta version, ask the user which approach to take:
165+
166+
**Option 1: Process changes since last beta**
167+
168+
- Only add entries for commits since the previous beta version
169+
- Maintains detailed history of what changed in each beta
170+
171+
**Option 2: Collapse all prior betas into current beta**
172+
173+
- Combine all beta changelog entries into the new beta version
174+
- Removes previous beta version sections
175+
- Cleaner changelog with less version noise
176+
177+
After the user chooses, proceed with that approach.
178+
179+
## Examples
180+
181+
Run this command to see real formatting examples from the codebase:
182+
183+
```bash
184+
grep -A 3 "^#### " CHANGELOG.md | head -30
185+
```
186+
187+
### Good Entry Example
188+
189+
```markdown
190+
- **Support for Playwright**: Added support for Playwright browser automation framework alongside Cypress. The gem now works with both Cypress and Playwright test suites. [PR 123](https://github.com/shakacode/cypress-on-rails/pull/123) by [username](https://github.com/username).
191+
```
192+
193+
### Entry with Sub-bullets Example
194+
195+
```markdown
196+
- **Enhanced Factory Bot Integration**: Improved factory bot integration with new configuration options:
197+
- `factory_bot_fixture_path`: Configurable directory for factory bot fixtures (default: "spec/fixtures")
198+
- `enable_factory_bot_cleanup`: Automatically clean up factory bot data after each test (default: true) [PR 456](https://github.com/shakacode/cypress-on-rails/pull/456) by [username](https://github.com/username)
199+
```
200+
201+
### Breaking Change Example
202+
203+
```markdown
204+
- **Ruby Version Requirement**: Minimum Ruby version increased from 2.5 to 2.7 to align with Rails 7 requirements. Ruby 2.5 and 2.6 are no longer supported.
205+
206+
**Migration Guide:**
207+
208+
To upgrade to this version:
209+
210+
1. Update your Ruby version to 2.7 or higher:
211+
rbenv install 2.7.0
212+
213+
2. Update your Gemfile to specify the minimum Ruby version:
214+
ruby '>= 2.7.0'
215+
```
216+
217+
## Additional Notes
218+
219+
- Keep descriptions concise but informative
220+
- Focus on the "what" and "why", not the "how"
221+
- Use past tense for the description
222+
- Be consistent with existing formatting in the changelog
223+
- Always ensure the file ends with a trailing newline
224+
- See CHANGELOG.md for additional formatting examples

CLAUDE.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,22 +263,27 @@ bundle exec playwright test
263263
- Test improvements
264264
- Documentation updates (unless user-facing)
265265
- Development tooling changes
266+
- Linting, formatting, or code style changes
266267

267268
**Format:**
269+
- Use `[PR 123](https://github.com/shakacode/cypress-on-rails/pull/123) by [username](https://github.com/username)` format (no hash in PR number)
270+
- Use `/update-changelog` command for guided changelog updates with automatic formatting
271+
- Run `grep -A 3 "^#### " CHANGELOG.md | head -30` to see real formatting examples
272+
268273
```markdown
269274
## [Unreleased]
270275

271276
### Added
272-
- VCR use_cassette middleware for automatic cassette wrapping (#123)
277+
- VCR use_cassette middleware for automatic cassette wrapping [PR 123](https://github.com/shakacode/cypress-on-rails/pull/123) by [username](https://github.com/username)
273278

274279
### Changed
275-
- Improved error messages for missing command files (#124)
280+
- Improved error messages for missing command files [PR 124](https://github.com/shakacode/cypress-on-rails/pull/124) by [username](https://github.com/username)
276281

277282
### Deprecated
278-
- `cypress_folder` configuration option, use `install_folder` instead
283+
- `cypress_folder` configuration option, use `install_folder` instead [PR 125](https://github.com/shakacode/cypress-on-rails/pull/125) by [username](https://github.com/username)
279284

280285
### Fixed
281-
- Factory auto-reload not detecting file changes on Windows (#125)
286+
- Factory auto-reload not detecting file changes on Windows [PR 126](https://github.com/shakacode/cypress-on-rails/pull/126) by [username](https://github.com/username)
282287
```
283288

284289
## 🔒 Security Considerations

lib/generators/cypress_on_rails/templates/config/initializers/cypress_on_rails.rb.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ if defined?(CypressOnRails)
1515
<% unless options.experimental %># <% end %> cassette_library_dir: File.expand_path("#{__dir__}/../../<%= options.install_folder %>/fixtures/vcr_cassettes")
1616
<% unless options.experimental %># <% end %> }
1717
c.logger = Rails.logger
18-
18+
1919
# Server configuration for rake tasks (cypress:open, cypress:run, playwright:open, playwright:run)
2020
# c.server_host = 'localhost' # or use ENV['CYPRESS_RAILS_HOST']
21-
# c.server_port = 3001 # or use ENV['CYPRESS_RAILS_PORT']
21+
# c.server_port = 3001 # or use ENV['CYPRESS_RAILS_PORT']
2222
# c.transactional_server = true # Enable automatic transaction rollback between tests
23-
23+
2424
# Server lifecycle hooks for rake tasks
2525
# c.before_server_start = -> { DatabaseCleaner.clean_with(:truncation) }
2626
# c.after_server_start = -> { puts "Test server started on port #{CypressOnRails.configuration.server_port}" }

lib/generators/cypress_on_rails/templates/spec/e2e/e2e_helper.rb.erb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ factory = FactoryBot if defined?(FactoryBot)
2929
factory = FactoryGirl if defined?(FactoryGirl)
3030

3131
CypressOnRails::SmartFactoryWrapper.configure(
32-
always_reload: false,
33-
factory: factory,
34-
files: [
35-
Rails.root.join('spec', 'factories.rb'),
36-
Rails.root.join('spec', 'factories', '**', '*.rb')
37-
]
32+
always_reload: false,
33+
factory: factory,
34+
files: [
35+
Rails.root.join('spec', 'factories.rb'),
36+
Rails.root.join('spec', 'factories', '**', '*.rb')
37+
]
3838
)

0 commit comments

Comments
 (0)