mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-14 10:16:26 +00:00
Compare commits
65 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95d74c6f5b | ||
|
|
f04b7db9fc | ||
|
|
900fa023fb | ||
|
|
ad9da44afb | ||
|
|
c827717202 | ||
|
|
7d3caa3c2e | ||
|
|
fde7fbccac | ||
|
|
56f06fa7d5 | ||
|
|
c0fba82e73 | ||
|
|
5438cd14a0 | ||
|
|
0d642b308d | ||
|
|
0b96472f72 | ||
|
|
675d0ed08c | ||
|
|
9c0f5c31c2 | ||
|
|
09ce59fd04 | ||
|
|
98cd83c4e0 | ||
|
|
1aec386656 | ||
|
|
b03cd9cd99 | ||
|
|
27265e210f | ||
|
|
c392c5d178 | ||
|
|
11fe420fac | ||
|
|
9b17a8fb5b | ||
|
|
27f3fd0032 | ||
|
|
1672d9fa5f | ||
|
|
59c9e11879 | ||
|
|
4523743150 | ||
|
|
2fdbe9de96 | ||
|
|
a617976c78 | ||
|
|
7201a98d78 | ||
|
|
472560e2bf | ||
|
|
96753fe0a0 | ||
|
|
83c2fdd161 | ||
|
|
911ce7572f | ||
|
|
0a24d7d4a7 | ||
|
|
c542062d4d | ||
|
|
eb7a195cce | ||
|
|
23a356164e | ||
|
|
de19c51061 | ||
|
|
221b6a2938 | ||
|
|
cda9d53c8e | ||
|
|
f043b0ffb3 | ||
|
|
28e0590327 | ||
|
|
ec6de1b91b | ||
|
|
2b0bdbf1c8 | ||
|
|
f48864a2e7 | ||
|
|
94c6578675 | ||
|
|
2af2399971 | ||
|
|
ebea01cecf | ||
|
|
5d1db1de31 | ||
|
|
6c528625d8 | ||
|
|
7b326b99af | ||
|
|
2a60ba95e0 | ||
|
|
6b98afaa02 | ||
|
|
cdb079dc81 | ||
|
|
2ac0d93caf | ||
|
|
41977e8726 | ||
|
|
b9e6a56a83 | ||
|
|
2468c8311f | ||
|
|
e8e05b20cd | ||
|
|
5bd0a446f1 | ||
|
|
ad4e50d542 | ||
|
|
13131a0d5c | ||
|
|
f007664745 | ||
|
|
e059106a93 | ||
|
|
ada1b4de6b |
@@ -1,6 +1,7 @@
|
||||
import React, { PropTypes } from 'react'
|
||||
import _ from 'lodash'
|
||||
import CodeMirror from 'codemirror'
|
||||
import path from 'path'
|
||||
|
||||
CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js'
|
||||
|
||||
@@ -163,6 +164,19 @@ export default class CodeEditor extends React.Component {
|
||||
this.editor.setCursor(cursor)
|
||||
}
|
||||
|
||||
handleDropImage (e) {
|
||||
e.preventDefault()
|
||||
let imagePath = e.dataTransfer.files[0].path
|
||||
let filename = path.basename(imagePath)
|
||||
let imageMd = ``
|
||||
this.insertImage(imageMd)
|
||||
}
|
||||
|
||||
insertImage (imageMd) {
|
||||
const textarea = this.editor.getInputField()
|
||||
textarea.value = textarea.value.substr(0, textarea.selectionStart) + imageMd + textarea.value.substr(textarea.selectionEnd)
|
||||
}
|
||||
|
||||
render () {
|
||||
let { className, fontFamily, fontSize } = this.props
|
||||
fontFamily = _.isString(fontFamily) && fontFamily.length > 0
|
||||
@@ -180,6 +194,7 @@ export default class CodeEditor extends React.Component {
|
||||
fontFamily: fontFamily.join(', '),
|
||||
fontSize: fontSize
|
||||
}}
|
||||
onDrop={(e) => this.handleDropImage(e)}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -8,9 +8,12 @@ class MarkdownEditor extends React.Component {
|
||||
constructor (props) {
|
||||
super(props)
|
||||
|
||||
this.escapeFromEditor = ['Control', 'w']
|
||||
|
||||
this.state = {
|
||||
status: 'PREVIEW',
|
||||
renderValue: props.value
|
||||
renderValue: props.value,
|
||||
keyPressed: {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,6 +77,7 @@ class MarkdownEditor extends React.Component {
|
||||
}
|
||||
|
||||
handleBlur (e) {
|
||||
this.setState({ keyPressed: [] })
|
||||
let { config } = this.props
|
||||
if (config.editor.switchPreview === 'BLUR') {
|
||||
let cursorPosition = this.refs.code.editor.getCursor()
|
||||
@@ -142,6 +146,24 @@ class MarkdownEditor extends React.Component {
|
||||
this.renderPreview(this.props.value)
|
||||
}
|
||||
|
||||
handleKeyDown(e) {
|
||||
const keyPressed = Object.assign(this.state.keyPressed, {
|
||||
[e.key]: true
|
||||
})
|
||||
this.setState({ keyPressed })
|
||||
let isNoteHandlerKey = (el) => { return this.state.keyPressed[el] }
|
||||
if (this.state.status === 'CODE' && this.escapeFromEditor.every(isNoteHandlerKey)) {
|
||||
document.activeElement.blur()
|
||||
}
|
||||
}
|
||||
|
||||
handleKeyUp (e) {
|
||||
const keyPressed = Object.assign(this.state.keyPressed, {
|
||||
[e.key]: false
|
||||
})
|
||||
this.setState({ keyPressed })
|
||||
}
|
||||
|
||||
render () {
|
||||
let { className, value, config } = this.props
|
||||
|
||||
@@ -160,6 +182,8 @@ class MarkdownEditor extends React.Component {
|
||||
}
|
||||
onContextMenu={(e) => this.handleContextMenu(e)}
|
||||
tabIndex='-1'
|
||||
onKeyDown={(e) => this.handleKeyDown(e)}
|
||||
onKeyUp={(e) => this.handleKeyUp(e)}
|
||||
>
|
||||
<CodeEditor styleName='codeEditor'
|
||||
ref='code'
|
||||
|
||||
@@ -6,6 +6,8 @@ import consts from 'browser/lib/consts'
|
||||
import Raphael from 'raphael'
|
||||
import flowchart from 'flowchart'
|
||||
import SequenceDiagram from 'js-sequence-diagrams'
|
||||
import eventEmitter from 'browser/main/lib/eventEmitter'
|
||||
import fs from 'fs'
|
||||
|
||||
function decodeHTMLEntities (text) {
|
||||
var entities = [
|
||||
@@ -25,6 +27,7 @@ function decodeHTMLEntities (text) {
|
||||
const { remote } = require('electron')
|
||||
const { app } = remote
|
||||
const path = require('path')
|
||||
const dialog = remote.dialog
|
||||
|
||||
const markdownStyle = require('!!css!stylus?sourceMap!./markdown.styl')[0][1]
|
||||
const appPath = 'file://' + (process.env.NODE_ENV === 'production'
|
||||
@@ -49,6 +52,8 @@ body {
|
||||
}
|
||||
code {
|
||||
font-family: ${codeBlockFontFamily.join(', ')};
|
||||
background-color: rgba(0,0,0,0.04);
|
||||
color: #CC305F;
|
||||
}
|
||||
.lineNumber {
|
||||
${lineNumber && 'display: block !important;'}
|
||||
@@ -90,6 +95,8 @@ export default class MarkdownPreview extends React.Component {
|
||||
this.mouseUpHandler = (e) => this.handleMouseUp(e)
|
||||
this.anchorClickHandler = (e) => this.handlePreviewAnchorClick(e)
|
||||
this.checkboxClickHandler = (e) => this.handleCheckboxClick(e)
|
||||
this.saveAsTextHandler = () => this.handleSaveAsText()
|
||||
this.saveAsMdHandler = () => this.handleSaveAsMd()
|
||||
}
|
||||
|
||||
handlePreviewAnchorClick (e) {
|
||||
@@ -134,6 +141,31 @@ export default class MarkdownPreview extends React.Component {
|
||||
if (this.props.onMouseUp != null) this.props.onMouseUp(e)
|
||||
}
|
||||
|
||||
handleSaveAsText () {
|
||||
this.exportAsDocument('txt')
|
||||
}
|
||||
|
||||
handleSaveAsMd () {
|
||||
this.exportAsDocument('md')
|
||||
}
|
||||
|
||||
exportAsDocument (fileType) {
|
||||
const options = {
|
||||
filters: [
|
||||
{ name: 'Documents', extensions: [fileType]}
|
||||
],
|
||||
properties: ['openFile', 'createDirectory']
|
||||
}
|
||||
dialog.showSaveDialog(remote.getCurrentWindow(), options,
|
||||
(filename) => {
|
||||
if (filename) {
|
||||
fs.writeFile(filename, this.props.value, (err) => {
|
||||
if (err) throw err
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
componentDidMount () {
|
||||
this.refs.root.setAttribute('sandbox', 'allow-scripts')
|
||||
this.refs.root.contentWindow.document.body.addEventListener('contextmenu', this.contextMenuHandler)
|
||||
@@ -149,12 +181,16 @@ export default class MarkdownPreview extends React.Component {
|
||||
|
||||
this.refs.root.contentWindow.document.addEventListener('mousedown', this.mouseDownHandler)
|
||||
this.refs.root.contentWindow.document.addEventListener('mouseup', this.mouseUpHandler)
|
||||
eventEmitter.on('export:save-text', this.saveAsTextHandler)
|
||||
eventEmitter.on('export:save-md', this.saveAsMdHandler)
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
this.refs.root.contentWindow.document.body.removeEventListener('contextmenu', this.contextMenuHandler)
|
||||
this.refs.root.contentWindow.document.removeEventListener('mousedown', this.mouseDownHandler)
|
||||
this.refs.root.contentWindow.document.removeEventListener('mouseup', this.mouseUpHandler)
|
||||
eventEmitter.off('export:save-text', this.saveAsTextHandler)
|
||||
eventEmitter.off('export:save-md', this.saveAsMdHandler)
|
||||
}
|
||||
|
||||
componentDidUpdate (prevProps) {
|
||||
|
||||
@@ -25,6 +25,7 @@ $list-width = 250px
|
||||
.result
|
||||
absolute left right bottom
|
||||
top $search-height
|
||||
background-color $ui-noteDetail-backgroundColor
|
||||
|
||||
.result-nav
|
||||
user-select none
|
||||
@@ -89,6 +90,9 @@ body[data-theme="dark"]
|
||||
.search-input
|
||||
color $ui-dark-text-color
|
||||
|
||||
.result
|
||||
background-color $ui-dark-noteList-backgroundColor
|
||||
|
||||
.result-nav
|
||||
background-color $ui-dark-backgroundColor
|
||||
label
|
||||
|
||||
@@ -2,6 +2,7 @@ import React, { PropTypes } from 'react'
|
||||
import ReactDOM from 'react-dom'
|
||||
import { connect, Provider } from 'react-redux'
|
||||
import _ from 'lodash'
|
||||
import ipc from './ipcClient'
|
||||
import store from './store'
|
||||
import CSSModules from 'browser/lib/CSSModules'
|
||||
import styles from './FinderMain.styl'
|
||||
@@ -66,12 +67,8 @@ class FinderMain extends React.Component {
|
||||
}
|
||||
|
||||
handleWindowBlur (e) {
|
||||
let { filter } = this.state
|
||||
filter.type = 'ALL'
|
||||
this.setState({
|
||||
search: '',
|
||||
filter,
|
||||
index: 0
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,9 @@ class NoteList extends React.Component {
|
||||
this.focusHandler = () => {
|
||||
this.refs.list.focus()
|
||||
}
|
||||
this.alertIfSnippetHnalder = () => {
|
||||
this.alertIfSnippet()
|
||||
}
|
||||
|
||||
this.state = {
|
||||
}
|
||||
@@ -48,6 +51,7 @@ class NoteList extends React.Component {
|
||||
ee.on('list:next', this.selectNextNoteHandler)
|
||||
ee.on('list:prior', this.selectPriorNoteHandler)
|
||||
ee.on('list:focus', this.focusHandler)
|
||||
ee.on('list:isMarkdownNote', this.alertIfSnippetHnalder)
|
||||
}
|
||||
|
||||
componentWillReceiveProps (nextProps) {
|
||||
@@ -66,6 +70,7 @@ class NoteList extends React.Component {
|
||||
ee.off('list:next', this.selectNextNoteHandler)
|
||||
ee.off('list:prior', this.selectPriorNoteHandler)
|
||||
ee.off('list:focus', this.focusHandler)
|
||||
ee.off('list:isMarkdownNote', this.alertIfSnippetHnalder)
|
||||
}
|
||||
|
||||
componentDidUpdate (prevProps) {
|
||||
@@ -305,6 +310,20 @@ class NoteList extends React.Component {
|
||||
})
|
||||
}
|
||||
|
||||
alertIfSnippet() {
|
||||
let { location } = this.props
|
||||
const targetIndex = _.findIndex(this.notes, (note) => {
|
||||
return `${note.storage}-${note.key}` === location.query.key
|
||||
})
|
||||
if (this.notes[targetIndex].type === 'SNIPPET_NOTE') {
|
||||
dialog.showMessageBox(remote.getCurrentWindow(), {
|
||||
type: 'warning',
|
||||
message: 'Sorry!',
|
||||
detail: 'md/text import is available only a markdown note.'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
render () {
|
||||
let { location, notes, config } = this.props
|
||||
let sortFunc = config.sortBy === 'CREATED_AT'
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
.top-menu
|
||||
navButtonColor()
|
||||
height $topBar-height - 1
|
||||
height $topBar-height
|
||||
padding 0 15px
|
||||
font-size 14px
|
||||
width 100%
|
||||
|
||||
@@ -8,7 +8,7 @@ const electron = require('electron')
|
||||
const { remote, ipcRenderer } = electron
|
||||
const { Menu, MenuItem, dialog } = remote
|
||||
|
||||
const zoomOptions = [0.8, 0.9, 1, 1.1, 1.2, 1.3]
|
||||
const zoomOptions = [0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
|
||||
|
||||
class StatusBar extends React.Component {
|
||||
updateApp () {
|
||||
|
||||
@@ -24,14 +24,20 @@ class TopBar extends React.Component {
|
||||
this.newNoteHandler = () => {
|
||||
this.handleNewPostButtonClick()
|
||||
}
|
||||
|
||||
this.focusSearchHandler = () => {
|
||||
this.handleOnSearchFocus()
|
||||
}
|
||||
}
|
||||
|
||||
componentDidMount () {
|
||||
ee.on('top:new-note', this.newNoteHandler)
|
||||
ee.on('top:focus-search', this.focusSearchHandler)
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
ee.off('top:new-note', this.newNoteHandler)
|
||||
ee.off('top:focus-search', this.focusSearchHandler)
|
||||
}
|
||||
|
||||
handleNewPostButtonClick (e) {
|
||||
@@ -244,6 +250,14 @@ class TopBar extends React.Component {
|
||||
})
|
||||
}
|
||||
|
||||
handleOnSearchFocus () {
|
||||
if (this.state.searchPopupOpen) {
|
||||
this.refs.search.childNodes[0].blur()
|
||||
} else {
|
||||
this.refs.search.childNodes[0].focus()
|
||||
}
|
||||
}
|
||||
|
||||
render () {
|
||||
let { config, style, data } = this.props
|
||||
let searchOptionList = this.getOptions()
|
||||
|
||||
@@ -16,7 +16,7 @@ export const DEFAULT_CONFIG = {
|
||||
listStyle: 'DEFAULT', // 'DEFAULT', 'SMALL'
|
||||
hotkey: {
|
||||
toggleFinder: OSX ? 'Cmd + Alt + S' : 'Super + Alt + S',
|
||||
toggleMain: OSX ? 'Cmd + Alt + L' : 'Super + Alt + E'
|
||||
toggleMain: OSX ? 'Cmd + Alt + L' : 'Super + Alt + E',
|
||||
},
|
||||
ui: {
|
||||
theme: 'default',
|
||||
|
||||
@@ -28,8 +28,6 @@
|
||||
right 10px
|
||||
height 30px
|
||||
padding 0 25px
|
||||
border $ui-border
|
||||
border-radius 2px
|
||||
color $ui-text-color
|
||||
colorDefaultButton()
|
||||
|
||||
|
||||
@@ -102,9 +102,10 @@ class NewNoteModal extends React.Component {
|
||||
<div styleName='header'>
|
||||
<div styleName='title'>Make a Note</div>
|
||||
</div>
|
||||
<button styleName='closeButton'
|
||||
onClick={(e) => this.handleCloseButtonClick(e)}
|
||||
>Close</button>
|
||||
<button styleName='closeButton' onClick={(e) => this.handleCloseButtonClick(e)}>
|
||||
<div styleName='close-mark'>X</div>
|
||||
<div styleName='close-text'>esc</div>
|
||||
</button>
|
||||
|
||||
<div styleName='control'>
|
||||
<button styleName='control-button'
|
||||
|
||||
@@ -14,20 +14,24 @@
|
||||
color $ui-text-color
|
||||
|
||||
.closeButton
|
||||
height 50px
|
||||
position absolute
|
||||
top 10px
|
||||
background-color transparent
|
||||
color $ui-inactive-text-color
|
||||
border none
|
||||
top 1px
|
||||
right 10px
|
||||
height 30px
|
||||
width 0 25px
|
||||
border $ui-border
|
||||
border-radius 2px
|
||||
color $ui-text-color
|
||||
colorDefaultButton()
|
||||
text-align center
|
||||
width top-bar--height
|
||||
height top-bar--height
|
||||
|
||||
.control
|
||||
padding 25px 15px 15px
|
||||
text-align center
|
||||
|
||||
.close-mark
|
||||
font-size 15px
|
||||
|
||||
.control-button
|
||||
width 220px
|
||||
height 220px
|
||||
@@ -64,11 +68,6 @@ body[data-theme="dark"]
|
||||
border-color $ui-dark-borderColor
|
||||
color $ui-dark-text-color
|
||||
|
||||
.closeButton
|
||||
border-color $ui-dark-borderColor
|
||||
color $ui-dark-text-color
|
||||
colorDarkDefaultButton()
|
||||
|
||||
.control-button
|
||||
border-color $ui-dark-borderColor
|
||||
color $ui-dark-text-color
|
||||
|
||||
@@ -138,6 +138,7 @@ class HotkeyTab extends React.Component {
|
||||
<li><code>Escape</code> (or <code>Esc</code> for short)</li>
|
||||
<li><code>VolumeUp</code>, <code>VolumeDown</code> and <code>VolumeMute</code></li>
|
||||
<li><code>MediaNextTrack</code>, <code>MediaPreviousTrack</code>, <code>MediaStop</code> and <code>MediaPlayPause</code></li>
|
||||
<li><code>Control</code> (or <code>Ctrl</code> for short)</li>
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
# Contributing to Boostnote
|
||||
|
||||
> English below.
|
||||
|
||||
## Pull requestの著作権について
|
||||
|
||||
Pull requestをすることはその変化分のコードの著作権をMAISIN&CO.に譲渡することに同意することになります。
|
||||
|
||||
アプリケーションのLicenseのをいつでも変える選択肢を残したいからです。
|
||||
しかし、これはいずれかBoostnoteが有料の商用アプリになる可能性がある話ではありません。
|
||||
もし、このアプリケーションで金を稼ごうとするならBoostnote専用のCloud storageの提供やMobile appとの連動、何か特殊なプレミアム機能の提供など形になると思います。
|
||||
現在考えられているのは、GPL v3の場合、他のライセンスとの互換が不可能であるため、もしより自由なLicense(BSD, MIT)に変える時に改めて著作権者としてライセンスし直す選択肢を残したいぐらいのイメージです。
|
||||
|
||||
---
|
||||
|
||||
# Contributing to Boostnote(ENG)
|
||||
|
||||
## About copyright of Pull Request
|
||||
|
||||
If you make a pull request, It means you agree to transfer the copyright of the code changes to MAISIN&CO.
|
||||
|
||||
It doesn't mean Boostnote will become a paid app. If we want to earn some money, We will try other way, which is some kind of cloud storage, Mobile app integration or some SPECIAL features.
|
||||
Because GPL v3 is too strict to be compatible with any other License, We thought this is needed to replace the license with much freer one(like BSD, MIT) somewhen.
|
||||
|
||||
---
|
||||
|
||||
# Contributing to Boostnote(Japanese)
|
||||
|
||||
## Pull requestの著作権について
|
||||
|
||||
Pull requestをすることはその変化分のコードの著作権をMAISIN&CO.に譲渡することに同意することになります。
|
||||
|
||||
アプリケーションのLicenseをいつでも変える選択肢を残したいと思うからです。
|
||||
これはいずれかBoostnoteが有料の商用アプリになる可能性がある話ではありません。
|
||||
もし、このアプリケーションに料金が発生する時は、Boostnote専用のCloud storageの提供やMobile appとの連動、何か特殊なプレミアム機能の提供など形になります。
|
||||
現在考えられているのは、GPL v3の場合、他のライセンスとの互換が不可能であるため、もしより自由なLicense(BSD, MIT)に変える時に改めて著作権者としてライセンスし直す選択肢を残すイメージです。
|
||||
|
||||
@@ -5,6 +5,10 @@ app.on('ready', function () {
|
||||
if (process.platform === 'darwin') {
|
||||
app.dock.hide()
|
||||
}
|
||||
|
||||
/* eslint-disable */
|
||||
finderWindow = require('./finder-window')
|
||||
/* eslint-enable */
|
||||
})
|
||||
|
||||
module.exports = app
|
||||
|
||||
@@ -59,6 +59,35 @@ var file = {
|
||||
mainWindow.webContents.send('top:new-note')
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Focus Note',
|
||||
accelerator: 'Control + E',
|
||||
click () {
|
||||
mainWindow.webContents.send('detail:focus')
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Export as',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Plain Text (.txt)',
|
||||
click () {
|
||||
mainWindow.webContents.send('list:isMarkdownNote')
|
||||
mainWindow.webContents.send('export:save-text')
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'MarkDown (.md)',
|
||||
click () {
|
||||
mainWindow.webContents.send('list:isMarkdownNote')
|
||||
mainWindow.webContents.send('export:save-md')
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
@@ -136,6 +165,33 @@ var view = {
|
||||
click: function () {
|
||||
BrowserWindow.getFocusedWindow().toggleDevTools()
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Next Note',
|
||||
accelerator: 'Control + J',
|
||||
click () {
|
||||
mainWindow.webContents.send('list:next')
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Previous Note',
|
||||
accelerator: 'Control + U',
|
||||
click () {
|
||||
mainWindow.webContents.send('list:prior')
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Focus Search',
|
||||
accelerator: 'Control + S',
|
||||
click () {
|
||||
mainWindow.webContents.send('top:focus-search')
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -49,7 +49,12 @@ if (process.platform !== 'linux' || process.env.DESKTOP_SESSION === 'cinnamon')
|
||||
})
|
||||
|
||||
app.on('before-quit', function (e) {
|
||||
config.set('windowsize', mainWindow.getBounds())
|
||||
try {
|
||||
config.set('windowsize', mainWindow.getBounds())
|
||||
} catch (e) {
|
||||
// ignore any errors because an error occurs only on update
|
||||
// refs: https://github.com/BoostIO/Boostnote/issues/243
|
||||
}
|
||||
mainWindow.removeAllListeners()
|
||||
})
|
||||
} else {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "boost",
|
||||
"version": "0.8.1",
|
||||
"version": "0.8.4",
|
||||
"description": "Boostnote",
|
||||
"main": "index.js",
|
||||
"license": "GPL-3.0",
|
||||
|
||||
82
readme-ja.md
82
readme-ja.md
@@ -1,77 +1,37 @@
|
||||
# Boostnote
|
||||
|
||||
> [Boostnote shop](https://boostnote.paintory.com/)をはじめました!! :tada:
|
||||
そして、[Pateron](https://www.patreon.com/boostnote)からも私達を支援することができます!
|
||||
<h1 align="center">
|
||||
<a href="https://github.com/BoostIO/Boostnote"><img src="./resources/app.png" alt="Boostnote" width="180"></a>
|
||||
<br>
|
||||
Boostnote
|
||||
<br>
|
||||
<br>
|
||||
</h1>
|
||||
<h4 align="center">クールなプログラマーの為の、オープンソースのノートアプリ </h4>
|
||||
<h5 align="center">macOS, Windows, Linuxで利用できます。</h5>
|
||||
<h5 align="center">Built with Electron, React + Redux, Webpack and CSSModules</h5>
|
||||
|
||||

|
||||
|
||||
|
||||
**ロードマップ・リクエスト一覧は[こちら](https://github.com/BoostIO/Boostnote/wiki/List-of-the-requested-features)です!**
|
||||
皆さんからのプルリクをお待ちしています!
|
||||
|
||||
以下のような場合には、Issue trackerを利用してください。
|
||||
- Boostnoteに関して質問したい時
|
||||
- Boostnoteや計画事項にフィードバックがしたい時
|
||||
- Boostnoteにバグを報告したい時
|
||||
|
||||
|
||||
## Goal
|
||||
|
||||
書くことが楽しくなって欲しいです。 :grinning:
|
||||
|
||||
- ターゲット OS : OSX, Windows, Linux(後々はモバイルも!)
|
||||
- Cloud : Google drive, Dropbox, One drive, iCloud...
|
||||
- オープンソースで残ること!
|
||||
|
||||
|
||||
## Using stack
|
||||
|
||||
- Electron
|
||||
- React
|
||||
- Webpack
|
||||
- Redux
|
||||
- CSSModules
|
||||
|
||||
## Codestyle
|
||||
|
||||
[](https://github.com/feross/standard)
|
||||
|
||||
## Development
|
||||
|
||||
- [Build](docs/build.md)
|
||||
|
||||
## Goods
|
||||
|
||||
<img src="https://boostnote.io/images/t3.png" width="250"/>
|
||||
<img src="https://boostnote.io/images/t1.png" width="250"/>
|
||||
|
||||
[Boostnote shop](https://boostnote.paintory.com/)から幾つかのグッズを販売しています。
|
||||
|
||||
商品は全世界どこへでも届ける事が出来ます!
|
||||
|
||||
## Donation
|
||||
|
||||
寄付は[Pateron page](https://www.patreon.com/boostnote)からできます。
|
||||
[](https://travis-ci.org/BoostIO/Boostnote)
|
||||
|
||||
## Author & Maintainer
|
||||
|
||||
- [Rokt33r](https://github.com/rokt33r)
|
||||
- [sota1235](https://github.com/sota1235)
|
||||
- [Kohei TAKATA](https://github.com/kohei-takata)
|
||||
- [asmsuechan](https://github.com/asmsuechan)
|
||||
- [Kazu Yokomizo](https://github.com/kazup01)
|
||||
|
||||
## Contributors
|
||||
[Great contributors](https://github.com/BoostIO/Boostnote/graphs/contributors) :tada:
|
||||
|
||||
- [dojineko](https://github.com/dojineko)
|
||||
- [Romain Bazile](https://github.com/gromain)
|
||||
- [Bruno Paz](https://github.com/brpaz)
|
||||
- [Fabian Mueller](https://github.com/dotcs)
|
||||
- [Yoshihisa Mochihara](https://github.com/yosmoc)
|
||||
- [Mike Resoli](https://github.com/mikeres0)
|
||||
- [tjado](https://github.com/tejado)
|
||||
|
||||
## Copyright & License
|
||||
## More Information
|
||||
* Website: http://boostnote.io/
|
||||
* Roadmap(upcoming features and bug fixes): https://github.com/BoostIO/Boostnote/wiki/List-of-the-requested-features
|
||||
* Boostnote Shop(Products are shipped to all over the world :+1:): https://boostnote.paintory.com/
|
||||
* Donation: [Patreon](https://www.patreon.com/boostnote)
|
||||
* Development: https://github.com/BoostIO/Boostnote/blob/master/docs/build.md
|
||||
* Copyright (C) 2017 Maisin&Co.
|
||||
|
||||
Copyright (C) 2017 Maisin&Co.
|
||||
## License
|
||||
|
||||
[GPL v3](./LICENSE).
|
||||
|
||||
85
readme-ko.md
85
readme-ko.md
@@ -1,85 +0,0 @@
|
||||
# Boostnote
|
||||
|
||||
> [Boostnote store](https://boostnote.paintory.com/)가 생겼습니다!! :tada: 그리고,[Pateron](https://www.patreon.com/boostnote)에서도 저희를 지원 하실 수 있습니다.!
|
||||
|
||||

|
||||
|
||||
오픈소스 노트 앱
|
||||
|
||||
다음과 같은 용무가 있는 경우 이슈트래커를 이용해 주세요.
|
||||
- Boostnote에 대해 질문을 하고 싶을 때
|
||||
- Boostnote나 계획사항에 대해 피드백을 주고 싶을 때
|
||||
- Boostnote에 버그를 보고하고 싶을 때
|
||||
- Boostnote에 기여하고 싶을 때
|
||||
|
||||
저흰 Slack을 운영하고 있습니다. 혹시 좀 더 저희들과 깊게 관여하고 싶으시다면 @rokt33r에 초대를 부탁하세요.
|
||||
|
||||
## Goal
|
||||
|
||||
그냥 글쓰는게 즐거워지셨으면 좋겠어요. :grinning:
|
||||
|
||||
- 타겟 OS : OSX, Windows, Linux(나중엔 모바일까지도!)
|
||||
- Cloud : Google drive, Dropbox, One drive, iCloud...
|
||||
- 오픈소스로 남을 것!
|
||||
|
||||
## 영감받은 앱/서비스
|
||||
|
||||
- Atom
|
||||
- Quiver
|
||||
- Evernote
|
||||
- GitKraken
|
||||
- GitBook
|
||||
- Gist
|
||||
- Gistbox
|
||||
- Snippets Lab
|
||||
|
||||
## Using stack
|
||||
|
||||
- Electron
|
||||
- React
|
||||
- Webpack
|
||||
- Redux
|
||||
- CSSModules
|
||||
|
||||
## Codestyle
|
||||
|
||||
[](https://github.com/feross/standard)
|
||||
|
||||
## Development
|
||||
|
||||
- [Build](docs/build.md)
|
||||
|
||||
## Goods
|
||||
|
||||
<img src="https://boostnote.io/images/t3.png" width="250"/>
|
||||
<img src="https://boostnote.io/images/t1.png" width="250"/>
|
||||
|
||||
[Boostnote store](https://boostnote.paintory.com/)에서 몇가지 상품들을 팔고있습니다.
|
||||
|
||||
전세계 어디든 배송 가능합니다. 이 스토어는 [Paintory](https://paintory.com/)에서 제공됩니다.
|
||||
|
||||
## Donation
|
||||
|
||||
[Pateron page](https://www.patreon.com/boostnote)에서 기부 하실 수 있습니다.
|
||||
|
||||
## Author & Maintainer
|
||||
|
||||
[Rokt33r(Dick Choi of MAISIN&CO.)](https://github.com/rokt33r)
|
||||
|
||||
## Contributors
|
||||
|
||||
- [Kazu Yokomizo](https://github.com/kazup01)
|
||||
- [dojineko](https://github.com/dojineko)
|
||||
- [Romain Bazile](https://github.com/gromain)
|
||||
- [Bruno Paz](https://github.com/brpaz)
|
||||
- [Fabian Mueller](https://github.com/dotcs)
|
||||
- [Yoshihisa Mochihara](https://github.com/yosmoc)
|
||||
- [Mike Resoli](https://github.com/mikeres0)
|
||||
- [tjado](https://github.com/tejado)
|
||||
- [sota1235](https://github.com/sota1235)
|
||||
|
||||
## Copyright & License
|
||||
|
||||
Copyright (C) 2016 MAISIN&CO.
|
||||
|
||||
[GPL v3](./LICENSE).
|
||||
@@ -17,6 +17,7 @@
|
||||
- [Rokt33r](https://github.com/rokt33r)
|
||||
- [sota1235](https://github.com/sota1235)
|
||||
- [Kohei TAKATA](https://github.com/kohei-takata)
|
||||
- [asmsuechan](https://github.com/asmsuechan)
|
||||
- [Kazu Yokomizo](https://github.com/kazup01)
|
||||
|
||||
## Contributors
|
||||
@@ -25,7 +26,7 @@
|
||||
|
||||
## More Information
|
||||
* Website: http://boostnote.io/
|
||||
* Roadmap(upcoming features and bug fixes): https://goo.gl/Mdu44q
|
||||
* Roadmap(upcoming features and bug fixes): https://github.com/BoostIO/Boostnote/wiki/List-of-the-requested-features
|
||||
* Boostnote Shop(Products are shipped to all over the world :+1:): https://boostnote.paintory.com/
|
||||
* Donation: [Patreon](https://www.patreon.com/boostnote)
|
||||
* Development: https://github.com/BoostIO/Boostnote/blob/master/docs/build.md
|
||||
|
||||
Reference in New Issue
Block a user