chadtmiller.com/knotless
Git hosted in your atproto account, on any stock PDS, fast enough for agents.
git clone knotless://chadtmiller.com/knotlessneeds the knotless git helper. set it up
// Icons: GitHub's Octicons, at 16, as the package draws them.
import code from '@primer/octicons/build/svg/code-16.svg?raw';
import commit from '@primer/octicons/build/svg/git-commit-16.svg?raw';
import pull from '@primer/octicons/build/svg/git-pull-request-16.svg?raw';
import pullClosed from '@primer/octicons/build/svg/git-pull-request-closed-16.svg?raw';
import issue from '@primer/octicons/build/svg/issue-opened-16.svg?raw';
import done from '@primer/octicons/build/svg/issue-closed-16.svg?raw';
import merge from '@primer/octicons/build/svg/git-merge-16.svg?raw';
import dir from '@primer/octicons/build/svg/file-directory-fill-16.svg?raw';
import file from '@primer/octicons/build/svg/file-16.svg?raw';
import branch from '@primer/octicons/build/svg/git-branch-16.svg?raw';
import chat from '@primer/octicons/build/svg/comment-16.svg?raw';
import fork from '@primer/octicons/build/svg/repo-forked-16.svg?raw';
/** What is drawn inside an icon's `<svg>`. */
const inside = (svg: string) => svg.replace(/^<svg[^>]*>|<\/svg>\s*$/g, '');
export const icons = Object.fromEntries(
Object.entries({ code, commit, pull, pullClosed, issue, done, merge, dir, file, branch, chat, fork }).map(([k, v]) => [k, inside(v)])
) as Record<'code' | 'commit' | 'pull' | 'pullClosed' | 'issue' | 'done' | 'merge' | 'dir' | 'file' | 'branch' | 'chat' | 'fork', string>;
export type IconName = keyof typeof icons;
/** The icon for a pull or an issue in `state`. */
export function stateIcon(kind: string, state: string): IconName {
if (kind === 'pull') return state === 'merged' ? 'merge' : state === 'closed' ? 'pullClosed' : 'pull';
return state === 'open' ? 'issue' : 'done';
}