Skip to content

Improve design and UX: discoverability, color linking, rich labels, term selector#134

Open
devin-ai-integration[bot] wants to merge 2 commits intoagentfrom
devin/1773259797-design-ux-improvements
Open

Improve design and UX: discoverability, color linking, rich labels, term selector#134
devin-ai-integration[bot] wants to merge 2 commits intoagentfrom
devin/1773259797-design-ux-improvements

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Mar 11, 2026

Improve UX: arrangement discoverability, color linking, rich labels, term selector

Summary

A set of targeted design and UX improvements motivated by first-principles analysis of caltech.dev's core usability gaps. The most significant change is making the automatic arrangement feature discoverable — previously, courses defaulted to locked and the UI showed "All sections set." with no indication that unlocking enables auto-scheduling.

Changes:

  • Arrangement discoverability: When courses exist but all are locked, WorkspaceScheduler now shows "All sections locked. Unlock courses to auto-find non-conflicting schedules." instead of the opaque "All sections set."
  • Color linking: Extracted color generation into shared courseColor.ts utility; workspace entry cards now have a colored left border matching their calendar block color
  • Rich section labels: Section dropdown shows 1 — Staff, MWF 09:00 - 09:55 instead of just 1
  • Term selector: Footer now has a <select> dropdown to switch terms (replaces static "Current term: sp2026" text)
  • Import modal: Replaced window.prompt()/alert() with a proper in-app modal using useModal; auto-closes on success, clears errors on reopen
  • Confirmation dialogs: "Remove All" and "Default Schedule" now require window.confirm() when courses exist
  • Day labels: Added Mon–Fri labels above time picker columns
  • Typo fixes: Fixed "schuduler", "If has a course", "sections be time" in help modal
  • Default Schedule null safety: getCourse results are now filtered for null so clicking "Default Schedule" on terms missing a hardcoded course (e.g. "CS 3 x" on sp2023/sp2024/sp2025) no longer crashes

Updates since initial revision

Addressed automated review feedback (ed25cae):

  1. Fixed: Default Schedule crash when a hardcoded course name is missing from the term's data — now filters out null getCourse results instead of using non-null assertion
  2. Fixed: Import modal now auto-closes on successful import via onClose() from useModal props
  3. Fixed: importError state is cleared when the import modal is reopened

Review & Testing Checklist for Human

  • Import modal ref wiring: The importInputRef is created outside useModal but the <textarea> it attaches to is inside the modal render callback. Verify the ref connects correctly and the textarea value is readable on import click.
  • Drag-and-drop with border-left: The borderLeft inline style is merged with provided.draggableProps.style on workspace entries. Verify drag-and-drop still works correctly and the border doesn't cause visual glitches during drag.
  • Section label edge cases: Verify dropdown labels render correctly for sections with empty instructor strings, "A" (arranged) times, and sections with very long time/instructor text (potential overflow in the dropdown).
  • Visual regression: All changes are UI-only — recommend opening the app, adding 3-4 courses, and verifying: colored borders match calendar blocks, section dropdowns show full labels, term selector navigates correctly, import modal works end-to-end (including auto-close on success and error clearing on reopen), Remove All shows confirmation.

Notes


Open with Devin

…erm selector

- Extract shared course color utility (courseColor.ts)
- Add colored left border to workspace entries matching calendar blocks
- Show instructor + time in section dropdown labels
- Show 'Unlock courses to auto-find schedules' hint when all locked
- Add term selector dropdown in footer
- Add day labels (Mon-Fri) above time picker columns
- Add confirmation dialogs for Remove All and Default Schedule
- Replace window.prompt/alert with modal for Import Workspace
- Fix help modal typos (schuduler, 'If has a course', 'be time')

Co-Authored-By: Rahul Chalamala <rahul@chalamala.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Mar 11, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
caltech-dev ed25cae Commit Preview URL

Branch Preview URL
Mar 11 2026, 08:19 PM

devin-ai-integration[bot]

This comment was marked as resolved.

…port modal on success, clear error on reopen

Co-Authored-By: Rahul Chalamala <rahul@chalamala.com>
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.

1 participant