to count forms:

hash(a) = 1
hash(hash(a)) = 2
hash(hash(hash(a))) = 3

store intermediate values in table
store the number in table when it is used

???

profit

===

what to do about the duplicate items bug?
	options
		remove all -- and --- lines from item when saving new item
			a bit dirty
			existing items will change their hashes
		allow aliasing of hashes when merging items
			needs major changes in db structure?
				maybe not, just alias items together by replying
		make hashing more consistent and duplicate-resistant
			there are several ways where an item is hashed, and they all have to be changed

	challenges





===

"my name is tag" should by default only work on pubkey items
	this will also restrict self-naming to key-based accounts

===

how to request deletion of item by voter+item+vote?
	easy way to undo a vote from client

===

for each client_id, cookie_id, gpg_id:
	find items which have that attribute
		find matching items which have the same file_hash
			create table of pairs
				build consolidated profile page
					which includes all

===

latent trust
	when you rely on the age of the hashes to form a relatively good ability
	to trust the content without being able to verify the entire chain all
	the way back to the first block

===

add one confirmation step to some scripts
	by including a dummy (or different implementation) script e.g. update.pl and update.sh and update.py
        then the user has to think about which interpreter they're about to use

===

if config changes, it should be detected by php shim and appropriate de-caching  place #brainstorm

===

fun ideas
==========
you have used x letters out of the alphabet, here are the ones missing:

=========
surviving the 21st century as a human being
1. pay attention
2. learn quickly
3. avoid zeitgeist/crowds
4. exit funnels by jumping

===

#todo items which have a negative score should not be counted towards their parents' scores?
	this means reweighing constantly or a recursion problem

===

types of muscle memory

===

demo site

===

set a cookie for javascript enabled, and don't serve it until then?
	would also allow clipping js-dependent elements
		(some elements cannot be createElement-ed for compat reasons)

touching any of the operator buttons should redflag the clirtent

maybe #remove and other power decisions can be decided by admin score?
	eg can admin remove another admin's posts?

very basic way of fitting windows into page:
	shuffle them around
	look for right-most and bottom-most window edge
	optimize for these numbers being lowest

#addtag turns anything into a hashtag

if (function exists callfunc) {
	callfunc('function', 'argg1', 'arg2');
} else {
	return '';
}



if user clicks thanks, what can happen?
	acknowledgement of user's having seen their action was successful
		"and here is your receipt for my receipt"

if user = cookie + useragent + ip
cookie = 1/3 user
useragent = 1/3 user
ip = 1/3 user



./once will eventually need to be cleaned or archived
	how to do that without triggering once actions again?

custom "visited link" expiration
	keep track client-side
	change color to unvisited when expired
	use cautiously

potentially move <head> to bottom of document, especially js and stylesheet
	this would allow actual content to be above the fold in the html source

cluster line lengths
	the lines which are the shorest 10% become titles automatically


compatibility
	reddit
	twitter
	instagram

	http://twtxt.xyz/
	



vote button
---->
    item html
    (via pages.pl --window [item])
     <-----
replace innerHTML


how to recover from between clean and build?


When returning an error on token parse
	could output last 20 lines of debug log
		if it exists



> blockquote ?
>> parent/reference
>>> insert content ?



SYNDICATION
===========
server to client into localstorage
	host list
	items



when items are submitted key=value pairs from the request need to be turned into headers
	or do they? maybe just accept them as tokens?
	what about footer-header? does that need to be turned into = values?

FamilyHub
	family non-emergency canary

maxviewcount
	then burn?
	display on page how many views left
	


Generally speaking, as of late, Template is something which still has $variables, while Widget is something already rendered?


day checklist
=============
	check-inx
	new line of codex
	todos reviewed
	contacted developer
	
"adopt style" functionality
	attempts to copy color settings and such from another page
	<body
	any non-class-based styles
	try to get other colors somehow

#flag
	if user is admin
	or
	if user is moderator
		also apply #hide tag
#hide
	hidden from most listings
		except?
			user profile
			unfiltered feed
		
#brainstorm display pgp wordlist for key

javascript can set a "pre-render" cookie

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load

this would avoid the jump after pageload which currently happens

#brainstorm #meta

javascript can set a "pre-render" cookie

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load

this would avoid the jump after pageload which currently happens

auto-detect #textart by comparing ratio of alphanumeric to non-an chars

Warning: You are on the side of majority. Perhaps it is time to pause and reflect?

README can easily be executable installation script :D

display pgp wordlist for key

can add bbcode, html, markdown, etc support as modules


reddit import thread
	import each comment with
		>> parent id
		reddit_author: token
	combine with
		reddit confirm username feature
	then in profile
		"confirmed reddit username:"
	avatar should have
		checkmark

confirm username on X
	define X confirmation url e.g. http://www.x.com/user/X
	url should somehow include the string provided to you
	(figure it out)


Бот-модератор на русском языке для администраторов групп.
Функционал: репутация, звания, мьют, бан, предупреждения, возможность установить свои правила и  приветствие,
и ещё много других функций. Постоянно обновляющийся и абсолютно бесплатный.


instead of pre-creating all the tables
	have a static variable in each function which regulates
		one-time check for table's existence and create if necessary?
			may still affect performance
				or just handle no-table error?

when user registers, encrypt welcome message for them
	echo test | gpg --trust-model always -a -e -r ABCDEF01234567890 > welcome_ABCDEF01234567890.txt


client fingerprint
	get datapoints
		get hashes
			depending on hash prefix, combine in different order
				hash together again


#publish tag
with and without target server name/alias

idea from some thread
>A personalized web spider rancher and search engine that seeds itself based on your browsing history. I’d also want
>to be able to federate it or allow collaboration with other individuals groups.

perhaps if file has long lines separated only by one \n, turn them into paragraphs anyway?

if a file has multiple dates
	that could be sign of journal format
		how to read journal format?

keyboard
input input input br
input input br





if certain file reports error, try rolling it back one version

shim/polyfill idea
	createElement, addChild --> request for server to build form
	



Automatically underline-colorize links using hash of url

server response could stick around at the ?message= url until user clicks thanks
	would require cleaning up the cache every x hours

setting for manual seen/unseen marking?

[back to top] button
	when clicked, change to "back to ..." button
		which returns to where user was scrolled down
			credit: pikabu

cornerstone

Windows and Mac installers
==========================

toys: geek code generator

TESTS
=====
each template should contain certain $placeholders

name: libreforum LibreForum

continue segregating languages
 	move addtagattribute js snippets to templates
 	move template under admin/
 		is that ok?

 logged in indicator
 	set by js
 	set by php
 	in template as span with id
 	just like on profile page
 	needs coiokie php

 overthrow_password
 	the password is a hash of a known-to-admin string
 	for x days, the entire password must be matched

Ideas from nullprogram
	Tags page has good layout.
		Large text "Articles tagged 'foo'" at the top
		One-line date + title listing
		Reverse-chron
		RSS button
	Top bar has two columns, bio and links
	Public inbox (actually link to src hut)
	

primary tag list
================

	image
	hastext/hastitle
	reply (placed under parent)
	pubkey
	==
	items marked with tag are placed under that tag's directory
	

What year was browser released quiz
	Can be multiple choice
		Voting takes you to the item, which tells you if correct?
			

Extend request times for new submissions
	How to do it without keeping connection open?
		Redirector page which says "Click this button in 15 seconds"
			If clicked before 15 seconds, says 25 seconds, then 45, etc.
			Client-side, it can count down if JS available

retroactive registration

collapse/expand images

views with/without images and content

