spec(v0.2.0): photo OCR + last-fillup card design - #18
Merged
Conversation
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>
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>
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>
varunpan
enabled auto-merge (squash)
May 9, 2026 20:59
varunpan
added a commit
that referenced
this pull request
May 9, 2026
Brainstorm specs and implementation plans are working artifacts for the build process — not user-facing documentation. They lived under docs/superpowers/ and got picked up by every PR. Moving them out of git keeps the repo focused on shippable code + end-user docs. Removes from tracking: - docs/superpowers/plans/2026-05-07-quicklogger-implementation.md (v0.1.0 implementation plan, no longer needed) - docs/superpowers/specs/2026-05-07-quicklogger-design.md (v0.1.0 design, superseded by the shipped product) - docs/superpowers/specs/2026-05-09-photo-ocr-and-last-fillup-design.md (v0.2.0 design, just landed via PR #18 — moving out of repo before any other contributor sees it) Files stay on local disk (git rm --cached, not git rm). Future specs/plans live there locally and never get committed thanks to the .gitignore entry. Note: prior commits in git history still contain the artifacts. Acceptable per existing project policy on history retention. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
varunpan
added a commit
that referenced
this pull request
Jun 11, 2026
The per-provider guard was 'typeof rate !== "number"', but typeof NaN is 'number', so a provider returning NaN (or 0, or a negative) passed, got cached, and yielded cost * NaN / 0 / negative. Tightened all three branches to Number.isFinite(rate) && rate > 0, so a bad rate is a provider failure and the chain falls through. Also removed the withTimeout() wrapper: it built an AbortController whose signal was never wired to anything, so it was a no-op around the frankfurter fetch. The real timeout is AbortSignal.timeout(TIMEOUT_MS), already on every provider fetch; the frankfurter call now uses it directly. Refs review #2, #18.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Design doc for the v0.2.0 feature pair brainstormed 2026-05-09. No code, doc only.
Captures the full design for:
Constraints honored:
Implementation plan to follow in a separate session via the writing-plans skill.
Test plan