opaque_id 1.3.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +136 -0
- data/README.md +62 -70
- data/docs/_config.yml +8 -17
- data/docs/algorithms.md +7 -4
- data/docs/alphabets.md +3 -0
- data/docs/api-reference.md +3 -0
- data/docs/assets/css/custom.scss +6 -53
- data/docs/configuration.md +3 -0
- data/docs/development.md +3 -0
- data/docs/getting-started.md +3 -0
- data/docs/index.md +6 -3
- data/docs/installation.md +3 -0
- data/docs/performance.md +6 -3
- data/docs/security.md +3 -0
- data/docs/usage.md +18 -15
- data/docs/use-cases.md +3 -0
- data/lib/opaque_id/version.rb +1 -1
- data/lib/opaque_id.rb +4 -1
- data/release-please-config.json +2 -1
- metadata +1 -9
- data/tasks/0001-prd-opaque-id-gem.md +0 -202
- data/tasks/0002-prd-publishing-release-automation.md +0 -206
- data/tasks/0003-prd-documentation-site.md +0 -191
- data/tasks/references/opaque_gem_requirements.md +0 -482
- data/tasks/references/original_identifiable_concern_and_nanoid.md +0 -110
- data/tasks/tasks-0001-prd-opaque-id-gem.md +0 -109
- data/tasks/tasks-0002-prd-publishing-release-automation.md +0 -177
- data/tasks/tasks-0003-prd-documentation-site.md +0 -84
@@ -1,177 +0,0 @@
|
|
1
|
-
# Task List: Publishing & Release Automation Implementation (Release Please Approach)
|
2
|
-
|
3
|
-
## Summary
|
4
|
-
|
5
|
-
Implement fully automated publishing and release system for OpaqueId gem using **Release Please** (Google's tool), **Bundler's release tasks**, and **RubyGems trusted publishing** with `rubygems/release-gem` action.
|
6
|
-
|
7
|
-
## Completed Tasks
|
8
|
-
|
9
|
-
- [x] 0.1 Create comprehensive PRD for publishing and release automation
|
10
|
-
- [x] 0.2 Research Ruby ecosystem equivalents to Changesets
|
11
|
-
- [x] 0.3 Define technical requirements and dependencies
|
12
|
-
- [x] 0.4 Update approach to use Release Please (Google's tool)
|
13
|
-
- [x] 0.5 Implement complete automated publishing and release system
|
14
|
-
|
15
|
-
## Pending Tasks
|
16
|
-
|
17
|
-
### Phase 1: Core Release Please Setup (Priority: High)
|
18
|
-
|
19
|
-
#### 1.0 Set Up Release Please Configuration
|
20
|
-
|
21
|
-
- [x] 1.1 Create `release-please-config.json` configuration file
|
22
|
-
- [x] 1.2 Configure Release Please for Ruby gem with `release-type: ruby`
|
23
|
-
- [x] 1.3 Set up conventional commits parsing for version bumping
|
24
|
-
- [x] 1.4 Configure changelog generation from conventional commits
|
25
|
-
- [x] 1.5 Test Release Please configuration with sample commits
|
26
|
-
|
27
|
-
#### 2.0 Create Release Please Workflow
|
28
|
-
|
29
|
-
- [x] 2.1 Create `.github/workflows/release-please.yml` workflow
|
30
|
-
- [x] 2.2 Configure workflow to run on push to main branch
|
31
|
-
- [x] 2.3 Set up permissions for creating/updating release PRs
|
32
|
-
- [x] 2.4 Configure workflow to use `googleapis/release-please-action@v4`
|
33
|
-
- [x] 2.5 Test workflow with sample conventional commits
|
34
|
-
|
35
|
-
#### 3.0 Set Up RubyGems Trusted Publishing
|
36
|
-
|
37
|
-
- [ ] 3.1 Configure trusted publishing on RubyGems.org (UI step) - **MANUAL STEP REQUIRED**
|
38
|
-
- [x] 3.2 Create `.github/workflows/publish.yml` workflow
|
39
|
-
- [x] 3.3 Configure workflow to trigger on GitHub Release published
|
40
|
-
- [x] 3.4 Set up OIDC permissions (`id-token: write`, `contents: write`)
|
41
|
-
- [x] 3.5 Configure `rubygems/release-gem@v1` action for publishing
|
42
|
-
|
43
|
-
### Phase 2: Quality Gates & Security (Priority: High)
|
44
|
-
|
45
|
-
#### 4.0 Implement Quality Gates
|
46
|
-
|
47
|
-
- [x] 4.1 Add test execution to release-please workflow (via enhanced main.yml)
|
48
|
-
- [x] 4.2 Add RuboCop execution to release-please workflow (via enhanced main.yml)
|
49
|
-
- [x] 4.3 Add bundle audit for security scanning (via enhanced main.yml)
|
50
|
-
- [x] 4.4 Configure workflow to fail on quality gate failures
|
51
|
-
- [x] 4.5 Test quality gates with intentional failures
|
52
|
-
|
53
|
-
#### 5.0 Configure Dependabot
|
54
|
-
|
55
|
-
- [x] 5.1 Create `.github/dependabot.yml` configuration file
|
56
|
-
- [x] 5.2 Configure weekly dependency updates (Monday 9 AM)
|
57
|
-
- [x] 5.3 Set up security update prioritization
|
58
|
-
- [x] 5.4 Configure update strategy and labels
|
59
|
-
- [x] 5.5 Test dependabot with sample dependency updates
|
60
|
-
|
61
|
-
### Phase 3: Documentation & Testing (Priority: Medium)
|
62
|
-
|
63
|
-
#### 6.0 Documentation and Testing
|
64
|
-
|
65
|
-
- [x] 6.1 Document the complete Release Please workflow (in PRD and task files)
|
66
|
-
- [x] 6.2 Create troubleshooting guide for release failures (in PRD)
|
67
|
-
- [x] 6.3 Test complete release workflow end-to-end (local testing completed)
|
68
|
-
- [x] 6.4 Create release process checklist (in PRD)
|
69
|
-
- [x] 6.5 Update README with release automation information (comprehensive documentation)
|
70
|
-
|
71
|
-
#### 7.0 Monitoring and Maintenance
|
72
|
-
|
73
|
-
- [x] 7.1 Set up release monitoring and alerts (via GitHub Actions)
|
74
|
-
- [ ] 7.2 Create release metrics dashboard (optional - not needed for MVP)
|
75
|
-
- [x] 7.3 Implement release health checks (via CI workflows)
|
76
|
-
- [x] 7.4 Set up automated dependency security scanning (via Dependabot and bundle-audit)
|
77
|
-
- [x] 7.5 Create maintenance procedures for release system (documented in PRD)
|
78
|
-
|
79
|
-
## Technical Dependencies
|
80
|
-
|
81
|
-
### Required Tools
|
82
|
-
|
83
|
-
- **Release Please**: Google's tool for PR-based versioning and changelog generation
|
84
|
-
- **Bundler's release tasks**: Built-in rake tasks (already present from `bundle gem`)
|
85
|
-
- **bundle-audit**: Security scanning
|
86
|
-
- **rubygems/release-gem**: GitHub Action for RubyGems publishing
|
87
|
-
|
88
|
-
### Configuration Files
|
89
|
-
|
90
|
-
- `release-please-config.json`: Release Please configuration
|
91
|
-
- `.github/dependabot.yml`: Dependency update configuration
|
92
|
-
- `.github/workflows/release-please.yml`: Release PR workflow
|
93
|
-
- `.github/workflows/publish.yml`: Publishing workflow
|
94
|
-
|
95
|
-
### RubyGems Configuration
|
96
|
-
|
97
|
-
- Trusted publishing setup on RubyGems.org
|
98
|
-
- GitHub OIDC configuration
|
99
|
-
- MFA requirement enforcement
|
100
|
-
|
101
|
-
## Workflow Overview
|
102
|
-
|
103
|
-
### Release Please Workflow (release-please.yml)
|
104
|
-
|
105
|
-
```yaml
|
106
|
-
name: release-please
|
107
|
-
on:
|
108
|
-
push:
|
109
|
-
branches: [main]
|
110
|
-
permissions:
|
111
|
-
contents: write
|
112
|
-
pull-requests: write
|
113
|
-
jobs:
|
114
|
-
release:
|
115
|
-
runs-on: ubuntu-latest
|
116
|
-
steps:
|
117
|
-
- uses: googleapis/release-please-action@v4
|
118
|
-
with:
|
119
|
-
release-type: ruby
|
120
|
-
```
|
121
|
-
|
122
|
-
### Publishing Workflow (publish.yml)
|
123
|
-
|
124
|
-
```yaml
|
125
|
-
name: publish-gem
|
126
|
-
on:
|
127
|
-
release:
|
128
|
-
types: [published]
|
129
|
-
permissions:
|
130
|
-
id-token: write
|
131
|
-
contents: write
|
132
|
-
jobs:
|
133
|
-
push:
|
134
|
-
name: Push gem to RubyGems.org
|
135
|
-
runs-on: ubuntu-latest
|
136
|
-
steps:
|
137
|
-
- uses: actions/checkout@v4
|
138
|
-
with:
|
139
|
-
persist-credentials: false
|
140
|
-
- uses: ruby/setup-ruby@v1
|
141
|
-
with:
|
142
|
-
ruby-version: ruby
|
143
|
-
bundler-cache: true
|
144
|
-
- uses: rubygems/release-gem@v1
|
145
|
-
```
|
146
|
-
|
147
|
-
## Success Criteria
|
148
|
-
|
149
|
-
- [x] Release Please creates release PRs automatically from conventional commits
|
150
|
-
- [x] Version file (`lib/opaque_id/version.rb`) is automatically updated
|
151
|
-
- [x] Changelog is automatically generated from conventional commits
|
152
|
-
- [x] Merging release PR creates GitHub Release and publishes to RubyGems.org
|
153
|
-
- [x] All quality gates pass before release
|
154
|
-
- [x] Dependencies are automatically updated weekly
|
155
|
-
- [x] No manual intervention required for releases (except RubyGems trusted publishing setup)
|
156
|
-
- [x] RubyGems trusted publishing works without API keys
|
157
|
-
|
158
|
-
## Relevant Files
|
159
|
-
|
160
|
-
- `release-please-config.json` - Release Please configuration
|
161
|
-
- `.github/workflows/release-please.yml` - Release PR workflow
|
162
|
-
- `.github/workflows/publish.yml` - Publishing workflow
|
163
|
-
- `.github/dependabot.yml` - Dependency update configuration
|
164
|
-
- `lib/opaque_id/version.rb` - Version file for automatic updates
|
165
|
-
- `CHANGELOG.md` - Auto-generated changelog
|
166
|
-
- `opaque_id.gemspec` - Gem specification
|
167
|
-
- `Rakefile` - Rake tasks for building and releasing
|
168
|
-
|
169
|
-
## Notes
|
170
|
-
|
171
|
-
- This approach uses the widely-adopted Ruby ecosystem standard
|
172
|
-
- Release Please provides the same ergonomics as Changesets
|
173
|
-
- Uses RubyGems trusted publishing for enhanced security
|
174
|
-
- Fully automated process with PR-based releases
|
175
|
-
- Based on conventional commits specification
|
176
|
-
- Compatible with existing gem structure and dependencies
|
177
|
-
- No need for commitlint or pre-commit hooks (Release Please handles conventional commits)
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# Task List: OpaqueId Documentation Site
|
2
|
-
|
3
|
-
## Relevant Files
|
4
|
-
|
5
|
-
- `docs/_config.yml` - Jekyll configuration file for the documentation site
|
6
|
-
- `docs/Gemfile` - Ruby dependencies for Jekyll and Just the Docs theme
|
7
|
-
- `docs/index.md` - Homepage of the documentation site
|
8
|
-
- `docs/getting-started.md` - Quick start guide for developers
|
9
|
-
- `docs/installation.md` - Detailed installation instructions
|
10
|
-
- `docs/usage.md` - Usage examples and integration guides
|
11
|
-
- `docs/configuration.md` - Configuration options and examples
|
12
|
-
- `docs/alphabets.md` - Built-in alphabets and custom alphabet guide
|
13
|
-
- `docs/algorithms.md` - Technical details about algorithms
|
14
|
-
- `docs/performance.md` - Performance benchmarks and optimization
|
15
|
-
- `docs/security.md` - Security considerations and best practices
|
16
|
-
- `docs/use-cases.md` - Real-world examples and applications
|
17
|
-
- `docs/development.md` - Contributing guidelines and development setup
|
18
|
-
- `docs/api-reference.md` - Complete API documentation
|
19
|
-
- `docs/assets/images/` - Directory for documentation images and assets
|
20
|
-
- `.github/workflows/docs.yml` - GitHub Actions workflow for documentation deployment
|
21
|
-
- `README.md` - Source content for documentation migration
|
22
|
-
|
23
|
-
### Notes
|
24
|
-
|
25
|
-
- The documentation site will be completely separate from the main gem codebase
|
26
|
-
- Jekyll uses Markdown files with YAML front matter for page configuration
|
27
|
-
- GitHub Pages will automatically build and deploy the Jekyll site
|
28
|
-
- All content will be manually migrated from the existing README.md
|
29
|
-
|
30
|
-
## Tasks
|
31
|
-
|
32
|
-
- [x] 1.0 Set up Jekyll site structure and configuration
|
33
|
-
|
34
|
-
- [x] 1.1 Create `/docs` directory structure
|
35
|
-
- [x] 1.2 Initialize Jekyll site with `jekyll new docs --force`
|
36
|
-
- [x] 1.3 Configure `_config.yml` for Just the Docs theme and GitHub Pages
|
37
|
-
- [x] 1.4 Set up `Gemfile` with just-the-docs gem and GitHub Pages plugins
|
38
|
-
- [x] 1.5 Configure site metadata (title, description, author, URL)
|
39
|
-
- [x] 1.6 Set up proper permalinks and URL structure
|
40
|
-
- [x] 1.7 Configure search functionality and navigation settings
|
41
|
-
|
42
|
-
- [x] 2.0 Create GitHub Actions workflow for documentation deployment
|
43
|
-
|
44
|
-
- [x] 2.1 Create `.github/workflows/docs.yml` workflow file
|
45
|
-
- [x] 2.2 Configure workflow to trigger on pushes to main branch
|
46
|
-
- [x] 2.3 Set up Jekyll build process with proper Ruby version
|
47
|
-
- [x] 2.4 Configure GitHub Pages deployment with proper permissions
|
48
|
-
- [x] 2.5 Add error handling and build status notifications
|
49
|
-
- [x] 2.6 Test workflow with initial deployment
|
50
|
-
|
51
|
-
- [x] 3.0 Migrate and organize content from README into documentation pages
|
52
|
-
|
53
|
-
- [x] 3.1 Create homepage (`index.md`) with overview, badges, and introduction
|
54
|
-
- [x] 3.2 Extract and create getting-started.md with quick start guide
|
55
|
-
- [x] 3.3 Migrate installation content to installation.md with all methods
|
56
|
-
- [x] 3.4 Create usage.md with standalone and ActiveRecord examples
|
57
|
-
- [x] 3.5 Extract configuration options to configuration.md with examples
|
58
|
-
- [x] 3.6 Create alphabets.md with built-in alphabets and custom guide
|
59
|
-
- [x] 3.7 Migrate algorithm details to algorithms.md with technical explanations
|
60
|
-
- [x] 3.8 Create performance.md with benchmarks and optimization tips
|
61
|
-
- [x] 3.9 Extract security content to security.md with best practices
|
62
|
-
- [x] 3.10 Create use-cases.md with real-world examples and applications
|
63
|
-
- [x] 3.11 Migrate development content to development.md with setup instructions
|
64
|
-
- [x] 3.12 Create api-reference.md with complete method documentation
|
65
|
-
|
66
|
-
- [x] 4.0 Implement navigation structure and cross-references
|
67
|
-
|
68
|
-
- [x] 4.1 Configure navigation in `_config.yml` with proper page ordering
|
69
|
-
- [x] 4.2 Add proper YAML front matter to all pages with titles and descriptions
|
70
|
-
- [x] 4.3 Create cross-references between related pages using markdown links
|
71
|
-
- [x] 4.4 Add table of contents to longer pages using Just the Docs features
|
72
|
-
- [x] 4.5 Implement proper heading hierarchy for consistent navigation
|
73
|
-
- [x] 4.6 Add breadcrumb navigation where appropriate
|
74
|
-
- [x] 4.7 Test navigation flow and ensure all links work correctly
|
75
|
-
|
76
|
-
- [x] 5.0 Configure Just the Docs theme and optimize for GitHub Pages
|
77
|
-
- [x] 5.1 Customize theme colors and branding to match OpaqueId
|
78
|
-
- [x] 5.2 Configure code syntax highlighting for Ruby examples
|
79
|
-
- [x] 5.3 Set up responsive design and mobile optimization
|
80
|
-
- [x] 5.4 Add SEO meta tags and Open Graph properties
|
81
|
-
- [x] 5.5 Configure sitemap and RSS feed generation
|
82
|
-
- [x] 5.6 Optimize page loading speed and performance
|
83
|
-
- [x] 5.7 Test site functionality across different browsers and devices
|
84
|
-
- [x] 5.8 Validate HTML and accessibility compliance
|