Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
56c9477
Made approve / reject be AJAX request and refresh the table.
gobears01 Mar 5, 2026
cd68bb7
Add mass approve/reject UI + backend actions (#326, #327)
ba88im Mar 6, 2026
61472d9
Fix CI lint and spec issues for mass actions
ba88im Mar 6, 2026
088d0b9
Added tests for AJAX implementation
gobears01 Mar 8, 2026
81cd926
Allows table to refresh with approve/deny action of a single assignment
gobears01 Mar 10, 2026
d09688b
Combined Igor UI changes
gobears01 Mar 17, 2026
912cfd5
Swapped name and assignment columns, added link to request
gobears01 Mar 17, 2026
9d54d77
Bump puma from 7.1.0 to 7.2.0
dependabot[bot] Feb 2, 2026
25440d9
Bump bootsnap from 1.20.1 to 1.21.1
dependabot[bot] Jan 15, 2026
130dcf0
Bump pg from 1.6.2 to 1.6.3
dependabot[bot] Jan 15, 2026
2d2df34
Add a /help redirect, move some routes around
cycomachead Jan 15, 2026
d7d3f5a
Allow overriding PORT
cycomachead Jan 20, 2026
6fa8036
Gradescope note
cycomachead Feb 2, 2026
21ab42f
improved GS user copy
cycomachead Feb 11, 2026
2bfee06
gitignore
cycomachead Feb 11, 2026
46e180c
Bump sentry-rails from 6.2.0 to 6.3.0
dependabot[bot] Feb 6, 2026
7901b6d
Bump axe-core-cucumber from 4.11.0 to 4.11.1
dependabot[bot] Feb 9, 2026
c0b1dd2
Bump bootstrap from 5.3.5 to 5.3.8
dependabot[bot] Feb 6, 2026
85b270e
Bump turbo-rails from 2.0.21 to 2.0.23
dependabot[bot] Feb 2, 2026
2c3b5a5
Bump rubocop from 1.82.1 to 1.84.2
dependabot[bot] Feb 16, 2026
fc075bb
Bump bootsnap from 1.21.1 to 1.23.0
dependabot[bot] Feb 16, 2026
f9b895f
Bump sentry-ruby from 6.3.0 to 6.3.1
dependabot[bot] Feb 16, 2026
9208b4e
Bump annotaterb from 4.20.0 to 4.22.0
dependabot[bot] Feb 12, 2026
a435169
Bump faraday in the bundler group across 1 directory
dependabot[bot] Feb 9, 2026
5181fd6
Bump brakeman from 7.1.2 to 8.0.2
dependabot[bot] Feb 17, 2026
1606bcc
Bump selenium-webdriver from 4.40.0 to 4.41.0
dependabot[bot] Feb 20, 2026
b148ff8
Bump rspec-rails from 8.0.2 to 8.0.3
dependabot[bot] Feb 18, 2026
3f2fe32
Bump json from 2.18.0 to 2.18.1
dependabot[bot] Feb 16, 2026
bfc40b8
Bump sentry-rails from 6.3.0 to 6.3.1
dependabot[bot] Feb 16, 2026
baf9e83
Bump fast-xml-parser in the npm_and_yarn group across 1 directory
dependabot[bot] Feb 18, 2026
90fa511
update psql version and enable enhanced cloudwatch metrics
dg-ucb Jan 29, 2026
9a7785a
Fix cloudwatch agent config race condition
dg-ucb Feb 12, 2026
4f86893
Fix undefined method `map` for nil when approving extension requests
cycomachead Feb 24, 2026
596b038
Publish developers doc
brandosu Feb 25, 2026
9308345
Bump sentry-ruby from 6.3.1 to 6.4.0
dependabot[bot] Feb 26, 2026
d9abf76
Bump sentry-rails from 6.3.1 to 6.4.0
dependabot[bot] Feb 26, 2026
cbf7785
Initial plan
Copilot Feb 25, 2026
3b62f62
Add updates page to docs with initial release entry and GitHub releas…
Copilot Feb 25, 2026
76fa6be
feat: handle late due dates for Canvas and Gradescope extensions
cycomachead Feb 4, 2026
891ebb4
delint part 1
cycomachead Feb 11, 2026
8735285
cleanup lints
cycomachead Feb 11, 2026
611a693
run migrations
cycomachead Feb 11, 2026
c4ba73a
fixup spec
cycomachead Feb 11, 2026
c9068e3
delete test case which seems impossible
cycomachead Feb 12, 2026
a8de5bf
cleanup the Canvas facade to not always send a late due date
cycomachead Feb 12, 2026
934d122
ignore claude
cycomachead Feb 12, 2026
9ce6820
Reorder settings
cycomachead Feb 12, 2026
59d2254
Rebased branch
gobears01 Mar 18, 2026
d79067b
delint part 1
cycomachead Feb 11, 2026
e0bba4d
cleanup lints
cycomachead Feb 11, 2026
f6ef322
fixup spec
cycomachead Feb 11, 2026
226f7e1
delete test case which seems impossible
cycomachead Feb 12, 2026
b1f89d6
cleanup the Canvas facade to not always send a late due date
cycomachead Feb 12, 2026
b9353e0
Reorder settings
cycomachead Feb 12, 2026
fefa05f
refactor: extract extension date logic to AssignmentDateCalculator
cycomachead Feb 12, 2026
bb88f17
minor delint
cycomachead Feb 20, 2026
9896773
tidy specs
cycomachead Feb 20, 2026
0b1f252
Tidy rubocop
cycomachead Feb 20, 2026
c24badc
Add a few notes
cycomachead Feb 27, 2026
08c4bc5
tidy docs, add DOI info
cycomachead Feb 27, 2026
11034a9
more updates
cycomachead Feb 27, 2026
d11d44e
Add project info.yml metadata
ba88im Mar 5, 2026
8b05efa
Add tests for enrollments-to-requests search filter
alxstx Feb 20, 2026
3b9382e
Add step definitions and test data for enrollments-to-requests
alxstx Feb 20, 2026
01dc86f
Bump brakeman from 8.0.2 to 8.0.4
dependabot[bot] Feb 27, 2026
22ef95f
Update a bunch of smaller dependencies for testing, etc
cycomachead Mar 5, 2026
f7c7b07
update sentry
cycomachead Mar 5, 2026
4adc27b
bump rubocop-rails and delint
cycomachead Mar 5, 2026
0f4e560
bump rubocop-rspec and delint
cycomachead Mar 5, 2026
31fa074
bump mail gem
cycomachead Mar 9, 2026
333419b
bundle update guard / deps
cycomachead Mar 9, 2026
114efed
bump globalid
cycomachead Mar 9, 2026
036cd72
Minor transitive deps updates
cycomachead Mar 9, 2026
5606c16
More transitive deps updates
cycomachead Mar 9, 2026
73a1b96
Bump the npm_and_yarn group across 1 directory with 2 updates
dependabot[bot] Feb 26, 2026
2b68ba7
Bump dompurify in the npm_and_yarn group across 1 directory
dependabot[bot] Mar 10, 2026
38841d1
Added the changes per prof Ball requests
gobears01 Mar 16, 2026
5acc7b2
delint
cycomachead Mar 17, 2026
9cfbbb3
Rename README to make docs more clear
cycomachead Mar 17, 2026
d2ae5c3
Setup local github pages in docs directory
cycomachead Mar 17, 2026
099d3ea
WIP tidy docs
cycomachead Mar 17, 2026
9cd9d31
minor README tweaks
cycomachead Mar 17, 2026
63a1380
Fix some small issues
cycomachead Mar 17, 2026
7e0e8d1
Add environment variable to docs build
cycomachead Mar 17, 2026
4f9ef23
More docs updates
cycomachead Mar 17, 2026
3ff2c32
Bump undici in the npm_and_yarn group across 1 directory
dependabot[bot] Mar 14, 2026
15e185c
Run bundle update --minor
cycomachead Mar 17, 2026
6f55b2d
Moved approve/ reject selected buttons to the bottom of the requests …
gobears01 Mar 17, 2026
fb80739
Moved Approve/ Reject Selected buttons to the left, changed checkboxe…
gobears01 Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .ebextensions/01_setup.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
packages:
dnf:
ImageMagick: []
postgresql17-devel: []
ImageMagick: []
commands:
01_remove_pg15_install_pg17:
command: "dnf remove -y postgresql15 postgresql15-private-libs; dnf install -y postgresql17 libpq-devel --allowerasing"
ignoreErrors: false
113 changes: 113 additions & 0 deletions .ebextensions/04_cloudwatch_agent.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
files:
"/tmp/amazon-cloudwatch-agent.json":
mode: "000644"
owner: root
group: root
content: |
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"aggregation_dimensions": [
["InstanceId"],
[]
],
"metrics_collected": {
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_system",
"cpu_usage_user",
"cpu_usage_iowait"
],
"totalcpu": true,
"resources": [
"*"
],
"metrics_collection_interval": 60
},
"mem": {
"measurement": [
"mem_used_percent",
"mem_available"
],
"metrics_collection_interval": 120
},
"disk": {
"measurement": [
"disk_used_percent",
"disk_used",
"disk_free",
"disk_total",
"inodes_free",
"inodes_used"
],
"resources": [
"/",
"/data"
],
"drop_device": true,
"metrics_collection_interval": 120
},
"diskio": {
"measurement": [
"write_bytes",
"read_bytes",
"writes",
"reads"
],
"resources": [
"nvme[0-9]n1",
"xvd*",
"sd*"
],
"metrics_collection_interval": 180
},
"net": {
"measurement": [
"bytes_sent",
"bytes_recv",
"packets_sent",
"packets_recv",
"err_in",
"err_out"
],
"resources": [
"eth0",
"ens*"
],
"metrics_collection_interval": 180
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_syn_sent",
"tcp_time_wait"
],
"metrics_collection_interval": 300
},
"processes": {
"measurement": [
"running",
"blocked",
"sleeping",
"zombies"
],
"metrics_collection_interval": 300
}
}
}
}

