Skip to content

Conversation

@irenekim21
Copy link
Contributor

@irenekim21 irenekim21 commented Jan 14, 2026

when user clicks on their desired journey edit, and goes back to the templates page, their most recent selected/clicked on journey will be showing up first so it's easy for user to know which journey they clicked/easy to find.

Summary by CodeRabbit

Release Notes

  • New Features

    • Recently opened journeys now appear at the top of journey lists for quick access.
    • Template sort order preferences are now saved and persisted between sessions.
  • Improvements

    • Enhanced scrolling experience with momentum scrolling support and improved scrollbar handling.
    • Refined button styling for a cleaner interface.

✏️ Tip: You can customize this high-level summary in your review settings.

@irenekim21 irenekim21 self-assigned this Jan 14, 2026
@linear
Copy link

linear bot commented Jan 14, 2026

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 14, 2026

Walkthrough

Introduces journey tracking via localStorage to record recently opened items, updates sorting to prioritize tracked journeys, converts JourneySort to a controlled component, adds persistent sort preferences to TemplateList, and improves UI scrollbar and button styling.

Changes

Cohort / File(s) Summary
Journey Tracking Infrastructure
apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts, apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts, apps/journeys-admin/pages/_app.tsx
New hook that detects route changes to /journeys/{id} or /templates/{id} and stores the journey ID to localStorage with timestamp. Hook is invoked in JourneyApp on mount.
Journey Sorting & List Updates
apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx, apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts, apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
JourneySort changed from uncontrolled (defaultValue) to controlled (value) component. sortJourneys now extracts recently opened journey and places it first in results. TemplateList now persists sort order to localStorage and initializes from it.
Component UI/Logic Refinements
apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx, libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx, libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx
AnalyticsOverlaySwitch: parameter name cleanup. WebsiteCover: overflow changed to scroll with momentum scrolling and cross-browser scrollbar hiding. HeaderAndLanguageFilter: button ripple effects disabled and anchor element guard added.

Sequence Diagram(s)

sequenceDiagram
    participant Router
    participant useTrackRecentlyOpenedJourney
    participant trackRecentlyOpenedJourney
    participant localStorage
    participant sortJourneys
    participant JourneySort

    Router->>useTrackRecentlyOpenedJourney: routeChangeComplete /journeys/{id}
    useTrackRecentlyOpenedJourney->>trackRecentlyOpenedJourney: trackRecentlyOpenedJourney(journeyId)
    trackRecentlyOpenedJourney->>localStorage: store {journeyId, openedAt}
    
    Note over JourneySort: User triggers sort
    JourneySort->>sortJourneys: sortJourneys(journeys, sortOrder)
    sortJourneys->>localStorage: getRecentlyOpenedJourney()
    localStorage-->>sortJourneys: RecentlyOpenedJourneyRecord | null
    sortJourneys->>sortJourneys: isolate recent, sort others
    sortJourneys-->>JourneySort: [recentlyOpened, ...sortedOthers]
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • edmonday
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main objective: implementing persistent sort order memory to prevent unintended sort switches, which aligns with the changeset's focus on tracking recently opened journeys and maintaining sort preferences.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch irenekim/nes-465-sort-by-order-should-remember-last-selection-and-not-switch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx (1)

118-118: Fix typo in color property.

'secondar.light' should be 'secondary.light'. This typo will cause the color to not be applied correctly.

Proposed fix
         sx={{
           backgroundColor: 'white',
           border: '1px solid',
           borderColor: 'divider',
-          color: 'secondar.light'
+          color: 'secondary.light'
         }}
🧹 Nitpick comments (7)
libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx (1)

181-186: Consider removing anchorEl from the dependency array.

The guard anchorEl !== popperAnchor prevents unnecessary state updates, but including anchorEl in the dependency array means the effect still re-runs on every anchorEl change. Since the DOM element popperAnchor is stable after mount, an empty dependency array with the guard would be more efficient.

Suggested improvement
   useEffect(() => {
     const popperAnchor = document?.getElementById('popperAnchorLayer')
-    if (popperAnchor != null && anchorEl !== popperAnchor) {
+    if (popperAnchor != null) {
       setAnchorEl(popperAnchor)
     }
-  }, [anchorEl])
+  }, [])
apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts (1)

40-48: Consider adding staleness check for the recently opened journey.

