# Dragons - Archive September 20th - December 30
## Decemmber 24(Fri) - Standup
**Anthony**
- done:
- Update return type to more convenient type (biging to hex string)
- Move ens client to status-go (testing)
- current:
- status go API + client to register/release ens
## Decemmber 22(Wed) - Standup
**Anthony**
- done:
- ENS API on statusgo
- ENS fetch resource url
- current:
- remove old resource url
- adapt ens client in desktop
- next:
- write tx needs refactor in order to works for provider/ens/other services
**Richard**
- done:
- status-go#2469 feat: LoginWithConfig - adds a function to override the nodeconfig from the DB with values passed on login
- current:
- Extract node_config from blob in settings table to separate tables in status-go
## December 20(Mon) - Standup
**Anthony**
- current:
- ENS service:
- Status-go: Mostly done and tested except the write tx. Waiting for Richard PR (there is some code sharing there)
- Status-lib: transform existing back end new with new API
- Status-desktop: updating code of ens service. Need sync with Richard as the only client of it is the web provider
**Richard**
- done:
- Web3 provider
- status-desktop#4314 refactor: move provider logic to status-go
- status-lib#136 refactor: move provider logic to status-go
- status-go#2465 feat: desktop browser provider
- current:
- Migrations for NodeConfig
- next:
- Browser ENS decode
## December 17(Fri) - Standup
**Anthony**
- done:
- Script to rebuild status go daily (need Richard review)
- current:
- ens service:
- I need to finalize the 2 function register/release
- Queries are done and tested
**Richard**
- current:
- Move provider logic to status-go
- status-desktop#4314 refactor: move provider logic to status-go
- status-lib#136 refactor: move provider logic to status-go
- status-go#2465 feat: desktop browser provider
Currently adding the functionality to send transactions from within the browser. Once that's done, I'll continue working on the test units for status-go changes (Altho so far, the read functions for the provider, message signing, and permission requests are working with no issues on Desktop)
## December 15(Wed) - Standup
**Anthony**
- done:
- Boilerplate module for saved address
- Script to rebuild status go daily
- Add saved address to wallet store
- prepare interview for Snr React dev
- Add ens service to status go
- current:
- Interview snr react dev
- add function to ens services
**Richard**
- done:
- Script to verify if status-lib/status-desktop/status-go commit is outdated
- current:
- Migrating provider logic to status-go
## December 13 (Mon) - Standup
**Anthony**
- done:
- Find out about the missing message was because of a bug we already fix and clients were not updated. For future refactor, let's ensure we always work on top of master
- current:
- need tasks: maybe bring what we did for wallet 2 in wallet 1 with new architecture? AFAIK it should mainly be saved address as the nft have already been moved
**Richard**
- done:
- status-go#2463 Send a contact advertisement when the profile picture is removed
- current:
- need tasks :)
## December 10 (Fri) - Standup
**Anthony**
- done:
- desktop: refactor: Clear message history
- go-waku: integrate swap with store
- desktop: add developer mode toggle (trigger more individual toggle)
- status-go: only broadcast message when we are connected
- go-waku: finish rpc (last 2 private methods)
- current:
- debug why *-ping message are not received by all clients
- next:
- need work
**Richard**
- done:
- go-waku#180 feat: add support for RFC31 ENR
- status-desktop#4278 chore: use TrustedMailServers from NodeConfig in mailserver cycle for Waku V1
- status-desktop#4276 fix: ensure the contact contains a valid ens name
- status-desktop#4258 fix: public chat history is not shown when leaving and rejoining the chat
- I had to change the status-go PR related to this to not delete topics but instead change the last request time to 0
- Document mailserver behaviour and problems
- current:
- Fixing code review items for PR status-desktop#4278 and go-waku#180
- next:
- status-go: emit signal when a contact removes their image
## December 8 (Wed) - Standup
**Richard**
- done:
- status-go#2460 fix: remove mailserver topic when deactivating a chat
- status-lib#126 fix: load messages from mailserver after rejoining a chat
- go-waku#174 fix: handle stale clients in filter protocol
- go-waku#179 feat: separate waku2 network
- go-discover#0 create repository with extract discover code from go-ethereum
- go-discover#1 feat: add optional node validation
- debug why mail-03.do-ams3.eth.prod was timing out consistently.
- Jakub determined it was due to the server running out of disk space
- current:
- go-waku - Add support for RFC31 ENR
**Anthony**
- done:
- desktop: refactor: Mark message as read
- desktop: Fix linux crash when adding contact (it might also fix windows crash)
- desktop: add developer mode toggle (trigger more individual toggle)
- status-go: only broadcast message when we are connected
- go-waku: add encrypt asymmetric/symmetric message rpc endpoint
- go-waku: implement logic to publish from waku (will do status-go when we update next time)
- go-waku: swap, add it to the node and allow to parameterize it
- current:
- debug why *-ping message are not received by all clients
- desktop: refactor: Clear message history
- go-waku: integrate swap with store
- next:
- go-waku: finish rpc (2 methods to implement) (probably needs to run end to end test)
- MAYBE: go-waku: implement mock mode for swap (not done yet in nim-waku)
## December 6 (Mon) - Standup
**Anthony**
- done:
- go-waku: publish a message with logic for lightpush and relay + retry.
- Follow up will be status-go
- go-waku: enable swap soft mode
- status-go: fix to wait for waku node to be fully started before sending a message
- current:
- Add a developer mode toggle to advance settings
- Investigating a crash on ubuntu (waiting for reproducible steps)
- next:
- swap: enable mock and hard
**Richard**
- current
- go-waku - Handle stale clients in filter protocol
- go-waku - Add support for RFC31 ENR
- next:
- go-waku Separate DiscV5 Network
- go-waku RLN - cross compile ARM
- I need tasks!!
## December 3 (Fri) - Standup
**meeting notes**:
- we're currently blocked due to issue https://github.com/status-im/nim-waku/issues/791
- meanwhile we might continue testing message reliability improvements, but using waku v1
- discussion about https://github.com/status-im/feature-specs/pull/40
**Anthony**
- done:
- status-go: fix send message while not being connected
- desktop: fix community popup closing when save is successfull
- status-go: mark message as processed in go-waku2
- desktop: unfurl multiple link
- current:
- investigating mailserver connection
- investigating retry mechanism when sending message in go-waku
- next:
- gowaku: SWAP
**Richard**
- done:
- Bug hunting
- Investigate why in desktop and status-go, why message history is missing in Iuri's account and why fetching the history in new accounts wasn't working correctly.
- Identified that nim-waku was presenting store failures frequently. The cause of the error was the migration code did not run, so columns were missing in the message table, so when nim-waku is restarted, the message history wasn't being reloaded
- nim-waku#790 fix: return db error message
- Meeting with Sanaz and Pascal about community history
- status-desktop#4229 feat: show real sync date in "Fetch more messages" button
- current:
- go-waku RLN - trying to compile RLN for android
## December 1 (Wed) - Standup
**Richard**
- done:
- status-go#2450 chore: log version and commit to log file
- status-go#2448 fix: error reordering chats when destination category position is the same as original chatId position
- status-go#2438 feat: waku2 - use identify protocol
- This is a breaking change, and changes in the node configuration are required in on both in status-desktop and status-react.
- go-waku#171 fix: wakuflag for ListenAddresses ENR
- status-desktop#4216 fix: RPC method invocation as soon as Import Community popup was opened bug Communities priority 2: medium ui
- status-desktop#4200 fix: appimage freezes on login
- Debug missing members in communities after importing the account.
- The issue happen because open communities do not have member lists, yet we are still displaying them in desktop. Requires a decision by @iurimatias and @cammellos regarding how to proceed
- current:
- Debugging missing messages
- go-waku RLN - trying to compile RLN for android
**Anthony**
- Done:
- Implement waku2 part of marking messages as delivered to help with message missing when disconecting while fetching messages
- Current:
- Message missing:
- Debugging Iuri message missing folder
- Looking at requesting historic message with a bit of buffer
- Next:
- go-waku: SWAP
## November 29 (Mon) - Standup
**Anthony**
- done:
- Fix issue when sending multiple url in one message
- Bot to send message automatically
- current:
- go-waku: swap
**Richard**
- done:
- go-waku#170 fix: use max Int32 instead of 64 due to compile issue on android
- go-waku#169 fix: increase response read limit
- go-waku#168 fix: disconnect peer after failing 2 consecutive pings
- bump go-waku in status-go -> status-lib -> status-desktop
- current:
- Trying to fix Appimage freeze on linux
- go-waku RLN
## November 26 (Fri) - Standup
**Anthony**
- done:
- Fix issue when requesting data from mailserver to iterate throught all topics
- Bot to send message automatically
- Fix fetch more messages being broken on 0.4.0
- Fix telemetry: take into account joining/leaving channel as much as possible
- current:
- go-waku: swap
- desktop: fetching messages when laptop is idle
## November 24 (wed) - Standup
**Richard**
- done:
- go-waku#167 refactor: mainteinaibility fixes
- go-waku#166 refactor: use WaitGroup for graceful shutdown of worker goroutines
- go-waku#164 feat: add NAT for DiscV5 UDP port
- current:
- status-go#2438 feat: waku2 - use identify protocol
- There's an issue in nim-libp2p causing 0.0.0.0 ip addresses to be advertised instead of a normal IP Address
- go-waku: RLN
- Interop rust -> go
- next:
**Anthony**
- done:
- Fix sticker showing resend next to them all the time
- Refactor rpc runnable service
- Start swap protocol with soft mode
- Build dashboard for telemetry
- current:
- Monitor telemetry dashboard
- Build bot on status go to send message every tick
- next:
- Continue swap protocol
- Add missing rpc function for private
## November 22 (mon) - Standup
**Richard**
- done:
- status-go#2434 feat: Add DiscV5 to Waku2
- go-waku#160 fix: port number verification
- go-waku#159 fix: invalid ticker usage
- go-waku#158 refactor: remove topic type
- current:
- status-go: Use identify service instead of config to determine the protocols supported by a node
- Add NAT for DiscV5 UDP ports
**Anthony**:
- done:
- fix buying ens + tx in browser
- waku: add get messages in filter
- waku: fix logging
- current:
- keep looking at the telemetry and all good
- Richard: we need to sync to prepare next dogfooding using waku2
- waku: started to look at swap
## November 19 (fri) - Standup
**Anthony**
- done:
- Desktop: fix buying ens + tx in browser
- go waku: [rpc] add get messages in relay
- go waku: [refactor] option for filter
- go waku: [rpc] init private service
- telemetry: fix calculation happening too early
- current:
- go waku: [rpc] add get messages in filter
**Richard**
- done:
- status-go#2433 fix: waku2 - send messages in a separate goroutine
- go-waku#153 test: stop / start discovery v5
- status-desktop#4134 fix: missing expired/timeout attributes in resend button
- status-desktop#3923 fix UI issues related to provider migration
- current:
- status-go: Use identify service instead of config to determine the protocols supported by a node
- Expose DiscV5 in status-go
- Add NAT for DiscV5 UDP ports
- next:
- Test interop of discV5 with nim-waku
## November 17 (wed) - Standup
**Anthony**
- done:
- Fix telemetry by adding one more check that the telemetry has been enabled for at least 1 period
- current:
- Superset UI for telemetry (needs to reach out to Jakub)
- go waku: rpc relay, needs sync with Richard for dialing peers
- Message reliability:
- **Still Investigating**
**Richard**
- done:
- go-waku#151 fix: invalid ENR generated for addresses
- go-waku#150 feat: discoveryV5 - part2
- Autoupdate ENR
- Add discoveryV5 options to wakunode for usage as a library
- Add flags to go-waku node to enable and configure discV5
- go-waku#149 feat: discoveryV5 - part1
- Implement discV5 proof of concept
- ENR filtering on waku field
- current:
- Trying to reproduce the missing message issue on wakuV2
- Expose DiscV5 in status-go
- Clear peer store on fleet switch
- next:
- Add NAT for DiscV5 UDP ports
- Test interop of discV5 with nim-waku
## November 15 (Mon) - Standup
**Anthony**
- done:
- bump status-go
- Fix add bookmark button
- Fix new account generation with error
- current:
- Superset UI for telemetry (waiting for Jakub)
- go waku: rpc relay, needs sync with Richard for dialing peers
- Message reliability:
- Sync with Cammellos regarding state of mobile, observed similar behaviour
- Sync with Cammellos regarding push script, will be deploy today/tomorrow
- Confirmed that the problems happens on waku v1 and v2
- **Investigate** status-go code trying to understand where the error might be
**Richard**
- done:
- go-waku#149 feat: discoveryV5 - part1
- current:
- fix status-deskop#3923 code review errors
## November 12 (Fri) - Standup
**Anthony**
- done:
- go waku: add more test
- desktop: handle error message when adding an account in wallet
- current:
- Superset UI for telemetry (waiting for Jakub)
- go waku: rpc relay, needs sync with Richard for dialing peers
- Started to work on: https://github.com/status-im/status-desktop/issues/4108
**Richard**
- done:
- status-desktop#4096 feat: add toggle for switching status-go DEBUG log level
- status-go#2427 waku2: log envelope hash and ids for all messages
- go-waku#147 test: public_key and resolver
- libp2p/go-libp2p-core#219 generate ecdsa public key from an input public key
- current:
- DiscoveryV5 in go-waku
## November 10 (Wed) - Standup
**Anthony**
- done:
- Telemetry: Cron + service deployed
- Telemetry: Client (status-go + status-lib + status-desktop)
- Status-lib: Fix test
- Go-waku: Add more test for low coverage files
- Go-waku: Add rpc admins + store
- current:
- Superset UI for telemetry (currently I am doing query directly on service). I need to sync Jakub (he is OOO this week)
- next:
- continue rpc go-waku (let me know if something more important)
- telemetry testing/adding more breakpoint
- Something else?
**Richard**
- done:
- go-waku#126 feat: 23/WAKU2-TOPICS (utils for generating pubsub and content topics)
- go-waku#143 feat: select peer with lowest ping time and test peer functions
- go-waku#142 fix: store protocol should have a host regardless if it acts as store node or not
- status-desktop#4043 fix: provider chainid format
- status-desktop#4032 feat: prepare desktop for dogfooding (including latest changes from status-go / go-waku)
- status-go#2425 feat(waku2): use relay or lightpush depending on the number of peers
- Rebase status-desktop PRs related to Waku2
- current:
- refactor: ens section
- next:
- DiscoveryV5 in go-waku
## November 8 (Monday) - Standup
**Michele**
- done:
- was OOO (bank holiday) Thu and Fri
- current:
- prepare for call with NXP about new signature schemes/roadmap
- call with NXP (now moved to tomorrow)
- wait for https://github.com/status-im/status-lib/pull/75 to be reviewed/merged - without this no Keycard accounts be created, this is a blocker
- next:
- start integration of the new status-keycard-go library with status-lib/status-desktop
**Anthony**
- done:
- go-waku: refactor lightpush node options
- go-waku: unsubscribe from relay topic
- go-waku: expose rpc from waku relay
- current:
- Telemetry:
- API: Done: change code to Postgres
- Client: Done, dealing with PR feedbacks about where to start pushing data
- Desktop: Done
- Aggregator: Finished testing, updated with a simpler version
- Deploy service to server
- DB started and running
- Service Stated and connected to db
- WIP: nginx
**Richard**
- done:
- OOO Friday
- go-waku#135 refactor: concurrent map and slices for filter
- go-waku#134 feat: clean up older records in message queue
- go-waku#132 refactor: filter - extract logic from `wakunode2.go` and move it into `filter` package
- go-waku#131 test: unsubscribe to filter
- go-waku#130 refactor: use envelopes in the store instead of WakuMessage
- go-waku#129 feat: message retention policy for wakustore
- go-waku#128 fix: add size to store message channel
- status-desktop#4043 fix: provider chainid format
- The motivation for this fix was due to an error found by Andrey in mobile where some dapps in Binance Smart Chain were freezing.
- status-go#2422 feat: add dns discovery to wakuv2
- WakuV2 Dogfooding
- Setup nim-waku node in digital ocean droplet
- Use latest go-waku version, including DNS Discovery usage in status-go
- Participate in 2 sessions of dogfooding
- Ask @jakubg for access to [nim-waku test fleet logs](https://kibana.infra.status.im/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(logsource,severity_name,message),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:d6db7610-60fd-11e9-98fa-2f101d13f938,key:fleet,negate:!f,params:(query:wakuv2.test),type:phrase),query:(match_phrase:(fleet:wakuv2.test)))),index:d6db7610-60fd-11e9-98fa-2f101d13f938,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc))))
- current:
- status-go: choose between lightpush and relay depending on number of peers
- next:
- refactor: ens section
**Andrea**
- done:
- finished refactoring examples
- current:
- trying to remove go-ethereum as dependency using other pkgs
- update nim-keycard-go to use status-keycard-go
## November 5 (Friday) - Standup
**Anthony**
- done:
- Desktop: Second fix for chat not being display at start due to pointer issue I believe
- Investigate about collectible not being displayed: it was due to network restriction in Belarus
- current:
- Telemetry:
- API: Done
- Client(Status-go): Done
- Desktop: Done
- Aggregator: Dev done, testing
After discussion with Jakub, we will us postgre as db so that we can plug in superset for the UI.
I will open the PRs once the testing of aggregator is successful
- next:
- RPC for go waku
**Andrea**
- done:
- fixed logging
- fixed signature parsing
- current:
- refactoring commands and examples
## November 3 (Wednesday) - Standup
**Andrea**
- done:
- holidays :)
- current:
- fixing logging
- fixing signature parsing in keycard-go
- testing shared lib
**Anthony**
- done:
- go-waku: keep adding test:
- filter
- lightpush
- go-waku: bootstrap the waku-rpc with the first service and adapt the method
- go-waku: build example on jenkins such that never get outdated
- Desktop: Fix chat being lost at restart
- Desktop: Fix STT not being displayed by default on Ropsten
- Desktop: Make the receive modal use the old wallet (Not yet refactored)=
- current:
- Build telemetry service:
- API: Done
- Client: In Progress
- Aggregator: TODO
- UI to enable: TODO
- next:
- go-waku: keep adding the rpc function
**Richard**
- done:
- go-waku#126 chore: add codeclimate code coverage support
- go-waku#123 various:
- refactor: replace peer_events example app by a test
- chore: upgrade go-ethereum dep
- fix: inefficient assigns
- chore: use examples makefiles when building examples
- go-waku#119 refactor: relay
- status-go#2416 wakuv2 message confirmations
- rebases:
- status-desktop#3923 refactor: provider permissions and ens resolution
- status-desktop#3751 feat: wakuv2 rendezvous (WE SHOULD USE THIS PR FOR DOGFOODING WAKUV2)
- troubleshoot status-desktop#3822 Changing picture is crashing the app. It's fixed by @Jo PR#4018
- troubleshoot network connectivity issues and random messages popping up on wakuV2
- relevant conversation in https://discord.com/channels/864066763682218004/865466680129880074/905253193494175755
- current:
- status-desktop: refactor browser wallet
- next:
- refactor: ens section
- status-go: use dns discovery
- status-go: choose between lightpush and relay depending on number of peers (depends on discussion with Oskar in tomorrow call)
- nim-waku: register nodes in go-waku rendezvous nodes
**Michele**
- done:
- fix some bugs in the status-keycard-go lib
- find out why shared library crashed on Windows
- next:
- thu and fri off (bank holidays)
## November 1 (Monday) - Standup
**Richard**
- done:
- go-waku#119 refactor: relay
- go-waku#118 refactor: store and lightpush
- go-waku#117 refactor:
- add Next() to retrieve more results when querying a store node
- create Query and Result structs to not expose store protocol protobuffers to library users
- go-waku#114 fix: store and lightpush metrics
- go-waku#113 chose node type when starting filter and make relay optional
- go-waku#110 test: keep alive
- current:
- status-go: message confirmations in wakuv2
- status-desktop: refactor browser wallet
- next:
- refactor: ens section
- status-go: use dns discovery? depends on discussion with Hanno in https://forum.vac.dev/t/vac-3-zk/97
## October 29 (Friday) - Standup
**Anthony**
- done:
- go-waku: test for lightpush is done, thanks to Richard for the help
- Receive transaction from wallet load accounts from legacy
- Request tx from 1-1 chat do not break the app
- current:
- Accepting a contact request doesn't really create the 1-1 chat
- next:
- go-waku: test for filter
**Richard**
- done:
- status-desktop#3923 refactor: provider permissions and ens resolution in browser address bar
- status-lib#95 refactor: ens service - resolve ens
- go-waku#109 fix: select random peer instead of just the first one available in the peer store
- current:
- status-go: message confirmations in wakuv2
- status-desktop: refactor browser wallet
- next:
- refactor: ens section
- go-waku: test keep alive
- status-go: use dns discovery? depends on discussion with Hanno in https://forum.vac.dev/t/vac-3-zk/97
**Michele**
- done:
- implement load key flow
- export functions to be callable from C
- current:
- write more complete example code
- debug
## October 27 (Wednesday) - Standup
**Anthony**
- done:
- go-waku: add test for lightpush
- go-waku: add test for relay
- refactor wallet with new architecture
- current:
- Remove old wallet code
- next:
- move send/receive tx to new architecture
**Richard**
- done:
- go-waku#104 test: store protocol
- go-waku#105 test: store pagination and persistence
- go-waku#108 test: resume and time based queries
- status-desktop#3918 fix: missing property in browser backend and path to provider.js
- status-desktop#3499 REBASE chore: upgrade to QT 5.15.2
- fix: keycard - set soname in dynamic library on linux
- status-desktop#3926
- status-lib#94
- nim-keycard-go#2
- current:
- status-desktop#3923 refactor: wallet functionality within the browser
## October 25 (Monday) - Standup
**Richard**
- done:
- status-desktop#3905 refactor: dapps and permissions
- [Document desktop requirements for WakuV2](https://forum.vac.dev/t/desktop-requirements-for-wakuv2/105/3)
- [Troubleshoot/test reconnections in go-waku](https://www.youtube.com/watch?v=WJZAHCUJtQ4)
- current:
- Unit testing go-waku store protocol
- next:
- refactor: wallet functionality within the browser
**Anthony**
- done:
- Go waku: add test for generating request id
- current:
- Go waku: add test for relay protocol
- Desktop: Keep refactoring the wallet
**Andrea**
- done:
- factory-reset methods for keycard
- next
- on holiday until 3rd of November
**Michele**
- done:
- implement signing flow
- add factory reset to flows
- fix connection error handling
- wrote UX flow document https://notes.status.im/RTXWNrTbR8qpZ7_ofTjd1A
- current:
- implement load key flow
- next
- export functions to be callable from C
- write more complete example code
## October 22 (Friday) - Standup
**Anthony**
- done:
- go-waku: Add test for persistence module
- current:
- Continue refactoring the wallet: more especially the various account generation and the account switching
**Michele**
- done:
- implement unblock pin
- implement export key flow
- implement unpair flow
- implement recover account flow
- implement login flow
- improve get app info flow
- current:
- implement remaining flows
**Richard**
- done:
- status-desktop#3892 refactor: provider and create dapp permissions service
- status-lib#92 refactor: dapp permissions
- go-waku#97 test: payload encryption
- go-waku#96 test: payload encoding / decoding
- go-waku#95 test: utils
- go-waku#94 test: broadcast
- current:
- status-desktop: refactor dapps permissions module
- go-waku: add unit tests for store protocol
**Andrea**
- done:
- fixed bug on pairing if card is removed from usb reader
- finished testing `create mnemonic`
- added `import mnemonic`
- current:
- adding re-installation methods to re-install the applet on keycard
## October 20 (Wed) - Standup
**Anthony**
- done:
- Go Waku: Add test for timer
- Go Waku: Add test metrics server
- Go Waku: Add test for sqlite persistence
=> In general adding test for go waku ;)
- current:
- Continue working on adding test to go waku
- Continue refactoring the wallet
**Richard**
- done:
- status-desktop#3861 Update go version in dockerfile because go-waku requires at least go 1.15.
- status-desktop#3812 Fix code review issues in browser module
- status-desktop#3751 Use go-waku fleet for rendezvous. We have to merge this soon
- Investigate MVDS:
- It's actually working in status-go with go-waku
- We are ignoring the `message-delivered` signal in desktop. This signal is only emitted in 1:1 chats. I'm going to open an issue for this
- We still need the message confirmations for public chats and communities.
- current:
- Continue working on provider refactoring
**Andrea**
- done:
- finished implementing the `generate mnemonic` in `keycard-go`, `keycard-cli`
- current:
- trying to fix CI to build `keycard-cli` with newer go versions
- next:
- testing `generate mnemonic` in `status-keycard-go`
**Michele**
- done:
- implement authentication
- add factory reset hook
- add unblock PIN hook
- current:
- implement Unpair flow
- implement RecoverAccount flow
- next:
- implement other flows
## October 18 (Monday) - Standup
**Anthony**
- done:
- go-waku: abstract db from rendez vous
- go-waku: add hook to format and run go mod tidy on commit
- current:
- Refactoring wallet, can those PR be merged:
- https://github.com/status-im/status-lib/pull/89
- https://github.com/status-im/status-desktop/pull/3811
- https://github.com/status-im/status-desktop/pull/3809
As well as other PR for refactor, I am being blocked because other part have created similar files than me, also I keep doing rebase due to changes in base
**Richard**
- done:
- go-waku#86: fix: goroutine leak on ping
- go-waku#87: refactor: peer selection and filter API
- go-waku#90: fix: incorrect multiaddress format for websockets
- go-waku#0: fix: peer metrics
- status-desktop#3812 refactor: creating module for browser and provider
- status-lib#90 refactor: bookmarks
- current:
- status-desktop: move provider code to new architecture
- status-go: use go-waku fleet
- next:
- Investigate why MVDS is not working in status-go when WakuV2 is enabled
**Michele**
- done
- improve flow structure and error handling
- write a test with flow signal handling
- implement GetAppInfo flow
- current
- implement pairing
- implement RecoverAccount flow
- next
- implement all flows
**Andrea**
- done
- added last keycard commands
- current
- implement `generate mnemonic` in `keycard-go`, and use it in `keycard-cli` and `status-keycard-go`
## October 15 (Friday) - Standup
**Anthony**
- done:
- go-waku add ability to regenerate proto
- go-waku abstract db from rendezvous
- current:
- refactor wallet
- Most of the boilerplating is done
- Now working on the service/logic
**Richard**
- done:
- go-waku
- Added `--advertise-address` flag. This lets go-waku nodes attach themselves to any IP address (requested by @jakubg for fleet deployment purposes)
- Added `--show-addresses` flag. Prints to stdout the node multiaddresses (requested by @jakubg for fleet deployment purposes)
- Added `--address` and `--ws-address` flags to set the IP address of the node.
- current:
- refactoring browser:
- boilerplate code for refactoring browser done, I'm plugging in now the services
- I have questions regarding how to access submodules from the view
- For example i have a list of bookmarks and i can access it via `browserModule.sectionsModule` but I want to expose functions like `createBookmark`, `removeBookmark`, and `updateBookmark`, but I don't know where should I expose those. Should those be part of `browser_section/model.nim`? or should be part of `browser_section/view.nim`
- We have a `theModuleName.sectionsModel`, does that mean that I could have slots in the module itself? (i.e. `browserModule.myFunction`)?
- Would it be possible to have more than one model in the same module? i.e. `browserModule.bookmarksModel` and `browserModule.permissionsModel` instead of just `browserModel.sectionsModel`
- Is it necessary for all submodules and sub-submodules to register as `singletonInstance.engine.setRootContextProperty("theName", result.viewVariant)`? isn't it possible to access from QML a sub-submodule with a path like `parentSubmoduleName.subsubmoduleName.theSlot()`
**Andrea**
- done
- created examples pkgs in status-keycard-go and fixed the build tasks to build both the examples with go only and C shared lib.
- current
- adding the remaining keycard commands
**Michele**
- done
- implement keycard flow structure in status-keycard-go
- current
- implement actual flows
## October 13 (Wednesday) - Standup
**Anthony**
- done:
- go-waku: fix linter issue
- go-waku: add log level option
- Keep only 1 ens view (in chat) (later should be moved to a more global place)
- Fix precision of volume and refactor audio component
- Init boilerplate code for wallet
- current:
- Build tokens app service
- next:
- Build account app servive
- Continue working on wallet refactor
**Richard**
- done:
- go-waku#67 Create dockerfile in go-waku for deployment of a fleet. (Jakub is working on infra stuff for this)
- go-waku#68 Refactor:
- It's not necessary for library users to know about protobuffers
- Message channel is created automatically when subscribing to a filter node
- Stopping a wakunode unmounts any protocol that was enabled during start
- Rebase status-desktop#3751 and status-go#2404. Can we merge these?
- current:
- Working on branch refactoring/browser of status-desktop, on boilerplate code for moving code to new architecture
**Michele**
- done:
- define API for the new status-keycard-go module https://notes.status.im/70M4O7hKSX-uk6gDEdq2Rg
- current:
- implementing flow structure in status-keycard-go
**Andrea**
- done:
- found solution for the keycard problem while exporting master public key
- started new repo `status-keycard-go` with go only implementation of high-level keycard functions and compiled as shared lib
- current:
- creating example packages to test the go and the C shared lib implementation via command line
## October 11 (Monday) - Standup
**Richard**
- done:
- Improve documentation of go-waku
- go-waku#66 refactor: change filter function parameters to not use protobuffers
- go-waku#49 fix: resume message history only after a peer with store protocol is connected
- go-waku#42 replace go-wakurelay-pubsub by go-libp2p-pubsub and upgrade outdated LIBP2P dependencies
- rendezvous#31 chore: upgrade outdated LIBP2P dependencies
- go-multiaddr-ethv4#3 chore: upgrade outdated LIBP2P dependencies
- status-go#2404 chore: bump go-waku and adapt code to include new go-waku changes
- status-desktop#3792 Move example QT app to repo, and modify it to only use status-go
- status-desktop#3791 access status-go functions directly instead of using callprivaterpc
- current:
- go-waku: fix issue in filter protocol to remove a subscriber if more than N errors have occured when trying to dial subscriber
- next:
- I need more tasks!
## October 8 (Friday) - Standup
**Michele**
- done:
- https://github.com/status-im/status-lib/pull/75 ready review & merge (no breaking changes)
- opened https://github.com/status-im/status-desktop/pull/3790 - ready for review
- finish account creation with pre-initialized Keycard - the account works for chatting!
- current:
- login with Keycard
- next:
- better error handling
- handle card blocked/frozen/not keycard case
- other onboarding flows
**Richard**
- done:
- go-waku#64 refactor: connectedness
- current:
- Continue experimenting with accessing status-go functions directly from nim
- Move example QT app from status-lib to status-desktop
- Remove go-wakurelay-pubsub repo and use libp2p pubsub with custom options
- latest version allows doing the customizations we have in go-wakurelay-pubsub,
so it makes sense to use that instead of maintaining our own version
- next:
- Prepare presentation for proposal of removing js-layer for chat related status-go operations
- Improve documentation of go-waku
**Andrea**
- done
- fixed naming conflict in status-go/keycard-go signal libs
- generate address pubKey + after exportKey
- generate seed from mnemonic in nim-keycard-go
- current
- fix keycard-go bug on exportKey with path `m/`
## October 6 (Wednesday) - Standup
**Andrea**
- done:
- added getStatus/pair/generateKey to status-lib
- added missing commands in nim-keycard-go
- updated keycard-go and nim-keycard-go to return a keypair with the exportKey command
- updated keycard-go to parse the `remainingAttempts` response on wrong pin error.
- updated `keycard-cli` with the export-key command
- opened PR in status-lib https://github.com/status-im/status-lib/pull/82
- current:
- generate seed from mnemonic in nim-keycard-go
- next
- add keycard commands: `init, load key, generate mnemonic, sign, change pin, unblock puk`
**Michele**
- done:
- status-desktop#3737 improve QML code for Keycard screens according to review
- status-desktop#3737 make it properly compile and load on macOS
- implement pairing and open secure channel
- implement PIN verification
- implement error handling for PIN/pairing verification
- current:
- export keys from card and create account using them
- next:
- handle card blocked/frozen/not keycard case
- login with Keycard
- other onboarding flows
**Richard**
- done:
- status-desktop#3777 remove unneded mailserver request when joining a channel and add extra details to mailserver logs (request id, and num batches)
- status-lib#78 added HistoryRequestBatchProcessed signal and mailserver batch attributes
- status-go#2397 add batch information and request ID in history requests
- go-waku#62 generate/specify/load node privatekeys
- go-waku#63 fix: add peers before starting node
- go-waku-rendezvous#0 fix: validate signed envelopes
- Add M1 support to nim-keycard-go
- current:
- Refactor go-waku peer connectedness code
- next:
- I need more tasks!
## October 4 (Monday) - Standup
**Richard**
- done:
- status-desktop#3759 refactor: contacts performance
- status-lib#74 refactor: contacts-perfomance
- NOTE: the solution is hacky since it calls functions to generate the alias and identicon for messages received. However this code will be removed because status-go will include a http server to obtain the profile picture / identicon, and the alias will be removed.
- go-waku#60 Use routing records in rendezvous so the peer information is signed
- go-waku#61 refactor: reorganize wakunode cli flags for simpler usage
- [Status-go waku2 configuration](https://hackmd.io/@status-desktop/B1naRjxh_/%2FOSBMLTOSTFOefow38af54A) settings and observations
- status-lib#32 rebase example QT app PR (*WE SHOULD REALLY MERGE THIS SOON*)
- current:
- Guesstimate mailserver syncing
- Rebase QT 1.5.15 PRs (*WE SHOULD REALLY MERGE THEM SOON*)
- next:
- Create specs / add comments to go-waku, go-wakurelay-pubsub and go-libp2p-rendezvous
- Rename repo to go-waku-rendezvous since the rendezvous version I'm using is different enough from libp2p/rendezvous and status-im/rendezvous
- Load keyfiles in go-waku
- Reconnect to static nodes
**Michele**
- done:
- status-lib#75 add storage and login support for Keycard accounts
- status-desktop#3737 correct flows
- call with security team about pairing flows and biometric login/signing
- current:
- implement pairing and opensecure channel
- implement PIN verification
- implement account creation
- next:
- implement login with Keycard
- implement other onboarding flows
**Andrea**
- done:
- added commands opensecure channel, pair, verify pin and export key to status-lib
- added same commands to `nim-status-go`
- can I merge https://github.com/status-im/status-lib/pull/63 ?
- current:
- parse exportKey response in [keycard-go](https://github.com/status-im/keycard-go) and [keycard-cli](https://github.com/status-im/keycard-cli)
- update `nim-keycard-go` and `status-lib` to return the priv key and the generated pub key
- next:
- implement the rest of the keycard commands
## October 1 (Friday) - Standup
**Richard**
- done:
- status-go#2394 connect to waku2 peers async
- status-go#2393 add rendezvous functionality to waku2
- status-go#2391 enable bandwidth stats depending on node config setting (requested by mobile team)
- go-waku#56 use leveldb for storing peers and clean up periodically older records from rendezvous server
- go-waku#58 refactor: rendezvous code and simplify adding peers
- go-waku#59 add context parameter to peer dial so connecting to a peer can timeout
- status-lib#73 add rendezvous to waku2 using hardcoded go-waku rendezvous server multiadddress
- status-desktop#3751 enable waku2 rendezvous depending on selected fleet
- status-desktop#3750 unssuccesfully attempt to fix bearssl error
- Rebase wakuv2 PRs in status-desktop
- Configure code-climate in go-waku repo
- blocked:
- With these PRs status-desktop or status-lib when cloned as a separate repo don't need to use install_name_tool, however, if I modify status-lib submodule inside desktop, then I cannot run `make test` because it fails for unknown reasons. Since removing install_name_tool usage from code is not super important I'll probably leave this investigation for later, however if someone with mac expertise wants to take a look, I'd appreciate that
- status-go#2392 Set @rpath when building shared library
- status-lib#71 remove install_name_tool and add m1 support
- current:
- status-desktop#3651 refactor contacts
- Guesstimate mailserver syncing
- next:
- Use routing records in rendezvous so the peer information is signed
- Create a document for status-go waku2 configuration settings and observations
- Create specs / add comments to go-waku, go-wakurelay-pubsub and go-libp2p-rendezvous
- Rename repo to go-waku-rendezvous since the rendezvous version I'm using is different enough from libp2p/rendezvous and status-im/rendezvous
**Andrea**
- done:
- refactoring on Keycard code to use the new backend model
- added tests
- added signals from nim-keycard-go
- added Keycard exceptions on keycard and connection error
- PR ready [https://github.com/status-im/status-lib/pull/63](https://github.com/status-im/status-lib/pull/63)
- current:
- add openSecureChannel, verifyPIN commands and exceptions
- add all the other simple commands
- manage usb/disconnection error
**Anthony**
- done:
- Refactor: statusgo backend returns object for profile/contacts
- Refactor: Group node part withing a new entity
- Refactor: Wallet/Account/Eth rpc call are now corrected into their respective entity
- Fix: Update new backend with test to works with status-desktop
- current:
- Refactor: Permission use directly the backend which need to be moved and split
**Michele**
- done:
- implement storage of pairings
- implement onboarding flow logic for account recovery
- handle connection signals
- rebase keycard-initial branch of status-desktop and a workaround compilation issues because or refactorings in status-lib
- PR ready for review [https://github.com/status-im/status-desktop/pull/3737](https://github.com/status-im/status-desktop/pull/3737)
- current:
- finish account recovery onboarding flow (when related status-lib functions are available)
- start implementing login for Keycard
- expose status-go methods to create/login with a Keycard account
## September 29 (Wednesday) - Standup
**Michele**
- done:
- Add Keycard feature flag
- Add Keycard onboarding flow entry point
- Add basic UI components for onboarding/login with Keycard
- Edit Makefile to include keycard-go and Dockerfile to include libpcsclite-dev
- Add code to test card connection
- Discuss with Carl, John, Guy-Louis the authentication and pairing flow
- Wrote https://hackmd.io/8g0MuXW2TSixVpJDEs5jdg to give security team a way to assess risks for simplified pairing flow
- current:
- Implement onboarding flow in case the card already has an account (Recover with Keycard flow)
- implement pairing and storage for pairing secrets
- expose status-go methods to create/login with a Keycard account
- implement keycard account creation
**Andrea**
- done:
- implemented wrapper for all the Keycard commands: ([status-im/nim-keycard-go](https://github.com/status-im/nim-keycard-go))
- updated status-lib to include and build nim-keycard-go
- [PR with initial integration in status-lib](https://github.com/status-im/status-lib/pull/63)
- implemented start/stop/select commands in keyard-lib
- current:
- adding signals to nim-keycard-go and use them in desktop to know when a keycard is inserted in a smartcard reader
- adding more keycard commands and response types in status-lib
**Anthony**
- done:
- Refactor of status lib response type (settings/profile/tokens/networks/gif/contacts/stickers)
- Fix removing a contact
- current:
- Try to bump status-lib to master (in response to latest change about status backend)
**Richard**
- done:
- status-go#2389 add gossipsub peer exchange option to wakuV2
- go-waku#52 add dns-discovery option to wakunode
- go-waku#53 add gossipsub peer exchange option to wakunode
- go-waku#54 rendezvous integration with go-waku (register / advertise), and add options to wakunode to act as rendezvous server
- go-libp2p-rendezvous#0 modify reference rendezvous to make it match status-im/rendezvous
- current:
- go-libp2p-rendezvous clean up expired peer records
- status-go integrate go-waku rendezvous
- next:
- Remove the need of using install_name_tool to link against libstatus on macos
- Guesstimate mailserver syncing
## September 27 (Monday) - Standup
**Andrei**
- current:
- #3541 online/offline/auto states
**Richard**
- done:
- Rebase status-go WakuV2 PRs
- status-go#2348 feat: add WakuV2 peer management functions
- status-go#2287 feat: wakuv2 peer persistence
- status-desktop#3686 chore: remove status-go from desktop
- status-desktop#3682 Add support for building desktopn on M1 by crosscompiling to amd64
- chore: strip libstatus.so and status-desktop from symbols and fix lintian errors on .deb package, which right now it's only missing adding the maintainer contact info, extended description and changelog and copyright files for it to be a valid .deb binary package
- current:
- Add rendezvous to go-waku / status-go
- Guesstimate mailserver syncing
**Anthony**
- done:
- Fix gas error overlap
- Fix delete message crash the app
- current:
- Build tokens list re-using multi chain networks
## September 24 (Friday) - Standup
**Anthony**
- done:
- Add toggle network function to enable/disable network
- Connect network to tokens/stickers function call
- Fix loading the correct settings
- Fix open popup on click in contact request popup
- Fix wallet1 crashes due to mix of events between wallet1 and wallet2: We need to use dedicated event for each wallet to avoid crashes
- Fix get token balance in status-go which was causing issue on status-react: We do not use this function in status-desktop but we should! as it saved many call. There is also a function to detect all the token automatically (maybe a good feature to implement?)
- current:
- Fix delete message crash the app
**Andrei**
- done:
- #3543 fixed editing mentions (PR)
- investigations:
- #3524 notification badges
- did not find a good cross-platform implementation yet
- #3522 activity center
- could not find exact requirements
- next:
- #3541 online/offline/auto states
## September 23 (Thursday) - Standup
**Andrei**:
- current:
- investigating #3541 (online/offline/auto)
- #3522 Activity center is showing wrong messages
- researching the logic behind the notifications
## September 22 (Wednesday) - Standup
**Andrei**:
- OOO
**Anthony**:
- done:
- Fix loading settings: There is a concern about naming file with the alias. Reason is that we can before login know which are the settings for each alias while before it was not known. This is also why the chatkey is not in the accounts only the keyuid. Also we should probably encrypt the settings.
- current:
- Fix https://github.com/status-im/status-react/issues/12586
**Richard**:
- done:
- status-go#2375 fix: cmakelist
- status-go#2374 fix: message cache hits SQL error that was causing messages to not being displayed
- status-desktop#3648 fix: maillserver issues:
- Display loading indicator on login when mailserver messages are requested
- Fix bug where the mailserver that's selected as soon as you login is disconnected while being still in the process of connecting instead of waiting until 10s have passed to try connecting to a different mailserver
- current:
- Building Desktop on M1:
- Created an example C app to try to reproduce the issue and share it with Go maintainer.
- The app works flawlessly, which seems to indicate that the problem is caused by nim
- Will try to translate the same app from C to Nim.
- Adding a signal in status-go to indicate the state of mailserver syncing
- Hunt for more ways to improve mailserver usage
- next:
- I need more tasks!
- .deb: these will be done once the QT1.5 PRs are merged. Otherwise it's not worth doing these
- Prepare CI
- Prepare APT repository for .deb distribution (Will need help from Jakub)
## September 21 (Tuesday) - Standup
**Andrei**
- current:
- #3522 Activity center is showing wrong messages
## September 20 (Monday) - Standup
**Andrei**
- done:
- #3546 Notification badge is shown even the chat is opened and message is read
- current:
- #3522 Activity center is showing wrong messages
**Anthony**
- done:
- Rebased PRs
- Fix color of my profile button
- Fix a merge issue with settings
- Fix background color of gif in dark mode
- Fix wallet banner on wallet 1
- Fix reopening gif popup to the correct tab
- Contact list are only kept in one place (no more multi sync)
- current:
- Investigate if recent changes on wallet are the cause for https://github.com/status-im/status-react/issues/12586 (quite likely)
- next:
- Create tokens2/ens2/stickers2 (Waiting for PRs to be merged otherwise I'll just create a mess)
- One above is done, link those entities to the network selected
**Richard**
- done:
- status-lib#38 adding more logs for identifying mailserver interactions
- status-desktop#3600 display mailserver interactions
- status-desktop#3512 .deb for status-desktop
- Depends on
- status-desktop#3499 upgrade to QT 5.15.2
- status-desktop#3127 use Status QT mirror (QT 5.15.2)
- status-go#2370 add soname to libstatus.so
- Creating a shared objects without a soname is a bad practice
- I also changed status-go so when building the so in linux, it creates `libstatus.so.0` and a symbolic link `libstatus.so` pointing to `libstatus.so.0`
- In the future we can change the `0` to the major version in file `VERSION`, which would be useful to identify API compatibility just by looking at the file name
- Might be a good idea to do the same change in macOS with the .dylib. This would help avoid having to use rpath or install_name_tool when building desktop
- current:
- Building Desktop on macOs M1:
- I wasn't able to fix the `runtime.open_trampoline` problem. Opened an issue in https://github.com/golang/go/issues/48437
- As a possible workaround, I will attempt to cross-compile DOtherside, status-go and status-desktop to amd64, and run with Rosetta
- I'll also try to figure out how to compile QT WebEngine module in M1 (in case the `runtime.open_trampoline` issue is fixed)
- next:
- Prepare CI for building .deb
- Prepare APT repository for .deb distribution (Will need help from Jakub)
- .rpm / snap support? I'll probably add these as issues tagged with "help wanted" since I don't use Fedora or Snap packages and nobody has requested these
## Changes
* new members: Andrei, Anthony, Richard