Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
e782706
fix(unit-hub): line up the header controls and use the app's own unit…
Clupai8o0 Sep 15, 2026
78902d4
Merge branch 'ui/notification-links' into ui/inbox-extension-card
Clupai8o0 Sep 15, 2026
429e650
fix(unit-hub): put the unit picker beside the title and the actions o…
Clupai8o0 Sep 15, 2026
9cf0628
fix(unit-hub): keep study essentials in reach and page long feeds
Clupai8o0 Sep 15, 2026
7340d55
fix(study-essentials): show what each link is for in the compact strip
Clupai8o0 Sep 15, 2026
6e2bb08
fix(study-essentials): two-column grid on phones instead of a sideway…
Clupai8o0 Sep 15, 2026
724a542
fix(study-essentials): use a grid at every width, no sideways scroll
Clupai8o0 Sep 15, 2026
3eec92d
fix(study-essentials): even rows of links that line up with the page
Clupai8o0 Sep 15, 2026
882f5fb
fix(unit-hub): make text-only actions read as buttons
Clupai8o0 Sep 15, 2026
dfcc10f
fix(unit-hub): label the details sections with icons and drop the div…
Clupai8o0 Sep 15, 2026
c6ca9f8
fix(unit-hub): group feed cards, notices and manage forms into labell…
Clupai8o0 Sep 15, 2026
2359508
fix(unit-hub): match the details dialog and Teams composer to the car…
Clupai8o0 Sep 15, 2026
36913a5
fix(unit-hub): drop the primary border from pinned announcement cards
Clupai8o0 Sep 15, 2026
d459b7b
style(buttons): one filled and one outlined style across the app
Clupai8o0 Sep 15, 2026
ed8965b
feat(unit-hub): show which announcements are new and let students mar…
Clupai8o0 Sep 15, 2026
7979e24
style(unit-hub): use the app's filled and outlined buttons without lo…
Clupai8o0 Sep 15, 2026
ae99f13
fix(task-status-card): status-coloured button icons and aligned actio…
Clupai8o0 Sep 15, 2026
ef58e02
fix(task-submission-card): outline every submission action
Clupai8o0 Sep 15, 2026
ac5f34d
fix(comments): space status changes in the thread and show them as pills
Clupai8o0 Sep 15, 2026
33fcab5
feat(celebrate): add motion tokens, animated check, particles and see…
Clupai8o0 Sep 15, 2026
033ca4d
feat(tasks): confirm a Ready for Feedback submission with a short suc…
Clupai8o0 Sep 15, 2026
80082a7
feat(dashboard): show tasks signed off since the student last opened …
Clupai8o0 Sep 15, 2026
bb28989
feat(unit-hub): render announcement and session text as simple markdown
Clupai8o0 Sep 15, 2026
afff23d
fix(unit-hub): make cancelled sessions unmistakable in the feed and d…
Clupai8o0 Sep 15, 2026
f25c25f
fix(dashboard): open the task list when a status card filters it
Clupai8o0 Sep 15, 2026
5e6e98d
fix(dashboard): count signed off progress by task so it matches the d…
Clupai8o0 Sep 15, 2026
3269ad2
fix(tasks): size and inset the status picker icon, one focus ring
Clupai8o0 Sep 15, 2026
d408e85
feat(unit-hub): highlight sessions happening now or soon, pin Up next…
Clupai8o0 Sep 15, 2026
d640ee3
feat(about): restyle the About dialog with contributor cards and grou…
Clupai8o0 Sep 15, 2026
bf79fd8
feat(startup): redraw the splash, progress line and skeleton shimmer
Clupai8o0 Sep 15, 2026
da2da75
feat(burndown): add crosshair, shared tooltip and series emphasis on …
Clupai8o0 Sep 15, 2026
7122dab
feat(notifications): draw Unit Hub announcements and sessions in thei…
Clupai8o0 Sep 15, 2026
212278b
feat(notifications): open the Unit Hub on the announcement or session…
Clupai8o0 Sep 15, 2026
5fde5bd
feat(notifications): add Unit Hub updates to the notification settings
Clupai8o0 Sep 15, 2026
f1f4619
fix(unit-hub): open a weekly session's next occurrence from a notific…
Clupai8o0 Sep 15, 2026
7d1e16f
style(unit-hub): quiet whole-card state tints instead of side bars, c…
Clupai8o0 Sep 15, 2026
086f84a
feat(unit-hub): count an announcement as read once it has been on screen
Clupai8o0 Sep 15, 2026
f31e4f4
style(unit-hub): try solid fills for live and unread cards, fade canc…
Clupai8o0 Sep 15, 2026
c88ca89
fix(unit-hub): paint solid cards in their own colour, readable chips …
Clupai8o0 Sep 15, 2026
6f3a7b5
revert(unit-hub): mark announcements read only when the student choos…
Clupai8o0 Sep 15, 2026
b963a39
fix(unit-hub): show an opened announcement as read straight away
Clupai8o0 Sep 15, 2026
dae9acf
Give the peer progress card a clearer hierarchy
Clupai8o0 Sep 15, 2026
38512be
fix(extension): tidy the request extension dialog
Clupai8o0 Sep 15, 2026
26b373b
fix(feedback-review): tidy the request feedback review dialog
Clupai8o0 Sep 15, 2026
bf1f959
style(profile): group the edit profile page into cards with compact f…
Clupai8o0 Sep 15, 2026
eab667f
fix(extension): keep the request possible after the final deadline
Clupai8o0 Sep 15, 2026
3113f96
style(submit-task): calmer submit dialog with requirements callout, s…
Clupai8o0 Sep 15, 2026
038743a
fix(user-icon): draw initials when the avatar photo hash is unavailable
Clupai8o0 Sep 15, 2026
fc90856
fix(tasks): a smaller status hint inside the closed status picker
Clupai8o0 Sep 15, 2026
02557bf
feat(panel-layout): full-screen button for the task column
Clupai8o0 Sep 15, 2026
95b9c2a
style(notes): save icon on the note buttons and a taller composer
Clupai8o0 Sep 15, 2026
2176557
fix(calendar): line the dialog title up with its own header inset
Clupai8o0 Sep 16, 2026
115bd6d
fix(profile): drop the rule above the save bar
Clupai8o0 Sep 16, 2026
a429301
fix(profile): show institution-managed name and email as facts
Clupai8o0 Sep 16, 2026
3210ee0
chore(profile): dev-only preview of the institution-managed profile
Clupai8o0 Sep 16, 2026
9c494a3
chore(motion): a page to compare every celebration state and motion c…
Clupai8o0 Sep 16, 2026
ea892ca
feat(submit): confirm the submission inside the upload dialog
Clupai8o0 Sep 16, 2026
3318e61
style(submit): simplify the upload dialog and slow the confirmation
Clupai8o0 Sep 16, 2026
86e3cd9
fix(submit): keep the dialog steady between uploading and confirming
Clupai8o0 Sep 16, 2026
c0baabd
feat(unit-hub): explain what each task status means
Clupai8o0 Sep 16, 2026
2c654ce
fix(submit): swap only the dialog body when the submission lands
Clupai8o0 Sep 16, 2026
fa030b2
feat(submit): carry one panel from uploading through to the confirmation
Clupai8o0 Sep 16, 2026
0403346
fix(submit): blur the old words away and let the confirmation be dism…
Clupai8o0 Sep 16, 2026
7aea28a
chore(motion): a page to compare six ways of confirming a submission
Clupai8o0 Sep 16, 2026
66f2270
feat(submit): collapse the bar into the mark when the submission lands
Clupai8o0 Sep 16, 2026
8093e8f
feat(portfolio): mark the end of a unit when the portfolio is sent
Clupai8o0 Sep 16, 2026
dd7cd6e
fix(portfolio): confetti over the dialog and a centred dismiss
Clupai8o0 Sep 16, 2026
acdf8a8
feat(file-uploader): one panel that collapses from uploading into upl…
Clupai8o0 Sep 16, 2026
e035edd
fix(portfolio): stop the icons being squashed beside their text
Clupai8o0 Sep 16, 2026
e39a3e9
fix(profile): show the save bar only when there is something to save
Clupai8o0 Sep 16, 2026
dee5dd3
fix(extension): render the extension reason as markdown
Clupai8o0 Sep 16, 2026
0d7d984
feat(extension): show an automatic extension as the app, not the tutor
Clupai8o0 Sep 16, 2026
354be2a
fix(icons): keep a resized icon glyph centred in its own box
Clupai8o0 Sep 16, 2026
3dd484e
feat(dashboard): mark a task signed off while the student is watching
Clupai8o0 Sep 16, 2026
fc11169
feat(profile): choose how often the summary email arrives
Clupai8o0 Sep 16, 2026
3102ba4
fix: remove dead animation code and correct the control contrast rule
Clupai8o0 Sep 16, 2026
e62b1f7
test: give the suite a working localStorage on newer Node
Clupai8o0 Sep 16, 2026
ff3b214
fix(submission): keep the upload dialog usable once the request lands
Clupai8o0 Sep 16, 2026
41a3ab0
fix(a11y): meet contrast on outlined buttons, and let textareas grow
Clupai8o0 Sep 16, 2026
fc88516
perf(skeleton): stop driving the shimmer from an inherited root property
Clupai8o0 Sep 16, 2026
6059112
fix(extension): stop accepting any date once the final deadline has p…
Clupai8o0 Sep 16, 2026
0af76f0
fix(extension): make the past-deadline date an invariant, not a check
Clupai8o0 Sep 16, 2026
3ef12a8
fix(submission): let the dialog close itself, and stop the uploader o…
Clupai8o0 Sep 16, 2026
8a5dec5
fix(panels): end the previous drag when a second pointer grabs the ha…
Clupai8o0 Sep 16, 2026
0d338c3
fix(a11y): give three unnamed or double-named controls a real accessi…
Clupai8o0 Sep 16, 2026
edfd7d0
fix(theme): bring seven failing contrast pairs up to WCAG, in both th…
Clupai8o0 Sep 16, 2026
b91c75b
fix(layout): stop two bindings changing their answer mid-check
Clupai8o0 Sep 16, 2026
46d1d02
fix(profile): stop a late save response arming a timer on a dead form
Clupai8o0 Sep 16, 2026
cd841d4
test: remove eighteen tests that could not fail, and write the ones t…
Clupai8o0 Sep 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
178 changes: 0 additions & 178 deletions src/app/api/fixtures/peer-progress-indicator.fixtures.spec.ts

