Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No contactPayloadDirty method in puppet-implementation. #43

Closed
su-chang opened this issue May 17, 2020 · 24 comments
Closed

No contactPayloadDirty method in puppet-implementation. #43

su-chang opened this issue May 17, 2020 · 24 comments
Assignees
Labels
enhancement New feature or request

Comments

@su-chang
Copy link
Member

When wechaty call method contactPayloadDirty, the wechaty-puppet-hostie can not match this method to wechaty-puppet.

Related issue: wechaty/wechaty#1964

@huan
Copy link
Member

huan commented May 17, 2020

Could you explain it in details with some code snip example, so that it can help me to understand it well?

@su-chang
Copy link
Member Author

public async alias (newAlias?: null | string): Promise<null | string | void> {
  ...
  await this.puppet.contactAlias(this.id, newAlias)
  await this.puppet.contactPayloadDirty(this.id)
  this.payload = await this.puppet.contactPayload(this.id)
  ...
}

wechaty-puppet-hostie need to call method contactPayloadDirty(), but maybe this method missed.

@huan
Copy link
Member

huan commented May 17, 2020

  1. Can we call this method in other puppet implementations, like padplus?
  2. Can you confirm whether we have this method contactPayloadDirty in our abstract class?

@su-chang
Copy link
Member Author

This method is not an abstract method in wechaty-puppet.

public async contactPayloadDirty (contactId: string): Promise<void> {
  log.verbose('Puppet', 'contactPayloadDirty(%s)', contactId)
  this.cacheContactPayload.delete(contactId)
}

I override it in wechaty-puppet-donut.

public async contactPayloadDirty (contactId: string): Promise<void> {
  log.verbose(PRE, 'contactPayloadDirty(%s)', contactId)

  if (this.bridge && this.bridge.cacheManager) {
    await this.bridge.cacheManager.deleteContact(contactId)
  }

  await super.contactPayloadDirty(contactId)
}

I can not find this method been called in my log. It is the reason of this issue.

I want to know does there need to add something in wechaty-puppet-hostie for this method.

@huan
Copy link
Member

huan commented May 17, 2020

contactPayloadDirty() is a method instead of an abstract method in our wechaty-puppet because it needs to be called as a support method for others.

I noticed that you said you have overridden it in wechaty-puppet-donut, could you please explain the reason of why you did that?

I don't think you should do that because the following two reasons:

  1. contactPayloadDirty() is in charge of update the cache in puppet cache. If you override it, it will not be able to update the cache in the puppet anymore, which I believe will cause problems.
  2. If you need to update your cache in your bridge.cacheManager, it is your duty to do that in other places, but not override the contactPayloadDirty in puppet.

So my suggestion would be:

  1. Do not override the contactPayloadDirty() anymore, just call it when you need to update the cache in puppet.
  2. You do not need to add anything in wechaty-puppet-hostie for this method, just call it as you need.

@huan huan added the question Further information is requested label May 17, 2020
@su-chang
Copy link
Member Author

Thanks for you response. I understand, there's no need to override the contactPayloadDirty() anymore.

@huan
Copy link
Member

huan commented May 17, 2020

You are welcome.

And one more thing: we should keep in mind that the existing methods in the wechaty-puppet are required to work for internal usage, so it will be better to never override them, except that we have a very strong reason to do that.

TL;DR: only implement the required methods for a wechaty-puppet, and put all other logics in other classes: Always keep the wechaty-puppet-xxx clean, simple, and stupid.

@su-chang
Copy link
Member Author

alias() and sync() are the same to call these two methods in Contact:

await this.puppet.contactPayloadDirty(this.id)
this.payload = await this.puppet.contactPayload(this.id)

For sync the updated contact payload, it seems failed when I want to sync() or alias() one contact. I get the same contact payload of contact each time until io-client restart.

After I add method await this.puppet.contactPayloadDirty(id) to contactPayload() method in puppet-implementation.ts, I can get the updated contact payload each time.

contactPayload: async (call, callback) => {
  log.verbose('PuppetServiceImpl', 'contactPayload()')

  const id = call.request.getId()

  try {
    await this.puppet.contactPayloadDirty(id) // here
    const payload = await puppet.contactPayload(id)

    const response = new ContactPayloadResponse()
    response.setAddress(payload.address || '')
    response.setAlias(payload.alias || '')
    response.setAvatar(payload.avatar)
    response.setCity(payload.city || '')
    response.setFriend(payload.friend || false)
    response.setGender(payload.gender)
    response.setId(payload.id)
    response.setName(payload.name)
    response.setProvince(payload.province || '')
    response.setSignature(payload.signature || '')
    response.setStar(payload.star || false)
    response.setType(payload.type)
    response.setWeixin(payload.weixin || '')

    return callback(null, response)
  } catch (e) {
    return grpcError('contactPayload', e, callback)
  }
},

