Skip to content

Fix Activity Log timezone formatting#112

Draft
neubig wants to merge 1 commit into
mainfrom
fix-activity-log-timezone
Draft

Fix Activity Log timezone formatting#112
neubig wants to merge 1 commit into
mainfrom
fix-activity-log-timezone

Conversation

@neubig
Copy link
Copy Markdown
Member

@neubig neubig commented May 14, 2026

Summary

  • Format Activity Log run timestamps using the automation trigger timezone instead of the viewer's browser timezone.
  • Show the timezone abbreviation in Activity Log timestamps when a timezone is configured.
  • Read timezone from trigger.timezone while preserving the existing top-level fallback used by mocks/legacy data.

Tests

  • cd frontend && npm run make-i18n && npm test -- src/__tests__/components/automations/detail/activity-log-item.test.tsx src/__tests__/components/automations/detail/activity-log-section.test.tsx src/__tests__/routes/automation-detail.test.tsx
  • cd frontend && npm run typecheck
  • cd frontend && npx eslint src/components/automations/detail/activity-log-item.tsx src/components/automations/detail/activity-log-section.tsx src/components/automations/detail/configuration-section.tsx src/routes/automation-detail.tsx src/__tests__/components/automations/detail/activity-log-item.test.tsx src/types/automation.ts && npx prettier --check src/components/automations/detail/activity-log-item.tsx src/components/automations/detail/activity-log-section.tsx src/components/automations/detail/configuration-section.tsx src/routes/automation-detail.tsx src/__tests__/components/automations/detail/activity-log-item.test.tsx src/types/automation.ts

This PR was created by an AI agent (OpenHands) on behalf of the user.

@neubig can click here to continue refining the PR

Related issue: #130

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions
Copy link
Copy Markdown

Coverage

Coverage Report
FileStmtsMissCoverMissing
__init__.py10100% 
app.py1428341%40, 43, 46, 52, 54, 57, 60–63, 66, 71–73, 75, 80–81, 83, 85–87, 89, 93, 95–96, 98–99, 102–108, 111–112, 115, 122–123, 126–127, 131, 139–140, 143, 150–151, 153, 156–157, 160, 165–173, 175–177, 263–265, 270–271, 273–274, 276, 279–281, 283–284, 286–287, 292–293, 297, 300, 302
auth.py127596%82, 124, 344, 352–353
config.py1570100% 
constants.py160100% 
db.py672956%60, 74–75, 78–80, 82, 89, 92–93, 96, 104, 111, 144, 147–148, 152–153, 161, 169, 174, 201, 204–210
dispatcher.py1704374%68, 80, 82–83, 164–167, 204, 207, 222–223, 229–231, 248–249, 255–259, 262–264, 333–334, 359–366, 386, 401–402, 416–417, 426–427, 429
event_router.py591967%83, 88, 119–121, 137–138, 156, 158, 160–161, 163, 173, 179–181, 184, 186, 188
exceptions.py40100% 
execution.py21913339%39–41, 76–79, 87–91, 93, 101–103, 108–112, 114, 128–131, 133, 135, 137–140, 142–147, 149, 151–158, 160–161, 163, 199–201, 207–209, 220–223, 229–231, 271–275, 284, 292, 296, 298–299, 304–305, 310, 382–383, 462–464, 466–472, 475–476, 478, 480–482, 485, 488, 491–494, 496, 499–500, 503–505, 509–510, 514–517, 519, 527–528, 532–534, 536–542, 546, 548, 557–559, 561–563
filter_eval.py50296%161–162
logger.py551769%37, 50–51, 53–59, 74, 77, 101, 103–106
models.py790100% 
preset_router.py1835669%130–132, 240–241, 246–253, 258, 261, 263–264, 275–278, 280–284, 289, 298, 359–361, 472–473, 478–485, 490, 493, 495–496, 507–510, 512–516, 521, 531
router.py1136344%77–78, 98, 100, 103, 105, 119, 132, 134–135, 137–138, 141–143, 154–156, 174–177, 196, 199, 202, 209, 211, 245–247, 250–252, 256–257, 262, 266–269, 271, 279, 281–282, 287–288, 291, 293, 295–297, 300–303, 308, 310–311, 320, 341–343, 347
scheduler.py60985%134–135, 172–173, 188–189, 199–200, 202
schemas.py2651793%31, 165, 171–173, 232–234, 236, 319–320, 323, 328, 333, 477, 485, 492
trigger_matcher.py28389%72–74
uploads.py1075944%142–145, 153–155, 161–162, 165, 174–175, 178–179, 187–188, 190–193, 196–199, 201, 203–205, 207–210, 212–213, 215, 230, 236–237, 240, 243, 246, 249, 251, 264–265, 279, 282–284, 286–287, 289, 295–296, 309, 317–319, 323
watchdog.py984554%55–57, 69–70, 162–163, 204–205, 207, 209, 218, 220–222, 224, 231–233, 235–237, 239–240, 242, 257, 259, 264–267, 269–274, 276–282, 284
webhook_router.py804840%57, 82–83, 107–108, 110, 113–114, 116, 126, 128–132, 137, 139, 151, 154, 157, 164–165, 167, 180, 182–183, 188, 204, 206–207, 213–215, 217–218, 220, 235, 237–238, 243–244, 261, 263–264, 270–271, 273, 275
backends
   __init__.py130100% 
   base.py290100% 
   cloud.py1306252%43–45, 50–52, 103, 116–118, 131–135, 142–143, 145, 147, 159–160, 228–229, 231–232, 234–237, 239–244, 246–254, 256–257, 259, 266–268, 271–272, 274, 281–283, 288–292, 294
   local.py420100% 
event_schemas
   __init__.py29196%53
   custom.py33584%52–53, 64–66
   detection.py320100% 
   github.py125496%306, 311, 456, 483
presets
   __init__.py00100% 
storage
   __init__.py60100% 
   factory.py15193%36
   file_store.py22577%21, 30, 35, 40, 64
   google_cloud.py721184%49, 97–102, 136–137, 190, 192
   local.py680100% 
   s3.py1121586%56, 100, 102–103, 107, 109, 190, 213–215, 269–270, 275, 337–338
utils
   __init__.py50100% 
   agent_server.py500100% 
   api_key.py322425%40–41, 46–48, 50, 55, 60, 62–65, 67–68, 70–71, 73, 79, 81–82, 89, 91–92, 98
   cron.py45686%39, 45, 74, 80, 123, 140
   log_context.py100100% 
   run.py77889%74–76, 183–184, 231, 237–238
   sandbox.py716114%49–50, 55–58, 60–62, 64–70, 80–81, 86–92, 115–116, 118–122, 124–128, 153–154, 156, 158–161, 166–167, 170, 172–173, 179–181, 186–188, 193–194, 202–204, 206
   tarball_validation.py480100% 
   time.py30100% 
   webhook.py57984%47, 52, 120, 130–132, 138, 201–202
TOTAL320684373% 

@github-actions
Copy link
Copy Markdown

🚀 Deploy Preview PR Created/Updated

A deploy preview has been created/updated for this PR.

Deploy PR: https://github.com/OpenHands/deploy/pull/4289
Automation SHA: d22406b3cafbb647fbe1f61208bf3e941ca2b2ba
Last updated: May 14, 2026, 03:31:03 PM ET

Once the deploy PR's CI passes, the automation service will be deployed to the feature environment.

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