/** matrixsso-style relative time (e.g. "4m", "3h", "now"). */
export function formatForumTimeAgo(timestamp: number): string {
  const ms = timestamp;
  if (!Number.isFinite(ms) || ms <= 0) {
    return 'now';
  }

  const seconds = Math.floor((Date.now() - ms) / 1000);
  if (seconds < 45) {
    return 'now';
  }

  const minutes = Math.floor(seconds / 60);
  if (minutes < 60) {
    return `${minutes}m`;
  }

  const hours = Math.floor(minutes / 60);
  if (hours < 24) {
    return `${hours}h`;
  }

  const days = Math.floor(hours / 24);
  if (days < 7) {
    return `${days}d`;
  }

  const weeks = Math.floor(days / 7);
  if (weeks < 5) {
    return `${weeks}w`;
  }

  const months = Math.floor(days / 30);
  if (months < 12) {
    return `${months}mo`;
  }

  const years = Math.floor(days / 365);
  return `${years}y`;
}