Question
I do not know why the method await this.puppet.contactPayloadDirty(this.id) does not work when I call contact.alias() or contact.sync().

Reproduce Step

  1. contact.sync()
  2. modify contact alias in WeChat App or call API do that
  3. contact.sync() again

@huan
Copy link
Member

huan commented May 17, 2020

I believe your contactPayloadDirty() does not work is because you have overridden it?

Try to remove your override method, rebuild and try again, I guess it might be able to work.

@su-chang
Copy link
Member Author

Nope, it is not due to this problem, I have checked it just now. It still does not work.

@windmemory
Copy link
Member

windmemory commented May 18, 2020

I went through the code, and I think I understand what happened here.

image

I believe this is our current structure of wechaty-puppet-hostie. And @su-chang is working on the wechaty-puppet-xx. Now with his code in wechaty-puppet-xx, he could dirty the cache1, but when using Wechaty with hostie, it will read cache2 first, then read the cache1. However in some cases, like alias change event, he cleared the cache1, the cache2 still can not be cleared, which causing his problem now. Is there a way for underlying puppet to clear hostie cache?

@huan
Copy link
Member

huan commented May 18, 2020

@windmemory thank you very much for your great explaining with the clear picture, I agree with your analytics that the double layer of the cache is the reason is this problem.

Let's think about how to design a way for underlying puppet to clear hostie cache.

@su-chang
Copy link
Member Author

After I add method await this.puppet.contactPayloadDirty(id) to contactPayload() method in puppet-implementation.ts, I can get the updated contact payload each time.

Shall use this way as work around before the new design for underlying puppet to clear hostie cache? Willing to hear your suggestions. @huan @windmemory

@huan
Copy link
Member

huan commented May 19, 2020

I have a very naive design to solve this problem, draft it as follows:

  1. we add a dirty event for the puppet
  2. if a puppet receives the dirty event, it should:
    1. call onDirtyXXX() to clean the cache according to the event payload

To explain how it solves our problem:

  1. wechaty-puppet-donut want to update the contact id XXX
  2. wechaty-puppet-donut emit a dirty event, and the wechaty-puppet-donut cache has been updated
  3. hostie server received the dirty event, and emit this event over GRPC
  4. wechaty-puppet-hostie received a dirty event, then it updates its cache as well.

Then they are all good.

The above is just a scratch from my head today, please feel free to share your thoughts, thank you very much.

@windmemory
Copy link
Member

  1. we add a dirty event for the puppet
  2. if a puppet receives the dirty event, it should:
    i. call onDirtyXXX() to clean the cache according to the event payload

I think this design would be able to resolve the problem we have here.

@su-chang
Copy link
Member Author

So all update info will pop from wechaty-puppet-donut.

For contact.sync()
this method from initiative change to passive.

Case
Modify user contact in WeChat App
contact.sync() could not refresh the donut cache.

Due to donut can not know when the contact has been modified. We could emit a dirty event when the operation by API only.

@su-chang
Copy link
Member Author

su-chang commented Aug 4, 2020

@huan Do you have some idea about re-design this feature? What can I do for it?

@huan
Copy link
Member

huan commented Aug 5, 2020

Yes, I think we should implement the #43 (comment) .

I have run into the bug caused by this issue lots of times, so I believe we should go-ahead to fix it recently.

Could you please draft a design for my proposal above, so that we can make sure we are talking about the same solution?

After I confirmed that, I'd like to upgrade the abstract puppet to add those features.

@windmemory
Copy link
Member

To clear the cache in hostie server side, here is a workaround:

// wechaty-puppet-xx
public contactRawPayload (id: string) {
  // Any code that you do your stuff
}

public contactRawPayloadParser (id: string) {
  // Any other code that you do the parse
}

// Code that act as a workaround
// This will override the implementation in wechaty-puppet
public contactPayload (id: string) {
  await this.contactPayloadDirty(id)
  return super.contactPayload(id: string)
}

If you add the contactPayload function in your wechaty-puppet-xx, then you will lose the cache mechanism in wechaty-puppet layer, but this will partially solve the issue that we are facing here.

The reason that this alternative will partially solve the problem is that the wechaty-puppet-hostie client could only call the contactPayload method to server, even if we do a sync() on the contact. So if the wechaty-puppet-hostie server has the cache in wechaty-puppet layer, then the data in wechaty-puppet-xx will never be used. With the code above, user can clear the cache and load data directly from wechaty-puppet-xx by calling sync(). So I think this could partially solve the problem.

