Commit Graph

210 Commits

Author SHA1 Message Date
db966eeb9d Capture non-JSON error in newSentryTransaction
Using the JSON representation of the error only works for some errors, whereas others are simply marked with a {}. Still, we attach the JSON representation to the Sentry event captured.
2024-06-17 14:40:56 +02:00
a99d86068a Refactor newSentryTransaction to use improved API
This change is based on a suggestion by Sentry staff. It requires SDK version > 8.4.0

https://github.com/getsentry/sentry-javascript/issues/12116#issuecomment-2132812315
https://github.com/getsentry/sentry-javascript/pull/12138
2024-05-28 15:08:47 +02:00
e20ee45464 Prevent duplicate error handling for WebSocket events 2024-05-27 09:43:41 +02:00
c5b774f752 Convert errors captured with Sentry to JSON 2024-05-26 10:28:26 +02:00
94404370c4 Upgrade Sentry to v8 and remove custom Dependabot grouping
As part of the upgrade process, we need to rework the tracing instrumentation. Now, we are just wrapping all async functions in a new sentry transaction, which will automatically end once the function returns.

Further, the structure of the Sentry packages got reworked, so that we only need a single package by now. This removes the need to group dependabot updates.

Co-authored-by: Jan Graichen <jgraichen@altimos.de>
2024-05-24 14:52:14 +02:00
86c67f3c9a Refactor code execution to use async functions
This refactoring is required for Sentry tracing. It ensures that the respective functions only return as soon as a code execution finished. With this approach, we can then instrument the duration of the functions, so that Sentry spans are created as desired.

Co-authored-by: Jan Graichen <jgraichen@altimos.de>
2024-05-24 14:52:14 +02:00
65416934ea Explicitly specify depend_on relationship between assets and config 2024-05-21 21:56:31 +02:00
336519b21d Refactor CodeOcean::Config class
The new architecture memorizes settings (which we mostly did after reading the config so far) and also exposes the resulting file path as well as further settings.

This change is a prerequisite to define a dependency with Sprockets.
2024-05-21 21:56:31 +02:00
dcaedfa9fe Remove url_helpers from editor.js.erb
- Rather than using a Rails helper, we rely on JsRoutes to provide the route.
- There is no need to remove the events_path if sending events is disabled, so we drop that.
2024-05-21 21:56:31 +02:00
6e4e376c91 Fix missing linter results caused by incorrect JS loop
Fixes CODEOCEAN-FRONTEND-69
2024-04-24 17:52:46 +02:00
4f8d313da4 Use webpack to deliver newest ACE editor
With this commit, we change the delivery method for the ACE editor from manually copied files to using yarn and webpack. As a side-change, we also modify how the mode is selected through JavaScript instead of Ruby.

Through webpack, the `modePath`, `themePath`, and `workerPath` are automatically determined and working as expected.

Closes #250
2024-03-25 10:00:04 +01:00
e366ebd34c Resolve deprecation warnings for ACE Editor 1.32.6 2024-03-25 10:00:04 +01:00
43f93af575 Fix missing confirmation when deleting a user-generated file 2024-01-19 11:06:40 +01:00
bf0e6149da Remove obsolete context-type attribute for submissions
The value and function is no longer used.
2024-01-19 11:06:40 +01:00
6d62dfc3de Remove anchor replacement in active_file.filename
Previously, this replacement was required, but it is no longer (since we are not using some form of direct user-input).
2024-01-19 11:06:40 +01:00
e2c8156f0e Simplify forEach loops in JavaScript
See https://stackoverflow.com/a/9329476
2024-01-19 11:06:40 +01:00
175c8933f3 Automatically submit LTI grade on each score run
With this commit, we refactor the overall score handling of CodeOcean. Previously, "Score" and "Submit" were two distinct actions, requiring users to confirm the LTI transmission of their score (after assessing their submission). This yielded many questions and was unnecessary, since LTI parameters are no longer expiring after each use. Therefore, we can now transmit the current grade on each score run with the very same LTI parameters. As a consequence, the LTI consumer gets a more detailed history of the scores, enabling further analytical insights.

For users, the previous "Submit" button got replaced with a notification that is shown as soon as the full score got reached. Then, learners can decide to "finalize" their work on the given exercise, which will initiate a redirect to a follow-up action (as defined in the RedirectBehavior). This RedirectBehavior has also been unified and simplified for better readability.

As part of this refactoring, we rephrased the notifications and UX workflow of a) the LTI transmission, b) the finalization of an exercise (measured by reaching the full score) and c) the deadline handling (on time, within grace period, too late). Those information are now separately shown, potentially resulting in multiple notifications. As a side effect, they are much better maintainable, and the LTI transmission is more decoupled from this notification handling.
2023-11-23 14:42:10 +01:00
ce6470cd72 Carefully check for tooltip in Run-Stop button group
Fixes CODEOCEAN-FRONTEND-5C
2023-11-17 14:59:49 +01:00
35a65e4744 Check for element before attempting to show spinner
Fixes CODEOCEAN-FRONTEND-57
2023-11-17 14:59:49 +01:00
8fc5123bae Exclusively lock Runners during code executions
Previously, the same runner could be used multiple times with different submissions simultaneously. This, however, yielded errors, for example when one submission time oud (causing the running to be deleted) while another submission was still executed.

Admin actions, such as the shell, can be still executed regardless of any other code execution.

