Skip to content

Commit 578b4cc

Browse files
authored
Merge branch 'main' into dependabot/bundler/aws-sdk-s3-1.197.0
2 parents 38336cd + a10f5aa commit 578b4cc

File tree

298 files changed

+23363
-1098
lines changed

Some content is hidden

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

298 files changed

+23363
-1098
lines changed

.github/copilot-instructions.md

Lines changed: 251 additions & 1 deletion
Large diffs are not rendered by default.

.github/pull_request_template.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## Summary
2+
3+
Describe the change and the motivation.
4+
5+
## Checklist
6+
7+
- [ ] Tests added/updated and passing (`bin/ci`).
8+
- [ ] Lint and security checks (`rubocop`, `brakeman`, `bundler-audit`).
9+
- [ ] Documentation updated under `docs/` describing new/changed functionality.
10+
- [ ] Mermaid diagrams (`docs/*.mmd`) updated to reflect changes.
11+
- [ ] Rendered PNGs regenerated with `bin/render_diagrams` and committed.
12+
- [ ] For DB changes, included any needed backfills/dedupes and noted risks.
13+
14+
## Screenshots / Diagrams
15+
16+
If applicable, include screenshots or link to updated diagrams.
17+
18+
## Notes
19+
20+
Anything reviewers should be aware of (migration order, flags, feature toggles).
21+

