Repository navigation
Commit 9f0b8c6
authored
feat(ui): app shell with tabbed dashboard, remove Edit Layout, refocus landing (#3531)
* fix: public profile not found, resume analysis 502, AI model errors, leaderboard rate limits
- Public profile: the canonical-username redirect ran inside a try/catch.
redirect() works by throwing, so the catch turned every mixed-case
profile link (e.g. /u/Priyanshu-byte-coder) into "Profile Not Found".
The page already redirects correctly after loading.
- Resume: the contribution query asked for 50 repositories with per-commit
diff stats in one request; GitHub answers 502 past its ~10s budget.
Repositories are now paged 10 at a time and commits carry no diff stats
(line totals come from merged pull requests).
- AI features: Groq returned model_not_found for llama-3.3-70b-versatile
on the production key, so personality, AI insights, resume wording and
project tutor all failed (project tutor still used the long-retired
llama3-8b-8192). A shared helper tries GROQ_MODEL, then falls back
through available models and remembers the one that works.
- Leaderboard: per-user stats paged up to 10 commit searches for streaks
and hit GitHub's secondary rate limit. Stats now come from contribution
data via GraphQL (streak from the contribution calendar, as on GitHub
profiles), using each user's stored token.
- SSE stream: connections now end at 4 minutes instead of being killed at
the 300s function limit, which logged an error per connection.
* fix(profile): QR code dialog could not be closed
ShareProfileSection rendered ProfileQrModal unconditionally, so the dialog
was always open and its close button only toggled state nothing read.
It now renders only while open.
* feat(ui): app shell with tabbed dashboard, remove Edit Layout, refocus landing
Information architecture
- Signed-in pages share an app shell: a slim sidebar (drawer on mobile)
and a compact top bar with sync, shortcuts, notifications, account
switcher and an account menu. The marketing navbar and footer no
longer appear inside the app.
- The single 34-widget dashboard is split into tabs, each its own route:
Overview, Activity, Pull requests, Repositories, Goals, Community.
Insights group: Year in Code (highlighted), Resume, Personality,
Leaderboard. Repo health and repo comparison live under Repositories.
- Overview is a summary: four week-at-a-glance numbers from one request,
a Year in Code spotlight, commits chart, today's focus, AI mentor,
personal records and recent activity.
- Edit Layout (drag-and-drop, layout persistence, /api/user/dashboard-layout)
is removed along with the @dnd-kit packages. Widgets keep their
labelled regions and live summaries through a slim WidgetRegion.
Declutter
- Today's Focus is a compact card instead of a second hero with its own
greeting; Resume and Personality use the standard page header instead
of oversized banners.
- Removed the Discussion Activity widget: it duplicated Community
Discussions and read fields the API never returns, so it showed blanks.
- Goals: one-line empty state instead of a second "Create Goal" call to
action above the form.
- Fixed "Merged (30dd)", "1 days to 7", truncated personal records and
theme name, and the PR stat grid leaving a lone tile.
- Avatars loaded from github.com/<login>.png are blocked by the CSP and
rendered broken (leaderboard, account switcher, settings, rooms); they
now use avatars.githubusercontent.com.
Landing
- One product tour organised like the app replaces three overlapping
feature grids; adds a Year in Code section; drops the stat tiles that
repeated the stats row.
Tests: e2e specs visit the tab that now hosts each widget; the visual
workflow can regenerate baselines on demand (update_snapshots input).
* fix(ui): show a dash instead of an endless skeleton when weekly stats fail
* ci(visual): regenerate every baseline when asked, not only failing ones
* test(visual): baselines for the new app shell and landing page
* chore(api): regenerate OpenAPI after removing the dashboard-layout route1 parent 5769540 commit 9f0b8c6
60 files changed
Lines changed: 2972 additions & 3764 deletions
File tree
- .github/workflows
- e2e
- public
- src
- app
- api/user/dashboard-layout
- dashboard
- activity
- community
- goals
- pull-requests
- repositories
- settings
- components
- career-intelligence
- dashboard
- landing
- personality
- rooms
- shell
- lib
- tests/snapshots/visual-regression.spec.js
- test
- components
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
18 | 23 | | |
19 | 24 | | |
20 | 25 | | |
| |||
64 | 69 | | |
65 | 70 | | |
66 | 71 | | |
| 72 | + | |
67 | 73 | | |
68 | 74 | | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
69 | 87 | | |
70 | 88 | | |
71 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
229 | 229 | | |
230 | 230 | | |
231 | 231 | | |
232 | | - | |
233 | | - | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
234 | 242 | | |
235 | | - | |
236 | 243 | | |
237 | 244 | | |
238 | 245 | | |
| 246 | + | |
| 247 | + | |
239 | 248 | | |
240 | 249 | | |
241 | | - | |
| 250 | + | |
242 | 251 | | |
243 | 252 | | |
244 | 253 | | |
| |||
279 | 288 | | |
280 | 289 | | |
281 | 290 | | |
282 | | - | |
| 291 | + | |
283 | 292 | | |
284 | | - | |
| 293 | + | |
285 | 294 | | |
286 | 295 | | |
287 | 296 | | |
| |||
349 | 358 | | |
350 | 359 | | |
351 | 360 | | |
352 | | - | |
353 | | - | |
354 | | - | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
355 | 364 | | |
356 | 365 | | |
357 | 366 | | |
| |||
360 | 369 | | |
361 | 370 | | |
362 | 371 | | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
370 | 375 | | |
371 | 376 | | |
372 | 377 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
244 | 244 | | |
245 | 245 | | |
246 | 246 | | |
247 | | - | |
248 | | - | |
249 | | - | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
257 | | - | |
| 257 | + | |
258 | 258 | | |
259 | 259 | | |
260 | 260 | | |
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
| 270 | + | |
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
| |||
394 | 394 | | |
395 | 395 | | |
396 | 396 | | |
397 | | - | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
398 | 400 | | |
399 | | - | |
| 401 | + | |
400 | 402 | | |
401 | 403 | | |
402 | 404 | | |
403 | 405 | | |
404 | 406 | | |
405 | 407 | | |
406 | 408 | | |
407 | | - | |
| 409 | + | |
408 | 410 | | |
409 | | - | |
| 411 | + | |
410 | 412 | | |
411 | 413 | | |
412 | 414 | | |
| |||
455 | 457 | | |
456 | 458 | | |
457 | 459 | | |
458 | | - | |
| 460 | + | |
459 | 461 | | |
460 | | - | |
| 462 | + | |
461 | 463 | | |
462 | 464 | | |
463 | 465 | | |
| |||
504 | 506 | | |
505 | 507 | | |
506 | 508 | | |
507 | | - | |
508 | | - | |
509 | | - | |
| 509 | + | |
510 | 510 | | |
511 | 511 | | |
512 | 512 | | |
513 | 513 | | |
514 | | - | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
515 | 517 | | |
516 | | - | |
| 518 | + | |
517 | 519 | | |
518 | 520 | | |
519 | 521 | | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | | - | |
524 | 522 | | |
525 | 523 | | |
526 | 524 | | |
| |||
531 | 529 | | |
532 | 530 | | |
533 | 531 | | |
534 | | - | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
535 | 535 | | |
536 | 536 | | |
537 | 537 | | |
| |||
551 | 551 | | |
552 | 552 | | |
553 | 553 | | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
554 | 565 | | |
555 | 566 | | |
556 | 567 | | |
| |||
559 | 570 | | |
560 | 571 | | |
561 | 572 | | |
562 | | - | |
| 573 | + | |
563 | 574 | | |
564 | 575 | | |
565 | 576 | | |
566 | | - | |
| 577 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
110 | 113 | | |
111 | 114 | | |
112 | 115 | | |
113 | 116 | | |
114 | 117 | | |
115 | 118 | | |
116 | 119 | | |
117 | | - | |
| 120 | + | |
118 | 121 | | |
119 | | - | |
| 122 | + | |
120 | 123 | | |
121 | 124 | | |
122 | 125 | | |
123 | 126 | | |
124 | 127 | | |
125 | | - | |
| 128 | + | |
126 | 129 | | |
127 | 130 | | |
128 | 131 | | |
129 | 132 | | |
130 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
131 | 138 | | |
132 | 139 | | |
133 | 140 | | |
| |||
173 | 180 | | |
174 | 181 | | |
175 | 182 | | |
176 | | - | |
177 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
178 | 191 | | |
179 | 192 | | |
180 | 193 | | |
| |||
198 | 211 | | |
199 | 212 | | |
200 | 213 | | |
201 | | - | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
202 | 218 | | |
203 | 219 | | |
204 | | - | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
205 | 225 | | |
206 | 226 | | |
207 | 227 | | |
| |||
227 | 247 | | |
228 | 248 | | |
229 | 249 | | |
230 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
231 | 253 | | |
232 | 254 | | |
233 | 255 | | |
| |||
241 | 263 | | |
242 | 264 | | |
243 | 265 | | |
244 | | - | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
245 | 269 | | |
246 | 270 | | |
247 | 271 | | |
| |||
264 | 288 | | |
265 | 289 | | |
266 | 290 | | |
267 | | - | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
268 | 296 | | |
269 | 297 | | |
270 | 298 | | |
| |||
294 | 322 | | |
295 | 323 | | |
296 | 324 | | |
297 | | - | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
298 | 328 | | |
299 | 329 | | |
300 | | - | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
301 | 334 | | |
302 | 335 | | |
303 | 336 | | |
304 | 337 | | |
305 | 338 | | |
306 | 339 | | |
307 | | - | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
308 | 343 | | |
0 commit comments