frontengine 1.0.78__tar.gz → 1.0.80__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 (287) hide show
  1. {frontengine-1.0.78 → frontengine-1.0.80}/PKG-INFO +15 -2
  2. {frontengine-1.0.78 → frontengine-1.0.80}/README.md +14 -1
  3. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/PKG-INFO +15 -2
  4. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/SOURCES.txt +3 -1
  5. {frontengine-1.0.78 → frontengine-1.0.80}/pyproject.toml +2 -3
  6. frontengine-1.0.80/tests/test_workflow_actions.py +93 -0
  7. {frontengine-1.0.78 → frontengine-1.0.80}/LICENSE +0 -0
  8. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/__init__.py +0 -0
  9. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/__main__.py +0 -0
  10. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/__init__.py +0 -0
  11. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/base_widget.py +0 -0
  12. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/camera/__init__.py +0 -0
  13. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/camera/camera_widget.py +0 -0
  14. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/canvas/__init__.py +0 -0
  15. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/canvas/whiteboard_widget.py +0 -0
  16. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/capture/__init__.py +0 -0
  17. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/capture/region_capture.py +0 -0
  18. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/draggable_window.py +0 -0
  19. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/focus_shield/__init__.py +0 -0
  20. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
  21. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/freeze/__init__.py +0 -0
  22. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/freeze/freeze_widget.py +0 -0
  23. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/gif/__init__.py +0 -0
  24. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/gif/paint_gif.py +0 -0
  25. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/image/__init__.py +0 -0
  26. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/image/paint_image.py +0 -0
  27. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/load/__init__.py +0 -0
  28. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/load/load_someone_make_ui.py +0 -0
  29. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/measure/__init__.py +0 -0
  30. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/measure/measure_widget.py +0 -0
  31. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/monitor/__init__.py +0 -0
  32. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/monitor/monitor_widget.py +0 -0
  33. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/notes/__init__.py +0 -0
  34. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/notes/sticky_note_widget.py +0 -0
  35. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/overlay_factory.py +0 -0
  36. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/particle/__init__.py +0 -0
  37. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/particle/particle_ui.py +0 -0
  38. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/pet/__init__.py +0 -0
  39. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/pet/desktop_pet.py +0 -0
  40. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/pinned/__init__.py +0 -0
  41. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/pinned/pinned_image.py +0 -0
  42. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/presentation/__init__.py +0 -0
  43. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/presentation/annotation_overlay.py +0 -0
  44. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/presentation/cursor_effects.py +0 -0
  45. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/presentation/keystroke_display.py +0 -0
  46. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/presentation/magnifier.py +0 -0
  47. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/reference/__init__.py +0 -0
  48. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/reference/reference_board.py +0 -0
  49. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/replica/__init__.py +0 -0
  50. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/replica/replica_widget.py +0 -0
  51. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/scene/__init__.py +0 -0
  52. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  53. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/scene/extend_graphic_view.py +0 -0
  54. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/scene/scene.py +0 -0
  55. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/screen_care/__init__.py +0 -0
  56. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/screen_care/color_vision_widget.py +0 -0
  57. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/screen_care/screen_filter.py +0 -0
  58. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/shortcuts/__init__.py +0 -0
  59. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/shortcuts/shortcut_sheet.py +0 -0
  60. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/sound_player/__init__.py +0 -0
  61. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/sound_player/sound_effect.py +0 -0
  62. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/sound_player/sound_player.py +0 -0
  63. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/spectrum/__init__.py +0 -0
  64. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/spectrum/spectrum_widget.py +0 -0
  65. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/text/__init__.py +0 -0
  66. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/text/draw_text.py +0 -0
  67. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/toast/__init__.py +0 -0
  68. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/toast/toast_widget.py +0 -0
  69. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/video/__init__.py +0 -0
  70. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/video/video_player.py +0 -0
  71. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/wallpaper/__init__.py +0 -0
  72. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
  73. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/web/__init__.py +0 -0
  74. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/web/webview.py +0 -0
  75. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/show/window_helpers.py +0 -0
  76. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/system_tray/__init__.py +0 -0
  77. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/system_tray/extend_system_tray.py +0 -0
  78. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/__init__.py +0 -0
  79. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/color/__init__.py +0 -0
  80. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/color/global_color.py +0 -0
  81. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/__init__.py +0 -0
  82. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/app_profile_dialog.py +0 -0
  83. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  84. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/clipboard_dialog.py +0 -0
  85. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
  86. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/how_to_use_dialog.py +0 -0
  87. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/preset_schedule_dialog.py +0 -0
  88. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/reminder_dialog.py +0 -0
  89. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/remote_control_dialog.py +0 -0
  90. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/rules_dialog.py +0 -0
  91. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/screen_privacy_dialog.py +0 -0
  92. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/screen_text_dialog.py +0 -0
  93. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/screensaver_dialog.py +0 -0
  94. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/signage_dialog.py +0 -0
  95. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/smart_pause_dialog.py +0 -0
  96. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/usage_report_dialog.py +0 -0
  97. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/window_pin_dialog.py +0 -0
  98. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/dialog/window_replica_dialog.py +0 -0
  99. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/main_ui.py +0 -0
  100. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/__init__.py +0 -0
  101. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/help_menu.py +0 -0
  102. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/how_to_menu.py +0 -0
  103. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/language_menu.py +0 -0
  104. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/preset_menu.py +0 -0
  105. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/menu/settings_menu.py +0 -0
  106. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/nav/__init__.py +0 -0
  107. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/nav/sidebar.py +0 -0
  108. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/__init__.py +0 -0
  109. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/control_center/__init__.py +0 -0
  110. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
  111. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/focus/__init__.py +0 -0
  112. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/focus/focus_setting_ui.py +0 -0
  113. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/gif/__init__.py +0 -0
  114. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
  115. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/image/__init__.py +0 -0
  116. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/image/image_setting_ui.py +0 -0
  117. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/layout_kit.py +0 -0
  118. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/particle/__init__.py +0 -0
  119. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
  120. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/pet/__init__.py +0 -0
  121. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
  122. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/presentation/__init__.py +0 -0
  123. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/presentation/presentation_setting_ui.py +0 -0
  124. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/__init__.py +0 -0
  125. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
  126. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
  127. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
  128. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
  129. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
  130. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
  131. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
  132. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
  133. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
  134. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
  135. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
  136. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/screen_care/__init__.py +0 -0
  137. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +0 -0
  138. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/sound_player/__init__.py +0 -0
  139. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
  140. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/text/__init__.py +0 -0
  141. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/text/text_setting_ui.py +0 -0
  142. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/tools/__init__.py +0 -0
  143. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/tools/tools_setting_ui.py +0 -0
  144. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/utils.py +0 -0
  145. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/video/__init__.py +0 -0
  146. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/video/video_setting_ui.py +0 -0
  147. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/wallpaper/__init__.py +0 -0
  148. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +0 -0
  149. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/web/__init__.py +0 -0
  150. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/web/web_setting_ui.py +0 -0
  151. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/widgets/__init__.py +0 -0
  152. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/page/widgets/widgets_setting_ui.py +0 -0
  153. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/style/__init__.py +0 -0
  154. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/ui/style/app_style.py +0 -0
  155. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/user_setting/__init__.py +0 -0
  156. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/user_setting/preset_repository.py +0 -0
  157. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/user_setting/scene_setting.py +0 -0
  158. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/user_setting/user_setting_file.py +0 -0
  159. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/__init__.py +0 -0
  160. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/app_profile/__init__.py +0 -0
  161. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/app_profile/app_profile_service.py +0 -0
  162. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/__init__.py +0 -0
  163. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
  164. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
  165. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/microphone_meter.py +0 -0
  166. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/screen_audio.py +0 -0
  167. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
  168. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
  169. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/autostart/__init__.py +0 -0
  170. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/autostart/autostart_service.py +0 -0
  171. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/break_reminder/__init__.py +0 -0
  172. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/break_reminder/break_reminder.py +0 -0
  173. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/browser/__init__.py +0 -0
  174. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/browser/browser.py +0 -0
  175. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/clipboard/__init__.py +0 -0
  176. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/clipboard/clipboard_history.py +0 -0
  177. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
  178. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/color_vision/__init__.py +0 -0
  179. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/color_vision/color_vision.py +0 -0
  180. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/critical_exit/__init__.py +0 -0
  181. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
  182. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/critical_exit/critical_exit.py +0 -0
  183. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/critical_exit/win32_vk.py +0 -0
  184. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/exception/__init__.py +0 -0
  185. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/exception/exception_tags.py +0 -0
  186. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/exception/exceptions.py +0 -0
  187. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/focus_shield/__init__.py +0 -0
  188. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/focus_shield/focus_shield.py +0 -0
  189. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/focus_timer/__init__.py +0 -0
  190. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/focus_timer/focus_timer.py +0 -0
  191. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/hotkey/__init__.py +0 -0
  192. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/hotkey/hotkey_service.py +0 -0
  193. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/input_watch/__init__.py +0 -0
  194. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/input_watch/input_watch_service.py +0 -0
  195. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/input_watch/typing_watch.py +0 -0
  196. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/json/__init__.py +0 -0
  197. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/json/json_file.py +0 -0
  198. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/json/json_repository.py +0 -0
  199. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/keep_awake/__init__.py +0 -0
  200. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/keep_awake/keep_awake.py +0 -0
  201. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/logging/__init__.py +0 -0
  202. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/logging/loggin_instance.py +0 -0
  203. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/measure/__init__.py +0 -0
  204. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/measure/measure.py +0 -0
  205. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/media_keys/__init__.py +0 -0
  206. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/media_keys/media_keys.py +0 -0
  207. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/midi/__init__.py +0 -0
  208. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/midi/midi_input.py +0 -0
  209. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/__init__.py +0 -0
  210. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/english.py +0 -0
  211. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/france.py +0 -0
  212. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/germany.py +0 -0
  213. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/italy.py +0 -0
  214. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  215. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/retranslate.py +0 -0
  216. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/russian.py +0 -0
  217. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
  218. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
  219. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/now_playing/__init__.py +0 -0
  220. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/now_playing/now_playing.py +0 -0
  221. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/pet_chat/__init__.py +0 -0
  222. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
  223. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/platform_info/__init__.py +0 -0
  224. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/platform_info/platform_info.py +0 -0
  225. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/playlist/__init__.py +0 -0
  226. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/playlist/playlist.py +0 -0
  227. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/plugins/__init__.py +0 -0
  228. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/plugins/plugin_loader.py +0 -0
  229. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/power_mode/__init__.py +0 -0
  230. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/power_mode/power_mode.py +0 -0
  231. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/preset_schedule/__init__.py +0 -0
  232. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
  233. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/recording/__init__.py +0 -0
  234. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/recording/frame_recorder.py +0 -0
  235. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/recording/gif_writer.py +0 -0
  236. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/redirect_manager/__init__.py +0 -0
  237. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  238. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/reminder/__init__.py +0 -0
  239. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/reminder/reminder_service.py +0 -0
  240. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/remote/__init__.py +0 -0
  241. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/remote/remote_server.py +0 -0
  242. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/rules/__init__.py +0 -0
  243. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/rules/rule_engine.py +0 -0
  244. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screen_privacy/__init__.py +0 -0
  245. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screen_privacy/capture_affinity.py +0 -0
  246. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screen_privacy/share_watch.py +0 -0
  247. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screen_text/__init__.py +0 -0
  248. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screen_text/screen_text_service.py +0 -0
  249. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screensaver/__init__.py +0 -0
  250. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/screensaver/screensaver_service.py +0 -0
  251. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/signage/__init__.py +0 -0
  252. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/signage/signage_service.py +0 -0
  253. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/smart_pause/__init__.py +0 -0
  254. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/smart_pause/pause_rules.py +0 -0
  255. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
  256. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/steam/__init__.py +0 -0
  257. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/steam/steam_language.py +0 -0
  258. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/system_stats/__init__.py +0 -0
  259. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/system_stats/system_stats.py +0 -0
  260. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/text_source/__init__.py +0 -0
  261. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/text_source/text_source.py +0 -0
  262. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/theme_schedule/__init__.py +0 -0
  263. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
  264. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/usage_tracking/__init__.py +0 -0
  265. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/usage_tracking/usage_service.py +0 -0
  266. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
  267. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/virtual_camera/__init__.py +0 -0
  268. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/virtual_camera/camera_feed.py +0 -0
  269. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/virtual_camera/virtual_camera.py +0 -0
  270. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/virtual_desktop/__init__.py +0 -0
  271. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/virtual_desktop/virtual_desktop.py +0 -0
  272. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/weather/__init__.py +0 -0
  273. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/weather/weather_service.py +0 -0
  274. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/web_url.py +0 -0
  275. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_pin/__init__.py +0 -0
  276. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_pin/monitor_move.py +0 -0
  277. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_pin/window_layout.py +0 -0
  278. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_pin/window_pin.py +0 -0
  279. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_replica/__init__.py +0 -0
  280. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/window_replica/dwm_thumbnail.py +0 -0
  281. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/workshop/__init__.py +0 -0
  282. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine/utils/workshop/workshop_content.py +0 -0
  283. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/dependency_links.txt +0 -0
  284. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/entry_points.txt +0 -0
  285. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/requires.txt +0 -0
  286. {frontengine-1.0.78 → frontengine-1.0.80}/frontengine.egg-info/top_level.txt +0 -0
  287. {frontengine-1.0.78 → frontengine-1.0.80}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.78
