Skip to content

docs(shortcuts): honest framing for the iCloud links section - #16

Merged
varunpan merged 2 commits into
mainfrom
docs/shortcuts-icloud-section-honest
May 9, 2026
Merged

docs(shortcuts): honest framing for the iCloud links section#16
varunpan merged 2 commits into
mainfrom
docs/shortcuts-icloud-section-honest

Conversation

@varunpan

@varunpan varunpan commented May 9, 2026

Copy link
Copy Markdown
Owner

Drop the misleading 'install in one tap' framing from the Re-publishing iCloud links section — iCloud auto-syncs to your own devices, the link is only useful for sharing across Apple IDs. Rewrites the intro to say so and points at the existing 'Sharing a shortcut with someone else' walkthrough for the placeholder-host trick.

No code changes.

Test plan

  • grep sweep finds no remaining install-button / Settings-page-paste / one-click-install references in user-facing docs (the surviving 'one-tap' mentions are all about Home Screen launch, not shortcut install)
  • CI green

varunpan and others added 2 commits May 9, 2026 08:33
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>
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>
@varunpan
varunpan enabled auto-merge (squash) May 9, 2026 12:57
@varunpan
varunpan merged commit 1d7a080 into main May 9, 2026
1 check passed
@varunpan
varunpan deleted the docs/shortcuts-icloud-section-honest branch May 10, 2026 14:42
varunpan added a commit that referenced this pull request Jun 12, 2026
…ents

Root cause (review #16): LubeLoggerError catch arms across six API
routes returned upstream topology (endpoint path, upstream status,
200-char upstream body previews) in client responses, and every
generic catch arm returned the raw (err as Error).message — internal
information disclosure for what should be opaque server errors.

Client responses now carry only a generic human-readable message (the
UI toasts body.error verbatim, so it must stay meaningful). No detail
is lost: LubeLogger failures were already logged at the throw site
('lubelogger non-ok' warn with status + body), and the generic arms
now log the full exception at error level before returning.

Riding along: FxUnavailableError during a submit now maps to an
explicit 503 'enter a manual rate' instead of falling into the raw
500 arm — 5xx (not 4xx) keeps a queued offline replay 'queued' so it
retries once FX is obtainable again.
varunpan added a commit that referenced this pull request Jul 14, 2026
Root cause: the catch arm returned `(err as Error).message` verbatim.
For a LubeLoggerError that message embeds the upstream HTTP status and
a 200-char preview of the upstream response body — internal detail
leaking through an unauthenticated probe endpoint (residual of review
finding #16; the fuelup route was fixed then, healthz was missed).

Fix shape: the response carries a fixed generic 'upstream unreachable'
string, and the real error is logged server-side via locals.logger
(the hook binds a per-request child logger on every route, healthz
included — only the access-log line is silenced for this path). Same
"detail in logs, generic on the wire" posture every other route uses.

Tests: healthz test now injects locals; new case proves a secret string
in the upstream error body never appears in the 503 response while the
'healthz upstream check failed' warn does reach the logger.
Docs: idb-and-api.md healthz 503 row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168aC5Wm8eTbBDhmfZtNgXG
varunpan added a commit that referenced this pull request Jul 14, 2026
Root cause: the catch arm returned `(err as Error).message` verbatim.
For a LubeLoggerError that message embeds the upstream HTTP status and
a 200-char preview of the upstream response body — internal detail
leaking through an unauthenticated probe endpoint (residual of review
finding #16; the fuelup route was fixed then, healthz was missed).

Fix shape: the response carries a fixed generic 'upstream unreachable'
string, and the real error is logged server-side via locals.logger
(the hook binds a per-request child logger on every route, healthz
included — only the access-log line is silenced for this path). Same
"detail in logs, generic on the wire" posture every other route uses.

Tests: healthz test now injects locals; new case proves a secret string
in the upstream error body never appears in the 503 response while the
'healthz upstream check failed' warn does reach the logger.
Docs: idb-and-api.md healthz 503 row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168aC5Wm8eTbBDhmfZtNgXG
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