diff options
| author | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
| commit | 4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch) | |
| tree | c296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /COPLAND.org | |
| download | relic-master.tar.gz | |
Diffstat (limited to 'COPLAND.org')
| -rw-r--r-- | COPLAND.org | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/COPLAND.org b/COPLAND.org new file mode 100644 index 0000000..c6b1180 --- /dev/null +++ b/COPLAND.org @@ -0,0 +1,141 @@ +#+title: Copland Fossil + +Copland is a Fossil SCM fork with a compact built-in skin and native, safe +Org rendering for repository documentation and wiki pages. + +* Fork layout + +This directory is a checkout of the official Fossil repository. The fork is +developed on the =copland= branch from upstream commit =7a40eb9748=. The local +repository database is intentionally kept inside the ignored workspace path +=.repository/copland.fossil=; no project repository is stored elsewhere in the +user's home directory. + +The official remote is retained as the named remote =upstream= while the +default remote is disabled. To inspect the configuration: + +#+begin_src sh +fossil status +fossil remote list +#+end_src + +Upstream updates are pulled explicitly and merged into =copland= only after +review. No upstream submission or publishing remote is configured. + +* Development shell and build + +#+begin_src sh +nix-shell +make fossil +#+end_src + +The npins-backed shell provides Fossil's C dependencies, Tcl, OpenSSL, zlib, +Node.js, and Playwright browsers. It prepends =$PWD/.build/fossil= to =PATH= +and sets =FOSSIL=fossil=. It does not overwrite an installed system binary: +inside the shell =command -v fossil= resolves to the local build after +=make fossil=; outside the shell the system selection is unchanged. + +The binary is built directly from the current checkout as +=.build/fossil/fossil=. There is no downloaded source tarball and no patch +application step. + +* Copland skin + +Copland lives in =skins/copland/= and is compiled into the binary. It is the +fallback skin for repositories without an explicit skin configuration. +Repository-specific custom skins and explicit =--skin= arguments still win, +and Fossil's original skin remains available as =--skin default=. + +The editable SCSS, standalone skin export, demo scripts, and browser tests are +under =tools/copland/=. Rebuild the generated CSS and export with: + +#+begin_src sh +make build +#+end_src + +Start the local repository-list preview with: + +#+begin_src sh +make start +#+end_src + +The migrated Nix documentation is available at +=http://127.0.0.1:8080/nix/wiki=. The preview exposes the local Copland +repository under the =nix= URL slug and always uses the built-in Copland skin. + +* Nix packages + +All external Nix inputs come from =npins/=. Build the Copland Fossil fork, +including its built-in default skin, with: + +#+begin_src sh +nix-build -A packages.default +#+end_src + +The resulting binary is =result/bin/fossil=. A standalone theme package is +available separately: + +#+begin_src sh +nix-build -A packages.theme +#+end_src + +It installs the individual skin files and the combined Fossil skin +configuration below =share/fossil/skins/copland/=. The development shell reuses +the fork package's native and linked build dependencies through =inputsFrom=. + +For a single, self-contained Linux binary that can be copied to another +machine without a Nix installation or Nix store dependencies, build the static +package: + +#+begin_src sh +nix-build -A packages.fossil-static -o result-static +cp result-static/bin/fossil ./fossil +#+end_src + +The target machine must use the same CPU architecture as the build machine. +The Copland files are embedded in this executable and Copland is selected for +repositories which do not explicitly configure another skin. Existing custom +skins, =default-skin= settings, and explicit =--skin= options remain respected. + +* Native Org support + +=text/x-org= is supported for =README.org=, =/doc=, =/file=, document search, +and Fossil wiki pages. New wiki pages use Org by default; existing pages keep +their stored Fossil-Wiki, Markdown, Org, or plain-text MIME type. + +The wiki page name is its visible and searchable title. A =#+TITLE= directive +inside an Org wiki page is recognized but not rendered as a duplicate heading. +Metadata, linked =toc:N= tables of contents, headings, paragraphs, nested lists, +tables, source/example blocks, inline emphasis, and safe links are supported. + +Wiki and repository links are explicit: + +#+begin_example +[[wiki:Deployment Guide][Deployment]] +[[wiki:Deployment Guide#Install][Installation]] +[[file:docs/deployment.org][Versioned repository document]] +[[*Local heading][This page's section]] +#+end_example + +In a wiki page, =file:= paths are rooted at =/doc/tip/= and reject absolute or +parent-traversal paths. In repository documents they remain relative to the +current document. HTTP(S) links are allowed. JavaScript schemes, raw HTML, +Babel, dynamic blocks, and external runtimes are never executed. + +Org is deliberately not offered for technotes, forum posts, tickets, or report +fields in this phase. + +* Tests + +#+begin_src sh +make test +make test-upstream +#+end_src + +=make test= runs Org golden/security checks and Copland HTTP, accessibility, +desktop, mobile, light, and dark browser tests. =make test-upstream= runs the +complete Fossil Tcl suite, including the added Org wiki cases. + +The imported =/home/cashmere/nix= repository and its documentation are not +modified by this fork work. Moving those documents into independently +versioned Org wiki pages is a separate, explicitly reviewed migration. |