3
+ Version: 1.0.80
4
4
  Summary: FrontEngine is use-define frontview or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/JeffreyChen-SteamProjects/FrontEngine
@@ -24,6 +24,19 @@ Dynamic: license-file
24
24
 
25
25
  # FrontEngine
26
26
 
27
+ <p align="center">
28
+ <strong>English</strong> ·
29
+ <a href="README/README_zh-TW.md">繁體中文</a> ·
30
+ <a href="README/README_zh-CN.md">简体中文</a> ·
31
+ <a href="README/README_ja.md">日本語</a> ·
32
+ <a href="README/README_ko.md">한국어</a> ·
33
+ <a href="README/README_es.md">Español</a> ·
34
+ <a href="README/README_fr.md">Français</a> ·
35
+ <a href="README/README_de.md">Deutsch</a> ·
36
+ <a href="README/README_pt-BR.md">Português (BR)</a> ·
37
+ <a href="README/README_ru.md">Русский</a>
38
+ </p>
39
+
27
40
  [![CI](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml/badge.svg)](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml)
28
41
  [![PyPI](https://img.shields.io/pypi/v/frontengine)](https://pypi.org/project/frontengine/)
29
42
  [![Python](https://img.shields.io/pypi/pyversions/frontengine)](https://pypi.org/project/frontengine/)
@@ -399,7 +412,7 @@ pip install -e .
399
412
  python -m pytest tests/ -q # the whole suite, headless (Qt offscreen)
400
413
  ```
401
414
 
402
- Static checking uses pyflakes (`pip install pyflakes`), and a clean tree prints
415
+ Static checking uses pyflakes (in `dev_requirements.txt`), and a clean tree prints
403
416
  nothing at all:
404
417
 
405
418
  ```bash
@@ -1,5 +1,18 @@
1
1
  # FrontEngine
2
2
 
3
+ <p align="center">
4
+ <strong>English</strong> ·
5
+ <a href="README/README_zh-TW.md">繁體中文</a> ·
6
+ <a href="README/README_zh-CN.md">简体中文</a> ·
7
+ <a href="README/README_ja.md">日本語</a> ·
8
+ <a href="README/README_ko.md">한국어</a> ·
9
+ <a href="README/README_es.md">Español</a> ·
10
+ <a href="README/README_fr.md">Français</a> ·
11
+ <a href="README/README_de.md">Deutsch</a> ·
12
+ <a href="README/README_pt-BR.md">Português (BR)</a> ·
13
+ <a href="README/README_ru.md">Русский</a>
14
+ </p>
15
+
3
16
  [![CI](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml/badge.svg)](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml)
4
17
  [![PyPI](https://img.shields.io/pypi/v/frontengine)](https://pypi.org/project/frontengine/)
5
18
  [![Python](https://img.shields.io/pypi/pyversions/frontengine)](https://pypi.org/project/frontengine/)
@@ -375,7 +388,7 @@ pip install -e .
375
388
  python -m pytest tests/ -q # the whole suite, headless (Qt offscreen)
376
389
  ```
377
390
 
378
- Static checking uses pyflakes (`pip install pyflakes`), and a clean tree prints
391
+ Static checking uses pyflakes (in `dev_requirements.txt`), and a clean tree prints
379
392
  nothing at all:
380
393
 
381
394
  ```bash
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.78
3
+ Version: 1.0.80
4
4
  Summary: FrontEngine is use-define frontview or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/JeffreyChen-SteamProjects/FrontEngine
@@ -24,6 +24,19 @@ Dynamic: license-file
24
24
 
25
25
  # FrontEngine
26
26
 
27
+ <p align="center">
28
+ <strong>English</strong> ·
29
+ <a href="README/README_zh-TW.md">繁體中文</a> ·
30
+ <a href="README/README_zh-CN.md">简体中文</a> ·
31
+ <a href="README/README_ja.md">日本語</a> ·
32
+ <a href="README/README_ko.md">한국어</a> ·
33
+ <a href="README/README_es.md">Español</a> ·
34
+ <a href="README/README_fr.md">Français</a> ·
35
+ <a href="README/README_de.md">Deutsch</a> ·
36
+ <a href="README/README_pt-BR.md">Português (BR)</a> ·
37
+ <a href="README/README_ru.md">Русский</a>
38
+ </p>
39
+
27
40
  [![CI](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml/badge.svg)](https://github.com/JeffreyChen-SteamProjects/FrontEngine/actions/workflows/ci.yml)
28
41
  [![PyPI](https://img.shields.io/pypi/v/frontengine)](https://pypi.org/project/frontengine/)
29
42
  [![Python](https://img.shields.io/pypi/pyversions/frontengine)](https://pypi.org/project/frontengine/)
@@ -399,7 +412,7 @@ pip install -e .
399
412
  python -m pytest tests/ -q # the whole suite, headless (Qt offscreen)
400
413
  ```
401
414
 
402
- Static checking uses pyflakes (`pip install pyflakes`), and a clean tree prints
415
+ Static checking uses pyflakes (in `dev_requirements.txt`), and a clean tree prints
403
416
  nothing at all:
404
417
 
405
418
  ```bash
@@ -1,4 +1,5 @@
1
1
  LICENSE
2
+ README
2
3
  README.md
3
4
  pyproject.toml
4
5
  frontengine/__init__.py
@@ -281,4 +282,5 @@ frontengine/utils/window_pin/window_pin.py
281
282
  frontengine/utils/window_replica/__init__.py
282
283
  frontengine/utils/window_replica/dwm_thumbnail.py
283
284
  frontengine/utils/workshop/__init__.py
284
- frontengine/utils/workshop/workshop_content.py
285
+ frontengine/utils/workshop/workshop_content.py
286
+ tests/test_workflow_actions.py
@@ -1,12 +1,11 @@
1
- # Rename to dev version
2
- # This is dev version
1
+ # Stable channel: the frontengine package. pyproject.toml builds frontengine_dev.
3
2
  [build-system]
4
3
  requires = ["setuptools>=82.0.1"]
5
4
  build-backend = "setuptools.build_meta"
6
5
 
7
6
  [project]
8
7
  name = "frontengine"
9
- version = "1.0.78"
8
+ version = "1.0.80"
10
9
  authors = [
11
10
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
12
11
  ]
@@ -0,0 +1,93 @@
1
+ """Every GitHub Actions step pins its action to a commit SHA.
2
+
3
+ A tag such as ``@v4`` can be moved to new code at any time (the 2025
4
+ tj-actions/changed-files compromise rewrote tags), so each ``uses:`` names a
5
+ full 40-hex commit and carries the release it corresponds to as a comment,
6
+ which is what Dependabot reads and updates. Pinning also keeps Node 20 actions
7
+ from lingering unnoticed: GitHub removed Node 20 from its runners on 2026-09-23.
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import re
12
+ from pathlib import Path
13
+
14
+ import pytest
15
+
16
+ _ROOT = next(p for p in Path(__file__).resolve().parents if (p / ".github" / "workflows").is_dir())
17
+ _WORKFLOWS = sorted((_ROOT / ".github" / "workflows").glob("*.yml"))
18
+ _USES = re.compile(r"^\s*(?:-\s*)?uses:\s*(\S+)(.*)$")
19
+ _PINNED = re.compile(r"^[\w.-]+/[\w./-]+@[0-9a-f]{40}$")
20
+ _LOCAL = re.compile(r"^\./")
21
+ _VERSION_COMMENT = re.compile(r"^\s+#\s*v\d+(\.\d+)*\s*$")
22
+
23
+
24
+ def _uses(path: Path) -> list[tuple[int, str, str]]:
25
+ """Return ``(line number, action reference, rest of line)`` for each remote ``uses:``."""
26
+ found = []
27
+ for number, line in enumerate(path.read_text(encoding="utf-8").splitlines(), 1):
28
+ match = _USES.match(line)
29
+ if match and not _LOCAL.match(match.group(1)):
30
+ found.append((number, match.group(1), match.group(2)))
31
+ return found
32
+
33
+
34
+ def test_workflows_exist():
35
+ assert _WORKFLOWS
36
+
37
+
38
+ @pytest.mark.parametrize("workflow", _WORKFLOWS, ids=lambda p: p.name)
39
+ def test_every_action_is_pinned_to_a_commit_with_its_version(workflow):
40
+ bad = [f"{workflow.name}:{number} {ref}{rest}"
41
+ for number, ref, rest in _uses(workflow)
42
+ if not (_PINNED.match(ref) and _VERSION_COMMENT.match(rest))]
43
+ assert bad == []
44
+
45
+
46
+ def test_one_version_per_action():
47
+ # The same action at two different commits means a partial upgrade.
48
+ seen: dict[str, set[str]] = {}
49
+ for workflow in _WORKFLOWS:
50
+ for _number, ref, _rest in _uses(workflow):
51
+ action, _, sha = ref.partition("@")
52
+ seen.setdefault(action, set()).add(sha)
53
+ assert {action: shas for action, shas in seen.items() if len(shas) > 1} == {}
54
+
55
+
56
+ def test_dependabot_keeps_pins_current_on_dev():
57
+ # Pinned SHAs only stay current if something bumps them; every update
58
+ # goes to dev because main is the release branch. Parsed as text: PyYAML
59
+ # is not a test dependency.
60
+ text = (_ROOT / ".github" / "dependabot.yml").read_text(encoding="utf-8")
61
+ blocks = re.split(r"^\s*-\s*package-ecosystem:", text, flags=re.MULTILINE)[1:]
62
+ ecosystems = {block.split()[0].strip("\"'") for block in blocks}
63
+ assert {"pip", "github-actions"} <= ecosystems
64
+ assert all(re.search(r"^\s*target-branch:\s*\"dev\"", block, re.MULTILINE)
65
+ for block in blocks)
66
+
67
+
68
+ def _checkout_steps(path: Path) -> list[tuple[int, str]]:
69
+ """Return ``(line number, step text)`` for each ``actions/checkout`` step."""
70
+ lines = path.read_text(encoding="utf-8").splitlines()
71
+ steps = []
72
+ for index, line in enumerate(lines):
73
+ if not re.search(r"uses:\s*actions/checkout@", line):
74
+ continue
75
+ column = line.index("uses:")
76
+ body = [line]
77
+ for following in lines[index + 1:]:
78
+ indent = len(following) - len(following.lstrip())
79
+ if following.strip() and (indent < column or following.lstrip().startswith("- ")):
80
+ break
81
+ body.append(following)
82
+ steps.append((index + 1, "\n".join(body)))
83
+ return steps
84
+
85
+
86
+ @pytest.mark.parametrize("workflow", _WORKFLOWS, ids=lambda p: p.name)
87
+ def test_every_checkout_decides_on_persisted_credentials(workflow):
88
+ # actions/checkout leaves the job token in .git/config unless told not
89
+ # to, where every later step (and any uploaded workspace) can read it.
90
+ # Only jobs that push keep it, and they say so.
91
+ bad = [f"{workflow.name}:{number}" for number, step in _checkout_steps(workflow)
92
+ if not re.search(r"^\s*persist-credentials:\s*(true|false)\b", step, re.MULTILINE)]
93
+ assert bad == []
File without changes