This file was deleted.

160 changes: 0 additions & 160 deletions src/app/api/fixtures/peer-progress-indicator.fixtures.ts

This file was deleted.

14 changes: 11 additions & 3 deletions src/app/api/models/notification.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import {Entity} from 'ngx-entity-service';
* Something that happened which the signed in user should be told about.
*
* `notificationType` is the category the user's preferences switch on, one of
* task, feedback, portfolio, extension or general. The api gates delivery on
* the first three against the receive_*_notifications columns, so the web app
* never has to check a preference before rendering one of these.
* task, feedback, portfolio, extension, general or unit_hub. The api gates
* delivery on task, feedback, portfolio and unit_hub against the
* receive_*_notifications columns, so the web app never has to check a
* preference before rendering one of these.
*
* `event` is the stable, specific hook (for example `task_comment_created`).
* Presentation can vary by event without inferring meaning from message text.
Expand Down Expand Up @@ -42,6 +43,13 @@ export class Notification extends Entity {
commentId?: number | null;
groupId?: number | null;

/**
* The Unit Hub announcement or session a unit_hub notification is about.
* Null once it has been deleted, undefined from an api that predates them.
*/
announcementId?: number | null;
sessionId?: number | null;

/**
* When the user read this, or null while it is still unread.
*/
Expand Down
6 changes: 6 additions & 0 deletions src/app/api/models/task-comment/task-comment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ export class TaskComment extends Entity {
recipientReadTime: string;
commentType: string = 'text';
isNew: boolean;
/**
* True when OnTrack wrote this comment rather than a person. It is stored
* against the tutor for the task, because a comment needs an author, so
* without this it reads as something that tutor said.
*/
automated = false;
replyToId: number;
attachmentFileName?: string;
attachmentMimeType?: string;
Expand Down
Loading