Skip to content

Commit 393ee6e

Browse files
authored
Merge branch 'main' into codex/add-file-chooser-and-modal-for-uploads
Signed-off-by: Robert Smith <[email protected]>
2 parents e5082c1 + db15e3c commit 393ee6e

File tree

837 files changed

+40183
-2729
lines changed

Some content is hidden

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

837 files changed

+40183
-2729
lines changed

.env.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ APP_DEFAULT_LOCALE='en'
99
APP_AVAILABLE_LOCALES='es,en,fr'
1010
APP_FALLBACK_LOCALES='es,en,fr'
1111

12-
ES_PORT='9201'
12+
ES_PORT='9200'
1313
ES_HOST='http://elasticsearch'
1414
# ELASTICSEARCH_URL='http://elasticsearch:9201'
1515

.env.prod.sample

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ PORT=5000
2424

2525
RACK_ENV=production
2626
RAILS_ENV=production
27-
RAILS_LOG_LEVEL=debug
27+
RAILS_LOG_LEVEL=info
2828
RAILS_LOG_TO_STDOUT=true
2929
RAILS_SERVE_STATIC_FILES=true
3030

.github/copilot-instructions.md

Lines changed: 189 additions & 58 deletions
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: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,20 @@ jobs:
1111
matrix:
1212
include:
1313
- ruby: '3.4.4'
14-
rails: '7.1.5.1'
14+
rails: '7.1.5.2'
1515
allowed_failure: false # ✅ required
16-
# - ruby: '3.4.4'
17-
# rails: '7.2'
18-
# allowed_failure: true # ⚠️ allowed to fail
1916
- ruby: '3.4.4'
20-
rails: '8.0'
17+
rails: '7.2.2.1'
18+
allowed_failure: false # ⚠️ allowed to fail
19+
- ruby: '3.4.4'
20+
rails: '8.0.2'
2121
allowed_failure: true # ⚠️ allowed to fail
2222

2323
env:
2424
RAILS_ENV: test
2525
DATABASE_URL: "postgis://rails:password@localhost:5432/rails_test"
2626
ES_HOST: "http://localhost"
27+
ELASTICSEARCH_URL: "http://localhost:9200"
2728
RAILS_VERSION: ${{ matrix.rails }}
2829

2930
services:
@@ -54,15 +55,15 @@ jobs:
5455
# Run the automatic bundle-install only on 7.1.
5556
# For 7.2 / 8.0 it just sets up Ruby *and* restores a cache layer
5657
# that we’ll reuse in the later manual install.
57-
bundler-cache: ${{ matrix.rails == '7.1.5.1' }}
58+
bundler-cache: ${{ matrix.rails == '7.1.5.2' }}
5859

5960
# One cache bucket per Rails version so they don’t clobber each other.
6061
cache-version: rails-${{ matrix.rails }}
6162

6263
# Updating Rails can legitimately blow up on the experimental tracks,
6364
# so we allow that *step* to error out without failing the job.
6465
- name: Update Rails & install gems
65-
if: matrix.rails != '7.1.5.1'
66+
if: matrix.rails != '7.1.5.2'
6667
id: update
6768
run: |
6869
# turn off deployment mode
@@ -74,21 +75,52 @@ jobs:
7475
continue-on-error: ${{ matrix.allowed_failure }}
7576

7677
- name: Prepare DB schema
77-
if: (matrix.rails == '7.1.5.1') || steps.update.outcome == 'success'
78+
if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success'
7879
run: |
7980
rm -f spec/dummy/tmp/pids/server.pid
8081
bundle exec rake -f spec/dummy/Rakefile db:schema:load
8182
continue-on-error: ${{ matrix.allowed_failure }}
8283

84+
- name: Wait for Elasticsearch
85+
if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success'
86+
run: |
87+
echo "Waiting for Elasticsearch to be healthy..."
88+
curl -s "http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=60s" || (echo "Elasticsearch not healthy" && exit 1)
89+
90+
8391
- name: Run RSpec
84-
if: (matrix.rails == '7.1.5.1') || steps.update.outcome == 'success'
92+
if: (matrix.rails == '7.1.5.2') || steps.update.outcome == 'success'
8593
env:
8694
RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
8795
run: |
8896
rm -f spec/dummy/tmp/pids/server.pid
8997
bundle exec rspec
9098
continue-on-error: ${{ matrix.allowed_failure }}
9199

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+
108+
- name: Generate coverage badge
109+
if: ${{ github.ref == 'refs/heads/main' && success() }}
110+
continue-on-error: true
111+
run: |
112+
COVERAGE=$(jq -r '.result.covered_percent' coverage/.last_run.json)
113+
COLOR=$(node -e "cov=parseFloat(process.argv[1]);console.log(cov>=90?'green':cov>=75?'orange':'red')" $COVERAGE)
114+
npx badgen-cli --subject coverage --status ${COVERAGE}% --color $COLOR > coverage.svg
115+
116+
- name: Commit badge
117+
if: ${{ github.ref == 'refs/heads/main' && success() }}
118+
continue-on-error: true
119+
uses: stefanzweifel/git-auto-commit-action@v5
120+
with:
121+
commit_message: "chore: update coverage badge"
122+
file_pattern: coverage.svg
123+
92124
# ── style & security jobs (unchanged) ───────────────────────────────────────
93125
rubocop:
94126
runs-on: ubuntu-latest

.rubocop.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,23 @@ AllCops:
33
- 'bin/*'
44
- 'node_modules/**/*'
55
- 'spec/dummy/db/schema.rb'
6+
- 'db/schema.rb'
67
- 'vendor/**/*'
78
NewCops: enable
9+
TargetRubyVersion: 3.4
10+
plugins:
11+
- rubocop-rails
12+
- rubocop-rspec
13+
- rubocop-rspec_rails
14+
- rubocop-capybara
15+
- rubocop-factory_bot
816
Style/StringLiterals:
917
Exclude:
1018
- 'db/migrate/*'
19+
20+
Rails:
21+
Enabled: false
22+
Capybara:
23+
Enabled: false
24+
FactoryBot:
25+
Enabled: false

0 commit comments

Comments
 (0)