Fixes CODEOCEAN-HG
Fixes openHPI/poseidon#423
2023-10-31 12:35:24 +01:00
2200fa427e Gracely handle missing editor_for_file
Fixes CODEOCEAN-FRONTEND-3H
2023-09-20 00:35:18 +02:00
d224a099e0 Return if editor is not defined
Fixes CODEOCEAN-FRONTEND-3A
2023-09-19 22:32:14 +02:00
60656443e2 Update ACE Editor to version 1.2.9
The new ACE editor introduces full support for emojis (and, thereby, UTF-16 characters with high- and low-surrogates). Hence, we can remove our custom fix.

Further, this update will allow emojis to be used in pair programming sessions.
2023-09-12 18:54:04 +02:00
914adeed42 Insert text written after last autosave in pp session 2023-09-12 18:47:06 +02:00
6e0dc9d7bc Replaces compareDeltaObjects with editor.curOp 2023-09-12 18:47:06 +02:00
735a74901f Update ACE Editor to version 1.2.0
Previously, we were at an ACE editor published between 1.1.8 and 1.1.9. This caused multiple issues and was especially a problem for the upcoming pair programming feature. Further, updating ace is a long-time priority, see https://github.com/openHPI/codeocean/issues/250.

Now, we are not yet updating to the latest version, but rather to the next minor version. This already contains breaking changes, and we are currently interested to keep the number of changes as low as possible. Further updating ACE might be still a future task.

The new ACE version 1.2.0 is taken from this tag: https://github.com/ajaxorg/ace-builds/releases/tag/v1.2.0.
We are using the src build (not minified, not in the noconflict version), since the same was used before as well.

Further, we need to change our migration for storing editor events. Since the table is not yet used (in production), we also update the enum.
2023-09-12 16:41:33 +02:00
b43441f85e Set lastDeltaObject per file
* This change will potentially resolve a race condition that could occur when the same change was simultaneously performed in two different files.
2023-09-08 11:48:53 +02:00
f7c2fbebd6 Simplify comparison of delta objects 2023-09-08 11:48:53 +02:00
5dd6df9418 Synchronized Editor: Store all events and allow multiple tabs
* This commit refactors the table used to store events.
* We also use a UUID as session identifier in the synchronized editor to support multiple concurrent tabs opened by the same user.
* Further, we renamed some methods to make them easier to distinguish.
2023-09-08 11:48:53 +02:00
9f37034d0b Prevent multiple unsubscribe calls for ActionCable 2023-09-06 00:00:27 +02:00
79422225a8 Add events for pair programming study 2023-09-05 22:56:51 +02:00
056a8e5107 Show if partner is online 2023-09-05 22:56:51 +02:00
0e4a239960 Unsubscribe from channel when redirecting
fixes CODEOCEAN-FRONTEND-2S
2023-09-05 22:56:51 +02:00
23a95d315d Synchronized editor for multiple files 2023-09-05 22:56:51 +02:00
89afb599e4 Apply changes from team members in own editor 2023-08-26 00:38:58 +02:00
0234414bae Rename user to contributor in submission 2023-08-24 19:32:06 +02:00
de5bbea4a8 Refactor RfC creation to prevent users from navigating 2023-08-17 00:25:51 +02:00
71acb0cf3d Check for presence of RfC Modal before hiding
Fix CODEOCEAN-FRONTEND-E
2023-08-16 23:11:12 +02:00
1d7fd98c79 Fix theme change if no file tree is shown 2023-08-01 16:33:45 +02:00
3388a749f7 Fix score card border color 2023-08-01 16:24:13 +02:00
944b455194 Introduce Dark Mode
This commit mainly changes the color definitions. Mostly, those changes are semantically equally, but there are a few changes that occurred to align the color scheme within the app.
2023-07-31 11:48:42 +02:00
01f4f0c2cd Remove legacy CodePilot integration 2023-07-28 08:50:00 +02:00
bf662ecb81 Remove legacy forum search and search buttons 2023-07-28 08:45:05 +02:00
240fbc5a3b Add Sentry instrumentation for JavaScript 2023-05-09 22:10:40 +02:00
20588e4910 Fix alignment of "No action" editor button 2023-04-25 20:25:10 +02:00
a97b56f36f Allow removing all event handles in JavaScript
This is useful to remove any handlers, e.g., when submitting an exercise. Hopefully, we will see less Javascript errors due to cumbersome behavior with these changes...

Also, I am cleaning up unused event handlers. The `showOutput` method doesn't seem to be used, we should observe this in the future.

Closes CODEOCEAN-KQ
2023-04-02 18:15:24 +02:00
d015e1536c Refactor tooltip for run button
Even though not reproducible locally, we had some errors captured through Sentry where the Tooltip was opened on the (already hidden) run button. This resulted in an error by the Bootstrap library. Most likely, the issue was caused by some race condition.

Fixes CODEOCEAN-BA
2023-03-14 19:19:06 +01:00
8bcfcd62b8 Handle Buffer overflows from Python environments
Related to CODEOCEAN-JE
2023-02-28 17:03:59 +01:00
2b11415dcd Delete UTF-16 characters completely in editor
Previously, removing an UTF-16 character (such as emojis) required pressing the backspace twice. This was caused by ACE only handling single UTF-8 characters.

Fixes CODEOCEAN-GC
2023-02-28 16:27:47 +01:00
252704b083 Ensure to clear timeout in autosave
We are still trying to ensure autosave is not called outside the /implement route.

Relates to CODEOCEAN-G1
2023-02-28 12:31:22 +01:00