Home > Releases
Release date:
Enter
key as a hotkey to open selected itemvideo
element poster
attributeindex.xml
feed.atom
and feed.rss
are used by enterprise-scale/old-school gigantic CMS<title>
elementsgit describe
and rev-parse
stderr: When building from a tarball instead of a cloned git repo, there would be two fatal: not a git repository
errors emitted even though the build succeeds. This is because of how VERSION
and COMMIT
are set in the Makefile. This PR suppresses the stderr for these variable assignments.CGO_ENABLED=0
for miniflux
targetstaticcheck
and golangci-lint
insteadgo.mod
and add .exe
suffix to Windows binaryio.ReadSeeker
instead of an io.Reader
to parse feedswww
strings.Builder
instead of a bytes.Buffer
strings.NewReader
instead of a bytes.NewBufferString
continue
to make the code-flow more obviousinList
, and put their parameters in the right orderisPixelTracker
isValidIframeSource
, by extracting the hostname and comparing it directly, instead of using the full url and checking if it starts with multiple variations of the same one (//
, http:
, https://
multiplied by /www.
)slices
instead of hand-rolled loops
collector/allocator involvements.Reader
instead of copying to a buffer when parsing an Atom feedview.New
after logging the user in: There is no need to do extra work like creating a session and its associated view until the user has been properly identified and as many possibly-failing sql request have been successfully rungenericProxyRewriter
shouldProxy
function to reduce the copy-pasta.removeUnlikelyCandidates
: .Not
returns a brand new Selection
, copied element by elementEstimateReadingTime
’s speed by a factor 7whatlanggo.Detect
is abysmally slow.username
generation for the integration tests: No need to generate random numbers 10 times, generate a single big-enough one. A single int64 should be more than enoughArchiveEntries
and updateEnclosures
line
is positive since we’re checking afterwards that it contains the =
signdefer()
in a loopstrings.ReplaceAll
instead of strings.Replace(…, -1)
strings.EqualFold
instead of strings.ToLower(…) ==
.WriteString(
instead of .Write([]byte(…
%q
instead of "%s"
internal/worker/worker.go
read-onlyinternal/locale/plural.go
instead of an avalanche of if
formatFileSize
and duration
implementationprinter.Print
when possibleprinter.Print
to internal/locale/printer.go
: No need to use variadic functions with string format interpolation to generate static stringsinternal/ui/view/view.go
: No need to create the map item by item when we can create it in one goCountAllFeeds()
: No need to build an empty map to then add more fields in it one by oneinternal/reader/subscription/finder.go
:localizedError
in FindSubscriptionsFromWellKnownURLs
via slog
subscriptions
slice when using an RSS-bridge,MarkCategoryAsRead
instead of a subqueryCleanOldUserSessions
’ query: No need for a subquery, filtering on created_at
directly is enoughcleanupEntries
’ queryNOT (hash=ANY(%4))
can be expressed as hash NOT IN $4
ArchiveEntries
’s query for consistency’s sake and replace the =ANY
with an IN
GetEntryIDs
and GetReadTime
’s query for consistency’s sakeWeeklyFeedEntryCount
: No need for a BETWEEN
: we want to filter on entries published in the last week, no need to express is as “entries published between now and last week”, “entries published after last week” is enoughadd_image_title
github.com/google/uuid
dependencies: Replace it with a hand-rolled implementation. Heck, an UUID isn’t even a requirement according to Omnivore API docsinternal/reader/icon/finder.go
:apple-touch-icon-precomposed.png
as a fallback favicon
icon
first, since it seems to be the most popular one. It used to be last, meaning that pages had to be parsed completely 4 times, instead of one now.findIconURLsFromHTMLDocument
internal/reader/date/parser.go
:Entry
struct to save some memorygolang.org/x/oauth2
from 0.17.0
to 0.18.0
github.com/prometheus/client_golang
from 1.18.0
to 1.19.0
github.com/tdewolff/minify/v2
from 2.20.16
to 2.20.18
github.com/PuerkitoBio/goquery
from 1.8.1
to 1.9.1
golang.org/x/crypto
from 0.19.0
to 0.20.0
github.com/go-jose/go-jose/v3
from 3.0.1
to 3.0.3