The openedAt timestamp is stored but never used. If a user opens a journey, leaves for days, and returns, that journey still appears first. Consider adding an optional expiration (e.g., 24 hours) to ensure relevance.

Optional staleness check
+const STALENESS_THRESHOLD_MS = 24 * 60 * 60 * 1000 // 24 hours
+
 export function getRecentlyOpenedJourney(): RecentlyOpenedJourneyRecord | null {
   if (typeof window === 'undefined') return null

   try {
     const storedValue = localStorage.getItem(RECENTLY_OPENED_JOURNEY_KEY)
-    return parseStoredJourney(storedValue)
+    const record = parseStoredJourney(storedValue)
+    if (record == null) return null
+    
+    const isStale = Date.now() - record.openedAt > STALENESS_THRESHOLD_MS
+    return isStale ? null : record
   } catch {
     return null
   }
 }
apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts (1)

30-30: Consider narrowing the dependency array.

Using the entire router object as a dependency may cause unnecessary effect re-runs. Consider depending on specific stable properties.

Refined dependencies
-  }, [router])
+  }, [router.isReady, router.asPath, router.events])
apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx (1)

38-43: Unused error parameter may trigger lint warnings.

The parameter was renamed from _ to error but remains unused. Consider either logging the error for debugging or reverting to _ to indicate intentional disuse.

Option A: Log the error
     onError: (error) => {
+      console.error('Analytics fetch error:', error)
       enqueueSnackbar(t('Error fetching analytics'), {
         variant: 'error',
         preventDuplicate: true
       })
     }