Here is the PR that I created to add the method definition so the client could be able to clear the cache in server side in a more elegant way.

@huan
Copy link
Member

huan commented Aug 19, 2020

Let's link all related Issues & PRs to this issue so that we can find everything from here.

@huan huan pinned this issue Aug 19, 2020
huan added a commit to wechaty/wechaty that referenced this issue Aug 19, 2020
huan added a commit to wechaty/wechaty that referenced this issue Aug 19, 2020
huan added a commit to wechaty/wechaty that referenced this issue Aug 19, 2020
@windmemory
Copy link
Member

Feels like we can close this issue since we've implemented the dirty logic in wechaty-puppet-hostie.

@huan
Copy link
Member

huan commented Aug 27, 2020

Yes, I think do.

@su-chang please help us confirm this issue had been resolved and close it if so.

@su-chang
Copy link
Member Author

It works well as expect, let's close it now.

Thank you for your great design, @huan @windmemory

@huan
Copy link
Member

huan commented Aug 27, 2020

You are welcome!

@windmemory windmemory unpinned this issue Aug 28, 2020
su-chang added a commit to su-chang/wechaty that referenced this issue Feb 22, 2021
* 0.45.3

* 0.45.4

* upgrade puppet to use async-map-like memory-card

* upgrade puppet

* 0.45.5

* build onbuild docker image

* 0.45.6

* test for onbuild home dir

* 0.45.7

* deploy wechaty/onbuld

* fix test for both wechaty & /bot

* 0.45.8

* publish to wechaty/wechatyh

* 0.45.9

* build with onbuld

* 0.45.10

* rename zixia/wechaty -> wechaty/wechaty

* 0.45.11

* fix typo

* 0.45.12

* fix onbuild npm run

* 0.45.13

* update official example

* Update README.md

* fix asscessory tests, and protect user class constructor from public to private

* Increase MaxListener for Wechaty

* 0.45.14

* add plugin uninstaller logic

* 0.45.15

* fix race condition for plugin uninstallation

* 0.45.16

* template clean

* 0.45.17

* upgrade puppet

* 0.46.0

* 0.46.1

* add new puppet for official account

* 0.46.2

* Wechaty is a Conversational SDK for Chatbot Makers

* fix bio

* 0.46.3

* clean log message

* 0.46.4

* upgrade hostie

* 0.45.6

* 0.46.5

* 0.47.0

* 0.47.1

* support onbuild:version

* 0.47.2

* use artifact image name

* 0.47.3

* clean version & tag

* 0.47.4

* 0.47.5

* fix hostie start bug

* 0.47.6

* clean

* 0.46.5

* 0.47.7

* add svg logos

* use wechaty.js.org host

* 0.47.7

* 0.47.8

* update

* 0.47.9

* use docker for changelog

* 0.47.10

* update changelog

* 0.47.11

* use wechaty.js.org/qrcode/ to replace wechaty.github.io/qrcode/

* 0.47.12

* Update README.md

