Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
f542b19
version 670
chrisnojima Feb 13, 2026
3a4b3c2
simplify small chat (#28901)
chrisnojima Feb 13, 2026
53f4180
inbox desktop cleanup (#28904)
chrisnojima Feb 13, 2026
a336843
search cleanup (#28903)
chrisnojima Feb 13, 2026
ba990a8
style cleanup (#28907)
chrisnojima Feb 17, 2026
f61adfb
Merge branch 'master' into nojima/HOTPOT-next-670-clean
chrisnojima Feb 18, 2026
da74ce0
add remote debug for playwright (#28915)
chrisnojima Feb 18, 2026
c44a390
modernize some css (#28913)
chrisnojima Feb 18, 2026
22587f8
tsc go (#28916)
chrisnojima Feb 18, 2026
beeb540
hmr fixes for stores (#28918)
chrisnojima Feb 18, 2026
a33a9c1
move from box to box2 (#28919)
chrisnojima Feb 18, 2026
beeb7e9
list to list2 cleanup
chrisnojima Feb 18, 2026
a0f8641
more gap (#28921)
chrisnojima Feb 18, 2026
ecaa031
refactor text to simpler impl (#28922)
chrisnojima Feb 19, 2026
a30c55a
try automated perf harness (#28925)
chrisnojima Feb 20, 2026
9782925
fix avatar layout (#28926)
chrisnojima Feb 20, 2026
39c4f9a
name cleanup (#28927)
chrisnojima Feb 20, 2026
b82603f
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Feb 20, 2026
1576bdc
update deps (#28929)
chrisnojima Feb 20, 2026
a3c6acc
remove invites stuff in ui (#28930)
chrisnojima Feb 20, 2026
8995209
main cleanup (#28931)
chrisnojima Feb 20, 2026
2a360b0
simpler remote (#28932)
chrisnojima Feb 20, 2026
e292607
some tsc cleanup (#28935)
chrisnojima Feb 23, 2026
18647b1
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Feb 24, 2026
3336c69
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Feb 24, 2026
a016ff8
leftover styling fixes from box2 (#28940)
chrisnojima Feb 24, 2026
893cc48
simpler linking nav (#28936)
chrisnojima Feb 25, 2026
acb3612
WIP
chrisnojima Feb 25, 2026
8c4b758
better ordinal / cache handling (#28944)
chrisnojima Feb 26, 2026
f2df62c
expo 55 (#28947)
chrisnojima Feb 27, 2026
e643bfc
add useful props to box (#28949)
chrisnojima Feb 27, 2026
4f29de3
more expo modules usage (#28950)
chrisnojima Feb 27, 2026
374f29b
use expo to start metro (#28951)
chrisnojima Feb 27, 2026
7c2cec6
react 19.2 (#28952)
chrisnojima Feb 28, 2026
7281803
remove useEvent (#28954)
chrisnojima Feb 28, 2026
546562f
add attaching files through expo (#28956)
chrisnojima Feb 28, 2026
1bb16cf
remove keybase fm (#28957)
chrisnojima Feb 28, 2026
9a9f981
navigation static routes api (#28958)
chrisnojima Mar 1, 2026
e27ca3d
small deps (#28959)
chrisnojima Mar 1, 2026
9e30e42
useEvent cleanup + image fix (#28961)
chrisnojima Mar 2, 2026
d41c31d
remove isMounted checks, not needed anymore (#28962)
chrisnojima Mar 2, 2026
b305a5b
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Mar 2, 2026
2e78f9f
run go fix (#28923)
zoom-ua Mar 3, 2026
38d8711
deduplicate silent notifications (#28899)
zoom-ua Mar 3, 2026
a8f9a72
unify into input3 (#28963)
chrisnojima Mar 3, 2026
631551f
fix popups not showing (#28966)
chrisnojima Mar 3, 2026
f8276ae
remove fastBlank (#28967)
chrisnojima Mar 3, 2026
393d442
switch accounts on push (#28900)
zoom-ua Mar 3, 2026
7a35953
message optim (#28968)
chrisnojima Mar 3, 2026
a05dc2f
fix lint (#28969)
chrisnojima Mar 3, 2026
b21b2d9
gesture3 (#28970)
chrisnojima Mar 3, 2026
2027ce0
chat input cleanup (#28973)
chrisnojima Mar 3, 2026
cd483c3
fix emoji (#28974)
chrisnojima Mar 3, 2026
972a225
engine cleanup (#28972)
chrisnojima Mar 3, 2026
8bcbc91
small jsi improvements (#28971)
chrisnojima Mar 4, 2026
56b1d50
automated testing (#28976)
chrisnojima Mar 4, 2026
c19b406
WIP
chrisnojima Mar 4, 2026
48772c3
WIP
chrisnojima Mar 4, 2026
59327e1
inbox clean (#28975)
chrisnojima Mar 4, 2026
f26049e
WIP
chrisnojima Mar 4, 2026
e0b0063
legends list in inbox (#28979)
chrisnojima Mar 5, 2026
4eb1584
Update dependencies (#28980)
chrisnojima Mar 5, 2026
1d5b7b9
temp workaround for header colors not switching (#28981)
chrisnojima Mar 5, 2026
1de125b
fix small team click not working (#28982)
chrisnojima Mar 5, 2026
9e8536c
use legends on inbox desktop (#28983)
chrisnojima Mar 5, 2026
55522e3
switch react-window to legendlist (#28984)
chrisnojima Mar 5, 2026
5b20e75
common list -> legend (#28985)
chrisnojima Mar 5, 2026
453b10d
teams slow (#28986)
chrisnojima Mar 5, 2026
ee2bd00
faster team list and common-adapters (#28987)
chrisnojima Mar 5, 2026
940fe19
fix teams to chat nav (#28989)
chrisnojima Mar 6, 2026
e46e448
Faster button (#28990)
chrisnojima Mar 6, 2026
22249bb
adopt rn ref api to cleanup (#28991)
chrisnojima Mar 6, 2026
b264712
orange messed (#28993)
chrisnojima Mar 6, 2026
26a4aa0
Replace simple lodash functions with native JS equivalents (#28994)
chrisnojima Mar 6, 2026
4af2c3e
Fix follow-button using <span> which crashes React Native (#28996)
chrisnojima Mar 6, 2026
d8c92ad
Avatar cleanup (#28995)
chrisnojima Mar 6, 2026
c9cf2f7
icon2 cleanup (#28998)
chrisnojima Mar 7, 2026
c3bd31f
modern ts (#28997)
chrisnojima Mar 8, 2026
48cbfce
Fix LegendList keyExtractor warning for all Kb.List consumers (#28999)
chrisnojima Mar 8, 2026
9d3d9b6
Optimize team list scrolling with LegendList recycling
chrisnojima Mar 9, 2026
b5940e8
Migrate inbox to use Kb.List instead of LegendList directly (#29000)
chrisnojima Mar 9, 2026
c807394
Fix outstanding appendGUILogs session in node process (#29001)
chrisnojima Mar 9, 2026
d57f8d9
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Mar 10, 2026
b3374e8
update
chrisnojima Mar 10, 2026
17fec66
use desktop chat search dummy
chrisnojima Mar 10, 2026
8025e94
Remove old React Context .Provider pattern and delete CanFixOverdrawC…
chrisnojima Mar 11, 2026
0df5d4c
modal cleanup (#29002)
chrisnojima Mar 11, 2026
4f770f5
Merge origin/master into nojima/HOTPOT-next-670-clean
chrisnojima-zoom Mar 12, 2026
6e62408
convostate cleanup. claude cleanup (#29010)
chrisnojima-zoom Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "keybase-client-skills",
"description": "Development skills for the Keybase client repo"
}
39 changes: 39 additions & 0 deletions .claude/skills/electron-screenshot/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: electron-screenshot
description: This skill should be used when the user asks to "take a desktop screenshot", "screenshot the electron app", "show me the desktop app", "what does the app look like", or mentions checking the Electron/desktop UI visually.
---

Take a screenshot of the running Electron app via Playwright MCP and display it.

## Prerequisites

The Electron app must be running with remote debugging enabled:
```
KB_ENABLE_REMOTE_DEBUG=1 yarn start-hot
```
This launches Electron with `--remote-debugging-port=9222`.

## Steps

1. Close the DevTools tab first to avoid stale data. Use `browser_tabs` with action=list, then action=close on the DevTools tab (usually index 0).

2. Select the main app window tab (the one titled "Keybase: ..." — usually index 1 after DevTools is closed it becomes index 0). Use `browser_tabs` with action=list then action=select.

3. Take a screenshot with `browser_take_screenshot`.

4. The screenshot is saved to a temp file. Resize it for token efficiency:
```
sips -Z 800 <screenshot_path> --out /tmp/electron-screenshot.png
```

5. Use the Read tool to display `/tmp/electron-screenshot.png` to the user.

## Error Handling

- If Playwright MCP cannot connect, tell the user the Electron app may not be running with remote debugging. Suggest launching with `cd shared && KB_ENABLE_REMOTE_DEBUG=1 yarn start-hot`.
- If `sips` fails, fall back to displaying the original screenshot directly.

## Notes

- Tab 0 is typically DevTools, Tab 1 is the main app, Tab 2 is the menubar. Always close DevTools first — when it's open, `browser_evaluate` and `browser_snapshot` run against DevTools instead of the app.
- 800px max dimension gives good legibility with ~90% token savings.
30 changes: 30 additions & 0 deletions .claude/skills/ios-screenshot/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: ios-screenshot
description: This skill should be used when the user asks to "take an iOS screenshot", "screenshot the simulator", "show me the iOS app", "what does the screen look like", or mentions checking the iOS simulator UI visually.
---

Take a screenshot of the booted iOS simulator and display it.

## Steps

1. Capture the screenshot from the booted iOS simulator:
```
xcrun simctl io booted screenshot /tmp/ios-screenshot-full.png
```

2. Resize to 800px max dimension for token efficiency (reduces ~90% of tokens vs full 2556px resolution while staying legible):
```
sips -Z 800 /tmp/ios-screenshot-full.png --out /tmp/ios-screenshot.png
```

3. Use the Read tool to display `/tmp/ios-screenshot.png` to the user.

4. Clean up the full-size temporary file:
```
rm /tmp/ios-screenshot-full.png
```

## Error Handling

- If `xcrun simctl io booted screenshot` fails, tell the user no iOS simulator is currently booted and suggest they launch one (e.g. via Xcode or `xcrun simctl boot "iPhone 17 Pro"`).
- If `sips` fails, fall back to displaying the full-size screenshot directly.
84 changes: 84 additions & 0 deletions .claude/skills/visual-diff/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
name: visual-diff
description: This skill should be used when the user asks to "compare screenshots", "visual diff", "check for visual regressions", "before and after screenshots", "did the UI change", or mentions comparing the app UI between branches or before/after a change. Also triggered by "take baseline", "take current", or "compare against baseline".
---

Run a visual regression test by capturing baseline and current screenshots of the app, then comparing them with ImageMagick to find pixel-level differences.

## Determine Platform

Ask the user which platform to test if unclear: **desktop** (Electron via Playwright MCP) or **iOS** (simulator via Maestro). If context makes it obvious (e.g. they're working on iOS code), skip asking.

## Desktop Workflow

### Prerequisites
- App running with `KB_ENABLE_REMOTE_DEBUG=1 yarn start-hot`
- ImageMagick installed (`brew install imagemagick`)

### Option A: Automated Scripts (preferred)
```bash
# Baseline (on base branch, app running)
cd shared && node perf/visual-diff-take.js baseline

# Current (on feature branch, app restarted)
cd shared && node perf/visual-diff-take.js current

# Compare
cd shared && ./perf/visual-diff-compare.sh
```

### Option B: Playwright MCP (manual)
1. Close the DevTools tab (`browser_tabs` action=close index=0), select the app tab.
2. Navigate to each tab (People, Chat, Files, Crypto, Teams, Git, Devices, Settings) via `browser_snapshot` + `browser_click`.
3. Take screenshots to `/tmp/visual-diff/baseline/` or `/tmp/visual-diff/current/`.
4. Run `cd shared && ./perf/visual-diff-compare.sh`.

## iOS Workflow

### Prerequisites
- iOS Simulator booted with app running and logged in
- Maestro installed
- ImageMagick installed

### Steps
```bash
# Baseline (on base branch)
cd shared && ./perf/visual-diff-take-ios.sh baseline

# Current (on feature branch)
cd shared && ./perf/visual-diff-take-ios.sh current

# Compare
cd shared && ./perf/visual-diff-compare-ios.sh
```

Screenshots go to `/tmp/visual-diff-ios/{baseline,current,diff}/`.

## Viewing Results

After comparison, read the diff images to evaluate:

1. Resize each diff image for token efficiency:
```
sips -Z 800 /tmp/visual-diff/diff/<tab>.png --out /tmp/visual-diff-resized/<tab>.png
```
(Use `/tmp/visual-diff-ios/diff/` for iOS.)

2. Use the Read tool to display each resized diff image.

## Interpreting Diffs

Red pixels indicate differences between baseline and current screenshots.

- **Subpixel noise** (<200px desktop, <500px iOS): Scattered faint red dots from font antialiasing. Safe to ignore.
- **Dynamic content**: Avatars, timestamps, badges change between runs. Safe to ignore.
- **COLOR REGRESSION**: Entire icons or text areas are solid red — colors changed (e.g. icon went blue → gray). Investigate.
- **SIZE/POSITION REGRESSION**: Red outlines or doubled shapes — something shifted. Common cause: `Box2` adding `alignSelf: 'center'` where old code used `<div>`.
- **Rule of thumb**: Clean text labels + solid red icons = real bug, not noise.

## Typical Session

1. User says "take baseline" → run the baseline capture step.
2. User makes code changes and restarts app.
3. User says "compare" or "take current" → run the current capture + comparison.
4. Display diff images and summarize findings: which tabs changed, whether changes look intentional or are regressions.
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,5 @@ go/keybase_netbsd
go/keybase_openbsd

.cursor
.claude
.claude/settings.local.json
.*-mcp
CLAUDE.md
19 changes: 19 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Rules
- No `Co-Authored-By` in commits. Ever.
- "Was working before" = base branch (`nojima/HOTPOT-next-670-clean` or `master`), not previous commit.
- Never use `npm`. Always `yarn`.
- Never silently drop features/behavior — ask first, present options.
- No DOM elements (`<div>`, `<span>`, etc.) in plain `.tsx` files — use `Kb.*`. Guard desktop-only DOM with `Styles.isMobile`.
- Temp files go in `/tmp/`.
- Remove unused code when editing: styles, imports, vars, params, dead helpers.
- Comments: no refactoring notes; only add when context isn't obvious from code.
- Exact versions in `package.json` (no `^`/`~`).
- Keep `react`, `react-dom`, `react-native`, `@react-native/*` in sync with Expo SDK.
- When updating deps: edit `package.json` → `yarn` → `yarn pod-install`.
- When updating `electron`: run `shared/desktop/extract-electron-shasums.sh <version>`.

## Working Directory
Repo root is `client/`. TS source lives in `shared/`. Always use absolute paths for file ops. For Bash: always `cd shared/` first.

## Validation
After TS changes (from `shared/`): `yarn lint` then `yarn tsc`. When debugging visually, skip until fix is confirmed. Never delete the ESLint cache.
6 changes: 3 additions & 3 deletions go/auth/credential_authority_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func newTestUser(nKeys int) *testUser {
sibkeys: make([]keybase1.KID, nKeys),
subkeys: make([]keybase1.KID, nKeys),
}
for i := 0; i < nKeys; i++ {
for i := range nKeys {
ret.sibkeys[i] = genKID()
ret.subkeys[i] = genKID()
}
Expand Down Expand Up @@ -236,7 +236,7 @@ func TestSimple(t *testing.T) {
u1 := state.newTestUser(4)

ng := 3
for i := 0; i < 10; i++ {
for range 10 {
err = credentialAuthority.CheckUserKey(context.TODO(), u1.uid, &u1.username, &u1.sibkeys[0], false)
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -283,7 +283,7 @@ func TestCheckUsers(t *testing.T) {
state, credentialAuthority := newTestSetup()

var users, usersWithDud []keybase1.UID
for i := 0; i < 10; i++ {
for range 10 {
u := state.newTestUser(2)
users = append(users, u.uid)
usersWithDud = append(usersWithDud, u.uid)
Expand Down
1 change: 0 additions & 1 deletion go/avatars/fileurilze_nix.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build !windows
// +build !windows

package avatars

Expand Down
1 change: 0 additions & 1 deletion go/avatars/fileurlize_windows.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//go:build windows
// +build windows

package avatars

Expand Down
27 changes: 13 additions & 14 deletions go/avatars/fullcaching.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"io"
"maps"
"net/url"
"os"
"path/filepath"
Expand Down Expand Up @@ -97,10 +98,10 @@ type FullCachingSource struct {

prepareDirs sync.Once

usersMissBatch func(interface{})
teamsMissBatch func(interface{})
usersStaleBatch func(interface{})
teamsStaleBatch func(interface{})
usersMissBatch func(any)
teamsMissBatch func(any)
usersStaleBatch func(any)
teamsStaleBatch func(any)

// testing
populateSuccessCh chan struct{}
Expand All @@ -116,16 +117,16 @@ func NewFullCachingSource(g *libkb.GlobalContext, staleThreshold time.Duration,
staleThreshold: staleThreshold,
simpleSource: NewSimpleSource(),
}
batcher := func(intBatched interface{}, intSingle interface{}) interface{} {
batcher := func(intBatched any, intSingle any) any {
reqs, _ := intBatched.([]remoteFetchArg)
single, _ := intSingle.(remoteFetchArg)
return append(reqs, single)
}
reset := func() interface{} {
reset := func() any {
return []remoteFetchArg{}
}
actor := func(loadFn func(libkb.MetaContext, []string, []keybase1.AvatarFormat) (keybase1.LoadAvatarsRes, error)) func(interface{}) {
return func(intBatched interface{}) {
actor := func(loadFn func(libkb.MetaContext, []string, []keybase1.AvatarFormat) (keybase1.LoadAvatarsRes, error)) func(any) {
return func(intBatched any) {
reqs, _ := intBatched.([]remoteFetchArg)
s.makeRemoteFetchRequests(reqs, loadFn)
}
Expand Down Expand Up @@ -213,7 +214,7 @@ func (c *FullCachingSource) StartBackgroundTasks(mctx libkb.MetaContext) {
c.started = true
go c.monitorAppState(mctx)
c.populateCacheCh = make(chan populateArg, 100)
for i := 0; i < 10; i++ {
for range 10 {
go c.populateCacheWorker(mctx)
}
mctx, cancel := mctx.WithContextCancel()
Expand All @@ -238,7 +239,7 @@ func (c *FullCachingSource) StopBackgroundTasks(mctx libkb.MetaContext) {
}
}

func (c *FullCachingSource) debug(m libkb.MetaContext, msg string, args ...interface{}) {
func (c *FullCachingSource) debug(m libkb.MetaContext, msg string, args ...any) {
m.Debug("Avatars.FullCachingSource: %s", fmt.Sprintf(msg, args...))
}

Expand Down Expand Up @@ -266,7 +267,7 @@ func (c *FullCachingSource) monitorAppState(m libkb.MetaContext) {

func (c *FullCachingSource) processLRUHit(entry lru.DiskLRUEntry) (res lruEntry) {
var ok bool
if _, ok = entry.Value.(map[string]interface{}); ok {
if _, ok = entry.Value.(map[string]any); ok {
jstr, _ := json.Marshal(entry.Value)
_ = json.Unmarshal(jstr, &res)
return res
Expand Down Expand Up @@ -488,9 +489,7 @@ func (c *FullCachingSource) makeURL(m libkb.MetaContext, path string) keybase1.A

func (c *FullCachingSource) mergeRes(res *keybase1.LoadAvatarsRes, m keybase1.LoadAvatarsRes) {
for username, rec := range m.Picmap {
for format, url := range rec {
res.Picmap[username][format] = url
}
maps.Copy(res.Picmap[username], rec)
}
}

Expand Down
7 changes: 3 additions & 4 deletions go/avatars/simple.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package avatars

import (
"fmt"
"maps"
"strings"

"github.com/keybase/client/go/libkb"
Expand Down Expand Up @@ -63,14 +64,12 @@ func (s *SimpleSource) makeRes(res *keybase1.LoadAvatarsRes, apiRes apiAvatarRes
allocRes(res, names)
for index, rec := range apiRes.Pictures {
u := names[index]
for format, url := range rec {
res.Picmap[u][format] = url
}
maps.Copy(res.Picmap[u], rec)
}
return nil
}

func (s *SimpleSource) debug(m libkb.MetaContext, msg string, args ...interface{}) {
func (s *SimpleSource) debug(m libkb.MetaContext, msg string, args ...any) {
m.Debug("Avatars.SimpleSource: %s", fmt.Sprintf(msg, args...))
}

Expand Down
4 changes: 2 additions & 2 deletions go/avatars/srv.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,12 @@ func (s *Srv) GetUserAvatar(username string) (string, error) {
return fmt.Sprintf("http://%v/av?typ=user&name=%v&format=square_192&token=%v", addr, username, token), nil
}

func (s *Srv) debug(msg string, args ...interface{}) {
func (s *Srv) debug(msg string, args ...any) {
s.G().GetLog().Debug("Avatars.Srv: %s", fmt.Sprintf(msg, args...))
}

func (s *Srv) makeError(w http.ResponseWriter, code int, msg string,
args ...interface{},
args ...any,
) {
s.debug("serve: error code: %d msg %s", code, fmt.Sprintf(msg, args...))
w.WriteHeader(code)
Expand Down
7 changes: 3 additions & 4 deletions go/avatars/urlcaching.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package avatars

import (
"fmt"
"maps"
"time"

"github.com/keybase/client/go/libkb"
Expand Down Expand Up @@ -36,7 +37,7 @@ func (c *URLCachingSource) StopBackgroundTasks(m libkb.MetaContext) {
c.diskLRU.Flush(m.Ctx(), m.G())
}

func (c *URLCachingSource) debug(m libkb.MetaContext, msg string, args ...interface{}) {
func (c *URLCachingSource) debug(m libkb.MetaContext, msg string, args ...any) {
m.Debug("Avatars.URLCachingSource: %s", fmt.Sprintf(msg, args...))
}

Expand Down Expand Up @@ -89,9 +90,7 @@ func (c *URLCachingSource) specLoad(m libkb.MetaContext, names []string, formats

func (c *URLCachingSource) mergeRes(res *keybase1.LoadAvatarsRes, m keybase1.LoadAvatarsRes) {
for username, rec := range m.Picmap {
for format, url := range rec {
res.Picmap[username][format] = url
}
maps.Copy(res.Picmap[username], rec)
}
}

Expand Down
1 change: 0 additions & 1 deletion go/bind/dns_ios.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// this source code is governed by the included BSD license.
//
//go:build ios
// +build ios

package keybase

Expand Down
1 change: 0 additions & 1 deletion go/bind/dns_other.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// this source code is governed by the included BSD license.
//
//go:build !ios
// +build !ios

package keybase

Expand Down
Loading