.github/workflows/diagrams.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Diagrams Check
2+
3+
on:
4+
pull_request:
5+
branches: [ "**" ]
6+
7+
jobs:
8+
render-and-verify:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout
12+
uses: actions/checkout@v4
13+
14+
- name: Set up Node
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version: '20'
18+
19+
- name: Render Mermaid diagrams
20+
run: |
21+
chmod +x bin/render_diagrams || true
22+
./bin/render_diagrams || true
23+
24+
- name: Verify rendered PNGs are up to date
25+
run: |
26+
CHANGED=$(git status --porcelain -- docs/diagrams/exports/png/*.png docs/diagrams/exports/svg/*.svg | wc -l)
27+
if [ "$CHANGED" -gt 0 ]; then
28+
echo "Diagram exports are out of date. Please run bin/render_diagrams and commit the updated files." >&2
29+
echo "Changed files:" >&2
30+
git status --porcelain -- docs/diagrams/exports/png/*.png docs/diagrams/exports/svg/*.svg >&2 || true
31+
exit 1
32+
fi
33+
shell: bash
34+

.github/workflows/i18n-health.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: i18n Translation Health Report
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
pull_request:
9+
branches:
10+
- main
11+
- dev
12+
13+
jobs:
14+
i18n-health:
15+
runs-on: ubuntu-latest
16+
env:
17+
# Ensure dev/test gems (incl. i18n-tasks) are installed
18+
BUNDLE_WITHOUT: ""
19+
BUNDLE_WITH: "development:test"
20+
if: github.event_name == 'push' || github.event_name == 'pull_request'
21+
steps:
22+
- name: Checkout code
23+
uses: actions/checkout@v4
24+
- name: Set up Ruby
25+
uses: ruby/setup-ruby@v1
26+
env:
27+
# Ensure bundler installs dev/test groups during caching step
28+
BUNDLE_WITHOUT: ""
29+
BUNDLE_WITH: "development:test"
30+
with:
31+
ruby-version: '3.4.4'
32+
bundler-cache: true
33+
- name: Verify i18n-tasks
34+
run: bundle exec i18n-tasks --version
35+
- name: Normalize locale files
36+
run: bin/i18n normalize
37+
- name: Run i18n checks
38+
run: bin/i18n check
39+
- name: Upload i18n health report
40+
if: always()
41+
run: bin/i18n health > i18n-health.txt
42+
continue-on-error: true
43+
- name: Archive i18n health report
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: i18n-health-report
47+
path: i18n-health.txt
48+
continue-on-error: true

.github/workflows/rubyonrails.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ jobs:
8787
echo "Waiting for Elasticsearch to be healthy..."
8888
curl -s "http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=60s" || (echo "Elasticsearch not healthy" && exit 1)
8989
90+
9091
- name: Run RSpec
9192
if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success'
9293
env:
@@ -96,6 +97,14 @@ jobs:
9697
bundle exec rspec
9798
continue-on-error: ${{ matrix.allowed_failure }}
9899

100+
- name: Upload coverage report
101+
if: always()
102+
uses: actions/upload-artifact@v4
103+
with:
104+
name: coverage-report-ruby-${{ matrix.ruby }}-rails-${{ matrix.rails }}
105+
path: |
106+
coverage/
107+
99108
- name: Generate coverage badge
100109
if: ${{ github.ref == 'refs/heads/main' && success() }}
101110
continue-on-error: true

AGENTS.md

Lines changed: 281 additions & 1 deletion
Large diffs are not rendered by default.

CONTRIBUTING.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Contributing
2+
3+
Thank you for contributing to Better Together Community Engine!
4+
5+
## Expectations for Changes
6+
7+
- Tests: Keep tests green (`bin/ci`). Add/adjust specs for new behavior.
8+
- Lint & Security: Run `bundle exec rubocop`, `bundle exec brakeman -q -w2`, and `bundle exec bundler-audit --update`.
9+
- Documentation & Diagrams:
10+
- Update or add docs under `docs/` for any new functionality, routes, background jobs, or changes to models/associations.
11+
- Maintain Mermaid diagrams (`docs/*.mmd`) that reflect updated relationships and process flows.
12+
- Render PNGs from `.mmd` using `bin/render_diagrams` and commit the outputs.
13+
- PRs that change models, associations, or flows must include docs/diagram updates.
14+
- Accessibility, i18n, and policies: Follow AGENTS.md and `.github/instructions/*` guides.
15+
16+
## Development
17+
18+
- Use the setup in README/AGENTS.md (Docker or local).
19+
- Test app lives in `spec/dummy`.
20+
- For exchange (Joatu) features, see `docs/joatu/*` and `docs/exchange_process.md`.
21+
22+
## Pull Requests
23+
24+
- Keep PRs focused and small where possible.
25+
- Include a brief description of why, how, and impact.
26+
- If adding migrations: note any data backfills or dedupe steps.
27+
- If modifying notifications: describe dedupe/throttling strategy.
28+
29+
## Questions
30+
31+
Open a discussion or issue if you’re unsure about direction or scope.

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ group :test do
113113
gem 'rubocop-rspec_rails'
114114
# RSpec for unit testing
115115
gem 'rspec'
116+
gem 'rspec-rebound'
116117
# RSpec Rails integration
117118
gem 'rspec-rails'
118119
# Selenium WebDriver for browser automation

Gemfile.lock

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ GEM
262262
railties (>= 4.1.0)
263263
responders
264264
warden (~> 1.2.3)
265-
devise-i18n (1.14.0)
265+
devise-i18n (1.15.0)
266266
devise (>= 4.9.0)
267267
rails-i18n
268268
devise-jwt (0.12.1)
@@ -604,7 +604,7 @@ GEM
604604
reform-rails (0.2.6)
605605
activemodel (>= 5.0)
606606
reform (>= 2.3.1, < 3.0.0)
607-
regexp_parser (2.11.1)
607+
regexp_parser (2.11.2)
608608
reline (0.6.2)
609609
io-console (~> 0.5)
610610
representable (3.2.0)
@@ -642,6 +642,8 @@ GEM
642642
rspec-expectations (~> 3.13)
643643
rspec-mocks (~> 3.13)
644644
rspec-support (~> 3.13)
645+
rspec-rebound (0.2.1)
646+
rspec-core (~> 3.3)
645647
rspec-support (3.13.4)
646648
rswag (2.16.0)
647649
rswag-api (= 2.16.0)
@@ -678,7 +680,7 @@ GEM
678680
rubocop-factory_bot (2.27.1)
679681
lint_roller (~> 1.1)
680682
rubocop (~> 1.72, >= 1.72.1)
681-
rubocop-rails (2.33.1)
683+
rubocop-rails (2.33.3)
682684
activesupport (>= 4.2.0)
683685
lint_roller (~> 1.1)
684686
rack (>= 1.1)
@@ -851,6 +853,7 @@ DEPENDENCIES
851853
redis (~> 5.4)
852854
rspec
853855
rspec-rails
856+
rspec-rebound
854857
rswag
855858
rubocop
856859
rubocop-capybara

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Better Together Community Engine
22

3+
[➡️ View the Documentation Index](docs/README.md)
4+
35
## Overview
46

57
The Better Together Community Engine is a transformative platform designed to unite communities through the power of collaboration and shared resources. Our core intention is to provide an inclusive, accessible space where individuals and groups from diverse backgrounds can come together to share knowledge, engage in meaningful dialogue, and develop innovative solutions to common challenges. By leveraging the collective wisdom and experience of its members, the platform aims to foster a culture of mutual support, learning, and sustainable growth.
@@ -10,6 +12,13 @@ This project embodies our vision of a world where collaboration leads to greater
1012

1113
This project is the core community building portion of the Better Together platform.
1214

15+
## Documentation
16+
17+
For system overviews, flows, and diagrams, see the docs index:
18+
19+
- docs: docs/README.md
20+
- Exchange (Joatu), Notifications, Models & Concerns, and more with Mermaid diagrams (PNG rendered).
21+
1322
## Dependencies
1423

1524
In addition to other dependencies, the Better Together Community Engine relies on Action Text and Action Storage, which are part of the Rails framework. These dependencies are essential for handling rich text content and file storage within the platform.

0 commit comments

Comments
 (0)