da456f7b61
Solutions zip: use real file/submission timestamps instead of epoch (fixes bogus years)
2026-09-29 18:31:19 +03:00
c395a92b7f
Grade comments: mark suggestion tone with colored icon and left border
2026-09-29 17:55:34 +03:00
c0c150b4b9
Grade comments: select tone sized by content so input keeps width (fix row overflow)
2026-09-29 17:31:47 +03:00
dadbbb30cf
Modals: lock background scroll; comment dropdown keeps row on one line, full tone labels, flip up near bottom
2026-09-29 16:19:15 +03:00
751d6bae42
Grade comments: dropdown matches input width, compact tone select, responsive wrap
2026-09-29 16:09:39 +03:00
2869142a79
Grade comments: show live usage count and allow deleting unused templates
2026-09-29 15:56:00 +03:00
4bb1e332e3
Modals: action buttons bottom-right, no empty space under content
2026-09-28 17:39:10 +03:00
a73226b2ab
Admin group: large variant modal with the assigned variant task text
2026-09-28 17:37:18 +03:00
ed8d853d2a
Admin group: counter = number of group students who submitted a solution
2026-09-28 17:35:10 +03:00
6d1b36f02e
Defense: keep assignment text for admins, hide it only from students
2026-09-28 17:30:11 +03:00
f630b0267e
Admin group: fix script loading (extra div), total submissions counter, label cleanup
2026-09-28 17:22:09 +03:00
9df1af7647
Admin group: variant modal, cell badges/counters, header cleanup, bigger modal
2026-09-28 17:09:55 +03:00
fb67f5313d
Admin group: rework lab cells/columns, fix sort toggle and card rounding
2026-09-28 16:39:18 +03:00
23213f2d75
Admin grades: comment autocomplete by substring, larger grade dialog
2026-09-28 16:32:01 +03:00
82f231c940
Admin group: single table, defense actions in cells; flash messages as toasts
2026-09-28 16:23:29 +03:00
debf157194
Refactor: bind admin forms via @ModelAttribute DTOs; detekt fully default
2026-09-27 23:13:29 +03:00
6129055962
Refactor: extract helpers from groupDetail/editLab; detekt thresholds to defaults
2026-09-27 22:58:35 +03:00
4035bc5a0f
Refactor: split ContentService and ProgressService; defaults tightened
2026-09-27 22:48:13 +03:00
290b2a5a20
Refactor: split content order API; near-default detekt thresholds
2026-09-27 22:38:48 +03:00
3ed48b35fc
Refactor: split AdminController into AdminSupport and domain controllers
2026-09-27 22:36:41 +03:00
f08ab16af0
Refactor: move defense API methods into separate extension file
2026-09-27 22:31:06 +03:00
c22eb15d3e
Refactor: split ApiClient into domain extension files
2026-09-27 22:29:57 +03:00
6e891e4326
Test: Testcontainers integration tests for distribution and content import
2026-09-27 22:22:54 +03:00
47ec9884a3
Add ContentImporter tests; drop redundant elvis; document lint/test commands
2026-09-27 22:17:59 +03:00
a87110580b
Lint: strict mode on; tune detekt thresholds; more decompositions
2026-09-27 22:15:00 +03:00
4a8a10971c
Refactor: bind content admin forms via @ModelAttribute DTOs
2026-09-27 22:06:09 +03:00
9a2a4023b5
Refactor: split loop/throws helpers; drop deprecated JSON accessors
2026-09-27 22:02:56 +03:00
511df7977e
Refactor: extract helpers to satisfy detekt (throws, returns, loops)
2026-09-27 22:00:15 +03:00
b7d96d2ea4
Refactor: reduce detekt findings (unused params, throws, long methods, config)
2026-09-27 21:54:00 +03:00
f3e8b2668f
Build: enable ktlint+detekt, format sources, add core unit tests
2026-09-27 21:46:05 +03:00
802616918f
Admin: name submission archives as group-studentNo-name-attempt
2026-09-27 20:46:17 +03:00
a8785d48d9
Submissions: reject XML project files, show submitted file names to admin
2026-09-24 11:32:19 +03:00
d81cebef70
Content: match imported chapters/sections/articles by title; slug without number
2026-09-22 17:53:59 +03:00
7f4a518e46
trigger gitea hooks
2026-09-18 11:43:13 +03:00
3d05affdab
trigger gitea hooks
2026-09-18 11:43:00 +03:00
18d3ae5650
Edit README.md
2026-09-18 11:25:16 +03:00
0bb55e6e4b
Fix mobile layout; scroll tables themselves, not cards
2026-09-17 22:13:56 +03:00
3c40ffb11d
Bump LMS version to 0.2.0
2026-09-17 21:19:52 +03:00
51f0836894
Learn: remember expanded sections, open only in the last chapter by default
2026-09-17 20:41:54 +03:00
930e2fb580
Learn: remove link underlines
2026-09-17 20:35:29 +03:00
22b732633c
Learn: section actions on the title row, scrollable tables, copy code
2026-09-17 20:16:35 +03:00
78b72267a8
Learn: drag handles on the left, chapters always expanded
2026-09-17 19:56:35 +03:00
cb4cfee05b
Learn: drag & drop sections and articles on chapter and section pages
2026-09-17 19:15:56 +03:00
03c712fe2f
Learn: fix navigate buttons
2026-09-17 19:01:52 +03:00
80f551745a
Learn: fix alert notification
2026-09-17 18:55:57 +03:00
57052ed117
Learn: icon formatting toolbar; fix editor shown when hidden
2026-09-17 18:38:19 +03:00
c111dce6da
Learn: inline markdown editor with formatting toolbar; drop edit modals
2026-09-17 18:31:43 +03:00
8753d3658e
Learn: outline panel moved to the left of the article
...
- article layout: content column on the right, sticky outline (chapters, sections,
articles) on the left; on narrow screens the article comes first and the
outline follows it
2026-09-17 17:36:54 +03:00
df5020fea6
Learn UI: prev/next navigation, sidebar outline, editing on every page; merge import; defense date
...
- article page: ← / → navigation across the whole material tree (including
between sections), sticky sidebar outline with the current article highlighted
- editing on chapter, section and article pages: rename, publish/hide, delete,
create section/article, move articles while deleting a section; forms return
to the page they were opened from (validated internal `back` parameter)
- article page opens the edit dialog directly via ?edit=1 (used by "Править"
links on section/chapter pages)
- import: optional sync flag — with it stale sections/articles of archived
chapters are deleted (previous behaviour), without it import only adds and
updates, so material edited in the UI is not overwritten
- student area: lab page and lab cards now show the defense date next to the
submission deadline
- fix SpEL crash on the student lab page (`and` with nullable strings)
2026-09-17 17:14:16 +03:00
6246d4c8d3
Materials: images with captions and video support
...
- markdown: new directives `:::figure assets/x.png | Подпись` and
`:::video assets/x.mp4 | Подпись` rendered as figure/figcaption and a
video player (works with HTML escaping on); sanitizer allows video/source/
track/figure with safe attributes only
- assets: video extensions (mp4/webm/ogg) allowed, separate limits — images
up to 10 MB, video up to 100 MB; correct content types
- upload limits raised: web/academic multipart 120 MB per file / 200 MB per
request, nginx client_max_body_size 200m (covers media inside ZIP imports)
- docs: new docs/06-authoring.md (markdown, images, video, assets, limits,
import semantics); import message now says "медиафайлов"
2026-09-17 15:44:16 +03:00