Age | Commit message (Collapse) | Author |
|
* tissue/web/server.scm (mime-type-for-extension): Handle files
without extension.
* tests/web/server.scm: New file.
|
|
* tissue/web/dev.scm (handler): Explain why we pass in a project
thunk.
|
|
Now that snippet source texts are interred into the xapian index, the
web server does not need a repository checkout.
* bin/tissue (tissue-web): Do not temporarily checkout repositories
being served.
* tissue/web/server.scm (handler): Do not change into repository
directory.
* tissue/git.scm (call-with-temporary-checkouts): Delete function.
* .dir-locals.el (scheme-mode): Unregister it.
|
|
Files in the repository may be read. So, we must change into a
checkout of the repository when handling requests.
* tissue/web/server.scm (handler): Change to repository directory when
handling requests.
|
|
* tissue/web/server.scm (start-web-server): Clean up socket file when
Unix sockets are used.
|
|
* tissue/web/server.scm (log-request): Log complete request URI, not
just the path.
|
|
* tissue/web/static.scm (build-website): Expect to be at the top level
of the repository to be exported.
* bin/tissue (pull): Create a temporary clone of the repository and
change to it before calling build-website.
|
|
* tissue/web/dev.scm (handler): Allow files to shadow the search page.
* tissue/web/server.scm (handler): Allow files to shadow the search
page.
|
|
The gemtext exporter is just a skribe exporter with different
defaults.
* tissue/web/static.scm (gemtext-exporter): Express in terms of
skribe-exporter.
|
|
* tissue/search.scm (search-fold): Limit to 1000 search results by
default.
* tissue/web/server.scm (search-handler): Limit to 1000 search results
by default.
|
|
Functionally setting generic functions (like add-methods does) doesn't
work since methods can still refer to the old generic function. The
future of generic functions in the theming system is in doubt. It must
be rethought out carefully.
* tissue/web/themes.scm (add-methods): Delete function.
* tissue/web/themes/default.scm (default-theme): Replace add-methods!
with add-method.
|
|
The build process may run code that expects files to be on the
filesystem. Not all of this file accessing code is within tissue's
control. Think arbitrary code in skribilo documents. So, we cannot
always work around this by pointing file accesses into a bare git
repository.
* tissue/web/static.scm: Import (git).
(build-website): Move into temporary clone of git repository before
building files.
(exporter): Use call-with-input-file instead of call-with-file-in-git.
|
|
with-current-directory is the exact same as
call-with-current-directory from (tissue utils).
* tissue/web/static.scm (with-current-directory): Delete function.
(build-website): Replace with-current-directory with
call-with-current-directory.
|
|
The project name is not used anywhere now. If it is required, it
should be passed through the lexical context of closures in the tissue
configuration object.
* tissue/tissue.scm (<tissue-configuration>)[project]: Delete field.
(tissue-configuration-project): Delete function.
(tissue-configuration): Remove project argument.
* tissue.scm (tissue-configuration)[#:project]: Delete parameter.
* tissue/web/static.scm (%project-name): Delete parameter.
* bin/tissue (pull): Do not parameterize %project-name.
|
|
* tissue/web/static.scm (engine-custom-set): New function.
(html-engine): New public function.
(gemtext-exporter, skribe-exporter): Use html-engine in default value
of engine.
|
|
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept
engine keyword argument.
|
|
* tissue/web/static.scm (gemtext-exporter, skribe-exporter): Accept
reader as a keyword argument, instead of as an optional argument.
|
|
Parameters from the project configuration may be needed by the
theme. But, these parameters should not passed as explicit parameters
to the generic function of the theme. Instead, they should be passed
implicitly through the lexical context of the generic methods.
* tissue/web/server.scm (search-handler): Do not pass project to
search renderer.
* tissue/web/themes/default.scm: Do not import (tissue tissue).
(default-theme): New public function.
(make-head-renderer): New function.
(render-sxml): Make private. Remove project parameter from all generic
methods.
* tissue/tissue.scm (tissue-configuration): Set default value of
web-search-renderer to (default-theme) instead of render-sxml.
|
|
* tissue/web/themes.scm: Import (srfi srfi-26).
(add-methods): New function.
|
|
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).
|
|
* 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/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.
|
|
* 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.
|
|
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.
|
|
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.
|
|
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.
|
|
* 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.
|
|
* 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.
|
|
* tissue/web/server.scm (handler): Serve html files even if they don't
have the html extension.
|
|
* tissue/tissue.scm (<tissue-configuration>)[web-tags-path]: Delete
field.
* tissue/tissue.scm (tissue-configuration): Remove web-tags-path
argument.
* tissue/web/static.scm (build-website): Remove tags-path
documentation in docstring.
|
|
* tissue/web/server.scm: Import (srfi srfi-171) and (ice-9
filesystem).
(%mime-types): New variable.
(handler): Serve static files too.
|
|
* tissue/web/server.scm: Import (rnrs conditions) and (rnrs
exceptions).
(handler): Error out on unknown host.
|