glanceapp/glance · warning

%w: missing videos from %d channels

Error message

%w: missing videos from %d channels

What it means

After successfully fetching at least some YouTube feeds, one or more channels failed, so the widget returns the videos it has wrapped in errPartialContent with the count of failed channels. Rendering degrades to partial content instead of a hard failure.

Source

Thrown at internal/glance/widget-videos.go:212

			videos = append(videos, video{
				ThumbnailUrl: v.Group.Thumbnail.Url,
				Title:        v.Title,
				Url:          videoUrl,
				Author:       response.Channel,
				AuthorUrl:    response.ChannelLink + "/videos",
				TimePosted:   parseYoutubeFeedTime(v.Published),
			})
		}
	}

	if len(videos) == 0 {
		return nil, errNoContent
	}

	videos.sortByNewest()

	if failed > 0 {
		return videos, fmt.Errorf("%w: missing videos from %d channels", errPartialContent, failed)
	}

	return videos, nil
}

View on GitHub (pinned to 91324e8de7)

Solutions

  1. Find the 'Failed to fetch youtube feed' log lines to identify which channel IDs failed
  2. Remove or correct the failing channel/playlist IDs in the videos widget config
  3. Lengthen cache time so the 30-worker burst is less frequent
Defensive patterns

Strategy: fallback

Type guard

func isPartialContent(err error) bool { return errors.Is(err, errPartialContent) }

Try / catch

videos, err := widget.getVideos()
if errors.Is(err, errPartialContent) {
    // videos still contains the successful feeds; render them
    renderVideos(videos)
    slog.Warn("some youtube feeds failed", "err", err)
    return nil
}

Prevention

When it happens

Trigger: At least one errs[i] != nil in the per-feed loop while at least one feed succeeded: a bad channel ID, a 429 on one feed, or a deleted playlist among the configured channels.

Common situations: One stale channel ID in a long channels list; YouTube rate-limiting a subset of burst requests (30 workers hitting feeds at once).

Related errors


AI-assisted analysis of glanceapp/glance@91324e8de7 (2026-08-15). Data as JSON: /api/errors/b7bb80af476a61a5. Report an issue: GitHub.