├── .eslintrc ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── CSSSAMPLE.md ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── README.md ├── README_en.md ├── assets ├── 256x256.png ├── close_white.png ├── exit_black.png ├── exit_white.png ├── fullscreen-exit.png ├── fullscreen.png ├── icon.icns ├── icon.png ├── loading.gif ├── settings_black.png ├── settings_white.png ├── status_bar.png ├── status_bar@2x.png ├── tray_black.png ├── tray_exit_black.png ├── tray_exit_white.png ├── tray_icon.png ├── tray_settings_black.png ├── tray_settings_white.png ├── tray_unread_black.png ├── tray_unread_white.png ├── tray_white.png └── vertical-align-botto.png ├── config.json ├── electronic-wechat.desktop ├── package.json ├── scripts ├── build-all.sh ├── build-win32.bat ├── build.sh ├── qiniu.sh └── tar-all.sh └── src ├── common.js ├── common_cn.js ├── common_en.js ├── configuration.js ├── handlers ├── menu.js ├── message.js └── update.js ├── inject ├── badge_count.js ├── chat_historys.js ├── css.js ├── emoji_parser.js ├── mention_menu.js ├── mini_frame.js ├── preload.js └── share_menu.js ├── lib └── easyIDB.js ├── main.js └── windows ├── controllers ├── app_tray.js ├── settings.js ├── splash.js └── wechat.js ├── styles ├── settings.css └── splash.css └── views ├── settings.html └── splash.html /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": "airbnb/base", 4 | "rules": { 5 | "strict": "off", 6 | "max-len": "off", 7 | "prefer-template": "warn", 8 | "arrow-body-style": "off", 9 | "no-unused-vars": "warn", 10 | "no-undef": "off", 11 | "array-callback-return": "off", 12 | "no-confusing-arrow": "off", 13 | "consistent-return": "warn", 14 | "no-param-reassign": "off", 15 | "default-case": "off", 16 | "guard-for-in": "off", 17 | "no-restricted-syntax": "off", 18 | "no-underscore-dangle": "off", 19 | "new-cap": "warn", 20 | "no-console": "off", 21 | "global-require": "off", 22 | "class-methods-use-this": "warn" 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /dist 3 | npm-debug.log* 4 | .idea 5 | install 6 | # Dependency directories 7 | node_modules 8 | 9 | *.sublime-project 10 | *.sublime-workspace 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: required 3 | node_js: 4 | - '5.2' 5 | branches: 6 | only: 7 | - master 8 | - production 9 | before_script: 10 | - npm install 11 | script: 12 | - ./scripts/build-all.sh 13 | - ./scripts/tar-all.sh 14 | deploy: 15 | provider: releases 16 | api_key: 17 | secure: ETudcaMBembv5mq5WcA0Zu5YCQt02A8sfMIYJ+XN0dTUCFRODYgyk8SiW3ndI4zLfhsc31KbYecSVfcrvYhPlkLucdhD0hY+v4mowrGaG6q3DUE4v9+qATOE5z51MPNTQO/suPNZpeFkSCKaWh6SY9oSd/tsD+YmbcpuD0//DMiFMpYqA8ueQ7yka4SmlZq8C48MsRbULAtyHNEVNJ4en9xdE9vFHZ45kM2A2IWYVikuCa5J6YoL7N2CyIFwtKMeF68d0vwidXUXEc7z1VOHwosG7V0vEfNRrIy4mft0tXyEYe/nM8GlYnirVRCy3xF4h4ssERXbLMuZSYGm+bg/pqReL+dvsN5oKszuo7IseZnE8QfmmhfbMB4dWf8Le5WXfFgJTG28lNvl2VwTTEW4Cj5qeJmfO524GydqRE+i3uQvW4c2tBTFmfpusPnaFqVXTPH7o54hT18hYvgaBvJQv6pyMNMLLXq0BbkzquTTWTwb8lSi8XiRr/fWkQreRZNofJc21ZUSI5YcuqZpzbz1fOLseC4QJ8YXQ9b2OU/LiFF3gvHTK6vSKMQmbOFg0zFXMi5FT1SzCi/mKduax/OR/H6lolVW83eXCG1Ni+sIrwUkp0d/UL6E1pVeJMibBrOEgriWIpD+AiVzNVyBdq/oDC6qG9IXRWzii9Ks6J9zH7k= 18 | file: 19 | - 'dist/mac-osx.tar.gz' 20 | - 'dist/linux-x64.tar.gz' 21 | - 'dist/linux-ia32.tar.gz' 22 | skip_cleanup: true 23 | on: 24 | repo: geeeeeeeeek/electronic-wechat 25 | branch: production 26 | notifications: 27 | webhooks: 28 | urls: 29 | - https://webhooks.gitter.im/e/d6bab2376f47ee992d78 30 | on_success: always # options: [always|never|change] default: always 31 | on_failure: always # options: [always|never|change] default: always 32 | on_start: always # options: [always|never|change] default: always 33 | after_deploy: 34 | - ./scripts/qiniu.sh 35 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | **v2.0 (2017.02.13) CN** 4 | 5 | 1. 升级 **Electron** 至 **V1.4.15**,**Chromium** 至 **54** 6 | 2. 增加了**偏好设置**(感谢设计建议 @**[xiaoyusilen](https://github.com/xiaoyusilen)**) 7 | 3. 增加了英文版本的支持 8 | 4. 增加了一键隐藏窗口(**`ESC`** 键) 9 | 5. 修复了 **macOS** 上窗口最小化时不显示新消息提示的红点(感谢 @wujysh 的贡献) 10 | 6. 修复了聊天框内换行提示仅针对 macOS 的问题 11 | 7. 增加了两个快捷键(感谢 @awmleer 的贡献) 12 | - 搜索联系人:**`Ctrl + F`** 13 | - 切换到全屏模式:**macOS** 下 **`Ctrl + Command + F`**,**Linux** 下为 **`F11`** 14 | 8. 修复了在 Linux 系统下部分菜单按钮失效的问题(感谢 @qzchenwl 的贡献) 15 | 8. 更新了依赖的第三方库的版本至最新兼容版本 16 | 17 | **v2.0 (2017.02.13) EN** 18 | 19 | 1. Update Electron to V1.4.15, Chromium API level 54 20 | 2. Add **Preference Panel** (Thanks for the design advises from @**[xiaoyusilen](https://github.com/xiaoyusilen)**](https://github.com/xiaoyusilen)) 21 | 3. Fully support English UI! 22 | 4. Quick hide windows shortcut (**Press `ESC`**) 23 | 5. Fix **macOS** new message red dot display improperly (Thanks to @wujysh) 24 | 6. Tips in chat window now are adapted with platform 25 | 7. Add two shortcuts (Thanks to @awmleer) 26 | - Search Contact人: **`Ctrl + F`** 27 | - Toggle Fullscreen Mode: **macOS** **`Ctrl + Command + F`**, **Linux** **`F11`** 28 | 8. Fix unfunctional menu items on **Linux** (Thanks to @qzchenwl) 29 | 8. All thrid party libraries are up-to-date 30 | 31 | 32 | **v1.3 (2016.05.19)** 33 | 34 | 1. 升级 electron 至 1.1.0, Chrome 至 50.0.2661.102,Node 至 6.1.0 (感谢 @lfs1102 的贡献) 35 | 2. 新增 `brew cask` 安装方式 (最新可下载版本为 v1.2.0) 36 | 3. 新增 Windows 下的安装脚本 (感谢 @3dseals 的贡献) 37 | 4. 新增 应用启动动画,缩短首次展现时间 38 | 5. 优化 应用启动稳定性,增加超时重试 39 | 6. 优化 主要文案均统一为英文 40 | 7. 优化 减少 20M 应用体积 41 | 8. 修复 关于页面版本号显示的 bug 42 | 9. 修复 Linux 系统下左边栏组件重叠的 bug 43 | 10. 修复 部分 Linux KDE 系统下托盘图标空白的 bug 44 | 11. 其他修改 (感谢 @wzyboy, @rivershang, @hexchain, @samurai00, @boltomli 的贡献) 45 | 46 | 47 | **v1.2 (2016.04.21)** 48 | 49 | 1. 新增 更新检测模块,应用内即可检查更新 50 | 2. 新增 公众号文章的第三方分享功能。现支持一键分享到微博、QQ 空间、Facebook、Twitter、Evernote 和邮件 (感谢 @oblank 的贡献) 51 | 3. 新增 群聊 @ 提及成员功能,但收到提醒需要服务端支持 (感谢 @iamcc 的贡献) 52 | 4. 优化 登录界面使用单独的尺寸 (感谢 @xnfa 的贡献) 53 | 5. 优化 修改 OS X 下隐藏其他窗口的快捷键为 `Command+Alt+H` 54 | 6. 优化 Linux 下可执行文件文件名使用小写字母,去除空格 55 | 7. 优化 Linux 下使用彩色图标 56 | 8. 升级 `electron-prebuilt` 版本至 `0.37.6` , `electron-packager` 版本至 `7.0.0` 57 | 9. ~~降级 Emoji贴纸显示的功能。由于微信协议调整和官方代码缺陷,现有商店内贴纸及部分个人收藏的贴纸无法显示。后续跟进微信的修复进行调整。~~ (Update: 微信已修复,贴纸均可正常显示) 58 | 59 | 60 | **v1.1 (2016.03.17)** 61 | 62 | 1. 新增 OS X 和 Linux 下的托盘菜单,点击可进入应用、退出应用 (仅Linux) (感谢 @iamcc 和 @wenLiangcan 的贡献) 63 | 2. 新增 cnpm 镜像提醒 64 | 3. 优化 应用的退出逻辑,Cmd+Q 退出应用,Cmd+W 或点击关闭隐藏应用 65 | 4. 优化 OS X 和 Linux 下的应用菜单显示 66 | 5. 优化 Emoji贴纸的实现方式,避免滑动时内容抖动,无法回到底部 67 | 6. 优化 接管应用刷新的逻辑,Cmd+R 重新加载页面 68 | 7. 优化 OS X 下 build 后将应用拷贝到 Application 文件夹 69 | 8. 优化 Linux 下使用 Ctrl+Shift+I 打开开发者工具 (感谢 @wenLiangcan 的贡献) 70 | 9. 修复 错误的微信站内重定向 (感谢 @gucheen 的贡献) 71 | 10. 修复 Linux 下应用图标的显示 72 | 11. 修复 聊天列表滑动性能问题 73 | 12. 修复 公众号新窗口打开报错 (感谢 @gzzhanghao 的贡献) 74 | 75 | **v1.0 (2016.03.01)** 76 | 77 | 1. 新增 阻止消息撤回的功能 (感谢 @arrowrowe 的贡献) 78 | 2. 新增 引入了 Travis CI 和 Gitter.im 79 | 3. 优化 贴纸显示的实现方式 (感谢 @arrowrowe 的贡献) 80 | 4. 优化 build 脚本 (感谢 @gaocegege, @viko16 和 @htc550605125 的贡献) 81 | 5. 优化 Linux 下自动隐藏菜单 (感谢 @wenLiangcan 的贡献) 82 | 6. 优化 Linux 下用户头像的显示 83 | 7. 优化 禁用缩放、选中文本、默认光标 84 | 85 | **v0.1 (2016.02.19)** 86 | 87 | 1. Create the project. 88 | 2. Auto resize web content. 89 | 3. Drag to send pictures. 90 | 4. Open inhibited links without additional redirect. 91 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Electronic WeChat 2 | 3 | First of all, thanks for contributing to this project. It would be appreciated if you read through this contributing guide. 4 | 5 | ## Issues 6 | 7 | - Check if your issue is already [there](https://github.com/geeeeeeeeek/electronic-wechat/issues). 8 | 9 | - Check if your issue is `Electronic WeChat` related rather than upstream related. 10 | 11 | - Follow the guide in the issue template. 12 | 13 | ## Pull Requests 14 | 15 | PR are always welcomed. It's better if you put up an issue before firing a PR. **Remember**, the smaller your focus, the better chance to get merged. 16 | 17 | ## Be a collaborator! 18 | 19 | If you are excited about the project, and happen to have skills in Angular, Node, Electron, or else. Do not hesitate to contact me. Let's build together! 20 | -------------------------------------------------------------------------------- /CSSSAMPLE.md: -------------------------------------------------------------------------------- 1 | # 自定义CSS的一些例子 2 | 3 | 自定义的CSS会注入到
的