Summary
Connected Accounts and compose-time cross-post toggles work. The remaining gap is LinkedIn per-destination targeting — which CLAUDE.md still records as blocked.
Status correction
CLAUDE.md lists "LinkedIn per-page posting targets" as not built and once recorded /api/linkedin/targets as 401-walled. Live, 2026-09-15:
GET /api/linkedin/targets -> 200 {"targets":[]}
Bearer-reachable; empty because the test account has no LinkedIn pages. Buildable against the empty state.
Unimplemented endpoints
| Method |
Path |
GET |
/api/linkedin/targets |
GET/PUT |
/api/linkedin/posting-targets |
POST |
/api/linkedin/sync-pages |
POST |
/api/user/identities/verify |
POST |
/api/auth/{provider}/link |
Compose fields not sent
POST /api/messages accepts linkedInTargets[] ({kind:"personal"} or {kind:"orgPage", pageId}), the superseded singular linkedInTarget, and linkedInLinkAsFirstComment. PostMessageAsync sends only the crossPostToLinkedIn boolean.
Repo conventions to follow
- Service: one
partial class InterlinedApiClient file per domain in InterlinedList/Services/.
- Wire types in
InterlinedList/Models/ matching real API JSON.
- ViewModel per view in
InterlinedList/ViewModels/ (CommunityToolkit.Mvvm ObservableObject + [RelayCommand]).
- View is a self-contained
UserControl in InterlinedList/Views/ that news up its own VM from AppServices.Session.
- Strata tokens only — no colors/fonts/radii outside
Resources/Palette.xaml + Theme.*.xaml.
- Read-after-write for any mutating endpoint whose response envelope has not been live-verified.
Summary
Connected Accounts and compose-time cross-post toggles work. The remaining gap is LinkedIn per-destination targeting — which
CLAUDE.mdstill records as blocked.Status correction
CLAUDE.mdlists "LinkedIn per-page posting targets" as not built and once recorded/api/linkedin/targetsas 401-walled. Live, 2026-09-15:Bearer-reachable; empty because the test account has no LinkedIn pages. Buildable against the empty state.
Unimplemented endpoints
GET/api/linkedin/targetsGET/PUT/api/linkedin/posting-targetsPOST/api/linkedin/sync-pagesPOST/api/user/identities/verifyPOST/api/auth/{provider}/linkCompose fields not sent
POST /api/messagesacceptslinkedInTargets[]({kind:"personal"}or{kind:"orgPage", pageId}), the superseded singularlinkedInTarget, andlinkedInLinkAsFirstComment.PostMessageAsyncsends only thecrossPostToLinkedInboolean.Repo conventions to follow
partial class InterlinedApiClientfile per domain inInterlinedList/Services/.InterlinedList/Models/matching real API JSON.InterlinedList/ViewModels/(CommunityToolkit.MvvmObservableObject+[RelayCommand]).UserControlinInterlinedList/Views/that news up its own VM fromAppServices.Session.Resources/Palette.xaml+Theme.*.xaml.