Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
159310c
docs: lock in the iOS-free-app subscription direction
Adron Jun 24, 2026
0a0d8c9
hide folder UI for non-subscribers (lists + documents)
Adron Jun 24, 2026
e9623a0
hide compose subscriber controls + feed scheduling entry for free users
Adron Jun 24, 2026
fc1fbf1
drop dead subscription paywall copy from now-unreachable code paths
Adron Jun 24, 2026
067a057
So many capabilities to add!!!
Adron Jun 24, 2026
8d20d31
Wire Phase 2/3 files into the build, add missing views, green the tes…
Adron Jun 24, 2026
6ffa8b3
docs: mark Phases 2 & 3 shipped in the gap roadmap
Adron Jun 24, 2026
0ed9f68
Wire the Change email row in EditProfileView; close out Phase 2
Adron Jun 24, 2026
9c1680b
Merge branch 'feature/subscription-direction-and-phase-2-3' into dev
Adron Jun 24, 2026
fdfc5ad
feat(api): APIClient endpoints + models for GAP phases B0/4–8/12/13
Adron Jun 25, 2026
423e0bb
feat(compose): cross-post, repost, scheduled edit + feed search (Phas…
Adron Jun 25, 2026
a8355f1
feat(profile): follow lists + public browse (Phases 5, 7)
Adron Jun 25, 2026
818dbb3
feat(lists): list watchers / collaboration (Phase 6)
Adron Jun 25, 2026
1cbfb3f
feat(orgs): organizations + member management (Phase 8)
Adron Jun 25, 2026
dd3e245
feat(settings): Settings panel, notification prefs, schema editor (Ph…
Adron Jun 25, 2026
8e71192
test+docs: GAP-phase API/model coverage; mark phases shipped
Adron Jun 25, 2026
6e0f647
docs: rewrite GAP-ENDPOINTS as under-documented contracts; add GAP-AP…
Adron Jun 25, 2026
43fe38b
fix(auth): hide native-unsupported GitHub sign-in; gate in-app provid…
Adron Jun 26, 2026
6d7a4fb
fix(documents): route folder reads/writes to folder-scoped endpoints
Adron Jun 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .claude/commands/comment-and-commit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# /comment-and-commit

Stage the work that's waiting in the working tree, compose a high-quality commit message that accurately describes it, and commit. **Does not push.**

Optional argument (`$ARGUMENTS`): extra context to fold into the message — a ticket id, a scope hint, or an instruction like "split into two commits".

## Conventions (must follow)

- **Conventional Commits**: `type(scope): summary` — imperative mood, summary ≤ 72 chars. Types used in this repo: `feat`, `fix`, `docs`, `test`, `refactor`, `chore` (and combined forms like `test+docs`). Scope matches the area touched (`auth`, `documents`, `settings`, `orgs`, `lists`, …).
- The summary says **what changed and why**, never "update files" / "changes".
- Every commit message **ends with this trailer, exactly**:
```
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
```
- **Never push** from this command.
- **Never commit on the default branch** (`main`): if HEAD is `main`, create and switch to a descriptive feature branch first.

## Steps

1. **Survey what's waiting** — never commit blind:
```bash
git status
git diff --stat HEAD
git diff HEAD # full diff: staged + unstaged
```

2. **Safety-check the branch**:
```bash
git rev-parse --abbrev-ref HEAD
```
If it prints `main`, branch first: `git switch -c <type>/<short-topic>`.

3. **Review, then stage.** Read the diff and decide what belongs in this commit. By default stage everything that's part of the work:
```bash
git add -A
```
Unstage anything machine-local or unrelated (`git restore --staged <file>`). Treat `.claude/settings.local.json` with suspicion — it accumulates session permission grants; include it only if those changes are intentional.

4. **Compose the message from the actual diff.** If the changes span clearly independent concerns, either (a) pick the strongest `type(scope)` for the summary and enumerate the other areas as body bullets, or (b) if the user asked for it, split into multiple commits via per-path / `git add -p` staging and repeat steps 3–5 per commit.

5. **Commit** with a HEREDOC so the body and trailer survive intact:
```bash
git commit -F - <<'EOF'
type(scope): concise imperative summary

- concrete change and the reason it was needed
- another concrete change

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
EOF
```

6. **Confirm and report:**
```bash
git show --stat HEAD
```
Report the commit hash + subject. Do not push; mention that `/commit-and-pr` will push and open a PR if that's the next step.
57 changes: 57 additions & 0 deletions .claude/commands/commit-and-pr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# /commit-and-pr

Commit all waiting work using the `/comment-and-commit` flow, push the branch, and open a pull request whose description summarizes everything the PR includes.

Optional argument (`$ARGUMENTS`): a PR title hint, a base-branch override, or extra context for the PR body.

## Conventions (must follow)

- **Runs `/comment-and-commit` first**, honoring all of its rules (Conventional Commits, the `Co-Authored-By` trailer, never committing on `main`).
- **Base branch** defaults to `main` unless `$ARGUMENTS` overrides it.
- The **PR body ends with this line, exactly**:
```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
```
- Opening a PR is outward-facing: verify the branch, base, and commit list look right before creating it.

## Steps

1. **Commit waiting work.** Perform every step of `/comment-and-commit` so the tree is clean and all work is committed. If there's nothing to commit but the branch is already ahead of the base, continue.

2. **Determine branch + base, and preview the PR contents:**
```bash
git rev-parse --abbrev-ref HEAD # feature branch — must not be the base
git log --oneline main..HEAD # every commit this PR will include
```
If HEAD equals the base branch, stop — step 1 should have branched.

3. **Push and set upstream:**
```bash
git push -u origin HEAD
```

4. **Compose the PR** to describe the whole branch, not just the last commit:
- **Title** — one Conventional-Commits-style line summarizing the branch.
- **Body** — a `## Summary` paragraph; a `## What's included` list grouped from `git log main..HEAD`; a `## Testing` note (what was built/run and the result); and any caveats or follow-ups.

5. **Create the PR** (HEREDOC body keeps formatting and the trailer):
```bash
gh pr create --base main --head "$(git rev-parse --abbrev-ref HEAD)" \
--title "type(scope): summary of the whole branch" \
--body "$(cat <<'EOF'
## Summary
One or two sentences on the goal of this PR.

## What's included
- area: concrete change (commits abc123, def456)
- area: concrete change

## Testing
- `xcodebuild ... test` — N passed

🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
```

6. **Report the PR URL** that `gh` prints. If `gh` isn't authenticated, surface the error and tell the user to run `! gh auth login` in the prompt (so the interactive login lands in this session), then re-run.
1 change: 0 additions & 1 deletion .claude/scheduled_tasks.lock

This file was deleted.

4 changes: 3 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@
"Bash(git checkout *)",
"Bash(git branch *)",
"Bash(plutil *)",
"Bash(git stash *)"
"Bash(git stash *)",
"Bash(curl -s \"https://interlinedlist.com/api/openapi.json\" -H \"Accept: application/json\" -o openapi.json)",
"Bash(echo \"HTTP fetch exit: $? size: $\\(wc -c < openapi.json\\) bytes\")"
],
"additionalDirectories": [
"/Users/adron/Codez/interlinedlist-ios/.claude"
Expand Down
64 changes: 0 additions & 64 deletions .codex/agents/swift-dev.toml

This file was deleted.

75 changes: 0 additions & 75 deletions AGENTS.md

This file was deleted.

Loading
Loading