Skip to content

Push notifications, iPhone app 1.1.0 (Time tab), App Store resubmission package, deploy log - #644

Merged
techmore merged 20 commits into
mainfrom
feat/time-scheduling-pay
Nov 6, 2026
Merged

techmore merged 20 commits into
mainfrom
feat/time-scheduling-pay

Conversation

@techmore

@techmore techmore commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Summary

Third time & pay PR (on top of #640 and #642).

  • Push notifications: PushNotifier delivers every TimeNotifier event to APNs (token auth, apnotic) and Web Push (VAPID, web-push); configured by APNS_* / VAPID_* keys (documented in docs/ops/environment-reference.md), a no-op until set. POST/DELETE /native/push_devices for the iPhone app, /employee/push_subscriptions for the installed web app, per-person choices at /employee/notifications/settings. Rejected tokens disable the device, never delete it.
  • iPhone app 1.1.0 (ios/): Time is the first tab, Search leaves the tab bar (5 tabs), soft-ask then system prompt for notifications, APNs token posted with the session, notification taps open the payload URL in the Time tab, "Clock in" Home Screen quick action, path configuration for the time forms, ios/RupertApp/ xcodegen project for Simulator runs and UI tests (TimeFlowsUITests), DEBUG-only RUPERT_DEV_ORIGIN.
  • App Store package (ios/AppStore/): one-page checklist with only "Submit for Review" left to the owner, review notes with the time flows and demo worker, listing "what's new", privacy answers, Sign in with Apple assessment (not required: business-created accounts; recorded in DECISIONS.md), demo workspace task now seeds a worker with PIN, punches with meals, posted shifts, time off, tips and a submitted timesheet, screenshots regenerated.
  • Account deletion also removes push devices and clears the clock PIN; employee accounts can delete themselves from the app (5.1.1(v)).
  • web/bin/check-a11y (axe via Playwright) and config/locales/es.yml; DEPLOYS.md records the two production deploys and the live smoke test.

Test plan

  • Rails: push notifier (WebMock), push devices, notification settings, worker locale, native app, demo task, employee workspace/pay/pin clock → green locally; full suite in CI.
  • Swift: xcodebuild test -scheme Rupert in the iPhone 18 Pro Simulator (17 tests).

🤖 Generated with Claude Code

techmore and others added 20 commits November 6, 2026 08:03
…publishing, trades, tip ledger, pay-period locks, push devices, per-store time rules

Additive migrations only. Docs: docs/time-and-pay/ARCHITECTURE.md, DECISIONS.md, DESIGN.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…locale switching

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…per-person notification choices

PushNotifier (apnotic token auth, web-push VAPID) behind boot-time env keys; the bell alone carries
messages until they are set. /native/push_devices for the iPhone app, /employee/push_subscriptions
and a push handler in the staff service worker, /employee/notifications/settings. Account deletion
now drops push devices and the clock PIN, and employee-role accounts can reach it (App Store 5.1.1(v)).
Native path configuration opens time & pay forms as sheets.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…notification deep links, Xcode project for the Simulator

Time replaces Search in the tab bar (five tabs); Clock in quick action. PushRegistration asks once
after sign-in, posts the APNs token to Rupert, forgets it on sign-out and opens a tapped
notification's page in the Time tab. RUPERT_DEV_ORIGIN (debug only) points the app at a local
Rupert. ios/RupertApp (xcodegen) builds the same sources into a runnable app with a UI test that
signs in, walks the Time pages and saves screenshots. The employee and POS layouts now carry the
rupert-session meta tag the app watches, so a sign-in on the Time tab restarts every tab. Demo
workspace gains a worker (PIN 2580), punches, shifts, time off, tips and a submitted timesheet;
App Store screenshots regenerated with the Time tab; checklist rewritten for 1.1.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Review notes with the manager and worker logins and the Time flows, listing text for 1.1.0,
checklist with every owner click. config/locales/es.yml (dates, numbers, common errors) and a
test that a worker's staff record, not the request, picks the language. bin/check-a11y runs
axe-core over the staff pages at phone width in light and dark. mobile/README.md says where push
arrives. DECISIONS.md records the App Store calls (Time tab, soft ask, platform-level keys,
Sign in with Apple not required, account deletion for staff).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts:
#	docs/time-and-pay/DECISIONS.md
#	docs/time-and-pay/DESIGN.md
#	web/app/controllers/application_controller.rb
#	web/app/models/clock_break.rb
#	web/app/models/pay_period.rb
#	web/app/models/time_rules.rb
#	web/app/models/tip_allocation.rb
#	web/app/modules/people/employee.rb
#	web/app/services/push_notifier.rb
#	web/app/views/employee_app/devices.html.erb
#	web/db/schema.rb
…; strip a leftover marker in DECISIONS.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… tenant-scoped push device cleanup

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e app; page help under the content

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… critical)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d dark) on the merged UI

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…reenshots regenerated

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…; UI test scrolls to it

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e on-screen pills

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…calendar cells carry data-date for tests

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@techmore
techmore merged commit 0cb2020 into main Nov 6, 2026
9 checks passed
@techmore
techmore deleted the feat/time-scheduling-pay branch November 6, 2026 15:43
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.

1 participant