Merge branch 'master', remote branch 'origin' into auto-maintenance
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - AUTO-MAINTENANCE
7      DONE . Terms Of Service acceptance
8        DONE . print date of hard switch
9        DONE . TOS version
10        DONE . user TOS acceptance (db field)
11        DONE . show TOS ([show me later, yes, no]/[yes, no])
12        DONE . switch-off date
13        DONE . manage accept
14        DONE . manage refuse
15        DONE . show current TOS
16        DONE . disable user reason integer field and remove SUSPEND state (db, php)
17        DONE . fix tos layout
18        DONE . opt - download TOS
19        . opt - checkbox for anonimous users with message when not checked
20        . opt - button enabled when arrived to the bottom of the TOS only
21        . opt - check TOS version between config file and TOS file
22      DONE . show guarantee (/guar <login> command)
23        DONE . multi-language
24        DONE . command documentation
25        DONE . manage disagreeding users investigation
26        DONE . self guaranteed
27
28      . email validation
29      . account expiration
30
31
32    DONE - CONTINUE FEATURE
33      DONE . replace explicit strings with multilanguage array
34      DONE . add a php downloader with filtering on allowed requests
35      DONE . save points every game
36      DONE . modify points calculation to include order and mazzo
37      DONE . exclude not standard types from statistics
38          DONE . daily reports (1 for each active tournament)
39          DONE . monthly stats (for normal match only)
40      DONE . show current match ID when created
41      DONE . add info about continue to the info page
42      DONE . add command to continue
43          DONE . check consistency of the request
44      DONE . rearrange users and game status to continue the selected match
45      DONE . investigate user reordering ??
46
47    - WEBSOCKET TRANSPORT
48      . refactoring $enc attribute management
49      DONE . reintroduced $enc = 'plain' for websocket
50      DONE . fallback for not correct WS version
51      DONE . fini of ws stream
52      DONE . reactivate compression
53      DONE . fix xynt_test01
54      DONE M2: brisk working
55      DONE . manage multiport apache config
56      DONE . manage headers correctly in sac-a-push
57      DONE . manage transport.close method where required
58      DONE . xynt_stream: manage fallback to multiple ports
59      DONE . manage fini for ws
60      POST . server: manage input data from clients
61      POST . manage ping/pong (seems not required)
62
63      DONE . client (xynt_streaming.js)
64      DONE . server (transport.phh)
65
66      DONE M1: xynt_test01.php working
67
68
69    - improved S
70      . db update (add components, maybe single string)
71      . filter in index.php
72      . filter in index_wr.php
73
74    - prefs API:
75      . prefs_assign(content): assign json content as output var
76      . prefs_apply(prefs_new): apply new content to g_prefs and system
77      . prefs_load(content): load json content and apply to g_prefs and system
78
79      . prefs_update: update preferences temporarly
80      . prefs_save: save to the server the new prefs
81
82    - preferences (listen into preferences)
83         // js var, volatile server, (db server || cookie)
84         temporary: js var, volatile server
85         permanent: js var, volatile server, (db server || cookie)
86
87      . data from db OR, if missing, from cookies
88
89      . update values
90      . database change
91      . MANAGE NOT AUTH USERS
92
93    - preferences (with "modifiable S")
94      . Mod. S: new flag into database
95      . graph infrastructure
96      . new box to edit color
97
98   MAJOR |
99  -------+
100    - BUG: some connection to the named socket fails
101    - Not simultaneous more then one stream
102
103
104   MINOR |
105  -------+
106    WIP - try to be more antivirus-friendly
107    - multiple rows between games
108    - packetize and automatize php-ancillary and apache module
109    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
110
111
112   DONE |
113  ------+
114    DONE - temporarly server hung not reflected on user timeouts
115    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
116    DONE - page still opened after the server restart
117    DONE - log_legal address fix
118    DONE - manage too fast reload in xynt-streaming
119    DONE - add xhr as transport layer and manage different streams better
120    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
121    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
122    DONE - save/restore database
123    DONE - into the room local step remains -1
124    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
125    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
126           in the first tentative, the second works
127    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
128           problem was a call to a static parent method instead of the overrided child method,
129           substitute self:: with the dynamically get class::)
130    DONE - garbage management
131
132    DONE/FROZEN - problem with getpeer (HOSTADDR)
133
134    DONE - slow cards distribution
135    DONE - substr to mb_substr
136    DONE - parametrizations:
137           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
138           . parametrization of SITE_PREFIX(_LEN) define
139           . move the name of the named socket into the configuration file
140    DONE - manage and test cross forwarder between table and room
141    DONE - setcookie (for tables only and persist prefs)
142    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
143    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
144    DONE - unneeded garbage_time.expired access
145    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
146    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
147    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
148    DONE - configuration file management
149    DONE - app level keep-alive
150    DONE - index_wr other issues
151    DONE - from room to table
152    DONE - from table to room
153    DONE - chunked
154    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
155    DONE - partial write for normal page management
156    DONE - index_rd_ifra: last_clean issue
157    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
158    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
159    DONE - index_wr.php::chat
160    DONE - index_wr.php::exit
161    DONE - index_rd.php porting
162    DONE - generic var management from internet
163    DONE - index.php auth part
164    ABRT - index_wr.php::reload - reload is js-only function
165    ABRT - keepalive management - not interesting for our purposes
166
167  BRISK4 (mammuth)
168  ======
169
170  - STEP MANAGEMENT VERIFY
171  Slim Paragraph
172  DONE - move the garbage timeout on file
173  DONE - in index_rd load all data only when required
174  - briskin5 alignment
175    DONE . extern del garb_timeout
176    DONE . user_load parameters verify
177    DONE . Bin5::load_data and Bin5::save_data refactoring with
178           data split
179    . move many function into "Bin5 class"
180  - garbaging of .step files
181
182  DB: - initial usage
183      DONE - configurabilità file o db
184      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
185      DONE - travasatore file to pg
186        DONE - travaso punteggi
187        DONE - memorizzazione nuovi i punteggi nel db
188        DONE - gestione classifiche in SQL
189          DONE - produrle
190          DONE - mostrarle
191
192      STEP 1.1
193        DONE - points archiver
194
195      STEP 1.2
196        DONE - partial usability if database go down.
197
198      STEP 1.5
199      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
200
201      STEP 2
202      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
203      - modifica password   
204      - ripristino password 
205
206      STEP 3
207      - comunicazioni di aggiornamento (stato salvato sul server) 
208
209  DONE - var $G_base aggiunta per gestire include in include da path differenti
210
211  BRISK3 (trusty)
212  ======
213   DONE - donameter
214     DONE - G_donors
215     DONE (WOW!) - js object with infos
216     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
217            to prevent fast reload)
218     DONE - cookie per non assillare e visualizz.
219     DONE - graphical donameter
220     WIP content (in conf.)
221
222   DONE - numero di tavoli auth-only nel .brisk-install
223   - isolation
224     TEST - ricalcolo delle persone in piedi quando si cambia modalità
225     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
226     DONE - non leggere le chat di quelli non autenticati (in isolation)
227     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
228     DONE - treni non auth da nascondere 
229     DONE - verso gli altri ??: uguale a prima
230
231   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
232   coniglio
233   only auth strictly
234   placing limits to config file
235
236 Dunque, 
237
238 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
239
240 - cosa cambia tra le tre coppie di classifiche: 
241   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
242   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
243
244 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
245
246 Un esempio per chiarire:
247
248   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
249     -2, 1, 2, 1
250   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
251   
252   a parità di score tra utenti va più in alto chi ha giocato più partite.
253
254 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
255 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
256
257
258   
259
260
261
262
263  BUG
264  ---
265  
266   DONE - paste da demauroparavia
267   DONE - recupero partita per re-login con password
268   DONE - problema "|" nei nomi (manca enhance degli script lato server)
269   - problema col treno se mouse sopra mentre stringe (verif)
270   
271  MINOR
272  -----
273
274  NORMAL
275  ------
276
277   - win test
278   WIP - /listen 
279     DONE - skin della textarea
280     DONE - set cookie 
281     DONE - init client (read from cookie) - ALWAYS BY SERVER
282     DONE - init server
283     DONE - after cookie check auth-only when no-auth case
284     DONE - aggiungi info accanto a "Chat"
285   DONE - /mesgtoadm
286   DONE - img dei comandi
287
288   DONE - form per garantire utenti (accoda in un file nel formato corretto)
289   DONE -   process request
290   DONE -   show form
291   DONE -   close butt
292   DONE -   submit form
293   DONE -   process form js side 
294   DONE -   process form
295   DONE -   documentazione in help
296
297   DONE - user status
298
299   DONE - aggiornare help
300   DONE -   overflow management
301   DONE -   for status
302   -   for password
303
304   DONE - reload home
305   - notify for long pages
306
307   - buddy list
308   - silenziastolti vari (fino al buddy import)
309   - restrict challenge per IP
310   - restricted charset for login
311   - watchdog
312
313   - db (minimal)
314     - db admin page
315     - user db admin
316     - use db 
317     - admin db
318
319     - studiare un anti-dos
320   - login modify
321  DONE  - db (fake)
322  DONE  - display auth
323     - manage preferences 
324
325  minor
326  -----
327    - auth after login
328
329 ----- done ------
330
331  BUG
332  ---
333   DONE   righe troncate
334   DONE - questione "a monte" che:
335   DONE   - lascia fuori il bottone
336   DONE   - scrive &agrave e compagnia
337   DONE - refresh act_table when unauthorized
338   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
339
340  MINOR
341  -----
342   DONE - refactoring of the owner name (auth attr for owner name)
343   DONE   - room
344   DONE     - at chat input line 
345   DONE     - in the chat output line
346   DONE     - deauth management
347   DONE - table
348   DONE   - at chat input line
349   DONE   - in the chat output line
350   DONE   - for user area of other users
351   DONE   - deauth management
352   DONE - alart to one user
353
354
355  NORMAL
356  ------
357   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
358   DONE   - login: se auth      -  verifica solo gli expire per quel nick
359   DONE   -        se non auth  -  verifica gli expire per IP e sessione
360   DONE   - riscrivere messaggi
361
362   DONE - login 
363   DONE   - se pass:
364   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
365   DONE     - lo legge, ci hasha la password
366   DONE     - invia la pass al server hashata
367   DONE   - se non pass:
368   DONE     - check del login e return corretto
369   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
370   DONE     - rename ghost if logged
371   DONE     - onunload_cb e onbeforeunload_cb !!! 
372   DONE   - da change attrs a change class (input field)
373   DONE     - colore del bg per arrivare ad essere omogeneo
374   DONE     - cambiare path e file di config
375   DONE   - login with or without pass
376   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
377   DONE     - segnalare tavoli solo per auth
378   DONE     - rename restriction at auth table
379   DONE     - change nick (strcasecmp)
380   DONE   - refact js tables to handle flags
381   DONE - room javascript refactoring
382
383   DONE - work background
384   DONE - reserved tables
385
386
387  BRISK2 (spawn)
388  ======
389
390    
391    URGENT - tables spawn
392             DONE - link with photos
393             DONE - top banner in Etc file
394             DONE - spawn of a table
395             DONE - data to cookies (removed table_idx from xhr calls also)
396             DONE - set subst to shutdowner/shutdowned
397             DONE - return to index.php
398             DONE - game's token
399             DONE - recover of corrupted table data
400             DONE - closure of a table
401             DONE - flush of the table
402             DONE - security checks for right scope access
403             DONE - garbage collector management
404             DONE -    recursive garbage - howto ?
405             DONE - stat & subst in browser
406             DONE - laccwr setting and exit if all players are unactive for some time
407             DONE - the list of test case
408             DONE - shm dimension
409             DONE - remove unused parts
410             DONE - move images
411             DONE - optimizations
412             DONE - cambiare titolo al tavolo
413             DONE - shutdowning lock tables
414             DONE - topbanner
415             DONE - public announcements
416             DONE - 10 sec to exit from table
417
418             FAR - inheritances
419    
420    TRAIN  -  DONE - add again in reload   
421              DONE - wag_set refact
422              DONE - filtra char speciali per title
423              DONE - chatt_send refact 
424              DONE - elenco dei giocatori
425              DONE - documentazione online
426              DONE - timeout management     
427              LATER - border color a muzzo
428        
429    NORM   - testament
430    NORM   - public announcements
431    NORM   - 10 sec to exit from table
432    NORM   - moving label for tables click
433
434 ----------------- join -----------------
435    NORM   - map
436
437    NORM   - restart preload img
438    NORM   - tools dir with a main and some pages where check briscola tools.
439    NORM   - watchdog
440
441    NORM   - chat vecchie in reload (forse)
442
443  MIDDLE TODO
444  ===========
445
446    - user assistant (with button to enable disable)
447    - documentation
448
449
450  FAR TODO
451  ========
452    NORM - internationalization
453    NORM - img -> div + css
454    
455  WEB
456  ===
457
458    - link to stable/unstable
459
460 -------------------------------------------------------------------
461  DONE
462  ====
463
464    ABORTED - asta: highlight buttons (css hover) - change pointer when over
465    DONE - step proxy
466    DONE - special chars in js
467    DONE - ban temporaneo dai tavoli
468    DONE - flash player to play sound
469    DONEBUG - (aum. il timeout) - carte giocate che restano girate
470          Sembra non migliorare di molto la cosa, gestita la cache
471          correttamente, sono apposto.
472
473    DONE - one player reject a game, to less points (<= 2)
474    DONE - help page
475    DONE - test di download per la cache
476    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
477           Corretto il codice, occorre verificare se questo
478           ingenera qualche problema.
479    DONE - raddoppiato il numero di righe nella chat
480    DONE - corretto bug del /nick
481    DONE - carosello pubblicità altout
482    DONE - smammamorti
483    DONE - unload of the stream
484    DONE - standup centrati
485    DONE - current player - in info
486    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
487    DONE - welcome lines in the chats (room and table)
488    DONE - welcome lines in the chats (room and table)
489    DONE - nomi in primo piano se vai sul quadrato   
490    DONE - to pass explicit config file to INSTALL.sh
491    DONE - flag to create a config file
492    ABRT - bottoni => immagini
493    DONE - aggiungere bottone al login
494    DONE - nomi in primo piano se vai sul quadrato   
495    DONE - installer to set cookie path
496    DONE - change name
497    DONE - automatic and manual logout
498    DONE - cache problems solved via .htaccess
499    DONE - all players out of the auction
500    DONE - time to send cards
501    DONE - hide cards before sends at a new game
502    DONE - well recognization of the browser and O.S.
503    DONE - login consistency !!!!
504    DONE - functionalization of garbage
505    DONE - call garbage function into login
506    DONE - game
507    DONE - manage the reload from scratch of the table page
508    DONE - table reset
509    DONE - sendcard => card_send(idx, ....)
510    DONE - show table for game
511    DONE - points calculation
512    DONE - make-up of the chooser
513    DONE - where place the briscola on the table
514    DONE - users info
515    DONE - show current auction position
516    DONE - table with internal management of the transition between pages.
517    DONE - server side page abort management  
518    DONE - cookie problem with Ajax
519    DONE - spostare il tasto "esco"
520    DONE - to pass explicit config file to INSTALL.sh 
521    DONE - 8 tables
522    DONE - safety out management
523    DONE - info enhancement and related button (how win the last game and
524           with how much points ?)
525
526  WEB
527    DONE - homepage
528    DONE - screenshots
529
530 DOC
531    CHAPTERS
532       HTTP Streaming
533       Local serializer
534       Database on shmem
535       Page abort (reload on http streaming case)
536       Chat
537       Cookies management
538       CSS tricks
539
540 CHECK ON NEW SERVERS
541 .htaccess AllowOverwrite mode for Cache-Control directive
542
543
544
545
546 */
547