Start means start
A subscriber who presses a course cover's Start wants to start. Before 2026-09-27 it went wrong in three ways:
- Start opened the central, read-only entry point, and an
Edu/Moduledoes not redirect into the copy. - The install sat behind Get, then a dialog, then Get again.
- The finished dialog's Start Course → sent the learner back to the central page.
What the cover plans (PluginLayoutAreas.CoverCtaButtons)
| Viewer | Start |
|---|---|
| Not entitled | unchanged. The funnel's Subscribe / coupon / contact-sales button. |
| Entitled, no copy yet (installable, not free) | an install action: OpensInstallDialog, OpenAtMode = CoverContract.AutoStartMode, empty Href (an install action never carries a link). |
| Entitled, installed | a link to the entry point in the viewer's copy: InstallDialog.OwnEntryHref. It uses Localizer.TileOpenPath with the recorded install target and coverage, so a custom target is honoured. It falls back to the central entry point when there is no copy to rebase onto. |
Get stays as the way to choose a custom location. Resume, the two-button cap and the install
step's exemption from folding are unchanged. The Start action has its own area key
(install:"auto-start"), so a delayed click is never retargeted onto Get or Repair
(see Cover action identity).
What the dialog does in auto-start mode (InstallDialog.Open)
- Before painting:
StartsAtOnce(openAt, installed)is true only for auto-start without a copy. The status is set toinstallingbefore the dialog paints, so the destination picker never appears.RunFreshInstallthen runs into the seeded default target{viewer}/{packageId}: dependencies first, then the package. - On the terminal
done:status:AutoOpenHref(...)returns the entry point in the landed copy. The dialog rendersControls.Redirectto it, which is the framework's navigation from data, as Edu's Exercise and Lesson redirects use it. - Errors: they keep the message and Close on screen. No redirect happens.
After any finished install, the dialog's Start Course → also uses OwnEntryHref. For a repair,
that is the recorded install location.
Tests
PluginCoverTests.CoverCta_EntitledGetsStartPresentationInstallCoverCta_InstalledStartOpensTheViewersOwnCopyInstallDialogTests.GoIn_OpensTheEntryPointInTheViewersOwnCopyAutoStart_InstallsAtOnce_AndOpensTheCopyWhenDone