Switch product name to “Mailspring”

This commit is contained in:
Ben Gotow 2017-09-05 13:37:40 -07:00
parent f051b52e8c
commit b698458766
186 changed files with 560 additions and 560 deletions

View file

@ -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
View file

@ -1,3 +1,3 @@
[submodule "mailsync"]
path = mailsync
url = git@github.com:Foundry376/Merani-Mailsync.git
url = git@github.com:Foundry376/Mailspring-Mailsync.git

View file

@ -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

View file

@ -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.

View file

@ -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?
...
--

View file

@ -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!

View file

@ -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!

View file

@ -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);

View file

@ -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.

View file

@ -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

View 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

View file

@ -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

View file

@ -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;

View 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

View file

@ -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

View file

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 161 KiB

View 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"

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -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"

View file

@ -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) => {

View file

@ -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);

View file

@ -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()
});
});

View file

@ -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();

View file

@ -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;

View file

@ -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.

View file

@ -7,6 +7,6 @@
"private": true,
"syncInit": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -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.)

View file

@ -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,

View file

@ -9,6 +9,6 @@
"default": true
},
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -7,7 +7,7 @@
"private": true,
"syncInit": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -6,6 +6,6 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -7,7 +7,7 @@
"url": ""
},
"engines": {
"merani": "*"
"mailspring": "*"
},
"isOptional": true,

View file

@ -7,7 +7,7 @@
"license": "GPL-3.0",
"icon": "./icon.png",
"engines": {
"merani": "*"
"mailspring": "*"
},
"isOptional": true,
"isHiddenOnPluginsPage": true,

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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.

View file

@ -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}
/>
&nbsp;

View file

@ -12,7 +12,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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"
/>
&nbsp;
<RetinaImg

View file

@ -11,7 +11,7 @@
"license": "GPL-3.0",
"engines": {
"merani": "*"
"mailspring": "*"
},
"repository": {
"type": "git",

View file

@ -9,7 +9,7 @@
"scripts": {
},
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -9,6 +9,6 @@
"all": true
},
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -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;
}

View file

@ -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({

View file

@ -6,7 +6,7 @@
"license": "Proprietary",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"all": true

View file

@ -6,6 +6,6 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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>

View file

@ -12,7 +12,7 @@
"license": "GPL-3.0",
"engines": {
"merani": "*"
"mailspring": "*"
},
"repository": {
"type": "git",

View file

@ -8,7 +8,7 @@
"scripts": {
},
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"calendar": true

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -62,7 +62,7 @@ export function autolink(doc, {async} = {}) {
exclude: [/\..*[/|?].*@/],
}],
['tel:', RegExpUtils.phoneRegex()],
['', RegExpUtils.meraniCommandRegex()],
['', RegExpUtils.mailspringCommandRegex()],
['', RegExpUtils.urlRegex({matchEntireString: false})],
];

View file

@ -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

View file

@ -7,7 +7,7 @@
"private": true,
"syncInit": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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?

View file

@ -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?

View file

@ -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>

View file

@ -13,6 +13,6 @@
"isHiddenOnPluginsPage": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -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

View file

@ -5,7 +5,7 @@
"main": "./lib/main",
"license": "GPL-3.0",
"engines": {
"merani": "*"
"mailspring": "*"
},
"private": true
}

View file

@ -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

View file

@ -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={[{

View file

@ -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!"
/>
)
}

View file

@ -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"

View file

@ -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() {

View file

@ -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"

View file

@ -6,6 +6,6 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -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;

View file

@ -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.

View file

@ -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.

View file

@ -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.");
}
}

View file

@ -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>
)

View file

@ -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} />

View file

@ -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, youll 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, youll 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 moreall directly from Meranis powerful composer.",
// description: "Embed calendar invitations, propose meeting times, use quick reply templates, send mass emails with mail merge, and moreall directly from Mailsprings 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>

View file

@ -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">

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"onboarding": true

View file

@ -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;

View file

@ -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"}}
/>

View file

@ -11,7 +11,7 @@
"default": true
},
"engines": {
"merani": "*"
"mailspring": "*"
},
"license": "GPL-3.0"
}

View file

@ -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>

View file

@ -15,7 +15,7 @@
"url": ""
},
"engines": {
"merani": "*"
"mailspring": "*"
},
"license": "GPL-3.0"
}

View file

@ -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)

View file

@ -11,7 +11,7 @@
"isOptional": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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);
}

View file

@ -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">

View file

@ -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>
);
}

View file

@ -7,6 +7,6 @@
"syncInit": true,
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
}
}

View file

@ -6,7 +6,7 @@
"license": "GPL-3.0",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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;

View file

@ -4,7 +4,7 @@
"main": "./lib/main",
"license": "GPL-3.0",
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"default": true,

View file

@ -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) &lt;careless@foundry376.com&gt; 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) &lt;careless@foundry376.com&gt; 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 &lt;bengotow@gmail.com&gt; wrote:
<br />
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

View file

@ -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) &lt;careless@foundry376.com&gt; 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) &lt;careless@foundry376.com&gt; 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 &lt;bengotow@gmail.com&gt; wrote:
<br />
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

View file

@ -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!

View file

@ -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>

View file

@ -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');
}

View file

@ -6,7 +6,7 @@
"license": "Proprietary",
"private": true,
"engines": {
"merani": "*"
"mailspring": "*"
},
"windowTypes": {
"all": true

View file

@ -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