mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-20 07:16:08 +08:00
Switch product name to “Mailspring”
This commit is contained in:
parent
f051b52e8c
commit
b698458766
|
@ -41,7 +41,7 @@ deploy:
|
|||
secret_access_key:
|
||||
secure: XlLzz7sdvrtgi4g459NvxLfrH/+hOutb+0Osz29unfi4Zcw9N8H8SEaq6m3ZeWc+
|
||||
region: us-east-1
|
||||
bucket: merani-builds
|
||||
bucket: mailspring-builds
|
||||
folder: "client/$(commit)"
|
||||
set_public: true
|
||||
|
||||
|
|
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
|||
[submodule "mailsync"]
|
||||
path = mailsync
|
||||
url = git@github.com:Foundry376/Merani-Mailsync.git
|
||||
url = git@github.com:Foundry376/Mailspring-Mailsync.git
|
||||
|
|
|
@ -16,8 +16,8 @@ addons:
|
|||
paths:
|
||||
- mailsync
|
||||
- mailsync.dSYM.zip
|
||||
- Merani.dmg
|
||||
- Merani.zip
|
||||
- Mailspring.dmg
|
||||
- Mailspring.zip
|
||||
- $(find . -type f -name *.deb | tr "\n" ":")
|
||||
- $(find . -type f -name *.rpm | tr "\n" ":")
|
||||
apt:
|
||||
|
@ -72,7 +72,7 @@ before_install:
|
|||
- source app/build/resources/certs/mac/set_unix_env.sh;
|
||||
# Checkout the (currently private) C++ Mailsync codebase
|
||||
- GIT_SSH_COMMAND='ssh -i app/build/resources/certs/mailsync-deploy-key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
|
||||
SSH_ASKPASS=/Users/travis/build/Foundry376/Merani/app/build/resources/certs/ssh-askpass-fix
|
||||
SSH_ASKPASS=/Users/travis/build/Foundry376/Mailspring/app/build/resources/certs/ssh-askpass-fix
|
||||
DISPLAY=nothing:0
|
||||
git submodule update --init mailsync
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
# Filing an Issue
|
||||
|
||||
Thanks for checking out Merani! If you have a feature request, be sure to check out the [open source roadmap](http://trello.com/b/hxsqB6vx/n1-open-source-roadmap). If someone has already requested
|
||||
Thanks for checking out Mailspring! If you have a feature request, be sure to check out the [open source roadmap](http://trello.com/b/hxsqB6vx/n1-open-source-roadmap). If someone has already requested
|
||||
the feature you have in mind, you can upvote the card on Trello—to keep things organized, we
|
||||
often close feature requests on GitHub after creating Trello cards.
|
||||
|
||||
If you've found a bug, try searching for similars issue before filing a new one. Please include
|
||||
the version of Merani you're using, the platform you're using (Mac / Windows / Linux), and the
|
||||
the version of Mailspring you're using, the platform you're using (Mac / Windows / Linux), and the
|
||||
type of email account. (Gmail, Outlook 365, etc.)
|
||||
|
||||
# Pull requests
|
||||
|
||||
We require all authors sign our [Contributor License
|
||||
Agreement](https://www.getmerani.com/cla.html) before pull requests (even
|
||||
Agreement](https://www.getmailspring.com/cla.html) before pull requests (even
|
||||
minor ones) can be accepted. (It's similar to other projects, like NodeJS
|
||||
Meteor, or React). I'm really sorry, but Legal made us do it.
|
||||
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
<!--
|
||||
Thanks for taking the time to file an issue! If you have general question or a problem with your email account, take a quick look at the Merani Knowledge Base to see if you question is addressed there:
|
||||
Thanks for taking the time to file an issue! If you have general question or a problem with your email account, take a quick look at the Mailspring Knowledge Base to see if you question is addressed there:
|
||||
|
||||
https://support.getmerani.com/hc/en-us/sections/203638587-N1_
|
||||
https://support.getmailspring.com/hc/en-us/sections/203638587-N1_
|
||||
|
||||
Our team tries to respond to all GitHub issues. To make sure your issue is
|
||||
actionable, try to include the following information:
|
||||
-->
|
||||
|
||||
##### Are there any related issues?
|
||||
<!-- Try searching for both open and closed issues here: https://github.com/Foundry376/Merani/issues?q=is%3Aissue. Keep in mind that email features are often described differently on different platforms. (Conversations == threads, shortcuts == hotkeys, etc.) -->
|
||||
<!-- Try searching for both open and closed issues here: https://github.com/Foundry376/Mailspring/issues?q=is%3Aissue. Keep in mind that email features are often described differently on different platforms. (Conversations == threads, shortcuts == hotkeys, etc.) -->
|
||||
...
|
||||
|
||||
##### What operating system are you using?
|
||||
...
|
||||
|
||||
##### What version of Merani are you using?
|
||||
##### What version of Mailspring are you using?
|
||||
...
|
||||
|
||||
--
|
||||
|
|
58
README.md
58
README.md
|
@ -1,14 +1,14 @@
|
|||
💌 Merani
|
||||
💌 Mailspring
|
||||
====
|
||||
|
||||
[![Travis Status](https://travis-ci.org/Foundry376/Merani.svg?branch=master)](https://travis-ci.org/Foundry376/Merani)
|
||||
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/iuuuy6d65u3x6bj6?svg=true)](https://ci.appveyor.com/project/Foundry376/Merani)
|
||||
[![Travis Status](https://travis-ci.org/Foundry376/Mailspring.svg?branch=master)](https://travis-ci.org/Foundry376/Mailspring)
|
||||
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/iuuuy6d65u3x6bj6?svg=true)](https://ci.appveyor.com/project/Foundry376/Mailspring)
|
||||
|
||||
|
||||
|
||||
**Hello! I'm one of the original authors of Nylas Mail and this is a significant fork of the app which completely replaces JavaScript mail sync with a C++ core built on Mailcore2. Unfortunately, it's not ready for use - check back soon!**
|
||||
|
||||
![Merani Screenshot](https://github.com/Foundry376/Merani/raw/master/screenshots/hero_graphic_mac%402x.png)
|
||||
![Mailspring Screenshot](https://github.com/Foundry376/Mailspring/raw/master/screenshots/hero_graphic_mac%402x.png)
|
||||
|
||||
High level Goals:
|
||||
---
|
||||
|
@ -25,39 +25,39 @@ High level Goals:
|
|||
|
||||
Roadmap and Progress:
|
||||
---
|
||||
See [ROADMAP.md](https://github.com/Foundry376/Merani/blob/master/ROADMAP.md)
|
||||
See [ROADMAP.md](https://github.com/Foundry376/Mailspring/blob/master/ROADMAP.md)
|
||||
|
||||
----------------
|
||||
|
||||
**Merani is an open-source mail client built on the modern web with [Electron](https://github.com/atom/electron), [React](https://facebook.github.io/react/), and [Flux](https://facebook.github.io/flux/).** It is designed to be extensible, so it's easy to create new experiences and workflows around email. Want to learn more? Check out the [full documentation](https://Foundry376.github.io/Merani/).
|
||||
**Mailspring is an open-source mail client built on the modern web with [Electron](https://github.com/atom/electron), [React](https://facebook.github.io/react/), and [Flux](https://facebook.github.io/flux/).** It is designed to be extensible, so it's easy to create new experiences and workflows around email. Want to learn more? Check out the [full documentation](https://Foundry376.github.io/Mailspring/).
|
||||
|
||||
[![Slack Invite Button](http://slack-invite.getmerani.com/badge.svg)](http://slack-invite.getmerani.com)
|
||||
[![Slack Invite Button](http://slack-invite.getmailspring.com/badge.svg)](http://slack-invite.getmailspring.com)
|
||||
|
||||
|
||||
## Download Merani
|
||||
## Download Mailspring
|
||||
|
||||
You can download compiled versions of Merani for Windows, Mac OS X, and Linux (.deb) from [https://getmerani.com/download](https://getmerani.com/download). You can also build and run Merani (Previously N1) on Fedora. On Arch Linux, you can install **[n1](https://aur.archlinux.org/packages/n1/)** or **[n1-git](https://aur.archlinux.org/packages/n1-git/)** from the aur.
|
||||
You can download compiled versions of Mailspring for Windows, Mac OS X, and Linux (.deb) from [https://getmailspring.com/download](https://getmailspring.com/download). You can also build and run Mailspring (Previously N1) on Fedora. On Arch Linux, you can install **[n1](https://aur.archlinux.org/packages/n1/)** or **[n1-git](https://aur.archlinux.org/packages/n1-git/)** from the aur.
|
||||
|
||||
## Build A Plugin
|
||||
|
||||
Plugins lie at the heart of Merani and give it its powerful features. Building your own plugins allows you to integrate the app with other tools, experiment with new workflows, and more. Follow the [Getting Started guide](https://Foundry376.github.io/Merani/) to write your first plugin in five minutes. To create your own theme, go to our [Theme Starter guide](https://github.com/nylas/N1-theme-starter).
|
||||
Plugins lie at the heart of Mailspring and give it its powerful features. Building your own plugins allows you to integrate the app with other tools, experiment with new workflows, and more. Follow the [Getting Started guide](https://Foundry376.github.io/Mailspring/) to write your first plugin in five minutes. To create your own theme, go to our [Theme Starter guide](https://github.com/nylas/N1-theme-starter).
|
||||
|
||||
If you would like to run the N1 source and contribute, check out our [contributing
|
||||
guide](https://github.com/Foundry376/Merani/blob/master/CONTRIBUTING.md).
|
||||
guide](https://github.com/Foundry376/Mailspring/blob/master/CONTRIBUTING.md).
|
||||
|
||||
## Themes
|
||||
|
||||
The Merani user interface is styled using CSS, which means it's easy to modify and extend. Merani comes stock with a few beautiful themes, and there are many more which have been built by community developers
|
||||
The Mailspring user interface is styled using CSS, which means it's easy to modify and extend. Mailspring comes stock with a few beautiful themes, and there are many more which have been built by community developers
|
||||
|
||||
<center><img width=550 src="http://i.imgur.com/PWQ7NlY.jpg"></center>
|
||||
|
||||
|
||||
#### Bundled Themes
|
||||
- [Dark](https://github.com/Foundry376/Merani/tree/master/internal_packages/ui-dark)
|
||||
- [Darkside](https://github.com/Foundry376/Merani/tree/master/internal_packages/ui-darkside) (designed by [Jamie Wilson](https://github.com/jamiewilson))
|
||||
- [Taiga](https://github.com/Foundry376/Merani/tree/master/internal_packages/ui-taiga) (designed by [Noah Buscher](https://github.com/noahbuscher))
|
||||
- [Ubuntu](https://github.com/Foundry376/Merani/tree/master/internal_packages/ui-ubuntu) (designed by [Ahmed Elhanafy](https://github.com/ahmedlhanafy))
|
||||
- [Less Is More](https://github.com/Foundry376/Merani/tree/master/internal_packages/ui-less-is-more) (designed by [Alexander Adkins](https://github.com/P0WW0W))
|
||||
- [Dark](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/ui-dark)
|
||||
- [Darkside](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/ui-darkside) (designed by [Jamie Wilson](https://github.com/jamiewilson))
|
||||
- [Taiga](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/ui-taiga) (designed by [Noah Buscher](https://github.com/noahbuscher))
|
||||
- [Ubuntu](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/ui-ubuntu) (designed by [Ahmed Elhanafy](https://github.com/ahmedlhanafy))
|
||||
- [Less Is More](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/ui-less-is-more) (designed by [Alexander Adkins](https://github.com/P0WW0W))
|
||||
|
||||
|
||||
|
||||
|
@ -93,8 +93,8 @@ The Merani user interface is styled using CSS, which means it's easy to modify a
|
|||
#### To install community themes:
|
||||
|
||||
1. Download and unzip the repo
|
||||
2. In Merani, select `Developer > Install a Package Manually... `
|
||||
3. Navigate to where you downloaded the theme and select the root folder. The theme is copied into the Merani settings folder for your convinence
|
||||
2. In Mailspring, select `Developer > Install a Package Manually... `
|
||||
3. Navigate to where you downloaded the theme and select the root folder. The theme is copied into the Mailspring settings folder for your convinence
|
||||
5. Select `Change Theme...` from the top level menu, and you'll see the newly installed theme. That's it!
|
||||
|
||||
|
||||
|
@ -102,21 +102,21 @@ Want to dive in more? Try [creating your own theme](https://github.com/nylas/nyl
|
|||
|
||||
|
||||
## Plugin List
|
||||
We're working on building a plugin index that makes it super easy to add them to Merani. For now, check out the list below! (Feel free to submit a PR if you build a plugin and want it featured here.)
|
||||
We're working on building a plugin index that makes it super easy to add them to Mailspring. For now, check out the list below! (Feel free to submit a PR if you build a plugin and want it featured here.)
|
||||
|
||||
|
||||
#### Bundled Plugins
|
||||
Great starting points for creating your own plugins!
|
||||
- [Translate](https://github.com/Foundry376/Merani/tree/master/internal_packages/composer-translate)—Works with 10 languages
|
||||
- [Quick Replies](https://github.com/Foundry376/Merani/tree/master/internal_packages/composer-templates)—Send emails faster with templates
|
||||
- [Emoji Keyboard](https://github.com/Foundry376/Merani/tree/master/internal_packages/composer-emoji)—Insert emoji by typing a colon (:) followed by the name of an emoji symbol
|
||||
- [GitHub Sidebar Info](https://github.com/Foundry376/Merani/tree/master/internal_packages/github-contact-card)
|
||||
- [View on GitHub](https://github.com/Foundry376/Merani/tree/master/internal_packages/message-view-on-github)
|
||||
- [Personal Level Indicators](https://github.com/Foundry376/Merani/tree/master/internal_packages/personal-level-indicators)
|
||||
- [Phishing Detection](https://github.com/Foundry376/Merani/tree/master/internal_packages/phishing-detection)
|
||||
- [Translate](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/composer-translate)—Works with 10 languages
|
||||
- [Quick Replies](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/composer-templates)—Send emails faster with templates
|
||||
- [Emoji Keyboard](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/composer-emoji)—Insert emoji by typing a colon (:) followed by the name of an emoji symbol
|
||||
- [GitHub Sidebar Info](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/github-contact-card)
|
||||
- [View on GitHub](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/message-view-on-github)
|
||||
- [Personal Level Indicators](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/personal-level-indicators)
|
||||
- [Phishing Detection](https://github.com/Foundry376/Mailspring/tree/master/internal_packages/phishing-detection)
|
||||
|
||||
## Configuration
|
||||
You can configure Merani in a few ways—for instance, pointing it to your self-hosted instance of the sync engine or changing the interface zoom level. [Learn more about how.](https://github.com/Foundry376/Merani/blob/master/CONFIGURATION.md)
|
||||
You can configure Mailspring in a few ways—for instance, pointing it to your self-hosted instance of the sync engine or changing the interface zoom level. [Learn more about how.](https://github.com/Foundry376/Mailspring/blob/master/CONFIGURATION.md)
|
||||
|
||||
## Feature Requests / Plugin Ideas
|
||||
Have an idea for a package or a feature you'd love to see in Merani? Search for existing [GitHub issues](https://github.com/Foundry376/Merani/issues) and join the conversation!
|
||||
Have an idea for a package or a feature you'd love to see in Mailspring? Search for existing [GitHub issues](https://github.com/Foundry376/Mailspring/issues) and join the conversation!
|
||||
|
|
26
ROADMAP.md
26
ROADMAP.md
|
@ -5,7 +5,7 @@ Target Ship Date: Late September
|
|||
#### C++ MailSync
|
||||
*Goal: Reduce bugginess and battery impact, enable new controls over what mail data is synced, and dramatically improve performance by moving mailsync to a new C++ codebase based on MailCore2.*
|
||||
|
||||
- [x] Build a lightweight C++ command-line application that syncs mail using `MailCore2` and `libcurl` and writes to the same sqlite3 database schema used by Merani.
|
||||
- [x] Build a lightweight C++ command-line application that syncs mail using `MailCore2` and `libcurl` and writes to the same sqlite3 database schema used by Mailspring.
|
||||
- [x] Remove the client-sync package and the Activity window and implement `MailsyncProcess`/`MailsyncBridge` wrappers around new C++ codebase. Broadcast database events from the C++ app into the JavaScript app so the UI updates as data changes.
|
||||
- [x] Remove thread and contact search indexing, perform indexing as data is retrieved from IMAP in C++.
|
||||
- [x] Remove migration support from JavaScript. Run the C++ app at launch with `--migrate` to run migrations before the main window is displayed.
|
||||
|
@ -28,7 +28,7 @@ Target Ship Date: Late September
|
|||
- [x] Add support for Gmail authentication flow and XOAUTH2
|
||||
- [ ] Add more robust retry / failure handling logic to C++ code.
|
||||
- [x] Decide what license to use for the C++ codebase / whether to open-source it or provide binaries. (Update: I've deciced to keep this closed source for now. [Here's why.](#why-is-mailsync-closed-source))
|
||||
- [x] Link the C++ codebase into Merani as a submodule, make Travis and AppVeyor CI build the C++ codebase.
|
||||
- [x] Link the C++ codebase into Mailspring as a submodule, make Travis and AppVeyor CI build the C++ codebase.
|
||||
|
||||
#### C++ MailSync Testing:
|
||||
- [x] Test with a Gmail account
|
||||
|
@ -54,22 +54,22 @@ Target Ship Date: Late September
|
|||
+ [x] Implement delta stream handling in the C++ codebase
|
||||
|
||||
#### Deployment
|
||||
- [x] Create a new AWS account for Merani project
|
||||
- [x] Create a new AWS account for Mailspring project
|
||||
- [x] Create a Stripe account
|
||||
- [x] Register Merani domain(s)
|
||||
- [x] Register Mailspring domain(s)
|
||||
- [x] Setup Sentry for client error reporting
|
||||
- [x] Setup Sentry for server error reporting
|
||||
- [x] Obtain Mac Developer Certificate for Merani
|
||||
- [ ] Obtain Windows Verisign Certificate for Merani
|
||||
- [x] Obtain Mac Developer Certificate for Mailspring
|
||||
- [ ] Obtain Windows Verisign Certificate for Mailspring
|
||||
- [x] Setup Amazon VPC with public/private subnets, strong security group rules
|
||||
- [x] Setup fast, reproducible deployments w/ Docker containers
|
||||
- [x] Deploy new identity API to id.getmerani.com
|
||||
- [ ] Deploy new accounts API to accounts.getmerani.com
|
||||
- [x] Deploy new identity API to id.getmailspring.com
|
||||
- [ ] Deploy new accounts API to accounts.getmailspring.com
|
||||
- [ ] Deploy cloud workers to a secured AWS VPC
|
||||
*Blocked: Waiting for Nylas to open-source the rest of the code.*
|
||||
|
||||
#### General
|
||||
- [ ] Create a new logo / icon for Merani
|
||||
- [ ] Create a new logo / icon for Mailspring
|
||||
- [x] Bump Electron to 1.7.6
|
||||
- [x] Bump React to 15.x
|
||||
- [x] Remove "heavy" Node modules no longer needed in 2017 and contribute to slow launch time:
|
||||
|
@ -85,7 +85,7 @@ Target Ship Date: Late September
|
|||
## Roadmap Past 1.0
|
||||
- [ ] Bring back Mail Rules!
|
||||
- [ ] Update documentation for creating plugins and themes
|
||||
- [ ] Create help site using existing content from support.getmerani.com.
|
||||
- [ ] Create help site using existing content from support.getmailspring.com.
|
||||
*Verify they are OK with this?*
|
||||
- [ ] Implement plugin / theme browser like the Chrome Web Store.
|
||||
+ Decide whether to restore support for plugins that need native modules.
|
||||
|
@ -105,13 +105,13 @@ Target Ship Date: Late September
|
|||
|
||||
## Why is Mailsync Closed Source?
|
||||
|
||||
For the initial release I've decided to keep the new C++ codebase closed-source. When you pull this repository and run `npm install`, the correct Mailsync build for your platform is automatically downloaded and put in place so you can hack away on the Merani Electron app. For those of you who are interested, here's why it's closed-source:
|
||||
For the initial release I've decided to keep the new C++ codebase closed-source. When you pull this repository and run `npm install`, the correct Mailsync build for your platform is automatically downloaded and put in place so you can hack away on the Mailspring Electron app. For those of you who are interested, here's why it's closed-source:
|
||||
|
||||
- **Open source is a commitment.** When I was the lead engineer of the Nylas Mail team at Nylas, I spent thousands of hours responding to GitHub issues, helping people build the source, and trying to give PR feedback that was actionable and kind. I'm expecting to spend about 30% of my time working with the open-source community on the JavaScript side of Merani, and I'd rather focus on improving existing documentation and hackability than expand code surface area past what I can support. Especially until it's past the ["bus factor"](https://en.wikipedia.org/wiki/Bus_factor) of one!
|
||||
- **Open source is a commitment.** When I was the lead engineer of the Nylas Mail team at Nylas, I spent thousands of hours responding to GitHub issues, helping people build the source, and trying to give PR feedback that was actionable and kind. I'm expecting to spend about 30% of my time working with the open-source community on the JavaScript side of Mailspring, and I'd rather focus on improving existing documentation and hackability than expand code surface area past what I can support. Especially until it's past the ["bus factor"](https://en.wikipedia.org/wiki/Bus_factor) of one!
|
||||
|
||||
- **Mailsync is hard to compile.** Mailsync is written in C++0x and uses new features like `shared_ptr` and `condition_variable`. It requires GCC 4.8 and has a ton of dependencies and required build flags. If `node-sqlite3` is any indication, open-sourcing it in it's current form would be a GitHub Issues disaster. (Compared to mailsync, `node-sqlite3` is pretty easy to build but a whopping *35%* of it's open issues are [compilation-related!](https://github.com/mapbox/node-sqlite3/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20compile) 😰).
|
||||
|
||||
- **The odds of great PRs are low.** Mailsync is a multithreaded, cross-platform C++ application that interfaces with old, fragile protocols that have their own learning curves and are difficult to mock. For folks to contribute meaningful pull requests, I'd have to write great docs and tests. I'd also need to spend a /lot/ of time reviewing changes for side-effects, enforcing good C++ techniques, and checking changes for performance impact. Maybe I'll be able to support this in the future, but not yet!
|
||||
|
||||
If you're interested in contributing to the Merani Mailsync codebase and have some time and skill to throw at it, please let me know!
|
||||
If you're interested in contributing to the Mailspring Mailsync codebase and have some time and skill to throw at it, please let me know!
|
||||
|
||||
|
|
|
@ -12,19 +12,19 @@ const {version} = require(path.join(appDir, 'package.json'));
|
|||
const config = {
|
||||
usePackageJson: false,
|
||||
outputDirectory: path.join(appDir, 'dist'),
|
||||
appDirectory: path.join(appDir, 'dist', 'merani-win32-ia32'),
|
||||
appDirectory: path.join(appDir, 'dist', 'mailspring-win32-ia32'),
|
||||
loadingGif: path.join(appDir, 'build', 'resources', 'win', 'loading.gif'),
|
||||
iconUrl: 'http://edgehill.s3.amazonaws.com/static/merani.ico',
|
||||
iconUrl: 'http://edgehill.s3.amazonaws.com/static/mailspring.ico',
|
||||
certificateFile: process.env.CERTIFICATE_FILE,
|
||||
certificatePassword: process.env.WINDOWS_CODESIGN_KEY_PASSWORD,
|
||||
description: "Merani",
|
||||
description: "Mailspring",
|
||||
version: version,
|
||||
title: "merani",
|
||||
title: "mailspring",
|
||||
authors: 'Foundry 376, LLC',
|
||||
setupIcon: path.join(appDir, 'build', 'resources', 'win', 'merani.ico'),
|
||||
setupExe: 'MeraniSetup.exe',
|
||||
exe: 'merani.exe',
|
||||
name: 'Merani',
|
||||
setupIcon: path.join(appDir, 'build', 'resources', 'win', 'mailspring.ico'),
|
||||
setupExe: 'MailspringSetup.exe',
|
||||
exe: 'mailspring.exe',
|
||||
name: 'Mailspring',
|
||||
}
|
||||
|
||||
console.log(config);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Merani SDK
|
||||
# Mailspring SDK
|
||||
|
||||
* Merani SDK Guides
|
||||
* Mailspring SDK Guides
|
||||
* [Introduction](/README.md)
|
||||
* [Getting Started](/guides/GettingStarted.md)
|
||||
* [Getting Started Part 2](/guides/GettingStarted-2.md)
|
||||
|
@ -8,7 +8,7 @@
|
|||
* [Interface Concepts](/guides/InterfaceConcepts.md)
|
||||
* [UI Components](/guides/React.md)
|
||||
* [Application Architecture](/guides/Architecture.md)
|
||||
* [Debugging Merani](/guides/Debugging.md)
|
||||
* [Debugging Mailspring](/guides/Debugging.md)
|
||||
* [Accessing the Database](/guides/Database.md)
|
||||
* [Extending the Composer](/guides/ComposerExtensions.md)
|
||||
* [Writing Tests](/guides/WritingSpecs.md)
|
||||
|
|
Binary file not shown.
|
@ -1,9 +1,9 @@
|
|||
merani: arch-dependent-file-in-usr-share
|
||||
merani: changelog-file-missing-in-native-package
|
||||
merani: copyright-file-contains-full-apache-2-license
|
||||
merani: copyright-should-refer-to-common-license-file-for-apache-2
|
||||
merani: copyright-should-refer-to-common-license-file-for-lgpl
|
||||
merani: embedded-library
|
||||
merani: package-installs-python-bytecode
|
||||
merani: unstripped-binary-or-object
|
||||
merani: extra-license-file
|
||||
mailspring: arch-dependent-file-in-usr-share
|
||||
mailspring: changelog-file-missing-in-native-package
|
||||
mailspring: copyright-file-contains-full-apache-2-license
|
||||
mailspring: copyright-should-refer-to-common-license-file-for-apache-2
|
||||
mailspring: copyright-should-refer-to-common-license-file-for-lgpl
|
||||
mailspring: embedded-library
|
||||
mailspring: package-installs-python-bytecode
|
||||
mailspring: unstripped-binary-or-object
|
||||
mailspring: extra-license-file
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# postinst script for merani
|
||||
# postinst script for mailspring
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
|||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
UBUNTU_CODENAMES="precise trusty utopic vivid" # "xenial is not yet available in merani repos."
|
||||
UBUNTU_CODENAMES="precise trusty utopic vivid" # "xenial is not yet available in mailspring repos."
|
||||
DEBIAN_CODENAMES="squeeze wheezy jessie sid"
|
||||
|
||||
case "$1" in
|
||||
|
@ -31,12 +31,12 @@ case "$1" in
|
|||
DISTS=$DEBIAN_CODENAMES
|
||||
DISTRO="debian"
|
||||
else
|
||||
echo "You are not running Debian, Ubuntu, ElementaryOS or LinuxMint. Not adding merani repository."
|
||||
echo "You are not running Debian, Ubuntu, ElementaryOS or LinuxMint. Not adding mailspring repository."
|
||||
DISTRO=""
|
||||
fi
|
||||
|
||||
if [ -n "$DISTRO" ]; then
|
||||
# Add the merani repository.
|
||||
# Add the mailspring repository.
|
||||
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license.
|
||||
|
||||
|
@ -92,7 +92,7 @@ KEYDATA
|
|||
fi
|
||||
done
|
||||
|
||||
REPOCONFIG="deb [arch=i386,amd64] http://apt.getmerani.com/$DISTRO $REPO main"
|
||||
REPOCONFIG="deb [arch=i386,amd64] http://apt.getmailspring.com/$DISTRO $REPO main"
|
||||
|
||||
APT_GET="`which apt-get 2> /dev/null`"
|
||||
APT_CONFIG="`which apt-config 2> /dev/null`"
|
||||
|
@ -113,7 +113,7 @@ KEYDATA
|
|||
APT_SOURCESDIR="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourceparts')"
|
||||
}
|
||||
|
||||
# Add the merani repository to the apt sources.
|
||||
# Add the mailspring repository to the apt sources.
|
||||
# Returns:
|
||||
# 0 - no update necessary
|
||||
# 1 - sources were updated
|
||||
|
@ -127,13 +127,13 @@ KEYDATA
|
|||
|
||||
if [ -d "$APT_SOURCESDIR" ]; then
|
||||
# Nothing to do if it's already there.
|
||||
SOURCELIST=$(grep -H "$REPOCONFIG" "$APT_SOURCESDIR/merani.list" \
|
||||
SOURCELIST=$(grep -H "$REPOCONFIG" "$APT_SOURCESDIR/mailspring.list" \
|
||||
2>/dev/null | cut -d ':' -f 1)
|
||||
if [ -n "$SOURCELIST" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
printf "$REPOCONFIG\n" > "$APT_SOURCESDIR/merani.list"
|
||||
printf "$REPOCONFIG\n" > "$APT_SOURCESDIR/mailspring.list"
|
||||
if [ $? -eq 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Remove the merani repository.
|
||||
# Remove the mailspring repository.
|
||||
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license.
|
||||
|
||||
|
@ -46,7 +46,7 @@ clean_sources_lists() {
|
|||
find_apt_sources
|
||||
|
||||
if [ -d "$APT_SOURCESDIR" ]; then
|
||||
rm -f "$APT_SOURCESDIR/merani.list"
|
||||
rm -f "$APT_SOURCESDIR/mailspring.list"
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
Name=<%= productName %>
|
||||
Comment=<%= description %>
|
||||
GenericName=<%= productName %>
|
||||
Exec=/usr/bin/merani %U
|
||||
Icon=merani
|
||||
Exec=/usr/bin/mailspring %U
|
||||
Icon=mailspring
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
StartupWMClass=<%= productName %>
|
||||
Categories=GNOME;GTK;Network;Email;Utility;Development;
|
||||
MimeType=text/plain;x-scheme-handler/mailto;x-scheme-handler/merani;
|
||||
MimeType=text/plain;x-scheme-handler/mailto;x-scheme-handler/mailspring;
|
40
app/build/resources/linux/redhat/mailspring.spec.in
Normal file
40
app/build/resources/linux/redhat/mailspring.spec.in
Normal file
|
@ -0,0 +1,40 @@
|
|||
Name: <%= name %>
|
||||
Version: <%= version %>
|
||||
Release: 0.1%{?dist}
|
||||
Summary: <%= description %>
|
||||
License: GPLv3
|
||||
URL: https://github.com/Foundry376/Mailspring
|
||||
AutoReqProv: no # Avoid libchromiumcontent.so missing dependency
|
||||
|
||||
requires: libgnome-keyring
|
||||
|
||||
%description
|
||||
<%= description %>
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}/usr/share/mailspring
|
||||
cp -r <%= contentsDir %>/* %{buildroot}/usr/share/mailspring
|
||||
|
||||
mkdir -p %{buildroot}/usr/bin/
|
||||
|
||||
ln -s ../share/mailspring/mailspring %{buildroot}/usr/bin/mailspring
|
||||
chmod 755 %{buildroot}/usr/bin/mailspring
|
||||
|
||||
mkdir -p %{buildroot}/usr/share/applications/
|
||||
mv mailspring.desktop %{buildroot}/usr/share/applications/
|
||||
|
||||
for s in 16 32 64 128 256 512; do
|
||||
mkdir -p %{buildroot}/usr/share/icons/hicolor/${s}x${s}/apps
|
||||
cp -p <%= linuxAssetsDir %>/icons/${s}.png %{buildroot}/usr/share/icons/hicolor/${s}x${s}/apps/mailspring.png
|
||||
done
|
||||
|
||||
%files
|
||||
/usr/bin/mailspring
|
||||
/usr/share/mailspring
|
||||
/usr/share/applications/mailspring.desktop
|
||||
/usr/share/icons/hicolor/16x16/apps/mailspring.png
|
||||
/usr/share/icons/hicolor/32x32/apps/mailspring.png
|
||||
/usr/share/icons/hicolor/64x64/apps/mailspring.png
|
||||
/usr/share/icons/hicolor/128x128/apps/mailspring.png
|
||||
/usr/share/icons/hicolor/256x256/apps/mailspring.png
|
||||
/usr/share/icons/hicolor/512x512/apps/mailspring.png
|
|
@ -1,40 +0,0 @@
|
|||
Name: <%= name %>
|
||||
Version: <%= version %>
|
||||
Release: 0.1%{?dist}
|
||||
Summary: <%= description %>
|
||||
License: GPLv3
|
||||
URL: https://github.com/Foundry376/Merani
|
||||
AutoReqProv: no # Avoid libchromiumcontent.so missing dependency
|
||||
|
||||
requires: libgnome-keyring
|
||||
|
||||
%description
|
||||
<%= description %>
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}/usr/share/merani
|
||||
cp -r <%= contentsDir %>/* %{buildroot}/usr/share/merani
|
||||
|
||||
mkdir -p %{buildroot}/usr/bin/
|
||||
|
||||
ln -s ../share/merani/merani %{buildroot}/usr/bin/merani
|
||||
chmod 755 %{buildroot}/usr/bin/merani
|
||||
|
||||
mkdir -p %{buildroot}/usr/share/applications/
|
||||
mv merani.desktop %{buildroot}/usr/share/applications/
|
||||
|
||||
for s in 16 32 64 128 256 512; do
|
||||
mkdir -p %{buildroot}/usr/share/icons/hicolor/${s}x${s}/apps
|
||||
cp -p <%= linuxAssetsDir %>/icons/${s}.png %{buildroot}/usr/share/icons/hicolor/${s}x${s}/apps/merani.png
|
||||
done
|
||||
|
||||
%files
|
||||
/usr/bin/merani
|
||||
/usr/share/merani
|
||||
/usr/share/applications/merani.desktop
|
||||
/usr/share/icons/hicolor/16x16/apps/merani.png
|
||||
/usr/share/icons/hicolor/32x32/apps/merani.png
|
||||
/usr/share/icons/hicolor/64x64/apps/merani.png
|
||||
/usr/share/icons/hicolor/128x128/apps/merani.png
|
||||
/usr/share/icons/hicolor/256x256/apps/merani.png
|
||||
/usr/share/icons/hicolor/512x512/apps/merani.png
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |
60
app/build/resources/win/mailspring-mailto-registration.reg
Executable file
60
app/build/resources/win/mailspring-mailto-registration.reg
Executable file
|
@ -0,0 +1,60 @@
|
|||
Windows Registry Editor Version 5.00
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Mailspring.Url.mailto]
|
||||
"FriendlyTypeName"="Mailspring Url"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Mailspring.Url.mailto\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Mailspring.Url.mailto\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Mailspring.Url.mailto\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart mailspring.exe --process-start-args %1"
|
||||
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring]
|
||||
@="Mailspring"
|
||||
"LocalizedString"="@{{PATH_TO_ROOT_FOLDER}}\\Update.exe,-123"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\DefaultIcon]
|
||||
@="{{PATH_TO_APP_FOLDER}}\\mailspring.exe,1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Capabilities]
|
||||
"ApplicationName"="Mailspring"
|
||||
"ApplicationDescription"="A fast, modern mail client designed to help you boost your productivity."
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Capabilities\StartMenu]
|
||||
"Mail"="Mailspring"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Capabilities\URLAssociations]
|
||||
"mailto"="Mailspring.Url.mailto"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols\mailto]
|
||||
@="URL:MailTo Protocol"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols\mailto\DefaultIcon]
|
||||
@="{{PATH_TO_APP_FOLDER}}\\mailspring.exe,1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols\mailto\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols\mailto\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\Protocols\mailto\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart mailspring.exe --process-start-args %1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Mailspring\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart mailspring.exe"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\RegisteredApplications]
|
||||
"Mailspring"="Software\\Clients\\Mail\\Mailspring\\Capabilities"
|
||||
|
||||
|
||||
[HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache]
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe"="Mailspring"
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe.FriendlyAppName"="Mailspring"
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe.ApplicationCompany"="Mailspring"
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
@ -1,60 +0,0 @@
|
|||
Windows Registry Editor Version 5.00
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Merani.Url.mailto]
|
||||
"FriendlyTypeName"="Merani Url"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Merani.Url.mailto\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Merani.Url.mailto\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Classes\Merani.Url.mailto\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart merani.exe --process-start-args %1"
|
||||
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani]
|
||||
@="Merani"
|
||||
"LocalizedString"="@{{PATH_TO_ROOT_FOLDER}}\\Update.exe,-123"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\DefaultIcon]
|
||||
@="{{PATH_TO_APP_FOLDER}}\\merani.exe,1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Capabilities]
|
||||
"ApplicationName"="Merani"
|
||||
"ApplicationDescription"="A fast, modern mail client designed to help you boost your productivity."
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Capabilities\StartMenu]
|
||||
"Mail"="Merani"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Capabilities\URLAssociations]
|
||||
"mailto"="Merani.Url.mailto"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols\mailto]
|
||||
@="URL:MailTo Protocol"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols\mailto\DefaultIcon]
|
||||
@="{{PATH_TO_APP_FOLDER}}\\merani.exe,1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols\mailto\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols\mailto\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\Protocols\mailto\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart merani.exe --process-start-args %1"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\shell]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\shell\open]
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\Clients\Mail\Merani\shell\open\command]
|
||||
@="\"{{PATH_TO_ROOT_FOLDER}}\\Update.exe\" --processStart merani.exe"
|
||||
|
||||
[{{HKEY_ROOT}}\SOFTWARE\RegisteredApplications]
|
||||
"Merani"="Software\\Clients\\Mail\\Merani\\Capabilities"
|
||||
|
||||
|
||||
[HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache]
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe"="Merani"
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe.FriendlyAppName"="Merani"
|
||||
"{{PATH_TO_ROOT_FOLDER}}\\Update.exe.ApplicationCompany"="Merani"
|
|
@ -2,14 +2,14 @@ const path = require('path');
|
|||
const createDMG = require('electron-installer-dmg')
|
||||
|
||||
module.exports = (grunt) => {
|
||||
grunt.registerTask('create-mac-dmg', 'Create DMG for Merani', function pack() {
|
||||
grunt.registerTask('create-mac-dmg', 'Create DMG for Mailspring', function pack() {
|
||||
const done = this.async();
|
||||
const dmgPath = path.join(grunt.config('outputDir'), "Merani.dmg");
|
||||
const dmgPath = path.join(grunt.config('outputDir'), "Mailspring.dmg");
|
||||
createDMG({
|
||||
appPath: path.join(grunt.config('outputDir'), "Merani-darwin-x64", "Merani.app"),
|
||||
name: "Merani",
|
||||
appPath: path.join(grunt.config('outputDir'), "Mailspring-darwin-x64", "Mailspring.app"),
|
||||
name: "Mailspring",
|
||||
background: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'DMG-background.png'),
|
||||
icon: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'merani.icns'),
|
||||
icon: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'mailspring.icns'),
|
||||
overwrite: true,
|
||||
out: grunt.config('outputDir'),
|
||||
}, (err) => {
|
||||
|
|
|
@ -6,20 +6,20 @@ const path = require('path');
|
|||
module.exports = (grunt) => {
|
||||
const {spawn} = grunt.config('taskHelpers')
|
||||
|
||||
grunt.registerTask('create-mac-zip', 'Zip up Merani', function pack() {
|
||||
grunt.registerTask('create-mac-zip', 'Zip up Mailspring', function pack() {
|
||||
const done = this.async();
|
||||
const zipPath = path.join(grunt.config('outputDir'), 'Merani.zip');
|
||||
const zipPath = path.join(grunt.config('outputDir'), 'Mailspring.zip');
|
||||
|
||||
if (grunt.file.exists(zipPath)) {
|
||||
grunt.file.delete(zipPath, {force: true});
|
||||
}
|
||||
|
||||
const orig = process.cwd();
|
||||
process.chdir(path.join(grunt.config('outputDir'), 'Merani-darwin-x64'));
|
||||
process.chdir(path.join(grunt.config('outputDir'), 'Mailspring-darwin-x64'));
|
||||
|
||||
spawn({
|
||||
cmd: "zip",
|
||||
args: ["-9", "-y", "-r", "-9", "-X", zipPath, 'Merani.app'],
|
||||
args: ["-9", "-y", "-r", "-9", "-X", zipPath, 'Mailspring.app'],
|
||||
}, (error) => {
|
||||
process.chdir(orig);
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ module.exports = (grunt) => {
|
|||
const {spawn} = grunt.config('taskHelpers');
|
||||
|
||||
const outputDir = grunt.config.get('outputDir');
|
||||
const contentsDir = path.join(grunt.config('outputDir'), `merani-linux-${process.arch}`);
|
||||
const contentsDir = path.join(grunt.config('outputDir'), `mailspring-linux-${process.arch}`);
|
||||
const linuxAssetsDir = path.resolve(path.join(grunt.config('buildDir'), 'resources', 'linux'));
|
||||
const arch = {
|
||||
ia32: 'i386',
|
||||
|
@ -49,17 +49,17 @@ module.exports = (grunt) => {
|
|||
version: grunt.config('appJSON').version,
|
||||
description: grunt.config('appJSON').description,
|
||||
productName: grunt.config('appJSON').productName,
|
||||
linuxShareDir: '/usr/local/share/merani',
|
||||
linuxShareDir: '/usr/local/share/mailspring',
|
||||
linuxAssetsDir: linuxAssetsDir,
|
||||
contentsDir: contentsDir,
|
||||
}
|
||||
|
||||
// This populates merani.spec
|
||||
const specInFilePath = path.join(linuxAssetsDir, 'redhat', 'merani.spec.in')
|
||||
// This populates mailspring.spec
|
||||
const specInFilePath = path.join(linuxAssetsDir, 'redhat', 'mailspring.spec.in')
|
||||
writeFromTemplate(specInFilePath, templateData)
|
||||
|
||||
// This populates merani.desktop
|
||||
const desktopInFilePath = path.join(linuxAssetsDir, 'merani.desktop.in')
|
||||
// This populates mailspring.desktop
|
||||
const desktopInFilePath = path.join(linuxAssetsDir, 'mailspring.desktop.in')
|
||||
writeFromTemplate(desktopInFilePath, templateData)
|
||||
|
||||
const cmd = path.join(grunt.config('appDir'), 'script', 'mkrpm')
|
||||
|
@ -92,23 +92,23 @@ module.exports = (grunt) => {
|
|||
name: grunt.config('appJSON').name,
|
||||
description: grunt.config('appJSON').description,
|
||||
productName: grunt.config('appJSON').productName,
|
||||
linuxShareDir: '/usr/share/merani',
|
||||
linuxShareDir: '/usr/share/mailspring',
|
||||
arch: arch,
|
||||
section: 'devel',
|
||||
maintainer: 'Merani Team <support@getmerani.com>',
|
||||
maintainer: 'Mailspring Team <support@getmailspring.com>',
|
||||
installedSize: installedSize,
|
||||
}
|
||||
writeFromTemplate(path.join(linuxAssetsDir, 'debian', 'control.in'), data)
|
||||
writeFromTemplate(path.join(linuxAssetsDir, 'merani.desktop.in'), data)
|
||||
writeFromTemplate(path.join(linuxAssetsDir, 'mailspring.desktop.in'), data)
|
||||
|
||||
const icon = path.join(grunt.config('appDir'), 'build', 'resources', 'merani.png')
|
||||
const icon = path.join(grunt.config('appDir'), 'build', 'resources', 'mailspring.png')
|
||||
const cmd = path.join(grunt.config('appDir'), 'script', 'mkdeb');
|
||||
const args = [version, arch, icon, linuxAssetsDir, contentsDir, outputDir];
|
||||
spawn({cmd, args}, (spawnError) => {
|
||||
if (spawnError) {
|
||||
return done(spawnError);
|
||||
}
|
||||
grunt.log.ok(`Created ${outputDir}/merani-${version}-${arch}.deb`);
|
||||
grunt.log.ok(`Created ${outputDir}/mailspring-${version}-${arch}.deb`);
|
||||
return done()
|
||||
});
|
||||
});
|
||||
|
|
|
@ -130,8 +130,8 @@ module.exports = (grunt) => {
|
|||
appVersion: packageJSON.version,
|
||||
platform: platform,
|
||||
protocols: [{
|
||||
name: "Merani Protocol",
|
||||
schemes: ["merani"],
|
||||
name: "Mailspring Protocol",
|
||||
schemes: ["mailspring"],
|
||||
}, {
|
||||
name: "Mailto Protocol",
|
||||
schemes: ["mailto"],
|
||||
|
@ -143,14 +143,14 @@ module.exports = (grunt) => {
|
|||
'win32': 'ia32',
|
||||
}[platform],
|
||||
icon: {
|
||||
darwin: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'merani.icns'),
|
||||
win32: path.resolve(grunt.config('appDir'), 'build', 'resources', 'win', 'merani.ico'),
|
||||
darwin: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'mailspring.icns'),
|
||||
win32: path.resolve(grunt.config('appDir'), 'build', 'resources', 'win', 'mailspring.ico'),
|
||||
linux: undefined,
|
||||
}[platform],
|
||||
name: {
|
||||
darwin: 'Merani',
|
||||
win32: 'merani',
|
||||
linux: 'merani',
|
||||
darwin: 'Mailspring',
|
||||
win32: 'mailspring',
|
||||
linux: 'mailspring',
|
||||
}[platform],
|
||||
appCopyright: `Copyright (C) 2014-${new Date().getFullYear()} Foundry 376, LLC. All rights reserved.`,
|
||||
derefSymlinks: false,
|
||||
|
@ -216,9 +216,9 @@ module.exports = (grunt) => {
|
|||
osxSign: !!process.env.SIGN_BUILD,
|
||||
win32metadata: {
|
||||
CompanyName: 'Foundry 376, LLC',
|
||||
FileDescription: 'Merani',
|
||||
FileDescription: 'Mailspring',
|
||||
LegalCopyright: `Copyright (C) 2014-${new Date().getFullYear()} Foundry 376, LLC. All rights reserved.`,
|
||||
ProductName: 'Merani',
|
||||
ProductName: 'Mailspring',
|
||||
},
|
||||
// NOTE: The following plist keys can NOT be set in the
|
||||
// extra.plist since they are manually overridden by
|
||||
|
@ -235,7 +235,7 @@ module.exports = (grunt) => {
|
|||
// Electron.app/Contents/Info.plist. A majority of the defaults are
|
||||
// left in the Electron Info.plist file
|
||||
extendInfo: path.resolve(grunt.config('appDir'), 'build', 'resources', 'mac', 'extra.plist'),
|
||||
appBundleId: "com.merani.merani",
|
||||
appBundleId: "com.mailspring.mailspring",
|
||||
afterCopy: [
|
||||
runCopyPlatformSpecificResources,
|
||||
runWriteCommitHashIntoPackage,
|
||||
|
@ -245,7 +245,7 @@ module.exports = (grunt) => {
|
|||
},
|
||||
})
|
||||
|
||||
grunt.registerTask('package', 'Package Merani', function pack() {
|
||||
grunt.registerTask('package', 'Package Mailspring', function pack() {
|
||||
const done = this.async();
|
||||
const start = Date.now();
|
||||
|
||||
|
|
|
@ -80,8 +80,8 @@ module.exports = (grunt) => {
|
|||
getCertData = () => {
|
||||
const certs = path.resolve(path.join(grunt.config('buildDir'), 'resources', 'certs', 'mac'));
|
||||
const appleCert = path.join(certs, 'AppleWWDRCA.cer');
|
||||
const nylasCert = path.join(certs, 'mac-merani.cer');
|
||||
const nylasPrivateKey = path.join(certs, 'mac-merani.p12');
|
||||
const nylasCert = path.join(certs, 'mac-codesigning.cer');
|
||||
const nylasPrivateKey = path.join(certs, 'mac-codesigning.p12');
|
||||
|
||||
const keyPass = process.env.APPLE_CODESIGN_KEY_PASSWORD;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Default Config
|
||||
|
||||
These are the default Merani configs. This folder on setup is copied to
|
||||
`/Library/Application Support/Merani` on a Mac and otehr appropriate folders
|
||||
These are the default Mailspring configs. This folder on setup is copied to
|
||||
`/Library/Application Support/Mailspring` on a Mac and otehr appropriate folders
|
||||
on Windows and Linux.
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
"private": true,
|
||||
"syncInit": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
This folder contains a modified version of analytics-node. The original version uses `superagent`, which is both unnecessary (since we have both Browser and Node APIs and can use `fetch` and also added ~2.1MB of JavaScript to Merani.)
|
||||
This folder contains a modified version of analytics-node. The original version uses `superagent`, which is both unnecessary (since we have both Browser and Node APIs and can use `fetch` and also added ~2.1MB of JavaScript to Mailspring.)
|
|
@ -22,7 +22,7 @@ class AnalyticsStore extends NylasStore {
|
|||
// Allow requests to be grouped together if they're fired back-to-back,
|
||||
// but generally report each event as it happens. This segment library
|
||||
// is intended for a server where the user doesn't quit...
|
||||
this.analytics = new AnalyticsSink("merani", {
|
||||
this.analytics = new AnalyticsSink("mailspring", {
|
||||
host: `${NylasAPIRequest.rootURLForServer('identity')}/api/s`,
|
||||
flushInterval: 500,
|
||||
flushAt: 5,
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
"default": true
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"private": true,
|
||||
"syncInit": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"url": ""
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
|
||||
"isOptional": true,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"icon": "./icon.png",
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"isOptional": true,
|
||||
"isHiddenOnPluginsPage": true,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Composer Templates
|
||||
|
||||
Create templates you can use to pre-fill the N1 composer - never type the same
|
||||
email again! Templates live in the templates folder inside the Merani config folder.
|
||||
email again! Templates live in the templates folder inside the Mailspring config folder.
|
||||
|
||||
Each template is an HTML file - the name of the file is the name of the template,
|
||||
and it's contents are the default message body.
|
||||
|
|
|
@ -123,7 +123,7 @@ class TemplatePicker extends React.Component {
|
|||
title="Insert quick reply…"
|
||||
>
|
||||
<RetinaImg
|
||||
url="merani://composer-templates/assets/icon-composer-templates@2x.png"
|
||||
url="mailspring://composer-templates/assets/icon-composer-templates@2x.png"
|
||||
mode={RetinaImg.Mode.ContentIsMask}
|
||||
/>
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -149,7 +149,7 @@ class TranslateButton extends React.Component {
|
|||
>
|
||||
<RetinaImg
|
||||
mode={RetinaImg.Mode.ContentIsMask}
|
||||
url="merani://composer-translate/assets/icon-composer-translate@2x.png"
|
||||
url="mailspring://composer-translate/assets/icon-composer-translate@2x.png"
|
||||
/>
|
||||
|
||||
<RetinaImg
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
"license": "GPL-3.0",
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
"scripts": {
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
"all": true
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,35 +3,35 @@
|
|||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('merani://custom-fonts/fonts/Custom-Thin.otf');
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-Thin.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('merani://custom-fonts/fonts/Custom-Blond.otf');
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-Blond.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('merani://custom-fonts/fonts/Custom-Normal.otf');
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-Normal.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('merani://custom-fonts/fonts/Custom-Medium.otf');
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-Medium.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url('merani://custom-fonts/fonts/Custom-SemiBold.otf');
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-SemiBold.otf');
|
||||
}
|
||||
|
||||
// Pro-SemiBold doesn't render emoji properly. Override the emjoi unicode
|
||||
|
@ -40,6 +40,6 @@
|
|||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url('merani://custom-fonts/fonts/Custom-Normal.otf'), Helvetica, sans-serif;
|
||||
src: url('mailspring://custom-fonts/fonts/Custom-Normal.otf'), Helvetica, sans-serif;
|
||||
unicode-range: U+1F300-1F5FF, U+1F600-1F64F, U+1F680-1F6FF, U+2600-26FF;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import {SoundRegistry} from 'nylas-exports';
|
||||
|
||||
export function activate() {
|
||||
// FIXME: Use the merani:// protocol handlers once we upgrade Electron past
|
||||
// FIXME: Use the mailspring:// protocol handlers once we upgrade Electron past
|
||||
// v30.0
|
||||
// See: https://github.com/atom/electron/issues/1123
|
||||
SoundRegistry.register({
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "Proprietary",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"all": true
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -32,7 +32,7 @@ const GithubProfile = function GithubProfile(props) {
|
|||
// objects here that *represent* the DOM we want.
|
||||
return (
|
||||
<div className="profile">
|
||||
<img className="logo" alt="github logo" src="merani://github-contact-card/assets/github.png" />
|
||||
<img className="logo" alt="github logo" src="mailspring://github-contact-card/assets/github.png" />
|
||||
<a href={profile.html_url}>{profile.login}</a>
|
||||
<div>{repoElements}</div>
|
||||
</div>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
"license": "GPL-3.0",
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
"scripts": {
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"calendar": true
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -62,7 +62,7 @@ export function autolink(doc, {async} = {}) {
|
|||
exclude: [/\..*[/|?].*@/],
|
||||
}],
|
||||
['tel:', RegExpUtils.phoneRegex()],
|
||||
['', RegExpUtils.meraniCommandRegex()],
|
||||
['', RegExpUtils.mailspringCommandRegex()],
|
||||
['', RegExpUtils.urlRegex({matchEntireString: false})],
|
||||
];
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ export default class MessageItemBody extends React.Component {
|
|||
const inlineImgRegexp = new RegExp(`<\\s*img.*src=['"]cid:${file.contentId}['"][^>]*>`, 'gi')
|
||||
// Render a spinner
|
||||
merged = merged.replace(inlineImgRegexp, () =>
|
||||
'<img alt="spinner.gif" src="merani://message-list/assets/spinner.gif" style="-webkit-user-drag: none;">'
|
||||
'<img alt="spinner.gif" src="mailspring://message-list/assets/spinner.gif" style="-webkit-user-drag: none;">'
|
||||
);
|
||||
} else {
|
||||
// Render the completed download. We include data-nylas-file so that if the image fails
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"private": true,
|
||||
"syncInit": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
Hello world
|
||||
|
||||
merani is cool.
|
||||
mailspring is cool.
|
||||
|
||||
merani://plugins?test=stuff
|
||||
mailspring://plugins?test=stuff
|
||||
|
||||
merani:plugins?test=stuff
|
||||
mailspring:plugins?test=stuff
|
||||
|
||||
<strong>merani://plugins?test=stuff</strong>
|
||||
<strong>mailspring://plugins?test=stuff</strong>
|
||||
|
||||
Don't you like merani?
|
||||
Don't you like mailspring?
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
Hello world
|
||||
|
||||
merani is cool.
|
||||
mailspring is cool.
|
||||
|
||||
<a href="merani://plugins?test=stuff" title="merani://plugins?test=stuff">merani://plugins?test=stuff</a>
|
||||
<a href="mailspring://plugins?test=stuff" title="mailspring://plugins?test=stuff">mailspring://plugins?test=stuff</a>
|
||||
|
||||
<a href="merani:plugins?test=stuff" title="merani:plugins?test=stuff">merani:plugins?test=stuff</a>
|
||||
<a href="mailspring:plugins?test=stuff" title="mailspring:plugins?test=stuff">mailspring:plugins?test=stuff</a>
|
||||
|
||||
<strong><a href="merani://plugins?test=stuff" title="merani://plugins?test=stuff">merani://plugins?test=stuff</a></strong>
|
||||
<strong><a href="mailspring://plugins?test=stuff" title="mailspring://plugins?test=stuff">mailspring://plugins?test=stuff</a></strong>
|
||||
|
||||
Don't you like merani?
|
||||
Don't you like mailspring?
|
||||
|
|
|
@ -158,7 +158,7 @@ export default class ViewOnGithubButton extends React.Component {
|
|||
>
|
||||
<RetinaImg
|
||||
mode={RetinaImg.Mode.ContentIsMask}
|
||||
url="merani://message-view-on-github/assets/github@2x.png"
|
||||
url="mailspring://message-view-on-github/assets/github@2x.png"
|
||||
/>
|
||||
</button>
|
||||
</KeyCommandsRegion>
|
||||
|
|
|
@ -13,6 +13,6 @@
|
|||
"isHiddenOnPluginsPage": true,
|
||||
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import ModeToggle from './mode-toggle';
|
|||
|
||||
const ToggleWithTutorialTip = HasTutorialTip(ModeToggle, {
|
||||
title: 'Compose with context',
|
||||
instructions: "Merani shows you everything about your contacts right inside your inbox. See LinkedIn profiles, Twitter bios, message history, and more.",
|
||||
instructions: "Mailspring shows you everything about your contacts right inside your inbox. See LinkedIn profiles, Twitter bios, message history, and more.",
|
||||
});
|
||||
|
||||
// NOTE: this is a hack to allow ComponentRegistry
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"main": "./lib/main",
|
||||
"license": "GPL-3.0",
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ export default class AccountErrorNotification extends React.Component {
|
|||
}
|
||||
|
||||
_onContactSupport = (erroredAccount) => {
|
||||
let url = 'https://support.getmerani.com/hc/en-us/requests/new'
|
||||
let url = 'https://support.getmailspring.com/hc/en-us/requests/new'
|
||||
if (erroredAccount) {
|
||||
url += `?email=${encodeURIComponent(erroredAccount.emailAddress)}`
|
||||
const {syncError} = erroredAccount
|
||||
|
|
|
@ -58,7 +58,7 @@ export default class DefaultClientNotification extends React.Component {
|
|||
}
|
||||
return (
|
||||
<Notification
|
||||
title="Would you like to make Merani your default mail client?"
|
||||
title="Would you like to make Mailspring your default mail client?"
|
||||
priority="1"
|
||||
icon="volstead-defaultclient.png"
|
||||
actions={[{
|
||||
|
|
|
@ -20,7 +20,7 @@ export default class DevModeNotification extends React.Component {
|
|||
return (
|
||||
<Notification
|
||||
priority="0"
|
||||
title="Merani is running in dev mode!"
|
||||
title="Mailspring is running in dev mode!"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ function OfflineNotification({isOnline, retryingInSeconds}) {
|
|||
return (
|
||||
<Notification
|
||||
className="offline"
|
||||
title="Merani is offline"
|
||||
title="Mailspring is offline"
|
||||
subtitle={subtitle}
|
||||
priority="5"
|
||||
icon="volstead-offline.png"
|
||||
|
|
|
@ -26,7 +26,7 @@ export default class UnstableChannelNotification extends React.Component {
|
|||
}
|
||||
|
||||
_onReportIssue = () => {
|
||||
NylasEnv.windowEventHandler.openLink({href: 'mailto:support@getmerani.com'})
|
||||
NylasEnv.windowEventHandler.openLink({href: 'mailto:support@getmailspring.com'})
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -34,7 +34,7 @@ export default class UpdateNotification extends React.Component {
|
|||
}
|
||||
|
||||
_onViewChangelog = () => {
|
||||
shell.openExternal('https://github.com/Foundry376/Merani/releases/latest')
|
||||
shell.openExternal('https://github.com/Foundry376/Mailspring/releases/latest')
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -45,7 +45,7 @@ export default class UpdateNotification extends React.Component {
|
|||
return (
|
||||
<Notification
|
||||
priority="4"
|
||||
title={`An update to Merani is available ${version}`}
|
||||
title={`An update to Mailspring is available ${version}`}
|
||||
subtitle="View changelog"
|
||||
subtitleAction={this._onViewChangelog}
|
||||
icon="volstead-upgrade.png"
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
.notification .subtitle.has-action::after {
|
||||
content:'';
|
||||
background: url(merani://notifications/assets/minichevron@2x.png) top left no-repeat;
|
||||
background: url(mailspring://notifications/assets/minichevron@2x.png) top left no-repeat;
|
||||
background-size: 4.5px 7px;
|
||||
margin-left:3px;
|
||||
display: inline-block;
|
||||
|
|
|
@ -115,7 +115,7 @@ const CreatePageForForm = (FormComponent) => {
|
|||
const errorStatusCode = err.statusCode
|
||||
|
||||
if (err.errorType === "setting_update_error") {
|
||||
errorMessage = 'The IMAP/SMTP servers for this account do not match our records. Please verify that any server names you entered are correct. If your IMAP/SMTP server has changed, first remove this account from Merani, then try logging in again.';
|
||||
errorMessage = 'The IMAP/SMTP servers for this account do not match our records. Please verify that any server names you entered are correct. If your IMAP/SMTP server has changed, first remove this account from Mailspring, then try logging in again.';
|
||||
}
|
||||
if (err.errorType && err.errorType.includes("autodiscover") && (accountInfo.type === 'exchange')) {
|
||||
errorFieldNames.push('eas_server_host')
|
||||
|
@ -178,10 +178,10 @@ const CreatePageForForm = (FormComponent) => {
|
|||
let articleURL;
|
||||
if (accountInfo.email.includes("@yahoo.com")) {
|
||||
message = "Have you enabled access through Yahoo?";
|
||||
articleURL = "https://support.getmerani.com/hc/en-us/articles/115001076128";
|
||||
articleURL = "https://support.getmailspring.com/hc/en-us/articles/115001076128";
|
||||
} else {
|
||||
message = "Some providers require an app password."
|
||||
articleURL = "https://support.getmerani.com/hc/en-us/articles/115001056608";
|
||||
articleURL = "https://support.getmailspring.com/hc/en-us/articles/115001056608";
|
||||
}
|
||||
// We don't use a FormErrorMessage component because the content
|
||||
// we need to display has HTML.
|
||||
|
|
|
@ -50,7 +50,7 @@ export function makeGmailOAuthRequest(sessionKey) {
|
|||
}
|
||||
|
||||
export async function authIMAPForGmail(serverTokenResponse) {
|
||||
// At this point, the Merani server has retrieved the Gmail token,
|
||||
// At this point, the Mailspring server has retrieved the Gmail token,
|
||||
// created an account object in the database and tested it. All we
|
||||
// need to do is save it locally, since we're confident Gmail will be
|
||||
// accessible from the local sync worker.
|
||||
|
|
|
@ -165,7 +165,7 @@ class OnboardingStore extends NylasStore {
|
|||
}
|
||||
} catch (e) {
|
||||
NylasEnv.reportError(e);
|
||||
NylasEnv.showErrorDialog("Unable to Connect Account", "Sorry, something went wrong on the Nylas server. Please try again. If you're still having issues, contact us at support@getmerani.com.");
|
||||
NylasEnv.showErrorDialog("Unable to Connect Account", "Sorry, something went wrong on the Nylas server. Please try again. If you're still having issues, contact us at support@getmailspring.com.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ class AccountOnboardingSuccess extends Component { // eslint-disable-line
|
|||
</div>
|
||||
<div>
|
||||
<h2>Successfully connected to {accountType.displayName}!</h2>
|
||||
<h3>Adding your account to Merani…</h3>
|
||||
<h3>Adding your account to Mailspring…</h3>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -124,7 +124,7 @@ class InitialPreferencesPage extends React.Component
|
|||
|
||||
render: =>
|
||||
<div className="page opaque" style={width:900, height:620}>
|
||||
<h1 style={paddingTop: 100}>Welcome to Merani</h1>
|
||||
<h1 style={paddingTop: 100}>Welcome to Mailspring</h1>
|
||||
<h4 style={marginBottom: 70}>Let's set things up to your liking.</h4>
|
||||
<ConfigPropContainer>
|
||||
<InitialPreferencesOptions account={@state.account} />
|
||||
|
|
|
@ -7,7 +7,7 @@ const Steps = [
|
|||
id: 'people',
|
||||
title: 'Compose with context',
|
||||
image: 'feature-people@2x.png',
|
||||
description: "Merani shows you everything about your contacts right inside your inbox. See LinkedIn profiles, Twitter bios, message history, and more.",
|
||||
description: "Mailspring shows you everything about your contacts right inside your inbox. See LinkedIn profiles, Twitter bios, message history, and more.",
|
||||
x: 96.6,
|
||||
y: 1.3,
|
||||
xDot: 93.5,
|
||||
|
@ -18,7 +18,7 @@ const Steps = [
|
|||
id: 'activity',
|
||||
title: 'Track opens and clicks',
|
||||
image: 'feature-activity@2x.png',
|
||||
description: "With activity tracking, you’ll know as soon as someone reads your message. Sending to a group? Merani shows you which recipients opened your email so you can follow up with precision.",
|
||||
description: "With activity tracking, you’ll know as soon as someone reads your message. Sending to a group? Mailspring shows you which recipients opened your email so you can follow up with precision.",
|
||||
x: 12.8,
|
||||
y: 1,
|
||||
xDot: 15,
|
||||
|
@ -29,7 +29,7 @@ const Steps = [
|
|||
id: 'snooze',
|
||||
title: 'Send on your own schedule',
|
||||
image: 'feature-snooze@2x.png',
|
||||
description: "Snooze emails to return at any time that suits you. Schedule messages to send at the ideal time. Merani makes it easy to control the fabric of spacetime!",
|
||||
description: "Snooze emails to return at any time that suits you. Schedule messages to send at the ideal time. Mailspring makes it easy to control the fabric of spacetime!",
|
||||
x: 5.5,
|
||||
y: 23.3,
|
||||
xDot: 10,
|
||||
|
@ -40,7 +40,7 @@ const Steps = [
|
|||
// id: 'composer',
|
||||
// title: 'Eliminate hacky extensions',
|
||||
// image: 'feature-composer@2x.png',
|
||||
// description: "Embed calendar invitations, propose meeting times, use quick reply templates, send mass emails with mail merge, and more—all directly from Merani’s powerful composer.",
|
||||
// description: "Embed calendar invitations, propose meeting times, use quick reply templates, send mass emails with mail merge, and more—all directly from Mailspring’s powerful composer.",
|
||||
// x: 60.95,
|
||||
// y: 66,
|
||||
// xDot: 60.3,
|
||||
|
@ -125,7 +125,7 @@ export default class TutorialPage extends React.Component {
|
|||
</div>
|
||||
</div>
|
||||
<div className="right">
|
||||
<img src={`merani://onboarding/assets/${current.image}`} style={{zoom: 0.5, margin: 'auto'}} role="presentation" />
|
||||
<img src={`mailspring://onboarding/assets/${current.image}`} style={{zoom: 0.5, margin: 'auto'}} role="presentation" />
|
||||
<h2>{current.title}</h2>
|
||||
<p>{current.description}</p>
|
||||
</div>
|
||||
|
|
|
@ -23,9 +23,9 @@ export default class WelcomePage extends React.Component {
|
|||
<div className="page welcome">
|
||||
<div className="steps-container">
|
||||
<div>
|
||||
<RetinaImg className="logo" style={{marginTop: 166}} url="merani://onboarding/assets/nylas-logo@2x.png" mode={RetinaImg.Mode.ContentPreserve} />
|
||||
<p className="hero-text" style={{fontSize: 46, marginTop: 57}}>Welcome to Merani</p>
|
||||
<RetinaImg className="icons" url="merani://onboarding/assets/icons-bg@2x.png" mode={RetinaImg.Mode.ContentPreserve} />
|
||||
<RetinaImg className="logo" style={{marginTop: 166}} url="mailspring://onboarding/assets/nylas-logo@2x.png" mode={RetinaImg.Mode.ContentPreserve} />
|
||||
<p className="hero-text" style={{fontSize: 46, marginTop: 57}}>Welcome to Mailspring</p>
|
||||
<RetinaImg className="icons" url="mailspring://onboarding/assets/icons-bg@2x.png" mode={RetinaImg.Mode.ContentPreserve} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="footer">
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"onboarding": true
|
||||
|
|
|
@ -379,7 +379,7 @@
|
|||
.screenshot {
|
||||
width: 523px;
|
||||
height: 385px;
|
||||
background:url(merani://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
|
||||
background:url(mailspring://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
|
||||
background-size: contain;
|
||||
margin:auto;
|
||||
position: relative;
|
||||
|
@ -396,7 +396,7 @@
|
|||
.overlay-content {
|
||||
transition: all cubic-bezier(0.65, 0.05, 0.36, 1) 260ms;
|
||||
transform: translate3d(-67px,-67px,0) scale(0.21);
|
||||
background:url(merani://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
|
||||
background:url(mailspring://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
|
||||
background-position: 10% 20%;
|
||||
border-radius: 73px;
|
||||
width: 146px;
|
||||
|
|
|
@ -104,7 +104,7 @@ export default class SidebarParticipantProfile extends React.Component {
|
|||
href={profile.url}
|
||||
>
|
||||
<RetinaImg
|
||||
url={`merani://participant-profile/assets/${type}-sidebar-icon@2x.png`}
|
||||
url={`mailspring://participant-profile/assets/${type}-sidebar-icon@2x.png`}
|
||||
mode={RetinaImg.Mode.ContentPreserve}
|
||||
/>
|
||||
</a>
|
||||
|
@ -170,7 +170,7 @@ export default class SidebarParticipantProfile extends React.Component {
|
|||
return (
|
||||
<p className="location">
|
||||
<RetinaImg
|
||||
url={`merani://participant-profile/assets/location-icon@2x.png`}
|
||||
url={`mailspring://participant-profile/assets/location-icon@2x.png`}
|
||||
mode={RetinaImg.Mode.ContentPreserve}
|
||||
style={{"float": "left"}}
|
||||
/>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"default": true
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"license": "GPL-3.0"
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ export default class PersonalLevelIcon extends React.Component {
|
|||
return (
|
||||
<div className="personal-level-icon">
|
||||
<RetinaImg
|
||||
url={`merani://personal-level-indicators/assets/PLI-Level${level}@2x.png`}
|
||||
url={`mailspring://personal-level-indicators/assets/PLI-Level${level}@2x.png`}
|
||||
mode={RetinaImg.Mode.ContentDark}
|
||||
/>
|
||||
</div>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"url": ""
|
||||
},
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"license": "GPL-3.0"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## Phishing Detection
|
||||
|
||||
A sample package for Merani to detect simple phishing attempts. This package display a simple warning if
|
||||
A sample package for Mailspring to detect simple phishing attempts. This package display a simple warning if
|
||||
a message's originating address is different from its return address. The warning looks like this:
|
||||
|
||||
![screenshot](./screenshot.png)
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"isOptional": true,
|
||||
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -113,7 +113,7 @@ class PreferencesAccountDetails extends Component {
|
|||
|
||||
_onContactSupport = () => {
|
||||
const {shell} = require("electron");
|
||||
shell.openExternal("https://support.getmerani.com/hc/en-us/requests/new");
|
||||
shell.openExternal("https://support.getmailspring.com/hc/en-us/requests/new");
|
||||
}
|
||||
|
||||
// Renderers
|
||||
|
@ -149,21 +149,21 @@ class PreferencesAccountDetails extends Component {
|
|||
switch (account.syncState) {
|
||||
case Account.N1_Cloud_AUTH_FAILED:
|
||||
return this._renderErrorDetail(
|
||||
`Merani can no longer authenticate with Merani cloud services for
|
||||
`Mailspring can no longer authenticate with Mailspring cloud services for
|
||||
${account.emailAddress}. The password or authentication may
|
||||
have changed.`,
|
||||
"Reconnect",
|
||||
this._onReconnect);
|
||||
case Account.SYNC_STATE_AUTH_FAILED:
|
||||
return this._renderErrorDetail(
|
||||
`Merani can no longer authenticate with ${account.emailAddress}. The password
|
||||
`Mailspring can no longer authenticate with ${account.emailAddress}. The password
|
||||
or authentication may have changed.`,
|
||||
"Reconnect",
|
||||
this._onReconnect);
|
||||
default:
|
||||
return this._renderErrorDetail(
|
||||
`Merani encountered an error while syncing mail for ${account.emailAddress}.
|
||||
Try re-adding the account and contact Merani support if the problem persists.`,
|
||||
`Mailspring encountered an error while syncing mail for ${account.emailAddress}.
|
||||
Try re-adding the account and contact Mailspring support if the problem persists.`,
|
||||
"Contact support",
|
||||
this._onContactSupport);
|
||||
}
|
||||
|
|
|
@ -38,14 +38,14 @@ class PreferencesIdentity extends React.Component {
|
|||
}
|
||||
|
||||
_renderBasic() {
|
||||
const learnMore = () => shell.openExternal("https://getmerani.com/pro")
|
||||
const learnMore = () => shell.openExternal("https://getmailspring.com/pro")
|
||||
return (
|
||||
<div className="row padded">
|
||||
<div>
|
||||
You are using <strong>Merani Basic</strong>. Upgrade to Merani Pro to unlock a more powerful email experience.
|
||||
You are using <strong>Mailspring Basic</strong>. Upgrade to Mailspring Pro to unlock a more powerful email experience.
|
||||
</div>
|
||||
<div className="subscription-actions">
|
||||
<div className="btn btn-emphasis" onClick={this._onUpgrade} style={{verticalAlign: "top"}}>Upgrade to Merani Pro</div>
|
||||
<div className="btn btn-emphasis" onClick={this._onUpgrade} style={{verticalAlign: "top"}}>Upgrade to Mailspring Pro</div>
|
||||
<div className="btn minor-width" onClick={learnMore}>Learn More</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -54,12 +54,12 @@ class PreferencesIdentity extends React.Component {
|
|||
|
||||
_renderPaidPlan(planName, effectivePlanName) {
|
||||
const unpaidNote = (effectivePlanName !== planName) && (
|
||||
<p>{`Note: Due to issues with your most recent payment, you've been temporarily downgraded to Merani ${effectivePlanName}. Click 'Billing' below to correct the issue.`}</p>
|
||||
<p>{`Note: Due to issues with your most recent payment, you've been temporarily downgraded to Mailspring ${effectivePlanName}. Click 'Billing' below to correct the issue.`}</p>
|
||||
)
|
||||
return (
|
||||
<div className="row padded">
|
||||
<div>
|
||||
Thank you for using <strong style={{textTransform: 'capitalize'}}>{`Merani ${planName}`}</strong> and supporting independent software.
|
||||
Thank you for using <strong style={{textTransform: 'capitalize'}}>{`Mailspring ${planName}`}</strong> and supporting independent software.
|
||||
{unpaidNote}
|
||||
</div>
|
||||
<div className="subscription-actions">
|
||||
|
|
|
@ -43,7 +43,7 @@ class DefaultMailClientItem extends React.Component {
|
|||
checked={this.state.defaultClient}
|
||||
onChange={this.toggleDefaultMailClient}
|
||||
/>
|
||||
<label htmlFor="default-client">Use Merani as default mail client</label>
|
||||
<label htmlFor="default-client">Use Mailspring as default mail client</label>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
"syncInit": true,
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "GPL-3.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -142,7 +142,7 @@ export function removeTrackingPixels(message) {
|
|||
// Remove Nylas read receipt pixels for the current account. If this is a
|
||||
// reply, our read receipt could still be in the body and could trigger
|
||||
// additional opens. (isFromMe is not sufficient!)
|
||||
if (imageURL.indexOf(`getmerani.com/open/${message.accountId}`) >= 0) {
|
||||
if (imageURL.indexOf(`getmailspring.com/open/${message.accountId}`) >= 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"main": "./lib/main",
|
||||
"license": "GPL-3.0",
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"default": true,
|
||||
|
|
|
@ -5,16 +5,16 @@ could you please put me in touch with them, so that we can get you guys set up
|
|||
correctly as soon as possible?</p><p>Thanks!</p><p>Gleb Polyakov</p><p>Head of
|
||||
Business Development and Growth</p>After Pixel
|
||||
|
||||
<br><br><signature>Sent from <a href="https://getmerani.com/?ref=client">Merani</a>, the extensible, open source mail client.<br/></signature><div class="gmail_quote">
|
||||
<br><br><signature>Sent from <a href="https://getmailspring.com/?ref=client">Mailspring</a>, the extensible, open source mail client.<br/></signature><div class="gmail_quote">
|
||||
On Apr 28 2016, at 2:14 pm, Ben Gotow (Careless) <careless@foundry376.com> wrote:
|
||||
<br>
|
||||
<blockquote class="gmail_quote"
|
||||
style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
<body>nother mailA<br /><br />Sent from <a href="https://link.getmerani.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Merani</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmerani.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b" /><div>
|
||||
<body>nother mailA<br /><br />Sent from <a href="https://link.getmailspring.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Mailspring</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b" /><div>
|
||||
On Apr 28 2016, at 1:46 pm, Ben Gotow (Careless) <careless@foundry376.com> wrote:
|
||||
<br />
|
||||
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
Hi Ben this is just a test.<br /><br />Sent from <a href="https://link.getmerani.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Merani</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmerani.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883" /><div>
|
||||
Hi Ben this is just a test.<br /><br />Sent from <a href="https://link.getmailspring.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Mailspring</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883" /><div>
|
||||
On Apr 26 2016, at 6:03 pm, Ben Gotow <bengotow@gmail.com> wrote:
|
||||
<br />
|
||||
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
|
|
|
@ -5,16 +5,16 @@ could you please put me in touch with them, so that we can get you guys set up
|
|||
correctly as soon as possible?</p><p>Thanks!</p><p>Gleb Polyakov</p><p>Head of
|
||||
Business Development and Growth</p><img src="https://sdr.salesloft.com/email_trackers/8c8bea88-af43-4f66-bf78-a97ad73d7aec/open.gif" alt="" width="1" height="1">After Pixel
|
||||
|
||||
<br><br><signature>Sent from <a href="https://getmerani.com/?ref=client">Merani</a>, the extensible, open source mail client.<br/></signature><div class="gmail_quote">
|
||||
<br><br><signature>Sent from <a href="https://getmailspring.com/?ref=client">Mailspring</a>, the extensible, open source mail client.<br/></signature><div class="gmail_quote">
|
||||
On Apr 28 2016, at 2:14 pm, Ben Gotow (Careless) <careless@foundry376.com> wrote:
|
||||
<br>
|
||||
<blockquote class="gmail_quote"
|
||||
style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
<body>nother mailA<br /><br />Sent from <a href="https://link.getmerani.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Merani</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmerani.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b" /><div>
|
||||
<body>nother mailA<br /><br />Sent from <a href="https://link.getmailspring.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Mailspring</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-a84ad76e-006b" /><div>
|
||||
On Apr 28 2016, at 1:46 pm, Ben Gotow (Careless) <careless@foundry376.com> wrote:
|
||||
<br />
|
||||
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
Hi Ben this is just a test.<br /><br />Sent from <a href="https://link.getmerani.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Merani</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmerani.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883" /><div>
|
||||
Hi Ben this is just a test.<br /><br />Sent from <a href="https://link.getmailspring.com/link/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">Mailspring</a>, the extensible, open source mail client.<br /><img width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/b5djvgcuhj6i3x8nm53d0vnjm/local-aa39d95b-b883" /><div>
|
||||
On Apr 26 2016, at 6:03 pm, Ben Gotow <bengotow@gmail.com> wrote:
|
||||
<br />
|
||||
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><p>Hey Ben,</p><p>
|
||||
This is the reply! This tracking pixel should not be removed.
|
||||
<img src="https://getmerani.com/open/abcd/zza1231231" />
|
||||
<img src="https://getmailspring.com/open/abcd/zza1231231" />
|
||||
<blockquote>
|
||||
This is the email I sent!
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><p>Hey Ben,</p><p>
|
||||
This is the reply! This tracking pixel should not be removed.
|
||||
<img src="https://getmerani.com/open/abcd/zza1231231" />
|
||||
<img src="https://getmailspring.com/open/abcd/zza1231231" />
|
||||
<blockquote>
|
||||
This is the email I sent!
|
||||
<img src="https://getmerani.com/open/1234/12zxczxc123" />
|
||||
<img src="https://getmailspring.com/open/1234/12zxczxc123" />
|
||||
</blockquote>
|
||||
</div>
|
||||
|
|
|
@ -2,33 +2,33 @@
|
|||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('merani://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
src: url('mailspring://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('merani://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
src: url('mailspring://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('merani://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
src: url('mailspring://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('merani://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
src: url('mailspring://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nylas-Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url('merani://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
src: url('mailspring://screenshot-mode/assets/BLOKKNeue-Regular.otf');
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"license": "Proprietary",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"merani": "*"
|
||||
"mailspring": "*"
|
||||
},
|
||||
"windowTypes": {
|
||||
"all": true
|
||||
|
|
|
@ -12,7 +12,7 @@ export const name = 'SendAndArchiveExtension'
|
|||
export function sendActions() {
|
||||
return [{
|
||||
title: 'Send and Archive',
|
||||
iconUrl: 'merani://send-and-archive/images/composer-archive@2x.png',
|
||||
iconUrl: 'mailspring://send-and-archive/images/composer-archive@2x.png',
|
||||
isAvailableForDraft({draft}) {
|
||||
return draft.threadId != null
|
||||
},
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue