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