Native Git Bridge 0.6.5
This release needs the runner reinstalled in Termux (v15): open the companion app and use Update runner, or run the install command from Settings. Copy main.js and styles.css when updating by hand.
Re-running the installer also repairs a credential file that 0.6.4 could damage. If a pull or a fetch has started failing with could not read Username, that is the fix, and it needs no other action.
A clone that needs a password now runs where passwords live
Cloning a private repository answered "no credentials" and there was no way to give it any. Authentication in this plugin is per repository and lives inside Termux, so a repository that does not exist yet has nowhere to read a token from, and the runner never permits a prompt. Every clone into a fresh vault ended there.
The clone is now a plain git clone command you paste into Termux. The plugin builds it, copies it to the clipboard and opens Termux; git asks for the username and the token itself, with its own progress meter, and saves what you type in the profile's own credential store. Press Continue in Obsidian afterwards and the runner adopts the download instead of fetching it a second time: it checks that the repository in the scratch directory came from the URL you asked for and that its download finished, then lands it in the vault the same way it always has, without overwriting a single file that was already there.
An interrupted paste costs nothing. The command wipes its own scratch directory first, so running it again starts clean, and nothing is queued until you press Continue, so nothing can expire while you are typing a token.
A clone that already has credentials is unchanged and still runs through the companion in the background. The command is offered only where it is needed: a first clone over https, a re-clone whose credentials Termux does not hold, or a clone that came back with an authentication failure.
An hour is the new budget for a clone, up from fifteen minutes, and the same for the request behind it.
Credentials stay in Termux
A re-clone no longer reuses credentials out of the vault. 0.6.4 copied the old repository's credential configuration onto the new clone's command line, which kept working setups working, but the file it read them from lives inside the vault, on shared storage, where any app with the storage permission can read it and whatever else syncs the vault carries it away. That path is gone. Credentials are entered in Termux, stored in Termux, and reused from Termux, and a re-clone that finds none there hands you the command instead.
A remote URL with a token in it is refused on both sides. https://token@host/repo.git used to pass validation because only user:password@ was checked, and a clone from such a URL wrote the token into the new repository's config. Any userinfo in an https URL is now rejected, with a message naming the shape.
Sparse checkout survives a re-clone
Sparse configuration lives inside .git, so replacing the repository erases it. Hiding a path again then failed on a repository where sparse checkout was off, with advice to run a git command in Termux by hand. Hide path now enables sparse checkout itself, seeded so that the first exclusion can never mean "hide everything", and re-adding the paths is the whole recovery.
Protected paths that git no longer reports raise a question rather than a silent answer. The plugin remembers which paths this device protects; when the repository comes back without them, it offers to hide and protect them again, or to release the protection. Dropping them silently would unguard what the safety gate exists for, and keeping them silently would block every sync over paths that are now visible.
Fixes
- Every operation on a vault with no repository opens the setup window instead of a bare "no repository" error. Refresh, pull, push, sync, commit, staging, diffs and history all reach it now. A vault that has a repository the runner cannot use keeps its honest error message.
- The repository footprint switches press on a fresh launch. They were disabled until some other action happened to fetch a status, which read as buttons that do not work; each command now fetches the state it needs.
- A leftover
index.lockhas a button. An interrupted operation could leave one behind, and every git command afterwards failed with "Another git process seems to be running" until the file was removed by hand in Termux. Failure windows that name that error now offer Delete the stale lock, after a confirmation that says it ends any Termux session still running. - A clone killed by Android says so. The system stops a large download once Termux is no longer the visible window, and git's own output shows nothing wrong; the failure now names the cause and what to do about it.
- An interactive run in Termux shows git's progress as it happens, instead of a silent terminal and a timer.
- A failed bootstrap clone reported one failure, not four. The status collected after a failure ran in a profile that has no repository yet, and three
fatal: not a git repositorylines went into the log as if something else had gone wrong too. - Buttons in windows with a text field sit at the bottom, centred, on every platform, and on a phone the window itself is placed so the button stays above the on-screen keyboard.
- The clone instructions no longer fill the screen with a wrapped command. It sits in a section you can open, and is still part of Copy details.
Full Changelog: 0.6.4...0.6.5