MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

MariTools visual redesign: production wiring - #103

Open
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign
Open

MariTools visual redesign: production wiring#103
ZhichGaming wants to merge 101 commits into
mainfrom
feat/impeccable-redesign

Conversation

@ZhichGaming

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merged MariTools visual direction into production across schedule, free time, catalog, forum, clubs, account, semester, and tools home.
  • Add academic week navigation, Google Calendar OAuth push, and shared free-time boards with drag-to-paint availability.
  • Extend MariTools bootstrap to apply incremental migrations for Google Calendar grants and free-time board tables on existing deployments.

Test plan

  • npx vitest run --coverage (2690 tests, 100% thresholds)
  • Smoke /tools, /tools/schedule, /tools/free-time, /tools/free-time/[slug]
  • Verify Google Calendar connect + push on a signed-in account
  • Create a free-time board, save availability, confirm share link works
  • Browse catalog, forum, clubs list + club detail
  • Confirm account and semester pages render with new ruled layout

Made with Cursor

ZhichGamingand others added 21 commits August 25, 2026 10:55
Drop the term picker from tools chrome so the calendar still picks the
active term. Reach Workshops and Resources from Events, not the top bar.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared ruled-index, quiet-link, and editorial-frame utilities into global styles, flatten ContentCard and error recovery away from floating cards, and align MariTools sidebar and staff chrome with the Student Technical Journal system.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify product and design boundaries so /books commerce and /tools campus
tools stay separate in scope, chrome, and accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Four Codex/Grok CLI candidates, cross-judge pick, grafts from alternates
into Campus Lab Manual base with shared and route-specific --mt-* tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map best-in-category craft references to each MariTools route and
redesign the sidebar as a lab-manual TOC with TOOL_SECTIONS groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Inter with tabular-nums for codes and times everywhere; update briefs and spec to match the no-mono constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Two Codex and two Grok agents produced full HTML/CSS previews for all nine tools surfaces; Playwright screenshots, round-2 polish on Campus Lab Manual, and cross-judge scoring document the impeccable arena process.
Co-authored-by: Cursor <cursoragent@cursor.com>
Archive Round 1 lookalikes; four agents produce calendar-first, Discourse dens, When2meet, and Linear workspace previews inspired by real product geometry rather than themed form worksheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthesize Registrar Desk schedule, Commons catalog/forum, and roomier calendar; redesign the tools sidebar; keep production site header with a proper Account control; add When2meet free-time boards, Omnivox tutorial overlay, and Google Calendar export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy Candidate 2 index CSS faithfully, link clubs to detail, soften sidebar chrome, and wire Omnivox tutorial image placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add grouped tools sidebar, GitHub-style header account states, positioned week grid, Omnivox tutorial overlay, and Google Calendar export modal with tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicate flat-index overrides into primary rules, restore calendar event color bars, and align page margins for catalog, forum, clubs, and account surfaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce board and member tables, a store module for create/load/upsert, and a slug route loader so shared boards can be backed by the database before the UI redesign lands.
Co-authored-by: Cursor <cursoragent@cursor.com>
The schedule grid now follows the college term calendar with week controls, and signed-in users can connect Google Calendar for direct event push with .ics fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production list surfaces now use the merged C2 index layout with expandable catalog rows, club initials, and dense forum threads while preserving existing data and forms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Published clubs now have a detail route backed by getPublishedClubBySlug, with list links pointing to it when no external URL exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students can create boards, share links, and save availability without signing in while keeping the paste-compare flow on the index page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Thread posts, replies, and the reply editor now use the same MariTools index layout as the forum list while keeping report and moderation actions intact.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students get the same settings-sheet visual language as the merged MariTools preview while keeping existing sign-in, profile, and outline flows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Students land on a ruled grid that groups schedule, courses, and student-life tools with today’s date ticket.
Co-authored-by: Cursor <cursoragent@cursor.com>
…les.
Existing deployments that already have persistence schema now bootstrap 0009 and 0010 when those sentinel tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mariprogrammingErrorErrorAug 30, 2026 12:19am

