Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

useFrecencySorting ignores how long ago an item was visited when sorting

Cerrado Apto para principiantes
#84 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

  • #85 de @auraseb — cerrado sin fusionar

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript

Línea de trabajo

Empieza por el comparador y getNewFrecency en src/useFrecencySorting.ts; compara cómo se actualiza la puntuación almacenada con las visitas y cómo se ordenan los elementos. Comprueba la reproducción mínima comparando un elemento cuya última visita fue hace 60 días con otro que se visitó dos veces hoy. El trabajo estará terminado cuando la ordenación tenga en cuenta el tiempo transcurrido y, en ese caso, el elemento reciente quede primero.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

What happens

useFrecencySorting stores, for each item, a score and the time of the last visit. When the list is sorted, the stored scores are compared directly:

if (frecencyA && frecencyB) {
  return frecencyB.frecency - frecencyA.frecency;
}

The stored score is only decayed when the same item is visited again (in getNewFrecency). At sort time, a score from a year ago and a score from today are treated as if they were taken at the same moment. As a result:

  1. Two items visited once each always tie at 100, no matter whether the visit was today or a year ago, so the list falls back to the original order.
  2. An item visited 4 times two months ago (stored score 400) stays above an item visited twice today (stored score 200) forever. With the 10 day half life the old score is worth about 6 today.

Once an item has accumulated a high score it can never be overtaken by recent usage of other items unless it is reset.

What should happen

The docs say "The more often an item is visited, and the more recently an item is visited, the higher it will rank." Recent visits should outrank old ones of the same or similar weight, as in the Firefox algorithm the hook is based on.

Minimal repro

// visit "stale" 4 times, then wait 60 days, then visit "fresh" twice
const { data, visitItem } = useFrecencySorting([{ id: "stale" }, { id: "fresh" }]);
// data is [stale, fresh]; expected [fresh, stale]

Root cause

The comparator in src/useFrecencySorting.ts uses frecency without applying the decay for the time elapsed since lastVisited. Decaying both scores to the same now before comparing fixes it. getNewFrecency already has the decay formula, so it can be shared.

Lenguaje dominante
TypeScript
Estrellas
85
Forks
18
Merge medio
8 min
PR fusionados (30 d)
2

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de raycast/utils

Todos los issues de raycast/utils

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.