Repository navigation
Releases: johannes-kaindl/anysource-sideloader
Release list
0.5.1
Added
- The GitHub release now also carries a ready-to-unpack
anysource-sideloader.zip(the plugin folder withmain.js,manifest.jsonandstyles.css) and achecksums.sha256file. For a manual install, download the zip and unpack it into.obsidian/plugins/instead of creating the folder and saving three files by hand.
Changed
- The changelog is now written entirely in English.
- The README shows a new screenshot of the access-token settings.
0.5.0
Added
- Help row at the top of the settings with links to the documentation and the issue tracker.
0.4.4
Changed
- „Install plugin from URL“: das Adressfeld füllt jetzt die Zeile. Es saß schmal am rechten Rand, links blieb eine leere Fläche, und der Platzhalter war abgeschnitten. Neu steht der Name „Repository URL“ mit einer Beschreibung über dem Feld (
src/i18n/strings.ts,installUrl.fieldName/fieldDesc), das Feld nimmt die volle Breite; die Regel instyles.csssetzt nur das Layout.
Documentation
- Neue Seite
docs/how-to/troubleshooting.md(Meldung → Ursache → Abhilfe), README-Links absolut, Erstinstallation über die drei GitHub-Release-Dateien, README-Bilder. - Korrigiert: die Doku nannte ein „source field“ in den Einstellungen. Ein Repository fügt man über den Befehl „Install plugin from URL“ hinzu, Katalog-URLs unter „Catalogs“.
0.4.3
Changed
authorUrlim Manifest zeigt wieder auf das GitHub-Profil (https://github.com/johannes-kaindl),
nach der Rueckkehr in den Community Store.- Schluesselbund-Zugriff kommt jetzt aus
obsidian-kit@0.37.1statt aus einer eigenen
Kopie (src/obsidian/secrets.tsentfernt,src/vendor/kit/secrets.ts+
src/vendor/kit-obsidian/secrets.tsvendoriert). Sichtbare Folge:SecretStorebekommt
delete(id)(ein geloeschter Endpunkt nimmt sein Token mit) undobsidianSecretStore(...).get()
liefert bei einem leeren Secret jetztnullstatt eines leeren Strings; der
Verfuegbarkeits-Check beim Start prueft uebersecretStorageAvailable(app)sowohl
getSecretals auchsetSecretstatt nurgetSecret. - Release notes before an update now cover the whole version delta, not just the latest
release. Updating from 0.3.1 to 0.5.0 used to show only 0.5.0's notes; it now shows 0.5.0,
0.4.1 and 0.4.0, newest first, each under its own version heading — the same modal, just fed
every release newer than the installed version instead of only the last one fetched.
0.4.2
Added
- Releases now carry
anysource-sideloader.zip— a one-download bootstrap for the manual
first install. The archive holds a correctly namedanysource-sideloader/folder with
main.js,manifest.jsonandstyles.css, and is covered bychecksums.sha256like every
other asset. The link
.../releases/download/latest/anysource-sideloader.zipis stable across versions, so
documentation can name it once.
The reason is measured: a forge serves the individual assets astext/plainwith
content-disposition: inline, so clickingmain.jsin a browser opens it as text instead
of downloading it, and browsers then tend to append.txt. The resulting install looks like
a broken plugin rather than a mis-saved file. The archive gets a real download dialog, turns
three downloads into one, and removes the need to create a folder and type its name.
(Built by the shared release tooling, so every plugin using it gets the same asset.) - Documentation restructured after Diátaxis in
docs/: a
tutorial, five how-to guides, three
reference pages and three
explanation pages. The README shrank from 213 to ~140 lines and
now links rather than retells — notably, the install instructions were on line 47 behind two
explanatory sections.
Fixed
- A fresh install now subscribes to the same catalog the README tells you to subscribe to.
DEFAULT_CATALOG_URLstill pointed at a predecessor repository: the README was moved to the
current catalog in 0.4.1 and the code was left behind. Both URLs answered with HTTP 200, so
no link check could see it — the visible effect was that following the README added a second,
near-identical catalog to the browse list. The predecessor also carried no tags on any of its
23 entries, and the browse filter searches name, description or tag, so searching by tag
found nothing there.
A test now checks the seam rather than the value: it reads both READMEs and asserts they name
exactly the URL the code subscribes to. A test that merely repeated the string would have been
edited along with the next move and confirmed nothing.
Changed
-
The manual install instructions no longer mention a filesystem path. They now use
Obsidian's own Open plugins folder button, which makes the procedure identical on macOS,
Linux and Windows and removes the need to unhide.obsidian. Exiting Restricted mode is now
step 1 rather than an afterthought: a plugin sitting in exactly the right folder never loads
while that mode is on, and every other indicator looks healthy, so the symptom reads as a
broken plugin. -
The GUI smoke checklist moved from
docs/SMOKE.mdtodocs/internal/SMOKE.md, keeping
docs/user-facing. References in code and scripts were updated with it. -
The button in each Installed plugins row now changes with the state. It reads
Check while nothing is pending and becomes Update to<version>once a newer
release is known, so an update can be installed from the row that reports it. Until now
the row displayed "Update available: 0.4.1" and offered only a re-check next to it —
installing meant switching to the Updates section, which stays as the overview.
The status indicator is dropped while an update is pending: the row states it once,
through the button, instead of twice.
0.4.0
Added
- A loading indicator while checking for updates (
is-checking, UI-STANDARD §8). The
reason is measured, not assumed:checkAllUpdatesfetches sequentially, and with the 22
plugins of the production vault that takes 1.8 s against a self-hosted Forgejo on the LAN
and an extrapolated 6.7 s against GitHub (5 samples, 305 ms mean per request). Until now
the click produced no visible response at all for that long. Deliberately a single state:
the outcome is already reported as a Notice — what was missing was the time in between.
Deliberately notsetDisabled(see below).
Fixed
- GUI smoke:
E5was not self-contained. It was red in--section settingsand green in
a full run. Cause measured: between filling the field and clicking "Add host", the tab
redraws (the catalog entered in E4 finishes loading and triggersrefresh()), leaving a
different, empty input for the click to hit. The check now re-applies the value until it
stays put.⚠️ The underlying product issue — a redraw discards a keystroke in progress —
is tracked separately; it can hit a real user typing while the catalog loads.
Documented
-
The freeze cause is no longer open. The "Check now" freeze of 2026-09-01 was fixed by
removing two suspects at once, leaving it unclear which one mattered. Seven runs in an
isolated second Obsidian instance separated them: neither suspect freezes on its own.
The trigger is the conjunction —ButtonComponent.setDisabled()called from the
microtask of the flow promise, inside the settings window. Two variants differing from
the defect in exactly one detail each (contents of thefinally; timer instead of
microtask) both run fine. Full table indocs/SMOKE.md§ Freeze. -
German README added (
README.de.md, CORE-META-09), with a language toggle in both
files. The EnglishREADME.mdstays canonical. -
The README claimed the raw fallback only knows
main. It has knownmasteras well
since 0.3.1 — the CHANGELOG said so, the README did not. Corrected in both places it was
stated ("Adding sources" and "Known limitations").
0.3.1
Fixed
- A raw source on a
masterrepository was unreachable. The default branch was
hard-coded tomain; it now falls back tomasterwhenmainreturns 404, and the asset
URLs follow whichever branch actually answered. The error message still names themain
attempt — that is the expected name, and reportingmasterwould send the search the
wrong way. - A forge outage no longer buries the screen in notices. With twenty tracked plugins, a
failed check produced twenty identical notices and hid the actual result underneath. They
are summarised into one line now, and "everything up to date" is no longer claimed when
checks failed — that would be a statement about plugins that could not be checked.
Removed
- Dead
githubbranch in the raw URL builder.detectForgenever routes github.com through
the raw path, so it could not run — and dead code that builds a foreign URL shape is the
kind that gets mistaken for proven.
0.3.0
Changed — the store moved into the settings tab
- The sidebar view is gone. Browsing catalogs, tracking installed plugins and applying
updates all happen in the plugin's settings tab now — where Obsidian manages plugins
anyway, and where BRAT and comparable plugins put it. The ribbon icon is removed; the
"Open settings" command opens the tab. - Why this is more than a move: the view carried its own card and row CSS, built beside
Obsidian's own building blocks instead of on them. One consequence was visible — catalog
titles used an<h3>with no size rule and rendered far too large in a sidebar. In the
settings tab, Obsidian'sSettingAPI supplies layout and typography, sostyles.css
shrank from 105 to ~30 lines and the whole class of problem is gone rather than patched.
Fixed
- The catalog cache survived a change of subscriptions — removing a catalog left its
entries on screen. - The on-disk state was only read when a catalog loaded — installing a plugin outside
this one (BRAT, by hand) left the entry showing "Install". - "Check now" did not refresh an open settings tab — you pressed it, got a notice, and
the list still showed the old state.
0.2.1
Fixed
- Clicking "Check now" in the settings froze the whole app. Not just the settings
window — both renderers stopped responding, with no exception and no console message,
and the state persisted until Obsidian was restarted. The check now runs through the
registered command, which executes in the workspace context where the same flow is
measured to work.
0.2.0
Added
- Track already-installed plugins. The Browse tab now reads what is actually in the
vault instead of only what this plugin installed itself. A catalog entry whose plugin is
present but untracked offers "Track for updates"; a "Track all N installed" button above
the list does the whole set at once. Until now such plugins were invisible: Browse
offered "Install" for something long installed, and the update check ran over an empty
list — it never reported anything because it knew nothing. - "Check for updates" as a button, in the Updates tab and in the settings. Both run the
same flow as the existing command; the button in the Updates tab sits above the empty
state, so it is there precisely when nothing was found and you want to know whether the
check ran at all. - Catalog cards now show the installed version and whether it is current — a checkmark
state for "up to date", a warning state for "1.2.0 → 1.3.0 available".
Changed
- An update check with nothing tracked now says so instead of reporting "all up to date",
which looked like a result and was none.