Skip to content

Commit a083963

Browse files
feat: add base 3 column layout with gutter resizer (#506)
* chore(build): disable hardened runtime and set identity to null * feat: add base 3 column layout with gutter resizer
1 parent 0f09c4a commit a083963

File tree

25 files changed

+568
-185
lines changed

25 files changed

+568
-185
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ build/main
33
build/renderer
44

55
node_modules
6-
.DS_Store
6+
.DS_Store
7+
components.d.ts
8+
auto-imports.d.ts

electron-builder.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"icon": "build/icons/icon.icns",
1515
"entitlements": "build/entitlements.mac.plist",
1616
"category": "public.app-category.productivity",
17-
"hardenedRuntime": true
17+
"hardenedRuntime": false,
18+
"identity": null
1819
},
1920
"win": {
2021
"target": ["nsis", "portable"],

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@
3333
"@elysiajs/cors": "^1.2.0",
3434
"@elysiajs/node": "^1.2.5",
3535
"@elysiajs/swagger": "^1.2.2",
36+
"@vueuse/core": "^12.7.0",
3637
"better-sqlite3": "^11.8.1",
3738
"electron-store": "^8.2.0",
3839
"elysia": "^1.2.15",
40+
"interactjs": "^1.10.27",
3941
"ky": "^1.7.5"
4042
},
4143
"devDependencies": {
@@ -61,7 +63,9 @@
6163
"simple-git-hooks": "^2.11.1",
6264
"tailwindcss": "^3.4.17",
6365
"typescript": "^5.7.3",
64-
"vite": "^6.0.11",
66+
"unplugin-auto-import": "^19.1.0",
67+
"unplugin-vue-components": "^28.4.0",
68+
"vite": "^6.1.1",
6569
"vue": "^3.5.13",
6670
"vue-router": "^4.5.0"
6771
},

pnpm-lock.yaml

Lines changed: 288 additions & 89 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ function createWindow() {
2727
titleBarStyle: 'hidden',
2828
webPreferences: {
2929
preload: path.join(__dirname, 'preload.js'),
30+
nodeIntegration: true,
3031
},
3132
})
3233

src/main/preload.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import type { AppStore, PreferencesStore } from './store/types'
12
import type { EventCallback } from './types'
23
import { contextBridge, ipcRenderer } from 'electron'
4+
import { store } from './store'
35

46
contextBridge.exposeInMainWorld('electron', {
57
ipc: {
@@ -19,4 +21,20 @@ contextBridge.exposeInMainWorld('electron', {
1921
query: (sql: string, params: any[] = []) =>
2022
ipcRenderer.invoke('db-query', { sql, params }),
2123
},
24+
store: {
25+
app: {
26+
get: (name: keyof AppStore) => store.app.get(name),
27+
set: <T extends keyof AppStore>(name: T, value: AppStore[T]) =>
28+
store.app.set(name, value),
29+
delete: (name: keyof AppStore) => store.app.delete(name),
30+
},
31+
preferences: {
32+
get: (name: keyof PreferencesStore) => store.preferences.get(name),
33+
set: <T extends keyof PreferencesStore>(
34+
name: T,
35+
value: PreferencesStore[T],
36+
) => store.preferences.set(name, value),
37+
delete: (name: keyof PreferencesStore) => store.preferences.delete(name),
38+
},
39+
},
2240
})

src/main/store/constants.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const APP_DEFAULTS = {
2+
sizes: {
3+
sidebar: 180,
4+
snippetList: 250,
5+
},
6+
}

src/main/store/module/app.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1+
import type { AppStore } from '../types'
12
import Store from 'electron-store'
3+
import { APP_DEFAULTS } from '../constants'
24

3-
interface StoreSchema {
4-
bounds: object
5-
isAutoMigratedFromJson: boolean
6-
}
7-
8-
export default new Store<StoreSchema>({
5+
export default new Store<AppStore>({
96
name: 'app',
107
cwd: 'v2',
118

129
defaults: {
1310
bounds: {},
11+
sidebarWidth: APP_DEFAULTS.sizes.sidebar,
12+
snippetListWidth: APP_DEFAULTS.sizes.snippetList,
1413
isAutoMigratedFromJson: false,
1514
},
1615
})

src/main/store/module/preferences.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1+
import type { PreferencesStore } from '../types'
12
import { homedir, platform } from 'node:os'
23
import Store from 'electron-store'
34

4-
interface StoreSchema {
5-
storagePath: string
6-
backupPath: string
7-
apiPort: number
8-
}
9-
105
const isWin = platform() === 'win32'
116

127
const storagePath = isWin ? `${homedir()}\\massCode` : `${homedir()}/massCode`
138
const backupPath = isWin ? `${storagePath}\\backups` : `${storagePath}/backups`
149

15-
export default new Store<StoreSchema>({
10+
export default new Store<PreferencesStore>({
1611
name: 'preferences',
1712
cwd: 'v2',
1813

src/main/store/types/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type ElectronStore from 'electron-store'
2+
3+
export interface AppStore {
4+
bounds: object
5+
isAutoMigratedFromJson: boolean
6+
sidebarWidth: number
7+
snippetListWidth: number
8+
}
9+
10+
export interface PreferencesStore {
11+
storagePath: string
12+
backupPath: string
13+
apiPort: number
14+
}
15+
16+
export interface Store {
17+
app: ElectronStore<AppStore>
18+
preferences: ElectronStore<PreferencesStore>
19+
}

0 commit comments

Comments
 (0)