Skip to content

Release v1.8.2 - #738

Merged
ShaneIsrael merged 8 commits into
mainfrom
develop
Sep 22, 2026
Merged

ShaneIsrael merged 8 commits into
mainfrom
develop

Conversation

@ShaneIsrael

Copy link
Copy Markdown
Collaborator

Summary

Release v1.8.2, bringing develop up to date with main.

  • Repo transfer: update all GitHub links/badges/API references from ShaneIsrael/fireshare to fireshare-app/fireshare (Docker Hub and GitHub Sponsors links are unaffected and unchanged)
  • Bump version to 1.8.2
  • Proxy the dev client to the API over 127.0.0.1
  • Find and relink media that was moved on disk
  • Home feed of videos and photos, with a sidebar arranged by dragging
  • Fix: attribute media found by a library scan to the administrator
  • Bump API timeout to 25s to fix issues with large profile libraries

Test plan

  • Verify GitHub links/badges in the README render correctly post-transfer
  • Verify in-app update-check and Discord webhook avatar still resolve correctly
  • Smoke test media relinking and home feed features

jaherron and others added 8 commits September 17, 2026 00:36
My profile with 12334 items was failing to load with the original 10s API timeout. I changed the API timeout to 25s after testing with browser devtools to find that my profile was taking 20.59 seconds to load.
fix(api): bump timeout to 25s to fix issues with large profile libraries
scan-videos and scan-images created their rows with no uploader, so anything
recorded straight into the media directory showed up on nobody's profile and
sat outside edit_own / delete_own. Only the single-file scan behind an
authenticated upload ever set one. That was the documented behaviour, but it
is not the useful one: a file that appeared on the server's own disk was put
there by whoever runs the server, and on the single-admin install that
describes nearly every deployment the administrator is the accurate owner.

Both bulk scans now stamp new rows with the bootstrap administrator, found the
same way create_app pins it: the env-managed account, falling back to the
lowest-id local admin. Rows already in the library are left alone, since the
scan cannot tell an old disk scan from an anonymous public upload; File
Manager -> Uploader adopts those. Anonymous public uploads still carry no
owner, and an authenticated upload still belongs to the account that made it.

Users.md described scanned media as unowned and now says the opposite.

Fixes #731
…ging

Home is a new page that shows videos and photos together, grouped by day
(Today, Yesterday, the weekday for the past week, then the date) and laid out
as a waterfall: each card drops into the shortest column, ties going left, so
a run of 16:9 videos still reads left to right like the Videos grid while
photos of any shape pack tightly around them. The day headers are what make
that acceptable: order within a day is loose, the timeline is not. A toolbar
toggle narrows the feed to videos or photos; sort and visibility filters work
as they do elsewhere, and sorting by views or name drops the day headers for
one continuous waterfall. Cards are the existing CompactVideoCard and
MasonryImageCard, the latter gaining an at-rest photo mark so the two are
distinguishable in a mixed feed. Video payloads gain created_at/updated_at so
the feed has a date for clips whose filename carries none.

Settings -> Sidebar replaces the five show/hide checkboxes with one list.
Drag a page to change its order; drop it below the line to hide it, above the
line to show it again, or use the eye button to do the same without dragging.
The account group (Profile, File Manager, Settings) is not in the list, since
who sees those is decided by the account, not by preference. The arrangement
is stored as ui_config.sidebar_pages, with the old show_* flags written
alongside so anything reading them keeps agreeing with the sidebar. An install
that only has the flags derives its order from them, so upgrading changes
nothing on its own, and a page added later slots in at its default position
rather than vanishing.

The page at the top of that list is the landing page: "/" opens it. Videos
still lives at "/" itself, so with Videos on top nothing redirects and every
existing link keeps working; any other page is a redirect that carries the
query string along. Home is on by default and first, so an upgraded install
lands on the new feed until an administrator drags Videos back above it or
hides Home.

Not in this first cut: the feed has no bulk edit mode or folder dropdown.
Each card's own menu still works.

Fixes #709
A library scan deliberately does not follow a file that turns up at a new
path: it marks the record missing and leaves the new file alone, because a
file with the same name somewhere else is no proof it is the same file. That
is the right default, but it left anyone who reorganised folders outside
Fireshare with records that 404 and no way back short of re-importing.

Settings -> Actions gains Find Moved Files, shown with a count of how many
records are currently missing. It hashes every media file that is not indexed
at its current path (files the scan already knows are skipped, so the cost is
proportional to what moved) and matches those hashes against the missing
records. Nothing happens on its own: the result is a plan, one checkbox per
match, and only the ticked rows are relinked. Files it cannot find stay listed
as missing. Apply re-hashes each chosen file before touching its record, so a
plan that has gone stale cannot point a record at the wrong file, and rejects
any path that escapes the library.

Relinking updates the record's path, extension, folder and playback symlink
and marks it available again. Nothing on disk moves, and because the id is
the content hash, posters, transcodes, tags and views stay attached. Folder
rules are not applied on relink: the user chose the folder deliberately, and
nothing else about the record is inferred from it.

Fixes #716
The vite proxy targeted localhost:3001. Node resolves localhost to ::1 first
on macOS, and Flask binds IPv4 only, so whenever something else was listening
on the IPv6 side of 3001 every /api request went to it instead. Naming the
loopback address makes the proxy reach the socket Flask actually opens.
Repo moved from ShaneIsrael/fireshare to fireshare-app/fireshare.
Updates README badges/links, the release-check API call, the Discord
webhook avatar URL, and the navbar's GitHub/issues links. Docker Hub
references and GitHub Sponsors links are unaffected and left as-is.
@ShaneIsrael
ShaneIsrael merged commit 8c9d99c into main Sep 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants