Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/Loading Screen #936

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

Animesh404
Copy link
Contributor

@Animesh404 Animesh404 commented Jan 4, 2025

What kind of change does this PR introduce?

  • Added splash screen which completes when a signal is received on dashboard launch.

Summary

Untitled.video.-.Made.with.Clipchamp.3.mp4

related to #811

Checklist

  • My code follows the style guidelines of OpenAdapt
  • I have performed a self-review of my code
  • If applicable, I have added tests to prove my fix is functional/effective
  • I have linted my code locally prior to submission
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (e.g. README.md, requirements.txt)
  • New and existing unit tests pass locally with my changes

How can your code be run and tested?

python -m openadapt.entrypoint

@Animesh404 Animesh404 changed the title format fix Feat/Loading Screen Jan 4, 2025
@abrichr
Copy link
Member

abrichr commented Jan 5, 2025

Thank you @Animesh404 , this looks great!

I noticed in the video there is an exception that occurs at 12s:

RuntimeError: Event loop is closed

Can you please try to fix that?

@Animesh404
Copy link
Contributor Author

Thank you @Animesh404 , this looks great!

I noticed in the video there is an exception that occurs at 12s:

RuntimeError: Event loop is closed

Can you please try to fix that?

Hi @abrichr , this is fixed in da8b81b
the issue was with Windows' ProactorEventLoop which is the default in Python 3.8+ but can cause cleanup issues with GUI applications. The solution of switching to WindowsSelectorEventLoopPolicy before imports resolved the RuntimeError.

here's the log after fix:

(openadapt-py3.10) PS D:\dev\OpenAdapt> python -m openadapt.entrypoint
2025-01-07 20:12:05.482 | DEBUG    | __main__:_update_progress:37 - Progress: 0% - Initializing...
2025-01-07 20:12:05.485 | DEBUG    | __main__:_update_progress:37 - Progress: 20% - Loading configuration...
2025-01-07 20:12:05.486 | INFO     | openadapt.config:print_config:417 - Reading from D:\dev\OpenAdapt\openadapt\data\config.json
2025-01-07 20:12:05.487 | INFO     | openadapt.config:print_config:421 - ROOT_DIR_PATH=D:\dev\OpenAdapt\openadapt
2025-01-07 20:12:05.489 | INFO     | openadapt.config:print_config:421 - PRIVATE_AI_API_KEY=******************Y>
2025-01-07 20:12:05.490 | INFO     | openadapt.config:print_config:421 - REPLICATE_API_TOKEN=*******************N>
2025-01-07 20:12:05.490 | INFO     | openadapt.config:print_config:421 - DEFAULT_SEGMENTATION_ADAPTER=ultralytics
2025-01-07 20:12:05.492 | INFO     | openadapt.config:print_config:421 - OPENAI_API_KEY=****************a
2025-01-07 20:12:05.492 | INFO     | openadapt.config:print_config:421 - ANTHROPIC_API_KEY=*****
2025-01-07 20:12:05.494 | INFO     | openadapt.config:print_config:421 - GOOGLE_API_KEY=***************>
2025-01-07 20:12:05.495 | INFO     | openadapt.config:print_config:421 - CACHE_DIR_PATH=.cache
2025-01-07 20:12:05.497 | INFO     | openadapt.config:print_config:421 - CACHE_ENABLED=True
2025-01-07 20:12:05.499 | INFO     | openadapt.config:print_config:421 - CACHE_VERBOSITY=0
2025-01-07 20:12:05.500 | INFO     | openadapt.config:print_config:421 - DB_ECHO=False
2025-01-07 20:12:05.501 | INFO     | openadapt.config:print_config:421 - ERROR_REPORTING_ENABLED=True
2025-01-07 20:12:05.502 | INFO     | openadapt.config:print_config:421 - OPENAI_MODEL_NAME=gpt-3.5-turbo
2025-01-07 20:12:05.503 | INFO     | openadapt.config:print_config:421 - EVENT_BUFFER_QUEUE_SIZE=100
2025-01-07 20:12:05.504 | INFO     | openadapt.config:print_config:421 - RECORD_WINDOW_DATA=False
2025-01-07 20:12:05.505 | INFO     | openadapt.config:print_config:421 - RECORD_READ_ACTIVE_ELEMENT_STATE=False
2025-01-07 20:12:05.505 | INFO     | openadapt.config:print_config:421 - RECORD_VIDEO=True
2025-01-07 20:12:05.506 | INFO     | openadapt.config:print_config:421 - RECORD_AUDIO=True
2025-01-07 20:12:05.507 | INFO     | openadapt.config:print_config:421 - RECORD_BROWSER_EVENTS=False
2025-01-07 20:12:05.508 | INFO     | openadapt.config:print_config:421 - RECORD_FULL_VIDEO=False
2025-01-07 20:12:05.509 | INFO     | openadapt.config:print_config:421 - RECORD_IMAGES=False
2025-01-07 20:12:05.509 | INFO     | openadapt.config:print_config:421 - LOG_MEMORY=False
2025-01-07 20:12:05.510 | INFO     | openadapt.config:print_config:421 - REPLAY_STRIP_ELEMENT_STATE=True
2025-01-07 20:12:05.511 | INFO     | openadapt.config:print_config:421 - VIDEO_ENCODING=libx264
2025-01-07 20:12:05.513 | INFO     | openadapt.config:print_config:421 - VIDEO_PIXEL_FORMAT=yuv444p
2025-01-07 20:12:05.514 | INFO     | openadapt.config:print_config:421 - VIDEO_DIR_PATH=D:\dev\OpenAdapt\openadapt\data\videos
2025-01-07 20:12:05.515 | INFO     | openadapt.config:print_config:421 - STOP_SEQUENCES=[['o', 'a', '.', 's', 't', 'o', 'p'], ['ctrl', 'ctrl', 'ctrl']]
2025-01-07 20:12:05.516 | INFO     | openadapt.config:print_config:421 - BROWSER_WEBSOCKET_SERVER_IP=localhost
2025-01-07 20:12:05.517 | INFO     | openadapt.config:print_config:421 - BROWSER_WEBSOCKET_PORT=8765
2025-01-07 20:12:05.518 | INFO     | openadapt.config:print_config:421 - BROWSER_WEBSOCKET_MAX_SIZE=4194304
2025-01-07 20:12:05.519 | INFO     | openadapt.config:print_config:421 - IGNORE_WARNINGS=False
2025-01-07 20:12:05.519 | INFO     | openadapt.config:print_config:421 - MAX_NUM_WARNINGS_PER_SECOND=5
2025-01-07 20:12:05.520 | INFO     | openadapt.config:print_config:421 - WARNING_SUPPRESSION_PERIOD=1
2025-01-07 20:12:05.521 | INFO     | openadapt.config:print_config:421 - MESSAGES_TO_FILTER=['Cannot pickle Objective-C objects']
2025-01-07 20:12:05.522 | INFO     | openadapt.config:print_config:421 - ACTION_TEXT_SEP=-
2025-01-07 20:12:05.523 | INFO     | openadapt.config:print_config:421 - ACTION_TEXT_NAME_PREFIX=<
2025-01-07 20:12:05.524 | INFO     | openadapt.config:print_config:421 - ACTION_TEXT_NAME_SUFFIX=>
2025-01-07 20:12:05.524 | INFO     | openadapt.config:print_config:421 - PLOT_PERFORMANCE=True
2025-01-07 20:12:05.525 | INFO     | openadapt.config:print_config:421 - DATABASE_FILE_PATH=D:\dev\OpenAdapt\openadapt\data\openadapt.db
2025-01-07 20:12:05.526 | INFO     | openadapt.config:print_config:421 - APP_DARK_MODE=False
2025-01-07 20:12:05.527 | INFO     | openadapt.config:print_config:421 - SCRUB_ENABLED=False
2025-01-07 20:12:05.529 | INFO     | openadapt.config:print_config:421 - SCRUB_CHAR=*
2025-01-07 20:12:05.530 | INFO     | openadapt.config:print_config:421 - SCRUB_LANGUAGE=en
2025-01-07 20:12:05.532 | INFO     | openadapt.config:print_config:421 - SCRUB_FILL_COLOR=255
2025-01-07 20:12:05.533 | INFO     | openadapt.config:print_config:421 - SCRUB_KEYS_HTML=['text', 'canonical_text', 'title', 'state', 'task_description', 'key_char', 'canonical_key_char', 'key_vk', 'children']
2025-01-07 20:12:05.533 | INFO     | openadapt.config:print_config:421 - SCRUB_CONFIG_TRF={'nlp_engine_name': 'spacy', 'models': [{'lang_code': 'en', 'model_name': 'en_core_web_trf'}]}
2025-01-07 20:12:05.534 | INFO     | openadapt.config:print_config:421 - SCRUB_PRESIDIO_IGNORE_ENTITIES=[]
2025-01-07 20:12:05.535 | INFO     | openadapt.config:print_config:421 - VISUALIZE_DARK_MODE=False
2025-01-07 20:12:05.536 | INFO     | openadapt.config:print_config:421 - VISUALIZE_RUN_NATIVELY=True
2025-01-07 20:12:05.536 | INFO     | openadapt.config:print_config:421 - VISUALIZE_DENSE_TREES=True
2025-01-07 20:12:05.537 | INFO     | openadapt.config:print_config:421 - VISUALIZE_ANIMATIONS=True
2025-01-07 20:12:05.538 | INFO     | openadapt.config:print_config:421 - VISUALIZE_EXPAND_ALL=False
2025-01-07 20:12:05.539 | INFO     | openadapt.config:print_config:421 - VISUALIZE_MAX_TABLE_CHILDREN=10
2025-01-07 20:12:05.540 | INFO     | openadapt.config:print_config:421 - SAVE_SCREENSHOT_DIFF=False
2025-01-07 20:12:05.541 | INFO     | openadapt.config:print_config:421 - SPACY_MODEL_NAME=en_core_web_trf
2025-01-07 20:12:05.542 | INFO     | openadapt.config:print_config:421 - DASHBOARD_CLIENT_PORT=5173
2025-01-07 20:12:05.543 | INFO     | openadapt.config:print_config:421 - DASHBOARD_SERVER_PORT=8080
2025-01-07 20:12:05.544 | INFO     | openadapt.config:print_config:421 - SOM_SERVER_URL=<SOM_SERVER_URL>
2025-01-07 20:12:05.546 | INFO     | openadapt.config:print_config:421 - UNIQUE_USER_ID=9c16c630-7f9e-4fe7-bbf0-2965fdd4ae23
2025-01-07 20:12:05.546 | INFO     | openadapt.config:print_config:421 - REDIRECT_TO_ONBOARDING=False
2025-01-07 20:12:05.547 | INFO     | openadapt.config:print_config:421 - DEFAULT_ADAPTER=openai
2025-01-07 20:12:05.549 | DEBUG    | __main__:_update_progress:37 - Progress: 40% - Configuring error reporting...
2025-01-07 20:12:05.846 | INFO     | openadapt.error_reporting:configure_error_reporting:18 - config.ERROR_REPORTING_ENABLED=True
2025-01-07 20:12:05.850 | INFO     | openadapt.error_reporting:configure_error_reporting:26 - active_branch_name='feat/splash-screen'
2025-01-07 20:12:05.851 | INFO     | openadapt.error_reporting:configure_error_reporting:28 - is_reporting_branch=False
2025-01-07 20:12:05.853 | DEBUG    | __main__:_update_progress:37 - Progress: 60% - Loading database context...
DB_URL=sqlite:///D:\dev\OpenAdapt\openadapt\data\openadapt.db
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
2025-01-07 20:12:07.347 | DEBUG    | __main__:_update_progress:37 - Progress: 80% - Setting up system tray...
[2025-01-07 20:12:11.590] [recordLogger] [info] Created d3d11 device from 0
[2025-01-07 20:12:11.590] [recordLogger] [info] found 1 displays
2025-01-07 20:12:14.881 | INFO     | openadapt.app.tray:launch_dashboard:626 - Dashboard thread started
DEBUG(DashboardMonitor): Signal ready created
2025-01-07 20:12:14.884 | INFO     | openadapt.app.tray:monitor_startup:162 - Starting dashboard monitoring
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 0.00s

> nextjs-fastapi@0.1.0 dev:windows
> concurrently "npm run next-dev:windows" "npm run fastapi-dev:windows"

2025-01-07 20:12:16.905 | DEBUG    | openadapt.app.tray:monitor_startup:181 - Connection attempt failed: HTTPConnectionPool(host='localhost', port=5173): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002BD8BBA4F40>, 'Connection to localhost timed out. (connect timeout=1)'))
[1]
[1] > nextjs-fastapi@0.1.0 fastapi-dev:windows
[1] > python -m uvicorn api.index:app --port %DASHBOARD_SERVER_PORT% --reload
[1]
[0]
[0] > nextjs-fastapi@0.1.0 next-dev:windows
[0] > next dev -p %DASHBOARD_CLIENT_PORT%
[0]
[1] INFO:     Will watch for changes in these directories: ['D:\\dev\\OpenAdapt\\openadapt\\app\\dashboard']
[1] INFO:     Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
[1] INFO:     Started reloader process [7024] using WatchFiles
[0]  ⚠ Specified "rewrites" will not automatically work with "output: export". See more info here: https://nextjs.org/docs/messages/export-no-custom-routes
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 2.52s
[0]  ⚠ Specified "rewrites" will not automatically work with "output: export". See more info here: https://nextjs.org/docs/messages/export-no-custom-routes
[0]    ▲ Next.js 14.1.4
[0]    - Local:        http://localhost:5173
[0]
[0]  ⚠ Specified "rewrites" will not automatically work with "output: export". See more info here: https://nextjs.org/docs/messages/export-no-custom-routes
2025-01-07 20:12:18.918 | DEBUG    | openadapt.app.tray:monitor_startup:181 - Connection attempt failed: HTTPConnectionPool(host='localhost', port=5173): Read timed out. (read timeout=1)
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 4.54s
2025-01-07 20:12:20.432 | DEBUG    | openadapt.app.tray:monitor_startup:181 - Connection attempt failed: HTTPConnectionPool(host='localhost', port=5173): Read timed out. (read timeout=1)
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 6.06s
[0]  ⚠ Specified "rewrites" will not automatically work with "output: export". See more info here: https://nextjs.org/docs/messages/export-no-custom-routes
[0]  ✓ Ready in 3.4s
[0]  ○ Compiling /recordings ...
2025-01-07 20:12:21.957 | DEBUG    | openadapt.app.tray:monitor_startup:181 - Connection attempt failed: HTTPConnectionPool(host='localhost', port=5173): Read timed out. (read timeout=1)
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 7.58s
[1] INFO:     Started server process [13940]
[1] INFO:     Waiting for application startup.
[1] INFO:     Application startup complete.
2025-01-07 20:12:23.486 | DEBUG    | openadapt.app.tray:monitor_startup:181 - Connection attempt failed: HTTPConnectionPool(host='localhost', port=5173): Read timed out. (read timeout=1)
DEBUG(DashboardMonitor): Checking dashboard. Elapsed: 9.10s
[0]  ✓ Compiled /recordings in 3.2s (2325 modules)
2025-01-07 20:12:24.984 | INFO     | openadapt.app.tray:monitor_startup:175 - Dashboard is ready!
2025-01-07 20:12:24.987 | INFO     | openadapt.app.tray:launch_dashboard:638 - Dashboard monitor started
2025-01-07 20:12:24.990 | INFO     | openadapt.app.tray:on_dashboard_ready:194 - Emitting ready signal
2025-01-07 20:12:24.996 | DEBUG    | __main__:_update_progress:37 - Progress: 90% - Finalizing setup...
2025-01-07 20:12:24.999 | DEBUG    | __main__:run_openadapt:150 - Signal handler connected
2025-01-07 20:12:25.001 | DEBUG    | __main__:run_openadapt:156 - Dashboard appears to be already ready, calling handler directly
2025-01-07 20:12:25.003 | DEBUG    | __main__:on_dashboard_ready_wrapper:143 - Dashboard ready wrapper called
2025-01-07 20:12:25.005 | INFO     | __main__:on_dashboard_ready:114 - Dashboard ready - closing splash screen
2025-01-07 20:12:25.009 | DEBUG    | __main__:_update_progress:37 - Progress: 100% - Ready!
2025-01-07 20:12:25.518 | INFO     | __main__:<lambda>:121 - Hiding splash screen
2025-01-07 20:12:25.521 | INFO     | openadapt.app.tray:stop:205 - Stopping dashboard monitor
[0]  ✓ Compiled /favicon.ico in 501ms (1403 modules)
[1] INFO:     127.0.0.1:61627 - "GET /api/recordings HTTP/1.1" 200 OK
[1] INFO:     127.0.0.1:61628 - "GET /api/recordings/scrubbed HTTP/1.1" 200 OK
[1] INFO:     127.0.0.1:61629 - "GET /api/recordings/status HTTP/1.1" 200 OK
2025-01-07 20:12:42.860 | DEBUG    | openadapt.app.dashboard.run:cleanup:62 - Terminating the dashboard client.
2025-01-07 20:12:42.871 | DEBUG    | openadapt.app.dashboard.run:cleanup:67 - Dashboard client terminated.
QThread: Destroyed while thread is still running

@Animesh404
Copy link
Contributor Author

Animesh404 commented Jan 7, 2025

Splash screen UI freezes during tray initialization.
Getting ''Python is not responding" upon click during this freeze phase

Untitled.video.-.Made.with.Clipchamp.5.mp4

@Animesh404
Copy link
Contributor Author

Splash screen UI freezes during tray initialization. Getting ''Python is not responding" upon click during this freeze phase

Untitled.video.-.Made.with.Clipchamp.5.mp4

fixed in 0208df4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants