69 |
70 | Tab Space
71 |
72 | 把浏览器标签页保存为工作空间
Tab
73 | Space 是一个为 Safari 浏览器提供标签页保存、会话管理和快捷键的应用程序。
├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── validate_translation.yml ├── .gitignore ├── CNAME ├── Gemfile ├── Gemfile.lock ├── README.md ├── _config.yml ├── _layouts └── default.html ├── admin ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── public │ ├── export.html │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── assets │ │ └── img │ │ │ └── icon-webpage.svg │ ├── components │ │ ├── ExportDropdown.vue │ │ ├── ImportDropdown.vue │ │ ├── Navbar.vue │ │ ├── SessionCard.vue │ │ ├── SessionHub.vue │ │ ├── SessionSidebar.vue │ │ ├── Sessions.vue │ │ └── TabSpaceBridge.vue │ ├── config.js │ ├── constants.js │ ├── lang.json │ ├── main.js │ ├── notificationCount.json │ ├── pages │ │ ├── Admin.vue │ │ └── Settings.vue │ ├── store.js │ ├── tips.json │ └── utility.js ├── upload.js ├── validate_translation.js ├── vue.config.js └── yarn.lock ├── assets ├── JetBrainsMono-Regular.woff2 ├── Tab_Space_Demo.mp4 ├── css │ ├── main.css │ └── style.scss └── img │ ├── Download_on_the_Mac_App_Store_Badge_US-UK_RGB_blk_092917.svg │ ├── desktop.png │ ├── preview1.png │ ├── preview2.png │ ├── preview3.png │ ├── publicity.001.jpeg │ ├── publicity.002.jpeg │ ├── publicity.003.jpeg │ ├── publicity.004.jpeg │ ├── publicity.005.jpeg │ ├── publicity.006.jpeg │ ├── publicity.007.jpeg │ ├── publicity.008.jpeg │ ├── publicity.009.jpeg │ └── publicity.010.jpeg ├── beta ├── css │ └── app.fd6330c6.css ├── export.html ├── favicon.ico ├── img │ └── icon-webpage.397ba490.svg ├── index.html └── js │ ├── app.f0d04f6b.js │ └── chunk-vendors.f5e4d5e8.js ├── icon.png ├── index-zh.html ├── index.html ├── redirect.html ├── storage.html └── translate.html /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: yuanzhoucq 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. macOS 10.15.5] 28 | - Version [e.g. 3.7.1] 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/validate_translation.yml: -------------------------------------------------------------------------------- 1 | name: Validate Tranlation File for Localization 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | validate: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - name: Setup Node.js environment 16 | uses: actions/setup-node@v2.1.2 17 | with: 18 | node-version: '10.x' 19 | 20 | - name: Run script 21 | run: node admin/validate_translation.js 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | mytab.space -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'github-pages', group: :jekyll_plugins 3 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (4.2.11.1) 5 | i18n (~> 0.7) 6 | minitest (~> 5.1) 7 | thread_safe (~> 0.3, >= 0.3.4) 8 | tzinfo (~> 1.1) 9 | addressable (2.6.0) 10 | public_suffix (>= 2.0.2, < 4.0) 11 | coffee-script (2.4.1) 12 | coffee-script-source 13 | execjs 14 | coffee-script-source (1.11.1) 15 | colorator (1.1.0) 16 | commonmarker (0.17.13) 17 | ruby-enum (~> 0.5) 18 | concurrent-ruby (1.1.5) 19 | dnsruby (1.61.3) 20 | addressable (~> 2.5) 21 | em-websocket (0.5.1) 22 | eventmachine (>= 0.12.9) 23 | http_parser.rb (~> 0.6.0) 24 | ethon (0.12.0) 25 | ffi (>= 1.3.0) 26 | eventmachine (1.2.7) 27 | execjs (2.7.0) 28 | faraday (0.15.4) 29 | multipart-post (>= 1.2, < 3) 30 | ffi (1.11.1) 31 | forwardable-extended (2.6.0) 32 | gemoji (3.0.1) 33 | github-pages (198) 34 | activesupport (= 4.2.11.1) 35 | github-pages-health-check (= 1.16.1) 36 | jekyll (= 3.8.5) 37 | jekyll-avatar (= 0.6.0) 38 | jekyll-coffeescript (= 1.1.1) 39 | jekyll-commonmark-ghpages (= 0.1.5) 40 | jekyll-default-layout (= 0.1.4) 41 | jekyll-feed (= 0.11.0) 42 | jekyll-gist (= 1.5.0) 43 | jekyll-github-metadata (= 2.12.1) 44 | jekyll-mentions (= 1.4.1) 45 | jekyll-optional-front-matter (= 0.3.0) 46 | jekyll-paginate (= 1.1.0) 47 | jekyll-readme-index (= 0.2.0) 48 | jekyll-redirect-from (= 0.14.0) 49 | jekyll-relative-links (= 0.6.0) 50 | jekyll-remote-theme (= 0.3.1) 51 | jekyll-sass-converter (= 1.5.2) 52 | jekyll-seo-tag (= 2.5.0) 53 | jekyll-sitemap (= 1.2.0) 54 | jekyll-swiss (= 0.4.0) 55 | jekyll-theme-architect (= 0.1.1) 56 | jekyll-theme-cayman (= 0.1.1) 57 | jekyll-theme-dinky (= 0.1.1) 58 | jekyll-theme-hacker (= 0.1.1) 59 | jekyll-theme-leap-day (= 0.1.1) 60 | jekyll-theme-merlot (= 0.1.1) 61 | jekyll-theme-midnight (= 0.1.1) 62 | jekyll-theme-minimal (= 0.1.1) 63 | jekyll-theme-modernist (= 0.1.1) 64 | jekyll-theme-primer (= 0.5.3) 65 | jekyll-theme-slate (= 0.1.1) 66 | jekyll-theme-tactile (= 0.1.1) 67 | jekyll-theme-time-machine (= 0.1.1) 68 | jekyll-titles-from-headings (= 0.5.1) 69 | jemoji (= 0.10.2) 70 | kramdown (= 1.17.0) 71 | liquid (= 4.0.0) 72 | listen (= 3.1.5) 73 | mercenary (~> 0.3) 74 | minima (= 2.5.0) 75 | nokogiri (>= 1.8.5, < 2.0) 76 | rouge (= 2.2.1) 77 | terminal-table (~> 1.4) 78 | github-pages-health-check (1.16.1) 79 | addressable (~> 2.3) 80 | dnsruby (~> 1.60) 81 | octokit (~> 4.0) 82 | public_suffix (~> 3.0) 83 | typhoeus (~> 1.3) 84 | html-pipeline (2.12.0) 85 | activesupport (>= 2) 86 | nokogiri (>= 1.4) 87 | http_parser.rb (0.6.0) 88 | i18n (0.9.5) 89 | concurrent-ruby (~> 1.0) 90 | jekyll (3.8.5) 91 | addressable (~> 2.4) 92 | colorator (~> 1.0) 93 | em-websocket (~> 0.5) 94 | i18n (~> 0.7) 95 | jekyll-sass-converter (~> 1.0) 96 | jekyll-watch (~> 2.0) 97 | kramdown (~> 1.14) 98 | liquid (~> 4.0) 99 | mercenary (~> 0.3.3) 100 | pathutil (~> 0.9) 101 | rouge (>= 1.7, < 4) 102 | safe_yaml (~> 1.0) 103 | jekyll-avatar (0.6.0) 104 | jekyll (~> 3.0) 105 | jekyll-coffeescript (1.1.1) 106 | coffee-script (~> 2.2) 107 | coffee-script-source (~> 1.11.1) 108 | jekyll-commonmark (1.3.1) 109 | commonmarker (~> 0.14) 110 | jekyll (>= 3.7, < 5.0) 111 | jekyll-commonmark-ghpages (0.1.5) 112 | commonmarker (~> 0.17.6) 113 | jekyll-commonmark (~> 1) 114 | rouge (~> 2) 115 | jekyll-default-layout (0.1.4) 116 | jekyll (~> 3.0) 117 | jekyll-feed (0.11.0) 118 | jekyll (~> 3.3) 119 | jekyll-gist (1.5.0) 120 | octokit (~> 4.2) 121 | jekyll-github-metadata (2.12.1) 122 | jekyll (~> 3.4) 123 | octokit (~> 4.0, != 4.4.0) 124 | jekyll-mentions (1.4.1) 125 | html-pipeline (~> 2.3) 126 | jekyll (~> 3.0) 127 | jekyll-optional-front-matter (0.3.0) 128 | jekyll (~> 3.0) 129 | jekyll-paginate (1.1.0) 130 | jekyll-readme-index (0.2.0) 131 | jekyll (~> 3.0) 132 | jekyll-redirect-from (0.14.0) 133 | jekyll (~> 3.3) 134 | jekyll-relative-links (0.6.0) 135 | jekyll (~> 3.3) 136 | jekyll-remote-theme (0.3.1) 137 | jekyll (~> 3.5) 138 | rubyzip (>= 1.2.1, < 3.0) 139 | jekyll-sass-converter (1.5.2) 140 | sass (~> 3.4) 141 | jekyll-seo-tag (2.5.0) 142 | jekyll (~> 3.3) 143 | jekyll-sitemap (1.2.0) 144 | jekyll (~> 3.3) 145 | jekyll-swiss (0.4.0) 146 | jekyll-theme-architect (0.1.1) 147 | jekyll (~> 3.5) 148 | jekyll-seo-tag (~> 2.0) 149 | jekyll-theme-cayman (0.1.1) 150 | jekyll (~> 3.5) 151 | jekyll-seo-tag (~> 2.0) 152 | jekyll-theme-dinky (0.1.1) 153 | jekyll (~> 3.5) 154 | jekyll-seo-tag (~> 2.0) 155 | jekyll-theme-hacker (0.1.1) 156 | jekyll (~> 3.5) 157 | jekyll-seo-tag (~> 2.0) 158 | jekyll-theme-leap-day (0.1.1) 159 | jekyll (~> 3.5) 160 | jekyll-seo-tag (~> 2.0) 161 | jekyll-theme-merlot (0.1.1) 162 | jekyll (~> 3.5) 163 | jekyll-seo-tag (~> 2.0) 164 | jekyll-theme-midnight (0.1.1) 165 | jekyll (~> 3.5) 166 | jekyll-seo-tag (~> 2.0) 167 | jekyll-theme-minimal (0.1.1) 168 | jekyll (~> 3.5) 169 | jekyll-seo-tag (~> 2.0) 170 | jekyll-theme-modernist (0.1.1) 171 | jekyll (~> 3.5) 172 | jekyll-seo-tag (~> 2.0) 173 | jekyll-theme-primer (0.5.3) 174 | jekyll (~> 3.5) 175 | jekyll-github-metadata (~> 2.9) 176 | jekyll-seo-tag (~> 2.0) 177 | jekyll-theme-slate (0.1.1) 178 | jekyll (~> 3.5) 179 | jekyll-seo-tag (~> 2.0) 180 | jekyll-theme-tactile (0.1.1) 181 | jekyll (~> 3.5) 182 | jekyll-seo-tag (~> 2.0) 183 | jekyll-theme-time-machine (0.1.1) 184 | jekyll (~> 3.5) 185 | jekyll-seo-tag (~> 2.0) 186 | jekyll-titles-from-headings (0.5.1) 187 | jekyll (~> 3.3) 188 | jekyll-watch (2.2.1) 189 | listen (~> 3.0) 190 | jemoji (0.10.2) 191 | gemoji (~> 3.0) 192 | html-pipeline (~> 2.2) 193 | jekyll (~> 3.0) 194 | kramdown (1.17.0) 195 | liquid (4.0.0) 196 | listen (3.1.5) 197 | rb-fsevent (~> 0.9, >= 0.9.4) 198 | rb-inotify (~> 0.9, >= 0.9.7) 199 | ruby_dep (~> 1.2) 200 | mercenary (0.3.6) 201 | mini_portile2 (2.4.0) 202 | minima (2.5.0) 203 | jekyll (~> 3.5) 204 | jekyll-feed (~> 0.9) 205 | jekyll-seo-tag (~> 2.1) 206 | minitest (5.11.3) 207 | multipart-post (2.1.1) 208 | nokogiri (1.10.4) 209 | mini_portile2 (~> 2.4.0) 210 | octokit (4.14.0) 211 | sawyer (~> 0.8.0, >= 0.5.3) 212 | pathutil (0.16.2) 213 | forwardable-extended (~> 2.6) 214 | public_suffix (3.1.1) 215 | rb-fsevent (0.10.3) 216 | rb-inotify (0.10.0) 217 | ffi (~> 1.0) 218 | rouge (2.2.1) 219 | ruby-enum (0.7.2) 220 | i18n 221 | ruby_dep (1.5.0) 222 | rubyzip (1.2.3) 223 | safe_yaml (1.0.5) 224 | sass (3.7.4) 225 | sass-listen (~> 4.0.0) 226 | sass-listen (4.0.0) 227 | rb-fsevent (~> 0.9, >= 0.9.4) 228 | rb-inotify (~> 0.9, >= 0.9.7) 229 | sawyer (0.8.2) 230 | addressable (>= 2.3.5) 231 | faraday (> 0.8, < 2.0) 232 | terminal-table (1.8.0) 233 | unicode-display_width (~> 1.1, >= 1.1.1) 234 | thread_safe (0.3.6) 235 | typhoeus (1.3.1) 236 | ethon (>= 0.9.0) 237 | tzinfo (1.2.5) 238 | thread_safe (~> 0.1) 239 | unicode-display_width (1.6.0) 240 | 241 | PLATFORMS 242 | ruby 243 | 244 | DEPENDENCIES 245 | github-pages 246 | 247 | BUNDLED WITH 248 | 2.0.2 249 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Tab Space is a Safari extension app which is born for improving web browsing productivity. It offers tab management ability and some useful shortcuts for Safari. 2 | 3 | > Note: this repo contains the project site and the web app cooperating with Tab Space in Safari. It **does not contain** the Xcode project which builds the entire app. 4 | 5 | 6 | ## Contributing 7 | ### For translation 8 | - [Translation page](https://mytab.space/translate.html) 9 | ### For web app 10 | ``` 11 | $ git clone https://github.com/yuanzhoucq/Tab-Space.git 12 | $ cd Tab-Space/admin 13 | $ npm install 14 | $ npm run serve 15 | ``` 16 | Note that you need to have Tab Space installed and activated in Safari or the web app will not work properly. 17 | 18 | ## Related links 19 | - [Tab Space Homepage](http://mytab.space) 20 | - [Product Hunt page](https://www.producthunt.com/posts/tab-sapce) 21 | - [中文介绍](https://sspai.com/post/56315) 22 | 23 | 24 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | {% seo %} 9 | 10 | 13 | 14 | 15 |{{ site.description | default: site.github.project_tagline }}
24 | 25 | {% if site.github.is_project_page %} 26 |View the Project on GitHub {{ site.github.repository_nwo }}
27 | {% endif %} 28 | 29 |Connecting to Tab Space App...
18 |25 | Help us translate Tab Space 26 |
27 |35 | {{lang.shortcutTip}} 36 |
37 |
38 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} D
39 | {{lang.ctrlD}}
40 |
42 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} L
43 | {{lang.ctrlL}}
44 |
46 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} R
47 | {{lang.ctrlR}}
48 |
50 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} K
51 | {{lang.ctrlK}}
52 |
54 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} Q
55 | {{lang.ctrlQ}}
56 |
58 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} ;
59 | {{lang.saveAndCloseTabs}}
60 |
62 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} S
63 | {{lang.saveCurrentTab}}
64 |
66 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} C
67 | {{lang.openIn}}
68 |
71 |
73 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} F
74 | {{lang.openIn}}
75 |
78 |
80 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} T
81 | {{lang.ctrlT}}
82 |
84 | Ctrl + {{ tabSpaceSettings["shift-shortcuts"] === "true" ? "Shift +" : "" }} B
85 | {{lang.ctrlB}}
86 |
Language Code | Lanuage | Progress | Missing Keys |
---|---|---|---|
zh-cn | Chinese (PRC) | 100.00% | - |
uk | Ukrainian | 67.80% | activeTabs, ctrlD, ctrlK, disable-context-menus, editPrompt, favorites, ignore-duplicated-tabs, location, mergePrompt, movePrompt, newSession, openIn, recentlySaved, remove-site-after-click, shift-shortcuts, tipContents, topPrompt, upgradeSafari, whatsNew |
es | Spanish | 79.66% | ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, topPrompt, whatsNew |
da | Danish | 67.80% | activeTabs, ctrlD, ctrlK, disable-context-menus, editPrompt, favorites, ignore-duplicated-tabs, location, mergePrompt, movePrompt, newSession, openIn, recentlySaved, remove-site-after-click, shift-shortcuts, tipContents, topPrompt, upgradeSafari, whatsNew |
pl | Polish | 81.36% | ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, topPrompt |
ru | Russian | 94.92% | ctrlD, ctrlK, openIn |
tr | Turkish | 77.97% | activeTabs, ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, shift-shortcuts, topPrompt |
de | German (Standard) | 79.66% | activeTabs, ctrlD, ctrlK, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, shift-shortcuts, topPrompt |
sv | Swedish | 81.36% | ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, topPrompt |
it | Italian (Standard) | 77.97% | activeTabs, ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, shift-shortcuts, topPrompt |
ko | Korean | 77.97% | ctrlD, ctrlK, disable-context-menus, editPrompt, location, mergePrompt, movePrompt, newSession, openIn, remove-site-after-click, shift-shortcuts, topPrompt, untagged |
ar-ae | Arabic (U.A.E.) | 93.22% | ctrlD, ctrlK, openIn, untagged |
nl | Dutch (Standard) | 93.22% | ctrlD, ctrlK, openIn, untagged |
fr | French (Standard) | 91.53% | ctrlD, ctrlK, disable-context-menus, openIn, remove-site-after-click |
ja | Japanese | 93.22% | ctrlD, ctrlK, openIn, untagged |
To add a translation, you simply need to append a block to the [file] and translate the red text under the "en-us" label. If you have any translations or improvements to offer, please send them to joyuercn@icloud.com, and we will quickly add them to Tab Space. Thank you!
87 |