Skip to content

fix: resolve Obsidian marketplace review findings - #324

Merged
chhoumann merged 1 commit into
masterfrom
fix/marketplace-review-findings
Aug 23, 2026
Merged

fix: resolve Obsidian marketplace review findings#324
chhoumann merged 1 commit into
masterfrom
fix/marketplace-review-findings

Conversation

@chhoumann

Copy link
Copy Markdown
Owner

Resolve the automated marketplace review failures for PodNotes 2.20.2 by adopting the supported Obsidian APIs directly instead of preserving compatibility shims for older hosts.

This removes vault-wide note enumeration in favor of inspecting only the expected folder, migrates settings to the declarative and searchable settings API, replaces deprecated DOM/settings/deletion APIs, removes unnecessary assertions, and normalizes promise rejection reasons through one shared helper. Episode downloads now use the bounded binary-append path guaranteed by the new compatibility floor.

manifest.json now requires Obsidian 1.13.0. Published versions.json history is intentionally unchanged. Clipboard access also remains intentional because the user-invoked universal-link command copies its result to the clipboard.

Verification completed:

  • exact Obsidian marketplace ESLint rules
  • npm run lint
  • npm run format:check
  • npm run typecheck
  • npm run build
  • npm run test -- --run - 1,152 tests across 78 files
  • uv run --with-requirements docs/requirements.txt mkdocs build -f docs/mkdocs.yml -d site
  • real Obsidian 1.13.7 runtime - 19 E2E tests, including settings search/export/import, ranged downloads and Local Files rendering, renamed-note discovery, clipboard sharing, and async rejection normalization
  • final runtime read-back reported no notices or captured errors

Focused review areas are the declarative settings render lifecycle and the raised minimum Obsidian version that lets the download path rely on appendBinary without a fallback.

Adopt the Obsidian 1.13 APIs directly, remove vault-wide note enumeration, modernize settings and deletion behavior, and normalize async errors.

Add live Obsidian coverage for settings transfer, streamed downloads, scoped note lookup, clipboard sharing, and rejection handling.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1c6e068
Status: ✅  Deploy successful!
Preview URL: https://da2a256a.podnotes.pages.dev
Branch Preview URL: https://fix-marketplace-review-findi.podnotes.pages.dev

View logs

@chhoumann
chhoumann marked this pull request as ready for review August 23, 2026 08:31
@chhoumann
chhoumann merged commit 9f2ea64 into master Aug 23, 2026
6 checks passed
@chhoumann
chhoumann deleted the fix/marketplace-review-findings branch August 23, 2026 08:34

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1c6e068c6c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/downloadEpisode.ts
Comment on lines +186 to +187
} catch (error) {
throw downloadRequestError(error);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve probe validation errors

When the initial response exceeds the 2 GiB limit or advertises an oversized total, probeAndFetchFirstChunk intentionally throws a descriptive Error, but this catch passes it to downloadRequestError, which replaces every non-NetworkError with the generic “Failed to download episode.” Users therefore lose the actionable size-limit explanation that this path previously surfaced; preserve existing Error instances or only translate actual network failures.

Useful? React with 👍 / 👎.

Comment on lines +91 to +92
"Import preferences",
"Export preferences",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the displayed setting names to the search index

Because the tab exposes one declarative definition, Obsidian can search only its name and this alias list rather than the Setting controls created inside render. These aliases say “Import preferences” and “Export preferences,” while the displayed controls are named “Import settings” and “Export settings,” and “Include API keys” is omitted entirely, so searching for those visible labels produces no PodNotes result. Index every displayed control name, including these three.

Useful? React with 👍 / 👎.

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