Releases: joshzcold/Friendly-Feud
Friendly Feud 2.0!
New year, new large change!
Special Thanks to @karlromets for providing the bulk of new features for this release! He truly is a talented developer and I am very thankful for his time, help and knowledge.
This is the 2.0 release and with it are some big and exciting changes:
Changing the Name
- This project's name is now "Friendly Feud" to give it a better chance to avoid possible legal liability for the future of this project.
- The main website is still at https://famf.app
Changing the backend to golang
The backend of this project is now written in golang. If you want to fork this project while it was only JavaScript you can fork off the 1.5.4 release.
Switching to golang gives a number of benefits:
-
Websocket handling is now in goroutines allowing this app to scale well.
-
Strongly typed language helps the overall organization of the data for Friendly Feud. While converting to golang I was able to fix my past structural mistakes in JavaScript when writing in golang.
-
Using golang interfaces I was able to create a very easy way to add more storage connections that can be easily plugged in.
New Features
- @joshzcold Support for choosing storage backend for the game. Picking between sqlite or memory storage using the
GAME_STORE
environment variable
famf.app will be deployed with the sqlite storage backend, which will allow changes to Friendly Feud without anyone losing progress on their current active game!
-
@joshzcold e2e tests using playwright. This will make changes to the website much easier and stable as we make changes.
-
@karlromets #101 Implement player board hiding.
This will hide the game board or final game board from the player if checked. Allows you to hide the game screen from a remote player without kicking from the game.
-
@karlromets #100 Implement buzzer popup. This will show on the game screen which user buzzed first and play a sound when the buzz comes in. This means the admin no longer needs to scroll down to the buzzer list to determine who buzzed first.
-
@karlromets #99 Implement a join url on the title page. There is a new environment variable for nextjs
NEXT_PUBLIC_TITLE_URL
that will show the game's joinable url for the players.
-
@karlromets #98 Support for translation in error messages. Error messages now have error codes that then get translated if they are available in the translation files.
What's Changed
- Fix cached logo by @karlromets in #95
- Fix final round timer state by @karlromets in #94
- Fix error translation by @karlromets in #98
- Fix various console errors by @karlromets in #96
- bug(csv) fix for csv "No Header" uncheck uses header by @joshzcold in #103
- Famf 2.0 large change. by @joshzcold in #108
- Implement environment variables by @karlromets in #99
- feat(dev): support for windows wsl in development by @joshzcold in #111
- Implement player board hiding by @karlromets in #101
- fix(session): fix for getting back in via session token by @joshzcold in #113
- chore(e2e): create test for hiding player's screens by @joshzcold in #116
- fix(session): player's team is kept when refreshing player page by @joshzcold in #119
- Implement buzzer popup by @karlromets in #100
- Add Estonian games by @karlromets in #120
- Fix theme state by @karlromets in #107
New Contributors
- @karlromets made their first contribution in #95
Full Changelog: 1.5.5...2.0.0
Show the game window on a seperate computer
Now a joining player can "Open Game Window" to become a "spectator" which is just the /game page that the admin usually can open.
This allows showing the game on a seperate browser/machine.
The Spectator window can "quit" to get back to the index page.
1.5.4: Mistake button and removal of state data
Features
- new mistake button that doesn't count towards the team count. Just shows an overlay to indicate a mistake.
- new mistake overlay triggers on team mistake.
- mistake sound is played on buzzer screen as well as game screen.
- new button to reset team mistakes if needed
Fixes
- json games have been removed of "state" data and cleaned up.
Load Game via .csv
Features:
- You now can load a game via file in
.csv
format.
Expects format: Question, Answer, Points (number), Answer, Points (number) ...
There are examples in csv/
folder in the repo. Limit is 30
rows for now.
- You can interactively pick how many rounds and final rounds come from your data
- Added a kubernetes
helm/
chart
Fixes:
- File dialog clear the value so repeated selections of the same file works.
- https://famf.app is hosted on a stable server instead of a free tier of render.com. This should fix random resets of game and the site is more performant.
- New site https://dev.famf.app is available for testing in progress features
1.5.1 Custom logos, Themes for games 🎨
1.4.1 New admin settings + fast money more rounds
1.4.0 More UI enhancements, improvementts
Lots of works on making each page responsive on both mobile and desktop:
- admin console in a desktop size now gets sized down to about half for ease of use:
- final round on mobile looks nice now
(desktop)
- on the buzzer screen if the width is small enough, multiple text instances get overflowed ellipses properly
refactored final.js
for simplicity:
- I no longer create a copy of data for the 2nd final round and instead just create the 2nd final round in data when you load a game. This allowed me to cut out lots of lines from
final.js
Create meta description content in the head for search engines
I decided to do this instead of putting a bunch of description content on the front page. I like the clean look it currently has and with the description head tag new users could still find the game by searching for free family feud game
Title logo now does its best job to resize the text and make everything fit within the svg view port instead of cutting it off.
(it can get pretty ugly, but I prefer ugly to hidden 😀)
What's Changed
- Add 2 more christmas themed games by @JBaczuk in #45
- fix christmas 2 questions by @JBaczuk in #47
- dont hide final round hidden total from 2nd round by @joshzcold in #51
- Lots of UI Enhancements accross the site. Focusing on mobile-desktop full compatibility by @joshzcold in #53
New Contributors
Full Changelog: 1.3.3...1.4.0
Websocket stability and easier translation
- client no longer connects to server unless joining or hosting a game. previously it would connect on page load
- websocket gets re-connected on host or join if the websocket state is not OPEN
- better i18n key names to allow for easier translating.
"helpText": "..."
->"this is what the help text should be": "..."
. In english this displays properly if the key is missing in translation.json. When translating a language the translator no longer needs to search and find out whathelpText
means. - login page is a seperate component to prepare for more content coming to the landing page (like instructions and SEO content)
1.3.2 Mobile UI Improvements Everywhere
UI Improvements
After this release you should be able to host a full family feud game just on mobile on https://famf.app
Although you would be missing some sound effects from the game window you won't have to break out the laptop to share your screen to play.
Admin Console
Everything is sized up for mobile. Controls are moved around for better ux
Buzzer Screen
I shoved the full game window components onto the mobile buzzer screen
Fast money also appears on the buzzer screen for all players.
Game window
Published Website
Cold-Family-Feud is now available at https://famf.app !
It is currently using the free tier of heroku so if you are accessing it then you might have to wait a second for the app to become un-suspended before it loads up.
Changes:
- websockets run through secure
wss
and the local dev envrionment has some self signed certs to make them functional - new default games
season20
(general questions from the show) andtech
(custom game featuring tech questions) - new script
scripts/point_generator
which can generate realistic point values givin a question amount along with min/max point values. requires ruby
This is useful when creating your own questions and you don't want to come up with point values off the top of your head.
- game creator now allows skipping creating the fast money round.
- created license (MIT)
- websockets get served at a path instead of a dedicated port. This is to allow the websockets to function in production
Getting the website published was a painful process, but now that its finished im excited for the potential of non-tech individuals being able to use the project. For instance my mother in law already want to try and use it for her classroom. I think thats pretty cool 😀.
I currently don't know the limits of the free tier on heroku when used against this project. Hopefully its enough for the foreseeable future as people stumble upon this project and try a quick game.
For the next releases ill be focusing on play-ability improvements using mobile. Off the bat I would like if you didn't have to screen share the game window to be able to play the game.