⌈⌋ ⎇ branch:  freshcode


Check-in [570f97a5af]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Summarized changes directly from /changelog
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 570f97a5aff7fe7414ddc02d39ef751ffa1a1d6d
User & Date: mario 2015-04-29 20:53:07
Context
2015-05-15
19:07
Filter duplicate entries from SF.net file feed. check-in: 6b2e4d3950 user: mario tags: trunk
2015-04-29
20:53
Summarized changes directly from /changelog check-in: 570f97a5af user: mario tags: trunk
2015-04-21
19:52
Return just HTTP 200 status with project:{name:null} on non-existing entries. Alias "hide" and "hidden" fields. check-in: 49047f4b8d user: mario tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Added NEWS.



















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473

0.8.0 (2015-04-05)
 * Remove "already". Reads like a bug, when it should just be informational.
 * Width limit for sidebar.
 * Firefox misinterprets `whitespace:no-wrap` again.
 * Fixed "TUV" link. And raise preview size to 120x90 now.
 * Cut down the title length to 64 chars beforehand.
   (New layout expands too much else.)
 * Full sized preview image 160x120
 * Fix spacing to header block.
   Correct nowrap issue for title/version/datetime in .project headers (Firefox).
 * Spread out project name letters further (ABC, DEF, GHIJ, KL, MN, OPQ, RS,
   TUV, WXYZ, 0-9) to match up with current distribution.
 * Mini template includes for new table #mainsplit and .container-width
 * Updated stylesheet to use table-layout for #main/#sidebar split.
   Padding still needs work.
 * Autoupdate support for LaunchPad project URLs. (Uses `release_notes` field
   from Launchpad devel API.)
 * Fix launchpadlibrarian user image lookup, and github avatar url regex.
 * Don't keep destroyed2 state.
 * Allow only 1-letter proj_name suffixes.
 * Omit `deleted` entrys from spotlight.
 * Filter addition for spammy GitHub releases.
 * Remove doubled `em` tag.
 * Launchpad-releases for frontpage sidebar.
 * Introduce `launchpad-releases` page.
   Updated polling with less delay.
   (So far only 30% of projects information received, less than 12% of release infos.)
 * Make freecode/freshmeat.club just aliases of main freshcode.club domain.
 * Updated user agent string with concrete version number.
 * Workaround for session cookie / CF issues.
 * DrChangelog: removed template rules,
   added regex rule info for `changelog` module,
   mention current github querying breakage.
 * Experimental launchpad project+release polling.
   (Not using OAuth, so decidedly slow-running; gonna take two weeks before it gets any results.)
 * Friendlier placeholder page in case of SQLite locks / running update scripts.
 * Add extra Unicode backtick to allowed input::_text filter.
 * Make tag/ pages and search results NOINDEX for spiders.
 * COLLATE NOCASE for version_exists() check
 * Addition of redir/ script for obfuscated URLs (not sure if needed though).
 * Addition of gtkapps, kdeapps, qtapps, cliapps to feed list.
 * Detect other Twitter URL variations.
 * Forum: threads with new submissions order on top now.
 * Prevent recollapsing of forum entries when editing within the reply/form fields.
 * Make actual timeout for session also 7 days.
 * One-time SQL fixing scripts for submitter_image.
 * Fix again (like the fifth time) the user image updating logic.
   Partial $newdata submissions had $this[submitter] still empty, therefore
   stripped previous user icon url/hash.
 * Add opendesktop.org/gtkapps/kdeapps/etc. to frontpage sidebar
 * Text: clear up that CC-BY-SA only covers the project description/text, not
   the project itself
 * Compare search term also against plain project `name`.
 * UI-tag as 0.7.7
 * Document new gravatar/identicon options @github / @sourceforge / @launchpad.
 * Add ->nl newline conversion, ->f_version filter,
   and url_user_icon() utilization (@github / @sourceforge / @launchpad),
   keep local part from email-style (gravatar/etc.) submitter if plain nick is absent,
   fix comparison to previous submitter name (else emptying `submitter_image`).
 * Introduce `f_version()` filter to compact spaces, and strip leading "v".
   Complexer `url_user_icon()` to convert @github, @sourceforge and @launchpad
   user names to gravatar/user images.
 * Set db()/SQlite timeout to 15sec.
 * Update header_stats 3x per day
 * Retain via: field from spooled entries,
   spupport cmdline flag --now for instant insertions.
 * Block `wagic` (auto-regenerated master release stamps).
 * Added transactions as suggested by Lothar.
 * No more .trimmed for github-releases sidebar block.
 * Introduce `X-Content-License:` HTTP header.
 * Security fix: unescaped original input in diff/page_rc.
 * Remove redundant border=/align= from frontpage project index.
   v0.7.6, readd header "beta" marker+color, Twitter icon in footer.
 * Change explanation for `image` field  ("leave empty" for autogenerated
   homepage screenshot).
 * Better description for versioned_url() regex pattern.
 * Lessen delay for incoming/ imports to around 6 entries per day.
 * Reveal incoming/ spool files in moderator stats.
 * Updated description.
 * Added contact mail address alternatively.
 * p_key_value() with configurable \S+ placeholder,
   used by lib/autoupdate to match exclude=1,2,3 versions.
   Prepared import_spool for deferred / autoupdate-injected updates.
 * Switch uneeded include() for readfile(), all feed templates are static.
 * Raise delay to around 4 hours. (3 was too frequent.)
 * Five tags maximum copied per tweet (still shuffled), JSON API debug msg.
 * Add allowed `,` separator to cron specifiers.
 * Add #flags/#incoming count to stats (for moderators).
 * Add linuxgamenews.biz as news source.
 * Introduce `IS_ADMIN` shortcut, header stats for moderator infos,
   fix flagged entry clearing.
 * Decode sourceforge URLs to skip %20 for version extraction, also try to
   capture -beta and -rc suffixes.
 * Omit tags with just one reference from tag"cloud"; scale text down a bit.
 * Rename QPL to QtPL
 * Automated cronjob re-registration from `x-cron:` plugin meta fields.
 * Switch to raw `twurl` requests for Twitter updates, as that allows to
   embed screenshots easily.

