sos-portal-components-react 0.2.3 → 0.3.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.0 - 2026-11-08
6
+
7
+ - Export shared device-assistance preferences through an independent SOS entry,
8
+ delegating its controlled web renderer to Antifraud 0.3.0. Keep runtime,
9
+ capability detection, storage and authorization in the owning application.
10
+ Native preferences rendering is not implemented by this release.
11
+ - Typecheck, build and the independent export smoke pass. Cross-application
12
+ phone-authenticated browser checks belong to the CH acceptance evidence.
13
+ - List the three implemented runtime exports separately from the acceptance
14
+ catalogue. Base shell/profile/card extraction from the existing domain
15
+ package remains pending; controller administration has a separate owner.
16
+
17
+ - Specify shared subject-control placement, semantic option/action colours,
18
+ account-menu versus subject-device grants, appearance namespace parity and
19
+ separate model enablement/availability/preparation states in the existing
20
+ Tuskr cases. These are acceptance requirements, not new runtime readiness.
21
+
22
+ - Correct the shared acceptance guides to use the selected simulated-phone
23
+ tests without mailbox access. Treat current email-only Organization/employee
24
+ contracts as an implementation gap; preserve official-source verification,
25
+ independent profile authority and existing GW/DID behavior.
26
+
27
+ - Replace the dated developer handoff with numbered, README-linked guides for
28
+ generic portal modes/authentication and detailed cross-portal Tuskr cases.
29
+ Preserve the existing `SOS-PORTAL-001`–`029` and specialist research IDs.
30
+ - Distinguish public Demo real-email account login from fixed Firebase test
31
+ phone fixtures, BFF-owned Demo persistence from Test Network authority/GW
32
+ lifecycle, and dedicated RTC media from Communication history and assistants.
33
+ - Document positive/negative Personal ↔ Professional journeys, both-side
34
+ readback, profile/relationship revocation, sector variants and evidence
35
+ boundaries without claiming unexecuted gates have passed.
36
+ - Specify dependency-by-case progression: BFF/memory Demo first, independent
37
+ terminology-cache and RTC additions, and memory-GW -> local Fabric ->
38
+ online Test Network acceptance for network cases. Retain green evidence and
39
+ rerun only failed/affected gates while closing the cumulative release set.
40
+
5
41
  ## 0.2.3 - 2026-11-07
6
42
 
7
43
  - Render caller-cancelled Communications as `Cancelled`/`Cancelada` rather
package/README.md CHANGED
@@ -1,9 +1,30 @@
1
1
  # SOS Portal Components React
2
2
 
3
+ ## Numbered engineering guides
4
+
5
+ 1. [00 — Documentation index](docs/00-INDEX.md)
6
+ 2. [01 — Portal modes, authentication and authority](docs/01-PORTAL_MODES_AND_AUTH.md)
7
+ 3. [02 — Cross-portal Tuskr cases](docs/02-CROSS_PORTAL_TUSKR_CASES.md)
8
+
9
+ Read these with the owning CH application's README for runnable commands and
10
+ flavour configuration. The cases below retain their stable IDs; the numbered
11
+ guides supply cross-portal steps, expected results and negative checks.
12
+
13
+ Start dependencies by use case: local Demo UI/BFF uses the memory vault and
14
+ no GW; clinical coding/cache cases add Terminology through its SDK, and call
15
+ cases add LiveKit independently. Network cases progress from GW memory/test
16
+ to local Fabric, then the chosen online `dev:staging` Test Network flavours.
17
+ Demo stays BFF-only throughout. See the
18
+ [dependency table](docs/01-PORTAL_MODES_AND_AUTH.md#11-start-dependencies-for-the-case-being-tested).
19
+ Rerun the smallest failed/affected gate while retaining valid green evidence;
20
+ release closure still requires every affected boundary.
21
+
3
22
  ## Runtime parity
4
23
 
5
- These components render the same use-case state in Demo, Test Network, web and
6
- Expo. They never select storage. Owning applications inject memory for
24
+ Components share use-case state between Demo and Test Network. Native support
25
+ is export-specific: conversation uses the React Native/Web adapter; the device
26
+ preferences renderer currently uses web DOM. A native preferences renderer
27
+ remains future work. Components never select storage. Applications inject memory for
7
28
  all-local, Expo SQLite for native, or an explicit durable adapter. Firestore
8
29
  must not create a Demo-only component or data model.
9
30
 
@@ -18,8 +39,11 @@ health, animal care, public safety, emergency response and other configured
18
39
  sectors. The package exists to prevent each sector flavour from reimplementing
19
40
  the same shell, access journey, card navigation and governed subject workflows.
20
41
 
21
- The current repository and Demo-boundary handoff is summarized in
22
- [`docs/DEVELOPER_UPDATE_2026-11-06.md`](docs/DEVELOPER_UPDATE_2026-11-06.md).
42
+ Public Demo authenticates a real email account and uses BFF-validated synthetic
43
+ profiles. Fixed Firebase test-phone codes belong only to tests in ignored
44
+ configuration, never public Demo access. Demo business state stays behind the
45
+ BFF Confidential Storage boundary; Test Network separately proves the complete
46
+ organization/employee/subject lifecycle through its real authority and GW.
23
47
 
24
48
  The first implementation of a workflow may be proven in the animal-care
25
49
  portals. That does not make every future human-health consumer depend
@@ -50,6 +74,32 @@ revalidated by the BFF/Gateway.
50
74
 
51
75
  ## Implemented exports
52
76
 
77
+ This is the current runtime inventory, not completion of the whole catalogue:
78
+
79
+ | Export | Owner / responsibility |
80
+ | --- | --- |
81
+ | `SubjectConversationChat` | SOS projection of authorized subject Communications into the neutral Antifraud conversation renderer. |
82
+ | `createLiveKitRealtimeCallClient` | Host-configured RTC client adapter; the BFF retains authorization, credentials and Communication persistence. |
83
+ | `DeviceAssistancePreferences` | Reexport of Antifraud's controlled web preferences renderer. |
84
+
85
+ The complete base-UI extraction is still pending. `PortalHeader`,
86
+ `PortalSettingsPanel`, profile protection, subject/card navigation and several
87
+ contact, permission and clinical controls remain in
88
+ `uhc-portal-components-react`; application composition also remains in the
89
+ owning portals. Research stays there pending its future owner. The catalogue
90
+ below is acceptance scope and must not be read as an implemented export list.
91
+ Controller administration is owned separately by
92
+ `antifraud-hosting-components-react`.
93
+
94
+ - `sos-portal-components-react/device-assistance-preferences` reexports the
95
+ controlled `DeviceAssistancePreferences` owned by the neutral Antifraud
96
+ package. Import `antifraud-portal-components-react/device-assistance-preferences.css`
97
+ once in the application shell. It separates consent, runtime availability
98
+ and explicit preparation; hosts supply localized labels, storage and runtime
99
+ adapters. Rendering/toggling does not prepare a model or grant subject access.
100
+ Use this independent entry on account pages to avoid loading conversation
101
+ and RTC modules. Do not fork another device preferences panel per flavour.
102
+
53
103
  - `sos-portal-components-react/subject-conversation-chat` provides the
54
104
  canonical React Native/Web adapter for an already-authorized subject
55
105
  conversation. It projects the stable SOS entry model into the neutral
@@ -68,6 +118,11 @@ executed for every applicable flavour, actor, viewport and environment. Demo
68
118
  uses synthetic state and must say so; Test Network and Production must use
69
119
  their real authorized BFF path.
70
120
 
121
+ Use [02 — Cross-portal Tuskr cases](docs/02-CROSS_PORTAL_TUSKR_CASES.md)
122
+ for Personal ↔ Professional prerequisites, numbered actions, both-side
123
+ readback, rejected access, reset/revocation and execution evidence. A documented
124
+ case is an acceptance target, not an end-to-end pass claim.
125
+
71
126
  | ID | Area | Governed journey and acceptance target |
72
127
  |---|---|---|
73
128
  | SOS-PORTAL-001 | Shell | Render the shared top bar, brand slot, account/profile menu, current subject and responsive navigation without flavour-specific forks. |
@@ -95,7 +150,7 @@ their real authorized BFF path.
95
150
  | SOS-PORTAL-023 | Provider directory | Select authorized card/index, clinical, appointment or emergency providers from host-supplied directories without hard-coded flavour endpoints. |
96
151
  | SOS-PORTAL-024 | Accessibility | Complete every shared journey by keyboard and screen reader with visible focus, labelled controls, status announcements and responsive layouts. |
97
152
  | SOS-PORTAL-025 | Expo reuse | Render platform-neutral contracts in Expo Android/iOS adapters and web adapters while retaining one message/card/action model and host-owned native capabilities. |
98
- | SOS-PORTAL-026 | Preferences | Apply light/dark/system appearance, text size, locale and accessibility preferences before and after sign-in without changing authorization. |
153
+ | SOS-PORTAL-026 | Preferences | Reuse one device/account Preferences surface across modes: appearance, text size, locale, accessibility and actual speech/language-model enablement/availability/preparation, with explicit disabled states and no implied subject authorization. |
99
154
  | SOS-PORTAL-027 | Failure safety | Fail closed on missing capabilities, expired sessions, invalid attachments, unavailable providers or rejected persistence and preserve an actionable, non-sensitive error. |
100
155
  | SOS-PORTAL-028 | Controller embedding | In CH Management, embed the published Antifraud controller components for groups, departments, workforce and memberships until controller access is removed from branded professional portals. |
101
156
  | SOS-PORTAL-029 | Conversation threads | Open the individual card's root channel and authorized child threads for members, related entities or emergency contacts; each thread keeps stable subject/relationship/participant identifiers, and contact status alone grants no message access. |
@@ -0,0 +1,2 @@
1
+ export { DeviceAssistancePreferences, type DeviceAssistanceFeature, type DeviceAssistancePreferencesProps } from 'antifraud-portal-components-react/device-assistance-preferences';
2
+ //# sourceMappingURL=DeviceAssistancePreferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceAssistancePreferences.d.ts","sourceRoot":"","sources":["../src/DeviceAssistancePreferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,KAAK,uBAAuB,EAAE,KAAK,gCAAgC,EAAC,MAAM,iEAAiE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { DeviceAssistancePreferences } from 'antifraud-portal-components-react/device-assistance-preferences';
2
+ //# sourceMappingURL=DeviceAssistancePreferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceAssistancePreferences.js","sourceRoot":"","sources":["../src/DeviceAssistancePreferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAsE,MAAM,iEAAiE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './SubjectConversationChat.js';
2
+ export * from './DeviceAssistancePreferences.js';
2
3
  export * from './LiveKitRealtimeCallClient.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './SubjectConversationChat.js';
2
+ export * from './DeviceAssistancePreferences.js';
2
3
  export * from './LiveKitRealtimeCallClient.js';
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA"}
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "sos-portal-components-react",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Shared portal UI for base components",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
+ "./device-assistance-preferences": {
11
+ "types": "./dist/DeviceAssistancePreferences.d.ts",
12
+ "default": "./dist/DeviceAssistancePreferences.js"
13
+ },
10
14
  ".": {
11
15
  "types": "./dist/index.d.ts",
12
16
  "default": "./dist/index.js"
@@ -67,7 +71,7 @@
67
71
  }
68
72
  },
69
73
  "dependencies": {
70
- "antifraud-portal-components-react": "0.2.2",
74
+ "antifraud-portal-components-react": "0.3.0",
71
75
  "sos-data-utils-ts": "0.6.29"
72
76
  },
73
77
  "devDependencies": {