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