0.7.5 (2014-11-19)
 * Beta stage, declare version 0.7.5.
 * versioned_urls: Permit version-tuple access ("$version0-$version1-$version2")
   as well.
 * Add 0.7 DB scheme extensions: via, editor_note, autoupdate_delay
 * Switch to manual dependency loading
 * Xfer cron.job for freshcode.clb JSON feed importing.
 * empty default files
 * Exchange feed selection, add template stubs
 * Allow direct invocations, remove [END] and API mapping.
 * Remove uneeded pages, cron-jobs, doc/*, templates for FC-mirrors.
 * Empty default SQlite store (for mirroring)
 * Create new branch named "mirror"
 * Current (0.7.5) sqlite database scheme (added: via, editor_note, autoupdate_delay)
 * New links to Linux Games DB, Gtk-Apps, openDesktop, Portable Linux Games,
   TuxArena, LinuxSoftNews.WP, and FOSSHUB.
 * Forgotten fix to manually split up projectname.ext
   which the recent change to allow language-suffixes necessitates.
   ($ext will no longer consume .json or .rss and .atom by itself).
 * Revert back to slightly more spacing between project title, description,
   release notes, and tag list.
 * Reduce extracted ::scope_tags() per unique()
 * Twitter feed of recent releases.
 * CSS for audio tag, .editor_note (submit form), more narrow frontpage listings,
   styles for "GitHub releases" entries.
 * Introduction of releases `via` (= "form", "api" or "autoupdate" and "spool")
   and `editor_note` fields (raw HTML, displayed per-project in /submit form).
 * Added plugin meta for current cron hook timing.
 * Added plugin meta for current cron hook timing.
   More elaborate import-delay calculation. Field `description` condensed.
 * Added plugin meta for current cron hook timing.
   Output html attributes now double-quoted (plain htmlspecialchars usage),
   more constrained github.releases SELECT.
 * Allow singular language .suffix in proj_name() identifiers.
   New gimmick: "theme-song" in URLs will transform into HTML5 <audio> (specifically for OpenBSD entry).
 * Add github-releases to RewriteRule dispatcher,
   config: set default user-agent string for cURL *and* PHP streams.
 * Add CloudFlare and DB statistics to frontpage (replacing no-ads whitebox).
 * For absent results, allow singular ->property_row access to silently return NULL.
 * Avoid lengthy loops with SQL SELECT queries in cron jobs, to eschew SQLite
   database locking up meanwhile.
 * GitHub/Archive/API polling job.
 * Add GitHub/Archive list and cache database polling.
 * Split news feeds and fossies.org scraping.
 * int typecast for revision date display
 * Hide (only log) absent session/admin flag
 * raise to 150 character description for project name list
 * Fix project-name normalization for raw incoming/pool imports.
 * Introduce structured metadata (HTML5 itemscope/itemtype) for Google display.
 * Add beOpen to news and page_links
 * Print full license name as title= attribute for tags.
 * Fix version-cleanup for release::exists() check, again.
 * allow up to 22 entries from fossies.org
 * Fix spool for partial updating (instead of overwriting new entries).
 * Switch to current working directory in config.php, to avoid relative path
   handling in cron scripts.
 * Add implicit SourceForge= url for SF-imports.
 * Highlight every major N.0.0 project release.
 * Prepared submissions from incoming/ text files.
 * Add title=description to list of project /names.
 * Renamed feed names to just /projects.rss|atom|json (instead of internal
   /projects/xfer.rss|atom|etc).
 * Add input::nl() newline filter (normalize CRLF to just LF)
 * Added MPL-1
 * Normalize version number for release::exists() check (to avoid mismatch
   for autoupdate, which probes existing versions before inserting new release)
 * Merge `description` and `changes` for RSS feeds.
 * RSS skipHours, fixed ?ext= handling for Atom (gonna get dropped however),
   and some HTTP cache-control
 * initialize empty $_SESSION array either way
 * Missing `event` argument for .preventDefault() in forum callback
 * Capture non-existant favicon.ico (log is growing excessively else)

0.7.0 (2014-08-29)
 * More colorization for index links, default css color classes,
   a few more links/
 * Filter out deleted and hidden release from feeds.
 * Capture OpenID failures (still not working with self-signed certs).
 * Convert relative links into /root based resources.
   Try base href=/index.
   (Googlebot tripped over something).
 * Add formatted timestamp to log.
   Unpack project_tags array.
   Use `deleted` flag instead of `hidden` per default, unset both on submitting new revision.
   Map homepage on GET /urls, and accept "website" as alias when populating afresh.
   Remove `submitter_image` unless authorized,
   and rename with_permission() to requires_permission().
 * Reintroduced API logging.
   Names in Other URLs field are no longer lowercased.
 * Reordered index sidebar blocks (new fossies.org links)
 * Added specific extractor for fossies.org,
   copies dates along (like for DistroWatch),
   and retains summary as link title=
 * Display matching project (per tag or exact search phrase) as full release entry
   instead of search excerpt.
 * Fix version regex for sourceforge feed.
 * Use 10 release.tags for populating `tags` table.
   Plain arrays, reduce SQL result set.
 * Limit /RC to 100 entries per page.
 * Allow .json as explicit feed/ suffix.
 * Fix default $value to $map[] assignment
 * remove obsolete include(lib/openid.php)
 * Add tags, submitter and urls for extraction;
   default to `name-releases.json` for export file.
 * Project extraction cmdline tool for freecode.com produces a `releases.json`
   for easy importing of previous releases per Autoupdate.
 * Relax editing timeframe for empty versions,
   also don't apply anyway if it's just an edit for version-less projects.
 * Reduce flagging impact (minimum of 2 before flagging opacity on frontpage
   sets in, to allow for project-owner flags)
 * Split up letter ranges (O-Q and R-T)
 * Frontpage project entry opacity based on `flag`
   (so flagging gives visual fallback for first votes, until entry is gone.)
 * Added a few more project hosters/forges.
 * Missing $data parameter for release{} update post-checks.
 * $image instead of $miniature for forum post editing, as to not show prior
   encoded URL, but only default gravatar email if any.
 * Mention /?format=rss shortcuts for feeds (inherited from freecode)
 * Smoother forum post unfolding,
   double escaping for edits removed.
 * Colorize meta/forum link.
 * Add db() placeholder documentation ASCII table.
 * ::http filter was too strict (leading numbers in URLs)
 * Add curl()->assert() to be run after ->exec()
 * Invalid autoupdate() invocation
 * Stop lowercasing project URLs.

0.6.5 (2014-08-11)
 * Use non-autoupdating autoloader.
 * Add basic /meta forum, separate handler and database structure.
 * Split Browser Projects by Tag into /names and /tags links.
 * Introduce project /names browsing.
 * Filtering also sourceforge project links (recurring changesto same project dump).
 * Introduced config.local.php, so primary config can match check-in.

0.6.0 (2014-08-08)
 * Debugging output $project->update() wrapper for DrChangelog
   (also fixed lib/autoupdate.php _rxu rule extraction order.)
 * Reduced number of url-label= examples for empty submit form.
 * Make `$version` replacement work on complete text input (RegExp/g)
 * Using diff now for /admin pages and /rc
 * Reordered gallery, added Fossies.org
 * Add /rc page (RecentChanges diff)
 * Externalized update_rules() - which currently just hides previously
   submitted empty-version project entries.
 * Added img alt= Unicode glyphs for homepage/download
 * Allow search to look for multiple licenses.
 * Removed manual curl() loading.
 * Added popup samples for Dr.Changelog
 * Added small #search_q box in #tools header
 * Split out gravatar email into separate database field `submitter_image`.
   (In templates still called `submitter_img` however.)
 * Updated autoupdate testing descriptions.
 * Introduced "Dr.ChangeLog" for testing autoupdate rulesets
   (regex,xpath,jquery release notes scraping).
 * Three new gallery links: IceWalkers, OpenHatch, OpenSourceArcade
 * Make ->list not forgo absent keys, but substitute values with NULL.
 * Added "Project Spotlight" to page footer, and a cron-job for rotating 3
   random projects in there.
 * Moved defaults into static ::$defaults to also override UserAgent
 * DW in sidebar, a bit more API feed filtering
 * Introduced non-placeholder example key=url list for `Other URLs` in
   submit form; also better filtering prior display.
 * added DistroWatch feed and general version number highlighting
 * New additions: Linux AppFinder, Find Best OpenSource, FOSS Wiki, Libre Projects,
   and Zwodnik, a few more links in the sidebar.
 * Patched fc-submit for Python3 and using `requests` instead of `urllib2`;
   which is kind of necessary due to required SNI for SSL/TLS,           
   usage of verify=cacert.pem should be possibly patched in as well
 * Made `?auth_code` optional for dispatching onto freecode API handler
   (else it would show up regular page instead of filtered JSON).
 * Query only last revision for tags.
 * Remove debugging output.

0.5.5 (2014-07-30)
 * New revisions with version number will now hide previous entries without.
 * URL updating verified for function, also updates separate homepage and download
   fields now
 * freecode-submit with minor adaptions for freshcode.club
 * freecode-submit 2.9
 * API handler now supports some of the FC-3 interface, including update_core,
   publish, and withdraw, and URL reading.
   Made release{} partial updates look into the right data source for name+version.
 * Remove extraneous GROUP BY name, which broken [release_versions] order
 * Add ::scope_tags() and ::state_tag() extraction helper
 * initial API handler (just GET/query project info as of now)
 * Add colorization to trove list
 * Switch __get to parent::offsetGet
 * Add data-tag=$key on trove list optgroup
 * Revert autoupdate_module dropdown for autoselection.
 * Fix prepared $trove[] passing by typecasting COUNT() comparison with 1*?
 * Fixed feed aliases (due to RewriteRule recursion)
 * Introduce Trove tag selection on page_tags,
   tags: removed some natural languages, added new programming languages.
   Add JS .action links in submit page.
   HTML5shim for IE in header.
 * Utilize new :* expression placeholder for search query
   (binding though does not work for count()=? for some reason)
 * Introduced Trove-tags select box.
 * Added sourceforge project import,
   and allow PKG_INFO to understand LSM, Debian control files, and RPM spec
 * urlencode() tags links
 * Too many args for into() wrapper
   (should better use reflection after all..)
 * Allowed optgroups for select_form_options generator.
 * initial Trove map
 * Updated ::map_license and ::trove_to_tags
 * Template for frontpage listings

0.5 (2014-07-23)
 * New logo, initial tags:: handling, canonic autoloader (shared.phar).
 * Introduce language-specific links (Accept-Language),
   and Javascript confirm() for StackExchange sites.
 * Move /submit form into template/submit_*
   and introduce project imports (DOAP, JSON, PKG-INFO, freecode)
 * Move tags handling into separate tags:: module.
 * updated autoloader map
 * removed manual include(lib/feeder)
 * Expanding posts in forum/
 * Reallowed numbers for start of project id
 * Fixed `key` quoting for expand_assoc_*
 * repackaged HtmlPurifier
 * Openfontlibrary added links gallery
 * linuxgames and sourceforge-files added
 * Frontpage feeds now feature linuxgames, sourceforge-files
 * moved img/logo.png
 * prepare for forum/
 * package external lib/ into zip-phars
 * (no comment)
 * Restructured db_wrap{} and :* expression substitution.
 * More optional parameters for ->into() wrapping
 * Default user agent.
 * Trivial error message page.
 * Spaces in wrap_tags() links.
   Optional $$version substitution prefix.
   CSRF token filter fixed to ->name (instead of ->id).
 * Restructured per-project db() query to be only issued once,
   fallback message for non-existent pages.
 * Unescaped delimiter in strip_markup
 * Honor "hidden" flag on frontpage.
 * Allow `$version` URL placeholder to substitute dots with e.g. `$_$version`
 * Allow $title injection, make links protocol-relative.
 * Add project name to $title.
 * Fix "hidden" flag generation, take $prefill_flags into accounts.
 * Fixed RSS/Atom pubDate injection.
 * Use subquery for tags search, opacity & font-size for search entry `smallify`
 * Proper tags normalization (f_tags input filter)
 * Adapt links from /tag/xy to /search?tag=
   and ?user= link now to /search.
 * Introduce search/ function.
 * Move JS functionality out of template/header, to prepare for tags-editing
 * Moved projects_ and index_ output into template/
   Made pagination() reusable into aux.php
 * Remove [x] And it's not spam checkbox (not descriptive, and faux form
   catcher sufficient). Use <code> and <var> for some field docs.
 * p_key_value_rx() now only in Autoupdate{}
 * Add ->into() now when retrieving ArrayObject results.
 * Move preg_replace_callbacks into methods
 * Split out some templates/ from projects/ description.
 * Workaround [END] for Apache 2.2
 * Reuse API I-O to fetch social bookmarking counts.

0.4.5 (2014-07-10)
 * Minor presentational fixes.
 * Add pagination, use 40 per page for now (Freecode had around 25);
   later introduce auto-scrolling jquery..
 * Fix version ->exists() check (always returned 0 due to UNION workaround)
 * Introduce doc/ directory, also for sources etc.
 * Introduced constrained,
   nicer SQL table definition export.
 * Workaround for linux.com broken encoding.
 * Added social share counter output.
   Fixed "csrf" typo; yes, again.
 * Moved to lib/
 * Allow @ in ->text() filter
 * Added atom/rss feed aliases
 * new links http://www.opensourcescripts.com/ and http://www.linuxgames.com/
 * Fixed dangling db_identifier() reference
 * Gravatar image added.
 * Explain link scheme in detail.
 * Added gravatar support for submitter name.
 * Prepare partial update() from Autoupdate
 * Commercial script directories removed.

0.4 (2014-07-08)
 * Copy current sidebar setup of //freshcode.club
 * Introduce ./template/
 * Cut off at 7 tags.
 * ./lib/ movement
 * Fixed license moniker typo "LPGL", and typo in csrf() array,
   versioned_urls regex to check for \b and underscore,
   lowercase p_key_value arrays, allow hyphens in keys,
    →
 * Switched to standard db()-foreach instead of pdo::fetchAll()
 * Dependencies in /lib
 * Opacity for absent download link targets,
   Shadow border for /links images,
   and #sidebar .absolute-foat alternative
 * Removed white background pixels.
 * Favicon, version meta, and $header_add for injected RSS/Atom links.
 * Fixed project ID maiming, and release sorting.
   Added RSS/Atom injection.
 * Now utilizing release{} for update logic.
 * Added ?ext=format support,
   prevent direct *.php invocation using [END] rule (requires Apache 2.4),
   so only virtual resource names /project/etc can be invoked and mod_rewrite
   hence pre-filters allowable project IDs.
 * Added Atom/RSS output support
 * Removed commercial links, prepared for some generic community link groups in
   the sidebar.
 * Utility code moved into lib/
 * Slight restructuring of db() hybrid method to shadow db_wrap{} class
 * Use arctan for proportions
 * Consolidate release/project database interaction.
 * lowercase tags, scope, state fields,
   add csrf(),
   fix openid copying as submitter_openid
 * Fixed /login link
 * prepared minimal CSRF token use
 * Fixed `wrapping` for db_identifiers.
 * Use custom `proj_name` input filter (keep dashes in project-name, but
   lowercase implicitly)
 * adapt db() queries to reuse `release_versions` or alike subset.
 * Add ?num= param for /feed/xfer
 * Introduce a coarse `strip_markup` filter, only for common presentational HTML
   (no `strip_tags` substitute, leaves lone angle brackets alone)
 * Make shadow a bit stronger again for /links page.
 * Make login required for /flag in either case.
 * Precautiously add a little spambot diversion.
 * (no comment)

0.3 (2014-06-30)
 * curl() wrapper
 * Populate `tags` table.
 * Moved utility code to (misnomer) layout_aux.
 * Utilize HTML5 pattern= regex and maxlength= validation, nicer help texts added,
   select_form_fields now preserves default non-standard values,
   $licenses had been moved to config.php,
   and input form data and field formats are now constrained individually.
 * Reimplemented `key` wrapping, rename ->broken to ->in_clause (also not
   needed with current SQlite anymore), and display PCRE /e with _callback.
 * `tags` table
 * Added jQuery and .trimmed sections hooks.
 * Added logout facility, JS links to populate form with a few common OpenID
   providers, and unsets some $_SESSION fields here instead.
 * social media buttons
 * Add empty `name` and `openid` defaults for uninitialized session.
 * Capture /login page as well.
 * Removed/fixed default * selector overrideing font sizes,
   styling for /links gallery, social media buttons, .trimmed project summaries.
 * Utilize release_versions view, add social media share links.
 * Smaller icons for changes and tags.
 * callStatic filtering now without prefix
 * Add optional /login page.
 * Switch to AGPL for now,
   utilize new `release_versions` view.
 * Tag cloud and searching projects via split-up `tags` table;
   proportional need a better quantification formula.
 * Link list is now a board of buttons.
 * Initial exchange format /feed/xfer and per-project /feed/linux JSON release lists.
 * New indexes and views.
 * config.php placeholder
 * Add [license] drop down menu with abbreviated names
 * Remove debugging output in session, prettify login box,
   input::has() and ::no() correctly accept list of key names,
   add jquery

0.1 (2014-06-25)
 * Initial website implementation: project submit, index listing, projects/
   page, and moderation flags.
 * initial empty check-in