Option B: Keep underscore convention
-    onError: (error) => {
+    onError: (_error) => {
apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx (1)

120-120: Simplify disabled prop check.

The expression disabled != null && disabled can be simplified to just disabled since undefined and false are both falsy.

Proposed fix
-        disabled={disabled != null && disabled}
+        disabled={disabled}
apps/journeys-admin/src/components/TemplateList/TemplateList.tsx (1)

58-62: Consider simplifying the null check.

Since sortOrder is always initialized with a value (either from localStorage or the default SortOrder.UPDATED_AT), the sortOrder != null check is redundant. However, keeping it provides defensive coding against future changes.

Optional simplification
  useEffect(() => {
-   if (sortOrder != null && typeof window !== 'undefined') {
+   if (typeof window !== 'undefined') {
      localStorage.setItem(SORT_ORDER_STORAGE_KEY, sortOrder)
    }
  }, [sortOrder])
apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts (1)

16-23: Consider combining find and filter into a single pass.

Currently the code iterates the array twice (find + filter). For small arrays this is fine, but could be optimized with a single iteration using reduce.

Optional optimization using reduce
-  const recentlyOpenedJourney =
-    recentlyOpenedJourneyId != null
-      ? journeys.find((j) => j.id === recentlyOpenedJourneyId)
-      : null
-  const otherJourneys =
-    recentlyOpenedJourneyId != null
-      ? journeys.filter((j) => j.id !== recentlyOpenedJourneyId)
-      : journeys
+  let recentlyOpenedJourney: Journey | null = null
+  const otherJourneys: Journey[] = []
+
+  for (const journey of journeys) {
+    if (recentlyOpenedJourneyId != null && journey.id === recentlyOpenedJourneyId) {
+      recentlyOpenedJourney = journey
+    } else {
+      otherJourneys.push(journey)
+    }
+  }
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f1d0722 and f645a9f.

📒 Files selected for processing (9)
  • apps/journeys-admin/pages/_app.tsx
  • apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
  • apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts
  • libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx
  • libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/base.mdc)

**/*.{ts,tsx,js,jsx}: Use early returns whenever possible to make the code more readable.
Use descriptive variable and function/const names.
Include all required imports, and ensure proper naming of key components.

Files:

  • apps/journeys-admin/pages/_app.tsx
  • libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx
  • apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
  • apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts
  • libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/base.mdc)

Define a type if possible.

Files:

  • apps/journeys-admin/pages/_app.tsx
  • libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx
  • apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
  • apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts
  • libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx
apps/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/apps.mdc)

apps/**/*.{js,jsx,ts,tsx}: Always use MUI over HTML elements; avoid using CSS or tags.
Use descriptive variable and function/const names. Also, event functions should be named with a “handle” prefix, like “handleClick” for onClick and “handleKeyDown” for onKeyDown.
Implement accessibility features on elements. For example, a tag should have a tabindex=“0”, aria-label, on:click, and on:keydown, and similar attributes.

Files:

  • apps/journeys-admin/pages/_app.tsx
  • apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
  • apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts
  • apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts
  • apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx
🧠 Learnings (6)
📚 Learning: 2025-11-11T23:22:02.196Z
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 8156
File: apis/api-journeys-modern/src/lib/google/googleAuth.ts:0-0
Timestamp: 2025-11-11T23:22:02.196Z
Learning: In apis/api-journeys-modern, use the validated `env` object from `../../env` instead of accessing `process.env` directly for environment variables that are defined in env.ts (e.g., GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, INTEGRATION_ACCESS_KEY_ENCRYPTION_SECRET). This eliminates the need for runtime validation checks since Zod validates them at application startup.

Applied to files:

  • apps/journeys-admin/pages/_app.tsx
📚 Learning: 2025-12-19T04:58:24.460Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.{ts,tsx} : Use `<Link>` for navigation instead of custom click handlers in Next.js.

Applied to files:

  • apps/journeys-admin/pages/_app.tsx
  • apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts
📚 Learning: 2025-12-19T04:58:24.460Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.{ts,tsx} : Preserve existing contracts in components like `VideoBlock` which depend on the full provider stack, video.js, and mux metadata so autoplay, subtitles, and analytics remain intact.

Applied to files:

  • libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx
📚 Learning: 2025-12-19T04:58:24.460Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.{ts,tsx} : Use alphabetical order for imports and exports.

Applied to files:

  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
  • apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx
📚 Learning: 2025-12-19T19:18:43.790Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/resources/AGENTS.md:0-0
Timestamp: 2025-12-19T19:18:43.790Z
Learning: Applies to apps/resources/**/*.{ts,tsx} : Use alphabetical order for imports and exports

Applied to files:

  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
📚 Learning: 2025-12-19T04:58:24.460Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.{ts,tsx} : Tailwind utilities should stay semantically grouped—Prettier sorts the lists, but ensure responsive and state variants remain readable.

Applied to files:

  • apps/journeys-admin/src/components/TemplateList/TemplateList.tsx
🧬 Code graph analysis (4)
apps/journeys-admin/pages/_app.tsx (1)
apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts (1)
  • useTrackRecentlyOpenedJourney (6-31)
apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts (1)
apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts (1)
  • trackRecentlyOpenedJourney (24-38)
apps/journeys-admin/src/components/TemplateList/TemplateList.tsx (1)
apps/journeys-admin/src/components/JourneyList/JourneyList.tsx (1)
  • JourneyListEvent (22-31)
apps/journeys-admin/src/components/Editor/Slider/JourneyFlow/AnalyticsOverlaySwitch/AnalyticsOverlaySwitch.tsx (1)
apis/api-gateway/src/logger.ts (1)
  • error (34-37)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (8)
libs/journeys/ui/src/components/TemplateGallery/HeaderAndLanguageFilter/HeaderAndLanguageFilter.tsx (1)

71-88: LGTM! Button interaction styling removed.

The combination of disableRipple, disableTouchRipple, and transparent backgrounds across all states effectively removes visual feedback. This appears intentional for a cleaner UI.

libs/journeys/ui/src/components/Card/WebsiteCover/WebsiteCover.tsx (1)

149-162: Scrollbar hiding implementation is comprehensive.

The cross-browser scrollbar hiding covers WebKit, Firefox, and IE/Edge appropriately.

Minor considerations:

  1. overflowY: 'scroll' forces scroll behavior even when content fits. If 'auto' was intentionally changed to 'scroll', this is fine; otherwise 'auto' would prevent unnecessary scroll affordance.
  2. WebkitOverflowScrolling is deprecated but still provides momentum scrolling on older iOS devices—acceptable for progressive enhancement.
apps/journeys-admin/src/components/JourneyList/JourneySort/utils/trackRecentlyOpenedJourney.ts (1)

1-49: Well-structured localStorage utility with proper SSR and error handling.

The implementation correctly:

  • Guards against SSR environments
  • Validates parsed JSON structure before use
  • Handles localStorage errors gracefully
  • Prevents empty/whitespace journey IDs
apps/journeys-admin/src/libs/useTrackRecentlyOpenedJourney/useTrackRecentlyOpenedJourney.ts (1)

6-30: Well-implemented tracking hook with proper cleanup.

The hook correctly:

  • Extracts journey IDs from both /journeys/ and /templates/ routes
  • Handles initial route tracking when router is ready
  • Cleans up the event listener on unmount
apps/journeys-admin/pages/_app.tsx (1)

21-21: LGTM!

The hook is appropriately placed at the app level to track journey navigation across all routes. The integration is clean and follows React hook conventions.

Also applies to: 53-54

apps/journeys-admin/src/components/JourneyList/JourneySort/JourneySort.tsx (1)

75-79: LGTM!

Converting to a controlled RadioGroup with value prop is the correct approach for maintaining the sort order state in the parent component. The fallback to SortOrder.UPDATED_AT ensures a sensible default.

apps/journeys-admin/src/components/TemplateList/TemplateList.tsx (1)

44-55: LGTM!

Good implementation of localStorage persistence with proper SSR guards and validation against the SortOrder enum. The lazy initializer pattern for useState is appropriate here.

apps/journeys-admin/src/components/JourneyList/JourneySort/utils/sortJourneys.ts (1)

47-50: LGTM!

The final assembly logic is clean and correctly handles both cases: when a recently opened journey exists and when it doesn't.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@nx-cloud
Copy link

nx-cloud bot commented Jan 14, 2026

View your CI Pipeline Execution ↗ for commit 68be84f

Command Status Duration Result
nx run journeys-admin-e2e:e2e ✅ Succeeded 2m 45s View ↗
nx run watch-e2e:e2e ✅ Succeeded 17s View ↗
nx run journeys-e2e:e2e ✅ Succeeded 19s View ↗
nx run videos-admin-e2e:e2e ✅ Succeeded 4s View ↗
nx run resources-e2e:e2e ✅ Succeeded 10s View ↗
nx run-many --target=vercel-alias --projects=watch ✅ Succeeded 2s View ↗
nx run-many --target=upload-sourcemaps --projec... ✅ Succeeded 7s View ↗
nx run-many --target=deploy --projects=watch ✅ Succeeded 52s View ↗
Additional runs (12) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2026-01-15 00:33:26 UTC

@github-actions github-actions bot temporarily deployed to Preview - journeys-admin January 14, 2026 22:29 Inactive
@github-actions github-actions bot temporarily deployed to Preview - resources January 14, 2026 22:29 Inactive
@github-actions github-actions bot temporarily deployed to Preview - videos-admin January 14, 2026 22:29 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys January 14, 2026 22:29 Inactive
@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
journeys ✅ Ready journeys preview Thu Jan 15 13:23:29 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
videos-admin ✅ Ready videos-admin preview Thu Jan 15 13:23:29 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
watch ✅ Ready watch preview Thu Jan 15 13:24:19 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
resources ✅ Ready resources preview Thu Jan 15 13:23:27 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
journeys-admin ✅ Ready journeys-admin preview Thu Jan 15 13:23:33 NZDT 2026

@blacksmith-sh

This comment has been minimized.

@irenekim21 irenekim21 closed this Jan 14, 2026
@irenekim21 irenekim21 reopened this Jan 14, 2026
@github-actions github-actions bot temporarily deployed to Preview - journeys January 14, 2026 23:02 Inactive
@github-actions github-actions bot temporarily deployed to Preview - videos-admin January 14, 2026 23:02 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys-admin January 14, 2026 23:02 Inactive
@github-actions github-actions bot temporarily deployed to Preview - resources January 14, 2026 23:02 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys January 15, 2026 00:21 Inactive
@github-actions github-actions bot temporarily deployed to Preview - resources January 15, 2026 00:21 Inactive
@github-actions github-actions bot temporarily deployed to Preview - videos-admin January 15, 2026 00:21 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys-admin January 15, 2026 00:21 Inactive
@irenekim21 irenekim21 changed the title Irenekim/nes 465 sort by order should remember last selection and not switch feat: sort by order should remember last selection and not switch Jan 15, 2026
@irenekim21 irenekim21 closed this Jan 18, 2026
@irenekim21 irenekim21 deleted the irenekim/nes-465-sort-by-order-should-remember-last-selection-and-not-switch branch January 18, 2026 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants