Hourly challenge
-Guess the word in six tries.
-Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end.
-diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index eed10fa..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 560a8c6..1bd59e4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ node_modules/ playwright-report/ test-results/ .hermes/ +.DS_Store +.playwright-mcp/ diff --git a/.playwright-mcp/console-2026-05-15T22-43-25-520Z.log b/.playwright-mcp/console-2026-05-15T22-43-25-520Z.log deleted file mode 100644 index 2104a10..0000000 --- a/.playwright-mcp/console-2026-05-15T22-43-25-520Z.log +++ /dev/null @@ -1,2 +0,0 @@ -[ 242ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 255ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ https://wordle.zackvps.fun/favicon.ico:0 diff --git a/.playwright-mcp/console-2026-05-15T22-43-58-246Z.log b/.playwright-mcp/console-2026-05-15T22-43-58-246Z.log deleted file mode 100644 index 24d0625..0000000 --- a/.playwright-mcp/console-2026-05-15T22-43-58-246Z.log +++ /dev/null @@ -1 +0,0 @@ -[ 88ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 diff --git a/.playwright-mcp/console-2026-05-15T22-44-27-060Z.log b/.playwright-mcp/console-2026-05-15T22-44-27-060Z.log deleted file mode 100644 index 974675f..0000000 --- a/.playwright-mcp/console-2026-05-15T22-44-27-060Z.log +++ /dev/null @@ -1 +0,0 @@ -[ 83ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 diff --git a/.playwright-mcp/console-2026-05-15T22-45-12-815Z.log b/.playwright-mcp/console-2026-05-15T22-45-12-815Z.log deleted file mode 100644 index 78154dc..0000000 --- a/.playwright-mcp/console-2026-05-15T22-45-12-815Z.log +++ /dev/null @@ -1,7 +0,0 @@ -[ 63ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 57103ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 128589ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 159498ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 181084ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 183833ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ https://wordle.zackvps.fun/favicon.ico:0 -[ 223939ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 diff --git a/.playwright-mcp/console-2026-05-15T23-24-22-002Z.log b/.playwright-mcp/console-2026-05-15T23-24-22-002Z.log deleted file mode 100644 index 7e96cc2..0000000 --- a/.playwright-mcp/console-2026-05-15T23-24-22-002Z.log +++ /dev/null @@ -1,5 +0,0 @@ -[ 101ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 24765ms] [VERBOSE] [DOM] Multiple forms should be contained in their own form elements; break up complex forms into ones that represent a single action: (More info: https://goo.gl/9p2vKq) %o @ https://wordle.zackvps.fun/:0 -[ 27174ms] [ERROR] Failed to load resource: the server responded with a status of 400 () @ https://bxrrirbaucroteyumeul.supabase.co/auth/v1/token?grant_type=password:0 -[ 28036ms] [ERROR] Failed to load resource: the server responded with a status of 400 () @ https://bxrrirbaucroteyumeul.supabase.co/auth/v1/token?grant_type=password:0 -[ 122326ms] [ERROR] Failed to load resource: the server responded with a status of 400 () @ https://bxrrirbaucroteyumeul.supabase.co/auth/v1/token?grant_type=password:0 diff --git a/.playwright-mcp/page-2026-05-15T22-43-25-788Z.yml b/.playwright-mcp/page-2026-05-15T22-43-25-788Z.yml deleted file mode 100644 index 4b05125..0000000 --- a/.playwright-mcp/page-2026-05-15T22-43-25-788Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Toggle dark mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Loading word lists… - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T22-43-58-348Z.yml b/.playwright-mcp/page-2026-05-15T22-43-58-348Z.yml deleted file mode 100644 index 4b05125..0000000 --- a/.playwright-mcp/page-2026-05-15T22-43-58-348Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Toggle dark mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Loading word lists… - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T22-44-27-158Z.yml b/.playwright-mcp/page-2026-05-15T22-44-27-158Z.yml deleted file mode 100644 index 4b05125..0000000 --- a/.playwright-mcp/page-2026-05-15T22-44-27-158Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Toggle dark mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Loading word lists… - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T22-44-33-402Z.yml b/.playwright-mcp/page-2026-05-15T22-44-33-402Z.yml deleted file mode 100644 index b9c3fc8..0000000 --- a/.playwright-mcp/page-2026-05-15T22-44-33-402Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Switch to light mode" [active] [ref=e87] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Hourly word resumed - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T22-45-12-891Z.yml b/.playwright-mcp/page-2026-05-15T22-45-12-891Z.yml deleted file mode 100644 index d99efcd..0000000 --- a/.playwright-mcp/page-2026-05-15T22-45-12-891Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Switch to light mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Loading word lists… - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T22-49-05-099Z.yml b/.playwright-mcp/page-2026-05-15T22-49-05-099Z.yml deleted file mode 100644 index f6a2ce9..0000000 --- a/.playwright-mcp/page-2026-05-15T22-49-05-099Z.yml +++ /dev/null @@ -1,86 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - strong [ref=e7]: Fancy Wordle - - navigation "Quick actions" [ref=e8]: - - button "Switch to light mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Hourly word ready - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-15T23-24-22-128Z.yml b/.playwright-mcp/page-2026-05-15T23-24-22-128Z.yml deleted file mode 100644 index d99efcd..0000000 --- a/.playwright-mcp/page-2026-05-15T23-24-22-128Z.yml +++ /dev/null @@ -1,88 +0,0 @@ -- generic [ref=e2]: - - banner "Game controls" [ref=e3]: - - link "Restart Fancy Wordle" [ref=e4] [cursor=pointer]: - - /url: "#" - - generic [ref=e5]: W - - generic [ref=e6]: - - strong [ref=e7]: Fancy Wordle - - text: One word every hour - - navigation "Quick actions" [ref=e8]: - - button "Switch to light mode" [ref=e9] [cursor=pointer]: - - generic [ref=e10]: ◐ - - button "Open stats and share" [ref=e11] [cursor=pointer]: - - generic [ref=e12]: ↗ - - button "Open hourly leaderboard" [ref=e13] [cursor=pointer]: - - generic [ref=e14]: ♛ - - button "Sign in to sync stats" [ref=e15] [cursor=pointer]: Sign in - - link "Open the original love note" [ref=e16] [cursor=pointer]: - - /url: https://www.youtube.com/watch?v=UkOKCWDJ4iA - - generic [ref=e17]: ♡ - - main [ref=e18]: - - region "Guess the word in six tries." [ref=e19]: - - paragraph [ref=e20]: Hourly challenge - - heading "Guess the word in six tries." [level=1] [ref=e21] - - paragraph [ref=e22]: Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end. - - region "Wordle game board" [ref=e23]: - - generic [ref=e24]: - - generic [ref=e25]: Loading word lists… - - generic [ref=e26]: 0 / 6 - - generic "Guess grid" [ref=e27]: - - img "Empty letter" [ref=e28] - - img "Empty letter" [ref=e29] - - img "Empty letter" [ref=e30] - - img "Empty letter" [ref=e31] - - img "Empty letter" [ref=e32] - - img "Empty letter" [ref=e33] - - img "Empty letter" [ref=e34] - - img "Empty letter" [ref=e35] - - img "Empty letter" [ref=e36] - - img "Empty letter" [ref=e37] - - img "Empty letter" [ref=e38] - - img "Empty letter" [ref=e39] - - img "Empty letter" [ref=e40] - - img "Empty letter" [ref=e41] - - img "Empty letter" [ref=e42] - - img "Empty letter" [ref=e43] - - img "Empty letter" [ref=e44] - - img "Empty letter" [ref=e45] - - img "Empty letter" [ref=e46] - - img "Empty letter" [ref=e47] - - img "Empty letter" [ref=e48] - - img "Empty letter" [ref=e49] - - img "Empty letter" [ref=e50] - - img "Empty letter" [ref=e51] - - img "Empty letter" [ref=e52] - - img "Empty letter" [ref=e53] - - img "Empty letter" [ref=e54] - - img "Empty letter" [ref=e55] - - img "Empty letter" [ref=e56] - - img "Empty letter" [ref=e57] - - generic "Keyboard" [ref=e58]: - - button "Q" [ref=e59] [cursor=pointer] - - button "W" [ref=e60] [cursor=pointer] - - button "E" [ref=e61] [cursor=pointer] - - button "R" [ref=e62] [cursor=pointer] - - button "T" [ref=e63] [cursor=pointer] - - button "Y" [ref=e64] [cursor=pointer] - - button "U" [ref=e65] [cursor=pointer] - - button "I" [ref=e66] [cursor=pointer] - - button "O" [ref=e67] [cursor=pointer] - - button "P" [ref=e68] [cursor=pointer] - - button "A" [ref=e69] [cursor=pointer] - - button "S" [ref=e70] [cursor=pointer] - - button "D" [ref=e71] [cursor=pointer] - - button "F" [ref=e72] [cursor=pointer] - - button "G" [ref=e73] [cursor=pointer] - - button "H" [ref=e74] [cursor=pointer] - - button "J" [ref=e75] [cursor=pointer] - - button "K" [ref=e76] [cursor=pointer] - - button "L" [ref=e77] [cursor=pointer] - - button "Enter" [ref=e78] [cursor=pointer] - - button "Z" [ref=e79] [cursor=pointer] - - button "X" [ref=e80] [cursor=pointer] - - button "C" [ref=e81] [cursor=pointer] - - button "V" [ref=e82] [cursor=pointer] - - button "B" [ref=e83] [cursor=pointer] - - button "N" [ref=e84] [cursor=pointer] - - button "M" [ref=e85] [cursor=pointer] - - button "Delete letter" [ref=e86] [cursor=pointer]: ⌫ \ No newline at end of file diff --git a/CSS/styles.css.bak b/CSS/styles.css.bak deleted file mode 100644 index 55ba088..0000000 --- a/CSS/styles.css.bak +++ /dev/null @@ -1,314 +0,0 @@ - -*, *::after, *::before{ - box-sizing: border-box; - -} - -body{ - background-color: hsl(0, 67%, 96%); - display: flex; - text-align: center; - flex-direction: column; - min-height: 100vh; - margin: 0; - padding: 1em; - font-size: clamp(.5rem, 2.5vmin, 1.5rem); -} - -.keyboard { - display: grid; - grid-template-columns: repeat(20, minmax(auto, 1.50em)); - grid-auto-rows: 4em; - gap: .25em; - justify-content: center; -} - -.key{ - font-size: inherit; - grid-column: span 2; - border: none; - padding: 0; - display: flex; - justify-content: center; - align-items: center; - background-color: hsl( - var(--hue, 200), - var(--saturation, 1%), - calc(var(--lightness-offset, 0%) + var(--lightness, 51%)) - ); - color: rgb(255, 255, 255); - fill: white; - text-transform: uppercase; - border-radius: .25em; - cursor: pointer; - user-select: none; -} -.key.large{ - grid-column: span 3; -} -.key > svg { - width: 1.70em; - height: 1.70em; -} -.key:hover, .key:focus{ - --lightness-offset: 10%; -} - -.key.wrong { - --lightness: 23%; -} -.key.wrong-position{ - --hue: 49; - --saturation: 51%; - --lightness: 47%; -} - -.key.correct{ - --hue: 115; - --saturation: 29%; - --lightness: 43%; -} - -.guess-grid{ - display: grid; - justify-content: center; - align-content: center; - grid-template-columns: repeat(5, 4em); - grid-template-rows: repeat(6, 4em); - gap: .25em; - margin-bottom: 1em; -} - -.tile{ - font-size: 2em; - color: rgb(158, 155, 155); - border: .05em solid hsl(240, 3%, 14%); - text-transform: uppercase; - font-weight: bold; - display: flex; - justify-content: center; - align-items: center; - user-select: none; - transition: transform 250ms linear; - transition: transform 250ms linear; -} - -.tile[data-state="active"] { - border-color: hsl(240, 1%, 18%); - -} - -.tile[data-state="wrong"] { - border: none; - background-color: hsl(240, 12%, 24%); - color: white; -} - -.tile[data-state="wrong-position"] { - border: none; - background-color: hsl(49, 51%, 47%); - color: white; -} - -.tile[data-state="correct"] { - border: none; - background-color: hsl(115, 31%, 48%); - color: white; -} -.tile.shake{ - animation:shake 250ms ease-in-out; -} - -.tile.dance { - animation: dance 500ms ease-in-out; -} - -.tile.flip { - transform: rotateX(90deg); -} - -@keyframes shake { - 10% { - transform: translateX(-5%); - } - 30% { - transform: translateX(5%); - } - 50% { - transform: translateX(-7.5%); - } - 70% { - transform: translateX(7.5%); - } - 90% { - transform: translateX(-5%); - } - 100% { - transform: translateX(0); - } -} -@keyframes dance { - 20% { - transform: translateY(-50%); - } - 40% { - transform: translateY(5%); - } - 60% { - transform: translateY(-25%); - } - 80% { - transform: translateY(2.5%); - } - 90% { - transform: translateY(-5%); - } - 100% { - transform: translateY(0); - } -} - -.alert-container{ - position: fixed; - top: 17vh; - left: 50vw; - transform: translateX(-50%); - z-index: 1; - display: flex; - flex-direction: column; - align-items: center; -} -.alert{ - pointer-events: none; - background-color: hsl(204, 7%, 85%); - padding: .55em; - border-radius: .25em; - opacity: 1; - transition: opacity 500ms ease-in-out; - margin-bottom: .5em; -} - -.alert:last-child{ - margin-bottom: 0; -} -.alert.hide{ - opacity: 0; -} - -.img-banner{ - width: auto ; - max-width: 50% ; - height: auto ; -} - - -.theme-change{ - position: absolute; - top: 2.5rem; - display: flex; - color: rgb(202, 181, 181); - font-size: 1.2rem; - cursor: pointer; -} - -.theme-change:hover{ - color: rgb(150, 141, 141) -} - -body.dark-theme{ - background-color: hsl(0, 0%, 8%); - font:white; - display: flex; - text-align: center; - flex-direction: column; - min-height: 100vh; - margin: 0; - padding: 1em; - font-size: clamp(.5rem, 2.5vmin, 1.5rem); -} - -.share-stats{ - position: absolute; - top: 4.5rem; - display: flex; - color: rgb(202, 181, 181); - font-size: 1.2rem; - cursor: pointer; -} -.share-stats:hover{ - color: rgb(150, 141, 141) -} -.setting-page{ - position: absolute; - top: 6.5rem; - display: flex; - color: rgb(202, 181, 181); - font-size: 1.2rem; - cursor: pointer; -} - -.setting-page:hover{ - color: rgb(150, 141, 141) -} -* Definition Alert Styles */ -.definition-alert { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - color: white; - padding: 20px; - border-radius: 12px; - max-width: 400px; - margin: 0 auto 10px; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); - border: 1px solid rgba(255, 255, 255, 0.2); - backdrop-filter: blur(10px); - cursor: pointer; - transition: all 0.3s ease; - text-align: left; - line-height: 1.6; - font-size: 14px; -} - -.definition-alert:hover { - transform: translateY(-2px); - box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4); -} - -.win-definition { - background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); - border-color: rgba(79, 172, 254, 0.5); -} - -.lose-definition { - background: linear-gradient(135deg, #fa709a 0%, #fee140 100%); - border-color: rgba(250, 112, 154, 0.5); -} - -.definition-alert strong { - font-weight: 700; - font-size: 16px; - display: block; - margin-bottom: 8px; -} - -.definition-alert::before { - content: "💡 Click to dismiss"; - position: absolute; - top: 5px; - right: 10px; - font-size: 10px; - opacity: 0.7; -} - -/* Dark theme adjustments */ -.dark-theme .definition-alert { - border-color: rgba(255, 255, 255, 0.1); -} - -/* Mobile responsiveness */ -@media (max-width: 380px) { - .definition-alert { - max-width: 90%; - font-size: 13px; - padding: 15px; - } -} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5a4b3cb..d63e8ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,6 @@ FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html COPY CSS /usr/share/nginx/html/CSS -COPY img /usr/share/nginx/html/img COPY Celebration.mp3 dictionary.json script.js supabase-config.js targetWords.json word-data.js /usr/share/nginx/html/ EXPOSE 80 diff --git a/IMPROVEMENTS.md b/IMPROVEMENTS.md index 5ac2b2f..13c3c90 100644 --- a/IMPROVEMENTS.md +++ b/IMPROVEMENTS.md @@ -8,10 +8,14 @@ Implemented: - Preserved dark mode, keyboard input, word-list fetches, dictionary validation, win sound, confetti, definition lookup, and the original love-link shortcut. - Added a working stats/share dialog using localStorage. - Improved accessibility with semantic buttons, labels, live alerts, visible focus states, and 44px touch targets. +- One shared word per UTC hour, enforced by Supabase with a browser-only fallback. +- Email/password accounts with synced stats and an hourly, daily, and all-time leaderboard. +- Animated intro with a skip button that plays once per tab. +- Reduced-motion preference for flip, dance, and intro animations. +- Definition lookup with a timeout and a second provider. +- Up to 3 saved starter words per account that fill the current row with one tap. Good next features: - Hard mode that forces revealed hints into later guesses. -- Daily challenge mode alongside the current unlimited mode. -- Reduced-motion preference for flip, dance, and confetti animations. - Offline definition fallback for the target word list. - Importable custom word packs for classroom or party play. diff --git a/fancy-wordle-modern.html b/fancy-wordle-modern.html deleted file mode 100644 index fa3b2bb..0000000 --- a/fancy-wordle-modern.html +++ /dev/null @@ -1,160 +0,0 @@ - - -
- - - -Hourly challenge
-Play one five-letter word per hour. Valid words reveal with smooth flips, warm feedback, confetti, sound, and a definition at the end.
-