github hrfee/jfa-go v0.5.1
v0.5.1: Activity Log, Backups, Improvements, Fixes

10 months ago

Meant to release this sooner to remedy a bunch of bugs in .5.0, but as usual got bogged down by uni.
Upgrade ASAP if you're still on 0.5.0, which has bugs that can lead to data loss.

I hope everyone is having a nice holiday period, and I hope you all join me in praying this release actually deserves the name "Stable".

Major

  • Activity Log: Logs all the significant stuff that occurs through jfa-go in the new "Activity" tab:
    • Account creation, deletion, enable/disable & expiry
    • Invite creation, deletion & expiry
    • Contact linking/unlinking
    • Password resets
    • and probably some other stuff.
    • Stores information about the source (User, admin, or daemon, and accompanying username), invite, referrer, date, etc.
    • Working pseudo-links to the appropriate resources (users, invites and activities)
    • Optional: Store the IP address of the actor. Legality depends on where you live so disabled by default. See note in Settings > Advanced. Thank you @kimboslice99! (0840931)
    • Searchable, filterable like the accounts tab.
    • Retention settings in Settings > Activity Log, set a number limit or age limit of stored activities.
    • Fulfils the initial goal of showing which referral and associated user someone made an account from.
    • (1be20d4)
  • Backups: Since 0.5.0 resulted in data loss for some admins and removed the ability to change data through the simple JSON storage files, backups of the database can now be made and applied.
    • Press the "Backups" button in settings to see a list of backups, download or upload them, apply them, or create a new one.
    • Visit the "Backups" section in settings to enable scheduled backups to run every $n$ minutes, and to set the number of backups to retain.
    • If you're locked out of jfa-go's web UI, you can use the jfa-go -restore <.bak file> command to manually restore a backup.
    • Wiki Page
    • (7f518f5)
  • Expiring/Time-limited Referrals:
    • By default, referral "invites" have a fixed expiry, at which point the user can get a new one by visiting the "My Account" page.
    • When enabling referrals for a user or profile, check the "Use expiry from profile/invite" to use the actual expiry time from the invite, and stop the user from getting a new referral after this time.
    • (a66c522)
  • Discord /inv: Adds a quick user invite command for admins. /inv user:<discord id> expiry:<minutes till expiration> user_label:<label to give user> profile:<source profile>. Thank you @VioletLeporid! (#299, #294)
  • Reverse proxy on "My Account": Not a big feature, but important as it meant the "My Account" page was unusable for many people. (5a2d3d2). Also fixed login tokens, so you shouldn't be logged out when refreshing. (543f23c)
  • Random userdata wipes: Now gone! Was caused by an issue with the daemon, any time jfa-go lost connection to Jellyfin, it assumed the error meant the user it checked didn't exist, and so wiped its data. Really sorry for this one. (c39a9e8)
  • Settings search: Added a searchbar to the settings tab. Only searches stuff in your config file, not in things like the user profiles page. (4924700)
    • Code is now shared with accounts search, which inherited some improvements.
  • Expiry improvements:
    • Added a "remove expiry" button on the accounts page (10c8d4a)
    • Allow "setting" an exact expiry rather than "extending" it. Select a user, click "Extend Expiry". Instead of using the months/days/etc. inputs, use the new "Set expiry" text input and type the exact day/time of expiry. (213b1e7)
  • Limit "My Account" password resets: In Settings > User page, you can enable/disable each way a user can identify their account when doing a Password Reset on the "My Account" page. Available options are "Username", "Email address" and "Contact Method username/ID". (1a68976)
  • HTTP/SOCKS5 Proxy: Configure in Settings > Advanced, route all jfa-go traffic through a HTTP or SOCKS5 proxy. (523902f)
  • Significant mobile improvements: The admin interfaces should all work significantly better on mobile now. (Lots of commits between 22nd-24th December)
  • Translations for the 0.5.0 features by many. Thank you!

Minor

  • Userpage layout: The userpage cards should now be laid out in the most compact form possible. Each permutation of ordering is tried by the page until it finds the shortest one. (d56d45a)
  • Fixed password resets through Jellyfin, in various ways. (290d02d, 83712a6)
  • Blank Login screen: Option to hide the admin page interface when at the login modal. Find it in Settings > General. (9956bbd)
  • Point lost users to "My Account": Enable Settings > User page > Show Link... to show a link to the "My Account" page on the admin login screen, so lost users can get where they need to be. (4f78b7c)
  • Jellyfin Authentication Retry: Configurable in Settings > Advanced, jfa-go will try to reconnect to Jellyfin 6 times, each 10 seconds apart, before crashing. Useful if Jellyfin starts up slow on boot. (f6fdd41)
  • Database debugging: Options in Settings > Advanced allow logging of all database reads/writes/wipes. Might be useful in future if any annoying bugs pop up. (742f5c0)
  • Password resets initiated on the Admin page should now also reset ombi passwords. The integration as a whole remains buggy, a new wiki page details a way to recover data if the database gets messed up by jfa-go. Apologies for this feature being a mess, I would appreciate help if anyone has experience. (cf94fdb)
  • Better SMTP support: The SMTP authentication type can now be set by the user, and the default is more sensible. Thank you @SquaredPotato! (#301)
  • Windows noTray: Just a windows build with no tray icon, good for using daemonization stuff like NSSM. (#53c9569)
  • A little cleanup of HTML/CSS and Typescript, and removal of some hand-written CSS classes.
  • Fixed appearance of invite expiration times longer than 1 year. (4f5d12f)
  • CAPTCHA now appears when resetting password through jfa-go. Whether this is actually necessary or not, I don't know. (278588c)
Changelog
  • ca87a3f Added translation using Weblate (Arabic)

  • a8d9c90 Added translation using Weblate (Arabic)

  • b0e0114 Added translation using Weblate (Czech)

  • 82411f1 Added translation using Weblate (Czech)

  • 04f354b Added translation using Weblate (Czech)

  • b1e38ba Added translation using Weblate (Czech)

  • 35a765a Added translation using Weblate (Czech)

  • 05df04b Added translation using Weblate (Hungarian)

  • 2ec3427 Added translation using Weblate (Hungarian)

  • 998b719 Added translation using Weblate (Hungarian)

  • 7bcc949 Added translation using Weblate (Italian)

  • 8edf712 Added translation using Weblate (Italian)

  • b75bd4d Crash on SSL cert/key error, describe issue in log

  • 04c94ba Log IPs

  • 0840931 Merge (optional) IP logging

  • 7db94dc Merge /inv command additions Merge branch 'main' of github.com:VioletLeporid/jfa-go

  • 3d0f756 Merge SMTP Auth Option from @SquaredPotato

  • 1be20d4 Merge activity log

  • 7f518f5 Merge backups

  • 70afc21 Merge branch 'hrfee:main' into main

  • 0037982 Merge branch 'main' into kimboslice99-main

  • e528f7c Merge latest changes

  • a288ba4 Merge remote-tracking branch 'origin/main' into activity-log

  • 4924700 Merge settings-search

  • 2a816b3 Translated using Weblate (Arabic)

  • bb9e94c Translated using Weblate (Arabic)

  • ddb9968 Translated using Weblate (Arabic)

  • 0dbe058 Translated using Weblate (Arabic)

  • 148c36c Translated using Weblate (Arabic)

  • f9a5e32 Translated using Weblate (Arabic)

  • 8f25e18 Translated using Weblate (Arabic)

  • 9ec54ec Translated using Weblate (Arabic)

  • 5d1917e Translated using Weblate (Arabic)

  • 448df6c Translated using Weblate (Arabic)

  • 41bd828 Translated using Weblate (Arabic)

  • a2af9ca Translated using Weblate (Chinese (Simplified))

  • 387fe08 Translated using Weblate (Chinese (Simplified))

  • 623934c Translated using Weblate (Chinese (Simplified))

  • 4073ebe Translated using Weblate (Chinese (Simplified))

  • ddc36ae Translated using Weblate (Chinese (Simplified))

  • e31d11e Translated using Weblate (Chinese (Traditional))

  • d7d7146 Translated using Weblate (Czech)

  • 7f60598 Translated using Weblate (Czech)

  • 9610b89 Translated using Weblate (Czech)

  • 943d523 Translated using Weblate (Czech)

  • 28d3219 Translated using Weblate (Czech)

  • 8f88b6a Translated using Weblate (Czech)

  • 4a2fc6d Translated using Weblate (Danish)

  • aa30f1c Translated using Weblate (Danish)

  • 1846e31 Translated using Weblate (Danish)

  • 8ae5dd9 Translated using Weblate (Dutch)

  • 2fd71ac Translated using Weblate (Dutch)

  • cf747c1 Translated using Weblate (Dutch)

  • 8d6ad7e Translated using Weblate (Dutch)

  • d6176d3 Translated using Weblate (French)

  • 638be18 Translated using Weblate (French)

  • 4aa095d Translated using Weblate (French)

  • edd3aeb Translated using Weblate (French)

  • 68e062f Translated using Weblate (French)

  • 3ff5e65 Translated using Weblate (German)

  • e2b975a Translated using Weblate (Hungarian)

  • 0728c8b Translated using Weblate (Hungarian)

  • b7bf1f8 Translated using Weblate (Hungarian)

  • 498f7bd Translated using Weblate (Hungarian)

  • ad3e6ad Translated using Weblate (Hungarian)

  • a4bb2de Translated using Weblate (Indonesian)

  • c006575 Translated using Weblate (Italian)

  • 71efae7 Translated using Weblate (Italian)

  • 3c45fcb Translated using Weblate (Italian)

  • 25b5ae3 Translated using Weblate (Italian)

  • 971007f Translated using Weblate (Italian)

  • cc226bf Translated using Weblate (Italian)

  • 51917c5 Translated using Weblate (Italian)

  • 1badc49 Translated using Weblate (Spanish)

  • 4bc5157 Translated using Weblate (Swedish)

  • 27f85f8 Update discord.go

  • b30d6c3 Update discord.go

  • 3538935 Update discord.go

  • 49dfac5 Update discord.go

  • b595d3e Update discord.go

  • 525c13f Update discord.go

  • 7295483 Update discord.go

  • dd93758 Update discord.go

  • 0366e51 Update discord.go

  • c43d5cf Update discord.go

  • edf6c13 Update discord.go

  • e2c24a2 accounts: add "not results found" screen

  • 10c8d4a accounts: add "remove expiry"

  • 0f72a85 accounts: allow extending expiry of more than one user

  • 213b1e7 accounts: allow setting exact expiry date

  • 31b7ede accounts: fix search button (again)

  • 9092b98 accounts: hide previous date example in extend expiry

  • 4fa0630 accounts: modularize search

  • cb5a8c1 accounts: position filter dropdown better for mobile

  • 69dcaf3 activity: Add initial data structure

  • 591b843 activity: add a "load all" button

  • 6633896 activity: add counter for total, loaded and shown

  • 3cad30a activity: add delete button

  • 44d7e17 activity: add limiting settings

  • 5a0677b activity: allow multiple types in route filter

  • 3739634 activity: fix "shown" counter when not in search

  • a0db685 activity: functional search (client-side)

  • b620c0d activity: implement most initial logging

  • 9d1c7bb activity: log account link/unlinks

  • 2c787b4 activity: log creations

  • 1032e4e activity: more presentable cards, fixes

  • a73dfdd activity: partially functional frontend code

  • 0238c67 activity: pseudo links work on click

  • de3c061 activity: pseudo links work on refresh

  • 47ce8a9 activity: refresh, load more buttons, ui adjustments

  • 3951116 activity: reload invites on link click

  • 4417207 activity: render all activities correctly

  • df1581d activity: route to show activity activity log

  • 2d83718 activity: sort, load more, compromises for client-side search

  • 2743245 activity: start stubbed out example card, beginning frontend code

  • 68a2a94 add translation from Weblate (Arabic)

  • 9809611 add translation from Weblate (Czech)

  • 918f3ad add translation from Weblate (Czech)

  • a4d9d83 add translation from Weblate (Italian)

  • d00f3fc admin: /activity pseudo-page now works

  • 5a2d3d2 admin: My Account button respects URL Base

  • 9956bbd admin: add setting to hide background on login

  • dba7d0b admin: improve searchboxes appearance

  • 4f78b7c admin: option link to my account page on login screen

  • ff73c72 backups: add -restore cli argument

  • 733ab37 backups: add backup daemon to run every n minutes, keep x most recent backups

  • 1bb83c8 backups: add filesize to list

  • b259dd7 backups: add wiki link

  • ca4fbc0 backups: change update button wording

  • bc2e9cf backups: move code to own files

  • eff313b backups: restore local backups in-app

  • dc2c2f1 backups: show uploaded backups on-page

  • 195813c backups: triggerable in ui, viewable, downloadable

  • ade0322 backups: upload and restore backup in-app

  • 53c9569 build: add notray windows build

  • c39a9e8 daemon: ensure correct error before wiping user data

  • 7813c8c discord: Use GenerateInviteCode in /inv

  • e52e21a discord: fix up /inv basic functionality

  • 7b2a6cd discord: merge /inv from @VioletLeporid

  • 10a32ad discord: re-add optional args

  • 62923d5 discord: register available profiles for /inv

  • 2fb2f3e discord: send error message when inv construction fails

  • 2f3d5e4 discord: update profile list when changes occur

  • 7223981 done: use sshkey from secret, not file

  • c0c91b4 drone: source buildrone key from drone in docker build

  • 85de1c9 feat: Add SMTP authentication types to settings

  • 010b95a fixup drone.yml for release

  • 46566fb fixup drone.yml once more for docker

  • ab05c07 form: modularize captcha somewhat

  • f34ba5d invites: fix sending invite to @username discord format

  • 202ee09 invites: improve inv dropdown layout

  • 2056033 invites: improve inv dropdown wrapping

  • 82032b9 invites: improve invite wrapping on mobile

  • 77f6b10 invites: move code gen to function

  • 4f5d12f invites: ui adjustments, fix duration display > 1y

  • 269836f ips: add advanced settings for ip logging

  • f823705 ips: log on activities, show on card

  • f6fdd41 jellyfin: retry initial connection (configurable)

  • 7c861e5 lang: fix the usual mistakes

  • 9c771e1 lang: fix typo in french

  • 742f5c0 log: add basic database write debug logging

  • 3143d32 log: include caller in debug storage logging

  • f460bfc logip: fix user logging

  • 9cd402a logs: fix file identifier

  • 2c8afec lowercase lang

  • cf94fdb ombi: fix password reset on default route

  • 4864c6c ombi: implement getOmbiImportedUser

  • 523902f proxy: add http/socks5 support, use for Jellyfin

  • 5702e80 proxy: use for updater & SMTP

  • 49d8c6f pwr: add captcha daemon

  • 83712a6 pwr: fix set password for jellyfin PWRs

  • 278588c pwr: functioning captcha/recaptcha

  • 290d02d pwr: include pwr-pin in build process, whoops

  • 47536f3 readme: update latest compatible version

  • a66c522 referrals: add "use expiry" option

  • 73cfa5b settings: "no results found", section matching

  • 0849807 settings: funtioning search functionality

  • 6909477 settings: hidden items in search explained

  • 635c2be settings: initial search function

  • 084f8aa settings: link to new PWR wiki article in note

  • 701d130 settings: non-match search result have transparency

  • 43e36ee setup: Include proxy, test JF with it

  • ac4fecd site: fix for new font

  • 72c6168 translation from Weblate (Arabic)

  • fec7a7a translation from Weblate (Arabic)

  • 8a6102b translation from Weblate (Arabic)

  • 4ddb7dc translation from Weblate (Arabic)

  • c62876f translation from Weblate (Chinese (Simplified))

  • 0ce5c99 translation from Weblate (Chinese (Simplified))

  • 4551ae3 translation from Weblate (Chinese (Simplified))

  • 720ff1f translation from Weblate (Chinese (Simplified))

  • 3d45f2b translation from Weblate (Chinese (Traditional))

  • aaa5217 translation from Weblate (Czech)

  • 18e82fd translation from Weblate (Czech)

  • 09158b5 translation from Weblate (Danish)

  • d0de114 translation from Weblate (Danish)

  • bd8eceb translation from Weblate (Dutch)

  • cf3efe7 translation from Weblate (Dutch)

  • 8cb53d1 translation from Weblate (Dutch)

  • 4c1d8ed translation from Weblate (Dutch)

  • fc8910f translation from Weblate (French)

  • 826deec translation from Weblate (French)

  • 07d7380 translation from Weblate (French)

  • 42264f0 translation from Weblate (French)

  • f374510 translation from Weblate (French)

  • 2430fc6 translation from Weblate (German)

  • bc8f6b7 translation from Weblate (German)

  • 8f2a28e translation from Weblate (German)

  • 80ebafa translation from Weblate (Hungarian)

  • 525eaab translation from Weblate (Hungarian)

  • a67119d translation from Weblate (Hungarian)

  • a734afa translation from Weblate (Indonesian)

  • 10cc130 translation from Weblate (Indonesian)

  • 044ce6f translation from Weblate (Indonesian)

  • a965f7f translation from Weblate (Italian)

  • 86b540c translation from Weblate (Italian)

  • 471497f translation from Weblate (Spanish)

  • 2be7bae trim base css of most redundant classes

  • aec0a53 ui: fix remaining few modal sizes on mobile

  • e8666d5 ui: general adjustments

  • 6e20576 ui: more invites page improvements/cleanup, fix tooltips on mobile

  • b50d66d ui: more modal fixes

  • ea109c7 ui: wrap accounts/activity headers

  • d1affe2 ui: wrap settings header

  • 1a68976 userpage: allow manual disable of pwr through username/email/contact

  • 8c2a35f userpage: fix messages reset buttons

  • 4fcb58a userpage: fix referral card when no message set

  • 543f23c userpage: make refresh token work w/ reverse proxy

  • ff1ea85 userpage: register routes on reverse proxy subfolder

  • d56d45a userpage: rework dynamic layout, finally

Don't miss a new jfa-go release

NewReleases is sending notifications on new releases.