#+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.