Giter Site home page Giter Site logo

tagspaces / tagspaces Goto Github PK

View Code? Open in Web Editor NEW
3.4K 96.0 379.0 110.53 MB

TagSpaces is an offline, open source, document manager with tagging support

Home Page: https://www.tagspaces.org

License: GNU Affero General Public License v3.0

JavaScript 10.29% CSS 0.22% HTML 0.73% Shell 0.25% Batchfile 0.62% Java 21.12% NSIS 0.01% TypeScript 56.45% Objective-C 10.02% Ruby 0.01% Swift 0.09% C 0.04% Dockerfile 0.03% EJS 0.13%
tagspaces electron javascript note-taking open-source self-hosting offline-first

tagspaces's Introduction

tagspaces logo

Join the chat at https://gitter.im/tagspaces/tagspaces Github All Releases

TagSpaces is a free, no vendor lock-in, open source application for organizing, annotating and managing local files with the help of tags. It features advanced note taking functionalities and some capabilities of to-do apps. The application is available for Windows, Linux, Mac OS and Android. We provide a web clipper extension for Firefox, Edge and Chrome for easy collecting of online content in the form of local files.

tagspaces with the markdown editor

More information about can be found from the following sources:

  • Website - official web site of the project.
  • Blog for news about TagSpaces
  • Docs - the user documentation of the application
  • Forum - for feature request and support requests
  • Issues for filing bug reports
  • Intro Video - A video on Youtube showing the main concepts of the application.

Downloads

You can find the latest release of TagSpaces in the Github release section

A full list of the changes is available in the changelog

Main Features

  • File and folder management - TagSpaces provides a convenient user interface for browsing, viewing and managing files and folders.
  • File tagging - The application supports two ways for tagging files. The default one embeds the tags directly in the name of the file, the other one uses a so called sidecar files for persisting the tags.
  • Searching - The search functionality supports fuzzy functionality and can filter your locations for files and folders containing one or more tags
  • Browser for local content - TagSpaces can be used just as browser for your local photos or navigation thought your local ebook library
  • Media player - It supports playing for common audio and video files types and has integrated basic media player functionalities.
  • No-Cloud: TagSpaces is running completely offline and serverless on your laptop, desktop or tablet and does not require an internet connection and any kind of online registration or service provider.
  • Note Taking - you can create and edit notes in plain text, markdown and html file formats
  • To-Do Management - with the help of the build in HTML editor you are able to create simple todo lists in every HTML file.
  • Cross-platform: TagSpaces runs on Windows, Linux, Mac and Android
  • Web Clipper for saving web pages and screenshots from your browsers is also available as extension for Firefox and Chrome.

Infos for developers

The core of TagSpaces starting from version 3 is built with react.js and the great material-ui framework.

The native Windows, Linux and Mac OS versions of TagSpaces are built with Electron. Electron is an app runtime based on Chromium and node.js. In order to combine it with react we have used the electron-react-boilerplate.

Repository Directory Structure

./src/renderer................ contains the application core
./src/main........ contains code needed for Electron platform
./src/renderer/locales........ contains the language files needed for the application internationalization
./src/node_modules... contains the TagSpaces extension modules
./cordova............ contains the code needed for running the Android version
./dll................ contains the files needed for live reload in development mode
./docker............. files needed for the creation of a docker container
./internals.......... contains files needed for supporting Flow and Eslint
./node_modules....... after npm install, you will find here the external dependencies of the application
./resources.......... contains images and other files needed for the application building
./scripts............ contains js script needed for the npm tasks
./test............... contains unit and e2e tests of the app
./web................ contains assets needed for the web version of the app

How to run TagSpaces from the source code?

In order to run TagSpaces on your Windows, Mac OS or Linux from the source code published here, you will need the following prerequisites:

Get the TagSpaces source code by cloning its repository:

$ git clone https://github.com/tagspaces/tagspaces.git

Go to the folder where the code was cloned to and select the branch you want to test. Use the master branch for the last officially released version or the branch develop for a kind of a nightly build, containing the changes we are preparing for the next release of the application.

Switch to the folder where you have cloned the repository:

$ cd tagspaces

Change to the branch with the name develop:

$ git checkout develop

and install the project dependencies:

$ npm install

Starting from v4 of the application, a web service is running locally as a separate process. The web service is responsible for the search index creation and the generation of the thumbnails for most of the images formats. A key is required in order for the main application to communicate with the web server. It should be generated from webpack script in the .env file located in release/app folder. This is an example for an .env file.

KEY=a_custom_key

Having a custom key, ensures that another instance of TagSpaces will not communicate with the web service of the initial instance, since it is always running on the same port.

Now you are ready and can build and start the application with:

$ npm run build

$ npm run start

If you want to try the development mode, you can start the app with:

$ npm run dev

This will start a development server in background, which watches for changes in background and refreshes the application automatically once you have done some changes in the source code.

Package for Windows, Linux and macOS

Building of the packages can be accomplished with the integrated npm scripts:

$ npm run package-win

$ npm run package-linux

$ npm run package-mac

$ npm run package-mac-arm64

The commands will create packages for Windows, Linux, Mac OS and Mac OS with the M1 processor respectively. Do not forget to run the npm run build script before packaging.

Package the Android

Building of the packages for Android can be accomplished with the integrated npm scripts:

$ npm run version-meta

$ npm run prepare-cordova

$ npm run package-android

Start the web version locally

For developing purposes and local tests, the web version of the app can be started with the following npm command:

$ npm run run-web

Running Tests

To run tests, run the following command

npm run test-unit

npm run test-playwright

npm run test-playwright-web

Developing viewer and editor for TagSpaces

TagSpaces can be easily extended with the help of extensions. Currently we use the extensions for supporting the opening and editing of different file types in the application. More information about this topic can be found on the extension page of our website.

Contribute

TagSpaces is an open source software, and as such, the code is publicly available on GitHub, and forking is particularly recommended! Still, contribution must be done following some guidelines. Contributor License Agreement

The CLA is an agreement commonly used in major open source project, which aims at protecting all parties implied by a contribution: the contributor, the main code author, and above all, the community. The CLA model we have chosen basically tells the following: the contribution’s copyright is shared between the contributor and the main author. This means each party can do whatever she want in term of relicensing with this contributed piece of code. This is important, because, if in the future, the author wants to change the license in something more in favor of the community, a singular contributor cannot block the process.

The Contributor License Agreement can be signed online on the following CLA form.

Localisation

TagSpaces is currently available in more than 20 languages. You can help the translation of this application in your language by joining the translation teams on Transifex.

Ideas and Suggestion

If you have ideas or suggestions on how we can improve our application, you can check the dedicated section in our forum. Here you will find numerous ideas already proposed by other users.

Support and Bugs

If you are having troubles using TagSpaces or have found a bug please open a ticket on GitHub.

Known issues

  • TagSpaces is not suitable for searching in locations containing more than 100000 files.

Feeds

License

This project is dual-licensed under the AGPL (GNU Affero General Public License) Version 3 for FOSS projects and under a commercial license for independent software vendors and resellers. If you want to modify this application under different conditions, feel free to contact us.

tagspaces's People

Contributors

asbachb avatar bsapundzhiev avatar chelmertz avatar claell avatar cybolic avatar eliasap avatar fringoo avatar guybedford avatar ihappydayi avatar iliansap avatar jasonpenny avatar jonathan-shahen avatar kristiyandd avatar mladensap avatar nallj avatar qingwabote avatar roobin avatar rouzbeh84 avatar smichard avatar sytolk avatar uggrock avatar xzk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tagspaces's Issues

Ubuntu .deb (x64) does not work

I managed to install the deb via the Software Center, but after clicking the app icon to start it, nothing happens for me.

Markdown font size should be improved or be customisable

The standard Markdown font size for regular text is way too small - at least on OS X. While the font sizes for headings are fine, the regular font is rendered at about 6-8 points in 1.7.4. You could either make the font sizes fully customisable or allow to define a minimum font size, both as part of the preferences.

Thanks

Showing large amounts of files

Firefox tries to kill off the script multiple times when opening a folder with ~14000 files. Even a folder with 500 direct files and 4000 files in sub-directories takes around 5 seconds to open. I'm afraid to even try opening my main folders that would need tagging. I think it's very hard to do anything about this problem, but I wanted to show what some users are going to want to do with this.

Markdown Viewer doesn't scroll

View a Markdown file that, in the viewer, has more lines than the web browser. There should be a scrollbar to show the hidden lines (as there is in the Text and HTML viewers)

This an issue in both Chrome (TagSpaces 1.6.1606) and Firefox (TagSpaces 1.6.1607) plugins

Inproper data handling leads to crashes and local code execution

Multiple outputs are not properly sanitised.

Examples

Filenames in perspectiveList

Filenames are not properly sanitised. Proof of concept:

touch "<img src=x onerror=alert(1)>qwerty"

viewerBrowser, viewerMD, viewerText and editorHTML

It's is possible to render any html code and because of node-webkit architecture we have ability to access the file system or execute arbitrary command using nodejs modules.

<script>
   var exec = require('child_process').exec;
   exec('uname -a',function (error, stdout, stdin) {alert(stdout)});
</script> 
Location name in remove dialog

Same situation as in viewers

Tag names

Special characters lead to unspecified behaviour and crashes.

Solutions

HTML editor doesn't support list indentation/nesting

WYSIWYG HTML editors usually support multi-level (un)ordered lists by using TAB (and SHIFT+TAB) to change the indentation level of a given list entry. Version 1.7.8 doesn't seem to support this. I presume TAB just steps out of the editor (like common TAB-based form element navigation). An alternative approach would be to offer two dedicated toolbar buttons that control list indentation levels. However, I'd prefer the TAB shortcut which is commonly used and thus intuitively expected to be supported.

Cheers

Tag and file name messed up when "[]" already included in local file name.

When a file name already had some "[]" in it, it will messed up in TagSpaces.

for example, file:
[The.Elegant.Universe]2003-BBC-DVD-cd1[14-46-13]

will be like this in tag spaces:
Name: none
Tag: The.Elegant.Universe]2003-BBC-DVD-cd1[14-46-13

That's just so wrong...

I have a lot of files named in this way. some kind of like:
[project-name]file-name[team-name][date].ext
[artist]music-name[collection][date].mp3

It will be much better if TagSpace can parse every pair of "[]" into a tag.
If do so, these files will be like this in TagSpace:

Name: file-name
Tag: project-name, team-name, date
.
but now it just treat everything between first "[" and last "]" as one tag.

[osx] cut/copy/paste/select_all broken in the native client

TagSpaces 1.7.9 native client
OS X 10.9.2 (13C64)

cut/copy/paste/select_all with shortcuts [command-x/c/v/a] is broken

// notes:

  • shortcuts used to work in 1.7.8, so probably the issue was introduced with this change >> [osx]disabling the file menu on mac
  • cut/copy/paste/select_all shortcuts work fine in the Chrome [Mac version] extension
  • shortcuts for undo/redo are fixed now, bold/italic/underline etc. work just fine in the native app

// misc/question:
the context menu is missing from the osx native client, [ present in the Chrome extension ] -- is that an app limitation or a valid issue?

Umlauts aren't displayed correct

I'm using version 1.6beta and the Firefox-Adon. Umlauts like ä, ü and ö aren't displayed correct.

Thanks for your great work!

Big odp file causes performance issues

I tried to view an odp presentation, which contains a video. This makes the app unusable because it almost does not response anymore. I suggest either to improve the performance or to prevent this in a different way.

Link editing is broken in WYSIWYG HTML editor on OS X

The WYSIWYG HTML editor allows to turn text into links by using the usual CMD + k shortcut on OS X. However, the link editor pops up with some kind of overlay that prevents any input to the modal popup dialog. The only way to "continue" is to quit and restart TagSpaces.

Apart from the required fix it would be more convenient to have a dedicated button in the toolbar, in addition to the shortcut (not everyone is aware of it).

Thanks

OSX: Adding additional tags does not work

App Build: 1384

After adding a new tag tagspaces shows an empty pad, without an open location. It's not possible to open a location. You have to close the tab and reopen the tagspace tab.

Dragging files from tagspaces to other apps

Is there a way to drag files from the TagSpaces list to other apps? For example, drag a URL shortcut into a web browser window? I just found out about TagSpaces today and I'm intrigued, but this is one of the first things I want to do and it doesn't seem possible. There doesn't seem to be any part of the list item for a file that I can grab to drag into another window. This is with the native app in Windows 7.

HTML editor "Code View" corrupts content

Steps to reproduce with 1.7.4 on OS X:

  • Create a new HTML file
  • Open the file
  • Go to the "Code View"
  • Add some HTML tag below the existing line, say, a BR or a HR tag
  • Leave the "Code View"
  • Save the file

By now the original content should be broken: the HTML tags got escaped into their entities, two extra characters (�) got added and the content was even truncated.

Example: the original text...
<title>Created with TagSpaces!</title>Feel free to change this text...
... turns into this:
&lt;�title&gt;Created with TagSpaces!&lt;�/title

Thanks

Code Syntax Highlighting

Support code syntax highlighting like GitHub Flavored Markdown:

def function(input):
    return str(input + 5)
(define a (= (x 3 2) (+ 1 1 4))

HTML editor lacks "back" button while supporting link navigation -- repurpose previous/next buttons

The HTML editor allows to navigate (follow) links present in the document. However, in 1.7.8 there's no way to get back to the original document once you followed a link. You may only reopen the document again - certainly possible but pretty inconvenient.

Proposal: use the "previous" and "next" buttons right above the HTML editor for that purpose. Along the same lines you could (and should) even reconsider what their purpose should be. Right now they navigate between files in the current folder (ordered list). Wouldn't it be better if they could be used to navigate the history of recently opened files instead? We could factor this second part into its own issue if you want...

Cheers

Tags can't be applied

I navigate within my files,
Select the ones to be tagged,
Write down the tags,
But after the process is done,
There's no tags applied to the files (No tags displayed under the "tags" column inside Tagspaces' file manager at all)

Add Linux version for servers

If would be nice to install TagSpaces on my personal server and promote then Personal and Small Data.

So, a Linux version for servers would be cool :)

Add on option to reopen the previous location (and more) on startup

TagSpaces should get an option to reopen the previous location on startup.

Ideally one should think about which state information would be worth to optionally restore on startup. Apart from the previous location and the window geometry other things like the last document/file or the general GUI setup (list vs grid, left panel on/off) could saved and restored as well.

Thanks

[osx] Edit Menu improvements

BROWSING
Since file operations are not possible via the Edit menu, only Select All should be enabled while browsing files.

EDITING
In editing mode, the menu should change as described below.
Undo -- enabled when there's change history
Redo -- enabled when there's change history
Cut -- enabled when an item [characters, +images in html] is selected
Copy -- enabled when an item [characters, +images in html] is selected
Paste -- enabled when clipboard is not empty and contains only pastable data
Delete -- enabled when an item [characters, +images in html] is selected
Select All - always enabled in Editor

NOTES
Not sure if Paste As Plain Text / Paste And Match Style actions are easy to implement, but having them would be amazing.

Problems with new lines in .txt

I created a txt file, but unfortunately new lines are not displayed correctly, when I view the file. When editing it, everything is ok. I created the document with gedit, if that helps.
I have a similar problem with another file, where empty lines are not displayed.

UNDO via shortcut deletes all contents of a TXT/MD file

Environment:
OS X 10.9.2 / Windows 7 x32
TagSpaces -- 1.7.8, 1.7.9 native clients / Chrome extension

Preconditions:
A non-empty TXT/MD file

Sequence:
0. open a txt/md file

  1. enter the edit mode
  2. click in the editor field, but do not edit the file
  3. command-z / ctrl-z ==>>

Actual:
File contents is deleted.

Expected:
File contents should remain intact.

Notes:

  • not replicated for HTML files
  • undo in the Mac Edit menu [osx/1.7.8] does not cause it

unable to view in firefox

The file panel says:

undefined
File type not supported for viewing.
folder_name/undefined

when I try to read a file in a space.

Firefox is updated to the latest version

HTML editor breaks XHTML content while auto-converting to HTML

XHTML is listed among the seemingly supported file types and is set to be editable by the HTML editor by default. However, as soon as I open a standard XHTML file in 1.7.4 on OS X it get's auto-converted to HTML. In fact, the editor comments out the XML declaration, strips the DOCTYPE declaration and it even strips the HTML, HEAD and BODY tags, leaving behind a rather incomplete HTML fragment. Is that intentional?

Example: the following...

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>XHTML 1.0 Strict Example</title>
 </head>
 <body>
 <p>Hello World!</p>
 </body>
</html>

... gets transformed into (empty lines are in the original output!):

<!--?xml version="1.0" encoding="UTF-8" ?-->



 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>XHTML 1.0 Strict Example</title>


 <p>Hello World!</p>



Upon saving the HTML viewer returns the following error:

This page contains the following errors:

error on line 12 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.

XHTML 1.0 Strict Example Hello World!

Ideally, the HTML editor shouldn't convert XHTML to HTML at all. If that isn't possible it should at least return something that can still be digested by the HTML viewer ;-)

Thanks

Built-in WebDAV synchronisation

Following up the previous discussion in #31 (comment):

It would be great to have WebDAV synchronisation build into TagSpaces. SSL as well as user authentication support should be considered a must.

I'm currently using an external WebDAV sync client (Dropbox and bittorrentsync don't use WebDAV) but It would just be ideal to have WebDAV directly integrated to get rid of that external dependency. If you need to rely on such an external tool, you need to find one that supports all the OS that TagSpaces nowadays supports - just consider the planned iOS version for instance. WebDAV is the common denominator (standard protocol!) in terms of cloud data synchronisation that's supported by most private hosting companies and not tied to a particular proprietary service provider like Dropbox - a very important selling point for people concerned about privacy.

Quoting from Ilian's talk on health data in Munich: "Envisioned Solution: No Backend -> No Login -> No Cloud". Let's free people from commercial/proprietary services with questionable privacy. Provide an alternative for those who prefer to host their own cloud storage :-)

A candidate node.js module could be this one...

Thanks

Increasing performance

Hi there,

I have exported my Evernote notes, to HTML files (3756 Notes/ 800MB) , all in 1 Folder and I'm running Fedora 20,

  • I have tried the native app but I get Out of Memory issues,
  • I have tried Chrome, which falls over
  • Firefox is the only one that can load the collection, however crashes after a few searches
  • Should I try and use MHT?

Can anyone recommend a better way for me to get more performance?

I met some problems about "chrome devtool extension access file system",Can you help me?

I want to write a chrome devtool extension what can replace some special code with other code when commit resource.So,I need access file system,but I can't find way in the chrome extension website.And I find your repository by searching "NPAPIFileIOforChrome" in github.but I don't know how to use the plugin.So,can you tell me somethings about how to use the plugin or some resources about that,just like a link ,a website?

My English is poor.Thank you!

Typos on home page

I noticed some typos on http://www.tagspaces.org/ . I didn't go through the page and try to find any / all errors, these are just ones I noticed:

It can support you organize the files on your computer. => not sure exactly what this should be, maybe: "It can help you organize the files on your computer." or better yet maybe "It helps you organize files."

vizualization => visualization

different files types => different file types

does not requiry internet => does not require internet

without the TagSpaces appication => without the TagSpaces application

you can do a better research => maybe: "you can do research better"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.