* feat: add scoped wxwork puppet into puppet config (wechaty#2043)

* add scoped wxwork puppet into puppet config

* skip install scoped puppet

* 0.47.13

* add phone method in contact class (wechaty#2039)

* add phone method in contact class

* 0.47.13

* 0.47.14

* update wechaty-puppet version

* add jsdoc for contact.phone

* use puppet.dirtyPayload (wechaty/puppet-service#43)

* 0.47.15

* fix dirty exception

* 0.47.16

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.17

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.18

* implement the dirty logic (wechaty/puppet-service#43)

* 0.47.19

* clean

* 0.47.20

* remove deprecated methods (wechaty#2049)

* 0.47.21

* Upgrade to TypeScript 4.0!

* 0.47.22

* feat: add more methods into contact class (wechaty#2048)

* add more methods into contact class

* fix code with new wechaty-puppet

* 0.47.21

* 0.47.23

* throw a nice error message when we call user module before start wechaty

* 0.47.24

* 0.48.0 (wechaty#2050)

* bump hostie version to be the stable one (wechaty#2051)

* bump hostie version to be the stable one

* 0.48.1

* link images to wechaty.js.org

* update links

* 0.48.2

* update jsdocs

* 0.48.3

* add gitter puppet

* 0.48.4

* fix typo

* 0.48.5

* add location user module

* 0.47.25

* 0.48.6

* clean

* 0.48.7

* add telegram channel for wechaty

* 0.48.8

* add bibtex cite code

* 0.48.9

* add star history badge

* 0.48.10

* Split to trunks when making requests of room.findAll() and room.ready() (wechaty#2067)

* add pagination on room.findAll() and room.ready()

* 0.48.11

* fix wechaty#2073 (wechaty#2074)

* fix wechaty#2073

* 0.48.12

* 0.48.13

* Bump minor 49 (wechaty#2078)

* 0.49.0

* update hostie version to take advantage of the new stream grpc methods

* fix io client qrcode by encodeURIComponent

* 0.48.11

* upgrade deps

* 0.49.1

* upgrade puppet to v0.33

* 0.49.2

* 0.49.3

* 0.49.4

* fix typos

* 0.49.5

* clean

* Update README.md

* add credit link

* fix typo

* upgrade json-rpc-peer to v0.17

* 0.49.7

* 0.49.8

* Update Dockerfile (wechaty#2079)

按照 wechaty#1986 的方法用docker创建Hostie Token时,docker端报错。加入libxtst6库后可以完美运行。

* 0.50.0

* 0.50.1

* clean scan payload after login

* 0.50.2

* enable io sync message botie support

* 0.50.3

* use source for botie payload

* 0.50.4

* add whatsapp to official puppet names (wechaty/puppet-whatsapp#1)

* 0.50.5

* use a helper function for better FileBox instance check (wechaty/puppet-service#99)

* 0.50.6

* loost Puppet instance type checking (wechaty#2024)

* 0.50.7

* create looseInstanceOfClass (wechaty#2090) (wechaty#2091)

* create looseInstanceOfClass (wechaty#2090)

* 0.50.8

* 0.51.0

* 0.51.1

* fix file-box

* fix file-box

* 0.51.2

* rename from -> talker (wechaty#2094)

* 0.51.3

* add gitter & deprecate padplus

* strict typing check for typescript v4

* 0.51.4

* Update contact.ts (wechaty#2095)

fix: return payload friend

* rename from() to talker() from message

* 0.51.5

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* add wechaty-puppet-padlocal to the puppet config (wechaty#2102)

* 0.51.6

* 0.51.7

* remove padplus from smoke testing (wechaty#2087)

* 0.51.8

* add url link unit test

* 0.51.9

* add strict check

* clean

* 0.51.10

* Update room-invitation.ts (wechaty#2104)

topic() returns a Promise<string> instead of Promise<Contact>. The document is incorrect.

* add puppet event to emitter typing

* 0.51.11

* add puppet to wechaty event names

* Working on RxJS related deps

* 0.53.1

* Rename NODE_AUTH_TOKEN -> NPM_TOKEN

* Use Debian instead of Ubuntu for our Docker (wechaty#2114)

* 0.53.2

* Update Node.js v12 -> v14 (wechaty#2115)

* 0.53.3

* RPA SDK

* RPA SDK

* use cache to speed up github action

* use cache for node & npm

* 0.53.4

* node v15 not support grpc yet

* 0.53.5

* Update package.json

* Upgrade pkg-jq

* use better cache for gh actions

* 0.53.6

* 0.53.7

* Update README.md (wechaty#2118)

change puppet service provider link

* use naive hashFile

* 0.53.8

* fix typo

* 0.53.9

* rename wechaty-puppet-hostie -> wechaty-puppet-service (wechaty#2124)

* add deprecate warning message for WECHATY_HOSTIE_PORT (wechaty#2122)

* 0.55.1

* 0.56.0

* 0.56.1

* Changelog for v0.56

* compatible with wechaty-puppet-hostie module name (wechaty/puppet-service#118)

* 0.56.2

* use node v12 instead of v14 in docker image for maximum compatibility. (e.g. huggingface/tokenizers#603)

* 0.56.3

* 0.57.0

* default puppet: service (wechaty#2127)

* 0.57.1

* upgrade wechaty-puppet to v0.34

* 0.57.2

* change default puppet to puppet-service

* 0.57.3

* upgrade deps

* 0.57.4

* fix docker deploy for branches

* 0.57.5

* pass custom server host to io server (wechaty#2138)

* pass custom server host to io server

* fix test

* modify code according to comments

* 0.57.6

* support puppet lark (wechaty/puppet-lark#4)

* 0.57.7

* clean

* 0.57.8

* use npm-run-all

* 0.57.9

* specific puppet versions

* 0.57.10

* upgrade upppeteer version

* 0.57.11

Co-authored-by: Huan LI (李卓桓) <zixia@zixia.net>
Co-authored-by: Yuan Gao <wind.memory.cn@gmail.com>
Co-authored-by: 陶鑫 <i@yesxin.com>
Co-authored-by: lijiarui <ruiruibupt@gmail.com>
Co-authored-by: profthecopyright <54515051+profthecopyright@users.noreply.github.com>
huan added a commit to wechaty/wechaty that referenced this issue Mar 19, 2021
* 0.29.3

* Merge master (#18)

* update puppeteer puppet

* 0.31.18

* upgrade to wechaty-puppet@0.20

* 0.31.19

* upgrade puppet configs

* 0.31.20

* dep upgrade & clean (#1917)

* 0.31.21

* upgrade eslint-config (#1917)

* 0.31.22

* use green version of powered by wechaty badge

* 0.31.23

* use NODE_AUTH_TOKEN instead of NPM_TOKEN

* 0.31.24

* use bright green for badge

* 0.31.25

* restore pkg-jq

* 0.31.26

* Upgrade docker base image & node.js (#1920)

* 0.32.1

* fix scan status for padplus (wechaty/wechaty-puppet-padplus#161)

* 0.32.2

Co-authored-by: Huan (李卓桓) <zixia@zixia.net>

* merge master (#20)

* 0.45.3

* 0.45.4

* upgrade puppet to use async-map-like memory-card

* upgrade puppet

* 0.45.5

* build onbuild docker image

* 0.45.6

* test for onbuild home dir

* 0.45.7

* deploy wechaty/onbuld

* fix test for both wechaty & /bot

* 0.45.8

* publish to wechaty/wechatyh

* 0.45.9

* build with onbuld

* 0.45.10

* rename zixia/wechaty -> wechaty/wechaty

* 0.45.11

* fix typo

* 0.45.12

* fix onbuild npm run

* 0.45.13

* update official example

* Update README.md

* fix asscessory tests, and protect user class constructor from public to private

* Increase MaxListener for Wechaty

* 0.45.14

* add plugin uninstaller logic

* 0.45.15

* fix race condition for plugin uninstallation

* 0.45.16

* template clean

* 0.45.17

* upgrade puppet

* 0.46.0

* 0.46.1

* add new puppet for official account

* 0.46.2

* Wechaty is a Conversational SDK for Chatbot Makers

* fix bio

* 0.46.3

* clean log message

* 0.46.4

* upgrade hostie

* 0.45.6

* 0.46.5

* 0.47.0

* 0.47.1

* support onbuild:version

* 0.47.2

* use artifact image name

* 0.47.3

* clean version & tag

* 0.47.4

* 0.47.5

* fix hostie start bug

* 0.47.6

* clean

* 0.46.5

* 0.47.7

* add svg logos

* use wechaty.js.org host

* 0.47.7

* 0.47.8

* update

* 0.47.9

* use docker for changelog

* 0.47.10

* update changelog

* 0.47.11

* use wechaty.js.org/qrcode/ to replace wechaty.github.io/qrcode/

* 0.47.12

* Update README.md

* feat: add scoped wxwork puppet into puppet config (#2043)

* add scoped wxwork puppet into puppet config

* skip install scoped puppet

* 0.47.13

* add phone method in contact class (#2039)

* add phone method in contact class

* 0.47.13

* 0.47.14

* update wechaty-puppet version

* add jsdoc for contact.phone

* use puppet.dirtyPayload (wechaty/puppet-service#43)

* 0.47.15

* fix dirty exception

* 0.47.16

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.17

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.18

* implement the dirty logic (wechaty/puppet-service#43)

* 0.47.19

* clean

* 0.47.20

* remove deprecated methods (#2049)

* 0.47.21

* Upgrade to TypeScript 4.0!

* 0.47.22

* feat: add more methods into contact class (#2048)

* add more methods into contact class

* fix code with new wechaty-puppet

* 0.47.21

* 0.47.23

* throw a nice error message when we call user module before start wechaty

* 0.47.24

* 0.48.0 (#2050)

* bump hostie version to be the stable one (#2051)

* bump hostie version to be the stable one

* 0.48.1

* link images to wechaty.js.org

* update links

* 0.48.2

* update jsdocs

* 0.48.3

* add gitter puppet

* 0.48.4

* fix typo

* 0.48.5

* add location user module

* 0.47.25

* 0.48.6

* clean

* 0.48.7

* add telegram channel for wechaty

* 0.48.8

* add bibtex cite code

* 0.48.9

* add star history badge

* 0.48.10

* Split to trunks when making requests of room.findAll() and room.ready() (#2067)

* add pagination on room.findAll() and room.ready()

* 0.48.11

* fix #2073 (#2074)

* fix #2073

* 0.48.12

* 0.48.13

* Bump minor 49 (#2078)

* 0.49.0

* update hostie version to take advantage of the new stream grpc methods

* fix io client qrcode by encodeURIComponent

* 0.48.11

* upgrade deps

* 0.49.1

* upgrade puppet to v0.33

* 0.49.2

* 0.49.3

* 0.49.4

* fix typos

* 0.49.5

* clean

* Update README.md

* add credit link

* fix typo

* upgrade json-rpc-peer to v0.17

* 0.49.7

* 0.49.8

* Update Dockerfile (#2079)

按照 #1986 的方法用docker创建Hostie Token时,docker端报错。加入libxtst6库后可以完美运行。

* 0.50.0

* 0.50.1

* clean scan payload after login

* 0.50.2

* enable io sync message botie support

* 0.50.3

* use source for botie payload

* 0.50.4

* add whatsapp to official puppet names (wechaty/puppet-whatsapp#1)

* 0.50.5

* use a helper function for better FileBox instance check (wechaty/puppet-service#99)

* 0.50.6

* loost Puppet instance type checking (#2024)

* 0.50.7

* create looseInstanceOfClass (#2090) (#2091)

* create looseInstanceOfClass (#2090)

* 0.50.8

* 0.51.0

* 0.51.1

* fix file-box

* fix file-box

* 0.51.2

* rename from -> talker (#2094)

* 0.51.3

* add gitter & deprecate padplus

* strict typing check for typescript v4

* 0.51.4

* Update contact.ts (#2095)

fix: return payload friend

* rename from() to talker() from message

* 0.51.5

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* add wechaty-puppet-padlocal to the puppet config (#2102)

* 0.51.6

* 0.51.7

* remove padplus from smoke testing (#2087)

* 0.51.8

* add url link unit test

* 0.51.9

* add strict check

* clean

* 0.51.10

* Update room-invitation.ts (#2104)

topic() returns a Promise<string> instead of Promise<Contact>. The document is incorrect.

* add puppet event to emitter typing

* 0.51.11

* add puppet to wechaty event names

* Working on RxJS related deps

* 0.53.1

* Rename NODE_AUTH_TOKEN -> NPM_TOKEN

* Use Debian instead of Ubuntu for our Docker (#2114)

* 0.53.2

* Update Node.js v12 -> v14 (#2115)

* 0.53.3

* RPA SDK

* RPA SDK

* use cache to speed up github action

* use cache for node & npm

* 0.53.4

* node v15 not support grpc yet

* 0.53.5

* Update package.json

* Upgrade pkg-jq

* use better cache for gh actions

* 0.53.6

* 0.53.7

* Update README.md (#2118)

change puppet service provider link

* use naive hashFile

* 0.53.8

* fix typo

* 0.53.9

* rename wechaty-puppet-hostie -> wechaty-puppet-service (#2124)

* add deprecate warning message for WECHATY_HOSTIE_PORT (#2122)

* 0.55.1

* 0.56.0

* 0.56.1

* Changelog for v0.56

* compatible with wechaty-puppet-hostie module name (wechaty/puppet-service#118)

* 0.56.2

* use node v12 instead of v14 in docker image for maximum compatibility. (e.g. huggingface/tokenizers#603)

* 0.56.3

* 0.57.0

* default puppet: service (#2127)

* 0.57.1

* upgrade wechaty-puppet to v0.34

* 0.57.2

* change default puppet to puppet-service

* 0.57.3

* upgrade deps

* 0.57.4

* fix docker deploy for branches

* 0.57.5

* pass custom server host to io server (#2138)

* pass custom server host to io server

* fix test

* modify code according to comments

* 0.57.6

* support puppet lark (wechaty/puppet-lark#4)

* 0.57.7

* clean

* 0.57.8

* use npm-run-all

* 0.57.9

* specific puppet versions

* 0.57.10

* upgrade upppeteer version

* 0.57.11

Co-authored-by: Huan LI (李卓桓) <zixia@zixia.net>
Co-authored-by: Yuan Gao <wind.memory.cn@gmail.com>
Co-authored-by: 陶鑫 <i@yesxin.com>
Co-authored-by: lijiarui <ruiruibupt@gmail.com>
Co-authored-by: profthecopyright <54515051+profthecopyright@users.noreply.github.com>

* feat: modify friendshipAdd for support add room member be friends

* 0.57.14

* refactor

* fix: bump wechaty-puppet version

* fix: add warn message for using hello params in Friendship.add()

* 0.57.18

* fix: bump wechaty-puppet-service@0.17.0

Co-authored-by: Huan (李卓桓) <zixia@zixia.net>
Co-authored-by: Yuan Gao <wind.memory.cn@gmail.com>
Co-authored-by: 陶鑫 <i@yesxin.com>
Co-authored-by: lijiarui <ruiruibupt@gmail.com>
Co-authored-by: profthecopyright <54515051+profthecopyright@users.noreply.github.com>
huan added a commit to wechaty/wechaty that referenced this issue Mar 19, 2021
* 0.29.3

* Merge master (#18)

* update puppeteer puppet

* 0.31.18

* upgrade to wechaty-puppet@0.20

* 0.31.19

* upgrade puppet configs

* 0.31.20

* dep upgrade & clean (#1917)

* 0.31.21

* upgrade eslint-config (#1917)

* 0.31.22

* use green version of powered by wechaty badge

* 0.31.23

* use NODE_AUTH_TOKEN instead of NPM_TOKEN

* 0.31.24

* use bright green for badge

* 0.31.25

* restore pkg-jq

* 0.31.26

* Upgrade docker base image & node.js (#1920)

* 0.32.1

* fix scan status for padplus (wechaty/wechaty-puppet-padplus#161)

* 0.32.2

Co-authored-by: Huan (李卓桓) <zixia@zixia.net>

* merge master (#20)

* 0.45.3

* 0.45.4

* upgrade puppet to use async-map-like memory-card

* upgrade puppet

* 0.45.5

* build onbuild docker image

* 0.45.6

* test for onbuild home dir

* 0.45.7

* deploy wechaty/onbuld

* fix test for both wechaty & /bot

* 0.45.8

* publish to wechaty/wechatyh

* 0.45.9

* build with onbuld

* 0.45.10

* rename zixia/wechaty -> wechaty/wechaty

* 0.45.11

* fix typo

* 0.45.12

* fix onbuild npm run

* 0.45.13

* update official example

* Update README.md

* fix asscessory tests, and protect user class constructor from public to private

* Increase MaxListener for Wechaty

* 0.45.14

* add plugin uninstaller logic

* 0.45.15

* fix race condition for plugin uninstallation

* 0.45.16

* template clean

* 0.45.17

* upgrade puppet

* 0.46.0

* 0.46.1

* add new puppet for official account

* 0.46.2

* Wechaty is a Conversational SDK for Chatbot Makers

* fix bio

* 0.46.3

* clean log message

* 0.46.4

* upgrade hostie

* 0.45.6

* 0.46.5

* 0.47.0

* 0.47.1

* support onbuild:version

* 0.47.2

* use artifact image name

* 0.47.3

* clean version & tag

* 0.47.4

* 0.47.5

* fix hostie start bug

* 0.47.6

* clean

* 0.46.5

* 0.47.7

* add svg logos

* use wechaty.js.org host

* 0.47.7

* 0.47.8

* update

* 0.47.9

* use docker for changelog

* 0.47.10

* update changelog

* 0.47.11

* use wechaty.js.org/qrcode/ to replace wechaty.github.io/qrcode/

* 0.47.12

* Update README.md

* feat: add scoped wxwork puppet into puppet config (#2043)

* add scoped wxwork puppet into puppet config

* skip install scoped puppet

* 0.47.13

* add phone method in contact class (#2039)

* add phone method in contact class

* 0.47.13

* 0.47.14

* update wechaty-puppet version

* add jsdoc for contact.phone

* use puppet.dirtyPayload (wechaty/puppet-service#43)

* 0.47.15

* fix dirty exception

* 0.47.16

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.17

* TODO: implement the dirty logic (wechaty/puppet-service#43)

* 0.47.18

* implement the dirty logic (wechaty/puppet-service#43)

* 0.47.19

* clean

* 0.47.20

* remove deprecated methods (#2049)

* 0.47.21

* Upgrade to TypeScript 4.0!

* 0.47.22

* feat: add more methods into contact class (#2048)

* add more methods into contact class

* fix code with new wechaty-puppet

* 0.47.21

* 0.47.23

* throw a nice error message when we call user module before start wechaty

* 0.47.24

* 0.48.0 (#2050)

* bump hostie version to be the stable one (#2051)

* bump hostie version to be the stable one

* 0.48.1

* link images to wechaty.js.org

* update links

* 0.48.2

* update jsdocs

* 0.48.3

* add gitter puppet

* 0.48.4

* fix typo

* 0.48.5

* add location user module

* 0.47.25

* 0.48.6

* clean

* 0.48.7

* add telegram channel for wechaty

* 0.48.8

* add bibtex cite code

* 0.48.9

* add star history badge

* 0.48.10

* Split to trunks when making requests of room.findAll() and room.ready() (#2067)

* add pagination on room.findAll() and room.ready()

* 0.48.11

* fix #2073 (#2074)

* fix #2073

* 0.48.12

* 0.48.13

* Bump minor 49 (#2078)

* 0.49.0

* update hostie version to take advantage of the new stream grpc methods

* fix io client qrcode by encodeURIComponent

* 0.48.11

* upgrade deps

* 0.49.1

* upgrade puppet to v0.33

* 0.49.2

* 0.49.3

* 0.49.4

* fix typos

* 0.49.5

* clean

* Update README.md

* add credit link

* fix typo

* upgrade json-rpc-peer to v0.17

* 0.49.7

* 0.49.8

* Update Dockerfile (#2079)

按照 #1986 的方法用docker创建Hostie Token时,docker端报错。加入libxtst6库后可以完美运行。

* 0.50.0

* 0.50.1

* clean scan payload after login

* 0.50.2

* enable io sync message botie support

* 0.50.3

* use source for botie payload

* 0.50.4

* add whatsapp to official puppet names (wechaty/puppet-whatsapp#1)

* 0.50.5

* use a helper function for better FileBox instance check (wechaty/puppet-service#99)

* 0.50.6

* loost Puppet instance type checking (#2024)

* 0.50.7

* create looseInstanceOfClass (#2090) (#2091)

* create looseInstanceOfClass (#2090)

* 0.50.8

* 0.51.0

* 0.51.1

* fix file-box

* fix file-box

* 0.51.2

* rename from -> talker (#2094)

* 0.51.3

* add gitter & deprecate padplus

* strict typing check for typescript v4

* 0.51.4

* Update contact.ts (#2095)

fix: return payload friend

* rename from() to talker() from message

* 0.51.5

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* add wechaty-puppet-padlocal to the puppet config (#2102)

* 0.51.6

* 0.51.7

* remove padplus from smoke testing (#2087)

* 0.51.8

* add url link unit test

* 0.51.9

* add strict check

* clean

* 0.51.10

* Update room-invitation.ts (#2104)

topic() returns a Promise<string> instead of Promise<Contact>. The document is incorrect.

* add puppet event to emitter typing

* 0.51.11

* add puppet to wechaty event names

* Working on RxJS related deps

* 0.53.1

* Rename NODE_AUTH_TOKEN -> NPM_TOKEN

* Use Debian instead of Ubuntu for our Docker (#2114)

* 0.53.2

* Update Node.js v12 -> v14 (#2115)

* 0.53.3

* RPA SDK

* RPA SDK

* use cache to speed up github action

* use cache for node & npm

* 0.53.4

* node v15 not support grpc yet

* 0.53.5

* Update package.json

* Upgrade pkg-jq

* use better cache for gh actions

* 0.53.6

* 0.53.7

* Update README.md (#2118)

change puppet service provider link

* use naive hashFile

* 0.53.8

* fix typo

* 0.53.9

* rename wechaty-puppet-hostie -> wechaty-puppet-service (#2124)

* add deprecate warning message for WECHATY_HOSTIE_PORT (#2122)

* 0.55.1

* 0.56.0

* 0.56.1

* Changelog for v0.56

* compatible with wechaty-puppet-hostie module name (wechaty/puppet-service#118)

* 0.56.2

* use node v12 instead of v14 in docker image for maximum compatibility. (e.g. huggingface/tokenizers#603)

* 0.56.3

* 0.57.0

* default puppet: service (#2127)

* 0.57.1

* upgrade wechaty-puppet to v0.34

* 0.57.2

* change default puppet to puppet-service

* 0.57.3

* upgrade deps

* 0.57.4

* fix docker deploy for branches

* 0.57.5

* pass custom server host to io server (#2138)

* pass custom server host to io server

* fix test

* modify code according to comments

* 0.57.6

* support puppet lark (wechaty/puppet-lark#4)

* 0.57.7

* clean

* 0.57.8

* use npm-run-all

* 0.57.9

* specific puppet versions

* 0.57.10

* upgrade upppeteer version

* 0.57.11

Co-authored-by: Huan LI (李卓桓) <zixia@zixia.net>
Co-authored-by: Yuan Gao <wind.memory.cn@gmail.com>
Co-authored-by: 陶鑫 <i@yesxin.com>
Co-authored-by: lijiarui <ruiruibupt@gmail.com>
Co-authored-by: profthecopyright <54515051+profthecopyright@users.noreply.github.com>

* feat: modify friendshipAdd for support add room member be friends

* 0.57.14

* refactor

* fix: bump wechaty-puppet version

* fix: add warn message for using hello params in Friendship.add()

* 0.57.18

* fix: bump wechaty-puppet-service@0.17.0

Co-authored-by: Huan (李卓桓) <zixia@zixia.net>
Co-authored-by: Yuan Gao <wind.memory.cn@gmail.com>
Co-authored-by: 陶鑫 <i@yesxin.com>
Co-authored-by: lijiarui <ruiruibupt@gmail.com>
Co-authored-by: profthecopyright <54515051+profthecopyright@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants