Skip to content

feat(settings): one-tap Siri shortcut install via iCloud share link - #13

Merged
varunpan merged 1 commit into
mainfrom
feat/settings-siri-shortcut-link
May 8, 2026
Merged

feat(settings): one-tap Siri shortcut install via iCloud share link#13
varunpan merged 1 commit into
mainfrom
feat/settings-siri-shortcut-link

Conversation

@varunpan

@varunpan varunpan commented May 8, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a Siri shortcut card to the Settings page where you paste an iCloud share link (the kind you get from Shortcuts app → Share → Copy iCloud Link). Once stored, the card renders an Install Siri Shortcut on this iPhone button that opens Apple Shortcuts with an "Add Shortcut" prompt.

  • New siriShortcutUrl: string | null on the Prefs interface, default null. localStorage only — zero server config.
  • URL validation: must look like https://www.icloud.com/shortcuts/<id> before the install button shows. Mistyped URLs surface a friendly amber warning.
  • Settings page card has a help blurb pointing at docs/shortcuts.md for the build steps.
  • docs/shortcuts.md gains a "Two ways to install" section and a "Sharing a shortcut with fork users" subsection covering the placeholder-host pattern (publish with YOUR-QUICKLOGGER-HOST, installers edit once after install).

This is additive — no breaking changes to existing pages or APIs.

Test plan

  • npm run lint clean (after adding the eslint-disable for the typed-routes rule on the external href)
  • npm run check 0 errors (6 pre-existing warnings)
  • npm test 60/60 passing
  • npm run build succeeds
  • CI green
  • iPhone manual: Settings → paste iCloud URL → button appears → tap → Shortcuts opens with Add prompt

Adds a "Siri shortcut" card to the Settings page where the user
pastes their published iCloud share URL. Once stored, the card
renders an "Install Siri Shortcut on this iPhone" button that
opens Apple Shortcuts with an "Add Shortcut" prompt.

The URL lives in localStorage (under the existing prefs object,
new `siriShortcutUrl: string | null` field) — purely client-side,
zero server config, no env var. Validates that the URL points at
icloud.com/shortcuts/ before showing the install button.

Pairs with docs/shortcuts.md updates documenting both install
paths (build from scratch vs install via iCloud) and a
"sharing with fork users" note recommending the user replace
their host with a `YOUR-QUICKLOGGER-HOST` placeholder before
publishing the iCloud link, so installers do a one-time edit
instead of inheriting the publisher's homelab URL.

No new server endpoints, no breaking changes, additive only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@varunpan
varunpan enabled auto-merge (squash) May 8, 2026 23:05
@varunpan
varunpan merged commit c3badbe into main May 8, 2026
1 check passed
varunpan added a commit that referenced this pull request May 9, 2026
PR #13 added a Settings card where the user pasted an iCloud share
URL and tapped to install. The framing implied "for future devices"
— but iCloud already auto-syncs Shortcuts across all Apple devices
on the same Apple ID, making the URL field redundant for the
single-user case.

The remaining real use case (sharing with a different Apple ID:
fork users, family) doesn't justify the in-app UI for a tool with
zero current fork users. Shifting that capability into docs only:
how to publish an iCloud link from Shortcuts and share with someone
who's not on your iCloud account.

Reverts:
- src/lib/client/prefs.ts — drop `siriShortcutUrl` field from Prefs
  + DEFAULT_PREFS
- src/routes/settings/+page.svelte — drop the entire "Siri shortcut"
  section, the saveShortcutUrl() / isLikelyValidIcloudUrl() helpers,
  and their imports

Updates:
- docs/shortcuts.md — replace the "Two ways to install" section
  (which referenced the now-removed Settings card) with a single
  "Sharing a shortcut with someone else" subsection covering the
  iCloud-link share flow with the placeholder-host trick. Mentions
  upfront that iCloud auto-syncs to your own devices so no manual
  step is needed for personal portability.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
varunpan added a commit that referenced this pull request May 9, 2026
* revert(settings): remove Siri shortcut iCloud-link card

PR #13 added a Settings card where the user pasted an iCloud share
URL and tapped to install. The framing implied "for future devices"
— but iCloud already auto-syncs Shortcuts across all Apple devices
on the same Apple ID, making the URL field redundant for the
single-user case.

The remaining real use case (sharing with a different Apple ID:
fork users, family) doesn't justify the in-app UI for a tool with
zero current fork users. Shifting that capability into docs only:
how to publish an iCloud link from Shortcuts and share with someone
who's not on your iCloud account.

Reverts:
- src/lib/client/prefs.ts — drop `siriShortcutUrl` field from Prefs
  + DEFAULT_PREFS
- src/routes/settings/+page.svelte — drop the entire "Siri shortcut"
  section, the saveShortcutUrl() / isLikelyValidIcloudUrl() helpers,
  and their imports

Updates:
- docs/shortcuts.md — replace the "Two ways to install" section
  (which referenced the now-removed Settings card) with a single
  "Sharing a shortcut with someone else" subsection covering the
  iCloud-link share flow with the placeholder-host trick. Mentions
  upfront that iCloud auto-syncs to your own devices so no manual
  step is needed for personal portability.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(shortcuts): honest framing for the iCloud links section

The "Re-publishing iCloud links" intro said the links were for
"future-you (or fork users) can install in one tap" — but iCloud
already auto-syncs to all your own Apple devices, so that's
misleading. The link is only useful for sharing across Apple IDs
(fork users, family).

Rewrites the intro to acknowledge iCloud auto-sync upfront and
re-scopes the table's purpose to cross-Apple-ID sharing only.
Adds a forward-pointer to the "Sharing a shortcut with someone
else" section near the top of the doc for the placeholder-host
trick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
varunpan added a commit that referenced this pull request May 9, 2026
* revert(settings): remove Siri shortcut iCloud-link card

