Summary
interlinedlist.com ships a full AI Writing Assistance pillar (help: /help/ai-writing-assistance, API: /help/api/ai-integration). The Windows app implements none of it — there is no InterlinedApiClient.Ai.cs, no AI models, and no AI affordance in any view.
This is the single largest feature-parity gap, and it is fully unblocked: three endpoints, complete public documentation, and bearer-token auth.
Live verification (2026-09-15, test account)
GET /api/ai/status -> 200
{"subscriber":true,"providers":["anthropic"],
"defaultModels":{"anthropic":"claude-sonnet-5", ...},
"quota":{"usedToday":0,"dailyLimit":50,"remaining":50}}
Bearer sync-token is accepted on all three AI routes. No per-user provider key exists any more (removed 2026-09-05) — access is gated on an active subscription alone.
The API contract
| Method |
Path |
Notes |
POST |
/api/ai/suggest |
Runs a feature, returns a validated preview artifact. Writes nothing. Subscriber only. |
POST |
/api/ai/generate |
Persists a confirmed artifact from /suggest. Subscriber only. |
GET |
/api/ai/status |
Providers configured, caller's subscriber flag, daily quota. Any authenticated user. |
Five feature values: powered_template, powered_document, message_series, article_series, writing_assist.
Two-step flow is mandatory: /suggest → show preview → user confirms → /generate. Both steps count against the 50/day quota.
Scope of this epic
The sub-issues cover the service layer, quota/gating UX, and each of the five features as a distinct user-facing surface.
Out of scope
Nothing — every part of this pillar is documented and bearer-reachable.
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
interlinedlist.comships a full AI Writing Assistance pillar (help:/help/ai-writing-assistance, API:/help/api/ai-integration). The Windows app implements none of it — there is noInterlinedApiClient.Ai.cs, no AI models, and no AI affordance in any view.This is the single largest feature-parity gap, and it is fully unblocked: three endpoints, complete public documentation, and bearer-token auth.
Live verification (2026-09-15, test account)
Bearer sync-token is accepted on all three AI routes. No per-user provider key exists any more (removed 2026-09-05) — access is gated on an active subscription alone.
The API contract
POST/api/ai/suggestPOST/api/ai/generate/suggest. Subscriber only.GET/api/ai/statusFive
featurevalues:powered_template,powered_document,message_series,article_series,writing_assist.Two-step flow is mandatory:
/suggest→ show preview → user confirms →/generate. Both steps count against the 50/day quota.Scope of this epic
The sub-issues cover the service layer, quota/gating UX, and each of the five features as a distinct user-facing surface.
Out of scope
Nothing — every part of this pillar is documented and bearer-reachable.
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.