improve handling of list/* as lists (arrays?)

an entire thread from facebook, reddit, or twitter, can be imported
	substitute anonymous for all the usernames

onpageunload reset please wait button back to its previou caption so that if users presses back it's back to normal again
	there can also be a special js to check for this as well
		implementation details hazy

if txtClock then
	assume special accesibility mode for browsers which do not support tab-based navigation for links
		safari (???)
		opera 12 (only if links have tabindex= set)
		netscape (turn important links into input type=submit buttons)

authors users has interacted with previously should be highlighted somehow
	could also be a separate list for them

client-side user notes

http://sitename.com/0123abcd should be a working link
	a) interpret "o" and "O" as zero
	b) redirect to item page and/or rewrite url
	c) make it prominent to encourage sharing


"where to get a good browser" page
	recommend browsers for each platform
		for older platforms, there should be an archive of installers
		for current platform, configuration info
		commands to install: apt-get and/or rpm/yum, etc


there needs to be server-side insecure (with a warning) key management
	as an option for the no-js user
	key is stored on server, and does all the pgp signing
	can be downloaded if user still has the cookie
	can be uploaded as proof and/or to create server-side entry
	what else?


is there a need for a "basic" and "full" mode?
	does all the html need to be pre-generated?
		perhaps only basic would be pre-generated if php is enabled?
	basic mode
		no js
		no images
		no css
		no tables
		no html comments
		all the links
		voting supported
		no cookies
	is basic mode a theme?

file_id.diz
.nfo files


antispam
========
antispam table which contains fingerprints
	associate fingerprint of each datapoint with item
		usergaent_hash
		ip_hash
		js_hash
		all into the same column to help prevent differentiation
when item is tagged as #spam
	perform search for all item's hashes against other items' hashes and tag them as spam as well


<input hidden js=on>
include js state in form submission


#holytext mode
	hash each line
		allow replies to each line
		may need refinemenet such as replying to a range of lines
	how to handle line numeration:
		either uatomatic or first thing in line
			first thing in line can be assigned as repliable id?
#yesno mode
add #yes and #no tags


environment
===========
cache_dir
html_dir
php_dir
config_dir
scripts_dir



The --\n signature system should probably be replaced
	Idea: abcd.txt.footers file
		Contains all the "footers" (as opposed to headers)
			Host:
			Cookie:
			Fingerprint:
			etc
		Problem: Fragmentation of data
		Advantage: Text file hashes remain the same regardless of footers
	Alternative:
		Calculate hashes without footer



TESTS
=====
each template should contain certain $placeholders
    this can be trained from existing templates
    then theme's overriding templates can be tested for same placeholders
html templates should not contain $ character
-----

foreach(git commits) {
	build site
	open home page in browser
	screenshot
}

adopt/ABCDE
    creates entry in adopt table
        adopt
            parent_fingerprint
            child_fingerprint
    entries from adopted profiles show up in parent profiles

create view vouched
    select
        author_hash
        parent_id.vouched
     from item


crearte view author_vouched
as slect author.author_id, parent.parent_author_id, parent.parent_vouched
from


token to replace string with string
    use as overlay to get extra information
        addendum/ ?


With consent, jstest1 could send a ping at the beginning and end of test runs to figure out if any browsers crash

Use /session/abce/ for no-cookie sessions
    Rewrite everything to /


If someone replies to something from another server, send the reply back to the origin server

When displaying integer timestamps, colorize the first x digits which match current time

How to inject templates into JS where JS needs to insert it into page?
    May be better handled with .createElement() instead of using innerHTML
        This still sort of creates the problem of mixing html and js?

post-processing option:
    replace links with submit buttons
        can enhnace keyboard accessibilty in safari and offbyone browser
        other browsers also favor form controls over links for tab navigation

Options for loggig cookie with access.pl
    --> ssi?
    --> php can write cookie to log/cookie.log along with some kind of identifier which can be connected back?

When a file is archived from an article copy-paste
    Lines containing junk content can be removed by hash

Typing masker:
    Actual text is concealed, and benign text is displayed instead

Server-assisted compatibility mode for NN2/3 with document.write() ?

<noscript style=display:none>may be useful for something

"Federation"
============
this would allow a cookie id to jump from one server to another, insecurely
user clicks button
	server gives user a temporary secret string
		server sends a signed hash of temporary secret string to target server
			user connects to target server and provides tss

server-side preferences:
Willing to moderate = show/hide elements by class (strip out of html)
Show advanced options = same
Highlight advanced options = modify elements by class
Show hints = same1
Highlight hints = same2
Display username in top menu = fill-in
Notify if page has changed = ???

Should no-cache be applied to profile.html?

Client-side JS UI preferences can be carefully pre-rendered by PHP

Break apart large perl scripts into modules
	By tag/functinoality

PHP post-processing to strip table tags, js, css by user setting request

Auto-download links which have handlers
	youtube and other video
	twitter
	etc

Nation
======
Goals
Security
Justice System
Infrastructure
Economy

Identity Page
=============
Cookie: ABC
Handle: John
Fingerprint: DEF
Alias: John
Device: Netscape/4.5


#survey tag
every line becomes a question
except ones which begin with #

Headers
=======
From:
Subject:
Date:
Tags:
IP:


Kit
===
3x Pi2
3x Netw
3x SD 64 fast



blockchainy stuff
=================
if (GetConfig(blockchain/enablle)) {
	my $lastHash = `tail -n 1 blockchain.txt`;
	AppendFile(..., $newFileHash . "\n" . hash($lastHash . $newFileHash));

Configurations
==============
Forum
Community
Rule-making authority
Nation
Society


Search
======
Rate limit to avoid Dos
Full text search through all text with grep
Elastic Search?
Offload to Google, Yandex, DDG

===========================

Auth Matrix
===========
PHP
=====================
GPG            No-GPG
===            ======
GPG FP         cookie
with Cookie       +
for backup     server-sign

Static
=====================
GPG      No-GPG
===      ======
FP       set cookie with js
         append cookie to requests
         cookie can also be captured with ssi rewrites

NoJS
====
Always anon, unsigned
	Optional FP
		by useragent
		by ip
		language
		accept
		setalias/John --> adds FP when saving file

===========================

Other Header Ideas
==================
By-Signer:
By-Cookie:
By-Client:
By-Alias:
By-Handle:


Test Script/Form
================
"Headers" (footers actually)
Browser Name: Netscape Navigator 3.04 Gold
String Version: 3.04 Gold
Num-Version: 3.04
Browser Configuration: JS on/off Other:
----------------
(appearance 0-5)
Write New Post
View Topics List
View Thread
Vote on Item
Reply to Item
Sign In (Cookie)
Sign In (GPG)
Show/Hide Advanced
Clock


Name Resolution
===============
GPG? Y : GPG
 N
Cookie? Y : Cookie
 N
Useragent+IP


build.sh
The following config values differ from defaults:
The following config values were looked up during build:
Not looked up during build:

Yavista is a social search engine
What you search here becomes public (with a short delay)
Search: [ ]]]
Previous searches:
foo bar bzaadz f [comments] [replay] [flag/delete]


How feasible is it to perform cash tracking and path rebuilding
Based on all bills being counted every 3-5 cycles, every time deposited in bank by retailer


Call for Prayer
	Those in need
	etc


[x] verified human
[x] verified bot


(Advanced)
Client Information
Server-Side Client Fingerprint
Client-Side Client Fingerprint
Server-Side Server Fingerprint
Client-Side Server Fingerprint


config/list/badwords
The following words are discouraged on this board, and thus carry a score penalty for their use.
Attempts to circumvent this scoring system will result in administrative action by the operator.
democrat
republican
homeless
rich
poor
cuck
faggot
nigger
boomer


Java-PGP for Netscape 2.0-3.0?

Hash each line
	Store
		Find common lines
			Maybe restrict to short lines only?

Adjustable hashing scheme?
	Multiple hashing schme?
		Instead of file_hash, multiple columns?

JS themes
	Take from template/theme*
		Generate json array (or plaintext)

JS localstorage feature check
	If no localstorage then
		Set cookie
			Server reads cookie and provides additional fallback
				Can be done with SSI possibly?
				Also PHP option

Encodings... something to consider
	Especially for older browsers
	#bug Unicode titles get cut off mid-character

Setting to expand css settings to include "test ones"
	e.g. -webkit-foo or -gecko-whatever


Can HTML pages be patched instead of rewritten?
	<span id=abcdef_score>1234</span>
	

if md5(request) in 404.log
	redirect page to md5(request) 

sub Output Textarea With Helper Buttons
	

Welcome
This board is managed by John Bob
[Accept as Admin]
---> elect/ABCDEF/admin

#config page/manual foo
	manual (hashes as foo)
		<-- include abcd -->
		<-- include defg -->


A big floating > button seems to be a worthwhile trend


Make forms out of text
	[ ] abc
		becomes <input checkbox name=md5(abc)> abc
	___
		bcomes field
	Nothing else is needed for mvp


pre-cache voted items per author
	make available to clients


Fill-in forms
	Replace _____ with textareas
	____ (desc)


server-vouch
	default/admin/server_vouch/enable
	default/admin/server_vouch/string
	If user posts string
		Item is not posted
		Server vouches user


ask to add vouch for user whose post we're voting on

posts voted on = vouch


private key save methods
	image with qr code
		could be qr code, could be stegano, could be text in exif
			or all of the above
		great for iphone and android
		re-login procedure
			select image from photos
			private key is parsed from image
		save procedure
			qr code and/or image with text
				generated and saved on device



List file type
	List of \n-separated text items
	Doesn't require multiple files
	Can be used for
		404 log
		chat logs
		url lists
	Each item is separate and part of the list

select * from author_flat where file_hash in
(select distinct file_hash from item_label where label = 'vouch' and author_key = 'D17F2F5762A4573D')
--vouch tree beginnings

insec auth


admin/state/welcome=1
    1. Enter password:
    Hint: xxxxxxxxyy

    2. Submit to adminset.html

    3. Generate key, create txt with setadmin token

    4. Replace index.html

    admin/state/last_seen

    admin/state/warning_window=7d

    admin/state/reset_window=60d

==

sublimetext
textedit
	savefiles as datasources

make ssi work

serve hike/ from lighty
store secret into hash-named files in hash-named dir
and/or deny access to it from lighty

==

#todo #priority rss for all pages

#todo trim long titles


===

safari Version 5.0.6 (5533.22.3)

keygen no worky, just submits form

#todo #meta need more sanity checks and fallbacks

===

when submitting via write.html and redirecting back to write.html, there is no indicator that something has happened.
	nojs

===

need better handling of click-votes

1) should redirect to where it came from
  a) either through a js-cookie
  b) through a server-side trick using location: header

2) message about back button is unclear and now inaccurate since it opens in a new window/tab

===

how to make it easier who wants to fingerprint-sign messages
	without having to remember to check the checkbox every time.



config/enable_blockchain
	builds a "blockchain" of message ids

when tags have many overlap make them related

E-mail and/or fingerprint-verified IDs with more weight

submissions via search field

maybe there should be some kind of quick benchmark to determine the key size?


New users should be engaged somehow, both by the system and existing users


Alternative private key management ideas
* One-time token that validates user-generated key
* Store private keys on server, passworded, for insecure uses

CLEANUP
=======
15 messages have been tagged for removal. There are 30 days left to rescue them.
	Any messages that are untagged and old, basically
		Helpfully-tagged messages get to stay
			Tagged with negative are removed more quickly


Collab dictionary?

One page per thread
===================
Build index based on top-most comment
	How to account for multiple top-most comments due to replies with multiple reply tokens?


#todo writing should be typing + click, just like search

from every page

public search?


Calculate items that are trusted
	Display some kind of checkmark

The tokens for the votes could stand to be more readable
A format like this could work better
This also allows for multiple tags in one token
Should be flexible
	please is optional
	tags are comma-separated, ignore whitespace
	is checksum necessary?

--
add vote, please
item: 6fa641a277f32c6aae170488ef55b8d7950fefdb
time: 1554491612
tags: surprise, agree,
--

Of course, this also means that tokens are not a neat one line.
Should both be allowed?
Templates?
Internationalization?


checksum: 428264a8fdf7fa9d7f8b7bb7e426d019



Image support
=============

=======
default/badwords
config/badwords

Notes from user survey with Anonymous
	Thank you, Anonymous
	> Make it easy to "get into"
	> Votes
		Autofill?
		Scrolling is a pia
		Wheel?
		Pos/negative?
	> Mobile tap areas for the item id
		Too small and not obvious
		Possibly make entire item tappable?
	> Idea: "done" button to exit textarea+keyboard?
		Currently, when textarea is selected, there isn't much to tap on to make it go away
		The txtarea and the keyboard take up most of the screen
		Done button in top right corner of textarea (overlaid) could be solution
	> Group replies together when displaying them on one page

Automatically add expiration date to newly created keys
	One week? month? year? day?
	Advanced settings to change

WHERE DO TEXT FILES COME FROM?
==============================
web server -> access.log -> access.pl -> txt/
sftp (uploaded/added straight to filesystem)
clipboard (?)
git
file editor
irc logs

txt -> index.pl -> sqlite -> static website
        \      \
         -> gpg -

    vote -- tag
  /     \
item - author
  \ item_parent


ADMIN NOTES
===========
I, the Administrator and
caretaker of this establishment,
hereby state that:
   * no advertising, paid affiliate, promoted, sponsored, or otherwise money-influenced content
     has been posted here to my knowledge as of this date (1/1/1970)
   * I have taken care to preserve a fair voting base by only appointing and empowering trustworthy voters
======
I hereby award a voting weight of 300 unaffiliated voters to <John> for the following reasons:
   *

   *
======
My affiliations and affects as voter (be as detailed as you're willing)
Political parties:
Cultural/family ties/associations:
Locations I frequent:
Favorite musicians:
Favorite movies/books:
Favorite beverage:
Addictions:
Weaknesses:
Subversion experience:


WHO CAN FIND THIS USEFUL
========================
Facebook groups
	Scaling
	Images
	Videos
Mailing lists
	Email notifications
Private chat groups
	private/closed mode
Banned subreddits
	scaling
	link sharing
People who want a new community, especially hackers
	avatars
	profile pics
	documentation
	examples of use
	ease of setup
Writers and artists
People who want to blog
	formatting
	theming
	images
	videos
Street people
	hosting
	ease of setup
	easy and legitimate-seeming url
	self-hosting?
Travelers
	secure URL
	pics
	video
Groups who want to talk off the grid, for reasons
Families who want to privately exchange confidential information
	self-contained
	device and clear instructions
	UI improvements
	replication



Because Chrome doesn't respect any form of nobr/no-wrap that I have found, and since it is still very important to keep checkboxes together with their labels, the voting checkboxes now appear as one vertical column in older browsers such as NN3.  We make this offering to the glorious <table>, <tr>, and <td> tags, and we do it gladly. May they live a good life, and may careless browser devs (Lord forgive them) never find a reason to meddle with their implementations. May their parsing be smooth and joyous, may their rows and columns as straight as possible under the  given circumstances, and may their borders always be beveled by default.

Consider https://dkg.fifthhorseman.net/notes/inline-pgp-harmful/

Work on installer; Should be easy to install.

Edit button on item pages
	(o) Post new copy item
	(o) Remove current item (requires signature same as current item)
	
Replace non-ASCII characters with ANSI boxes

Make item page sections into detail expandos

JS-less reply form: type in the item ID you're replying to

Allow keygen and signing with OpenPGP.js, but tag it as insecure

Play a joke on Z button users -- keep the original text and use that instead

Clear the unclaimed votes every X hours/days

Only use unclaimed votes in queue (wild west) section

Use confirmed/claimed votes for sorting

More than one key can confirm each vote, and confirmed count rises

By setting the vote tags we target the audience/voters' efforts

Add basic watch for any scripts returning "error"

Make sure "response" pages are not cached (make webserver send a header)

"Style mode" vs "Switch to accessibility mode"

Is it safe to use server-side includes?

Timer: This post will be removed in X day, unless it is given a positive vote

Section: Soon to expire posts

Next item/ Prev item links on every page

"Delete" section, sorted by different criteria

config/auto_delete using
	using all votes
	using only signed votes
	using only admin rights, aka rm txt

Once 9000 posts reached, different options to clone on Add page:
	Best
	Smartest
	etc
	Include only best 5-25% to seed the next one

[x] Encourage editing instead of replying
	- Fill in the reply form with the current post's text
	- Change caption of submit button

Home page contents:
	Instead of latest posts, just a form to submit your public key
	Create symlink for that key, and post encrypted message

Sort tags randomly at first, but allow alphabetizing

How to do preferences???
	Server-side includes and per-user settings via access.log?

Fade pages with more views to make them look more read

How to detect that a particular browser has trouble browsing the site? Dropped connections? No clickthroughs?

Pop up a new node
	Upser uploads tor private key
	Append it to torrc
	Read hostname from /var/lib/tor
	Add to links list
	
NoScript button
	
Split message into lines
	average line length = paragraph
	smaller than average = heading


Can some JS be included as base64 and decoded after loading?
	This can be used to selectively enable it for newer browsers

For pre-form browsers, can registration be accomplished with
	Links
	Link re-writing (like WebSphere)


name: libreforum LibreForum

continue segregating languages
	move addtagattribute js snippets to templates
	move template under admin/
		is that ok?

logged in indicator
	set by js
	set by php
	in template as span with id
	just like on profile page
	needs coiokie php

overthrow_password
	the password is a hash of a known-to-admin string
	for x days, the entire password must be matched
	but as time goes by, only the first 39, then the first 38 etc chars must be matched
		maybe build a ui for non-technical users to take advantage of bruteforcing too?
	then eventually no password is needed
		some kind of basic intent-verification process would be nice
			that way a random crawl bot doesn't end up being admin
			bots should still be able to admin a board
			that's why it says intent-verification, not human-verification

users can gain weight by calculating hashes
	proof of work
	against their own fingerprint
	plus a number
	must generate a hash which includes '8008135'




overthrow_continue
	admin the previous top admin for continuation of vouchness


page definitions
	template
	positons
	variables
	queries
	etc


Remember if we popped up loading progress before
	If we did, we can make it appear right away instead of with a delay

duration between page and next page load can be tracked
	set click id using message id or something like that
	grab it on the beginning of next pageload

Maintain a constant ~80% approval rate, with bottom 20% of items automatically flushed


===

#meta #brainstorm

Thanks for the feedback! Votes cast by those with less than 125 reputation are recorded, but do not change the publicly displayed post score.



===

#brainstorm

so maybe beginner mode has no more links at all

intermediate has more links, but hidden by default

advanced has everything shown with hints

expert hides the hints

operator separately toggled, beginner still has operator options

operator shold enable by default if user is admin

#brainstorm #meta

javascript can set a "pre-render" cookie

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load

this would avoid the jump after pageload which currently happens

[coin: 1337]



===

#brainstorm

Each time page changes, a small timestamp element could be added to the indicator.

===


#meta does this mean that config foo = off should set it to 0 or false? =\

edge case for now.
=======
maybe urls could be /parent/child ?

for limited cases

#meta #brainstorm



===

#brainstorm #meta

javascript can set a "pre-render" cookie

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load

this would avoid the jump after pageload which currently happens

50209AFB8F0B3D1E 1600832020 0.15843680136994975



===

#meta #brainstorm 401 page can give user a second chance to self-identify via freeform textbox or just a button press
-- 
Cookie: 4EA1957B064467C3
Host: 10.0.2.2:2784


===

#meta #brainstorm 401 page can give user a second chance to self-identify via freeform textbox or just a button press
addtext=Meditate...

-- 
Host: 10.0.2.2:2784


===

#brainstorm #meta
.
post-formatting mode:
.
resilient paragraphs
.
if there is a list format it like this
.
: item one
.
: item two
.
this will stand up to both instagram and markdown rejanking



===

>>51cc55aa4b0452ab1d5d33a6c5dd13eb06d3d9d6

another new feature is dev_mode, which allows writing directly into the project docs from browser ui by using #meta tag along with #todo, #bug, or #brainstorm.

this item will end up in todo, if i am not mistaken, because it is first in the list. i decided against writing to all three in this situation (for now)



===

#brainstorm #meta
.
post-formatting mode:
.
resilient paragraphs
.
if there is a list format it like this
.
: item one
.
: item two
.
this will stand up to both instagram and markdown rejanking

keyboards: onmousedown and onmouseup could set and clear a timeout for key repeat?


===

#brainstorm #meta maybe we can checksum the default and/or config tree and rebuild relevant parts automatically if changes detected?

can also piggyback on fossil or git



===

secret cookie + file md5 = proof checksum

#meta #brainstorm



===

#brainstorm #meta maybe we can checksum the default and/or config tree and rebuild relevant parts automatically if changes detected?

can also piggyback on fossil or git



===

secret cookie + file md5 = proof checksum

#meta #brainstorm



===

Add sub to fill template with hash of variables

Compatible Mode
	Rename from Accessibility Mode

Being all caps makes html tags stand out more in a sea of text

Instrument panel

test: are there any files under default/ which are not mentioned anywhere in code?

improve clean process
	instead of rm, use mv
		create directory trash
			under trash, create dated directory
			move everything in there
	at some point, clean out trash directory
		for example, at the end of build
		or on every update
		clean out a bit at a time, so as to not stall flow
		e.g. find first 1000 files and delete them



create "imprint" of shortcut keys so they don't keep changing


attributes should be rewritten back into header-footer

#security #taint
In order to quickly add -T (taint mode) compliance, i've added
some VERY basic sanity checks against these unsafe strings.
The checks should be extended, as they're mostly "not whitespace"
which is however better than nothing.

Store current config
	Compare current config to last stored config
		Publish config if changes

#bug handle404 clashes with server response message

need to make more button sticky via same prefs as settings page

debug.log how to trim top?

ARCHITECTURAL PRIORITIES
========================
* decouple initial file pickup into db and full index
* redirect jankiness from profile and post
* pages not expired from cache


#bug reply field gets autofocused due to write js

route.php
	if the html returning indicates it is the pre-generated version
		call HandleNotFound($path, $pathRel)

write page:
	if not logged in:
		"other options may be available when you register or sign in"


global timer should check if login state has changed and
	immediately burn crrently open page if state changes

upgrade etc process
	user posts signed token
	server validates
		changes /index.html to status message
		performs upgrade
		build.sh

admin imprint key
	email version
		user enters email which hashes
		server sends one-time auth token to email

#burnit token
	note: you can't burn electrons

.js files can fall behind in version
	self-check against etag somehow

more testing with failed db connection
	fallback solutions

whenever txt is removed
	remove cache
	remove html
		can probably just glob using item's hash ;)

sqlite: set wal mode

cron.lock : change from timestamp-based to timestamp + pid based
	if timestamp is too old, change the pid
	if pid doesn't match self, quit
		check on every loop


aliases based on item attributes
	/123 == could be anything
		chain order
		partial title
		etc
		hashtag
		

PROBLEM: sometimes placeholder page is still not replaced

PROBLEM: there is a sqlite query call every time a page is hit, even if it exists

Prefix all php (and js?) templates with:
	die('removeme');
	then remove the line when building from template

de-couple
	indexing of file into intial hash-filename pair
		this can happen fast
	extensive indexing of file
		this can be put off

useful structural tags
	>>item #addparent <hash>
		add parent to item
	>>item #reparent <hash>
		remove all other parents and attach to <hash>
	>>item #adopt
		sets posting as belonging to author
	>>item #replace [hash]
		if no hash, replace with self
		otherwise replace with item with that hash
			this would mean content is replaced on the page
				with a notice




any account tagging v2
	1) create profile
	2) post "verify <profile>" on reddit userpage
	3) >>profile verify https://... (index.pl)
	4) curl reddit profile url, look for confirmation
		use ./once for caching (task?)
	5) add reddit_username attribute to profile

reddit account tagging
	1) "i claim this reddit account http://
	2) >>1 #redditclaim
		look for parent's hash on reddit page
			if present save it in ./once/
			server-signed "#approve"
		else
			message that it failed, and don't try again until this message is removed
			still save it in ./once/
			#denied
	if you want a do-over, you have to remove the once somehow
	reddit url should be normalized to reduce spam options
		remove any extraneous shit
		make it to //www.reddit.com/
		lowercase the whole thing

let user save/export/import cookie secret key

add option to rotate/trim access.log
	on by default for lighttpd/local
	off by default for other

$$ returns current process id
	make lock file based on this

directory listings
	instead of 404 page, there should be index.html in each directory showing its contents

for js/debug, add comment to end of each line like so:
	// filename.js : 123

check the status of ssi includes module
	add ssi include for status bar

What's Keeping Website From Being Used?
=======================================
Much confusion
Where to find newest posts??
Search
	xSearch form
	xGet search query
	Fetch results
	Display results
		via access.log (delayed)
		via php
	Search results template page
Rebuild times are long due to generating a page for each item
	Good: Site is fast to come back up
	Need: lazy-generate pages with PHP is enabled
		xItem
		xTag
		xAuthor
		Other
	Need: Avoid generating pages for items with a parent
		Perhaps: Remove permalinks from reply items
	Need: "Site is rebuilding right now" message?
User can't create account from Write or Reply page
	Need: Checkbox to create account in the process of posting
Data export is currently only possible individually (zip files are not generated)
	Need: Generate zip files for each thread, probably on the fly with PHP, if possible
	Need: Generate zip files of forum data:
		By thread (with all dependencies like authors, votes, etc.)
		By date (with all deps)
		By author (with all deps)

Features would help me
======================
Offline outbox
Offline web app with all content
Recognize URLs
	scrape
	screenshot
	present
Recognize typical date formats


queue
=====
create table
DBQueueInsert
DBQueueGet
ProcessQueueItem(...)
php post.php
	insert into queue
	display wait page
	refresh to completed item page when done


flush
	if #approve or #keep
		keep item and all its children
	otherwise
		archive

#setresourcepassword
	hashes password to htpasswd standard
	uploads hashed password
	server adds to htpasswd (if should be allowed)

add 404 --> new item to route.php

when only mouse click and no scrollbar, no way to move down page
	button to move to end of section
	potentially javascript scrollbars?


write form
...

[keyboard]

dropdown
  system
  dvorak
  russian

a s d f keyboard expando

foreach table cell
 if letter = a
   change to b
   (translitkeypress())

===

light mode
	checkboxes for each option
	when light mode page is opened
		light mode is enabled, but not saved
		"enable light mode" button
	checkboxes for
		remove clock
		replace emoji
		replace links with buttons
	strip js+css+htmlcomments


if light mode default
	welcome page
		welcome to so and sos
		please choose
			pretty mode
			lightweight mode
===

top menu should be refreshed based on settings
	hide some pages if they're not possible
		e.g. profile, settings
	add links to tags which have >x items

index page should trim long items regardless of #toolong

top of item should also link to item, not just bottom

how to colapse an item



on profile page
	put "logged in state" value on page load into page
		then check if value is same as value determined by js
			if different, take some action (change shown state, and/or reload page?)

"singleton" tags like #motd

tables should regrow if they are missing
	currently ./build.sh is required after ./clean




/my_bookmarks.php
	returns all my votes based on cookie
		as list of txt urls?
		or?
	allows pulling from another site

If Item is being deleted, all its actions should be undone
    Most db entries should already have a source item field


#bug when clicking reply link on listings page and it goes to item's page, reply textbox does not become focused


in netscape 3, light mode sometimes turns off without asking

move/copy update buton to operator dialog
	move/copy backend piece from post.php to route.php

de-emoji for accessibility mode x

#mean hashtag
	[x] hide mean people

#BUG #security image filenames are not shell-escaped before update.pl (?) is called
	reproduce: try an image with an ` in the name

Less Important Things Which Need Fixing
=======================================
Changing the current git commit breaks the site
	This is *kind of* by design, because the commit ID is part of the cache path
	That way there is no incompatible cache
	Need: A way to recover
Emoji menu breaks older browsers
	Need: ???
	It's disabled by default, but makes navigation much nicer
When a user creates a new account, they are taken to profile.html, and then 20s later to profile page
	Need: Message that public profile will be created shortly
	Need: Background profile create request
	Need: Server-side profile create trigger
	Bug: Loading indicator, if it shows up, is auto-hidden, even though now we are waiting for profile to be created.


wherever file counts are done with find
	cache it so that not recounting every time

get rid of /author/ pages
	instead set parent to author's pubkey item

allow aliasing of ??



#bigtodo: remove dependencies on external pm modules


netscape 4: suggested files for image upload are *.html #bug

Testing Results July 17 2020
============================
ie6 "sign as undefined" on reply form
konq too

#vote links don't work without js

w3m reports redirect loop when logging in

opera 3.62 has issues logging in
   redirect problem? caching problem?

list of voted items is not cleared when logging out
	bug or not
		should this list be re-downlaoded on login
		and somehow updated?


something to validate chain.log
	validate hashes
	validate that all timestamps are in order
	see if items still exist
		what to do about missing items?

handle 414 errors (request too long)
	happens when write.html is used without js
		and long text is submitted
			lighttpd has longer limits than apache, it seems
				at least the apache dreamhost uses

feature: export current config

upgrade.pl
==========
	0. dump current schema
	1. upgrade
	2. dump new schema
	3. compare new schema to previous schema
	4. if exact match, rename index.sqlite3 


styles to add
=============
	borg
	bor
	reddit
	lobster
	



"my name is" should follow similar rules as title: in terms of timestamp priority
	perhaps there should be a combined item_attribute table?


make a separate color for the top bar for the news theme

#BUG footers are lost when rebuilding
	Problem: organize_file overwrites existing file which has footer-signature with one which does not
	xSolution: Only rename file to hashed-path if larger file not already there
	Problem: organize_files is implemented 3 times in 3 differnet places
	Solution: Switch everything to OrganizeFies()


fix config/admin/accept_404_url_text

add heic files support to image upload

multiple image selection and upload

paste image from clipboard


when changing versions
	see which configs are changing from being the default to not being the default anymore

Priorities
===============================
page rebuilding by php
allows building and updating without pre-building all the html
fast page updates with perl (fix targeting in index.pl and update.pl)
#bug long comments no longer sent via post!

Need a timer to reset submit buttons from "Meditate" back to initial state
	When user navigates Back to page they submitted from

Image exif strip

Create .nfo for image

auto urls from title

#bug two message= after submitting post

move some config/default settings to system/ tree

/admin ==> /top/admin.html (if exists)

hide/disable with note unavailable features
	e.g. gui registration with js=0 and php=0
	light mode without php


make clean.sh safer
	maybe change to clean.pl for easier writing
	first, use find to select all the files which need to be deleted
	then, double-check that they're in proper directory
	then, delete each one

#moderator

"paste a lot of text" form
	method=post
	"warning: this method is less reliable, but allows more text"

profile page
	without js
		should not say anything about pgp
	without php
		shouldn't say cookies
	without js or php
		should show message that profiles are only available using pgp

new comments since last visit
	store in localstorage: page key, last visit
	highlight new comments



When displaying thread, OP's top-replies should be sorted first

make #config token not sensitive to whitespace differences

detect client-side advanced mode
	flip class=beginner nodes to hidden by default during page pre-process
		eliminate page jump

import rss

#bug
list of tags has issues in light mode

make setting to prefer post over get when possible
	this will help avoid tripping up dreamhost's mod_security when sharing pubkey

address possibility of mismatch between cookie and localstorage

custom 401 page

when replying to public key, replyto should be author's fingerprint, not item's hash


Profile page
	if js
		somehow check if logged-in state has changed
			because when returning to cached page, old values preserved
	

Provide cookieless sessions via url prefix
	example.com/abcdefghi/top/agree.html

.nfo support for non-txt files, which cannot have ""\n-- \n" footer-signature

Include relevant library repos in lib/
	Include only necessary files
	But also the .git/config file
	And also import script from lib/ to template/

Stream of vouched items

Parametrized item output
	Sorting / Filtering
	RSS

SQL Query Log

GetButtonTemplate?


Allow tags:
<i></i>
<b></b>

Installer
	For techies
	For regulars

Display one-liner text in larger font and with no title

Tag permissions system

Setup modes (collection of config presets)
	Forum, public
	Forum, private
	Weblog

Register from any page without leaving page

If you are looking for the $_FILES['error'] code explanations, be sure to read:

Handling File Uploads - Error Messages Explained
http://www.php.net/manual/en/features.file-upload.errors.php

25 sparticvs at popebp dot com ¶7 years ago
A note of security: Don't ever trust $_FILES["image"]["type"]. It takes whatever is sent from the browser, so don't trust this for the image type.  I recommend using finfo_open (http://www.php.net/manual/en/function.finfo-open.php) to verify the MIME type of a file. It will parse the MAGIC in the file and return it's type...this can be trusted (you can also use the "file" program on Unix, but I would refrain from ever making a System call with your PHP code...that's just asking for problems).



#bug loading indicator doesn't go away on pages without openpgp.js

Reply form
==========
	add WriteSubmit() call
	refactor for WriteSubmit() to be called with form reference
	add write.js to page conditional on replies enabled

janitor role
============

content packs
=============
	questions (russian)
	gay in russia book
	little prince
		

facebook login
==============
	facebook developer account
	registered facebook app
	facebook js sdk
	enter redirect url in dashboard
		need redirect url
	check login status on client-side
	receive redirect
		check against local id
			hash-based?

twilio integration
==================

"fingerprint me" token

For an item page with a reply box
	Move the voting/response hash tag buttons to the reply form

During overthrow, automatically re-vouch previous admin
	I think continuity is expected by most

Make it so that all 500 bajillion index pages aren't rewritten at once
	especially every time there's an update
		when 'index' goes through, increase priority of each page by 1*(page_no/total_pages)

move all html templates under template/html

in php, if debug is enabled, save WRitelo() when passig server messagewriteindexpage

Give update.pl a parameter which looks up in page_item and only does those

Automatic filtering of problematic items
	.txt with binary in it ;
	very large files
	many hashtags
		perhaps use `file`


Replace #pubkey items with author page
	No need to have 2 pages for each pubkey


#bug title mismatch between untitled item ('untitled') and page title (hash)

If user signs in without OpenPGP, is signed in via cookies only
	There is a problem with the Profile page not displaying correctly

admin/organize_files should not be in IndexTextFile... somewhere else, not there

separate out rewrite stuff
	move rewrite config to separate webserver config file elements
	rewrite .html links to .php if rewrite is off

#bug links in server messages don't go to their link but just close the server message


place to enter private key into textbox
	just like show private key link
	but also with a button
	it used to be that way, so id_create or id_current may have the code


#bug reply counts are not reported when comments are listed as replies

deleted items page
	X items are deleted. Here are their IDs and comments on them

#known some html templates include onclick, onchange, etc. events, which still there when config/admin/js/enable is 0

#bug in translit: letters on -=[]\ keys don't listen to caps lock

assigning someone a tagset allows them to assign all the tags in the tagset

local save
	autosave to localstorage
	autosave to cookie
	save draft button


mosaic doesn't understand relative redirects
	location: header must include full url
		protocol
		://
		self-host
		:port if not default
		/rest of the url

rate limiting
	by ip
	by action type


hash tags should not count towards #hastext
	if an item is only hash tags (and other tokens) then it shouldn't get #hastext tag


for one-liner items, create new template which displays larger text

#wtf figure out where the <script> tags are going in the test avatar
	1. create profile with the following username: <script>alert()</script>



no-js php server-side profiles
	add link to profile on profile.html page
	add "this is you" message to author page
user's own id should be identified anywhere it is displayed
	in unique color and with "(this is you)


Image Support MPV
=================
	indexing of files into database
		xgenerate standard size
		xgenerate thumbnail
		xgenerate alt tag
		xsave original file name (as title?)
		o rename if organize_files
		o index dimensions?
	embed in html or <img> tag, etc.
		xsize
			xheight
			xwidth
			o css size
		xalt tag
		xlink to original
	standardization
		xsize and quality
		xconvert and store (imagemagick)
		xretain size information
			(original is retained and linked)
	tokens to add image title,
		#title, perhaps
			select best title based on #title post scores
	finish support in
		xindex.pl
			xgenerate standardized image
			xthumbnail
			xalt tag (top title?)
		xupdate.pl
	upload capability
		how to create image
			o link to existing url (site will download)
			xupload via upload form
				for registered users, link is displayed?
	x config/admin/image/enable
	config/admin/image/upload/enable
	how to insert picture into post?
		>> perhaps?
size stuff may not be as important if
	on pages, display standardized image (standard dimensions)
	link to original image (not necessary)


build crashes if config has a file which is looked up as a directory




#bug relative redirects don't work on some browsers

Rewrite anything that adds a footer to do it into .txt.nfo file instead
	also include added_* files


research .user.ini (php settings for apache)

remove external js file dependencies from 404 page
    404 page should only be 1 request

Anytime using rewrite to add attributes to a tag
    If tag has no attributes, have to replace <tag> instead of "<tag "

without php, profile page contains several $ placeholders

#todo make textareas nowrap in netscape 4, currently annoying

#bug Currently update.pl is broken, only the first 100 files are imported

#bug
    create profile with local key
    close browser (cookies lost)
    open browser again, go to profile page
        expected: handle and fingerprint populated
        actual: handle is populated, but fingerprint is not


#bug PHP-supplied http response headers cause Mosaic to crash
    Static html pages work ok
    Pages routed through PHP cause crash
    Check headers for differences

#bug IE11: window.Promise returns false, which causes openpgp to not load
    openpgp does support ie11, and it used to work
    Need to figure out which features the Promise polyfill depends on, and create a test for them

For js browsers, make the .txt link expand into a textarea instead of going to txt file
    ?

curl template
pgp command template

Make a chart comparing to other systems

Move css from default.css into theme
    Except for certain things

Facilitate removal of votes by ip address of voter

When returning to a form with a button which turns to "please wait" when clicked
    The button's caption should already be reset, ideally (via document/body.onunload?)
        Or should be reset as soon as possible

Need to connect instances without introducing a bunch of spam
	Need to store hash of message's hash without signature?

Home page shuld have useful things on it
	Adjust sort
	?

#bug theme/color/username remains at old setting in cache after config value change

Many pages crash in Mosaic 3.0 Win
    caused by headers added by php
    turning off php solves the crashes

#bug Wine IE8 clock ticks only on post.html, not other pages

Alternate auth method: http-auth

#bug tag pages are not generated initially
    hastitle
    reply

On profile page, the page intro should reflect logged in status
    You are signed in as Anonyomus
    You are not signed in
    etc

(checkmark) this text has been verified via vouch-web

red tag links sohuld also be red without css
    <font color=red>

Netscape 4.80 user-set font size is overridden by site #issue #bug #accessibility
    Probably need to get rid of fixed font sizes

"reply anonyomusly" is not true if cookie set #bug

Basic calendar view 

access.pl:
    vote2.html
    event.html handlers are broken

#bug advanced mode + admin text = invisible text


HASHTAG VOTES SHOULD APPLY TO PARENT ITEMS
If item is a reply
	If contains hashtag
		Hashtag vote applies to parent
Implementation:
    Stupid way
        1. Index and store all hash tags for given file_hash
        2. Integrate into item_view page if it's top-level
    Smarter way
        1. Create a view which does it automatically for parent-level items
    3.

Views
    Outputs: html listing, rss, zip, pdf, epub, docx, rtf, txt

nn2 #bug cannot register again after clicking sign out

Trigger for change in theme setting
    Basically schedule everything to be re-generated

default/menu/default=read,write,settings,...
default/menu/advanced=events,compost,...
default/menu/voter=compost

Smooth the flow of registering and sharing public key
    dumb redirect #done
    smarter - todo

Make vouching easier and more visible
	Add vouch button which does correct thing to user profiles
	Display user's vouch status when displaying post
	Potentially hide non-vouched posts as a feature

Pages which have lists of posts should also have a zip file
	Author page
	Tags page

Dillo
	<form> requires action=
	<font> cannot contain <table>

#bug On nn3, without a titlebar and table borders, a title-less post looks strange at the top of the Compost page

RSS
	Fix hard-coded host in URLs
	put fingerprint into author field
	Add date field


Fix relativize urls on 404 page #bug
	1. go to /ab/cd
	2. click any link on 404 page
	current solution provides a fix which doesn't work if site is hosted in a subdirectory
	the actual solution is ... ???

Unbreak
	Profile page
	Write page
	Voting

Profile refactor
	Cookie-auth should work for non-JS browsers
	Factor out nuJS code into separate template
	Set cookie via server after private key is set locally

Space-wrap long strings in topics list


Setting for large font size
	Default on "mobile"

Allow vouching by non-admin users
	Establish vouch chain

Add timestamp to session cookie
	To allow time limit for cookie validity
		This will also require rewriting the cookie now and then

Bug: There's a duplicate <a name=maincontent> on home page

Problem
=======
Whole install can be clobbered by setting a value on a directory

Safe mode:
	If any kind of error occurs
		Rename txt dir
			Create new blank txt dir
				Avoid adding anything to it, but maybe one small message on what just happened?
				Provide zip file of previous directory?
					Maybe just on the first try, as this can cause an error as well


Side-quest
==========
Report bug to lighttpd team
	Bug is that directory listings cause JS error in NN3 and other pre-=== browsers
		There's probably no huge need to use that operator there
			Maybe investigate if anything else would cause error?
				Submit patch?

#bug crypto.js and openpgp.js are requested multiple times
	reproduced with Preferences page

Render everything in doc/ as items
	List them under /help.html

#bug when replying, duplicate replies are posted
	cause: perl and php will generate different messages
		cause: php doesn't strip >> or replyto token
			solution: ensure php strips it too

Content-Length can cause problem
	If full page fails to download, browser may return error
	Typically sent with static html files
	How to disable it?

#bug with PHP enabled, replies create a dupe
	Dupe contains >> token at the bottom (from access log)
	Other copy does not (from PHP)
		#cause is cookie: and host: footers
		[in progress]

Rename "beginner" to "hint" or something even better

<script language="JavaScript1.3">

Resolve issues with missing modules. Add everything to lib/ dir

#IE4 has too many redirect dialogs when Enter is pressed to sign in

Create token which allows a new item to "overwrite" an item
	Perhaps only admin or original author?

Warning when write content becomes close to too long for GET

Summarize >1k points
Only display points if > 1k

#bug going back to a page with [x] advanced does not update checkbox status after it is has been changed down-history

Bill of rights for users
1. Users can download their data in a useful format.
2. Users can review the full vote record.
3. Voting is a right, not a privilege. All clients will be accommodated.

Split config/admin/debug into log file and stdout

#bug figure out wtf is going on with GitPipe and why there are so many "fatal:"s

Last seen for new user is not updated correctly

Update last-seen times with ping

Check for public key on server and re-upload if missing

Vacuum old items
	Items older than 1 day
		And don't have following tags:
			keep
			admin
			vouch

Implement client-side hide/show of class=admin elements x
	Determine admin state by reading variable or array which is embedded in html pages

Event page
	Add end date fields
		or duration?
			for advanced users
	Add latlong selector
	Pre-select date that makes sense
	Form submit target needs update/templating
	Create Event button needs Please wait
	Target form to php if php enabled

Events Page
	Split into Current, Upcoming, Past events
	Fix no-js display of dates in future (currently just 01:00

getElementById() polyfill for netscape
	until better alternative

Add simple index page for txt/

Put infobox with all of the item's attributes on item details page

PubKeyShare() should not change the current page, if possible
	Make it submit in teh background

Make an archive of 88x31 browser buttons and display ones which test OK

Cache voted items locally so that buttons can be disabled on client-side

Item page :
	Reply box title should be "Re: parent's title" (if there is one)
		All the way up to root comment

Loop through all titlebar elements on page
	Fist one which is visible, make it blue
		Make the others all gray (inactive)
		element.offsetWidth > 0 && element.offsetHeight > 0;

#todo #bug 404 page links do not work with relative rewrite

"New Items" page for items not processed yet
	added to by post.php

select * from item_flat 
where (',' || item_flat.labels_list || ',')  not like '%,vote,%'
and (',' || item_flat.labels_list || ',')  not like '%,keep,%'
and (',' || item_flat.labels_list || ',')  not like '%,accept,%'
and (',' || item_flat.labels_list || ',')  not like '%,pubkey,%'
and (',' || item_flat.labels_list || ',')  not like '%,reply,%';

Installer/dependency installer
	which apt-get
		install debian modules
	which yum
		install fedora modules

Add number of unprocessed text files to stats page

After rebuild/upgrade, have setting which notifies
	This server was recently rebuilt, still updating
		Remove message when update = 0

#bug on Authors page
	The first time new author appears, their author is not colorized nor has an alias

Archiving
	Select entries 
		older than X seconds
		Not voted on by anyone
		Not part of a thread
	Add to zip file
	Remove from tree
	
Handling text file removal
	Find deleted files via git
	Remove item page
	Rebuild all associated pages

Add one-click Bump button to top menu

Write page -- client-side save of preferences
	Checkbox already exists

User keys should also be voteable on?
	Isn't that what vouch does?
		But also perhaps friend and flag and all that too?

"Message the Admin(s)" link which goes to reply form on admin's pubkey page

Prefill reply box with >>
	Optionally by default?
	Because NN 1.22 does not seem to support <input type=hidden>

setcontent/abcde/abcd2
setcontent/{hash of 404 url}/{hash of content}

Figure out how to fix hasvote dupes in vote table
	Probably need to differentiate votes and system tags

split lighttpd.conf into templates?
	necessary?

cleanup stale items
	items with 0 children
		older than x days
	items older than y days
		and no "keep" votes
	what else?
what else to clean up?



====

Arrange files into subdirs by author key
Rename them to title.txt, where appropriate

Crypt::OpenPGP

Prefs link appears for no-JS #bug #issue
	Prefs page is blank with no-JS

Use item_page table to remove/rebuild all pages containing deleted item

JS-driven global new items indicator

add "roles" for username
	then every author with that username
		if approved by admin444
			gets allowed actions

Select all untagged (or unapproved) items
	Put into zip file
		Remove from txt
			Commit in txt

Instead of index db being stored under version hash
	Store it under md5(all schema creation statements)
		Then it doesn't have to change unless schema changes

Fix bug in progress indicator (debug output)

In friendly mode, instead of >>12345, display the title

DATA page
Zip files
	Multiple zip files
		config
		text files
		pubkeys
	Refresh with update



Generate json sets in /author/friends.json /votes.json and so on
	For consumption by client
		But also how to when nojs?

If an exact line more than 5 words long is matched in any other files [>>]
	(create a reference link)

If item has no parents
	Generate a full thread page
	
When updating item's touch status
If item has parents, traverse them and update them all
Update the top level thread page too

Display warning if message is signed, but there is no public key to verify

Cut up event_add.template
	So that the dropdowns are individually generated
		Then put sane presets into them

shortlink/foobar/sha1
	added to .htaccess
	added to lighttpd config

Non-JS voting links redirect
	Should redirect to page vote came from
		And include anchor to item being voted on

How to recover from out of space errors?

How to recover from broken perl script errors?

Add ability to type in item hash
	autocomplete with js
		when returned items is 1, display item below
		when 0, tell user to stop typing


add pdf export for devices that prefer it

addalias/5questions/abcdef0123456789

Take stuff that is not PGP-related out of crypto.js

#bug Opera 12.x : advanced controls cannot be shown

default/admin/require_token_for_indexing

Write function to do js injection into pages
	Replace the copy-pasta code

Fill in zipfile(s) in update.pl

Allow profiles to claim client ids
	Items with fingerprint are then assigned to said profile

INSTALLATION
============
perl sanity checks
check for httpd
	options
		lighttpd
		httpd
		..
	start
	connect
	check for access.log



Automatically friend server and operator on account creation
	default/admin/auto_friend_admin
	default/admin/auto_friend_server


Expand PHP shims
	Request > txt > DB > page update

Import for QDB data
	voter_id
	item
	votes
	vote_caption


When generating HTML page
	keep track of its subdir level
	prefix '../' to urls as needed
	this is to get rid of absolute urls

If item is just one line
	And item has replies
		And item has no spaces
			And item looks like URL in other ways
				Like ends with .html
				Contains /
				Especially 2/2/40.html
			But not if ends in .png?
				For now?
Then
	create url alias pointing to all replies to item


Update pages for parent items recursively

Web server handler for potential 404:
	sha(url string)
		check for item
			return or redirect to item's page

Log each script's runtime and output in timestamped logs

In Queue index pages, votes/replies should include parent message in a box

With SSI calculate user's fingerprint and direct them to /fp/abcdef

Import data from FB, G+, IG, etc.

Build threads page
	select * from item_flat where parent_count = 0
		find all children recursively

Add setting to ignore plain URL messages if they are an exact match for a file
	This means no unintentional hit counting via hastext tag

If file is submitted via plain URL, make (optionally) a token noting that

Current Top UI priorities
	Titles
		Already stored in database
		Should replace $hash at the top of items
		Short listing style with titles and attributes only (no text)
	Event listing
		Chronological
		Clear dates
		Grouped by month
		All future/current events
	Author listing
		More friendly table-like listing of authors
			Action counts with sort

Does vote still need timestamp?

Connect users
	Using >> replies for user registration posts
	And/or usernames??
		Any user mentioned can vote to remove the post.

user expiration

link pub-key txt and post from profile

#bug for sub-replies, >> token to be stripped is not set correctly

#bug When 0 text files, there is no Profile link

Colorize item hashes
	Possibly make "short" hashes 12 chars (6+6 for fg/bg color0

[propose edit] button

When >> token is removed from reply box /and/ message is client-signed, the >> isn't replaced, and reply doesn't get attached to parent

Re-enable hashtag links

Try to do a clean install from git clone again
	Current problems:
		./clean-build does not run build.sh for some reason
			Solution: run build.sh manually first time
		access.pl does not work without log/access.log
			Run ./lighttpd.pl and hit the server at least once

Add quick way to transition cache to new version without clean-build
	Or possibly fallback to old cache if new cache is missing

todo events page should have link to add to
	google calendar
	outlook
	apple
	yahoo
	yandex?
	what others?

record referring sites
	generate registry

whenever a new pubkey is posted
	messages that have "begin signed" header
		and are not attached to an existing pubkey
			should be re-checked

claim_admin token
	if older than 30 days and/or approved by admin
		make admin

publish rss for notification apps

user page should show all replies
	local client should log visited time and highlight new replies

make it easier to choose common tags (in progress)

reset avatar cache for author if key is found by access.pl

when replying with hash tags, add them to parent too

identity page: disable username textbox while generating new id

#bug get rid of long words/urls in manual, as it makes android chrome sad

fix the remaining duplicate tags (?)

queue pages should be updated
	and or not have tags on them

#bug iframe should not have a border on post page

javascripted one-click vote buttons that reflect status on-page

#bug submitting write-small form from author pages

#bug queue page contains template token

From openpgp.js docs:
	The dist/compat/openpgp.min.js bundle also works with Internet Explorer 11 and old versions of Safari.
Ensure that this (and the non-min version) is the version that is in the templates


Add titles to items x
	If title token present, use that
		If not, use first X of title x

Make sure links work when pages are viewed locally
	They currently do not, because they're /-prefixed

<bump> button --> "bump"+sign --> submit

re-add write-small to home page
	add lazy-loading of crypto.js
		page needs to work before crypto.js is loaded,
			then buttons are integrated into the page, ideally without reflow

make it easy to switch admin x
	remember admin actions as admin actions when admin changes
		alternatively, multiple admins

Current Priorities
==================
Instant updates
	Client-side DOM fill-in
Nicer-looking threading
	Two-level thread nesting
	"Reply" buttons on the item page and the child items
Generate one page for each thread
	Crawl the thread tree and build a graph

Check for, download, and install dependencies
	gpg
	mongoose?
	lighttpd
	perl modules

#todo
# if we need to read from the db, like to generate.pl
# and there is no database, we can fall back on whatever
# version is available

Make it possible to restore from private key without creating new ID first.

Bug: Why does update.pl do a bunch of stuff right after a rebuild?
	Items need to be added to the sub-repo whenever rebuilding

Make JS load more tolerable on slower connections
	* minify the js (and test)
	* https://stackoverflow.com/questions/20014933/progress-of-loading-external-js-file

** Fix the bug with messages by new users not being processed correctly **
	This happens if the message is indexed before the public key

Adjust avatars: number of asterisks should reflect
	number of votes/replies/responses the author has attracted
		* anon = 1+
		* anon * = 16+
		** anon * = 128+
		** anon ** = 1024+

Generate client hash in JS for added fingerprinting

Review feed.pl
	Fix rss.txt

Add verification that default/ is consistent with repository
	Warn otherwise (settings should be in config/)

Auto-generate server key if one does not exist
	Store its id in config/admin/server_key_id

Ensure that maincontent tags are present at the right place on all pages
	<main id=maincontent><a name=maincontent></a>

If logged in
	Periodically check for public key on current server
		If doesn't exist, resubmit

SERVER MESSAGE SIGNING
======================
Does server.key.txt exist?
	No:
		generate gen-key-script
		Generate key with gpg --unattended
	Yes:
		Sign message with it

FILE TYPE SUPPORT
=================
Files should be eventually uploadable...
	Somehow
		For trusted users

Other filetypes that can be supported
	latex
	pdf
	txt
	doc
	xls
	and so on

Consider changing background color based on time of day?

FEEDBACK FROM L.F.
==================
it might be helpful to have the tags right on the home page, so that it's not landing on a jumble of messages. + 
2) Submit items via URL without any additional prefix x
   * e.g. http://qdb.us/text.goes.here x
   * test if spaces work in GTr +
3) Set up short URLs to accept input (for live version)
4) Make UI smaller
5) Make links for voting so that form submission not required

Consider changing background color based on time of day?

FEEDBACK FROM L.F.
==================
it might be helpful to have the tags right on the home page, so that it's not landing on a jumble of messages.
Other things can be used to categorize these textboxes and give them more meaning to the user, such as titles, dates, etc.
It might be somewhat counter-intuitive to have the pages going from 14-0 on the top, maybe consider adding a "go back" alongside/instead of these.
xUnderlining 'publicly and right now' may be confused as a hyperlink, maybe can be left un-underlined. but if you want to emphasize this consider bold or italics
xAlso, as a personal preference I think the ellipse around the numbers can be removed or made into a rectangle
And consider adding a title/informative header to the page in general, to give more context to what this page is.
   It could be something like "hike.qdb.us" on the very top, a very short description underneath it, and then tabs (home, write, tags, manual) go underneath that

Add to specifications:
   items are always 0-9a-f{40} (lowercase)
   authors are always 0-9A-F{16} (uppercase)
   csrf is always 0-9a-f{32}
   until better specifications are arrived at
   consider an odd-numbered hash of some kind for uniqueness? +
      e.g sha1 with one char removed or added or something +

Write
   [x] enable longer text support
      --> js changes form type to post
         --> goes through php receiver
   what are limitations and how to not lose submission??
      maybe issue a backup get just in case?
         only do this if text is long?
            what else?
test mode: remove random characters from scripts when embedding them in page

How to make things easier???
   More flow can be achieved with more one-click actions
   Most common tags should be one-clickable for JS users
      And possibly for non-JS users, just make them links
      Logged in users should vote as themselves by default
         Make sure this is very, very clear, possibly with a second confirmation 
            [ interesting        v ] [ funny ] [ spam ] [ ... ] --> goes to /abcd.html#vote
            | Vote as Anonymous    |
            | Vote without signing |

Somehow handle cleanup of old .html files

Fix Tags page so that correct counts are displayed +

Add roles directory
    Add roles/admin and roles/moderator
        Add support for having multiple public keys in here as text file

Add client-side handling of HTTP 431 messages when submitting something new

Function to add file to index and update affected pages

Untagged page = all untagged posts
 - make it easier to vote on this one

cookie-based prefs
 - stylesheet
 - hide non-essential ui elements

Maybe try Perl PGP modules? +

No pubkey and/or bad sig should result in big red warning on page/listing +

Front-end signature checks/indicators in input boxes +


js fallback for saving via "more options" link on write-small.template


Hide voting, weight-setting, and other messages from home page
   Add an /all page that displays a feed of everything

When private key is pasted into [restore] textarea,
   automatically check it for presence of private key
      restore if it validates

Ensure caches are deleted when a vote occurs

Merge vote and reply forms

Add a message that appears the first time someone is posting something, like on HN

[Admin] has assigned a weight of [100] to [ABC]
abc can assign a weight of up to 100 to anyone else?

Entertaining stats page
   top voter + top tags = top tags by voter
   top voters
   top used tags
      add to profile page
   number of voters
   number of vote records
   busiest days?


rebuilding everything twice is a good way of maintaining integrity

forgot to add conversions to user pages

mod_security can interfere with some signed posts #known

curl
    add to tree
        add timestamp

textarea onchange
    begins with header?
        verify with openpgp
            green if valid

Validate signed input on Write page
    textarea onchange
        begins with header?
            verify signature with opengpg
                green if valid

Link target encryption key with parent id key using gpg --list-keys
   This way "Encrypted message for ..." is linked to the correct profile

Feeds list
   OPML
Make post.html redirect to next drop from access.pl, which will contain any newly-added posts as a list.
   If there is only one post, automatically redirect to it
   Otherwise, "is this one of your posts?"
   Create IndexLogLine() in index.pl
   Create IndexParentLine() in index.pl

Make adding new views easier
Add support for linking sister sites
   Add list of sites in config(?)
   Add page
   List them all on page
   Add menu item for page

Cookie auth via secret URL per public key, encrypted for that key

===

Add CSRF token to reply form


Add support for messages with multiple ENC_TOs
   Add loop
   Limit to 5? 10?
   List all of them on details page
Add support for public key included inside signed message


Rewrite clock value in php

Voting links cause crash in Mosaic 2.0 and 1.0

#bug Reset settings (with js) does not change checkbox values to their defaults

PHP handler for event.html
	Set date pre-set to current

#bug on iOS, the ticking clock causes the "paste" command to be inaccessible
	When a textarea is held down, the Paste command appears briefly, but disappears as soon as the page needs to refresh
		make clock off by default?
		add clock in settings?

Generate version page for each version mentioned in changelog


===

#todo replies which are #notext should be displayed as small things with just the tag/token

>>dd0901e40bdeb9cd6db3c81dd3cfd81d6832a50a
timestamp=1601009222



===

#todo replies which are #notext should be displayed as small things with just the tag/token

>>dd0901e40bdeb9cd6db3c81dd3cfd81d6832a50a
-- 
Authorization: admin
Cookie: EB8132749B4913F4
no more templates outside of a subdir in template/

eventually html/ template subdir?


===

>>aa9e0f23260baa14f1bd613a5a23489eaaaf4678

#todo reply form should set auto reload to true



===

>>4e706751c33940ed26cbf0cf1b588ca52e2795a3

#todo maybe files should stop after the page queue builds up a certain number?

or perhaps finally architect it all into one queue? #tEcHnIcAlDeBt



===

>>4e706751c33940ed26cbf0cf1b588ca52e2795a3

#todo maybe files should stop after the page queue builds up a certain number?

or perhaps finally architect it all into one queue? #tEcHnIcAlDeBt


===

#todo #meta

fun things to work on

tag permissions ... so close!

upload menu button: attach SpawnUploadForm()
   which will create upload form, with file filed, click the field, and then perhaps even start upload?

todo disable fresh.js if 4xx response #meta #todo

>>8b63e10cf06028ff34a8e9e421fdc9d804bcc253


===

profile page should be not cached?

somehow needs to do a better job of getting rid of old logged in displayed status after logout

maybe as simple as another setTimeout

#meta #todo



===

bigg todo: #todo #meta

make some kind of thingy to put all the setTimeouts together so that it's neater



===

>>7cdc85f2d5bbb327916b4edc101ed332a8c21c4a

#todo #meta

PRAGMA journal_mode=WAL;

=======
#meta #todo textart is jacked on bromite

>>7c9731d0e87e24368d11da7941ba2b7dfb8d4944


===

existing hashtags should not need hashtag symbol to be picked up


===

#todo #meta echochamber for votes

#todo #meta standardize on configKey vs configName
-- 
Cookie: 47000B9BF2D025BA
Host: localhost:2784


===

events, tags, authors all need fallback empty pages #meta #todo


===

#meta #todo strip metadata and write images into compatible format.
already done for gif, but now need to replace original image and change its hash.


===

#meta #todo need even better keyboard which ie3 and nn2 can use.
-- 
Cookie: 39AB600C7BAA6F3D
Host: 10.0.2.2:2784

===

#meta #todo need even better keyboard which ie3 and nn2 can use.
addtext=Send+Now

-- 
Host: 10.0.2.2:2784


===

require profile mode is janky and locks out links and any non-cookie users

#todo #meta


===

require profile mode is janky and locks out links and any non-cookie users

#todo #meta

===

require profile mode is janky and locks out links and any non-cookie users

#todo #meta



===

#todo auto arrange windows one by one, adding height values, placing them one after the next, unless already in preferences #meta

[Solved puzzle with this prefix: 1337]



===

>>51cc55aa4b0452ab1d5d33a6c5dd13eb06d3d9d6

another new feature is dev_mode, which allows writing directly into the project docs from browser ui by using #meta tag along with #todo, #bug, or #brainstorm.

this item will end up in todo, if i am not mistaken, because it is first in the list. i decided against writing to all three in this situation (for now)



===

require profile mode is janky and locks out links and any non-cookie users

#todo #meta



===

#todo auto arrange windows one by one, adding height values, placing them one after the next, unless already in preferences #meta

===

#todo #meta replying by non-advanced users is not discoverable 


===

#todo #meta get rid of "requires javascript" messages on write form

plan: use document.write to output the extra things

verify document write is pretty compatible

possibly make it a flag
-- 
Cookie: 7AD94E26FCDAB1A7



===



===

#meta #rants

Here's what i think about html standards

shitting on the standards is a tradition iin web development that's existed for almost as long ass the the web itsef

since the very beginning, web developrs shit on the browsers by writing shit which wouldn't work on them but would only work on their favorite browsers and the browser makers shit on them right back by again shitting on the standards and introducing their own fucking standars which made the web developers' lives hell.

so why the fuck should i as a web developer give a piss about what w3c thinks or what chrome devs think, who don't give two fucks about me, as i have discovered via the responses to all my fucking bug reports, or what other web devs think, who haven't seen a browser besides fucking firefox and chrome and don't know their history and just repeat whatevr stupid fucking drivel google convinces them to believe either directly or through their fucking puppets w3c and mozilla foundation.



addtext=Meditate...



===

Server Message:

There was no admin, and BE6730AEF1A02A70 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600838544


===

IE2 tests did not go amazing.

a) it does not support cookies
b) perhaps light mode should be default?
c) A lot of artifacts from js dislayed on page

#meta #todo #bug
-- 
Authorization: admin


===

#brainstorm #meta 

javascript can set a "pre-render" cookie 

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load 

this would avoid the jump after pageload which currently happens 

-- 
Authorization: admin
Cookie: 95C0CEF4E22CE77B


===

#brainstorm #meta 

javascript can set a "pre-render" cookie 

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load 

this would avoid the jump after pageload which currently happens 

addtext=Send+Now



===

Server Message:

There was no admin, and 95C0CEF4E22CE77B came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600793207


===

Server Message:

There was no admin, and 7F07E42BA26D4063 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600838935


===

Server Message:

There was no admin, and 8C935F2C822180D3 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600806361


===

Server Message:

There was no admin, and 95C0CEF4E22CE77B came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600794975


===

#meta #rants

Here's what i think about html standards

shitting on the standards is a tradition iin web development that's existed for almost as long ass the the web itsef

since the very beginning, web developrs shit on the browsers by writing shit which wouldn't work on them but would only work on their favorite browsers and the browser makers shit on them right back by again shitting on the standards and introducing their own fucking standars which made the web developers' lives hell.

so why the fuck should i as a web developer give a piss about what w3c thinks or what chrome devs think, who don't give two fucks about me, as i have discovered via the responses to all my fucking bug reports, or what other web devs think, who haven't seen a browser besides fucking firefox and chrome and don't know their history and just repeat whatevr stupid fucking drivel google convinces them to believe either directly or through their fucking puppets w3c and mozilla foundation.



-- 
Authorization: admin
Cookie: 714AB4A90591CCA0


===

#meta

>>ab106acf3f19872d9e7335bb2a70ac9808f9f24a
-- 
Authorization: admin
Cookie: BE6730AEF1A02A70


===

IE2 tests did not go amazing.

a) it does not support cookies
b) perhaps light mode should be default?
c) A lot of artifacts from js dislayed on page

#meta #todo #bug
addtext=Send+Now

===

on netscape 4, the font sizes are inconsistent on index0 page
on the plus side, unicode seems to be supported, at least for cyrillic!
very nice

#meta #bug #testing

1600920213


===

Server Message:

There was no admin, and A5A6BF40D1B77686 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600051421


===

Server Message:

There was no admin, and 50209AFB8F0B3D1E came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1600822255


===

>>4bef302d74fd8b953602a895e317f7273793944e

nice changelog, seems to be working atm.

#meta



===

#brainstorm #meta

javascript can set a "pre-render" cookie

what this would do is ask php to set certain elements like beginner and advanced to be display: none on page load

this would avoid the jump after pageload which currently happens

[coin: 1337]



===

#meta

>>ad7c8a33326e47cda9e28ec18118af91d4a93cd5


===

Server Message:

There was no admin, and 2B498300771EAA3F came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601138219


===

>>7e78eda854dc683202aded730fac3d9ec999c806
#meta



===

Server Message:

There was no admin, and 9B792D7EBFFD80BC came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601139722


===

Server Message:

There was no admin, and 8AC1209B419437D3 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601156136


===

Server Message:

There was no admin, and 570C25FB446E20E8 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601156156


===

#meta

>>799a2f913ba6bd44208e3db5ca29f15dae514630


===

Server Message:

There was no admin, and B45B8BCFF0C84334 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601205923


===

Server Message:

There was no admin, and 1273BAA3B3B1CF9C came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601310964


===

todo disable fresh.js if 4xx response #meta #todo

>>8b63e10cf06028ff34a8e9e421fdc9d804bcc253


===

Server Message:

There was no admin, and 8AC1209B419437D3 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601332081


===

Server Message:

There was no admin, and 1F8F59DD3EC1CF45 came passing through, so I made them admin.

(This happens when config/admin/admin_imprint is true and there is no admin set.)

#meta

1601332332


===

#meta

>>86beec4f2957479b6f23760ed590542b4dd17677
-- 
Host: sm.chg.pw


===

#meta

>>210bab0f0ce2988df5b89bdcc7a15f12137e1945
-- 
Host: sm.chg.pw


===

#meta

>>8e28a656e3a31807291b17531531803fb5dc9859



===

#bug netscape 6, the loading indicator causes page jump after "ready" goes away

perhaps it makes sense to not make it go away and just leave it there, unless it is clicked?

#brainstorm

#meta


===

#brainstorm

the skip links look strange in links browser, and they do not collapse the dialog, so maybe they should say skip unless js?

#meta

WriteLog('begin_capture'); end_capture
Then output what's in between to extended report on page or item

===

output in log/log.log could look more identifiable with the snow output

===

if page is getting replies, user should have a choice to auto-display new comments
===
should setting/ be renamed to set/ ? to match the set command?