ZhichGamingand others added 7 commits August 26, 2026 22:40
…pages meet the footer.
Index pages use --surface-raised but only wrap their content. The leftover height of .tools-main showed the shell --paper color as a strip above the footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…e home shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
…the new paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The preview rail CSS expects a number chip and a title. Plain button text sat in a 23px column and wrapped by character.
Co-authored-by: Cursor <cursoragent@cursor.com>
Headings stay Forum, Clubs, and Your account. Club detail no longer invents a meeting rhythm.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZhichGamingand others added 27 commits August 28, 2026 18:47
…ir posts.
Staff gets the same edit/delete affordances via canManage; authorUserId stays redacted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rerunnable nick session proof films the report popover, author inline edit, and reply delete on the live thread page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose listReports on the community store and ship /staff/reports so team staff can review reason, target, reporter, and status without leaving the bookstore ops shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Query filtering only checked courseCode, so partial title searches like "phy" for Physics returned nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public thread and reply views now carry nullable authorDisplayName from mt_student_profiles, so the thread page can render real names and initials without exposing authorUserId.
Co-authored-by: Cursor <cursoragent@cursor.com>
PDF text extraction often leaves leading whitespace, and requiredText rejected it as invalid so the extract action crashed. Trim outline text before save, and map MaritoolsInputError to an in-page 400 instead of a dead-end error page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Week arrows previously only relabeled a shared Mon–Fri pattern; paint is now keyed by Monday ISO in availability.byWeek, with legacy v1 free as a fallback until the first v2 save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Local Connect fails with redirect_uri_mismatch because only the Better Auth callback was registered; docs and a rerunnable probe now require the calendar callback path too.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse weekGridForTermWeek / ACADEMIC_CALENDAR_RULES so Labour Day and similar days match schedule "No class" semantics and cannot be painted.
Co-authored-by: Cursor <cursoragent@cursor.com>
process.env never saw .env.local, so automatic extraction always looked keyless even when a Desktop key existed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short intake creates a pending submission, then creators and staff edit or publish on the same ClubListingDetail surface instead of a form-only queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stitching two UUID-named webms could put staff before student, and a body name check could PASS on a pending row. Record one cookie-swapped session and fail unless the published directory row is on camera.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default 12s aborted before nemotron-3-super finished a real Desktop PDF; 90s plus a UI-shaped JSON prompt lets assessments bind after upload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
DB already allowed rejected status; expose rejectPendingClub and ?/reject so staff can clear pending listings without publishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Seeds pending club + open reports, mints staff session, records webms under .artifacts/verify-mariTools/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Closes the inventory gap where capture scripts covered report/edit/delete but not staff Lock/Remove.
Co-authored-by: Cursor <cursoragent@cursor.com>
Student /tools/catalog stays published-only; staff see peer conflict facts side by side at /staff/catalog-conflicts so nothing last-write-wins in silence.
Co-authored-by: Cursor <cursoragent@cursor.com>
SvelteKit rejects named actions when a default action exists, which made
Push return 500. Add a rerunnable Connect+push proof script.
Co-authored-by: Cursor <cursoragent@cursor.com>
When no term contains today, show that current-term data is unavailable and still let students pin Fall 2026 so schedule export works.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Use these facts so a conflict peer publishes and siblings withdraw, and
retarget the three failed prove scripts at continuous push/dismiss/resolve
tapes without reopening the four PASS webms.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a visible cursor, slow mouse moves, and stay on Open between Resolve
and Dismiss so the row leaves are on camera without splice-looking cuts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enhance the status forms so rows leave the Open queue without a full
document reload, and refilm the reports pointer tape against that path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Architect rejected the Playwright recordVideo + DOM red-circle tape.
Add continuous avfoundation+Quartz proof and refuse the old reports path.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full-display screencapture previously filmed Raphael instead of staff reports.
Target screencapture -l at the headed Chrome window and keep OS-pointer clicks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the reports queue into a mod desk with human labels and wire actions that change threads and posters, not only resolve/dismiss stamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto 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

@ZhichGaming