chore: untrack internal files and refresh post-publish docs (#15)

Clean up the repo now that the plugin and the extension are published. Gitignore and untrack .claude/ (Claude Code session and tooling files). Remove extension/SUBMISSION.md, the extension is already on the Chrome Web Store. Update the README to install from Community plugins, with manual install as the alternative, since the plugin is in the directory. Slim CLAUDE.md: drop the local brief references and the personal-first note, keep build, architecture, and gotchas. Drop the publishing section in the extension README that pointed to the removed guide.
This commit is contained in:
steffer 2026-06-15 13:43:16 +02:00 committed by GitHub
parent 32c207fc4b
commit ca508a7ade
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 14 additions and 113 deletions

View file

@ -1,17 +0,0 @@
## Status (2026-06-14)
**Branch:** feat/m2-capture-pipeline (off main; remote main = github.com/istefox/obsidian-bookmarker, public)
**Last commit:** 51f838e — feat(preview): candidate extraction, Microlink screenshot, cover picker (NOT pushed yet)
**Done:** M1/M2/M2.5 + hardening; EX1 extension; M3 (classifier + review modal + link-embed card);
prompt tuning; Note name field; preview images (extraction chain → Microlink synchronous screenshot
→ wsrv.nl proxy → cover picker in modal with candidate thumbnails + None + custom Cover URL).
Verified in TEST: Amazon now shows a real Microlink screenshot, proxied via wsrv.nl.
**Direction:** make it Raindrop-like. ADR-001 = thin extension + obsidian://bookmark, no backend.
**Roadmap (user-approved, queued):** 1) grid/cover dashboard view (ItemView with cover cards + filters
by tag/folder/domain/type) — the big "Raindrop feeling" item; 2) duplicate-URL detection (normalize URL,
warn if already saved); 3) type detection (article/video/image/doc) + favorites flag; 4) broken-link
checker (on-demand command) + import from Pocket/Raindrop HTML/CSV.
**Out of scope (needs backend):** full-text content search, web archive, AI search, collaboration/public/RSS.
**Open decisions:** confirm plugin id `obsidian-bookmarker` + minAppVersion 1.5.0 (brief §14).
**Notes:** card preview needs obsidian-link-embed installed (Settings → Preview has install button).
Settings: useImageProxy + enableScreenshotFallback (both default ON, new keys). Reload plugin after each
build copy into TEST. /humanize-en required on all commit messages (public repo).

View file

@ -1 +0,0 @@
npx tsc -noEmit -skipLibCheck

3
.gitignore vendored
View file

@ -14,3 +14,6 @@ data.json
# OS
.DS_Store
# Claude Code session/tooling files
.claude/

View file

@ -1,9 +1,9 @@
# CLAUDE.md
## What is this project
Obsidian Bookmarker a custom Obsidian plugin that captures web URLs as Markdown
Obsidian Bookmarker is a custom Obsidian plugin that captures web URLs as Markdown
bookmarks in the vault, with og:image preview, AI-proposed tags, and AI-proposed
destination subfolder. Personal-first, structured to be community-release-ready later.
destination subfolder.
## Stack
TypeScript, Obsidian Plugin API, esbuild (standard `obsidian-sample-plugin` scaffold).
@ -23,7 +23,7 @@ image download/fallback → classify → review modal → write note into chosen
- Free service layers, all default-on, all degrade gracefully: Microlink (image fallback),
favicon fallback, Wayback archive snapshot.
- Root folder `_bookmarks`; categories = subfolders; assets in `_bookmarks/_assets/`.
- Settings via `PluginSettingTab` + `loadData`/`saveData` (see brief §8 for schema).
- Settings via `PluginSettingTab` + `loadData`/`saveData`.
## Gotchas
- Mobile + desktop both supported (`isDesktopOnly: false`). Every constraint below exists
@ -33,6 +33,5 @@ image download/fallback → classify → review modal → write note into chosen
- HTML parsing: `new DOMParser()`. No cheerio/jsdom.
- File I/O: Obsidian vault API only (`vault.create`, `createBinary`, `createFolder`).
No Node-only modules anywhere (`fs`, `path`, `child_process`, `electron`, `puppeteer`).
- Never log the API key or full request bodies. Key lives plaintext in `data.json`
settings UI must warn about `.obsidian` sync.
- Source-of-truth spec: `~/Downloads/20260613_ObsidianBookmarker_Brief_v1.md` (build brief v1).
- Never log the API key or full request bodies. Key lives plaintext in `data.json`;
the settings UI must warn about `.obsidian` sync.

View file

