Age | Commit message (Collapse) | Author |
|
To the development server, pass a thunk to read project configuration
instead of the project configuration itself. This allows us to hack on
the project's tissue.scm without having to restart the development
server to see changes.
* bin/tissue (tissue-web-dev): Pass thunk to read project
configuration instead of the project configuration itself.
* tissue/web/dev.scm (handler, start-dev-web-server): Accept thunk to
read project configuration instead of the project configuration
itself.
|
|
We factor out all display related code to a theming module, and
support powerful user customization of the theme thanks to generic
functions.
* tissue/commit.scm (document->sxml): Move to (tissue web themes
default).
* tissue/document.scm (document->sxml): Move to (tissue web themes
default).
* tissue/file-document.scm (document->sxml): Move to (tissue web
themes default).
* tissue/issue.scm (sanitize-string, document->sxml): Move to (tissue
web themes default).
* tissue/tissue.scm: Import (tissue web themes default).
(<tissue-configuration>)[web-search-renderer]: New field.
(tissue-configuration-web-search-renderer): New function.
(tissue-configuration): Accept web-search-renderer argument.
* tissue/web/server.scm: Import (oop goops) and (tissue web
themes). Do not import (tissue document).
(%css, make-search-page, search-handler): Move to (tissue web themes
default).
* tissue/web/themes.scm, tissue/web/themes/default.scm: New files.
* Makefile (sources): Add $(top_level_module_dir)/web/themes/*.scm.
|
|
Themes should be free to access the entirety of the project
configuration. It is impossible to predict which parts of the project
configuration they will need.
* bin/tissue (tissue-web, tissue-web-dev): Pass entire configuration
object to start-web-server and start-dev-web-server respectively.
* tissue/web/dev.scm: Import (tissue tissue).
(handler, start-dev-web-server): Accept entire configuration object.
* tissue/web/server.scm: Import (tissue tissue).
(search-handler, start-web-server): Accept entire configuration
object.
|
|
* tissue/web/server.scm (query-parameters, query-string): Move to ...
* tissue/utils.scm: ... here. Import (ice-9 match) and (web uri).
|
|
* bin/tissue: Import (tissue web dev).
(tissue-web-dev): Run the new development web server.
(main): Remove web-build command.
(print-usage): Delist deprecated web-build command. Update synopsis of
web-dev command.
(tissue-web-build): Delete function.
|
|
* tissue/web/dev.scm: New file.
|
|
The newly factored out functions will be used in the upcoming
development web server.
* tissue/web/server.scm (handler): Factor out reusable parts into ...
(log-request, mime-type-for-extension, 404-response, search-handler,
try-paths): ... new functions.
|
|
* tissue/web/server.scm (handler): Do not prepend / to URI path.
|
|
* tissue/web/server.scm (handler): Serve path/index.html if path ends
in /.
|
|
* tissue/tissue.scm (tissue-configuration): Document
#:indexed-documents as a list of <document> objects, not a list of
<indexed-document> objects.
|
|
* doc/skribilo.scm, doc/tissue.skb: New files.
* tissue.scm (#:web-files): Add manual/dev/en/index.html.
|
|
* tissue/tissue.scm (define-lazy): New macro.
(tissue-configuration): Define using define-lazy.
(pairify): Delete function.
(<tissue-configuration>[tissue-configuration-project,
tissue-configuration-aliases, tissue-configuration-web-css]: Force
values in getters.
|
|
* tissue/document.scm (slot-set): Markup docstring in texinfo syntax.
* tissue/file-document.scm (read-gemtext-document): Markup docstring
in texinfo syntax.
* tissue/git.scm (git-tracked-files): Markup docstring in texinfo
syntax.
* tissue/issue.scm (read-gemtext-issue): Markup docstring in texinfo
syntax.
* tissue/tissue.scm (gemtext-files-in-directory): Markup docstring in
texinfo syntax.
* tissue/web/static.scm (exporter, copier, gemtext-exporter,
skribe-exporter): Markup docstrings in texinfo syntax.
|
|
* guix.scm: Import autoconf and automake from (gnu packages
autotools). Import gnu-gettext from (gnu packages gettext). Import
guile-3.0 and guile-git from (gnu packages guile). Import
guile-filesystem and guile-xapian from (gnu packages
guile-xyz). Import (gnu packages skribilo) with a guix: prefix.
(skribilo-latest): New variable.
(tissue)[inputs]: Add guile-3.0, guile-filesystem, guile-git and
guile-xapian.
[propagated-inputs]: Add skribilo-latest.
|
|
* guix.scm (tissue)[arguments]: Add patch-source-shebangs script.
|
|
* guix.scm (tissue)[arguments]: Import target-guile-effective-version
from (guix build guile-build-system). Add wrap phase.
|
|
* website/style.css: New file.
* tissue.scm (#:web-files): Copy CSS to website.
(#:web-css): Use it.
|
|
* tissue.scm (#:web-files): Copy IBM Plex fonts.
|
|
This allows us to report fatal user errors and exit.
* bin/tissue (main): Print error message and exit on user-error
conditions.
|
|
* bin/tissue (tissue-web-dev): Raise user error if not given a
website-directory command-line argument.
|
|
* bin/tissue (&user-error-condition): New condition type.
|
|
* bin/tissue (print-usage): Separate development and deployment
subcommands in listing.
|
|
* bin/tissue (tissue-web-dev, print-usage): Clarify in the usage
summary that web-dev serves both the built website and the issues.
|
|
The index is built on all tissue subcommands. There is no need for a
separate subcommand to build the index. Having a separate subcommand
only complicates the command-line interface and confuses the user.
* bin/tissue (tissue-index): Delete function.
(print-usage): Unlist index subcommand.
(main): Do not call tissue-index.
|
|
* tissue/web/server.scm (%css)[.document-type]: Remove text-transform
property. Set font-variant property.
|
|
* tissue/web/server.scm (%css)[.document-type]: Remove font-size,
padding, background-color and color properties.
[.open-issue-document-type]: Remove background-color property.
|
|
* tissue/web/server.scm (%css)[.search-result a]: Remove font-size
property.
|
|
* tissue/web/server.scm (%css)[.search-hint]: Remove line-height
property.
|
|
* bin/tissue (tissue-web-dev): New function.
(print-usage): List the tissue web-dev subcommand.
(main): Call tissue-web-dev.
|
|
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.
|
|
* bin/tissue (start-repl): New function.
(listen-repl-option): New variable.
(tissue-web): Use listen-repl-option. Call start-repl.
|
|
* bin/tissue (tissue-web-build): New function.
* bin/tissue (print-usage): List web-build subcommand.
(main): Invoke tissue-web-build.
|
|
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.
|
|
* tissue/web/server.scm (handler): Add article 'the' in docstring.
|
|
* tissue/utils.scm (call-with-temporary-directory): Allow specifying
directory in which to create temporary directory.
|
|
`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.
|
|
* tissue/git.scm: Import (rnrs exceptions).
(git-tracked-file?): New public function.
|
|
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.
|
|
* 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.
|
|
* tissue/web/server.scm (%css)[.search-filter]: Remove rounded edges.
|
|
* tissue/web/server.scm (%css)[.tag a]: Remove rounded edges and
reduce padding.
|
|
* 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.
|
|
* tissue/web/server.scm (make-search-page): Link to upstream
Xapian::QueryParser syntax documentation.
|
|
* 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.
|
|
* tissue/web/server.scm (matches): Accept parsed search query.
(handler): Parse provided search query only once.
|
|
* 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.
|
|
* tissue/utils.scm (string-contains?): New public function.
|
|
* tissue/issue.scm (document->sxml): Quote tags with spaces instead of
hyphenating them.
|
|
* tissue/search.scm: Import (ice-9 match).
(make-query-parser): New function.
(%prefixes, %boolean-prefixes, query-parser): New variables.
(parse-query): Use query-parser.
|
|
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.
|