Your courses. Your schedule. Your workspace.
A customizable Chrome extension for planning courses inside MyUCLA Class Planner. Maintained by comet-ctrl.
Arrange course browsing, details and the weekly schedule together. Drag panels into tab groups, split the workspace, or float a panel where you need it. Your arrangement is saved in your browser.
Unofficial; not affiliated with or endorsed by UCLA. The extension changes presentation within Class Planner and preserves UCLA's original controls.
- Keep the schedule in view. Browse courses and compare sections beside the native calendar.
- Make the layout yours. Drag, resize, close and reopen panels; choose visual presets in Settings.
- Compare details. Open several courses, with room, instructor, meeting time and original section status available.
- Choose your appearance. System, light or dark, with a compact header and local panel scrolling.
- Organize your plan. Reorder classes, see existing conflicts and add local notes. Reordering is written to MyUCLA only when you choose Save to MyUCLA.
- Keep native functions accessible. Plan actions, Optimizer, Study list, Personal entries, help and the original layout remain available.
Native search still requires UCLA's autocomplete choices and loading steps. This extension does not fetch an entire course catalog, interpret DARS, check prerequisites or automate enrollment.
Current source: v0.19.5, on main. This branding build is not
published to the Chrome Web Store. Build from source for the current version:
git clone https://github.com/comet-ctrl/myucla-workspace.git
cd myucla-workspace
npm ci
npm run build- Keep the checkout in a permanent folder.
- Open
chrome://extensionsand enable Developer mode. - Choose Load unpacked and select the generated dist folder.
- Open MyUCLA Class Planner.
- Open the MyUCLA Workspace extension popup and enable Workspace layout.
Updating Better MyUCLA: replace the files in the same dist folder Chrome
already loads, click Reload on the extension card, then refresh Class Planner.
Keeping the same loaded folder preserves the extension identity and browser
preferences. Existing storage keys are retained. Avoid loading a second copy
alongside the first.
Future release ZIPs are named myucla-workspace-vX.Y.Z.zip and contain a dist
folder. Historical Better MyUCLA releases
remain available for rollback; they do not include the new identity or all current changes.
Drag a tab or dotted grip to group, split or float a panel. A shaded preview shows its destination; Escape cancels. Resize panels using their edges or dividers. Close a tab with ×, and reopen it through navigation.
Settings offers visual layout presets. Layout settings contains Default layout and Original layout. These currently have separate entries; consolidating them is on the roadmap.
For multiple courses, use Details on each. Rooms, instructors and section controls remain available; final-exam notes have a disclosure. Close details with × or Escape. Course tools provides local reorder and note controls.
With the header compacted, move to the top edge to reveal UCLA's navigation or use Show header to keep it visible. Original layout restores the native presentation. Appearance and layout choices stay in this browser profile.
The only page match is https://be.my.ucla.edu/ClassPlanner/ClassPlan.aspx;
storage is the only extension permission. There is no project server,
telemetry or background seat polling. Layout preferences and notes stay local.
The extension does not read credentials, grades or DARS, and does not automate enrollment, dropping, exchanges or waitlisting. UCLA's manual actions remain native. See PRIVACY.md for exact storage and session behavior.
npm run typecheck
npm test -- --run
npm run build
npm run preview:buildOpen site/workspace-preview.html for an interactive fictional preview
using the production presentation modules. It does not connect to an account.
Some native actions and secondary modules are approximations; the preview is
not evidence of live-site compatibility.
Browser fixtures require Playwright Chromium or an installed Chromium path in
BETTER_MYUCLA_CHROMIUM. Relevant checks include test:dark-mode,
test:header-reveal, test:calendar-gridlines, test:workspace-splits,
test:workspace-settings and preview:verify. The vector icon is editable in
public/icons/workspace.svg; npm run icons:build regenerates Chrome's PNGs.
The combined v0.19.4 baseline passed 565 unit tests, typecheck, build and targeted browser regressions. See HANDOFF.md for current v0.19.5 verification and remaining live-page checks. No claim is made that every native account workflow has been exercised.
Start with the product roadmap and contribution guide. Use issues to report a reproducible problem or propose a clearer workflow. Use fictional or redacted examples.
Releases are tested milestones; everyday fixes use commits and pull requests. The release checklist describes packaging and verification. Historical design notes are indexed under documentation.
Derived from Better MyUCLA by Aaron Wen (Astro-wen), with subsequent work by comet-ctrl and contributors. Original history and copyright attribution are preserved. See CREDITS.md and the MIT license.