typefaster-cli 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/PKG-INFO +1 -1
  2. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/__init__.py +1 -1
  3. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/online_race.py +4 -7
  4. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/pyproject.toml +1 -1
  5. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.dockerignore +0 -0
  6. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.env.example +0 -0
  7. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  8. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  9. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  10. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  11. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/dependabot.yml +0 -0
  12. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/workflows/ci.yml +0 -0
  13. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/workflows/codeql.yml +0 -0
  14. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.github/workflows/release.yml +0 -0
  15. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/.gitignore +0 -0
  16. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/CONTRIBUTING.md +0 -0
  17. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/LICENSE +0 -0
  18. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/Makefile +0 -0
  19. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/README.md +0 -0
  20. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/SECURITY.md +0 -0
  21. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/Dockerfile +0 -0
  22. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/__main__.py +0 -0
  23. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/assets/__init__.py +0 -0
  24. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/assets/quotes.json +0 -0
  25. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/cli.py +0 -0
  26. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/__init__.py +0 -0
  27. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/anti_cheat.py +0 -0
  28. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/calculators.py +0 -0
  29. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/errors.py +0 -0
  30. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/ghost.py +0 -0
  31. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/models.py +0 -0
  32. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/domain/typing_engine.py +0 -0
  33. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/__init__.py +0 -0
  34. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/clock.py +0 -0
  35. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/config.py +0 -0
  36. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/db.py +0 -0
  37. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/migrations.py +0 -0
  38. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/paths.py +0 -0
  39. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/quote_loader.py +0 -0
  40. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/replay_store.py +0 -0
  41. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/repository.py +0 -0
  42. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/infra/sqlite_repository.py +0 -0
  43. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/net/__init__.py +0 -0
  44. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/net/api.py +0 -0
  45. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/net/commands.py +0 -0
  46. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/net/token_store.py +0 -0
  47. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/__init__.py +0 -0
  48. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/container.py +0 -0
  49. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/daily_service.py +0 -0
  50. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/ghost_service.py +0 -0
  51. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/profile_service.py +0 -0
  52. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/race_service.py +0 -0
  53. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/services/stats_service.py +0 -0
  54. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/__init__.py +0 -0
  55. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/app.py +0 -0
  56. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/online_app.py +0 -0
  57. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/__init__.py +0 -0
  58. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/_base.py +0 -0
  59. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/daily.py +0 -0
  60. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/help.py +0 -0
  61. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/history.py +0 -0
  62. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/leaderboard.py +0 -0
  63. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/main_menu.py +0 -0
  64. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/practice.py +0 -0
  65. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/profile.py +0 -0
  66. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/race.py +0 -0
  67. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/results.py +0 -0
  68. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/settings.py +0 -0
  69. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/screens/stats.py +0 -0
  70. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/theme.py +0 -0
  71. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/widgets/__init__.py +0 -0
  72. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/widgets/bigtext.py +0 -0
  73. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/widgets/live_stats.py +0 -0
  74. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/widgets/progress_bars.py +0 -0
  75. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/client/typefaster/ui/widgets/typing_field.py +0 -0
  76. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docker-compose.yml +0 -0
  77. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/RELEASING.md +0 -0
  78. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/api-spec.md +0 -0
  79. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/architecture.md +0 -0
  80. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/deploy-fly.md +0 -0
  81. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/deployment.md +0 -0
  82. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/online-setup.md +0 -0
  83. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/redis-schema.md +0 -0
  84. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/roadmap.md +0 -0
  85. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/sqlite-schema.md +0 -0
  86. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/ui-design.md +0 -0
  87. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/docs/websocket-protocol.md +0 -0
  88. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/fly.toml +0 -0
  89. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/infra/README.md +0 -0
  90. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/infra/nginx/nginx.conf +0 -0
  91. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/infra/redis/redis.conf +0 -0
  92. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/packaging/homebrew/typefaster.rb +0 -0
  93. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/scripts/seed_quotes.py +0 -0
  94. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/Dockerfile +0 -0
  95. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/__init__.py +0 -0
  96. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/config.py +0 -0
  97. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/deps.py +0 -0
  98. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/logging_config.py +0 -0
  99. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/main.py +0 -0
  100. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/quotes.py +0 -0
  101. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/redis_keys.py +0 -0
  102. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/repositories.py +0 -0
  103. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/__init__.py +0 -0
  104. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/auth.py +0 -0
  105. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/health.py +0 -0
  106. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/leaderboards.py +0 -0
  107. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/lobbies.py +0 -0
  108. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/routers/oauth.py +0 -0
  109. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/security.py +0 -0
  110. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/ws/__init__.py +0 -0
  111. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/app/ws/manager.py +0 -0
  112. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/pyproject.toml +0 -0
  113. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/__init__.py +0 -0
  114. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/conftest.py +0 -0
  115. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_auth.py +0 -0
  116. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_health_leaderboards.py +0 -0
  117. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_lobbies.py +0 -0
  118. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_oauth.py +0 -0
  119. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_scoring_anticheat.py +0 -0
  120. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/server/tests/test_ws_race.py +0 -0
  121. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/pyproject.toml +0 -0
  122. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/typefaster_shared/__init__.py +0 -0
  123. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/typefaster_shared/anti_cheat.py +0 -0
  124. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/typefaster_shared/dto.py +0 -0
  125. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/typefaster_shared/events.py +0 -0
  126. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/shared/typefaster_shared/scoring.py +0 -0
  127. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/conftest.py +0 -0
  128. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/fixtures/.gitkeep +0 -0
  129. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_container_and_cli.py +0 -0
  130. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_migrations.py +0 -0
  131. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_profile_stats.py +0 -0
  132. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_race_service.py +0 -0
  133. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_race_timing.py +0 -0
  134. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_sqlite_repository.py +0 -0
  135. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/integration/test_ui_smoke.py +0 -0
  136. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_anti_cheat.py +0 -0
  137. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_calculators.py +0 -0
  138. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_config.py +0 -0
  139. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_ghost.py +0 -0
  140. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_net.py +0 -0
  141. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_quote_loader.py +0 -0
  142. {typefaster_cli-0.1.2 → typefaster_cli-0.1.3}/tests/unit/test_typing_engine.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: typefaster-cli
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: A terminal-first typing game inspired by MonkeyType and TypeRacer.
5
5
  Project-URL: Homepage, https://github.com/Anoshor/typefaster-cli
6
6
  Project-URL: Repository, https://github.com/Anoshor/typefaster-cli
@@ -1,3 +1,3 @@
1
1
  """TYPEFASTER-CLI — a terminal-first typing game."""
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.3"
@@ -307,11 +307,8 @@ class OnlineRaceScreen(Screen[None]):
307
307
 
308
308
  # ── exit ───────────────────────────────────────────────────────────
309
309
  def action_leave(self) -> None:
310
+ # This screen IS the whole online app, so leaving exits cleanly back to
311
+ # the shell (popping the only screen would leave a blank screen). The
312
+ # server removes us from the lobby when the WebSocket closes on exit.
310
313
  self.run_worker(self._send("LEAVE"), name="leave")
311
- if self._ws is not None:
312
- self.run_worker(self._close_ws(), name="close")
313
- self.app.pop_screen()
314
-
315
- async def _close_ws(self) -> None:
316
- with contextlib.suppress(Exception):
317
- await self._ws.close()
314
+ self.app.exit()
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "typefaster-cli"
7
- version = "0.1.2"
7
+ version = "0.1.3"
8
8
  description = "A terminal-first typing game inspired by MonkeyType and TypeRacer."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes