Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 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
9bcf9e3
fix header ios (#29015)
chrisnojima Mar 16, 2026
a1ee1e5
store cleanup (#29012)
chrisnojima-zoom Mar 16, 2026
92d8a87
small deps updates (#29016)
chrisnojima Mar 16, 2026
39670eb
fix inbox selected row highlight by adding extraData to desktop list …
chrisnojima Mar 16, 2026
c3d0eb6
optimize chat thread (#29017)
chrisnojima-zoom Mar 17, 2026
94387ba
usernames: remove dead store subscriptions, simplify click handler (…
chrisnojima-zoom Mar 17, 2026
453bfaa
optimize chat thread 2 (#29018)
chrisnojima-zoom Mar 17, 2026
5ca4694
fix color theme being out of sync (#29029)
chrisnojima Mar 18, 2026
102f4fe
update deps, add skill (#29033)
chrisnojima Mar 18, 2026
da0c099
try tabs absolute for chat transition (#29034)
chrisnojima-zoom Mar 18, 2026
ea1e91e
electron perf (#29039)
chrisnojima Mar 19, 2026
a72df2d
upgrade xpath (#29028)
zoom-ua Mar 18, 2026
83f1a87
initial test (#29038)
chrisnojima-zoom Mar 21, 2026
c6f0ebe
rpc gen cleanup (#29043)
chrisnojima-zoom Mar 23, 2026
4d15c2e
Merge origin/master into nojima/HOTPOT-next-670-clean
chrisnojima Mar 23, 2026
cfb4d89
WIP
chrisnojima Mar 23, 2026
1dcbdb4
WIP
chrisnojima Mar 23, 2026
9d43d60
update some deps (#29052)
chrisnojima Mar 23, 2026
18c10dd
try and remove babelnode (#29056)
chrisnojima-zoom Mar 24, 2026
a32c604
deprecate hot-server, just use start-hot (#29059)
chrisnojima-zoom Mar 24, 2026
0049356
mm
chrisnojima Mar 24, 2026
5048918
WIP
chrisnojima Mar 24, 2026
032f2ec
add agents.md
chrisnojima-zoom Mar 25, 2026
e7fa27a
useshallow
chrisnojima-zoom Mar 25, 2026
2115a00
webpack cleanup (#29071)
chrisnojima-zoom Mar 26, 2026
c278483
WIP
chrisnojima Mar 26, 2026
6801b7d
try simpler remote proxy (#29060)
chrisnojima-zoom Mar 26, 2026
2bdd3fd
reset views on user change. fix store reset in chat
chrisnojima Mar 26, 2026
c0896e0
simplify node side startup (#29061)
chrisnojima-zoom Mar 26, 2026
306852c
merge small utils down (#29073)
chrisnojima-zoom Mar 26, 2026
6a16d9e
Merge remote-tracking branch 'origin/master' into nojima/HOTPOT-next-…
chrisnojima Mar 26, 2026
875a829
update Podfile.lock after merging master
chrisnojima Mar 26, 2026
0699edf
MM
chrisnojima Mar 26, 2026
9cc0bba
more deps (#29076)
chrisnojima Mar 26, 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"
}
20 changes: 20 additions & 0 deletions .claude/hooks/pre-commit-check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash

REPO_ROOT=$(git -C "$(dirname "$0")" rev-parse --show-toplevel)

if [ ! -d "$REPO_ROOT/shared/node_modules" ]; then
echo "node_modules not installed — skipping lint/tsc." >&2
exit 0
fi

if ! (cd "$REPO_ROOT/shared" && yarn lint 2>&1); then
echo "Lint failed — commit blocked." >&2
exit 2
fi

if ! (cd "$REPO_ROOT/shared" && yarn tsc 2>&1); then
echo "TypeScript check failed — commit blocked." >&2
exit 2
fi

echo "Pre-commit checks passed." >&2
34 changes: 34 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"permissions": {
"allow": [
"Bash(yarn lint)",
"Bash(yarn lint-warn:*)",
"Bash(yarn prettier:*)",
"Bash(yarn build-*)",
"Bash(yarn package)",
"Bash(yarn start*)",
"Bash(yarn rn-gobuild*)",
"Bash(yarn rn-download-android*)",
"Bash(yarn tsc)",
"Bash(yarn tsc:*)",
"Bash(yarn pod*)",
"Bash(yarn coverage:*)",
"Bash(yarn maestro*)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash(git commit*)",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/pre-commit-check.sh",
"timeout": 120,
"statusMessage": "Running lint and tsc..."
}
]
}
]
}
}
1 change: 1 addition & 0 deletions .claude/skills
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
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Repo Notes

- This repo uses React Compiler. Assume React Compiler patterns are enabled when editing React code, and avoid adding `useMemo`/`useCallback` by default unless they are clearly needed for correctness or compatibility with existing code.
- When a component reads multiple adjacent values from the same store hook, prefer a consolidated selector with `C.useShallow(...)` instead of multiple separate subscriptions.
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
4 changes: 2 additions & 2 deletions go/bind/keybase.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ var (
)

// log writes to kbCtx.Log if available, otherwise falls back to fmt.Printf
func log(format string, args ...interface{}) {
func log(format string, args ...any) {
msg := fmt.Sprintf(format, args...)
if kbCtx != nil && kbCtx.Log != nil {
kbCtx.Log.Info(msg)
Expand Down Expand Up @@ -446,7 +446,7 @@ func LogSend(statusJSON string, feedback string, sendLogs, sendMaxBytes bool, tr
return string(logSendID), err
}

// WriteArr sends raw bytes encoded msgpack rpc payload, ios only
// WriteArr sends raw bytes encoded msgpack rpc payload from the native layer (iOS and Android)
func WriteArr(b []byte) (err error) {
bytes := make([]byte, len(b))
copy(bytes, b)
Expand Down
1 change: 0 additions & 1 deletion go/bind/keystore_android.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 android
// +build android

package keybase

Expand Down
Loading