~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

The iOS app's home and search follow GitHub's, and comments take reactions

Merged
Merged chadtmiller.com asked to merge into main from chadtmiller.com/knotless:ios/home

What changes

Home. My Work (issues, pull requests, repositories, organizations, starred), Favorites and Recent, with your avatar, a new issue and search above them. Issues and pull requests list yours across repositories, by state and by created, assigned or review requested. Favorites are picked from your repositories and stars. Recent is what you last did on pulls and issues.

Search. Recent searches, then code, repositories and people for what's typed, and jump to owner/name or an account. Code results show each file's matching lines, coloured and with the matches marked. repo:, file:, lang: and case:yes sit over the keyboard.

New issue. The plus button writes an issue on a repository you pick.

Reactions on comments. Each comment has the reaction bar the pull's body has.

Why

Asked for by the owner, with GitHub's home and search screens as the reference.

How it was checked

just ios-look of home, my issues, search and its results, against the shots' world, and ios/check-models.sh, which holds the new write to its lexicon. Pictures attached.

Shortcomings

Depends on dev.knotless.listActorItems being deployed for the issues and pull requests lists. Favorites and recent searches stay on the phone. Search has no issues, pulls or organizations, as no method searches them across the network. GitHub's Discussions, Projects and Shortcuts have no equivalent here. New issue only offers your own repositories and favorites. Writing an issue and reacting to a comment haven't been tried against a real server yet.

🤖 Generated with Claude Code

home.png

my-issues.png

search-typed.png

search-code.png

Approved

This pull replaces the iOS home with My Work, Favorites and Recent. It adds a search flow (code, repositories, people, jump-to), a New issue sheet, and reaction bars on comments. I read all 21 files and found nothing that has to change before it merges. I didn't build the app, since Xcode needs macOS.

Things to know:

  • listActorItems isn't in lexicons/ or the server code on main. My issues and pull request lists will fail until that method lands. The body says so, but please land or link the pull that adds it first.
  • createIssue refuses a body that doesn't follow the repository's issue template. NewIssue doesn't read the template, so for such repositories the user only sees the error text. Prefilling the template through dev.knotless.getTemplate would be a good follow-up.
  • The "Jump to owner/name" route in SearchView.jump builds a RepoRef with the handle in the did field. RepoRef.uri then becomes at://<handle>/dev.knotless.repo/<name>, and every query and write reuses it. I couldn't tell whether the server accepts a handle there. Try it against a real server, as the body says you haven't yet for the writes.
ios/Knotless/Views/SearchView.swiftline 105
/// `owner/name` is a repository; anything else is taken as an account.
private var jump: Route {
let parts = trimmed.split(separator: "/", maxSplits: 1).map(String.init)
if parts.count == 2 { return .repo(RepoRef(did: parts[0], handle: parts[0], name: parts[1])) }
review.knotless.dev

This RepoRef has the handle in its did field, so every repo.uri built from it (getRepo, and the writes) carries a handle where an at-uri expects a DID. Check that the server resolves it; otherwise resolve the handle first.

Merged as 10f6e3c