- disable admin playing as someone else
- re-add player name to emails
- enable eager_loading in production (causes TRB issue)
- remove Reform#full_messages_for monkey patch
- fix js asset delivery
- create a manual pause feature
- clarify toggle end action for games
- improve email spam score (see below)
- make authorIds stable between browsers
- fix unsubscribe error
- separate user admin system tests edit/create from game system tests
- add boolean flag for game to enable/disable player shuffle
- show diffs using EtherPad diffs or diffy
- add admin boolean to user (cc'd on all emails)
- wrong person is being notified of their turn
- hide and scroll in read-only mode
- in turn notifications, give round X of Y message (and pause rounds)
- remove the ability to delete authorship colors
- fix etherpad not loading on page open
- remove first and final turns indefinite
- improve email notification when updating user
- resume should send email to current user that it's their turn
- include "round X of Y" in game play screen
- implement game pause after N rounds and sends email to admins
- fix user colors in Etherpad to be consistent between rounds
- make nice background in css
- try setting author per https://github.com/jhollinger/ruby-etherpad-lite
- handle game creation when pad cannot be created
- implement more edge case tests
- system test for pass and ending game
- test for game start and end (and ended?)
- test for new user added not upsetting rounds and finished
- why does shuffle players sometimes fail? (Expected: [0, 3, 1, 4, 2] Actual: [4, 2, 0, 3, 1])
- allow game to end early when all players pass
- save revisions when turn (first) finished
- Game ends: this round (and remove "in")
- fix invalid date on player view
- list players on player view in play order
- change the Etherpad initial text
- make sure first user added to game gets a turn notification email
- add button to emails and replace "magic link" with actual link
- convert test helper create_user to use User::Operation::Create
- install comments plugin for pads
- fix js not triggering on initial page load
- move User#remind and auto_finish to rake tasks for crontab
- create a cronjob system
- remove player view inline script, put padID in dataset
- display times in browser in user's timezone
- add token to game and use for pad ID
- create pad on game creation and delete on deletion
- make pad_name static (can change game name and not change pad name)
- implement integration system tests
- convert to databasecleaner transactions
- send email bcc to [email protected]
- send game finished notification
- implement indefinite last turn
- implement integration smoke tests
- deleting user reassigns current_player_id if necessary
- implement game finished notification
- implement indefinite first turn
- implement cronjob for turn reminder notification
- implement cronjob for turn forfeit notification
- implement turn finished notification
- update game/turn end datetimes when rules are updated
- allow entry to be added
- show game with entries
- add admin namespace to routes: game creation, editing, deleting, user creation, editing, deleting
- add unauthorized page
- edit users assigned to game (delete/update)
- get initial views working (form errors not working)
- style forms
- style views
- enforce unique users for game
- add voting and change blocks (see design below) FIRST DO THIS ON MN USING POLLS
- add collaborative editor like EtherPad
- add :play_order field on :users table for random option (with no double-turns)
- remove game_days and add num_rounds for ending the game
EtherPad-Lite implementation:
- allow branching
- allow change requests (aka pull requests)
- allow voting on change requests
- create node.js server for EtherPad-Lite
- install ruby-etherpad-lite
- install etherpad-lite-jquery-plugin
- show current game without ability to edit (for players whose turn it is not)
- allow entry with EtherPad-Lite embedded with "End Turn" button (for players whose turn it is)
- "End Turn" action saves the entire text as the entry and sends notification
DONE Server implementation (production):
- spin up new server for Etherpad and Lorem Ipsum
- install ruby-etherpad-lite
- install etherpad-lite-jquery-plugin
- create a simple deploy system
- implement cron job for turn reminders and turn auto finish
EtherPad plugins worth looking at: comments (https://www.npmjs.com/package/ep_comments_page) voting wip (https://github.com/citizenos/ep_inline_voting) who did what blame (https://www.npmjs.com/package/ep_who_did_what) what have I missed (https://www.npmjs.com/package/ep_what_have_i_missed) timeslider diff (https://www.npmjs.com/package/ep_timesliderdiff) headings (https://www.npmjs.com/package/ep_headings2)
Voting and Change Blocks (feature request from David):
- show all changes made since player's last turn
- navigate to prev/next change
- provide up/down voting buttons (emojis that can be clicked with array of author ids)
- create this outside of Etherpad
- External Domains in your DMARC are not giving permission for your reports to be sent to them.
- Your DMARC authentication is not setup using best practices. (Your "from" domain does not match your DKIM "from" domain or does not have DKIM signing. Your From domain is: loremipsumgame.com and Your DKIM domain(s) is blank.)
- Your DKIM key has errors. (Generate a Public DKIM Key for your domain. This needs to be done with the applications you are using to send emails and/or your mail server. Add the Public Key to your Domain's DKIM DNS records. Enable DKIM signing from your Email Service Provider and mail server / application if applicable. NOTE: Gmail requires a DKIM key of 1024 bits or longer.)
- The subject line formatting is not clear or obfuscated. The subject line is not composed of legitimate and accepted characters.
- The HTML font is bad readable or have not normal size. The HTML body is not composed of properly closed and nested tags. The HTML body is not composed of standard and supported HTML elements.
- allow http to go through with no problem
- Your email is missing the List-Unsubscribe header. (There is no List-Unsubscribe header. Add the List-Unsubscribe header with the appropriate mailto and/or link for receivers to unsubscribe with.)
- how to default the num_rounds and turn_hours attributes during create?
- when can I use def method(ctx, **) and def method(cts, :some_param, **)?
- is the view file for Turn::Cell::Story in the right directory?
- why I can't use model: kwarg in User::Operation::Index?
- why do I have to monkey patch the Reform@full_messages_for method?
- why can't I eager load in production?
- how to create transaction wrap?