@ -64,11 +64,13 @@ The fallback link at the bottom works even without a preview plugin installed.
## Install
Bookmarker is not in the community plugin directory yet, so install it manually:
From inside Obsidian: open Settings, go to Community plugins, Browse, search for "Bookmarker", and install. Then enable it.
1. Build the plugin (`npm install && npm run build`) or grab `main.js`, `manifest.json`, and `styles.css` from a release.
2. Copy those three files into `<your vault>/.obsidian/plugins/bookmarker/`.
3. Enable **Bookmarker** in Obsidian's Community Plugins settings, then reload.
To install manually instead:
1. Download `main.js`, `manifest.json`, and `styles.css` from a [release](https://github.com/istefox/obsidian-bookmarker/releases).
2. Copy them into `<your vault>/.obsidian/plugins/bookmarker/`.
3. Enable Bookmarker in Community plugins, then reload.
### Browser extension (desktop one-click)

View file

@ -68,10 +68,6 @@ cd icons
for s in 16 32 48 128; do rsvg-convert -w $s -h $s icon.svg -o icon-$s.png; done
```
## Publishing
See `SUBMISSION.md` for the Chrome Web Store submission steps (packaging, listing, privacy form).
## Not included yet
Firefox build, passing selected text/title.

View file

@ -1,81 +0,0 @@
# Chrome Web Store submission: Bookmarker for Obsidian
A step-by-step guide to publish this extension on the Chrome Web Store. It assumes you already have a paid Chrome Web Store developer account.
This extension is an unofficial, third-party companion to Obsidian. Say so in the listing so reviewers and users are not misled about an affiliation that does not exist.
## What is already done
- Manifest V3, `activeTab` permission only, no host permissions.
- Icons at 16, 32, 48, and 128 px in `icons/`, wired into both `action.default_icon` and the top-level `icons` field. The 128 px icon doubles as the store icon.
## What you still need to provide
These are image assets this repo cannot generate for you:
1. **At least one screenshot**, 1280×800 or 640×400, PNG or 24-bit JPG (no alpha). Up to five. A good first shot: the toolbar button on a normal web page next to a saved note in Obsidian.
2. **Small promo tile** (optional but recommended), 440×280 PNG or JPG.
## Step 1: Package the extension
The Web Store wants a zip whose root contains `manifest.json` directly, not a nested folder. From the repo root:
```bash
cd extension
zip -r ../bookmarker-extension.zip manifest.json background.js icons/icon-16.png icons/icon-32.png icons/icon-48.png icons/icon-128.png
```
`icon.svg`, `README.md`, and `SUBMISSION.md` stay out of the package. They are source and docs, not runtime files.
Verify the zip has `manifest.json` at the top level:
```bash
unzip -l ../bookmarker-extension.zip
```
## Step 2: Create the listing
In the [developer dashboard](https://chrome.google.com/webstore/devconsole), choose "Add new item" and upload the zip. Then fill in the store listing:
- **Name:** Bookmarker for Obsidian
- **Summary** (132 chars max): One-click save of the current page into your Obsidian vault, with AI tags and a preview, via the Bookmarker plugin.
- **Category:** Productivity
- **Language:** English
- **Detailed description:** see the block below.
### Detailed description (paste this)
Bookmarker for Obsidian saves the page you are on into your Obsidian vault with one click.
The extension stays small on purpose. It reads the current tab's URL when you click the toolbar button and hands it to the Bookmarker Obsidian plugin through the `obsidian://bookmark` link. The plugin does the real work: fetch the page, pull its title and preview image, propose tags and a destination folder, and write a Markdown note into your vault.
Requirements:
- The Bookmarker plugin installed and enabled in Obsidian.
- Obsidian running or launchable, since it registers the `obsidian://bookmark` handler.
Privacy: the extension asks for `activeTab` only. It reads the active tab's URL when you click and nothing else. No host permissions, no tracking, no data sent to any server we run.
This is an unofficial, third-party extension and is not affiliated with or endorsed by Obsidian.
## Step 3: Privacy practices tab
This is where most first submissions get held up. Fill every field.
- **Single purpose:** Save the current browser tab to an Obsidian vault by handing its URL to the Bookmarker Obsidian plugin.
- **`activeTab` justification:** The extension reads the active tab's URL only when the user clicks the toolbar button, to pass it to Obsidian. It uses no host permissions and accesses no other tabs.
- **Data usage:** the extension collects nothing. Check every "I do not sell or transfer…" and "I do not use or transfer for purposes unrelated…" box, then certify compliance.
- **Privacy policy URL:** Chrome requires one even when you collect no data. The policy lives in `extension/PRIVACY.md`. Once it is on `main`, paste this URL into the form:
`https://github.com/istefox/obsidian-bookmarker/blob/main/extension/PRIVACY.md`
## Step 4: Submit and wait
Submit for review. Review usually takes a few days; a first submission from a new account can take longer. You get an email on approval or rejection. Rejections name the policy and the fix, so read them and resubmit.
## Step 5: Updates after approval
To ship a new version, raise `version` in `manifest.json`, re-zip with the Step 1 command, and upload the new package in the dashboard. Installed users update automatically.
## Known review risk
A reviewer who tests the extension without Obsidian installed sees the toolbar button flash a red badge and do nothing, because no `obsidian://bookmark` handler is registered. That is expected behavior, but it can read as "broken." The detailed description and the requirements line above exist to set that expectation. If a rejection cites this, reply that the extension is a documented companion to an Obsidian plugin and behaves correctly when that plugin is present.