Skip to content

Submit Department Request#74

Merged
p1an0guy merged 22 commits intomainfrom
request-department
Mar 5, 2026
Merged

Submit Department Request#74
p1an0guy merged 22 commits intomainfrom
request-department

Conversation

@Noah-Gullo
Copy link
Copy Markdown
Collaborator

Linked Issues

Closes #

Summary

Briefly explain the change and why.

How to Test

Steps to verify locally.

Checklist

  • Tests added/updated
  • Lint/tests pass locally
  • Docs updated (README/ADR/changelog)

Screenshots / Demos

(if UI or visible behavior)

ema-png and others added 22 commits February 25, 2026 16:00
# Conflicts:
#	frontend/app/api/notes/route.ts
#	frontend/app/api/upload/route.ts
profile page now says all-time leaderboard rank, which is the data being
fetched
- Add department_submissions table and migration
- POST /api/department-submissions with Resend email (same env as course requests)
- Request a department modal on upload and dashboard
- Department form: single field 'department name' (no code)
- API: accept department_name only, insert department_name and justification
- Migration: department_submissions uses department_name not null
- Migrations: add department_name and justification columns if missing
- Collapsible 2026-2028 Catalog section; Clear filters next to Filters (grayed when none)
- Request course/department buttons use same style as filter options
- Leaderboard dark mode: tabs, cards, title, muted text
- Catalog terms: DEFAULT_CATALOG_TERMS in backend when DB empty
- Align modal with app design (light card, poly tokens, sage accent)
- Group Download, Upvote/Downvote, Report in one actions row
- Remove Close button; use header X only
- Dark mode styles for modal; cleanup unused close-btn CSS
- Upload: drop Link from resource type options and API validation
- Notes API: select/filter by resource_type, support resource_type query param
- Course detail: Type filter (All types, Lecture Notes, Study Guide, Class Overview)
- Reset to page 1 when type filter changes
- Fetch display_name and handle from profiles; show as main heading
- Show email in smaller text below nickname
- Avatar initials derived from nickname (e.g. Violet Peacock → VP)
- Nav profile pill uses same nickname initials; dark mode for email line
… proxy

- Add TEXTEXTRACTOR API and lib: extract text from PDFs (typed + OCR fallback)
- Integrate extracted text with note search (title, description, extracted_text)
- Store extracted_text on upload; migration and FTS index
- Downloaded-note modal: full PDF viewer with page nav (blob from view?stream=1)
- Preview fallback: use file_key when blurred image fails; support PDF preview in modal
- Constrain PDF viewer size (42vh, 560px width) to avoid overlapping details
- Auth: wrap useSearchParams in Suspense on course page; fix department-submissions types
- Preview security: serve previews via GET /api/notes/[id]/preview (auth required, no signed URL in client)
- Profile downloads: link to course with ?open=noteId for auto-open modal
- docs: TEXTEXTRACTOR_SETUP.md
- Fetch preview with Bearer token and show via blob URL so preview loads (img/iframe don't send cookies)
- Add loading/error state for non-downloaded note preview
- Reduce PDF fallback preview blur from 6px to 3px
- Use plain img for preview; revoke preview blob on modal close
favorites button + favorites on profile
@p1an0guy p1an0guy merged commit 128b8b3 into main Mar 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants