summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-23web: server: Remove special line height for search hints.Arun Isaac
* tissue/web/server.scm (%css)[.search-hint]: Remove line-height property.
2022-07-23bin: Add tissue web-dev subcommand.Arun Isaac
* bin/tissue (tissue-web-dev): New function. (print-usage): List the tissue web-dev subcommand. (main): Call tissue-web-dev.
2022-07-23git: Prefer reading checked out files.Arun Isaac
This generalization of call-with-file-in-git permits preferential reading of uncommitted changes, and reading of files external to the git repository. * tissue/git.scm (call-with-file-in-git): Prefer reading checked out files.
2022-07-23bin: Abstract out REPL listen code.Arun Isaac
* bin/tissue (start-repl): New function. (listen-repl-option): New variable. (tissue-web): Use listen-repl-option. Call start-repl.
2022-07-21bin: Add tissue web-build subcommand.Arun Isaac
* bin/tissue (tissue-web-build): New function. * bin/tissue (print-usage): List web-build subcommand. (main): Invoke tissue-web-build.
2022-07-21web: server: Be unaware of the state directory.Arun Isaac
The server should be unaware of the specifics of the state directory and its directory structure. It should be explicitly passed paths to all necessary directories. This way, the server can be repurposed for other applications such as the development web server---something that is coming soon in the subsequent commits. * tissue/web/server.scm (handler): Remove state-directory argument. Use directory paths in hosts argument. (start-web-server): Remove state-directory argument. Do not pass on state-directory to handler. * bin/tissue (tissue-web): Pass directory paths explicitly to start-web-server in hosts argument. Do not pass the removed state-directory argument.
2022-07-20web: server: Add article 'the' in handler docstring.Arun Isaac
* tissue/web/server.scm (handler): Add article 'the' in docstring.
2022-07-20utils: Allow specifying parent of temporary directory.Arun Isaac
* tissue/utils.scm (call-with-temporary-directory): Allow specifying directory in which to create temporary directory.
2022-07-20bin: Do not print canonical paths when pulling.Arun Isaac
`tissue pull' may be run in CI with the logs getting published. It is better to not expose the canonical paths in such public logs. * bin/tissue (pull): Do not print canonical paths.
2022-07-20git: Add git-tracked-file? utility.Arun Isaac
* tissue/git.scm: Import (rnrs exceptions). (git-tracked-file?): New public function.
2022-07-20web: server: Respond to a static file request with a bytevector.Arun Isaac
If the response to a static file request is returned as a procedure, (web server) tries to interpret the response as text. This results in encoding errors with binary files. Fixing this is not worth the trouble since (tissue web server) is anyway not meant to serve large static files. Large static files should be served using a more capable server such as nginx. * tissue/web/server.scm (handler): Return response to a static file request as a bytevector, instead of as a procedure.
2022-07-19web: server: Move document type identifier into HTML.Arun Isaac
* tissue/commit.scm (document->sxml): Generate document type identifier. * tissue/file-document.scm (document->sxml): Generate document type identifier. * tissue/issue.scm (document->sxml): Generate document type identifier. * tissue/web/server.scm (%css): Style document type identifiers.
2022-07-19web: server: Remove rounded edges on search filters.Arun Isaac
* tissue/web/server.scm (%css)[.search-filter]: Remove rounded edges.
2022-07-19web: server: Remove rounded edges on tags.Arun Isaac
* tissue/web/server.scm (%css)[.tag a]: Remove rounded edges and reduce padding.
2022-07-19issue: Render tags as an unordered list.Arun Isaac
* tissue/issue.scm (document->sxml): Render tags as an unordered list. * tissue/web/server.scm (%css): Style list items with tag classes, not anchor tags.
2022-07-19web: server: Link to Xapian::QueryParser syntax documentation.Arun Isaac
* tissue/web/server.scm (make-search-page): Link to upstream Xapian::QueryParser syntax documentation.
2022-07-19file-document: Show created and last updated dates in listings.Arun Isaac
* tissue/file-document.scm (print, document->sxml): Show created and last updated dates in listings. * tissue/web/server.scm (%css): Put DOC identifier before metadata, not before title.
2022-07-19web: server: Parse provided search query only once.Arun Isaac
* tissue/web/server.scm (matches): Accept parsed search query. (handler): Parse provided search query only once.
2022-07-19search: Sort by date on strictly boolean queries.Arun Isaac
* issues/sort-by-date.gmi: Close issue. * tissue/search.scm (term-ref, query-terms-every): New functions. (boolean-query?): New public function. (search-fold): Sort by date on strictly boolean queries. * tissue/web/server.scm (handler): Sort by date on strictly boolean queries.
2022-07-19utils: Add string-contains? utility.Arun Isaac
* tissue/utils.scm (string-contains?): New public function.
2022-07-19issue: Quote tags with spaces instead of hyphenating them.Arun Isaac
* tissue/issue.scm (document->sxml): Quote tags with spaces instead of hyphenating them.
2022-07-19search: Parse boolean terms in search query.Arun Isaac
* tissue/search.scm: Import (ice-9 match). (make-query-parser): New function. (%prefixes, %boolean-prefixes, query-parser): New variables. (parse-query): Use query-parser.
2022-07-19document: Index boolean terms.Arun Isaac
Metadata that will be used in boolean filtering should be indexed as boolean terms, not as free text. This also results in the happy coincidence that we no longer need a specialized document-term-generator generic method for <issue> and <commit>. * tissue/document.scm (document-boolean-terms): New public generic function. (document-term-generator): Use document-boolean-terms. * tissue/issue.scm (document-boolean-terms): New generic method. (document-term-generator): Delete generic method. * tissue/commit.scm (document-boolean-terms): New generic method. (document-term-generator): Delete generic method.
2022-07-19document: Store serialized date as value in Xapian document.Arun Isaac
* tissue/document.scm (document-recency-date): Declare public generic function. (document-term-generator): Store serialized date in slot 0 of Xapian document. * tissue/file-document.scm (document-recency-date): New generic method. * tissue/commit.scm (document-recency-date): New generic method.
2022-07-13document: Use string-blank?.Arun Isaac
* tissue/document.scm (document-snippet-source-text): Use string-blank?.
2022-07-13search: Match all on blank query, not null query.Arun Isaac
* tissue/search.scm: Import (tissue utils). (parse-query): Match all on blank query, not null query.
2022-07-13utils: Add string-blank? utility.Arun Isaac
* tissue/utils.scm (string-blank?): New function.
2022-07-13web: static: Do not log output directory name when building.Arun Isaac
The output directory is usually a randomly named temporary directory. Logging it is leaking an implementation detail. * tissue/web/static.scm (build-website): Do not log output directory name.
2022-07-13document: Tolerate unbound slots when serializing.Arun Isaac
* tissue/document.scm (object->scm): Drop unbound slots, do not raise an error.
2022-07-13document: Remove unnecessary import of (rnrs hashtables).Arun Isaac
* tissue/document.scm: Do not import (rnrs hashtables).
2022-07-13issue: Move <issue> posts slot into <file-document>.Arun Isaac
We move the posts slot of <issue> into the <file-document> parent class as a commits slot. We also no longer store the creator, created-date, last-updater, last-updated-date of <issue> in slots. Rather, we compute them on-demand from the commits slot. * tissue/file-document.scm: Import (rnrs hashtables), (srfi srfi-1), (srfi srfi-26), (git), (tissue commit) and (tissue person). (<file-document>)[commits]: New slot. (file-document-creator, file-document-created-date, file-document-last-updater, file-document-last-updated-date): New public functions. (read-gemtext-document): Initialize commits slot. * tissue/issue.scm (file-modification-table-for-current-repository): Move to (tissue file-document). (<issue>)[creator, created-date, last-updater, last-updated-date, posts]: Delete slots. (<post>): Delete class. (document-term-generator, print, print-issue-to-gemtext, document->sxml): Use file-document-creator, file-document-created-date, file-document-last-updater, file-document-last-updated-date and file-document-commits instead of issue-creator, issue-created-date, issue-last-updater, issue-last-updated-date and issue-posts. (read-gemtext-issue): Use read-gemtext-document. Do not initialize creator, created-date, last-updater and last-updated-date slots.
2022-07-13file-document: Fix typo in read-gemtext-document docstring.Arun Isaac
* tissue/file-document.scm (read-gemtext-document): Fix typo reade with read in docstring.
2022-07-13document: Move <file-document> code to a new (tissue file-document).Arun Isaac
* tissue/document.scm: Do not import (srfi srfi-171). (<file-document>, document-type, document-id-term, document-text, document-term-generator, print, document->sxml, read-gemtext-document): Move to (tissue file-document). (document-id-term, document-text, print, document->sxml): Declare as generic functions. * tissue/file-document.scm: New file. * tissue/issue.scm, bin/tissue: Import (tissue file-document).
2022-07-11issues: Implement incremental search.Arun Isaac
* issues/incremental-search.gmi: New file.
2022-07-11issues: Implement search suggestions.Arun Isaac
* issues/search-suggestions.gmi: New file.
2022-07-11issues: Sort by date.Arun Isaac
* issues/sort-by-date.gmi: New file.
2022-07-11web: server: Summarize number of results by type.Arun Isaac
* tissue/web/server.scm (%css)[.search-results-statistics, .search-results-statistics li, .search-results-statistics a, .current-search-type]: New rules. * tissue/web/server.scm (make-search-page): Summarize number of results by type. (query-string, matches): New functions. (handler): Pass the number of matches by type to make-search-page. * issues/add-links-to-filter-documents-by-type.gmi: Close issue.
2022-07-11search: By default, search all documents not just issues.Arun Isaac
* tissue/search.scm (parse-query): By default, search all documents not just issues.
2022-07-09commit: Index commit messages too.Arun Isaac
* tissue/commit.scm: New file. * tissue/web/server.scm (%css)[.search-result-commit]: Add COMMIT marker. * bin/tissue: Import (tissue commit). * tissue.scm (#:indexed-documents): Add commits. * issues/index-commit-messages.gmi: Close issue.
2022-07-09bin: Move indexing document type into document-term-generator.Arun Isaac
* bin/tissue (index): Move indexing document type into document-term-generator generic function. * tissue/document.scm (document-term-generator): Index document type.
2022-07-09git: Use commit author date, not committer date.Arun Isaac
* tissue/git.scm (commit-author-date): New public function. (commit-date): Delete function. * tissue/issue.scm (read-gemtext-issue): Use commit-author-date instead of commit-date.
2022-07-09document: Make snippet source text extraction a generic function.Arun Isaac
* tissue/document.scm (document-snippet-source-text): New generic method. (document-html-snippet): Use document-snippet-source-text.
2022-07-09document: Prefix ID term with document type.Arun Isaac
We need to prefix the ID term in order to distinguish between future document types (such as the commit document type) that may not be based off a file. * tissue/document.scm (document-id-term): Prefix ID term with "file." indicating the document type.
2022-07-09issue: Move person related functions to (tissue person).Arun Isaac
* bin/tissue: Import (tissue person). * tissue/issue.scm: Import (tissue person). (%aliases, resolve-alias, index-person!): Move to (tissue person). * tissue/person.scm: New file.
2022-07-09document: Generalize document-type method of <document> parent class.Arun Isaac
* tissue/document.scm (document-type): Generalize generic method of <document> to apply to most child classes. Pass on generic method of <file-document> to that of <document>. * tissue/issue.scm (document-type): Remove generic method for <issue> class.
2022-07-09bin: Rename run-web subcommand to web.Arun Isaac
* bin/tissue (tissue-run-web): Rename to tissue-web, and update synopsis in usage summary. (print-usage, main): Rename run-web to web.
2022-07-09bin: Deprecate tissue web subcommand.Arun Isaac
* bin/tissue (tissue-web): Delete function. (print-usage): Unlist web subcommand. (main): Do not call tissue-web.
2022-07-09issue: Hyphenate tag in search query if it has spaces.Arun Isaac
* tissue/issue.scm (document->sxml): Hyphenate tag in search query if it has spaces.
2022-07-09bin: Make indexed documents a list of document objects.Arun Isaac
This simplifies the interface obviating the need for an <indexed-document> type. * bin/tissue: Do not import (srfi srfi-9). (<indexed-document>): Delete type. (index): Expect indexed documents to be a list of document objects. * tissue.scm (#:indexed-documents): Pass in a list of document objects, instead of a list of <indexed-document> objects.
2022-07-09Makefile: Run tests using a for loop.Arun Isaac
If guile is passed all test files at once, it only runs the first one. * Makefile (check): Run tests using a for loop.