Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
430 commits
Select commit Hold shift + click to select a range
5d4956c
let a module answer a method of its own
kakushi-w Sep 2, 2026
29b668b
answer the search module's own query
kakushi-w Sep 2, 2026
f824900
let a search be narrowed to one category
kakushi-w Sep 2, 2026
c33c405
cut the search excerpt down to the words around the match
kakushi-w Sep 2, 2026
60f4020
drop the search page
kakushi-w Sep 2, 2026
8947381
add the queries a vote writes
kakushi-w Sep 2, 2026
53259c2
check the token before a module writes
kakushi-w Sep 2, 2026
0ffbc77
answer the rating calls the page makes
kakushi-w Sep 2, 2026
8075198
add the queries the article api reads and the log entry it writes
kakushi-w Sep 2, 2026
17c4ffd
give a vote with no group its two empty fields
kakushi-w Sep 2, 2026
c55f549
answer the article api's reads and the vote reset
kakushi-w Sep 2, 2026
826a7b4
give the site a system page theme
kakushi-w Sep 3, 2026
ba90986
show the system theme in the backend
kakushi-w Sep 3, 2026
79f7425
load the system theme on system pages
kakushi-w Sep 3, 2026
3298652
link the avatar to the profile
kakushi-w Sep 3, 2026
4284430
point the nav at the profile form
kakushi-w Sep 3, 2026
e8f2076
drop the profile route
kakushi-w Sep 3, 2026
3ec4d8d
delete the profile page
kakushi-w Sep 3, 2026
4727eb0
drop what the deleted page left behind
kakushi-w Sep 3, 2026
de9bfde
read the csrf token from multipart
kakushi-w Sep 3, 2026
059e53b
let a pager take its own links
kakushi-w Sep 3, 2026
4f1371e
export the hidden categories
kakushi-w Sep 3, 2026
85a76ee
add the changelog package
kakushi-w Sep 3, 2026
304990f
read the change flags and comment through it
kakushi-w Sep 3, 2026
ce68562
read the system theme id
kakushi-w Sep 3, 2026
46f0a27
add the profile update
kakushi-w Sep 3, 2026
ddf168f
add the user post queries
kakushi-w Sep 3, 2026
e7f9e0f
resolve a theme by id
kakushi-w Sep 3, 2026
c493498
resolve a same-site include
kakushi-w Sep 3, 2026
4e7302f
pass the site slug to ftml
kakushi-w Sep 3, 2026
548a0c1
answer the profile and its form
kakushi-w Sep 3, 2026
b28d7dd
style the profile pages
kakushi-w Sep 3, 2026
4db1687
add the profile strings
kakushi-w Sep 3, 2026
86df7f2
answer the profile's history and its roles
kakushi-w Sep 3, 2026
6015283
answer the profile form
kakushi-w Sep 3, 2026
291de95
test the profile helpers
kakushi-w Sep 3, 2026
bba3b22
route the profile form
kakushi-w Sep 3, 2026
f965a19
test the profile views
kakushi-w Sep 3, 2026
9f4a15b
exempt the profile pages and probe the login redirect
kakushi-w Sep 3, 2026
3630ba0
put the system theme next to the site theme
kakushi-w Sep 3, 2026
b0c19f5
add the statement that writes an article version
kakushi-w Sep 3, 2026
d295403
add the statement that replaces an article's links
kakushi-w Sep 3, 2026
7cea2b5
keep an include apart from a link when collecting backlinks
kakushi-w Sep 3, 2026
233a4cf
add the words the article api refuses with
kakushi-w Sep 3, 2026
bd5146c
add the statements a new page needs
kakushi-w Sep 3, 2026
b14c0b6
answer the call that creates a page
kakushi-w Sep 3, 2026
d45f188
let an ordered sequence of statements be registered
kakushi-w Sep 3, 2026
a65d0f2
add the statements a tag change needs
kakushi-w Sep 3, 2026
c0378dc
add the statements an edit needs
kakushi-w Sep 3, 2026
562f7bc
delete every row that points at a page
kakushi-w Sep 3, 2026
7932d6e
read the tag setting off a category
kakushi-w Sep 3, 2026
386d2a7
add the statements the search index needs
kakushi-w Sep 3, 2026
44a296a
reach the user json without a module
kakushi-w Sep 3, 2026
918bae6
hand the files root to the article api
kakushi-w Sep 3, 2026
8a27762
share the render environment the api builds
kakushi-w Sep 3, 2026
39a3271
answer the call that edits a page
kakushi-w Sep 3, 2026
4bebdd6
answer the call that deletes a page
kakushi-w Sep 3, 2026
f6bceff
route what a page's own path writes
kakushi-w Sep 3, 2026
80e944a
answer the call that reads a page's history
kakushi-w Sep 3, 2026
f4930ef
answer the call that reverts a page to a revision
kakushi-w Sep 3, 2026
0ef6dd6
share the media name escaping with the write side
kakushi-w Sep 4, 2026
694e68f
add the statements the file api needs
kakushi-w Sep 4, 2026
feb9b01
answer the call that reads a page
kakushi-w Sep 4, 2026
31f3bb1
answer the calls that read and write a page's files
kakushi-w Sep 4, 2026
2b1cc69
grey the highlight on a thread starter's post
kakushi-w Sep 4, 2026
2ef01ed
give a forum post the id hooks a wikidot theme reaches for
kakushi-w Sep 4, 2026
132d10a
give the post options the button classes a wikidot theme reaches for
kakushi-w Sep 4, 2026
2c9c586
hand back the log entry a write leaves behind
kakushi-w Sep 4, 2026
994bcbe
add the statements a notification needs
kakushi-w Sep 4, 2026
9f72fa8
tell subscribers and the action log what a save did
kakushi-w Sep 4, 2026
8248c81
add the statements a forum post needs
kakushi-w Sep 4, 2026
b7ca7ee
answer the calls that read a forum post
kakushi-w Sep 4, 2026
2ac7903
answer the calls that write a forum post
kakushi-w Sep 4, 2026
77263b8
add the statements a tag listing needs
kakushi-w Sep 5, 2026
fa30f85
answer the last calls a module still forwarded
kakushi-w Sep 5, 2026
ba9472d
fix forum css
kakushi-w Sep 5, 2026
a31044a
remove comment rating badge
kakushi-w Sep 5, 2026
45f14f8
add like and favourite tables
kakushi-w Sep 5, 2026
3dda7a2
add the statements a post like needs
kakushi-w Sep 5, 2026
8a4c6d2
answer the calls that like a post
kakushi-w Sep 5, 2026
dcab2f1
put a thumb on every forum post
kakushi-w Sep 5, 2026
65a3360
add the statements a favourite needs
kakushi-w Sep 5, 2026
2ea4286
answer the calls that favourite a page
kakushi-w Sep 5, 2026
37ad16a
show the favourite count in the page options
kakushi-w Sep 5, 2026
d11d3f5
answer the notification calls
kakushi-w Sep 5, 2026
83cdfcf
filter and clear notifications on the page
kakushi-w Sep 5, 2026
6a688ce
render the reactive shell from go
kakushi-w Sep 5, 2026
2747d79
add the statements the own-rows pages need
kakushi-w Sep 5, 2026
5314a1e
answer the calls behind the own-rows pages
kakushi-w Sep 5, 2026
0d75d36
add the pages a reader keeps their own rows on
kakushi-w Sep 5, 2026
caa386e
route the new endpoints
kakushi-w Sep 5, 2026
6aeb6ce
square the search corners
kakushi-w Sep 5, 2026
a0d591e
refresh the page count golden
kakushi-w Sep 5, 2026
2a5d49d
fix favourite button's hovertip
kakushi-w Sep 5, 2026
df34e17
add the statements a private message needs
kakushi-w Sep 5, 2026
511c002
add the queries a user lookup needs
kakushi-w Sep 5, 2026
c4a2c88
add the statements an account is created with
kakushi-w Sep 5, 2026
8d08bbf
add the queries a whole-site listing needs
kakushi-w Sep 5, 2026
e91b6d0
add the statements a subscription needs
kakushi-w Sep 5, 2026
476aff3
issue the csrf cookie in one place
kakushi-w Sep 5, 2026
13d057e
let a bot sign its own requests
kakushi-w Sep 5, 2026
ae56c5c
port the token behind a one-time link
kakushi-w Sep 5, 2026
68e2ec2
check a password the way the site already does
kakushi-w Sep 5, 2026
5928221
fold and check a display name
kakushi-w Sep 5, 2026
a7d9574
send the site's own mail
kakushi-w Sep 5, 2026
7d2e8bc
add the text the new pages show
kakushi-w Sep 5, 2026
1d95b07
render the pages an account is made on
kakushi-w Sep 5, 2026
6acb966
sign visitors in and out
kakushi-w Sep 5, 2026
c7a1663
take a new account and claim a wikidot one
kakushi-w Sep 5, 2026
4c658a8
accept an invitation
kakushi-w Sep 5, 2026
7e37a8b
reset a forgotten password
kakushi-w Sep 5, 2026
821ff30
take a ticket and a membership password
kakushi-w Sep 5, 2026
f5eba32
answer the calls a mailbox makes
kakushi-w Sep 5, 2026
02aff1b
answer the calls that read a reported conversation
kakushi-w Sep 5, 2026
63a6936
answer the calls that name a user
kakushi-w Sep 5, 2026
95f4d4b
answer the calls that subscribe to a page
kakushi-w Sep 5, 2026
bcd87f0
list every article on the site
kakushi-w Sep 5, 2026
81920e1
put the editor preference on the profile form
kakushi-w Sep 5, 2026
938a508
give the notification and message pages their shell
kakushi-w Sep 5, 2026
01cf6b6
route the new endpoints
kakushi-w Sep 5, 2026
fc6786e
widen the language scrubber and exempt the listing
kakushi-w Sep 5, 2026
1fd9acd
add a site setting for the password help text
kakushi-w Sep 5, 2026
f3b2cc5
give the password reset pages the auth layout and a help page
kakushi-w Sep 5, 2026
883ada2
add the columns an email binding needs
kakushi-w Sep 5, 2026
9e9e6ec
add the statements an email binding needs
kakushi-w Sep 5, 2026
c0c94fc
dial a mail host that wants tls first
kakushi-w Sep 5, 2026
f559ae6
bind a one-time link to whatever the caller lists
kakushi-w Sep 5, 2026
16e22f2
take write rights from an account the site is waiting on
kakushi-w Sep 5, 2026
cd22e47
render the pages an email binding needs
kakushi-w Sep 5, 2026
47db7ca
verify, rebind and revert an email
kakushi-w Sep 5, 2026
615c8d5
put the account settings on the profile page
kakushi-w Sep 5, 2026
99fa10e
route the account settings pages
kakushi-w Sep 5, 2026
f1934eb
serve tls from the entry layer
kakushi-w Sep 6, 2026
5d3db59
add the schema baseline and migrator
kakushi-w Sep 6, 2026
1d8e422
put the reference data in the baseline
kakushi-w Sep 6, 2026
a59dcdc
create and seed a site
kakushi-w Sep 6, 2026
3f4e3f3
snapshot the test database
kakushi-w Sep 6, 2026
8972b0d
add the admin permissions
kakushi-w Sep 6, 2026
60148cd
add the queries the admin needs
kakushi-w Sep 6, 2026
b93d8ae
write the admin in go
kakushi-w Sep 6, 2026
ab1e02d
unblock the article corpus
kakushi-w Sep 6, 2026
2535746
send the admin through the site sign-in
kakushi-w Sep 6, 2026
658bf2b
apply migrations on start
kakushi-w Sep 6, 2026
547969f
hand the signed-in user to an in-process call
kakushi-w Sep 6, 2026
4d00a2b
add the tables and queries the admin needs
kakushi-w Sep 6, 2026
a02adeb
let a system page carry its own stylesheet
kakushi-w Sep 6, 2026
53f845c
rebuild the admin
kakushi-w Sep 7, 2026
35448c0
add strings for the user activity screen
kakushi-w Sep 7, 2026
d2420a2
add the user activity screen
kakushi-w Sep 7, 2026
9744985
link the activity screen from the user form
kakushi-w Sep 7, 2026
d078798
test the user activity screen
kakushi-w Sep 7, 2026
12077d0
add the corpus snapshot format
kakushi-w Sep 7, 2026
c08c13c
replay the corpus against its snapshots
kakushi-w Sep 7, 2026
71ffac6
record the corpus snapshots
kakushi-w Sep 7, 2026
d89d22b
fix the migrate help line
kakushi-w Sep 7, 2026
551f946
answer 404 instead of forwarding
kakushi-w Sep 7, 2026
54e303f
delete the forward proxy
kakushi-w Sep 7, 2026
2d8075c
drop the route ownership table
kakushi-w Sep 7, 2026
79252a4
rename the fallthrough handler
kakushi-w Sep 7, 2026
7e3dee0
record what forum html turns into
kakushi-w Sep 7, 2026
961f104
add the site column to every per-site table
kakushi-w Sep 7, 2026
b61d413
fail when a query forgets the site
kakushi-w Sep 7, 2026
175264f
read roles for one site only
kakushi-w Sep 7, 2026
3abae17
give a new site its built-in roles
kakushi-w Sep 7, 2026
0ffc210
let one database hold more than one site
kakushi-w Sep 7, 2026
559b097
look pages up inside one site
kakushi-w Sep 7, 2026
aa9c138
read categories and tags inside one site
kakushi-w Sep 7, 2026
26a21d0
list forum sections and comment threads per site
kakushi-w Sep 7, 2026
5bf6a74
scope the remaining queries to a site
kakushi-w Sep 7, 2026
702cf8c
include a page from another site
kakushi-w Sep 8, 2026
c68eea5
check a site owns the admin row it is asked for
kakushi-w Sep 8, 2026
d02897c
give each site its own theme directory
kakushi-w Sep 8, 2026
f4f545d
check the site owns an id that came from a url
kakushi-w Sep 8, 2026
6073e8b
drop only this site's links when a page goes
kakushi-w Sep 8, 2026
e4508ef
test that a cross-site reference is filed against that site
kakushi-w Sep 8, 2026
8c1227e
give the repository tests a site
kakushi-w Sep 8, 2026
9fee5dd
import the pages of a wikitcli backup
kakushi-w Sep 8, 2026
d587354
pass the site when a forum category is saved
kakushi-w Sep 8, 2026
af03525
turn the forum html of a backup back into wikitext
kakushi-w Sep 8, 2026
01b877d
import the attachments and the forum of a backup
kakushi-w Sep 8, 2026
027a95b
move the frontend sources to frontend/
kakushi-w Sep 8, 2026
4ffc724
remove the django app, project and manage.py
kakushi-w Sep 8, 2026
4c24d0c
remove the python modules and renderer
kakushi-w Sep 8, 2026
a0f095a
remove the django image and its compose service
kakushi-w Sep 8, 2026
8ae0e3f
remove the shared data workers
kakushi-w Sep 8, 2026
1bc1f50
remove the docker socket updater
kakushi-w Sep 8, 2026
506171d
tidy the ignore list
kakushi-w Sep 8, 2026
337a245
remove the snapshot corpus and the differential runner
kakushi-w Sep 8, 2026
2f3c3f8
remove the scripts the goldens were recorded with
kakushi-w Sep 8, 2026
bcad8bd
remove the javascript of the update notifier
kakushi-w Sep 8, 2026
9a9c5bc
remove the container and environment files
kakushi-w Sep 8, 2026
917ce2d
remove the python bindings of the renderer
kakushi-w Sep 8, 2026
332d9f0
negotiate the language of a request
kakushi-w Sep 8, 2026
0d1a941
let a site and a member choose a language
kakushi-w Sep 8, 2026
1f72a59
tell the browser which language the page is in
kakushi-w Sep 8, 2026
9ba30d6
document FTML-WIKIT fork
kakushi-w Sep 8, 2026
17c2c10
update readme
kakushi-w Sep 8, 2026
f6096cd
update readme
kakushi-w Sep 8, 2026
5a5e2f4
answer the right site for a host whatever its case or spelling
kakushi-w Sep 9, 2026
d931df4
explain a host that names no site here
kakushi-w Sep 9, 2026
b30e509
manage sites and administrators from the command line
kakushi-w Sep 9, 2026
557ecc1
keep chosen pages, tags and categories out of the search
kakushi-w Sep 9, 2026
81ebbbd
replay migrations inside a caller's transaction
kakushi-w Sep 10, 2026
520f6f8
back up and restore an instance or a single site
kakushi-w Sep 10, 2026
67e2319
read every timestamp from the database in utc
kakushi-w Sep 11, 2026
919a68e
carry postgresql inside the binary
kakushi-w Sep 11, 2026
f1674ff
keep the secrets pwikit makes for itself
kakushi-w Sep 11, 2026
21375f2
start and stop the bundled postgresql
kakushi-w Sep 11, 2026
73aacf7
register pwikit to start at boot
kakushi-w Sep 11, 2026
de14401
rotate the log pwikit writes itself
kakushi-w Sep 11, 2026
19a726c
read the settings people write into pwikit.toml
kakushi-w Sep 11, 2026
f7a1417
give each site a time zone and start the bundled postgresql from the …
kakushi-w Sep 11, 2026
92c3d36
put the page info inside the page options as wikidot does
kakushi-w Sep 11, 2026
1611ba3
keep admin writes on their own site
kakushi-w Sep 11, 2026
8b2ad61
send resets to verified addresses with links in the visitor's scheme
kakushi-w Sep 11, 2026
2a4b8c3
let restore treat a freshly migrated database as empty
kakushi-w Sep 11, 2026
5d31f39
make listpages dates, order, exact tags and skipcurrent do what they say
kakushi-w Sep 11, 2026
9431491
stop reading the word else as [[else]]
kakushi-w Sep 11, 2026
9336484
drop the seeded syntax guide
kakushi-w Sep 11, 2026
839509e
carry the page assets inside a bundle build
kakushi-w Sep 11, 2026
13c88a6
record the zone label in the forum and site changes goldens
kakushi-w Sep 11, 2026
0d0bb39
render math formulas and equation references
kakushi-w Sep 11, 2026
e0eac53
bound script variables and expressions and keep them and math out of …
kakushi-w Sep 11, 2026
cf395a1
apply the migrations before createsite writes the site
kakushi-w Sep 11, 2026
a210c36
index every page of a site from the command line
kakushi-w Sep 12, 2026
dd4f0b7
reset the votes a member cast on this site only
kakushi-w Sep 12, 2026
737b6c9
refuse a database that stopped before the baseline was taken
kakushi-w Sep 12, 2026
159da60
refuse data urls as link targets
kakushi-w Sep 12, 2026
a887da8
wait for the migration connection to close before checking for others
kakushi-w Sep 12, 2026
1543148
make an explicit deny win across roles
kakushi-w Sep 12, 2026
e44d3b4
name the content settings instead of following the site
kakushi-w Sep 12, 2026
de2dd58
let a site sanction its own members
kakushi-w Sep 12, 2026
48c1864
read the unpacked wikidot backup instead of an archive file
kakushi-w Sep 12, 2026
dcc5cb2
wait for the migration connection to close in the restore test too
kakushi-w Sep 12, 2026
efd031f
put the pwikit command on the path when the service is installed
kakushi-w Sep 13, 2026
cf4ec64
lay out the data directory when a site is created
kakushi-w Sep 13, 2026
cfe8cdc
refuse imports without accounts
kakushi-w Sep 14, 2026
1e07ac1
add version command
kakushi-w Sep 14, 2026
5b2948c
declare migration compatibility
kakushi-w Sep 14, 2026
abc0fd0
add auto update with rollback
kakushi-w Sep 14, 2026
ba6d33f
add install scripts
kakushi-w Sep 14, 2026
bcf2b6d
add docker image
kakushi-w Sep 14, 2026
decc3a3
build ci for release
kakushi-w Sep 14, 2026
2e64442
run ci only on PR
kakushi-w Sep 14, 2026
94b9350
fix theme param expansion and noinclude strip
kakushi-w Sep 14, 2026
e46cf72
treat an empty database as having no site
kakushi-w Sep 14, 2026
4f2c8c9
add import command
kakushi-w Sep 14, 2026
798bec8
remove leftovers
kakushi-w Sep 14, 2026
8edb754
Merge remote-tracking branch 'origin/main' into go-rewrite
kakushi-w Sep 14, 2026
7ab3387
drop old entries from gitignore
kakushi-w Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
39 changes: 18 additions & 21 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
**/node_modules
static_dist
.env
.idea
.git
.github
docs
dist
frontend/node_modules
ftml-capi/target
ftml/target
internal/pgbundle/archive
files
db.sqlite3
postgresql
archive
*.env
*.sh
*.cmd
*.bat
static/app.js
static/app.js.map
static/system.js
static/system.js.map
static/highlight.js.css
ftml/target
ftml/pkg
ftml/*.pyd
ftml/*.so
venv
!entrypoint.sh
pgdata
postgres
secrets
backups
logs
update
pwikit
pwikit.exe
pwikit.toml
postgres.lock
docker-compose.override.yaml
35 changes: 0 additions & 35 deletions .env.example

This file was deleted.

3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.golden -text
*.go text eol=lf
internal/htmlsource/testdata/cases.html -text
38 changes: 38 additions & 0 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Frontend

on:
pull_request:
branches: [main]
paths:
- "frontend/**"
- "static/**"
- ".github/workflows/frontend.yml"

permissions:
contents: read

concurrency:
group: frontend-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: text, types and bundle
runs-on: ubuntu-24.04
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
cache-dependency-path: frontend/yarn.lock

- name: Install
run: yarn install --frozen-lockfile

- name: Check text, types and bundle
run: yarn build
89 changes: 89 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Go

on:
pull_request:
branches: [main]
paths:
- "**.go"
- "go.mod"
- "go.sum"
- "internal/migrate/sql/**"
- "internal/i18n/locales/**"
- "internal/**/templates/**"
- "ftml/**"
- "ftml-capi/**"
- ".github/workflows/go.yml"

permissions:
contents: read

concurrency:
group: go-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
name: format and vet
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Check formatting
run: |
unformatted=$(gofmt -l cmd internal tools static)
if [ -n "$unformatted" ]; then
echo "These files need gofmt:"
echo "$unformatted"
exit 1
fi

- name: Vet
run: go vet -tags nocgo ./...

migrations:
name: migration declarations
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Every migration declares whether older releases can run on it
run: go test -tags nocgo -run TestEveryMigrationDeclaresCompatibility ./internal/migrate

test:
name: build and test
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- uses: dtolnay/rust-toolchain@stable

- uses: Swatinem/rust-cache@v2
with:
workspaces: ftml-capi

- name: Build the ftml library
working-directory: ftml-capi
run: cargo build --release

- name: Build
run: |
go build ./...
go build -tags nocgo ./...

- name: Vet with cgo
run: go vet ./...

- name: Test
run: go test -p 1 ./...
Loading
Loading