container_commands:
01_apply_cwa_config:
command: "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/tmp/amazon-cloudwatch-agent.json -s"
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ CANVAS_URL='https://ucberkeleysandbox.instructure.com'
# We use a single username/password for Gradescope
# This should be a "service account" that can be used to set course settings
# This email must be invited to each Gradescope course as a TA or Instructor
GRADESCOPE_EMAIL='[email protected]'
GRADESCOPE_PASSWORD=
GRADESCOPE_EMAIL='[email protected]'
GRADESCOPE_PASSWORD=KoH-z92-oVJ-yqr
# This is required to be set.
DEFAULT_FROM_EMAIL='[email protected]'
# Generally recommended / best practices
Expand Down
4 changes: 2 additions & 2 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ updates:
- package-ecosystem: bundler
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
interval: weekly
open-pull-requests-limit: 5
66 changes: 66 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Docs Build

on:
push:
paths:
- 'docs/**'
pull_request:
paths:
- 'docs/**'
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- uses: actions/checkout@v4

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
working-directory: docs

- name: Build Jekyll site
run: bundle exec jekyll build --baseurl /flextensions
env:
JEKYLL_ENV: production
PAGES_REPO_NWO: berkeley-cds/flextensions

- name: Check for broken internal links
run: |
# Verify all internal .html files were generated
echo "Generated site files:"
find _site -name '*.html' | sort
echo ""
echo "Checking for broken internal links..."
# Extract internal href links and verify they resolve
broken=0
for file in $(find _site -name '*.html'); do
# Extract href values pointing to /flextensions/ paths
grep -oP 'href="(/flextensions/[^"]*)"' "$file" 2>/dev/null | while read -r match; do
path=$(echo "$match" | grep -oP '"/flextensions/[^"]*"' | tr -d '"')
# Convert URL path to file path
local_path="_site${path#/flextensions}"
# Check if it's a directory (index.html) or file
if [ -d "$local_path" ] && [ -f "$local_path/index.html" ]; then
continue
elif [ -f "$local_path" ]; then
continue
elif [ -f "${local_path}.html" ]; then
continue
elif [ -f "${local_path%/}/index.html" ]; then
continue
else
echo "::warning file=$file::Broken link: $path (resolved to $local_path)"
broken=1
fi
done
done
if [ "$broken" -eq 1 ]; then
echo "::warning::Some internal links may be broken. Check warnings above."
fi
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ capybara-*.html
*.orig
rerun.txt
pickle-email-*.html
# All Heroku dumps.
*.dump
# GenAI stuff
.claude

# Ignore all logfiles and tempfiles.
/log/*
Expand Down Expand Up @@ -77,3 +81,9 @@ yarn-debug.log*
/config/credentials/production.key

.DS_Store

# Jekyll docs
docs/_site/
docs/.jekyll-cache/
docs/.jekyll-metadata
docs/Gemfile.lock
5 changes: 5 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ RSpec:
RSpec/ExampleLength:
Max: 40

# Default 3
# I'm not sure this is good?
RSpec/NestedGroups:
Max: 5

RSpec/MultipleMemoizedHelpers:
Max: 20

Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ gem 'importmap-rails'
# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
gem 'turbo-rails'

gem 'bootstrap', '~> 5.3.3'
gem 'bootstrap', '~> 5.3.8'
# dependency for bootstrap # 03-10-2025 this is deprecated but still works
gem 'sassc-rails', '~> 2.1'
# alternative to sassc-rails, this is recommended but bootstrap 5.3.3 is still using "deprecated" @import statements which this gem doesn't like
Expand Down
Loading
Loading