Web: show the time and time zone of payer-transfer response deadlines
Maintainers usually reply within 1 day
@Hrushikesh-ramilla is already working on this.
Since Nov 1, 2026.
- #787 by @Hrushikesh-ramilla — open
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- react, typescript
- Domain
- frontend
Research direction
The date formatter is in web/src/PayerTransferInbox.tsx around line 23, and the Respond by label is rendered near line 230. Start by reading how the earlier of consentExpiresAtEpoch and effectiveFrom is chosen, then add a deterministic time and zone display. Run npm --prefix web test -- src/tests/PayerTransferPagination.test.tsx and the web typecheck; done means the consent-earlier and renewal-earlier cases render distinguishable labels. Linked PR #787 is already open against this, so check it before starting.
Written by the indexing model from the issue text.
Description
The problem
The payer-transfer inbox shows Respond by [date], but invitations expire at a specific timestamp. The date-only label cannot distinguish a morning deadline from an evening deadline, leaving users unsure how long they have to respond.
Show the response deadline's time of day and time zone as well as its date. This is a presentation enhancement; the existing expiration rules should remain unchanged.
Evidence
Verified on clean main 3a77d68cf55a51da33d624203b41c1878dce8a7e with a temporary component test:
- Render two synthetic, actionable incoming transfers with consent deadlines
2035-01-02T09:00:00Zand2035-01-02T17:00:00Z, and renewal boundaries later than both deadlines. - Read their Respond by labels.
- Both labels contain identical text despite the eight-hour difference. Neither includes the time.
The component currently formats the earlier of consentExpiresAtEpoch and effectiveFrom with toLocaleDateString("en-GB").
Ran the probe with the existing pagination test: 2 passed using npm --prefix web test -- src/__tests__/PayerTransferPagination.test.tsx. The temporary probe was removed afterwards. Environment: macOS arm64, Node v24.15.0, Vitest 5.0.5 / happy-dom 21.0.4. API responses were mocked; no live invitation or billing operation was exercised.
Acceptance criteria
- The Respond by label includes a human-readable date, time of day and explicit time-zone indication. Use a consistent, documented display choice (for example the browser's local zone, or explicitly labelled UTC).
- Continue displaying the earlier of the consent expiry and renewal boundary. Do not change the underlying epoch values, expiry timer or action-availability rules.
- Two different deadline times on the same day produce distinguishable labels.
- Add deterministic component coverage for consent expiry being earlier and for renewal being earlier. Avoid relying on the developer machine's time zone when asserting expected output.
- Preserve existing expired-invitation behaviour and tests. Keep this change scoped to the response deadline, rather than changing every date or billing label in the application.
- Run the relevant payer-transfer tests and web typecheck.
Starting points
- Current date formatter
- Response deadline rendering
- Existing synthetic transfer fixture and mocked clock
Checked open and closed issues and open PRs. #636 covers automatic expiry updates and #696 / PR #698 covers the wording after expiration. This task improves the deadline shown before expiration; it does not alter either behaviour.
Where this lives
- Web client
Suitable for a first contribution: a small date-formatting change with existing component-test fixtures. Follow CONTRIBUTING.md, use British English, and sign off commits with git commit -s.
- Dominant language
- Rust
- Stars
- 31
- Forks
- 42
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 142
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from getsotto/sotto
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
enhancement good first issue help wanted
Difficulty 2/5 Half a day Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
good first issue help wanted test-coverage
Difficulty 2/5 3-5 days Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
documentation good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug CLI
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
HigherOrderCO/Bend#2120 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
KNXBench-Labs/KNXBench#47 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
software-mansion/pathfinder#3620 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day