PR #13 added a Settings card where the user pasted an iCloud share
URL and tapped to install. The framing implied "for future devices"
— but iCloud already auto-syncs Shortcuts across all Apple devices
on the same Apple ID, making the URL field redundant for the
single-user case.

The remaining real use case (sharing with a different Apple ID:
fork users, family) doesn't justify the in-app UI for a tool with
zero current fork users. Shifting that capability into docs only:
how to publish an iCloud link from Shortcuts and share with someone
who's not on your iCloud account.

Reverts:
- src/lib/client/prefs.ts — drop `siriShortcutUrl` field from Prefs
  + DEFAULT_PREFS
- src/routes/settings/+page.svelte — drop the entire "Siri shortcut"
  section, the saveShortcutUrl() / isLikelyValidIcloudUrl() helpers,
  and their imports

Updates:
- docs/shortcuts.md — replace the "Two ways to install" section
  (which referenced the now-removed Settings card) with a single
  "Sharing a shortcut with someone else" subsection covering the
  iCloud-link share flow with the placeholder-host trick. Mentions
  upfront that iCloud auto-syncs to your own devices so no manual
  step is needed for personal portability.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(shortcuts): honest framing for the iCloud links section

The "Re-publishing iCloud links" intro said the links were for
"future-you (or fork users) can install in one tap" — but iCloud
already auto-syncs to all your own Apple devices, so that's
misleading. The link is only useful for sharing across Apple IDs
(fork users, family).

Rewrites the intro to acknowledge iCloud auto-sync upfront and
re-scopes the table's purpose to cross-Apple-ID sharing only.
Adds a forward-pointer to the "Sharing a shortcut with someone
else" section near the top of the doc for the placeholder-host
trick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(readme): mark v0.1.2 stable instead of "early"

It's been daily-driven on the homelab through real fillups since
the v0.1.2 release with no regressions. The "early" label was
appropriate at v0.1.0 release; v0.1.2 has earned the stable label.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
varunpan added a commit that referenced this pull request May 9, 2026
* revert(settings): remove Siri shortcut iCloud-link card

PR #13 added a Settings card where the user pasted an iCloud share
URL and tapped to install. The framing implied "for future devices"
— but iCloud already auto-syncs Shortcuts across all Apple devices
on the same Apple ID, making the URL field redundant for the
single-user case.

The remaining real use case (sharing with a different Apple ID:
fork users, family) doesn't justify the in-app UI for a tool with
zero current fork users. Shifting that capability into docs only:
how to publish an iCloud link from Shortcuts and share with someone
who's not on your iCloud account.

Reverts:
- src/lib/client/prefs.ts — drop `siriShortcutUrl` field from Prefs
  + DEFAULT_PREFS
- src/routes/settings/+page.svelte — drop the entire "Siri shortcut"
  section, the saveShortcutUrl() / isLikelyValidIcloudUrl() helpers,
  and their imports

Updates:
- docs/shortcuts.md — replace the "Two ways to install" section
  (which referenced the now-removed Settings card) with a single
  "Sharing a shortcut with someone else" subsection covering the
  iCloud-link share flow with the placeholder-host trick. Mentions
  upfront that iCloud auto-syncs to your own devices so no manual
  step is needed for personal portability.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(shortcuts): honest framing for the iCloud links section

The "Re-publishing iCloud links" intro said the links were for
"future-you (or fork users) can install in one tap" — but iCloud
already auto-syncs to all your own Apple devices, so that's
misleading. The link is only useful for sharing across Apple IDs
(fork users, family).

Rewrites the intro to acknowledge iCloud auto-sync upfront and
re-scopes the table's purpose to cross-Apple-ID sharing only.
Adds a forward-pointer to the "Sharing a shortcut with someone
else" section near the top of the doc for the placeholder-host
trick.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(readme): mark v0.1.2 stable instead of "early"

It's been daily-driven on the homelab through real fillups since
the v0.1.2 release with no regressions. The "early" label was
appropriate at v0.1.0 release; v0.1.2 has earned the stable label.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* spec(v0.2.0): photo OCR (ollama + openrouter) + last-fillup card

Design doc for the v0.2.0 feature pair brainstormed 2026-05-09:
photo OCR for pump-display Volume + Cost extraction (optional,
env-gated, ollama-or-openrouter or chained), and a compact
last-fillup card on the form.

Captures: architecture, file layout (flat — no new dirs, follows
existing src/lib/server convention), data flow, error matrix,
security (incl. prompt injection mitigations), env vars (with
per-provider timeouts), audit log shape, frontend principles for
the eventual frontend-design pass, testing strategy, doc updates,
forward-compat for receipt OCR (v0.3.0), and a 4-phase build plan.

Zero new npm dependencies — Canvas API for client-side resize,
hand-written magic-byte sniff, hand-written schema validator,
in-memory rate limiter extending the existing TtlCache pattern.

Implementation plan happens in a new session via writing-plans.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@varunpan
varunpan deleted the feat/settings-siri-shortcut-link branch May 10, 2026 14:42
varunpan added a commit that referenced this pull request Jun 11, 2026
Review finding #13. .npmrc sets engine-strict=true but package.json had
no engines field for it to gate on, so the flag enforced nothing: npm ci
on an unsupported Node version proceeds silently and only fails later in
a confusing way (e.g. the `import ... with { type: 'json' }` in
vite.config.ts needs >=20.10). The project is firmly Node 22 (CI,
Dockerfile, README), so pin that contract and let engine-strict actually
reject an old runtime up front.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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