Skip to content

chore: codebase audit - #30

Merged
bakirgdev merged 17 commits into
mainfrom
chore/codebase-audit
Oct 17, 2026
Merged

bakirgdev merged 17 commits into
mainfrom
chore/codebase-audit

Conversation

@bakirgdev

Copy link
Copy Markdown
Owner

What and why

Codebase audit, one area at a time. Commits on this branch:

  • chore(mcp): drop caveman-shrink and the shared Claude settings
  • docs(github): note that admins can bypass main's protection
  • chore(git): regroup .gitignore and ignore App Store Connect keys
  • docs(knowledge): drop stale sdlc spec and plan sources
  • chore(xcode): bump the baseline to Xcode 27.1
  • chore(assets): drop the unused croc banner and name the GitHub social preview
  • chore(assets): rebuild the icon and web mascot from the 1024px mascot
  • feat(dmg): use a dark Retina background with plates under the labels
  • feat(screenshots): rewrite the capture pipeline and recapture every device
  • docs(agents): route AGENTS.md edits through claude-md-improver and rewrite assets/AGENTS.md
  • fix(app): scroll the transfer status screen instead of clipping it
  • feat(screenshots): add every App Store size class, half light and half dark
  • chore(assets): switch the GitHub social preview to the dark theme
  • feat(icon): layer the app icon for Liquid Glass
  • chore(screenshots): retake the iPhone 6.3-inch sending shot
  • ci(github): trim redundant jobs and refresh the templates
  • ci(github): move to setup-go 7.0.0, golangci-lint 2.15.0 and ubuntu-26.04

AI assistance: substantial

Verification

  • .github/: actionlint 1.7.12 clean (xcode-27 and ubuntu-26.04 are labels it does not know yet); golangci-lint 2.15.0 clean in crocmobile/; swift test --package-path CrocKit passes and builds crockit-verify. This PR's own run exercises the changed workflows.
  • Other commits: verified in their own sessions.

caveman-shrink only shortens tool descriptions, which Claude Code already
defers, and it ran an unpinned npm package in the path of all MCP traffic.
gopls now starts in crocmobile/, where the Go module lives; from the repo
root it reported "not a Go workspace".

.claude/settings.json is removed, so each user approves the project MCP
servers and their tool permissions locally.
Add *.p8: the notary key path is user-supplied, so a key saved in the
tree would surface as an untracked file. Drop /sdlc/, whose producing
skills are gone. Directory-only rules now end in a slash.
Both lived under the removed sdlc/ pipeline output and are not in the repo.
The xcode-27 runner image carries 27.1 (27A9275), the same build used
locally. gomobile binds clean, swift test and CrocAppTests pass, and the
macOS, iOS Simulator and CrocApp Direct builds succeed on it. Only 27.0
gets simulator runtimes on that image; the iOS leg builds for the generic
simulator destination, which needs the SDK alone.
… preview

croc-banner.webp came from the upstream croc repo and nothing referenced it. social-preview.png is used in one place only, the repository's Settings > Social preview (the live image matches it byte for byte), so its name now says so.
The icon layer is the new source at scale 0.75, which renders the same composition as the old 512px layer at 1.5 without upsampling it. app/CrocApp/AppIcon.icon is synced to assets/CrocAppIcon.icon. mascot-web.webp is re-cut from the new source. The favicons stay: the old source already exceeded every favicon size, and re-cuts from the upscaled art were four times heavier.
The background is a 1x+2x TIFF, so it is sharp on Retina; create-dmg passes any file type through. Finder draws icon labels black on any background picture, in dark mode too, so light plates sit under both labels. Icons move up to y=170 and the hint to 316: with the path bar on, Finder shows only about 340pt of content under the title bar, which hid the old hint. brand.md also drops the banner row and records the renamed social preview, the 1024px mascot and the new screenshot layout.
…evice

The script drives one iPhone 17 Pro Max and one iPad Pro 13-inch simulator plus the Mac app through a local croc relay on 127.0.0.1 with a random password and random codes, waits on harness readiness files instead of fixed sleeps, checks permissions up front, and restores the appearance and deletes its simulators on every exit. Output is assets/screenshots/{mac,iphone,ipad}/<screen>-{light,dark}.png plus the App Store set in assets/screenshots/app-store/. The debug harness seeds varied history and real-content payloads. TransferController gains harnessShownRelay, set only from the DEBUG harness, so a local-relay run shows the default relay in the trust UI.
…write assets/AGENTS.md

assets/AGENTS.md now matches the directory: what each file is, who uses it, and how to change the icon, the DMG background, the social preview and the screenshots.
ViewThatFits measured the phase content before its text wrapped, so it picked the unscrolled branch on screens whose wrapped height exceeded the window: the "Link ready" screen lost the bottom of its Done button on iPhone. Every phase shares this container. It is now a ScrollView whose content is at least the window height, so it stays centred when it fits and scrolls when it does not.
…f dark

The store set now covers iphone-6.9, iphone-6.3 (Apple's required iPhone class), iphone-duo-outer, ipad-13 and mac, ten per class with odd positions light and even dark. Each simulator gets an h:mm time format, en_US and, on iPad, full-screen multitasking before its final boot, so the status bar reads 9:41 whatever the host's settings and iPad shots carry no window chrome. Stored-link shots show a crocapp.dev link through the DEBUG --shown-link-origin flag while the upload still goes to the local store server. iphone-duo-outer is captured but not upload-ready: the simulator lays the app out sideways and clips taller screens.
Same layout and mascot as before, drawn in the dark token values. GitHub keeps its own uploaded copy, so the repository settings need the new file uploaded by hand.
The icon was one flat 512px raster on the system background. It is now three layers cut from the 1024px mascot (whole silhouette, belly, ink outline), stacked pixel-exact so the flat render matches the mascot. Body and belly are glass with a layer-colour shadow; the outline sits in its own group without glass so the line art stays crisp. The background is a mint gradient, deep green in dark mode, and the outline turns white when tinted so the drawing still reads. ictool renders every iOS and macOS variant and actool compiles it without warnings. app/CrocApp/AppIcon.icon is synced.
Three solo runs of the shot all passed, so the earlier one-off failure did not reproduce.
CI drops the format-comment job (the failing lint check now prints the fix as an error annotation) and the separate CrocKit swift build, which swift test already covers, crockit-verify included. Scorecard runs on its weekly cron and branch_protection_rule only, without the SARIF artifact. The weekly Go cron moves off the hour. Pages gets pnpm from pnpm/action-setup instead of corepack, which Node 25 and later no longer ship.

Dependabot commits as ci(deps) and build(deps), and the docs site updates monthly. The bug form asks where the app was installed from and links Troubleshooting; a new form covers docs and website problems; the PR template asks only for what CI cannot prove. AGENTS.md and the tooling docs now say Dependabot reads the Xcode project's Package.resolved but never bumps the go.mod tool requirements.
…6.04

Every other action pin already sits at its latest release. Ubuntu 26.04 runners are generally available, and ubuntu-latest moves to them in November 2026 anyway; the image carries the git, gh, nc and OpenSSL the Linux jobs call. setup-go 7.0.0 keeps the go-version-file and cache-dependency-path inputs. golangci-lint 2.15.0 reports no issues in crocmobile.
@bakirgdev
bakirgdev merged commit 8f8ae1d into main Oct 17, 2026
14 checks passed
@bakirgdev
bakirgdev deleted the chore/codebase-audit branch October 17, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant