Pace IGDB requests; rewrite the new help text

IGDB allows 4 requests a second, and an import searching three entries
at once (plus detail lookups) went over it. Every IGDB request now waits
at least 300 ms after the last one, and a 429 is retried after 1, 2 and
4 seconds before giving up.

The import dialog, ranking editor and their error messages are reworded
in plainer language, and talk about "spots" instead of "places".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-10-08 14:51:09 -07:00
1 parent 62fcf6b45d
commit 1f3fa4fb2b
7 files changed
+60 -37

No files matched your search

+4 -4
View File
@@ -67,7 +67,7 @@ func (p places) makeRoom(at, limit int) error {
gap++
}
if gap > limit {
return invalid("No room: this list ends at #%d. Raise its size in List settings, or remove an empty place first.", limit)
return invalid("There's no room left. This list stops at #%d; make it bigger in List settings or close up an open spot.", limit)
}
p.shift(at, gap-1, +1)
return nil
@@ -187,7 +187,7 @@ func (s *Store) beginPlaces(ctx context.Context, listID int64) (*placeTx, error)
// write saves the places that changed, without committing.
func (pt *placeTx) write(ctx context.Context) error {
if last := pt.p.last(); last > pt.limit {
return invalid("No room: this list ends at #%d. Raise its size in List settings.", pt.limit)
return invalid("There's no room left. This list stops at #%d; make it bigger in List settings.", pt.limit)
}
stmt, err := pt.tx.PrepareContext(ctx, `UPDATE items SET rank = ? WHERE id = ?`)
if err != nil {
@@ -241,7 +241,7 @@ func (pt *placeTx) list() []Place {
func (pt *placeTx) checkPlace(at int) error {
if at < 1 || at > pt.limit {
return invalid("Pick a place from #1 to #%d.", pt.limit)
return invalid("Pick a number from 1 to %d.", pt.limit)
}
return nil
}
@@ -310,7 +310,7 @@ func (s *Store) RemovePlace(ctx context.Context, listID int64, at, count int) ([
count = max(count, 1)
for r := at; r < at+count; r++ {
if _, taken := pt.p[r]; taken {
return nil, invalid("#%d isn't empty.", r)
return nil, invalid("#%d isn't open.", r)
}
}
for range count {