Repository navigation
refactor: store the GitHub token through keyring 4's native stores and sort the docs by reader - #96
Merged
Merged
Conversation
keyring 3.6.3 becomes keyring-core 1.0.0 plus one target-gated store crate per OS: the macOS Keychain, the Windows Credential Manager and the Secret Service over vendored libdbus with Rust crypto. Colony never sets a default store, so nothing can resolve to the in-memory mock outside the tests. The plaintext fallback is now deleted only after the token reads back intact from the store; a write that answers Ok but keeps nothing leaves the file in place. The service, account and Windows target name match keyring 3, so a token saved before the upgrade is still read.
Redrawn from the three-hexagon mark of assets/icons/icon.png at 512 and 1024 px, so the header stays sharp instead of upscaling the 256 px icon.
docs/ now has an index and two folders: guide/ (tutorial, FAQ, the colony.json spec for app authors) and internals/ (architecture, release signing). docs/docs.md is replaced by docs/README.md. The README follows templates/program/README.md: logo header, status, why, installation, the existing code signing policy, and a privacy policy that now lists what is stored locally, including the token in the OS credential store and its fallback file. Stale statements are corrected: private repo access, Settings instead of Preferences, the cache path, the download timeout, the scan directory override, and the build dependencies.
Nothing links GTK or xdo, and libdbus is compiled from source by the vendored Secret Service store, so ci.yml already builds on the same ubuntu-latest runner without these packages.
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.
Two things the org conformity plan grouped together: the last major dependency still behind (keyring 3 to keyring 4), and the README and docs/ brought to the org template, now that the Preferences rebuild (#95) has shipped and the docs can describe it.
Keyring 4
keyring 3.6.3 (with the apple-native, windows-native, sync-secret-service and vendored features) is replaced by keyring-core 1.0.0 plus one store crate per OS, each gated to its own target and pinned to a full version:
keychain)colony-launcher, accountgithub-oauthgithub-oauth.colony-launchercrypto-rust,vendored)service=colony-launcher,username=github-oauthThe fallback file stays
<config dir>/auth/github_token.json(on Linux~/.config/Colony/Colony/auth/github_token.json), mode 600.set_default_store. Every save, load and logout builds its entry fromos_store(), which has one arm per target and no fallback arm, so a target without a store is a build error rather than keyring 3's silent in-memory mock.store_verifiedwrites the token, reads it back, and only an identical read-back deletes the file. A write that answers Ok but keeps nothing (keyring 3's trap) or a refused write keeps the 0600 file and logs why.keyring4.2.0 crate itself is not used, since the plan asked for keyring-core and the store crates directly.rust-versionabove 1.88. The highest, windows-native-keyring-store 1.1.0 and dbus-secret-service-keyring-store 1.0.1, declare exactly 1.88.cargo tree -i openssl-sys --target all -e normalis still empty.Docs sorted by reader
docs/now followstemplates/program/docs/README.md:docs/docs.mddocs/README.md(the index)docs/tutorial.mddocs/guide/tutorial.mddocs/faq.mddocs/guide/faq.mddocs/colony-spec.mddocs/guide/colony-spec.md: its readers are app authors, who use Colony as a platform rather than read its codedocs/architecture.mddocs/internals/architecture.mddocs/release-signing.mddocs/internals/release-signing.md(moved only; #93 already corrected its content)Links are fixed in the README, CONTRIBUTING.md and the source comments (
src/signing.rs,src/github/releases.rs,src/github/mod.rs, and the doc-parity test message insrc/ui/theme.rs). The issue templates link no doc page. Inbound links from the rest of the org:gh search codeforColony/blob/main/docs,colony-spec.mdandrelease-signing.mdacross Project-Colony finds none outside this repository.README
Rebuilt on
templates/program/README.md: a centred header with a light and a dark logo (redrawn from the three-hexagon mark ofassets/icons/icon.pngat 512 and 1024 px, so it stays sharp), the tagline, License, Platforms (to#installation) and the two AUR badges, the intro, the Status blockquote, then Why Colony, What it does, Installation (AUR, direct download, build from source), the Colony-specific sections, Documentation, Code signing policy with its Privacy policy, and License.opensslcommands. The SignPath sentence and the team roles stay, since the SignPath application already points at them, and the### Privacy policyheading keeps its anchor for the same reason.Stale statements corrected
read:user, and the catalog is the organisation's public repositories.~/.cache/Colony/Colony/repos_cache.json.colony.jsonexample carries$schema.preferences.json(they are incolony.toml), and a D-Bus session as a launch requirement (without one, the token falls back to the file).ubuntu-latestrunner thatci.ymlalready builds on without them.CONTRIBUTING.md still names
{{APP_NAME}}: that is the instruction to replace the placeholder in the release template, not leftover template text.Checks run locally (Linux)
cargo fmt --all -- --check,cargo clippy --locked --all-targets -- -D warnings: clean.cargo test --locked -- oauth doc_parity: 6 passed.os_storearms compile: a scratch crate with the same function and dependencies passescargo check --target aarch64-apple-darwin --target x86_64-pc-windows-msvc.docs/resolves.