From dfd86a73da64a7bb1c23f05dce6f17c7c46371ee Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:56:18 -0400 Subject: [PATCH 01/18] initial commit taking inspiration from Justin Manion's formatting --- .../2026_Nick_Ciuica.md | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index fb6de175..f3a75271 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,4 +3,40 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- -coming soon \ No newline at end of file +**21** pull requests reviewed +**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**3** pull requests taken over and merged + +My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. I used my previous experience as a course mentor who used Submitty to implement bugfixes and new features that I would see myself using while grading. + +### TA Grading Interface +Consistent navbar layout +#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) + + ([Bugfix:InstructorUI] Recentering Grading Panel Navbar) +PR#12946 ([Bugfix:TAGrading] Student Name Resize) +Auto-open submission browser feature: +Picked up PR#12625 ([Bugfix:TAGrading] Auto-open single file) +PR#12931 ([Feature:TAGrading] Persistent Auto-Open) +Image annotation as a replacement for the removed PDF annotation feature: +Picked up PR#11921 ([Feature:TAGrading] Add Image Annotation) + +PRs related to Gradeable Details Page: +Improvements to student data CSV upload: +PR#12972 ([Bugfix:TAGrading] CSV Upload Numeric) +PR#13007 ([Feature:InstructorUI] Numeric CSV Suggestions), adds to PR#12995 +Removal of unused feature for maintainability: +PR#13051 ([Feature:InstructorUI] Remove Checkpoint Lab Print) +Student table improvements: +PR#13037 ([Bugfix:InstructorUI] Course Staff Table Highlight) +PR#12996 ([Refactor:InstructorUI] Consolidate Table Sorting) + +My Other PRs: +Improvements to form validation: +PR#12949 ([Bugfix:InstructorUI] Create Course Validation) +Picked up PR#12455 ([Feature:System] Configurable password requirements) +Cypress CI: +PR#12898 ([Bugfix:System] Create Account Test Randomization Fix) +Documentation: +PR#770 ([Documentation:TAGrading] Remove PDF Annotation), goes with PR#13042 +PR#771 ([Documentation:InstructorUI] Remove Print Lab), goes with PR#13051 From d11a9365f8eb4d51accb6517c4fb5c284e780d56 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:16:18 -0400 Subject: [PATCH 02/18] intro paragraph update --- .../rensselaer_center_for_open_source/2026_Nick_Ciuica.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index f3a75271..6a45256a 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -7,7 +7,7 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 **10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. I used my previous experience as a course mentor who used Submitty to implement bugfixes and new features that I would see myself using while grading. +My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. ### TA Grading Interface Consistent navbar layout From ffbaf10b5a16396bc49a1bbdf826b1e8b3b95ad1 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:23:10 -0400 Subject: [PATCH 03/18] adding a PR description --- .../rensselaer_center_for_open_source/2026_Nick_Ciuica.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 6a45256a..a6133acd 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -7,14 +7,13 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 **10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. +My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface Consistent navbar layout #### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) - - ([Bugfix:InstructorUI] Recentering Grading Panel Navbar) -PR#12946 ([Bugfix:TAGrading] Student Name Resize) +As a grader, it was very helpful to have the navbar of the grading interface in the same place as I moved from page to page grading multiple students' assignment, and so I noticed pretty quickly that its constant positioning got messed up. I fixed the navbar's css, and also added a window resize event on page load so that the top bar's dynamically-calculated layout sizes would be accurate on page load, without having to manually reload the page. +#### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) Auto-open submission browser feature: Picked up PR#12625 ([Bugfix:TAGrading] Auto-open single file) PR#12931 ([Feature:TAGrading] Persistent Auto-Open) From f107b6e2194d57a659b48ed4e5ea531417cb37ab Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:23:25 -0400 Subject: [PATCH 04/18] actually I think I'm only gonna describe the big ones --- .../rensselaer_center_for_open_source/2026_Nick_Ciuica.md | 1 - 1 file changed, 1 deletion(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index a6133acd..af774a01 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -12,7 +12,6 @@ My primary goals this summer were to improve the TA Grading interface and the Gr ### TA Grading Interface Consistent navbar layout #### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) -As a grader, it was very helpful to have the navbar of the grading interface in the same place as I moved from page to page grading multiple students' assignment, and so I noticed pretty quickly that its constant positioning got messed up. I fixed the navbar's css, and also added a window resize event on page load so that the top bar's dynamically-calculated layout sizes would be accurate on page load, without having to manually reload the page. #### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) Auto-open submission browser feature: Picked up PR#12625 ([Bugfix:TAGrading] Auto-open single file) From 020e6e926d4d1cae26f963cc03674ebaa72f4ad9 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:41:18 -0400 Subject: [PATCH 05/18] nice markup, and desc.s for bigger prs --- .../2026_Nick_Ciuica.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index af774a01..ec14451e 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -14,10 +14,12 @@ Consistent navbar layout #### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) #### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) Auto-open submission browser feature: -Picked up PR#12625 ([Bugfix:TAGrading] Auto-open single file) -PR#12931 ([Feature:TAGrading] Persistent Auto-Open) -Image annotation as a replacement for the removed PDF annotation feature: -Picked up PR#11921 ([Feature:TAGrading] Add Image Annotation) +#### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) +I picked up this unfinished PR. +#### Persistent Auto-Open Across Students ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) +I made this PR after starting work on ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) because I noticed some issues with the original auto-open feature while testing the new single-file auto-open functionality. In this PR I update how opened files are stored so they can be consistently reopened when moving from student to student in the grader interface. +#### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) +I picked up this unfinished PR. I improved the styling of the buttons used for image annotation to be more contrasting and accessible in both light and dark modes. I also disabled grading interface keyboard shortcuts while annotating, as this caused issues when trying to type annotations. I thoroughly tested this PR and made a list of next issues regarding image annotation that need to be tackled. PRs related to Gradeable Details Page: Improvements to student data CSV upload: From 7fb22433418641ab6fdbb881feb65e4666ba92d6 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:56:18 -0400 Subject: [PATCH 06/18] finishing converting first chunk --- .../rensselaer_center_for_open_source/2026_Nick_Ciuica.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index ec14451e..bd8004bb 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,13 +3,13 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- -**21** pull requests reviewed -**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) -**3** pull requests taken over and merged +**21** pull requests reviewed +**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**3** pull requests taken over and merged My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: -### TA Grading Interface +### TA Grading Interface: Consistent navbar layout #### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) #### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) From fe2f397718f4b0cfad00ebd363b3ff47a3602d76 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 24 Jul 2026 17:16:32 -0400 Subject: [PATCH 07/18] some more markup cleanup --- .../2026_Nick_Ciuica.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index bd8004bb..19ce5303 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -10,31 +10,30 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface: -Consistent navbar layout -#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) -#### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) -Auto-open submission browser feature: + #### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) I picked up this unfinished PR. #### Persistent Auto-Open Across Students ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) I made this PR after starting work on ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) because I noticed some issues with the original auto-open feature while testing the new single-file auto-open functionality. In this PR I update how opened files are stored so they can be consistently reopened when moving from student to student in the grader interface. #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) I picked up this unfinished PR. I improved the styling of the buttons used for image annotation to be more contrasting and accessible in both light and dark modes. I also disabled grading interface keyboard shortcuts while annotating, as this caused issues when trying to type annotations. I thoroughly tested this PR and made a list of next issues regarding image annotation that need to be tackled. +#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) +#### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) + +### Gradeable Details Page: -PRs related to Gradeable Details Page: -Improvements to student data CSV upload: -PR#12972 ([Bugfix:TAGrading] CSV Upload Numeric) -PR#13007 ([Feature:InstructorUI] Numeric CSV Suggestions), adds to PR#12995 -Removal of unused feature for maintainability: -PR#13051 ([Feature:InstructorUI] Remove Checkpoint Lab Print) -Student table improvements: -PR#13037 ([Bugfix:InstructorUI] Course Staff Table Highlight) -PR#12996 ([Refactor:InstructorUI] Consolidate Table Sorting) +#### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) +Before this PR, when adding sortable table columns, you had to write new sorting functions to manipulate the DOM and update the sort direction icons within the table header. This lead to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. The old implementation of table sorting used cookies, but my refactor uses session storage since all of the table sorting is done on the frontend. I made an addition Vue component called the TableSortManager that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. +#### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) +The Gradeable Details table used to dynamically assign its striped rows using JS on page load to account for toggleable withdrawn student rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. +#### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) +#### Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) +#### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) -My Other PRs: -Improvements to form validation: -PR#12949 ([Bugfix:InstructorUI] Create Course Validation) -Picked up PR#12455 ([Feature:System] Configurable password requirements) +### Other Contributions: +#### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) +I picked up this unfinished PR. +#### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) Cypress CI: PR#12898 ([Bugfix:System] Create Account Test Randomization Fix) Documentation: From 595adb94f2535291e677af80f40a6baabcf519d4 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Wed, 29 Jul 2026 11:14:57 -0400 Subject: [PATCH 08/18] added reflection and next steps sections --- .../2026_Nick_Ciuica.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 19ce5303..6c33e72b 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,11 +3,13 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- +TODO: update numbers + **21** pull requests reviewed **10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: +I'm very glad to have had the opportunity to work as a full-time Submitty developer over Summer 2026! My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface: @@ -39,3 +41,16 @@ PR#12898 ([Bugfix:System] Create Account Test Randomization Fix) Documentation: PR#770 ([Documentation:TAGrading] Remove PDF Annotation), goes with PR#13042 PR#771 ([Documentation:InstructorUI] Remove Print Lab), goes with PR#13051 + +### Reflection + +My contributions to Submitty started as picked-up PRs and frontend tweaks +I gained valuable backend experience working on our move to using venv +Made changes daily, fast-paced changes, reviewing/testing consistently +Gained experience with Cypress, Vue, PHP, TS, jQuery, Twig, Python, Bash + +### Next Steps + +Here are some things I'd like to work on at Submitty past the summer: +- *Assisting in Vue Refactor* +- *Multisortable Columns* From 6a1ba2df1a28579b6859ee08952142e846e1b53c Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Wed, 29 Jul 2026 12:57:42 -0400 Subject: [PATCH 09/18] adding a PR and some description --- .../2026_Nick_Ciuica.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 6c33e72b..42833da2 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -6,19 +6,21 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 TODO: update numbers **21** pull requests reviewed -**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **3** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -I'm very glad to have had the opportunity to work as a full-time Submitty developer over Summer 2026! My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: +I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface: -#### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) -I picked up this unfinished PR. #### Persistent Auto-Open Across Students ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) I made this PR after starting work on ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) because I noticed some issues with the original auto-open feature while testing the new single-file auto-open functionality. In this PR I update how opened files are stored so they can be consistently reopened when moving from student to student in the grader interface. +#### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) +I picked up this PR and reworked the way student submission files around counted to ignore metafiles. I also added Cypress tests for this new feature. #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) -I picked up this unfinished PR. I improved the styling of the buttons used for image annotation to be more contrasting and accessible in both light and dark modes. I also disabled grading interface keyboard shortcuts while annotating, as this caused issues when trying to type annotations. I thoroughly tested this PR and made a list of next issues regarding image annotation that need to be tackled. +I picked up this old PR and improved the styling of the buttons used for image annotation to be more contrasting and accessible in both light and dark modes. I also disabled grading interface keyboard shortcuts while annotating, as this caused issues when trying to type annotations. I thoroughly tested this PR and identified areas of improvement to be tackled in future PRs. +#### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) +Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code for this feature and split/renamed/moved files to separate image annotation and pdf viewing logic. #### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) #### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) @@ -33,6 +35,7 @@ The Gradeable Details table used to dynamically assign its striped rows using JS #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Other Contributions: + #### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) I picked up this unfinished PR. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) @@ -43,9 +46,9 @@ PR#770 ([Documentation:TAGrading] Remove PDF Annotation), goes with PR#13042 PR#771 ([Documentation:InstructorUI] Remove Print Lab), goes with PR#13051 ### Reflection - -My contributions to Submitty started as picked-up PRs and frontend tweaks -I gained valuable backend experience working on our move to using venv +Working on Submitty this summer has been an invaluable experience. My contributions to Submitty started as picked-up PRs and frontend tweaks, but I quickly began working across multiple systems of Submitty, including making new CI tests and assisting in our move to using a virtual environment for our python scripts. +Contributing to PRs daily and assisting in reviewing and testing has made me much more confident +Our fast-paced changes and our emphasis on teamwork and reviewing make me confident that this opportunity has been as valueable as a traditional internship. Made changes daily, fast-paced changes, reviewing/testing consistently Gained experience with Cypress, Vue, PHP, TS, jQuery, Twig, Python, Bash From 912eed1ca0a399f6daa387fc9e3cf6976c8753f2 Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Thu, 30 Jul 2026 11:13:57 -0400 Subject: [PATCH 10/18] added PR + more desc. changes --- .../2026_Nick_Ciuica.md | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 42833da2..9c4f9a45 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -9,27 +9,30 @@ TODO: update numbers **10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: +I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface: -#### Persistent Auto-Open Across Students ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) -I made this PR after starting work on ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) because I noticed some issues with the original auto-open feature while testing the new single-file auto-open functionality. In this PR I update how opened files are stored so they can be consistently reopened when moving from student to student in the grader interface. +#### Persistent File Auto-Open Across Student Submissions ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) +I updated how opened files in the submission browser are stored so they can be consistently reopened when moving from student to student in the grader interface. This feature now uses localStorage instead of cookies, since this is a frontend-only feature. #### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) -I picked up this PR and reworked the way student submission files around counted to ignore metafiles. I also added Cypress tests for this new feature. +I picked up this PR and reworked the way student submission files are counted to ignore metafiles, so that students with single files could be properly identified. I also added Cypress tests for this new feature. + #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) -I picked up this old PR and improved the styling of the buttons used for image annotation to be more contrasting and accessible in both light and dark modes. I also disabled grading interface keyboard shortcuts while annotating, as this caused issues when trying to type annotations. I thoroughly tested this PR and identified areas of improvement to be tackled in future PRs. -#### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) -Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code for this feature and split/renamed/moved files to separate image annotation and pdf viewing logic. -#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) -#### Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) +I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in future PRs, see below. +#### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) +Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and pdf viewing logic. I also removed a dependency we were using solely for PDF annotation. + +#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) & Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) +I reintroduced important styling behavior that the grading interface page had lost with recent changes to its CSS and layout. ### Gradeable Details Page: #### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) -Before this PR, when adding sortable table columns, you had to write new sorting functions to manipulate the DOM and update the sort direction icons within the table header. This lead to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. The old implementation of table sorting used cookies, but my refactor uses session storage since all of the table sorting is done on the frontend. I made an addition Vue component called the TableSortManager that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. +Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the DOM. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I made an addition TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. #### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) The Gradeable Details table used to dynamically assign its striped rows using JS on page load to account for toggleable withdrawn student rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. + #### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) #### Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) From 90fda1d050a6c945af805f9e1c10c9f15581898e Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Thu, 30 Jul 2026 11:39:18 -0400 Subject: [PATCH 11/18] finished converting formatting of PRs --- .../2026_Nick_Ciuica.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 9c4f9a45..a0511ca8 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -35,7 +35,9 @@ The Gradeable Details table used to dynamically assign its striped rows using JS #### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) #### Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) +I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) +Since the Print Section feature is an old an unused feature, we decided to remove it to make Submitty easier to maintain. ### Other Contributions: @@ -43,10 +45,12 @@ The Gradeable Details table used to dynamically assign its striped rows using JS I picked up this unfinished PR. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) Cypress CI: -PR#12898 ([Bugfix:System] Create Account Test Randomization Fix) +#### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) Documentation: -PR#770 ([Documentation:TAGrading] Remove PDF Annotation), goes with PR#13042 -PR#771 ([Documentation:InstructorUI] Remove Print Lab), goes with PR#13051 +#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) +goes with ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) +#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) +goes with ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Reflection Working on Submitty this summer has been an invaluable experience. My contributions to Submitty started as picked-up PRs and frontend tweaks, but I quickly began working across multiple systems of Submitty, including making new CI tests and assisting in our move to using a virtual environment for our python scripts. From c1a6c4d7072419c8c78415c96f66aea86395a86d Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 31 Jul 2026 12:58:33 -0400 Subject: [PATCH 12/18] added to reflection and added my ui design contributions --- .../2026_Nick_Ciuica.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index a0511ca8..8e5a79bd 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -32,6 +32,9 @@ I reintroduced important styling behavior that the grading interface page had lo Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the DOM. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I made an addition TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. #### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) The Gradeable Details table used to dynamically assign its striped rows using JS on page load to account for toggleable withdrawn student rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. +#### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) +The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While +I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. #### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) #### Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) @@ -53,6 +56,12 @@ goes with ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) goes with ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Reflection +I have learned so much during my time working on Submitty. +Our heavy emphasis on teamwork and reviewing allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. +For example, I've gained experience writing CI tests, using virtual environments in python, work with View-Controller-Model architecture in PHP and Twig, and much more. + +In Submity's fast-paced, open-source environment, I've gained confidence in my skills as a software developer, tester, and engineer. + Working on Submitty this summer has been an invaluable experience. My contributions to Submitty started as picked-up PRs and frontend tweaks, but I quickly began working across multiple systems of Submitty, including making new CI tests and assisting in our move to using a virtual environment for our python scripts. Contributing to PRs daily and assisting in reviewing and testing has made me much more confident Our fast-paced changes and our emphasis on teamwork and reviewing make me confident that this opportunity has been as valueable as a traditional internship. From ddfa39a3484e23e2a5dd2bfd9a0ef4170e28755e Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:39:05 -0400 Subject: [PATCH 13/18] more touchups --- .../2026_Nick_Ciuica.md | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 8e5a79bd..e9b3d987 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -19,7 +19,7 @@ I updated how opened files in the submission browser are stored so they can be c I picked up this PR and reworked the way student submission files are counted to ignore metafiles, so that students with single files could be properly identified. I also added Cypress tests for this new feature. #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) -I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in future PRs, see below. +I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in later PRs like the ones below. #### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and pdf viewing logic. I also removed a dependency we were using solely for PDF annotation. @@ -31,13 +31,11 @@ I reintroduced important styling behavior that the grading interface page had lo #### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the DOM. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I made an addition TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. #### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) -The Gradeable Details table used to dynamically assign its striped rows using JS on page load to account for toggleable withdrawn student rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. +The Gradeable Details table used to dynamically add striped row styling using JS to account for toggleable rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. #### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) -The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While -I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. +The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. -#### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) -#### Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) +#### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) & Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) Since the Print Section feature is an old an unused feature, we decided to remove it to make Submitty easier to maintain. @@ -45,31 +43,25 @@ Since the Print Section feature is an old an unused feature, we decided to remov ### Other Contributions: #### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) -I picked up this unfinished PR. +I picked up this unfinished PR and debugged it so it'd be ready to merge. I also reworked and added to the Cypress CI tests in this PR to properly test password complexity requirements. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) -Cypress CI: +Previously, if a superuser tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added a server-side check to return an informative error instead. #### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) -Documentation: +This PR makes the account creation CI test rerunnable so it's easier to use locally. + +Documentation PRs: #### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) goes with ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) #### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) goes with ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Reflection -I have learned so much during my time working on Submitty. -Our heavy emphasis on teamwork and reviewing allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. -For example, I've gained experience writing CI tests, using virtual environments in python, work with View-Controller-Model architecture in PHP and Twig, and much more. - -In Submity's fast-paced, open-source environment, I've gained confidence in my skills as a software developer, tester, and engineer. -Working on Submitty this summer has been an invaluable experience. My contributions to Submitty started as picked-up PRs and frontend tweaks, but I quickly began working across multiple systems of Submitty, including making new CI tests and assisting in our move to using a virtual environment for our python scripts. -Contributing to PRs daily and assisting in reviewing and testing has made me much more confident -Our fast-paced changes and our emphasis on teamwork and reviewing make me confident that this opportunity has been as valueable as a traditional internship. -Made changes daily, fast-paced changes, reviewing/testing consistently -Gained experience with Cypress, Vue, PHP, TS, jQuery, Twig, Python, Bash +I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP and Twig, writing Cypress CI tests, using Python virtual environments, and much more. In Submitty's fast-paced, open-source environment, I've gained confidence in my skills as a software developer and tester. ### Next Steps Here are some things I'd like to work on at Submitty past the summer: -- *Assisting in Vue Refactor* -- *Multisortable Columns* +- *Mentoring New Developers in the Fall:* Over the school year I would like to mentor new developers working on Submitty through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting. +- *Assisting in Vue Refactor:* The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making small contributions myself. +- *Multisortable Columns:* I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to find new developers interested in assisting with this. From bf90111b62b25e1d06b0b264c220f835106390fa Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Tue, 4 Aug 2026 14:46:11 -0400 Subject: [PATCH 14/18] format updates --- .../2026_Nick_Ciuica.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index e9b3d987..14aad2d1 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -5,8 +5,8 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 TODO: update numbers -**21** pull requests reviewed -**10** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**28** pull requests reviewed +**12** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: @@ -20,10 +20,12 @@ I picked up this PR and reworked the way student submission files are counted to #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in later PRs like the ones below. -#### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) +#### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) +#### & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and pdf viewing logic. I also removed a dependency we were using solely for PDF annotation. -#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) & Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) +#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) +#### & Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) I reintroduced important styling behavior that the grading interface page had lost with recent changes to its CSS and layout. ### Gradeable Details Page: @@ -35,7 +37,8 @@ The Gradeable Details table used to dynamically add striped row styling using JS #### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. -#### Uploading CSVs with Zeroes to Numeric Gradeable ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) & Changes to CSV Upload/Download for Numeric Gradeable([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) +#### Uploading CSVs with Zeroes to Numeric Gradeables ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) +#### & Changes to CSV Upload/Download ([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) Since the Print Section feature is an old an unused feature, we decided to remove it to make Submitty easier to maintain. @@ -50,10 +53,8 @@ Previously, if a superuser tried to make a new course using an invalid course co This PR makes the account creation CI test rerunnable so it's easier to use locally. Documentation PRs: -#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) -goes with ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) -#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) -goes with ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) +#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) (goes with [PR#13042](https://github.com/Submitty/Submitty/pull/13042)) +#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) (goes with [PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Reflection @@ -62,6 +63,6 @@ I have learned so much during my time working on Submitty. Our heavy emphasis on ### Next Steps Here are some things I'd like to work on at Submitty past the summer: -- *Mentoring New Developers in the Fall:* Over the school year I would like to mentor new developers working on Submitty through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting. -- *Assisting in Vue Refactor:* The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making small contributions myself. -- *Multisortable Columns:* I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to find new developers interested in assisting with this. +- **Mentoring New Developers in the Fall:** Over the school year I would like to mentor new developers working on Submitty through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting. +- **Assisting in Vue Refactor:** The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making small contributions myself. +- **Multisortable Columns:** I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to find new developers interested in assisting with this. From ef1da581bd9fa77a30e1b08b924776f93ea0f4ad Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Thu, 6 Aug 2026 11:27:26 -0400 Subject: [PATCH 15/18] revising --- .../2026_Nick_Ciuica.md | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 14aad2d1..48fce710 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -6,10 +6,12 @@ category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 TODO: update numbers **28** pull requests reviewed -**12** [pull requests created](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**12** [pull requests created and merged](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) **3** pull requests taken over and merged -I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: +I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. With every review and contribution I've gained more confidence in my skills as a software developer. + +My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: ### TA Grading Interface: @@ -31,7 +33,7 @@ I reintroduced important styling behavior that the grading interface page had lo ### Gradeable Details Page: #### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) -Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the DOM. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I made an addition TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future it can be extended to facilitate sorting by multiple columns. +Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the table's row order. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I also added a TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future can be extended to facilitate sorting by multiple columns. #### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) The Gradeable Details table used to dynamically add striped row styling using JS to account for toggleable rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. #### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) @@ -40,29 +42,35 @@ The ultimate goal of my table sorting PRs was to eventually make it easier to im #### Uploading CSVs with Zeroes to Numeric Gradeables ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) #### & Changes to CSV Upload/Download ([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. -#### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) -Since the Print Section feature is an old an unused feature, we decided to remove it to make Submitty easier to maintain. ### Other Contributions: #### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) -I picked up this unfinished PR and debugged it so it'd be ready to merge. I also reworked and added to the Cypress CI tests in this PR to properly test password complexity requirements. +I picked up this unfinished PR and added to the Cypress CI tests to properly test password complexity requirements. and debugged it so it'd be ready to merge. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) -Previously, if a superuser tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added a server-side check to return an informative error instead. +Previously, if a superuser tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added server-side validation that returns an informative error instead. #### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) This PR makes the account creation CI test rerunnable so it's easier to use locally. +#### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) +Since the Print Section feature is old and unused, we decided to remove it to make Submitty easier to maintain. -Documentation PRs: -#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) (goes with [PR#13042](https://github.com/Submitty/Submitty/pull/13042)) -#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) (goes with [PR#13051](https://github.com/Submitty/Submitty/pull/13051)) +### Documentation PRs: + +#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) +(goes with [PR#13042](https://github.com/Submitty/Submitty/pull/13042)) +#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) +(goes with [PR#13051](https://github.com/Submitty/Submitty/pull/13051)) ### Reflection -I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP and Twig, writing Cypress CI tests, using Python virtual environments, and much more. In Submitty's fast-paced, open-source environment, I've gained confidence in my skills as a software developer and tester. +I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP and Twig, writing Cypress CI tests, using Python virtual environments, and much more. + +In Submitty's fast-paced, open-source environment, I've gained confidence in my skills as a software developer and tester. I feel my time here has prepared me well for a career in software development, just as well as any internship would have. ### Next Steps Here are some things I'd like to work on at Submitty past the summer: -- **Mentoring New Developers in the Fall:** Over the school year I would like to mentor new developers working on Submitty through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting. -- **Assisting in Vue Refactor:** The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making small contributions myself. -- **Multisortable Columns:** I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to find new developers interested in assisting with this. +- **Mentoring New Developers in the Fall:** Over the school year I would like to mentor those joining the Submitty team through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting for new developers. +- **Assisting in Vue Refactor:** The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making contributions myself. +- **Further Improve Image Annotation:** There are a number of image annotation issues I've documented that I'd like to work on. I think annotations are a great supplement to grading, and I want to make this feature easier to use and more stable. +- **Multisortable Columns:** I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to mentor new developers interested in assisting with this. From aec129e6a96df81b8eff3fc24f83eb1f51fddcab Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:46:48 -0400 Subject: [PATCH 16/18] adding final PRs & reorganization --- .../2026_Nick_Ciuica.md | 60 ++++++++++--------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 48fce710..ba8f7183 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,34 +3,27 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- -TODO: update numbers - -**28** pull requests reviewed -**12** [pull requests created and merged](https://github.com/Submitty/Submitty/commits?author=NicholasCiuica) (+ **2** [documentation pull requests](https://github.com/Submitty/submitty.github.io/commits?author=NicholasCiuica)) +**31** pull requests reviewed +**15** pull requests created and merged (+ **3** documentation pull requests) **3** pull requests taken over and merged -I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. With every review and contribution I've gained more confidence in my skills as a software developer. +I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. My primary goals this summer were to improve the TA Grading interface and the Gradeable details pages. As a previous course mentor who used Submitty to grade assignments, I used my experience to implement bugfixes and new features that I would see myself using. See a list of my contributions below: -### TA Grading Interface: - -#### Persistent File Auto-Open Across Student Submissions ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) -I updated how opened files in the submission browser are stored so they can be consistently reopened when moving from student to student in the grader interface. This feature now uses localStorage instead of cookies, since this is a frontend-only feature. -#### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) -I picked up this PR and reworked the way student submission files are counted to ignore metafiles, so that students with single files could be properly identified. I also added Cypress tests for this new feature. +### Image Annotation: #### Adding Image Annotation ([PR#11921](https://github.com/Submitty/Submitty/pull/11921)) I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in later PRs like the ones below. #### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) #### & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and pdf viewing logic. I also removed a dependency we were using solely for PDF annotation. +#### Limit Image Annotation([PR#13121](https://github.com/Submitty/Submitty/pull/13121)) +While image annotation currently only works with auto-generated submission images (e.g. JPGs generated from splitting a PDF), graders could annotate any submitted image, but the annotations wouldn't always display properly to students. This PR limits annotation to only the images where the feature currently works. +#### Show Annotations as an Unviewed Grade ([PR#13106](https://github.com/Submitty/Submitty/pull/13106)) +With this PR, whenever a grader changes the annotation on a student's submission (adding, editing, or removing the annotation), that grade will be marked as an unviewed grade on the grader's and student's view. -#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) -#### & Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) -I reintroduced important styling behavior that the grading interface page had lost with recent changes to its CSS and layout. - -### Gradeable Details Page: +### Frontend Tables: #### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the table's row order. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I also added a TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future can be extended to facilitate sorting by multiple columns. @@ -39,28 +32,37 @@ The Gradeable Details table used to dynamically add striped row styling using JS #### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. +### Submission Browser: + +#### Persistent File Auto-Open Across Student Submissions ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) +I updated how opened files in the submission browser are stored so they can be consistently reopened when moving from student to student in the grader interface. This feature now uses localStorage instead of cookies, since this is a frontend-only feature. +#### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) +I picked up this PR and reworked the way student submission files are counted to ignore metafiles, so that students with single files could be properly identified. I also added Cypress tests for this new feature. + +### CI Testing Improvements: + +#### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) +I picked up this unfinished PR, debugged it, and added to its Cypress CI tests so they would properly test password complexity requirements. +#### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) +This PR makes the account creation CI test rerunnable so it's easier to use locally. This PR was originally part of the above PR +#### Course Creation Tests ([PR#13111](https://github.com/Submitty/Submitty/pull/13111)) +I made a new Cypress spec to test course creation. This PR also tests the newly enforced course code requirements added in my PR below. + +### Other Contributions: + +#### Recentering the Grading Panel Navbar ([PR#12914](https://github.com/Submitty/Submitty/pull/12914)) +#### & Fixing Student Name Display and Resizing ([PR#12946](https://github.com/Submitty/Submitty/pull/12946)) +I reintroduced important styling behavior that the grading interface page had lost with recent changes to its CSS and layout. + #### Uploading CSVs with Zeroes to Numeric Gradeables ([PR#12972](https://github.com/Submitty/Submitty/pull/12972)) #### & Changes to CSV Upload/Download ([PR#13007](https://github.com/Submitty/Submitty/pull/13007)) I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. -### Other Contributions: - -#### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) -I picked up this unfinished PR and added to the Cypress CI tests to properly test password complexity requirements. and debugged it so it'd be ready to merge. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) Previously, if a superuser tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added server-side validation that returns an informative error instead. -#### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) -This PR makes the account creation CI test rerunnable so it's easier to use locally. #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) Since the Print Section feature is old and unused, we decided to remove it to make Submitty easier to maintain. -### Documentation PRs: - -#### Remove PDF Annotation ([PR#770](https://github.com/Submitty/submitty.github.io/pull/770)) -(goes with [PR#13042](https://github.com/Submitty/Submitty/pull/13042)) -#### Remove Print Lab ([PR#771](https://github.com/Submitty/submitty.github.io/pull/771)) -(goes with [PR#13051](https://github.com/Submitty/Submitty/pull/13051)) - ### Reflection I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP and Twig, writing Cypress CI tests, using Python virtual environments, and much more. From 0ca361bf493162b91de3755721297c8ef3a9c82e Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Thu, 6 Aug 2026 15:34:32 -0400 Subject: [PATCH 17/18] adding pack urls and updating numbers --- .../rensselaer_center_for_open_source/2026_Nick_Ciuica.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index ba8f7183..0a507206 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,8 +3,8 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- -**31** pull requests reviewed -**15** pull requests created and merged (+ **3** documentation pull requests) +**40** [pull requests reviewed](https://github.com/Submitty/Submitty/pulls?q=is:pr+reviewed-by:NicholasCiuica) +**15** [pull requests created and merged](https://github.com/Submitty/Submitty/pulls?q=is:pr+author:NicholasCiuica+is:merged+merged:%3C%3D2026-08-07+) (+ **3** documentation pull requests) **3** pull requests taken over and merged I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. From d9e48ce8906f2723d28f821fe1204828aa64838a Mon Sep 17 00:00:00 2001 From: NicholasCiuica <183861504+NicholasCiuica@users.noreply.github.com> Date: Fri, 7 Aug 2026 17:30:01 -0400 Subject: [PATCH 18/18] final cleanup + images! --- .../2026_Nick_Ciuica.md | 28 ++++++++++-------- images/image_annotation_dark_mode.png | Bin 0 -> 136253 bytes ...ltisortable_columns_mockup_nick_ciuica.png | Bin 0 -> 293801 bytes 3 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 images/image_annotation_dark_mode.png create mode 100644 images/multisortable_columns_mockup_nick_ciuica.png diff --git a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md index 0a507206..c17465ab 100644 --- a/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md +++ b/_docs/developer/rensselaer_center_for_open_source/2026_Nick_Ciuica.md @@ -3,8 +3,8 @@ title: Nick Ciuica category: Developer > Rensselaer Center for Open Source (RCOS) > Summer 2026 --- -**40** [pull requests reviewed](https://github.com/Submitty/Submitty/pulls?q=is:pr+reviewed-by:NicholasCiuica) -**15** [pull requests created and merged](https://github.com/Submitty/Submitty/pulls?q=is:pr+author:NicholasCiuica+is:merged+merged:%3C%3D2026-08-07+) (+ **3** documentation pull requests) +**44** [pull requests reviewed](https://github.com/Submitty/Submitty/pulls?q=is:pr+reviewed-by:NicholasCiuica) +**15** [pull requests created and merged](https://github.com/Submitty/Submitty/pulls?q=is:pr+author:NicholasCiuica+is:merged+merged:%3C%3D2026-08-07+) (+ **4** documentation pull requests) **3** pull requests taken over and merged I'm very glad to have spent my Summer 2026 working full-time as a Submitty developer! Getting to work on this open-source project in a small team has taught me so much about the development process. @@ -17,25 +17,29 @@ My primary goals this summer were to improve the TA Grading interface and the Gr I picked up this old PR and made finishing touches to it so it could be merged. Among other changes, I reduced code duplication in the logic to open and close the annotation window, and I improved the annotation toolbar styling to have higher visual contrast in light and dark modes. I thoroughly tested this PR and identified areas of improvement to be tackled in later PRs like the ones below. #### Remove Leftover PDF Annotation Code ([PR#13042](https://github.com/Submitty/Submitty/pull/13042)) #### & Remove jspdf Dependency ([PR#13098](https://github.com/Submitty/Submitty/pull/13098)) -Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and pdf viewing logic. I also removed a dependency we were using solely for PDF annotation. +Since the PDF annotation functionality has been removed from Submitty for a while now, I wanted to clean up the code base to make it easier to extend and debug the annotation feature in the future. I removed leftover PDF annotation code and split/renamed/moved files to separate image annotation and PDF viewing logic. I also removed a dependency we were using solely for PDF annotation. #### Limit Image Annotation([PR#13121](https://github.com/Submitty/Submitty/pull/13121)) -While image annotation currently only works with auto-generated submission images (e.g. JPGs generated from splitting a PDF), graders could annotate any submitted image, but the annotations wouldn't always display properly to students. This PR limits annotation to only the images where the feature currently works. +While image annotation currently only works with auto-generated submission images (e.g. JPGs generated from splitting a PDF), graders could annotate any submitted image, but the annotations wouldn't always display properly to students. This PR limits annotation to only the images where the feature currently works, until a later PR extends the functionality of image annotation. #### Show Annotations as an Unviewed Grade ([PR#13106](https://github.com/Submitty/Submitty/pull/13106)) With this PR, whenever a grader changes the annotation on a student's submission (adding, editing, or removing the annotation), that grade will be marked as an unviewed grade on the grader's and student's view. + + ### Frontend Tables: #### Consolidate Table Sorting Logic ([PR#12996](https://github.com/Submitty/Submitty/pull/12996)) Before this PR, when adding sortable table columns, a developer would have to write their own sorting function to manipulate the table's row order. This led to multiple sorting functions with lots of repeating code but diverging implementations. This PR consolidated all sortable column logic into a Vue component, the SortableTableHeader, making it much easier to add new sortable columns. I also added a TableSortManager Vue component that currently enables persistent table sorting across page reloads, but in the future can be extended to facilitate sorting by multiple columns. #### Fixing Table Row Highlight for Course Staff ([PR#13037](https://github.com/Submitty/Submitty/pull/13037)) -The Gradeable Details table used to dynamically add striped row styling using JS to account for toggleable rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. +The Gradeable Details table used to dynamically add striped row styling using JS to account for hidden rows, but this would override the CSS styling to highlight rows representing course staff. I removed the JS style assignment and replaced it with smarter CSS that skips over hidden withdrawn students when striping the table. #### UI Design of Multisortable Columns (Under [Issue#12960](https://github.com/Submitty/Submitty/issues/12960)) The ultimate goal of my table sorting PRs was to eventually make it easier to implement multisortable columns. While I was working on these PRs, I also iterated on potential UI designs for multisortable columns. I used Canva to make mockups, presented them during our daily group meetings, and implemented feedback as I went. + + ### Submission Browser: #### Persistent File Auto-Open Across Student Submissions ([PR#12931](https://github.com/Submitty/Submitty/pull/12931)) -I updated how opened files in the submission browser are stored so they can be consistently reopened when moving from student to student in the grader interface. This feature now uses localStorage instead of cookies, since this is a frontend-only feature. +I updated how opened files in the submission browser are stored so they can be consistently reopened when moving from student to student in the grader interface. #### Auto-Open Submissions with Single File ([PR#12625](https://github.com/Submitty/Submitty/pull/12625)) I picked up this PR and reworked the way student submission files are counted to ignore metafiles, so that students with single files could be properly identified. I also added Cypress tests for this new feature. @@ -44,9 +48,9 @@ I picked up this PR and reworked the way student submission files are counted to #### Configurable Password Requirements ([PR#12455](https://github.com/Submitty/Submitty/pull/12455)) I picked up this unfinished PR, debugged it, and added to its Cypress CI tests so they would properly test password complexity requirements. #### Create Account Test Randomization Fix ([PR#12898](https://github.com/Submitty/Submitty/pull/12898)) -This PR makes the account creation CI test rerunnable so it's easier to use locally. This PR was originally part of the above PR +This PR makes the account creation CI test rerunnable so it's easier to use locally. This PR was originally part of the above PR but was split off and merged first because it became a blocker for other PRs at the time. #### Course Creation Tests ([PR#13111](https://github.com/Submitty/Submitty/pull/13111)) -I made a new Cypress spec to test course creation. This PR also tests the newly enforced course code requirements added in my PR below. +I made a new Cypress spec to test course creation and course code requirements. ### Other Contributions: @@ -59,20 +63,20 @@ I reintroduced important styling behavior that the grading interface page had lo I addressed bugs with the CSV upload and download features that were caused by recent changes to the Numeric Gradeable. I also recommended some wording changes to make the code and user-facing text more understandable. #### Server-Side Validation for Course Code ([PR#12949](https://github.com/Submitty/Submitty/pull/12949)) -Previously, if a superuser tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added server-side validation that returns an informative error instead. +Previously, if an instructor tried to make a new course using an invalid course code, the process would silently fail while giving a success message. In this PR I added server-side validation that returns an informative error instead. #### Removing Print Section Feature from Checkpoint Labs ([PR#13051](https://github.com/Submitty/Submitty/pull/13051)) Since the Print Section feature is old and unused, we decided to remove it to make Submitty easier to maintain. ### Reflection -I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP and Twig, writing Cypress CI tests, using Python virtual environments, and much more. +I have learned so much during my time working on Submitty. Our heavy emphasis on teamwork and reviewing each others' PRs allowed me to pick up new technologies quickly and begin making contributions across multiple of Submitty's systems. For example, I've gained experience making Vue components with TypeScript, working with View-Controller-Model architecture in PHP, writing Cypress CI tests, using Python virtual environments, and much more. In Submitty's fast-paced, open-source environment, I've gained confidence in my skills as a software developer and tester. I feel my time here has prepared me well for a career in software development, just as well as any internship would have. ### Next Steps -Here are some things I'd like to work on at Submitty past the summer: +Here are some ways I'd like to contribute to Submitty past the summer: - **Mentoring New Developers in the Fall:** Over the school year I would like to mentor those joining the Submitty team through RCOS. I hope to make the experience of learning Submitty's large codebase less daunting for new developers. -- **Assisting in Vue Refactor:** The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making contributions myself. +- **Assisting in Vue Refactor:** The ongoing Vue refactor still requires a lot of work, and I would like to take what I learned about Vue this summer and assist, whether that means reviewing related PRs, teaching new developers about Vue best practices, or making my own refactoring PRs. - **Further Improve Image Annotation:** There are a number of image annotation issues I've documented that I'd like to work on. I think annotations are a great supplement to grading, and I want to make this feature easier to use and more stable. - **Multisortable Columns:** I never got to implementing this feature over the summer, but I laid the groundwork in my PR to consolidate table sorting logic. I hope to continue working on this and other table sorting/styling features, and I would also like to mentor new developers interested in assisting with this. diff --git a/images/image_annotation_dark_mode.png b/images/image_annotation_dark_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9a7c59ff1a4a6ab1e2db13debfc4cc1d5e0936 GIT binary patch literal 136253 zcmeFZWn7j0)-}46loX^S6(l4D>F!QNIs`
;b6e#1?~UH&9Q>KhO@?kl zVh$r^oUfujC#(arZ1+ztA%H`+L=w|^y1K6h1%E0xH_>E0pg(k87swfY?&2u1WwiC> zcDnd;EipN*<{%A?KGQM>mOLo!e@E^@Nxu6sGO!sKf*2Y(vOHofps3aJ@B7G_V4lz} zUY>29h9eP+Ud?Ztsxy9zCYg66oJ7>rZzhmOtx3k0*w|bYlQ^Fca?5CT8wmMWKfy3t9=!(O{RoT30Q1wj1-NS>tQHvQ8 zK?Es>+4gd4`Tp=?ScI2IuJd<7`pC|wG7!dHw?;#a{q%2lE9L- {>zhqR?B?;f-cSoHWO%tod1?!=X{ zbKwZC@7r&t-yk3e2W9&)T(85 Bj&`Ln|y_@*^GmqvW H4`9p#T9S$I!qZzfu8qegJu~i=+wIJe9-vZ|MMrF5iS@0S!1|lmUzsjAw>08 z%3g&joghgw8P+Ep3DeRNvS<}cfCi{lrkj)(ah$^QKKzO_RNYiUZu6g8TKPTJxGyHk zIVX=3pU*va_u`Y@Ntnri_yjf S|srBM@>ISw*AyFc R?k)E};xZ540+B|;m(%vd23GqOsIemc zi^FHrdWKXaf24?z0-w|#(tObpreSt-KacML)56NHLX-=g2Cjj{RQsloprA%)7tO*4 z0xF~XBwKFeirU?zCkN-?t{yb`&ooq`H2=$k6(+*4%%SrFK+RQTtjGjY)3()2I2N&i ziETP%TjzTiybTHO**W^QuU{1--q?WPW4bjF5Ofi0)}e|7EkM8*XyBfo_}(#Wx9Jx! zr=z8FTwGhfm0`j`^e_+o>Xlod!@6yTg!SA{+2ddol>?K_+*!GOS9}M7dXX`Hy9M}< zzzdYar5l$h_%pJkq@=I>2b83;SJopv1; BBS%MJxPj!+Lg1xA9#h&w%0Cyq-XJ0{*r_sXVV)ASPv;CKU8^sq _~I(+Xv zF`FKd%lgo3lJ19KzUTmp)%JqI?k9UB R<|yt&`WYE=BDPrc2l z&cNH|{V#t(1W=sWkuBGMVg=JqnzTF3J^#lfLm=;Q4i=gG(dfc1AX;*ZA^?Mr1ZgpR zs{3h B0)BTFFZP&(+brIvQ*hy5lC?8_%Vu@cufJo!@fL*nAB2kA~mzI@uCNP zUoK*)yG{7vO}thMYwMsx&qHattq`QE3AyCamvPLOpOXy*-NH0=I0ca2*4Bo&E3peC z=G-`E4)Vx=XN*L=9$!q1J{zT-AC^^|*Rh({`~HeP6Uk#rgGFj(?Bfl{*nt34cZ{~) zmaDAN7Z0yTg*^HBqbRAYt%H|$XxnlDxkr8#>0>Y_GAp^HB~$R(-{$45D@A1L4Kg3O z{$K(F(JY)&y}?xlEPtRfvEa3`C3W>R8B#!PfClc#&zU` VF$+{t{{l`TtL|0orAvQsf?Cvj3;m&p_lp24 zw4|iK3y!!#JSsf#?E?x~K3iB?0cIUnqdLtO&VnOkmwS+Uk;_^YxWb;ack&$V^)wUQ zh(EaN`T-b@c_SVEC5|Hj;~#xg=}taRn1TNL3xSyOlc|neoS4JgBbMf$JVsPsp5mk9 zlOw>bW9kd?e{=?>;`5GL;OhWQhCgEQYX>L3ayl1*3i)ZKehqsv`Xy_gR}DLo2Ze%0 z=iU|ukd#DT$KcDIov6d^f7Fi&4j`r=#2avVA+13`eFk00*p~r!47*W1EBY*O6nfRq zLVjOf1aXAmC=Lw#BFgVcyKkjlpx#0(#`Y#CgXD)qFjlFo`9qlcPu>TD@>T#qfgtRF z4ghKO-n(g-IE2Ozfh7S>97-w`#hiU6DBN j&mwX@-1OK#svxrg>uMAQ- xM=8axz>1Ioivx}G@(MM`dPm02m?oW!}w6M(72i1S8v;_ zx+y4R4@FMYCuKQwl#aHOC7K4GyDmQy@*orln#_;hMU<4Ngfw4yz+v3@g%h19><5?K z*^^?!Lq@xa+He#Me6v?&G(Xcs7};Kz0xj}*Xrqqb?}C=y=u@QeYt~l#E-l4~MV4lE z{qUY NGx_b9f*zd( zZiTlcuFouOh6uV?DO5_=*iA}kYI4VNF=`DmC+5jWS5#E2UQENvK5`pZMWqyA00+XR z$SDE2r& nWFOshAJIZ1$UG zVsmldD)z--(R2ugaR;8EJGCZq7sMSiBo8YUio$hP@ 7 z^=QBH_M3(EP$ah$@x-cU>YPl_8?}k-gcwqlZb~{w@QW8nZ_iG9Z&~kFyhPoH$eTiV z6udS+`s)tIKX`W2z;v0`4;zG#?f+F5XtO6?{r+4Av?M^za-R-%oKq(v*Nq9=1TpJB zlt0pVFopxm=tM=S<*%8_$jHq0&LSeIgs1^r^64?=L$6R p@!Gb-D7Ryu!TJYj7HDiF@+A}b<3%aF5Hm8O14J1#D4-fQ2dv)r{ak6W)RQQP z1VJa`io!l8nrU>0paJTftYf8#cp2$Y%3BtH?_Abt*i_pXZ7|+Qj7Xp^lD8zH5P3=o zx*o-5$P4oB z{E>QDsVjoiZ8$IUWq?OZA=?I3Fzivsmrmwmzb-{83kIeYA_mozm%#PCJZ+TCX#wtb zXW&cw%}x7eHvMpqJ-@Gw<=Y8$f$_~Omo{TBeNORmDdg3Q26d{vi6y1B!ZWA>{pZ>v zuIL`&4MBPW>oySBad=I>Qa|Wuv-$Q?d9j |aZvK1D3}}%CFt1?6gdopDPf}yN%d3!gL6N-Dbn{#U>Bnkc zVLRTBZzAK~eh7UN6Q4Y=FDZCwTg5*L{I7;Fqn`HF-veI?BI%KKRJ-&sux<6TMuf%0 zbQE6x)LG!SUD50%*r|vr!2*vMct6NMXUQsmaO*DT-Hvs3vH$enOlcV&tV|I@S${+B zr^nF>f$G~ce81w$uDOnti6_Vgp`NASnmpfMnwEqb0et42L^~DxWO-H9A<7JV%peOv zU%``x4vx6GKVatQ^)eAx4012h>duo{VcXr=34y=|wVCR =WXq^Yu{UENnJw@V)euVWBU`HZYQ}|L>@d99ZI&;QF~`*sH>#~&g>Q2Z`=Pg zPGCZppndzh?n~OE6I@~6GgP^lbpLci0!so zu zBjI;@-pZ0KkQ#*?JhnB%mbm_kRCmqNY}fezZer6d{M&DIZblS@w6$sSBTp9$h2dq0 zZ K{>R=uX^3mAwaM!`i&M~@~c-IF0 zx-HBq?Ohtn0+2dBDd8)3`DXv)|8BZU9E4%?q~H?#r*}>kIsl=t$-0BdH6p}MexO Fz+2)BH!{_k z9$ObluJ$ixK5%UE$lXsVudWC-$`9%vLm%R;F4xkN%2J2V!O{QMLvN^bF#QEQ1?8`j z+#FMBRqoJ!s2VCsnJ))L33(TH5Z7-Z{BMb8l?Q(8N9RhW6ig=(OjoU!MD|NQE@Hl# zXiIR1!3s|B*vt$&@ja$yH8X&HNt3)6%CE Ax=jsod(xMYZ1fK_^2xAt~AK zpRP%7{$KYA7P0USl%+l5z()@{TQ ?=?rX=JcNBVcbLt5tN^Io%8H3cWN z^_7=IR~DQ)PxH&zSCVSD$%=~L#C~$%@3= -2y1E4Ctg zF|oj5!o< NvfOz*35wQC#R+qimLVdH zI&Q@^#gG55Ue(TjdR5DjevW^7RkibYWf>236eS@dAp6X$;xm ^s@ffu2T1Zb(Mn2C)=O}dC4x{qlTab_B-ydXCr%EmY~2xy-$x7 zEN>~ !EWx1UYoj=?n^p3^HK}_1b2yy;91f!}YQU7vW%qti2ioZR*AKr!?ms8* z#j^k3h7P&}VZmugbo_hh{=(yb{^t~}oFa}4Q~!A#V?)#K|9Bl!{{Qd%XF!hAW_}My za{S$BtG+il``qfe1*QvVvLw1K$P*&^zVL>Js&tOe5nZJo`R@4f1>tgfV*du^?II(h zz)%rX3;oZs?A`AI?-*hGNK@|D 7nXT4Xa$(zNZD9D9#v`IyEV7B6(dl-CG zfN!tp%ya6wOK0m9GL4MiQK$^Zda>e;Rx0NBIc{8a#H*x=J2foq$KQ77muKWhY*a-u zH4Rp9&(Qa>8;s%Vv{6v-Wu8{xMkKM~nE22Kq8ATrq}e0))#fs>-LIYxfZ!za?YCl< ze4?s4e?sC@4bfPlgX J7V`*@<);4^!Ic-GMM`*I+m{0nuT)#?P5K0$GeMp zy3)rl!K8pJKEVO~6|imI=qN1_8;Z>Qm003g#{{M#R0@o5or8g*yLhqJ>AHWCSR`~{ zd~x8<&P5(uh)Cv9mZ+p7N=4YKrxp>R4{?@0c@Zp9K3_st%KlWGn~u&VOzX(|iT`cU z=#;qh6ZSvIU=&B=b>{0UFjkPiC814WaJR5c$+`=@Cyce5QzBGPjprG~pZd6&fON_( z>v4+2F7{(D;z-YvwLsdeW@0oS=WGoDW*t;77R*GdTYHX#1IVeJbnYoIa20UJySKJV zK|_2^#emycZ`0T#S=kOPuSCR#(rAlDK?9$_#V$&tZbR>*X`zPNG`&(1lAm#h%2Y!j z`%{7PYX39P>O*kP4Z!HeMh1l;4|9^?%Ozv7gZ)8t8vo4}^OZr4s7``7PKiZK-MX<@ zZF|Odt45;Y{e9Dso#xtNCRK1;vy*hpue#DLANT@d%>^>~-{)LOxn|g21 Q8q RHYIt*G(7=OplB(e!BC>!j9EEox=h!QzE~VAT6x+W?${F4(rV{)5C*eAmi^;>% zfFt20OEPZ9zTWjZzeN|%Mm&WS{yX#qS(@})G+fqRD}>psybI53O4Iuqh8yPgvRY*y zPhX&fg;&_9v1X@%e=H~h8lg5u_g2R8Zoml+!O0FtT}e+^=}GC^*oH T1uJMK6^u?*}@fUkkg>Ea#zi zb#5EsMi8Q3K<|!nSHv%8r{7dc)U9}jY|>hcD8sL^jv8;0HCQL=O97>Z1YwcJOlMAZ ztwS@J;4k^6 { zu{k_S@BV31q!|01t)es}Z|8DxODBr}p(ZMhC2Liu3#oY`% z-+14r(lBvYHPI->aVE{6@TCFUJvS1W=CwM6Ewj)IWMD2Dhn$wp`lcHO?ycW`dr-qF zltH{m6EZ&KknxQ@*yrX>1;ggSb+?3OGCQGG+Z02d_u4mTX!sqzF~u-7b54Zf9{%1S zeA!4nr+YZ_L4%qg`RDej*->LBd+Y7DL5@RAF}wJ!widN2l|_1m!^ w23!T^ZO~_b64#CgdgtVx=p2r$P@16eYQ`L)r~EpafX43Efald z1ANn56RsiS+znu~YU@ZFNZJ)@^%-%P{>k3DMY+6B-znI-6+`dWWs^xr^IUcMtjl5i zrrp5ChZ+Us@5aoLIEP-XTPP4qL;8T1{;yZIcXYsC$Qzr&ZHJ2Vks LIJTg=_?Mz-+3KB+F~`YaSlmw{|+2BLg9i0#m90#D%}NR|QXW~zp<+2z!4Ou^Y0 zq(hOsoJNV{5)~Se`{y7*dkl5>h$4HWE6m0jpf!R1Yb5m*pgJu%nRB55aC@>Q=Wq9m zQ=0>{! WU2Iq1Ys$mJ0?zJPlTZ1TF~XQa zlP3an;4fe>eRrhl9}`pK%!9mRxE+&OwddP|NtaUHDTA{MnuOHUiQ7Qh9+~%Dy?9M* z3RGzrJbz)N^3>R!&k8fqb~kMZEBGq3t(yH#SwxOON$TZXfg Gh@o!V$-&_C z9=UGm`Wni0lave&ctXH~ltd0Tc*sXIm4H9=-k~CZ|7?r4O+~gsf^=-8m&Te4S|Id$ zM!=lKKW&~yw&)LitaK(8c0alf98nv{CXxLh(_z@#bL3S0V1=WBF7~7r`NR`_UR!Z6 zb|`7{=&t!znT@}*;dzU5> Nm159(xhcW;O2t0wNn zSQ9BRxghj|cK@;jXu1TS$93jJ#gs&P=<9jI Vm6Qr6Ra4ytWYHMxD*?A=h1NSowNxAd)FRU@0eU190#l|&Q zawvE+Ksm$HFOZKscq8VyVR#&HFt4`}%S;Jjf;V+^Z%BTHNLY zdS9zha20nTXKuS?a`b(U9*_0o%`{!IZA&r0HJQj;fTtF$Uc9ZVP3VBN9?M{%@N~H! zX{MQe`x|cKs=fbDDa9nG5a_sJd4LM!5Km`iwN^GbEx>YtG-glMzitrt04?D P;~_R+z1Y&N^tES;Rxy`kj)2U{wBd zBB>9}tstVRq?}}e-K4yxCKP-<9(Q%KQOBw+&G)I73iNC6pzMc_gIAHQ|CtE*4XUii z$*b?WUAvK7q(A)g&E7l?@*S7~%Ri^Pi=Ej%r@W@eNYnQ69~GU$Q$>S1Ph4o* tQt1I}og;!I(=5~#>6~{z@|kGz!GO+bX&{d8?fV6Bf 5Z|UGsAEutk zTzSvAnNHhDgJ#a7NfQ+FxFbFks%7AB9~!SaI9#$rQx@f9gA2jl+Hg_o>Q*xJ(}KB{ zGnT7kJv(^M;qf#cG6=vU0_^^LoQr^dveQ3QIg5Ss9bnK7#QQyNx*2m{fLTqH4)eP$ z8CbbHz!jgP-Lu(G%K-K} HIWY-(D~plQP206 zu=&a*Iu6XFLDs-(CbZb@F8E `!2>Fy3e2~p`5X+gTXyBq25?*8t%*4q33o%5Y>#u>-4_Zs+$_`Y*K z&wTE moNC%)kL1^jL)@kwJlqI1xH3Hi_K~ILAptQp$~?1A6DA z;jNsRwL26Hq2Eue>HPFIbUP7A50YpqGQWeiI?#pse<`EkH@VVIgsbJgxbAc$XzEYQ z_q Xb9Hfv{4=D;nl4SDXKEUlRY~RxFp3$!yPgQ5K>r&D z37DKoPVHtJ{D{KO>v+o#1vQ-nOl~Egbku)ks;qB1zd8kuelshp+aj+LqM0oR$q< rr<1Zn6EYf<@OXKyKc>DEV9Up;(CZH~9-`nS}o4Az43+Dc!3FC(jdb z*Cu_FAvqhbaHMPuh%@RBk5C8gmAiWi9wlYqtp>jYhy7o@_vEf!`)f*t=J@KBd;hql zB-mAT0!3emiq`gM)8gH_We{An5r_@Efm_fz=*iYXOW l5@sw1SC%!U0ks5ZqtQWSl2{!y*{+ zIOJ~7^ flKd`ZZ-fw_m&CpG9eC=Rb#GM9m z77!Hvkb9(;zzeb=2+~p&i@r!ZC>V{DV%rKm2g5KcnN0K!qoLsgBctyk$vL?);e0Y8 zAergOP{zN1|3kLT_*L+Vim9MO+5BjKh` sdn256N{Eea1@Gs8w<9!$|-y)KAw#NBbR{ zPXI`OfVlB)bHf-3ejqdgw2+ARE)O kcM%8vzhcfK%0Jp{QZpyk>D@U(JPC)Ezzr!c$(wThAho0BdTR4_ z?o<9QRx*dwD7=|$h%6Bx8UV3;s%L#}f;{x}(4>hYp;EGM772!qte3lH$~`W84nX|F z 4`>b`fj0BXiL?GO012^HSTL=hE5V|ld1RjnIEneIHjYbG7HxyuAleOxiPjBM{8i7 zxA8!<^qSGu5Yy@q=Q-tWbuk(0BfkAu0ar!|Nul2gsz%{&VO{W)-RpgiQvExsD8A=@ z?L;R<^PDXQT~h+=>c zr<~Z%TyDLq3CuIjK1)rMRGASpP#c1rLo3*2W9$kqcq~l_)R?D&DuwNdnUlWAuKtWy zL<1*-)|6h{odK~GvPF!8^(ViA;L1cURDfbyjaN4Y3+q|+bj31-&kcP2ZjO+E-`Jo8 zVpJ t>?4erAd| zL)3`9RY`86<%rD2hd=cgu%{72$=|J7hEh1@kSFkj ATc4ARJ3>JF2m|2c}4!y>`M+mJ8 zwB91{_LWMU9wDK*1nE%9vb#D|A&th*h>)BD!Ud9fs4#DcITDJzc=7Q$xG|>I DYr%h$ApDdUm=347WY4R=Y1{3u5J2$N^tB7aSI`7< zBZw2cXabz^$jLpy(m;KGkHVpH6q`Uzg0!>`Vq7$V)7v0x<#ggiA!1bX09PI2X+tVi z^os-4_ rVP z+QJY{>KC^75?H=~Vov-Qzq$)FA3PEVTmrgM?L7|7l!&g!73aL%+<#KBWEP~N*^ODi zu<`}sT_n7OqS Ol+!Qtje5LeVgeA zCJ&ag6(>3d$2FbuySE= R1eJ9?7CAveg514m&I&%fdPs3JTaVoL7MHqwRJk|I)%3}E;ccl zrB>q2=Xf|flhmdgm-SWuPl0g&2)q3R)5>gxvUS%T^qGUyDlG_ldYB)=`3{hx&ssu0 zcZ~51R042MojeqbxwSerT~QukAC%;%Gij9iQ;P&54h&EV4CmPj0ItA4|IXK2X5sAC zw?N8+Q^1WQ@`a)aK3vV<;8jYOZqmLpnxyMAY$m O#7|j)JNbIH z{*V-u*GPZ{ctbKS2QpZgjp>Tg$h8LSSmV7>R)JEunR^Zu(kh@kx8pt6>mvk*6tx5~ z& Q1crHd{ORY8fF0{isoW#5xos ZrpT0rz7TCu#wzbi@X}vswE?Zmi(!{OyaMpt-6 uL>NH79{wgV})XgYJrjWM;CTy(Ww=zigdDM~y6Y!dUHUyYfKO>Ic}kQpQ$ z@Sw*!%BNft4-c(ZlZZM3`9H-4st97l1LagL)YPSazPN7Z=tvx5Je-Xx8vO8!NFc>5 zM2QI?@NIQQYCrS2NSZyqNr$*yz|Kl~X>zVwj@dUpjtyDKOZYqz8i1LLP4e?U* tGLTG-3b0eM{wiTw%|JXBc5%ev+* zxIj7{c$2#6-H~EK_J?hm^4%{)zNx-|eSEaHE`S%5BHna3OEbOtO?wN(1i|#mw z3U `Mq0-Q?{zgs3z3P@Nn3+;5~8tX|ZE)B9U^ z_^oFgNTx~VL@vN^_7ZAF=|dTH>p*z|Gdr9cPpn&CAl}|8hzU)bTs$EeBo66XvK=A= zTjht|VGILnGC~FoU+ILZx}r&m`otC&JoG!~>;sTaA$hMjOUxWi65<&OPee?rDm9 z2Nh6A{L%SC_Hfwd4|{H1ia@an0%QOnPsNAx>TvU)8(ou(J;8-@DOEk429bb|2($~m zcz^%vjtg)p5m~-&3_KBGziutlIyaQOOh`!BK5Xnzrr1U_NQK6e*CF_~&}o~2cuN~B zV8cavJcJC XUeKP}1`Iy>DKp)LP0DO_bPc(yUY}(_;f#)K!jt`= z#po=}EJk#}>c)U5W`jLj $uNd3c&u zPfSo$I3)d66iOa62c;h2S^k}y-@YNfTA)noUOr(e(bLSLNR?|r{E_v$m&ir;dM&$s zc5In%FhT}`8%+3-+y#ap=R>WcKgOO6jPm+i>2l||qX?d-fj?i8*HfH->_CW@7iTYX z6cHg?i)>1cgT#&m9^{orJF7iMtD6$YV-lh`h?LzC5hEaSX1Z4qQ4nx-K%GkVcin-A z@C!hsbxzMpp)wo(WJ49H2!I>5HiET p`R2`AwLY#!WN8~CTxs2V%BIo}L-aPW$ zaAN-vH=-jOVL>6m)dj9JxZT|!Zf!61XhZbSI~uE@5eu%S;T%ictIqtlk^A00Y##p9 z5!91T*8#85lcBF&-M)I6v1Ynp*JqC@^Va}k8iy5!T=h9WrUvabP@=sx?6#bc0Ux=G z$`NLxRJi{o_BlzqLRLdenXMKml}oJ+NJD ed32KeDhBn!bR}H^HT1?rJ(s0BKE6&O;FA zy=@ybemC;thb*Vdy@%t|Eg%8MBXb&mXx!LN*;B5=<4>_$YKtO6!b`#DfG+r|^6iUO zrzQ`osks(eVeD_ IBsBJhAF2*=rW zRifD)?>u;1T>3*_bQYauxGO30sj)x6fxzUu2=^>7JX0YZp)NrdJ++}w^C6~oVI*BC zx{~BeAdmge$TC(r_EsZ?gO?dSKLsD`eK;;<9>4wkn+%?BX^J|T8mj$HxjxP7Pagam zkG$^bphnFID|@sOXWMx3A6)<8%y*f=&rJBr*HOK@6^Eq=2T$}V3cAL VKFr@~L`iECNd*POq&y$I_UTex_Ea4=IPiO0_+N=$isH(KnBU;GK z%D7LkIPWns;;=-}a}5t=qgImh+=#kV4&-;{$7@?GSU0faF9tzw!e(Q<&;_UC0WVTm z`61|>un%3O9LGcc?PEBo;fNE0gDHWF9S+jR3Km2@iVEoicXq0ndVWcW&|l0e=BTYi z&(sj_Wr8R32tuJ3FJHzRgtQ7%55LkW`Xc|BfR`^QCI0#~P6IjGw5EH2!tT#HbZ}Ar z_}rc3>37eeS6nVGThgxio5Os4)7qH1z(WAl>;01h%1_tvQ-0`e1|mm)!fZSgLTck& zYsxD4U#u3!^niE}yjfzF)U#5UL g3@T(m4(lUe3@BfqCaW#<&SQ{mUM z(a|B5hgDsauWfU9UPH$VNG1B-OS$e<>zRNn%HJjq$e1nYBa4iDC>Pr~L=SN}eZ!bE zNF;i+JNI1`4md2sEhc8x*RSZ&(jrj|U=A8A6f-qEU8`^2fABilCdUo(@x5Uxc`S{jX($GRdFrPgmUl$aqj^zurK$=U}@AYcdG zJU!8X9$4Fu#QUB_xzw_Z-(m0JIE5mB7VNfnlGun}>8qWBWHlTvp#r0(?>JA 3+nCd3$)!eivDbmW{cISxjHYN(uB zL|}pQm#view{sag9y&3Qd!&=C9+{IPx!faWY0t&30LPA18Skgo&2!N$W4i _|Y#5g1 zZb1>MGbtL>^5)As1dvbdITi67Y+Mi_++|Z?XXBozcRP8o;mNqkzD`Rd{mo@zN7^^g zB3#Al${H|udWQC8MuiY9nMtFv9^yv-Q0SRx*J)l(?J{|jcI>J{H60QvK%6}8IIy*~ z1O>m)_Pd6um6>-6BXY^nB1DAHBl|E^_%t$+wIK-1#(@;-(z!2o>~q1rf